dom-render 1.0.78 → 1.0.81
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/DomRender.d.ts +5 -20
- package/DomRender.js +9 -36
- package/DomRenderProxy.js +2 -1
- package/README.MD +102 -32
- package/RawSet.d.ts +1 -1
- package/RawSet.js +6 -4
- package/dist/bundle.js +284 -277
- package/events/EventManager.js +34 -27
- package/operators/Appender.d.ts +7 -4
- package/operators/Appender.js +26 -2
- package/operators/Dr.js +1 -1
- package/operators/DrAppender.js +1 -1
- package/operators/DrFor.js +1 -1
- package/operators/DrForOf.js +1 -1
- package/operators/DrForm.js +1 -1
- package/operators/DrIf.js +1 -1
- package/operators/DrInnerHTML.js +1 -1
- package/operators/DrInnerText.js +1 -1
- package/operators/DrRepeat.js +1 -1
- package/operators/DrTargetAttr.js +1 -1
- package/operators/DrTargetElement.js +1 -1
- package/operators/DrThis.js +1 -1
- package/package.json +1 -1
package/DomRender.d.ts
CHANGED
|
@@ -3,26 +3,11 @@ import { ConstructorType } from './types/Types';
|
|
|
3
3
|
import { RawSet } from './RawSet';
|
|
4
4
|
export declare class DomRender {
|
|
5
5
|
static run<T extends object>(obj: T, target?: Node, config?: Config): T;
|
|
6
|
-
static
|
|
6
|
+
static createComponent(param: {
|
|
7
7
|
type: ConstructorType<any>;
|
|
8
8
|
tagName?: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}): {
|
|
14
|
-
add: (source: {
|
|
15
|
-
type: ConstructorType<any>;
|
|
16
|
-
tagName?: string;
|
|
17
|
-
}, front: {
|
|
18
|
-
template: string;
|
|
19
|
-
styles?: string[];
|
|
20
|
-
}) => any;
|
|
21
|
-
};
|
|
22
|
-
static addAttribute(config: Config, attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment): {
|
|
23
|
-
add: (attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) => any;
|
|
24
|
-
};
|
|
25
|
-
static addAttributeCallBack(config: Config, attrName: string, callBack: (elements: Element, attrValue: string, obj: any) => void): {
|
|
26
|
-
add: (attrName: string, callBack: (elements: Element, attrValue: string, obj: any) => void) => any;
|
|
27
|
-
};
|
|
9
|
+
template?: string;
|
|
10
|
+
styles?: string[] | string;
|
|
11
|
+
}, config: Config): import("./Config").TargetElement;
|
|
12
|
+
static createAttribute(attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment): import("./Config").TargetAttr;
|
|
28
13
|
}
|
package/DomRender.js
CHANGED
|
@@ -46,44 +46,17 @@ var DomRender = /** @class */ (function () {
|
|
|
46
46
|
domRender.run(robj);
|
|
47
47
|
return robj;
|
|
48
48
|
};
|
|
49
|
-
DomRender.
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
config.targetElements = (_c = config.targetElements) !== null && _c !== void 0 ? _c : [];
|
|
57
|
-
config.targetElements.push(component);
|
|
58
|
-
return {
|
|
59
|
-
add: function (source, front) {
|
|
60
|
-
return DomRender.addComponent(config, source, front);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
49
|
+
DomRender.createComponent = function (param, config) {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
var component = RawSet_1.RawSet.createComponentTargetElement((_a = param.tagName) !== null && _a !== void 0 ? _a : param.type.name, function (e, o, r2, counstructorParam) {
|
|
52
|
+
var _a;
|
|
53
|
+
return new ((_a = param.type).bind.apply(_a, __spreadArray([void 0], counstructorParam, false)))();
|
|
54
|
+
}, (_b = param.template) !== null && _b !== void 0 ? _b : '', Array.isArray(param.styles) ? param.styles : (param.styles ? [param.styles] : undefined), false, config);
|
|
55
|
+
return component;
|
|
63
56
|
};
|
|
64
|
-
DomRender.
|
|
65
|
-
var _a;
|
|
57
|
+
DomRender.createAttribute = function (attrName, getThisObj, factory) {
|
|
66
58
|
var targetAttribute = RawSet_1.RawSet.createComponentTargetAttribute(attrName, getThisObj, factory);
|
|
67
|
-
|
|
68
|
-
config.targetAttrs.push(targetAttribute);
|
|
69
|
-
return {
|
|
70
|
-
add: function (attrName, getThisObj, factory) {
|
|
71
|
-
return DomRender.addAttribute(config, attrName, getThisObj, factory);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
DomRender.addAttributeCallBack = function (config, attrName, callBack) {
|
|
76
|
-
var _a;
|
|
77
|
-
config.applyEvents = (_a = config.applyEvents) !== null && _a !== void 0 ? _a : [];
|
|
78
|
-
config.applyEvents.push({
|
|
79
|
-
attrName: attrName,
|
|
80
|
-
callBack: callBack
|
|
81
|
-
});
|
|
82
|
-
return {
|
|
83
|
-
add: function (attrName, callBack) {
|
|
84
|
-
return DomRender.addAttributeCallBack(config, attrName, callBack);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
59
|
+
return targetAttribute;
|
|
87
60
|
};
|
|
88
61
|
return DomRender;
|
|
89
62
|
}());
|
package/DomRenderProxy.js
CHANGED
|
@@ -64,7 +64,7 @@ var DomRenderProxy = /** @class */ (function () {
|
|
|
64
64
|
(_d = (_c = this._domRender_proxy) === null || _c === void 0 ? void 0 : _c.onCreateRender) === null || _d === void 0 ? void 0 : _d.call(_c, createParam);
|
|
65
65
|
var innerHTML = (_e = target.innerHTML) !== null && _e !== void 0 ? _e : '';
|
|
66
66
|
this._targets.add(target);
|
|
67
|
-
var rawSets = RawSet_1.RawSet.checkPointCreates(target, this.config);
|
|
67
|
+
var rawSets = RawSet_1.RawSet.checkPointCreates(target, this._domRender_proxy, this.config);
|
|
68
68
|
// console.log('initRender -------rawSet', rawSets)
|
|
69
69
|
// 중요 초기에 한번 튕겨줘야함.
|
|
70
70
|
EventManager_1.eventManager.applyEvent(this._domRender_proxy, EventManager_1.eventManager.findAttrElements(target, this.config), this.config);
|
|
@@ -182,6 +182,7 @@ var DomRenderProxy = /** @class */ (function () {
|
|
|
182
182
|
}
|
|
183
183
|
else {
|
|
184
184
|
var strings = paths.reverse();
|
|
185
|
+
// array같은경우도 키값으로 접근하기때문에 특정 인덱스를 찾아서 그부분만 바꿔줄수 있다.
|
|
185
186
|
var fullPathStr_1 = strings.map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('').slice(1);
|
|
186
187
|
if (lastDoneExecute) {
|
|
187
188
|
var iterable = this._rawSets.get(fullPathStr_1);
|
package/README.MD
CHANGED
|
@@ -7,7 +7,7 @@ DOM-RENDER
|
|
|
7
7
|
|
|
8
8
|
# 🚀 Quick start
|
|
9
9
|
```html
|
|
10
|
-
<script src="https://cdn.jsdelivr.net/npm/dom-render@1.0.
|
|
10
|
+
<script src="https://cdn.jsdelivr.net/npm/dom-render@1.0.81/dist/bundle.js"></script>
|
|
11
11
|
```
|
|
12
12
|
```html
|
|
13
13
|
<!DOCTYPE html>
|
|
@@ -119,6 +119,45 @@ const data = DomRender.run(new Data(), document.querySelector('#app')!);
|
|
|
119
119
|
```
|
|
120
120
|
</details>
|
|
121
121
|
|
|
122
|
+
<details>
|
|
123
|
+
<summary>dr-appender<strong>🔻(click)</strong></summary>
|
|
124
|
+
|
|
125
|
+
```html
|
|
126
|
+
<h3>appender</h3>
|
|
127
|
+
<ul>
|
|
128
|
+
<li dr-appender="this.appender">
|
|
129
|
+
${#it#}$
|
|
130
|
+
</li>
|
|
131
|
+
</ul>
|
|
132
|
+
<button dr-event-click="this.append()">appending</button>
|
|
133
|
+
<button dr-event-click="this.modifyAppender(0)">idx 0 modify</button>
|
|
134
|
+
<button dr-event-click="this.clearAppend()">appender clear</button>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
class Data {
|
|
139
|
+
appender = new Appender();
|
|
140
|
+
|
|
141
|
+
constructor() {
|
|
142
|
+
this.appender.push('init' + RandomUtils.uuid(), 'init' + RandomUtils.uuid());
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
append() {
|
|
146
|
+
this.appender.push(RandomUtils.uuid(), RandomUtils.uuid());
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
clearAppend() {
|
|
150
|
+
this.appender.clear()
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
modifyAppender(idx: number) {
|
|
154
|
+
this.appender[idx][0] = RandomUtils.uuid();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
</details>
|
|
160
|
+
|
|
122
161
|
<details>
|
|
123
162
|
<summary>dr-repeat<strong>🔻(click)</strong></summary>
|
|
124
163
|
|
|
@@ -364,11 +403,12 @@ validator
|
|
|
364
403
|
const config: Config = {
|
|
365
404
|
window
|
|
366
405
|
};
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
406
|
+
config.targetElements = [
|
|
407
|
+
DomRender.createComponent({type: Main, tagName: 'page-main', template: MainTemplate}, config),
|
|
408
|
+
DomRender.createComponent({type: Second, tagName: 'page-second', template: SecondTemplate}, config),
|
|
409
|
+
DomRender.createComponent({type: Detail, tagName: 'page-detail', template: DetailTemplate}, config)
|
|
410
|
+
]
|
|
411
|
+
config.routerType = 'hash'; // 'hash' | 'path' | 'none';
|
|
372
412
|
const data = DomRender.run(new Data(), document.querySelector('#app')!, config);
|
|
373
413
|
```
|
|
374
414
|
```html
|
|
@@ -464,6 +504,17 @@ for (let data of new Range(100,55, 10)) {
|
|
|
464
504
|
const rangeArray = new Range(100,55, 10).toArray();
|
|
465
505
|
```
|
|
466
506
|
</details>
|
|
507
|
+
<details>
|
|
508
|
+
<summary>Appender<strong>🔻(click)</strong></summary>
|
|
509
|
+
|
|
510
|
+
```javascript
|
|
511
|
+
const appender = new Appender<number>([1, 2]);
|
|
512
|
+
appender.push(3, 4)
|
|
513
|
+
for (const data of appender) {
|
|
514
|
+
console.log('----appender item--->', data);
|
|
515
|
+
}
|
|
516
|
+
```
|
|
517
|
+
</details>
|
|
467
518
|
|
|
468
519
|
## Detect Get, Set
|
|
469
520
|
<details>
|
|
@@ -592,38 +643,53 @@ link attribute
|
|
|
592
643
|
</body>
|
|
593
644
|
```
|
|
594
645
|
```typescript
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
const
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
646
|
+
config.targetElements = [
|
|
647
|
+
DomRender.createComponent({type: Profile, template: ProfileTemplate}, config),
|
|
648
|
+
DomRender.createComponent({type: Home, template: HomeTemplate, styles: HomeStyle}, config)
|
|
649
|
+
]
|
|
650
|
+
|
|
651
|
+
config.targetAttrs = [
|
|
652
|
+
DomRender.createAttribute('link',
|
|
653
|
+
(element: Element, attrValue: string, obj: any, rawSet: RawSet) => {
|
|
654
|
+
return obj;
|
|
655
|
+
},
|
|
656
|
+
(element: Element, attrValue: string, obj: any, rawSet: RawSet) => {
|
|
657
|
+
const fag = window.document.createDocumentFragment();
|
|
658
|
+
if (attrValue) {
|
|
659
|
+
const n = element.cloneNode(true) as Element;
|
|
660
|
+
attrValue = ScriptUtils.eval(`return ${attrValue}`, obj)
|
|
661
|
+
n.addEventListener('click', () => {
|
|
662
|
+
location.href = attrValue;
|
|
663
|
+
});
|
|
664
|
+
fag.append(n);
|
|
665
|
+
}
|
|
666
|
+
return fag;
|
|
612
667
|
}
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
668
|
+
)
|
|
669
|
+
]
|
|
670
|
+
|
|
671
|
+
config.applyEvents = [
|
|
672
|
+
{
|
|
673
|
+
attrName: 'wow',
|
|
674
|
+
callBack: (e, a, o) => {
|
|
675
|
+
e.addEventListener('click', (event) => {
|
|
676
|
+
alert((event.target as any).value);
|
|
677
|
+
})
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
]
|
|
622
681
|
const data = DomRender.run(new Data(), document.querySelector('#app')!, config);
|
|
623
682
|
```
|
|
624
683
|
using component
|
|
625
684
|
```html
|
|
626
685
|
<my-element dr-on-component-init="$component.say();"></my-element>
|
|
686
|
+
|
|
687
|
+
<home value="${this.name}$" wow="${this.color}$">
|
|
688
|
+
${#component#.homeName}$
|
|
689
|
+
<home value="${#component#.homeName}$" wow="${#component#.homeColor}$" dr-component-name="sub_component" dr-component-inner-html-name="innerHTML">
|
|
690
|
+
${#sub_component#.homeName}$
|
|
691
|
+
</home>
|
|
692
|
+
</home>
|
|
627
693
|
```
|
|
628
694
|
- attribute
|
|
629
695
|
- dr-on-component-init: component created init call script
|
|
@@ -631,6 +697,10 @@ using component
|
|
|
631
697
|
- $element: element instance
|
|
632
698
|
- $attribute: element attribute object
|
|
633
699
|
- $innerHTML: element innerHTML string
|
|
700
|
+
- #component#: component instance
|
|
701
|
+
- #innerHTML#: element innerHTML
|
|
702
|
+
- dr-component-name: renaming component variable name (default: component)
|
|
703
|
+
- dr-inner-html-name: renaming innerHTML variable name (default: innerHTML)
|
|
634
704
|
---
|
|
635
705
|
|
|
636
706
|
# License
|
package/RawSet.d.ts
CHANGED
|
@@ -120,7 +120,7 @@ export declare class RawSet {
|
|
|
120
120
|
getAttributeAndDelete(element: Element, attr: string): string | null;
|
|
121
121
|
getDrAppendAttributeAndDelete(element: Element, obj: any): string | null;
|
|
122
122
|
replaceBody(genNode: Node): void;
|
|
123
|
-
static checkPointCreates(element: Node, config: Config): RawSet[];
|
|
123
|
+
static checkPointCreates(element: Node, obj: any, config: Config): RawSet[];
|
|
124
124
|
childAllRemove(): void;
|
|
125
125
|
static drItOtherEncoding(element: Element | DocumentFragment): string;
|
|
126
126
|
static drItOtherDecoding(element: Element | DocumentFragment, random: string): void;
|
package/RawSet.js
CHANGED
|
@@ -303,7 +303,7 @@ var RawSet = /** @class */ (function () {
|
|
|
303
303
|
(_a = this.point.start.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(genNode, this.point.start.nextSibling);
|
|
304
304
|
};
|
|
305
305
|
// 중요 important
|
|
306
|
-
RawSet.checkPointCreates = function (element, config) {
|
|
306
|
+
RawSet.checkPointCreates = function (element, obj, config) {
|
|
307
307
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
308
308
|
var thisVariableName = element.__domrender_this_variable_name;
|
|
309
309
|
// console.log('checkPointCreates thisVariableName', thisVariableName);
|
|
@@ -596,7 +596,7 @@ var RawSet = /** @class */ (function () {
|
|
|
596
596
|
styles: styles,
|
|
597
597
|
template: template,
|
|
598
598
|
callBack: function (element, obj, rawSet, attrs) {
|
|
599
|
-
var _a, _b, _c, _d;
|
|
599
|
+
var _a, _b, _c, _d, _e, _f;
|
|
600
600
|
// console.log('callback------->', element)
|
|
601
601
|
if (!obj.__domrender_components) {
|
|
602
602
|
obj.__domrender_components = {};
|
|
@@ -666,15 +666,17 @@ var RawSet = /** @class */ (function () {
|
|
|
666
666
|
(_d = instance === null || instance === void 0 ? void 0 : instance.onCreateRender) === null || _d === void 0 ? void 0 : _d.call.apply(_d, __spreadArray([instance], createParam, false));
|
|
667
667
|
var applayTemplate = element.innerHTML;
|
|
668
668
|
var innerHTMLThisRandom;
|
|
669
|
+
var componentName = (_e = element.getAttribute("".concat(EventManager_1.EventManager.attrPrefix, "component-name"))) !== null && _e !== void 0 ? _e : 'component';
|
|
670
|
+
var innerHTMLName = (_f = element.getAttribute("".concat(EventManager_1.EventManager.attrPrefix, "component-inner-html-name"))) !== null && _f !== void 0 ? _f : 'innerHTML';
|
|
669
671
|
if (applayTemplate) {
|
|
670
672
|
// if (rawSet.point.thisVariableName) {
|
|
671
673
|
// 넘어온 innerHTML에 this가 있으면 해당안되게 우선 치환.
|
|
672
674
|
innerHTMLThisRandom = RandomUtils_1.RandomUtils.uuid();
|
|
673
675
|
applayTemplate = applayTemplate.replace(/this\./g, innerHTMLThisRandom);
|
|
674
676
|
// }
|
|
675
|
-
applayTemplate = applayTemplate.replace(
|
|
677
|
+
applayTemplate = applayTemplate.replace(RegExp("#".concat(componentName, "#"), 'g'), 'this');
|
|
676
678
|
}
|
|
677
|
-
applayTemplate = template.replace(
|
|
679
|
+
applayTemplate = template.replace(RegExp("#".concat(innerHTMLName, "#"), 'g'), applayTemplate);
|
|
678
680
|
// dr-on-component-init
|
|
679
681
|
var oninit = element.getAttribute("".concat(EventManager_1.EventManager.attrPrefix, "on-component-init")); // dr-on-component-init
|
|
680
682
|
if (oninit) {
|