dom-render 1.0.78 → 1.0.81
Sign up to get free protection for your applications and to get access to all the features.
- 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) {
|