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