@dooboostore/simple-web-component 1.0.1 → 1.0.3
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/README.md +28 -33
- package/dist/cjs/decorators/{elementDefind.js → elementDefine.js} +6 -6
- package/dist/cjs/decorators/{elementDefind.js.map → elementDefine.js.map} +2 -2
- package/dist/cjs/decorators/query.js.map +1 -1
- package/dist/cjs/decorators/queryAll.js.map +1 -1
- package/dist/cjs/elements/SwcChoose.js +1 -1
- package/dist/cjs/elements/SwcChoose.js.map +1 -1
- package/dist/cjs/elements/SwcForOf.js +7 -77
- package/dist/cjs/elements/SwcForOf.js.map +2 -2
- package/dist/cjs/elements/SwcHTMLElementBase.js +102 -0
- package/dist/cjs/elements/SwcHTMLElementBase.js.map +7 -0
- package/dist/cjs/elements/SwcIf.js +6 -14
- package/dist/cjs/elements/SwcIf.js.map +2 -2
- package/dist/cjs/elements/SwcObject.js +115 -0
- package/dist/cjs/elements/SwcObject.js.map +7 -0
- package/dist/cjs/elements/SwcOther.js +1 -1
- package/dist/cjs/elements/SwcOther.js.map +1 -1
- package/dist/cjs/elements/SwcWhen.js +1 -1
- package/dist/cjs/elements/SwcWhen.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/decorators/{elementDefind.js → elementDefine.js} +3 -3
- package/dist/esm/decorators/{elementDefind.js.map → elementDefine.js.map} +2 -2
- package/dist/esm/decorators/query.js.map +1 -1
- package/dist/esm/decorators/queryAll.js.map +1 -1
- package/dist/esm/elements/SwcChoose.js +2 -2
- package/dist/esm/elements/SwcChoose.js.map +1 -1
- package/dist/esm/elements/SwcForOf.js +8 -78
- package/dist/esm/elements/SwcForOf.js.map +2 -2
- package/dist/esm/elements/SwcHTMLElementBase.js +83 -0
- package/dist/esm/elements/SwcHTMLElementBase.js.map +7 -0
- package/dist/esm/elements/SwcIf.js +7 -15
- package/dist/esm/elements/SwcIf.js.map +2 -2
- package/dist/esm/elements/SwcObject.js +96 -0
- package/dist/esm/elements/SwcObject.js.map +7 -0
- package/dist/esm/elements/SwcOther.js +2 -2
- package/dist/esm/elements/SwcOther.js.map +1 -1
- package/dist/esm/elements/SwcWhen.js +2 -2
- package/dist/esm/elements/SwcWhen.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +192 -97
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/decorators/{elementDefind.d.ts → elementDefine.d.ts} +2 -2
- package/dist/types/decorators/{elementDefind.d.ts.map → elementDefine.d.ts.map} +1 -1
- package/dist/types/elements/SwcForOf.d.ts +2 -4
- package/dist/types/elements/SwcForOf.d.ts.map +1 -1
- package/dist/types/elements/SwcHTMLElementBase.d.ts +14 -0
- package/dist/types/elements/SwcHTMLElementBase.d.ts.map +1 -0
- package/dist/types/elements/SwcIf.d.ts +2 -2
- package/dist/types/elements/SwcIf.d.ts.map +1 -1
- package/dist/types/elements/SwcObject.d.ts +14 -0
- package/dist/types/elements/SwcObject.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +192 -97
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +1 -1
- package/src/decorators/{elementDefind.ts → elementDefine.ts} +1 -1
- package/src/decorators/query.ts +1 -1
- package/src/decorators/queryAll.ts +1 -1
- package/src/elements/SwcChoose.ts +2 -2
- package/src/elements/SwcForOf.ts +12 -87
- package/src/elements/SwcHTMLElementBase.ts +93 -0
- package/src/elements/SwcIf.ts +8 -27
- package/src/elements/SwcObject.ts +78 -0
- package/src/elements/SwcOther.ts +2 -2
- package/src/elements/SwcWhen.ts +2 -2
- package/src/index.ts +3 -1
|
@@ -29,13 +29,15 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
29
29
|
STYLE_METHOD_KEY: () => STYLE_METHOD_KEY,
|
|
30
30
|
SwcChoose: () => SwcChoose,
|
|
31
31
|
SwcForOf: () => SwcForOf,
|
|
32
|
+
SwcHTMLElementBase: () => SwcHTMLElementBase,
|
|
32
33
|
SwcIf: () => SwcIf,
|
|
34
|
+
SwcObject: () => SwcObject,
|
|
33
35
|
SwcOther: () => SwcOther,
|
|
34
36
|
SwcWhen: () => SwcWhen,
|
|
35
37
|
TEMPLATE_METHOD_KEY: () => TEMPLATE_METHOD_KEY,
|
|
36
38
|
addEventListener: () => addEventListener,
|
|
37
39
|
attributeChanged: () => attributeChanged,
|
|
38
|
-
|
|
40
|
+
elementDefine: () => elementDefine,
|
|
39
41
|
getAddEventListenerMetadata: () => getAddEventListenerMetadata,
|
|
40
42
|
getAttributeChangedMap: () => getAttributeChangedMap,
|
|
41
43
|
getElementConfig: () => getElementConfig,
|
|
@@ -234,7 +236,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
234
236
|
return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);
|
|
235
237
|
};
|
|
236
238
|
|
|
237
|
-
// src/decorators/
|
|
239
|
+
// src/decorators/elementDefine.ts
|
|
238
240
|
var ELEMENT_CONFIG_KEY = Symbol("simple-web-component:element-config");
|
|
239
241
|
var BUILT_IN_TAG_MAP = /* @__PURE__ */ new Map();
|
|
240
242
|
var registerTag = (className, tagName) => {
|
|
@@ -300,7 +302,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
300
302
|
["HTMLVideoElement", "video"],
|
|
301
303
|
["HTMLHeadingElement", "h1"]
|
|
302
304
|
].forEach(([cls, tag]) => registerTag(cls, tag));
|
|
303
|
-
var
|
|
305
|
+
var elementDefine = (inConfig) => (constructor) => {
|
|
304
306
|
const config = typeof inConfig === "string" ? { tagName: inConfig } : inConfig;
|
|
305
307
|
let extendsTagName = config.extends;
|
|
306
308
|
if (!extendsTagName) {
|
|
@@ -465,6 +467,87 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
465
467
|
return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);
|
|
466
468
|
};
|
|
467
469
|
|
|
470
|
+
// src/elements/SwcHTMLElementBase.ts
|
|
471
|
+
var SwcHTMLElementBase = class extends HTMLElement {
|
|
472
|
+
constructor() {
|
|
473
|
+
super();
|
|
474
|
+
this._masterTplNodes = [];
|
|
475
|
+
this._asKey = "value";
|
|
476
|
+
this._asIndexKey = "index";
|
|
477
|
+
}
|
|
478
|
+
initCore() {
|
|
479
|
+
this._asKey = this.getAttribute("as") || "value";
|
|
480
|
+
this._asIndexKey = this.getAttribute("as-index") || "index";
|
|
481
|
+
const tplSlot = this.shadowRoot?.getElementById("tpl-slot");
|
|
482
|
+
if (tplSlot) {
|
|
483
|
+
this._masterTplNodes = tplSlot.assignedNodes().map((n) => n.cloneNode(true));
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
getValueByPath(obj, path) {
|
|
487
|
+
if (path === this._asKey) return obj;
|
|
488
|
+
if (path.startsWith(`${this._asKey}.`)) {
|
|
489
|
+
return path.split(".").slice(1).reduce((acc, part) => acc && acc[part], obj);
|
|
490
|
+
}
|
|
491
|
+
return void 0;
|
|
492
|
+
}
|
|
493
|
+
applyData(node, data, index) {
|
|
494
|
+
const context = {};
|
|
495
|
+
if (index !== void 0) {
|
|
496
|
+
context[this._asIndexKey] = index.toString();
|
|
497
|
+
}
|
|
498
|
+
const walk = (n) => {
|
|
499
|
+
if (n.nodeType === Node.TEXT_NODE) {
|
|
500
|
+
if (!n._original) n._original = n.textContent;
|
|
501
|
+
let text = n._original;
|
|
502
|
+
text = text.replace(/{{(.*?)}}/g, (match, path) => {
|
|
503
|
+
path = path.trim();
|
|
504
|
+
if (context[path] !== void 0) return context[path];
|
|
505
|
+
const val = this.getValueByPath(data, path);
|
|
506
|
+
return val !== void 0 ? val : match;
|
|
507
|
+
});
|
|
508
|
+
if (n.textContent !== text) n.textContent = text;
|
|
509
|
+
} else if (n.nodeType === Node.ELEMENT_NODE) {
|
|
510
|
+
const el = n;
|
|
511
|
+
Array.from(el.attributes).forEach((a) => {
|
|
512
|
+
if (!a._original) a._original = a.value;
|
|
513
|
+
let val = a._original;
|
|
514
|
+
val = val.replace(/{{(.*?)}}/g, (match, path) => {
|
|
515
|
+
path = path.trim();
|
|
516
|
+
if (context[path] !== void 0) return context[path];
|
|
517
|
+
const v = this.getValueByPath(data, path);
|
|
518
|
+
return v !== void 0 ? v : match;
|
|
519
|
+
});
|
|
520
|
+
if (a.value !== val) a.value = val;
|
|
521
|
+
});
|
|
522
|
+
el.childNodes.forEach(walk);
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
walk(node);
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* 객체/배열의 변경을 감지하는 Proxy 생성 유틸리티
|
|
529
|
+
*/
|
|
530
|
+
createReactiveProxy(target, onChange, onIndexChange) {
|
|
531
|
+
return new Proxy(target, {
|
|
532
|
+
set: (t, prop, val) => {
|
|
533
|
+
const isIndex = !isNaN(Number(prop));
|
|
534
|
+
t[prop] = val;
|
|
535
|
+
if (isIndex && onIndexChange) {
|
|
536
|
+
onIndexChange(Number(prop), val);
|
|
537
|
+
} else {
|
|
538
|
+
onChange();
|
|
539
|
+
}
|
|
540
|
+
return true;
|
|
541
|
+
},
|
|
542
|
+
deleteProperty: (t, prop) => {
|
|
543
|
+
delete t[prop];
|
|
544
|
+
onChange();
|
|
545
|
+
return true;
|
|
546
|
+
}
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
|
|
468
551
|
// src/elements/SwcForOf.ts
|
|
469
552
|
var __decorate = function(decorators, target, key, desc) {
|
|
470
553
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -475,55 +558,28 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
475
558
|
var __metadata = function(k, v) {
|
|
476
559
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
477
560
|
};
|
|
478
|
-
var SwcForOf = class SwcForOf2 extends
|
|
561
|
+
var SwcForOf = class SwcForOf2 extends SwcHTMLElementBase {
|
|
479
562
|
constructor() {
|
|
480
563
|
super();
|
|
481
564
|
this._value = [];
|
|
482
|
-
this._masterTplNodes = [];
|
|
483
565
|
}
|
|
484
566
|
set value(val) {
|
|
485
567
|
if (!Array.isArray(val))
|
|
486
568
|
val = [];
|
|
487
|
-
this._value = this.
|
|
569
|
+
this._value = this.createReactiveProxy(val, () => this.renderAll(), (idx, v) => this.updateSingleRow(idx, v));
|
|
488
570
|
this.renderAll();
|
|
489
571
|
}
|
|
490
572
|
get value() {
|
|
491
573
|
return this._value;
|
|
492
574
|
}
|
|
493
|
-
createProxy(arr) {
|
|
494
|
-
return new Proxy(arr, {
|
|
495
|
-
set: (target, prop, val) => {
|
|
496
|
-
const isIndex = !isNaN(Number(prop));
|
|
497
|
-
target[prop] = val;
|
|
498
|
-
if (isIndex) {
|
|
499
|
-
this.updateSingleRow(Number(prop), val);
|
|
500
|
-
} else if (prop === "length" && val < target.length) {
|
|
501
|
-
this.renderAll();
|
|
502
|
-
}
|
|
503
|
-
return true;
|
|
504
|
-
},
|
|
505
|
-
deleteProperty: (target, prop) => {
|
|
506
|
-
const res = delete target[prop];
|
|
507
|
-
this.renderAll();
|
|
508
|
-
return res;
|
|
509
|
-
}
|
|
510
|
-
});
|
|
511
|
-
}
|
|
512
575
|
styles() {
|
|
513
|
-
return
|
|
514
|
-
:host { display: contents; }
|
|
515
|
-
`;
|
|
576
|
+
return `:host { display: contents; }`;
|
|
516
577
|
}
|
|
517
578
|
renderTemplate() {
|
|
518
|
-
return
|
|
519
|
-
<slot id="tpl-slot" style="display:none;"></slot>
|
|
520
|
-
`;
|
|
579
|
+
return `<slot id="tpl-slot" style="display:none;"></slot>`;
|
|
521
580
|
}
|
|
522
581
|
connectedCallback() {
|
|
523
|
-
|
|
524
|
-
if (tplSlot) {
|
|
525
|
-
this._masterTplNodes = tplSlot.assignedNodes().map((n) => n.cloneNode(true));
|
|
526
|
-
}
|
|
582
|
+
this.initCore();
|
|
527
583
|
this.renderAll();
|
|
528
584
|
}
|
|
529
585
|
updateSingleRow(index, newValue) {
|
|
@@ -534,50 +590,6 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
534
590
|
this.renderRow(newValue, index);
|
|
535
591
|
}
|
|
536
592
|
}
|
|
537
|
-
applyData(node, data, index) {
|
|
538
|
-
const getValueByPath = (obj, path) => {
|
|
539
|
-
if (path === "value")
|
|
540
|
-
return obj;
|
|
541
|
-
if (path.startsWith("value.")) {
|
|
542
|
-
return path.split(".").slice(1).reduce((acc, part) => acc && acc[part], obj);
|
|
543
|
-
}
|
|
544
|
-
return void 0;
|
|
545
|
-
};
|
|
546
|
-
const walk = (n) => {
|
|
547
|
-
if (n.nodeType === Node.TEXT_NODE) {
|
|
548
|
-
if (!n._original)
|
|
549
|
-
n._original = n.textContent;
|
|
550
|
-
let text = n._original;
|
|
551
|
-
text = text.replace(/{{(.*?)}}/g, (match, path) => {
|
|
552
|
-
path = path.trim();
|
|
553
|
-
if (path === "index")
|
|
554
|
-
return index.toString();
|
|
555
|
-
const val = getValueByPath(data, path);
|
|
556
|
-
return val !== void 0 ? val : match;
|
|
557
|
-
});
|
|
558
|
-
if (n.textContent !== text)
|
|
559
|
-
n.textContent = text;
|
|
560
|
-
} else if (n.nodeType === Node.ELEMENT_NODE) {
|
|
561
|
-
const el = n;
|
|
562
|
-
Array.from(el.attributes).forEach((a) => {
|
|
563
|
-
if (!a._original)
|
|
564
|
-
a._original = a.value;
|
|
565
|
-
let val = a._original;
|
|
566
|
-
val = val.replace(/{{(.*?)}}/g, (match, path) => {
|
|
567
|
-
path = path.trim();
|
|
568
|
-
if (path === "index")
|
|
569
|
-
return index.toString();
|
|
570
|
-
const v = getValueByPath(data, path);
|
|
571
|
-
return v !== void 0 ? v : match;
|
|
572
|
-
});
|
|
573
|
-
if (a.value !== val)
|
|
574
|
-
a.value = val;
|
|
575
|
-
});
|
|
576
|
-
el.childNodes.forEach(walk);
|
|
577
|
-
}
|
|
578
|
-
};
|
|
579
|
-
walk(node);
|
|
580
|
-
}
|
|
581
593
|
renderRow(item, index) {
|
|
582
594
|
if (!this.shadowRoot || this._masterTplNodes.length === 0)
|
|
583
595
|
return;
|
|
@@ -635,7 +647,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
635
647
|
__metadata("design:returntype", void 0)
|
|
636
648
|
], SwcForOf.prototype, "renderTemplate", null);
|
|
637
649
|
SwcForOf = __decorate([
|
|
638
|
-
|
|
650
|
+
elementDefine({ tagName: "swc-for-of", useShadow: true }),
|
|
639
651
|
__metadata("design:paramtypes", [])
|
|
640
652
|
], SwcForOf);
|
|
641
653
|
|
|
@@ -649,11 +661,10 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
649
661
|
var __metadata2 = function(k, v) {
|
|
650
662
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
651
663
|
};
|
|
652
|
-
var SwcIf = class SwcIf2 extends
|
|
664
|
+
var SwcIf = class SwcIf2 extends SwcHTMLElementBase {
|
|
653
665
|
constructor() {
|
|
654
666
|
super();
|
|
655
667
|
this._value = false;
|
|
656
|
-
this._masterTplNodes = [];
|
|
657
668
|
this._observer = null;
|
|
658
669
|
}
|
|
659
670
|
set value(val) {
|
|
@@ -664,20 +675,13 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
664
675
|
return this._value;
|
|
665
676
|
}
|
|
666
677
|
styles() {
|
|
667
|
-
return
|
|
668
|
-
:host { display: contents; }
|
|
669
|
-
`;
|
|
678
|
+
return `:host { display: contents; }`;
|
|
670
679
|
}
|
|
671
680
|
renderTemplate() {
|
|
672
|
-
return
|
|
673
|
-
<slot id="tpl-slot" style="display:none;"></slot>
|
|
674
|
-
`;
|
|
681
|
+
return `<slot id="tpl-slot" style="display:none;"></slot>`;
|
|
675
682
|
}
|
|
676
683
|
connectedCallback() {
|
|
677
|
-
|
|
678
|
-
if (tplSlot) {
|
|
679
|
-
this._masterTplNodes = tplSlot.assignedNodes().map((n) => n.cloneNode(true));
|
|
680
|
-
}
|
|
684
|
+
this.initCore();
|
|
681
685
|
this._observer = new MutationObserver(() => this.render());
|
|
682
686
|
this._observer.observe(this, { attributes: true });
|
|
683
687
|
this.render();
|
|
@@ -720,7 +724,6 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
720
724
|
const clone = tplNode.cloneNode(true);
|
|
721
725
|
if (clone.nodeType === Node.ELEMENT_NODE) {
|
|
722
726
|
clone.setAttribute("slot", "if-content");
|
|
723
|
-
clone.style.display = "";
|
|
724
727
|
} else if (clone.nodeType === Node.TEXT_NODE) {
|
|
725
728
|
if (clone.textContent?.trim().length === 0)
|
|
726
729
|
return;
|
|
@@ -748,7 +751,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
748
751
|
__metadata2("design:returntype", void 0)
|
|
749
752
|
], SwcIf.prototype, "renderTemplate", null);
|
|
750
753
|
SwcIf = __decorate2([
|
|
751
|
-
|
|
754
|
+
elementDefine({ tagName: "swc-if", useShadow: true }),
|
|
752
755
|
__metadata2("design:paramtypes", [])
|
|
753
756
|
], SwcIf);
|
|
754
757
|
|
|
@@ -844,7 +847,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
844
847
|
__metadata3("design:returntype", void 0)
|
|
845
848
|
], SwcChoose.prototype, "render", null);
|
|
846
849
|
SwcChoose = __decorate3([
|
|
847
|
-
|
|
850
|
+
elementDefine({ tagName: "swc-choose", useShadow: true })
|
|
848
851
|
], SwcChoose);
|
|
849
852
|
|
|
850
853
|
// src/elements/SwcWhen.ts
|
|
@@ -878,7 +881,7 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
878
881
|
__metadata4("design:returntype", void 0)
|
|
879
882
|
], SwcWhen.prototype, "render", null);
|
|
880
883
|
SwcWhen = __decorate4([
|
|
881
|
-
|
|
884
|
+
elementDefine({ tagName: "swc-when", useShadow: true })
|
|
882
885
|
], SwcWhen);
|
|
883
886
|
|
|
884
887
|
// src/elements/SwcOther.ts
|
|
@@ -912,8 +915,100 @@ var dooboostoreSimpleWebComponent = (() => {
|
|
|
912
915
|
__metadata5("design:returntype", void 0)
|
|
913
916
|
], SwcOther.prototype, "render", null);
|
|
914
917
|
SwcOther = __decorate5([
|
|
915
|
-
|
|
918
|
+
elementDefine({ tagName: "swc-other", useShadow: true })
|
|
916
919
|
], SwcOther);
|
|
920
|
+
|
|
921
|
+
// src/elements/SwcObject.ts
|
|
922
|
+
var __decorate6 = function(decorators, target, key, desc) {
|
|
923
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
924
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
925
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
926
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
927
|
+
};
|
|
928
|
+
var __metadata6 = function(k, v) {
|
|
929
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
930
|
+
};
|
|
931
|
+
var SwcObject = class SwcObject2 extends SwcHTMLElementBase {
|
|
932
|
+
constructor() {
|
|
933
|
+
super();
|
|
934
|
+
this._value = {};
|
|
935
|
+
this._renderedNodes = [];
|
|
936
|
+
}
|
|
937
|
+
set value(val) {
|
|
938
|
+
if (typeof val !== "object" || val === null)
|
|
939
|
+
val = {};
|
|
940
|
+
this._value = this.createReactiveProxy(val, () => this.updateUI());
|
|
941
|
+
this.render();
|
|
942
|
+
}
|
|
943
|
+
get value() {
|
|
944
|
+
return this._value;
|
|
945
|
+
}
|
|
946
|
+
styles() {
|
|
947
|
+
return `:host { display: contents; }`;
|
|
948
|
+
}
|
|
949
|
+
renderTemplate() {
|
|
950
|
+
return `<slot id="tpl-slot" style="display:none;"></slot>`;
|
|
951
|
+
}
|
|
952
|
+
connectedCallback() {
|
|
953
|
+
this.initCore();
|
|
954
|
+
this.render();
|
|
955
|
+
}
|
|
956
|
+
updateUI() {
|
|
957
|
+
this._renderedNodes.forEach((node) => {
|
|
958
|
+
this.applyData(node, this._value);
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
render() {
|
|
962
|
+
if (!this.shadowRoot || this._masterTplNodes.length === 0)
|
|
963
|
+
return;
|
|
964
|
+
this._renderedNodes.forEach((n) => {
|
|
965
|
+
if (n.parentElement === this)
|
|
966
|
+
this.removeChild(n);
|
|
967
|
+
});
|
|
968
|
+
this._renderedNodes = [];
|
|
969
|
+
let slot = this.shadowRoot.querySelector('slot[name="obj-content"]');
|
|
970
|
+
if (!slot) {
|
|
971
|
+
slot = document.createElement("slot");
|
|
972
|
+
slot.name = "obj-content";
|
|
973
|
+
this.shadowRoot.appendChild(slot);
|
|
974
|
+
}
|
|
975
|
+
this._masterTplNodes.forEach((tplNode) => {
|
|
976
|
+
const clone = tplNode.cloneNode(true);
|
|
977
|
+
if (clone.nodeType === Node.ELEMENT_NODE) {
|
|
978
|
+
clone.setAttribute("slot", "obj-content");
|
|
979
|
+
} else if (clone.nodeType === Node.TEXT_NODE) {
|
|
980
|
+
if (clone.textContent?.trim().length === 0)
|
|
981
|
+
return;
|
|
982
|
+
const span = document.createElement("span");
|
|
983
|
+
span.setAttribute("slot", "obj-content");
|
|
984
|
+
span.appendChild(clone);
|
|
985
|
+
this.appendChild(span);
|
|
986
|
+
this._renderedNodes.push(span);
|
|
987
|
+
this.applyData(span, this._value);
|
|
988
|
+
return;
|
|
989
|
+
}
|
|
990
|
+
this.appendChild(clone);
|
|
991
|
+
this._renderedNodes.push(clone);
|
|
992
|
+
this.applyData(clone, this._value);
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
};
|
|
996
|
+
__decorate6([
|
|
997
|
+
style,
|
|
998
|
+
__metadata6("design:type", Function),
|
|
999
|
+
__metadata6("design:paramtypes", []),
|
|
1000
|
+
__metadata6("design:returntype", void 0)
|
|
1001
|
+
], SwcObject.prototype, "styles", null);
|
|
1002
|
+
__decorate6([
|
|
1003
|
+
template,
|
|
1004
|
+
__metadata6("design:type", Function),
|
|
1005
|
+
__metadata6("design:paramtypes", []),
|
|
1006
|
+
__metadata6("design:returntype", void 0)
|
|
1007
|
+
], SwcObject.prototype, "renderTemplate", null);
|
|
1008
|
+
SwcObject = __decorate6([
|
|
1009
|
+
elementDefine({ tagName: "swc-object", useShadow: true }),
|
|
1010
|
+
__metadata6("design:paramtypes", [])
|
|
1011
|
+
], SwcObject);
|
|
917
1012
|
return __toCommonJS(bundle_entry_exports);
|
|
918
1013
|
})();
|
|
919
1014
|
//# sourceMappingURL=dooboostore-simple-web-component.umd.js.map
|