dothtml 6.0.0-beta.16 → 6.0.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build_module/constants.d.ts +1 -0
- package/build_module/constants.js +2 -0
- package/build_module/constants.js.map +1 -0
- package/build_module/css/css-props.d.ts +7 -0
- package/build_module/css/css-props.js +22 -0
- package/build_module/css/css-props.js.map +1 -0
- package/build_module/css/css.d.ts +0 -0
- package/build_module/css/css.js +1 -0
- package/build_module/css/css.js.map +1 -0
- package/build_module/css/format-css-type.d.ts +4 -0
- package/build_module/css/format-css-type.js +38 -0
- package/build_module/css/format-css-type.js.map +1 -0
- package/build_module/decoration/component.d.ts +13 -0
- package/build_module/decoration/component.js +44 -0
- package/build_module/decoration/component.js.map +1 -0
- package/build_module/decoration/use-styles.d.ts +13 -0
- package/build_module/decoration/use-styles.js +19 -0
- package/build_module/decoration/use-styles.js.map +1 -0
- package/build_module/dot.d.ts +3 -0
- package/build_module/dot.js +377 -0
- package/build_module/dot.js.map +1 -0
- package/build_module/helpers/render-css.d.ts +2 -0
- package/build_module/helpers/render-css.js +19 -0
- package/build_module/helpers/render-css.js.map +1 -0
- package/build_module/helpers.d.ts +3 -0
- package/build_module/helpers.js +50 -0
- package/build_module/helpers.js.map +1 -0
- package/build_module/index.d.ts +7 -0
- package/build_module/index.js +5 -0
- package/build_module/index.js.map +1 -0
- package/build_module/reactive.d.ts +46 -0
- package/build_module/reactive.js +150 -0
- package/build_module/reactive.js.map +1 -0
- package/build_module/v-dom-node.d.ts +0 -0
- package/build_module/v-dom-node.js +1 -0
- package/build_module/v-dom-node.js.map +1 -0
- package/build_module/v-meta-nodes/attribute-v-node.d.ts +12 -0
- package/build_module/v-meta-nodes/attribute-v-node.js +48 -0
- package/build_module/v-meta-nodes/attribute-v-node.js.map +1 -0
- package/build_module/v-meta-nodes/style-v-node.d.ts +16 -0
- package/build_module/v-meta-nodes/style-v-node.js +86 -0
- package/build_module/v-meta-nodes/style-v-node.js.map +1 -0
- package/build_module/v-meta-nodes/v-meta-node.d.ts +5 -0
- package/build_module/v-meta-nodes/v-meta-node.js +3 -0
- package/build_module/v-meta-nodes/v-meta-node.js.map +1 -0
- package/build_module/v-style-nodes/base-v-style.d.ts +14 -0
- package/build_module/v-style-nodes/base-v-style.js +116 -0
- package/build_module/v-style-nodes/base-v-style.js.map +1 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.d.ts +20 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.js +71 -0
- package/build_module/v-style-nodes/css-function-builder-v-style.js.map +1 -0
- package/build_module/v-style-nodes/filter-v-style.d.ts +13 -0
- package/build_module/v-style-nodes/filter-v-style.js +35 -0
- package/build_module/v-style-nodes/filter-v-style.js.map +1 -0
- package/build_module/v-style-nodes/transform-v-style.d.ts +28 -0
- package/build_module/v-style-nodes/transform-v-style.js +76 -0
- package/build_module/v-style-nodes/transform-v-style.js.map +1 -0
- package/build_module/v-style-nodes/v-style.d.ts +6 -0
- package/build_module/v-style-nodes/v-style.js +6 -0
- package/build_module/v-style-nodes/v-style.js.map +1 -0
- package/build_module/vdom-nodes/collection-vdom.d.ts +24 -0
- package/build_module/vdom-nodes/collection-vdom.js +154 -0
- package/build_module/vdom-nodes/collection-vdom.js.map +1 -0
- package/build_module/vdom-nodes/component-vdom.d.ts +14 -0
- package/build_module/vdom-nodes/component-vdom.js +61 -0
- package/build_module/vdom-nodes/component-vdom.js.map +1 -0
- package/build_module/vdom-nodes/conditional-vdom.d.ts +14 -0
- package/build_module/vdom-nodes/conditional-vdom.js +97 -0
- package/build_module/vdom-nodes/conditional-vdom.js.map +1 -0
- package/build_module/vdom-nodes/container-vdom.d.ts +25 -0
- package/build_module/vdom-nodes/container-vdom.js +97 -0
- package/build_module/vdom-nodes/container-vdom.js.map +1 -0
- package/build_module/vdom-nodes/element-vdom.d.ts +21 -0
- package/build_module/vdom-nodes/element-vdom.js +127 -0
- package/build_module/vdom-nodes/element-vdom.js.map +1 -0
- package/build_module/vdom-nodes/html-vdom.d.ts +13 -0
- package/build_module/vdom-nodes/html-vdom.js +53 -0
- package/build_module/vdom-nodes/html-vdom.js.map +1 -0
- package/build_module/vdom-nodes/text-vdom.d.ts +11 -0
- package/build_module/vdom-nodes/text-vdom.js +37 -0
- package/build_module/vdom-nodes/text-vdom.js.map +1 -0
- package/build_module/vdom-nodes/vdom.d.ts +7 -0
- package/build_module/vdom-nodes/vdom.js +28 -0
- package/build_module/vdom-nodes/vdom.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import Reactive from "../reactive";
|
|
2
|
+
import VStyle from "./v-style";
|
|
3
|
+
export default class CssFunctionBuilderVStyle extends VStyle {
|
|
4
|
+
constructor(propName) {
|
|
5
|
+
super();
|
|
6
|
+
this.funcs = [];
|
|
7
|
+
this.subscriptions = {};
|
|
8
|
+
this.propName = propName;
|
|
9
|
+
}
|
|
10
|
+
_render(target) {
|
|
11
|
+
this.target = target;
|
|
12
|
+
let result = "";
|
|
13
|
+
for (let i = 0; i < this.funcs.length; i++) {
|
|
14
|
+
let t = this.funcs[i];
|
|
15
|
+
for (let k = 0; k < t.args.length; k++) {
|
|
16
|
+
let arg = t.args[k];
|
|
17
|
+
if (arg.v instanceof Reactive) {
|
|
18
|
+
let subscriptionId = arg.v.subscribeStyle(this, t.func);
|
|
19
|
+
this.subscriptions[subscriptionId] = arg.v;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (this.simpleValue) {
|
|
24
|
+
result = this.simpleValue;
|
|
25
|
+
target.style[this.propName] = result;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.updateProp(null, null);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
_unrender() {
|
|
32
|
+
for (let s in this.subscriptions) {
|
|
33
|
+
this.subscriptions[s].detachBinding(Number(s));
|
|
34
|
+
}
|
|
35
|
+
this.subscriptions = {};
|
|
36
|
+
this.target = null;
|
|
37
|
+
}
|
|
38
|
+
updateProp(prop, value) {
|
|
39
|
+
let isSimple = true;
|
|
40
|
+
let ret = "";
|
|
41
|
+
for (let i = 0; i < this.funcs.length; i++) {
|
|
42
|
+
let t = this.funcs[i];
|
|
43
|
+
ret += t.func + "(";
|
|
44
|
+
for (let k = 0; k < t.args.length; k++) {
|
|
45
|
+
let arg = t.args[k];
|
|
46
|
+
let argVal = "";
|
|
47
|
+
if (arg.v instanceof Reactive) {
|
|
48
|
+
argVal = arg.v.getValue();
|
|
49
|
+
isSimple = false;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
argVal = `${arg.v}`;
|
|
53
|
+
}
|
|
54
|
+
if (arg.f)
|
|
55
|
+
argVal = arg.f(argVal);
|
|
56
|
+
ret += argVal.toString();
|
|
57
|
+
}
|
|
58
|
+
ret = ret.trim() + ") ";
|
|
59
|
+
}
|
|
60
|
+
ret = ret.trim();
|
|
61
|
+
if (isSimple) {
|
|
62
|
+
this.simpleValue = ret;
|
|
63
|
+
}
|
|
64
|
+
this.target.style[this.propName] = ret;
|
|
65
|
+
}
|
|
66
|
+
appendFunction(filter, args) {
|
|
67
|
+
this.funcs.push({ func: filter, args: args });
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=css-function-builder-v-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-function-builder-v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/css-function-builder-v-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import CssFunctionBuilderVStyle from "./css-function-builder-v-style";
|
|
2
|
+
export default class FilterVStyle extends CssFunctionBuilderVStyle {
|
|
3
|
+
blur(v: any): this;
|
|
4
|
+
brightness(v: any): this;
|
|
5
|
+
contrast(v: any): this;
|
|
6
|
+
dropShadow(x: any, y: any, blur: any, color: any): this;
|
|
7
|
+
grayscale(v: any): this;
|
|
8
|
+
hueRotate(v: any): this;
|
|
9
|
+
invert(v: any): this;
|
|
10
|
+
opacity(v: any): this;
|
|
11
|
+
sepia(v: any): this;
|
|
12
|
+
saturate(v: any): this;
|
|
13
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { formatCssColor, formatCssLength, formatCssPercentage } from "../css/format-css-type";
|
|
2
|
+
import CssFunctionBuilderVStyle from "./css-function-builder-v-style";
|
|
3
|
+
export default class FilterVStyle extends CssFunctionBuilderVStyle {
|
|
4
|
+
blur(v) {
|
|
5
|
+
return this.appendFunction("blur", [{ v, f: formatCssLength }]);
|
|
6
|
+
}
|
|
7
|
+
brightness(v) {
|
|
8
|
+
return this.appendFunction("brightness", [{ v, f: formatCssPercentage }]);
|
|
9
|
+
}
|
|
10
|
+
contrast(v) {
|
|
11
|
+
return this.appendFunction("contrast", [{ v, f: formatCssLength }]);
|
|
12
|
+
}
|
|
13
|
+
dropShadow(x, y, blur, color) {
|
|
14
|
+
return this.appendFunction("drop-shadow", [{ v: x, f: formatCssLength }, { v: y, f: formatCssLength }, { v: blur, f: formatCssLength }, { v: color, f: formatCssColor }]);
|
|
15
|
+
}
|
|
16
|
+
grayscale(v) {
|
|
17
|
+
return this.appendFunction("grayscale", [{ v, f: formatCssLength }]);
|
|
18
|
+
}
|
|
19
|
+
hueRotate(v) {
|
|
20
|
+
return this.appendFunction("hue-rotate", [{ v, f: formatCssLength }]);
|
|
21
|
+
}
|
|
22
|
+
invert(v) {
|
|
23
|
+
return this.appendFunction("invert", [{ v, f: formatCssLength }]);
|
|
24
|
+
}
|
|
25
|
+
opacity(v) {
|
|
26
|
+
return this.appendFunction("opacity", [{ v, f: formatCssLength }]);
|
|
27
|
+
}
|
|
28
|
+
sepia(v) {
|
|
29
|
+
return this.appendFunction("sepia", [{ v, f: formatCssLength }]);
|
|
30
|
+
}
|
|
31
|
+
saturate(v) {
|
|
32
|
+
return this.appendFunction("saturate", [{ v, f: formatCssLength }]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=filter-v-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/filter-v-style.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,wBAAwB,MAAM,gCAAgC,CAAC;AAEtE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,wBAAwB;IAEjE,IAAI,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,UAAU,CAAC,CAAC;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,QAAQ,CAAC,CAAC;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAC,EAAE,EAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAC,CAAC,CAAC,CAAC;IACnK,CAAC;IACD,SAAS,CAAC,CAAC;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,SAAS,CAAC,CAAC;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,CAAC,CAAC;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,CAAC;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,CAAC;QACN,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,QAAQ,CAAC,CAAC;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;IACnE,CAAC;CACD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import CssFunctionBuilderVStyle from "./css-function-builder-v-style";
|
|
2
|
+
export default class TransformVStyle extends CssFunctionBuilderVStyle {
|
|
3
|
+
matrix3d(a1: number, b1: number, c1: number, d1: number, a2: number, b2: number, c2: number, d2: number, a3: number, b3: number, c3: number, d3: number, a4: number, b4: number, c4: number, d4: number): this;
|
|
4
|
+
matrix(a: number, b: number, c: number, d: number, tx: number, ty: number): this;
|
|
5
|
+
translate(x: any, y?: any): this;
|
|
6
|
+
translate3d(x: any, y: any, z: any): this;
|
|
7
|
+
translateX(x: any): this;
|
|
8
|
+
translateY(y: any): this;
|
|
9
|
+
translateZ(z: any): this;
|
|
10
|
+
scale(x: number, y?: number): this;
|
|
11
|
+
scale3d(x: number, y: number, z: number): this;
|
|
12
|
+
scaleX(x: number): this;
|
|
13
|
+
scaleY(y: number): this;
|
|
14
|
+
scaleZ(z: number): this;
|
|
15
|
+
rotate(x: any): this;
|
|
16
|
+
rotate3d(x: number, y: number, z: number, a: any): this;
|
|
17
|
+
rotate3dDeg(x: number, y: number, z: number, a: number): this;
|
|
18
|
+
rotate3dRad(x: number, y: number, z: number, a: number): this;
|
|
19
|
+
rotate3dGrad(x: number, y: number, z: number, a: number): this;
|
|
20
|
+
rotate3dTurn(x: number, y: number, z: number, a: number): this;
|
|
21
|
+
rotateX(x: any): this;
|
|
22
|
+
rotateY(y: any): this;
|
|
23
|
+
rotateZ(z: any): this;
|
|
24
|
+
skew(x: any, y?: any): this;
|
|
25
|
+
skewX(x: any): this;
|
|
26
|
+
skewY(y: any): this;
|
|
27
|
+
perspective(d: any): this;
|
|
28
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import CssFunctionBuilderVStyle from "./css-function-builder-v-style";
|
|
2
|
+
import { formatCssAngle, formatCssLength } from "../css/format-css-type";
|
|
3
|
+
export default class TransformVStyle extends CssFunctionBuilderVStyle {
|
|
4
|
+
matrix3d(a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4) {
|
|
5
|
+
return this.appendFunction("matrix3d", arguments);
|
|
6
|
+
}
|
|
7
|
+
matrix(a, b, c, d, tx, ty) {
|
|
8
|
+
return this.appendFunction("matrix", arguments);
|
|
9
|
+
}
|
|
10
|
+
translate(x, y) {
|
|
11
|
+
return arguments.length == 1
|
|
12
|
+
? this.appendFunction("translate", [{ f: formatCssLength, v: x }])
|
|
13
|
+
: this.appendFunction("translate", [{ f: formatCssLength, v: x }, { f: formatCssLength, v: y }]);
|
|
14
|
+
}
|
|
15
|
+
translate3d(x, y, z) {
|
|
16
|
+
return this.appendFunction("translate3d", [{ f: formatCssLength, v: x }, { f: formatCssLength, v: y }, { f: formatCssLength, v: z }]);
|
|
17
|
+
}
|
|
18
|
+
translateX(x) {
|
|
19
|
+
return this.appendFunction("translateX", [{ f: formatCssLength, v: x }]);
|
|
20
|
+
}
|
|
21
|
+
translateY(y) {
|
|
22
|
+
return this.appendFunction("translateY", [{ f: formatCssLength, v: y }]);
|
|
23
|
+
}
|
|
24
|
+
translateZ(z) {
|
|
25
|
+
return this.appendFunction("translateZ", [{ f: formatCssLength, v: z }]);
|
|
26
|
+
}
|
|
27
|
+
scale(x, y) {
|
|
28
|
+
return this.appendFunction("scale", [x, y ?? 1]);
|
|
29
|
+
}
|
|
30
|
+
scale3d(x, y, z) {
|
|
31
|
+
return this.appendFunction("scale3d", [x, y, z]);
|
|
32
|
+
}
|
|
33
|
+
scaleX(x) {
|
|
34
|
+
return this.appendFunction("scaleX", [x]);
|
|
35
|
+
}
|
|
36
|
+
scaleY(y) {
|
|
37
|
+
return this.appendFunction("scaleY", [y]);
|
|
38
|
+
}
|
|
39
|
+
scaleZ(z) {
|
|
40
|
+
return this.appendFunction("scaleZ", [z]);
|
|
41
|
+
}
|
|
42
|
+
rotate(x) {
|
|
43
|
+
return this.appendFunction("rotate", [{ f: formatCssAngle, v: x }]);
|
|
44
|
+
}
|
|
45
|
+
rotate3d(x, y, z, a) {
|
|
46
|
+
return this.appendFunction("rotate3d", [x, y, z, { f: formatCssAngle, v: a }]);
|
|
47
|
+
}
|
|
48
|
+
rotate3dDeg(x, y, z, a) { return this.rotate3d(x, y, z, a); }
|
|
49
|
+
rotate3dRad(x, y, z, a) { return this.rotate3d(x, y, z, `${a}rad`); }
|
|
50
|
+
rotate3dGrad(x, y, z, a) { return this.rotate3d(x, y, z, `${a}grad`); }
|
|
51
|
+
rotate3dTurn(x, y, z, a) { return this.rotate3d(x, y, z, `${a}turn`); }
|
|
52
|
+
rotateX(x) {
|
|
53
|
+
return this.appendFunction("rotateX", [{ f: formatCssAngle, v: x }]);
|
|
54
|
+
}
|
|
55
|
+
rotateY(y) {
|
|
56
|
+
return this.appendFunction("rotateY", [{ f: formatCssAngle, v: y }]);
|
|
57
|
+
}
|
|
58
|
+
rotateZ(z) {
|
|
59
|
+
return this.appendFunction("rotateZ", [{ f: formatCssAngle, v: z }]);
|
|
60
|
+
}
|
|
61
|
+
skew(x, y) {
|
|
62
|
+
return arguments.length == 1
|
|
63
|
+
? this.appendFunction("skew", [{ f: formatCssAngle, v: x }])
|
|
64
|
+
: this.appendFunction("skew", [{ f: formatCssAngle, v: x }, { f: formatCssAngle, v: y }]);
|
|
65
|
+
}
|
|
66
|
+
skewX(x) {
|
|
67
|
+
return this.appendFunction("skewX", [{ f: formatCssAngle, v: x }]);
|
|
68
|
+
}
|
|
69
|
+
skewY(y) {
|
|
70
|
+
return this.appendFunction("skewY", [{ f: formatCssAngle, v: y }]);
|
|
71
|
+
}
|
|
72
|
+
perspective(d) {
|
|
73
|
+
return this.appendFunction("perspective", [{ f: formatCssLength, v: d }]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=transform-v-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/transform-v-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v-style.js","sourceRoot":"","sources":["../../src/v-style-nodes/v-style.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,MAAM;IAOnC,QAAQ;QACP,OAAO,EAAE,CAAC;IACX,CAAC;CACD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Reactive from "../reactive";
|
|
2
|
+
import { Vdom } from "./vdom";
|
|
3
|
+
import { ObservableCollection } from "./vdom-types";
|
|
4
|
+
type DatumMap = {
|
|
5
|
+
vdom: Vdom;
|
|
6
|
+
value: any;
|
|
7
|
+
keyValue: any;
|
|
8
|
+
afterNode: Node;
|
|
9
|
+
observableIndex: Reactive<number>;
|
|
10
|
+
};
|
|
11
|
+
export default class CollectionVdom extends Vdom {
|
|
12
|
+
value: ObservableCollection;
|
|
13
|
+
renderCallback: (x: any, i: number | string | Reactive, k: string) => Vdom;
|
|
14
|
+
startNode: Node;
|
|
15
|
+
endNode: Node;
|
|
16
|
+
observerId: number;
|
|
17
|
+
mappedItems: Array<DatumMap>;
|
|
18
|
+
constructor(value: ObservableCollection, renderCallback: (x: any, i: number | string, k: string) => Vdom);
|
|
19
|
+
_render(target: HTMLElement): void;
|
|
20
|
+
_unrender(): void;
|
|
21
|
+
private removeItem;
|
|
22
|
+
updateList(): void;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { deepEqual } from "../helpers";
|
|
2
|
+
import Reactive from "../reactive";
|
|
3
|
+
import { TextVdom } from "./text-vdom";
|
|
4
|
+
import { Vdom } from "./vdom";
|
|
5
|
+
export default class CollectionVdom extends Vdom {
|
|
6
|
+
constructor(value, renderCallback) {
|
|
7
|
+
super();
|
|
8
|
+
this.observerId = 0;
|
|
9
|
+
this.mappedItems = [];
|
|
10
|
+
this.value = value;
|
|
11
|
+
this.renderCallback = renderCallback;
|
|
12
|
+
}
|
|
13
|
+
_render(target) {
|
|
14
|
+
if (this.value instanceof Reactive) {
|
|
15
|
+
this.observerId = this.value.subscribeCollection(this);
|
|
16
|
+
}
|
|
17
|
+
this.startNode = target.ownerDocument.createTextNode("");
|
|
18
|
+
this.endNode = target.ownerDocument.createTextNode("");
|
|
19
|
+
target.appendChild(this.startNode);
|
|
20
|
+
target.appendChild(this.endNode);
|
|
21
|
+
this.updateList();
|
|
22
|
+
}
|
|
23
|
+
_unrender() {
|
|
24
|
+
if (this.observerId && this.value instanceof Reactive) {
|
|
25
|
+
this.value.detachBinding(this.observerId);
|
|
26
|
+
this.observerId = null;
|
|
27
|
+
}
|
|
28
|
+
for (let i = 0; i < this.mappedItems.length; i++) {
|
|
29
|
+
let I = this.mappedItems[i];
|
|
30
|
+
I.vdom._unrender();
|
|
31
|
+
I.afterNode.parentElement.removeChild(I.afterNode);
|
|
32
|
+
}
|
|
33
|
+
this.mappedItems.length = 0;
|
|
34
|
+
this.startNode.parentElement.removeChild(this.startNode);
|
|
35
|
+
this.endNode.parentElement.removeChild(this.endNode);
|
|
36
|
+
this.startNode = null;
|
|
37
|
+
this.endNode = null;
|
|
38
|
+
}
|
|
39
|
+
removeItem(item) {
|
|
40
|
+
item.vdom._unrender();
|
|
41
|
+
item.afterNode.parentElement.removeChild(item.afterNode);
|
|
42
|
+
}
|
|
43
|
+
updateList() {
|
|
44
|
+
let key = null;
|
|
45
|
+
let mappedData;
|
|
46
|
+
{
|
|
47
|
+
let unmappedCollection = null;
|
|
48
|
+
if (this.value instanceof Reactive) {
|
|
49
|
+
unmappedCollection = this.value.getValue();
|
|
50
|
+
key = this.value.key ?? null;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
unmappedCollection = this.value;
|
|
54
|
+
}
|
|
55
|
+
if (unmappedCollection instanceof Array) {
|
|
56
|
+
mappedData = unmappedCollection.map((v, i) => {
|
|
57
|
+
let kv = !!key ? v[key] : null;
|
|
58
|
+
return {
|
|
59
|
+
vdom: null,
|
|
60
|
+
value: v,
|
|
61
|
+
keyValue: kv,
|
|
62
|
+
afterNode: null,
|
|
63
|
+
observableIndex: new Reactive()
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
mappedData = [];
|
|
69
|
+
for (let k in unmappedCollection) {
|
|
70
|
+
let v = unmappedCollection[k];
|
|
71
|
+
let kv = !!key ? v[key] : k;
|
|
72
|
+
mappedData.push({
|
|
73
|
+
vdom: null,
|
|
74
|
+
value: v,
|
|
75
|
+
keyValue: kv,
|
|
76
|
+
afterNode: null,
|
|
77
|
+
observableIndex: new Reactive()
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
{
|
|
83
|
+
let oi = 0;
|
|
84
|
+
let ns = 0;
|
|
85
|
+
let ni = 0;
|
|
86
|
+
while (oi < this.mappedItems.length) {
|
|
87
|
+
let existing = this.mappedItems[oi];
|
|
88
|
+
let candidate = mappedData[ni];
|
|
89
|
+
if (!candidate) {
|
|
90
|
+
this.removeItem(existing);
|
|
91
|
+
this.mappedItems.splice(oi, 1);
|
|
92
|
+
ni = ns;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
else if ((candidate == existing) || (key && candidate.keyValue == existing.keyValue)) {
|
|
96
|
+
ns++;
|
|
97
|
+
oi++;
|
|
98
|
+
ni = ns;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
ni++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
{
|
|
107
|
+
let oi = 0;
|
|
108
|
+
let ni = 0;
|
|
109
|
+
let afterTarget = this.startNode;
|
|
110
|
+
while (ni < mappedData.length) {
|
|
111
|
+
let existing = this.mappedItems[oi];
|
|
112
|
+
let candidate = mappedData[ni];
|
|
113
|
+
if (existing && ((candidate == existing) || (key && candidate.keyValue == existing.keyValue))) {
|
|
114
|
+
if (!deepEqual(existing.value, candidate.value)) {
|
|
115
|
+
existing.vdom._unrender();
|
|
116
|
+
existing.vdom = this.renderCallback(candidate.value, this.value instanceof Reactive ? existing.observableIndex : ni, candidate.keyValue);
|
|
117
|
+
existing.value = candidate.value;
|
|
118
|
+
existing.vdom._renderBefore(existing.afterNode);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
existing.observableIndex.setValue(ni);
|
|
122
|
+
}
|
|
123
|
+
afterTarget = existing.afterNode;
|
|
124
|
+
ni++;
|
|
125
|
+
oi++;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
let beforeTarget = afterTarget.ownerDocument.createTextNode("");
|
|
130
|
+
let ns = afterTarget.parentElement.nextSibling;
|
|
131
|
+
if (ns) {
|
|
132
|
+
this.startNode.parentElement.insertBefore(beforeTarget, ns);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.startNode.parentElement.appendChild(beforeTarget);
|
|
136
|
+
}
|
|
137
|
+
candidate.afterNode = beforeTarget;
|
|
138
|
+
candidate.observableIndex._value = ni;
|
|
139
|
+
let content = this.renderCallback(candidate.value, this.value instanceof Reactive ? candidate.observableIndex : ni, candidate.keyValue);
|
|
140
|
+
if (content instanceof Vdom) {
|
|
141
|
+
candidate.vdom = content;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
candidate.vdom = new TextVdom(content);
|
|
145
|
+
}
|
|
146
|
+
candidate.vdom._renderBefore(candidate.afterNode);
|
|
147
|
+
this.mappedItems.splice(ni, 0, candidate);
|
|
148
|
+
ni++;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=collection-vdom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/collection-vdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IComponent } from "dothtml-interfaces";
|
|
2
|
+
import { Vdom } from "./vdom";
|
|
3
|
+
import { ContainerVdom } from "./container-vdom";
|
|
4
|
+
export declare class ComponentVdom extends Vdom {
|
|
5
|
+
component: IComponent;
|
|
6
|
+
shadowEl: HTMLElement;
|
|
7
|
+
childShadowVdom: ContainerVdom;
|
|
8
|
+
sharedStyles: CSSStyleSheet;
|
|
9
|
+
constructor(component: IComponent);
|
|
10
|
+
private setupCustomElement;
|
|
11
|
+
_render(node: HTMLElement): void;
|
|
12
|
+
_unrender(): void;
|
|
13
|
+
toString(): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Vdom } from "./vdom";
|
|
2
|
+
export class ComponentVdom extends Vdom {
|
|
3
|
+
constructor(component) {
|
|
4
|
+
super();
|
|
5
|
+
this.component = component;
|
|
6
|
+
this.component.creating && this.component.creating();
|
|
7
|
+
this.childShadowVdom = this.component.build && this.component.build();
|
|
8
|
+
this.component.built && this.component.built();
|
|
9
|
+
}
|
|
10
|
+
setupCustomElement(component, document) {
|
|
11
|
+
let customElementConstructor = document.defaultView.customElements.get(component._._meta.tagName);
|
|
12
|
+
if (customElementConstructor == undefined) {
|
|
13
|
+
customElementConstructor = class extends HTMLElement {
|
|
14
|
+
set component(value) {
|
|
15
|
+
this._component = value;
|
|
16
|
+
this._renderComponent();
|
|
17
|
+
}
|
|
18
|
+
_renderComponent() {
|
|
19
|
+
if (this.cvdom instanceof Vdom) {
|
|
20
|
+
let shadow = this.attachShadow({ mode: 'open' });
|
|
21
|
+
this._component._._meta.shadowRoot = shadow;
|
|
22
|
+
this.cvdom.childShadowVdom._render(shadow);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw new Error("Component build function returned invalid object.");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
document.defaultView.customElements.define(component._._meta.tagName, customElementConstructor);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
_render(node) {
|
|
33
|
+
if (!this.component._)
|
|
34
|
+
throw new Error("Invalid component. Ensure components are created through the component factory or through decoration.");
|
|
35
|
+
if (this.component._?._meta?.isRendered)
|
|
36
|
+
throw new Error("Individual component instances cannot be rendered twice at once.");
|
|
37
|
+
if (!this.component._._meta)
|
|
38
|
+
this.component._._meta = {};
|
|
39
|
+
this.component._._meta.isRendered = true;
|
|
40
|
+
let document = node.ownerDocument;
|
|
41
|
+
this.setupCustomElement(this.component, document);
|
|
42
|
+
this.shadowEl = document.createElement(this.component._._meta.tagName);
|
|
43
|
+
this.shadowEl["cvdom"] = this;
|
|
44
|
+
this.shadowEl["component"] = this.component;
|
|
45
|
+
this.component._.restyle && this.component._.restyle();
|
|
46
|
+
node.appendChild(this.shadowEl);
|
|
47
|
+
}
|
|
48
|
+
_unrender() {
|
|
49
|
+
this.component.deleting && this.component.deleting();
|
|
50
|
+
this.childShadowVdom._unrender();
|
|
51
|
+
this.childShadowVdom = null;
|
|
52
|
+
this.shadowEl.remove();
|
|
53
|
+
this.shadowEl = null;
|
|
54
|
+
this.component._._meta.isRendered = false;
|
|
55
|
+
this.component.deleted && this.component.deleted();
|
|
56
|
+
}
|
|
57
|
+
toString() {
|
|
58
|
+
return `<${this.component._._meta.tagName}></${this.component._._meta.tagName}>`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=component-vdom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-vdom.js","sourceRoot":"","sources":["../../src/vdom-nodes/component-vdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Reactive from "../reactive";
|
|
2
|
+
import { ContainerVdom } from "./container-vdom";
|
|
3
|
+
import { Vdom } from "./vdom";
|
|
4
|
+
import { ConditionalNodeItem } from "./vdom-types";
|
|
5
|
+
export declare class ConditionalVdom extends Vdom {
|
|
6
|
+
private conditions;
|
|
7
|
+
private sealed;
|
|
8
|
+
private renderedIndex;
|
|
9
|
+
addCondition(condition: Reactive | boolean, vNode: ContainerVdom, seal?: boolean): void;
|
|
10
|
+
addAnchor(C: ConditionalNodeItem, node: HTMLElement): void;
|
|
11
|
+
_render(node: HTMLElement): void;
|
|
12
|
+
_unrender(): void;
|
|
13
|
+
updateConditions(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import Reactive from "../reactive";
|
|
2
|
+
import { Vdom } from "./vdom";
|
|
3
|
+
export class ConditionalVdom extends Vdom {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.conditions = [];
|
|
7
|
+
this.sealed = false;
|
|
8
|
+
this.renderedIndex = -1;
|
|
9
|
+
}
|
|
10
|
+
addCondition(condition, vNode, seal = false) {
|
|
11
|
+
if (this.sealed) {
|
|
12
|
+
throw new Error("Cannot add additional conditions to a sealed block.");
|
|
13
|
+
}
|
|
14
|
+
this.sealed = seal;
|
|
15
|
+
let C = {
|
|
16
|
+
condition,
|
|
17
|
+
vNode,
|
|
18
|
+
startAnchor: null,
|
|
19
|
+
endAnchor: null,
|
|
20
|
+
observerId: 0
|
|
21
|
+
};
|
|
22
|
+
this.conditions.push(C);
|
|
23
|
+
if (this.conditions[0].startAnchor) {
|
|
24
|
+
this.addAnchor(C, this.conditions[0].startAnchor.parentElement);
|
|
25
|
+
if (condition instanceof Reactive) {
|
|
26
|
+
C.observerId = condition.subscribeCond(this);
|
|
27
|
+
}
|
|
28
|
+
this.updateConditions();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
addAnchor(C, node) {
|
|
32
|
+
C.startAnchor = node.ownerDocument.createTextNode("");
|
|
33
|
+
C.endAnchor = node.ownerDocument.createTextNode("");
|
|
34
|
+
node.appendChild(C.startAnchor);
|
|
35
|
+
node.appendChild(C.endAnchor);
|
|
36
|
+
}
|
|
37
|
+
_render(node) {
|
|
38
|
+
for (let c = 0; c < this.conditions.length; c++) {
|
|
39
|
+
let C = this.conditions[c];
|
|
40
|
+
if (C.startAnchor) {
|
|
41
|
+
throw new Error("Item is already rendered.");
|
|
42
|
+
}
|
|
43
|
+
this.addAnchor(C, node);
|
|
44
|
+
if (C.condition instanceof Reactive) {
|
|
45
|
+
C.observerId = C.condition.subscribeCond(this);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (this.conditions.length)
|
|
49
|
+
this.updateConditions();
|
|
50
|
+
}
|
|
51
|
+
_unrender() {
|
|
52
|
+
if (this.conditions[0].startAnchor) {
|
|
53
|
+
for (let i = 0; i < this.conditions.length; i++) {
|
|
54
|
+
let C = this.conditions[i];
|
|
55
|
+
let start = C.startAnchor;
|
|
56
|
+
let end = C.endAnchor;
|
|
57
|
+
C.vNode._unrender();
|
|
58
|
+
start.parentElement.removeChild(start);
|
|
59
|
+
end.parentElement.removeChild(end);
|
|
60
|
+
C.startAnchor = null;
|
|
61
|
+
C.endAnchor = null;
|
|
62
|
+
if (C.condition instanceof Reactive) {
|
|
63
|
+
C.condition.detachBinding(C.observerId);
|
|
64
|
+
C.observerId = 0;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
this.renderedIndex = -1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
updateConditions() {
|
|
71
|
+
let node = this.conditions[0].startAnchor.parentElement;
|
|
72
|
+
let newIndex = -1;
|
|
73
|
+
for (let c = 0; c < this.conditions.length; c++) {
|
|
74
|
+
let C = this.conditions[c];
|
|
75
|
+
if (C.condition instanceof Reactive ? C.condition.getValue() : C.condition) {
|
|
76
|
+
newIndex = c;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (newIndex != this.renderedIndex) {
|
|
81
|
+
{
|
|
82
|
+
if (this.renderedIndex != -1) {
|
|
83
|
+
let C = this.conditions[this.renderedIndex];
|
|
84
|
+
C.vNode._unrender();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
{
|
|
88
|
+
this.renderedIndex = newIndex;
|
|
89
|
+
if (newIndex != -1) {
|
|
90
|
+
let C = this.conditions[newIndex];
|
|
91
|
+
C.vNode._renderBefore(C.endAnchor);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=conditional-vdom.js.map
|