update
							parent
							
								
									c7376e1595
								
							
						
					
					
						commit
						5e5f282095
					
				| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * {}
 | 
				
			||||||
 | 
					 * @author yutent<yutent.io@gmail.com>
 | 
				
			||||||
 | 
					 * @date 2024/03/29 14:38:07
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { h, $ } from './utils.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class Base {
 | 
				
			||||||
 | 
					  #node
 | 
				
			||||||
 | 
					  type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(el) {
 | 
				
			||||||
 | 
					    this.#node = el
 | 
				
			||||||
 | 
					    this.type = el.tagName.toLowerCase()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get node() {
 | 
				
			||||||
 | 
					    return this.#node
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get textContent() {
 | 
				
			||||||
 | 
					    return this.#node.textContent
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set textContent(val) {
 | 
				
			||||||
 | 
					    this.#node.textContent = val
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get children() {
 | 
				
			||||||
 | 
					    return Array.from(this.#node.children)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  attr(key, val) {
 | 
				
			||||||
 | 
					    let node = this.node
 | 
				
			||||||
 | 
					    let out = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (key) {
 | 
				
			||||||
 | 
					      let props = key
 | 
				
			||||||
 | 
					      if (typeof key === 'string') {
 | 
				
			||||||
 | 
					        if (val === void 0) {
 | 
				
			||||||
 | 
					          return node.getAttribute(key)
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          props = { [key]: val }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      h(node, props)
 | 
				
			||||||
 | 
					      return this
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 无任何参数时, 返回节点所有的属性
 | 
				
			||||||
 | 
					    for (let it of Array.from(node.attributes)) {
 | 
				
			||||||
 | 
					      out[it.nodeName] = it.nodeValue
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return out
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  move(x, y) {
 | 
				
			||||||
 | 
					    this.node.setAttribute('x', x)
 | 
				
			||||||
 | 
					    this.node.setAttribute('y', y)
 | 
				
			||||||
 | 
					    return this
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  size(width, height) {
 | 
				
			||||||
 | 
					    this.node.setAttribute('width', width)
 | 
				
			||||||
 | 
					    this.node.setAttribute('height', height)
 | 
				
			||||||
 | 
					    return this
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  transform(transform = '') {
 | 
				
			||||||
 | 
					    this.node.setAttribute('transform', transform)
 | 
				
			||||||
 | 
					    return this
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3,9 +3,11 @@
 | 
				
			||||||
 * @author yutent<yutent.io@gmail.com>
 | 
					 * @author yutent<yutent.io@gmail.com>
 | 
				
			||||||
 * @date 2024/03/26 10:37:00
 | 
					 * @date 2024/03/26 10:37:00
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import {} from './lib/constants.js'
 | 
					import { ORPHAN_TAGS } from './lib/constants.js'
 | 
				
			||||||
import { $, uuid, h, preload, hyphen } from './utils.js'
 | 
					import { $, uuid, h, preload, hyphen } from './utils.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { Orphan } from './orphan.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class Component {
 | 
					export class Component {
 | 
				
			||||||
  #node
 | 
					  #node
 | 
				
			||||||
  type
 | 
					  type
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,3 +18,15 @@ export const SPEC_ATTR = {
 | 
				
			||||||
  patternTransform: 1,
 | 
					  patternTransform: 1,
 | 
				
			||||||
  patternContentUnits: 1
 | 
					  patternContentUnits: 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const ALL_SVG_TAGS =
 | 
				
			||||||
 | 
					  'a,animate,animateMotion,animateTransform,circle,clipPath,defs,desc,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,script,set,stop,style,svg,switch,symbol,text,textPath,title,tspan,use,view'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const ORPHAN_TAGS_STR = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const ORPHAN_TAGS = {
 | 
				
			||||||
 | 
					  text: 1,
 | 
				
			||||||
 | 
					  image: 1,
 | 
				
			||||||
 | 
					  line: 1,
 | 
				
			||||||
 | 
					  circle: 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 孤儿元素(无子节点)
 | 
				
			||||||
 | 
					 * @author yutent<yutent.io@gmail.com>
 | 
				
			||||||
 | 
					 * @date 2024/03/29 14:36:23
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { Base } from './base-elem.js'
 | 
				
			||||||
 | 
					import { uuid, h, preload } from './utils.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class Orphan extends Base {
 | 
				
			||||||
 | 
					  id = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(el) {
 | 
				
			||||||
 | 
					    super(el)
 | 
				
			||||||
 | 
					    this.id = uuid(this.type)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue