dom-render 1.0.45 → 1.0.49
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/Config.d.ts +2 -0
- package/DomRenderProxy.d.ts +1 -1
- package/DomRenderProxy.js +37 -22
- package/README.MD +132 -29
- package/dist/Config.d.ts +2 -0
- package/dist/DomRenderProxy.d.ts +1 -1
- package/dist/bundle.js +91 -45
- package/dist/bundle.js.map +1 -1
- package/dist/lifecycle/OnBeforeReturnGet.d.ts +3 -0
- package/dist/lifecycle/OnBeforeReturnSet.d.ts +3 -0
- package/events/EventManager.js +54 -23
- package/lifecycle/OnBeforeReturnGet.d.ts +3 -0
- package/lifecycle/OnBeforeReturnGet.js +1 -0
- package/lifecycle/OnBeforeReturnSet.d.ts +3 -0
- package/lifecycle/OnBeforeReturnSet.js +1 -0
- package/package.json +2 -2
- package/assets/banner.png +0 -0
package/Config.d.ts
CHANGED
@@ -18,6 +18,8 @@ export interface Config {
|
|
18
18
|
onElementInit?: (name: string, obj: any, rawSet: RawSet) => void;
|
19
19
|
onAttrInit?: (name: string, attrValue: string, obj: any, rawSet: RawSet) => void;
|
20
20
|
proxyExcludeTyps?: ConstructorType<any>[];
|
21
|
+
proxyExcludeOnBeforeReturnSets?: string[];
|
22
|
+
proxyExcludeOnBeforeReturnGets?: string[];
|
21
23
|
scripts?: {
|
22
24
|
[n: string]: any;
|
23
25
|
};
|
package/DomRenderProxy.d.ts
CHANGED
@@ -14,7 +14,7 @@ export declare class DomRenderProxy<T extends object> implements ProxyHandler<T>
|
|
14
14
|
initRender(target: Node): void;
|
15
15
|
getRawSets(): RawSet[];
|
16
16
|
render(raws?: RawSet[]): void;
|
17
|
-
root(paths: string[], value
|
17
|
+
root(paths: string[], value?: any, lastDoneExecute?: boolean): string[];
|
18
18
|
set(target: T, p: string | symbol, value: any, receiver: T): boolean;
|
19
19
|
get(target: T, p: string | symbol, receiver: any): any;
|
20
20
|
has(target: T, p: string | symbol): boolean;
|
package/DomRenderProxy.js
CHANGED
@@ -2,6 +2,7 @@ import { RawSet } from './RawSet';
|
|
2
2
|
import { eventManager } from './events/EventManager';
|
3
3
|
import { ScriptUtils } from './utils/script/ScriptUtils';
|
4
4
|
import { Shield } from './types/Types';
|
5
|
+
var excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
|
5
6
|
var DomRenderProxy = (function () {
|
6
7
|
function DomRenderProxy(_domRender_origin, target, config) {
|
7
8
|
this._domRender_origin = _domRender_origin;
|
@@ -84,14 +85,17 @@ var DomRenderProxy = (function () {
|
|
84
85
|
}
|
85
86
|
});
|
86
87
|
};
|
87
|
-
DomRenderProxy.prototype.root = function (paths, value) {
|
88
|
+
DomRenderProxy.prototype.root = function (paths, value, lastDoneExecute) {
|
88
89
|
var _this = this;
|
90
|
+
if (lastDoneExecute === void 0) { lastDoneExecute = true; }
|
91
|
+
var fullPaths = [];
|
89
92
|
if (this._domRender_ref.size > 0) {
|
90
93
|
this._domRender_ref.forEach(function (it, key) {
|
91
94
|
if ('_DomRender_isProxy' in key) {
|
92
95
|
it.forEach(function (sit) {
|
93
96
|
var _a;
|
94
|
-
(_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value);
|
97
|
+
var items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value, lastDoneExecute);
|
98
|
+
fullPaths.push(items.join(','));
|
95
99
|
});
|
96
100
|
}
|
97
101
|
});
|
@@ -99,37 +103,47 @@ var DomRenderProxy = (function () {
|
|
99
103
|
else {
|
100
104
|
var strings = paths.reverse();
|
101
105
|
var fullPathStr_1 = strings.join('.');
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
106
|
+
if (lastDoneExecute) {
|
107
|
+
var iterable = this._rawSets.get(fullPathStr_1);
|
108
|
+
var front = strings.slice(0, strings.length - 1).join('.');
|
109
|
+
var last = strings[strings.length - 1];
|
110
|
+
if (!isNaN(Number(last)) && Array.isArray(ScriptUtils.evalReturn('this.' + front, this._domRender_proxy))) {
|
111
|
+
var aIterable = this._rawSets.get(front);
|
112
|
+
if (aIterable) {
|
113
|
+
this.render(Array.from(aIterable));
|
114
|
+
}
|
109
115
|
}
|
110
|
-
|
111
|
-
|
112
|
-
this.render(Array.from(iterable));
|
113
|
-
}
|
114
|
-
this._targets.forEach(function (it) {
|
115
|
-
if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
|
116
|
-
var targets = eventManager.findAttrElements(it, _this.config);
|
117
|
-
eventManager.changeVar(_this._domRender_proxy, targets, "this." + fullPathStr_1);
|
116
|
+
else if (iterable) {
|
117
|
+
this.render(Array.from(iterable));
|
118
118
|
}
|
119
|
-
|
119
|
+
this._targets.forEach(function (it) {
|
120
|
+
if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
|
121
|
+
var targets = eventManager.findAttrElements(it, _this.config);
|
122
|
+
eventManager.changeVar(_this._domRender_proxy, targets, "this." + fullPathStr_1);
|
123
|
+
}
|
124
|
+
});
|
125
|
+
}
|
126
|
+
fullPaths.push(fullPathStr_1);
|
120
127
|
}
|
128
|
+
return fullPaths;
|
121
129
|
};
|
122
130
|
DomRenderProxy.prototype.set = function (target, p, value, receiver) {
|
131
|
+
var _a, _b, _c, _d;
|
123
132
|
if (typeof p === 'string') {
|
124
133
|
value = this.proxy(receiver, value, p);
|
125
134
|
}
|
126
135
|
target[p] = value;
|
136
|
+
var fullPath;
|
127
137
|
if (typeof p === 'string') {
|
128
|
-
this.root([p], value);
|
138
|
+
fullPath = this.root([p], value);
|
139
|
+
}
|
140
|
+
if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.proxyExcludeOnBeforeReturnSets) !== null && _b !== void 0 ? _b : []).concat(excludeGetSetPropertys).includes(p)) {
|
141
|
+
(_d = (_c = receiver) === null || _c === void 0 ? void 0 : _c.onBeforeReturnSet) === null || _d === void 0 ? void 0 : _d.call(_c, p, value, fullPath);
|
129
142
|
}
|
130
143
|
return true;
|
131
144
|
};
|
132
145
|
DomRenderProxy.prototype.get = function (target, p, receiver) {
|
146
|
+
var _a, _b, _c, _d;
|
133
147
|
if (p === '_DomRender_origin') {
|
134
148
|
return this._domRender_origin;
|
135
149
|
}
|
@@ -142,11 +156,12 @@ var DomRenderProxy = (function () {
|
|
142
156
|
else {
|
143
157
|
var it_1 = target[p];
|
144
158
|
if (it_1 && typeof it_1 === 'object' && ('_DomRender_isProxy' in it_1) && Object.prototype.toString.call(it_1._DomRender_origin) === '[object Date]') {
|
145
|
-
|
159
|
+
it_1 = it_1._DomRender_origin;
|
146
160
|
}
|
147
|
-
|
148
|
-
|
161
|
+
if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.proxyExcludeOnBeforeReturnGets) !== null && _b !== void 0 ? _b : []).concat(excludeGetSetPropertys).includes(p)) {
|
162
|
+
(_d = (_c = receiver) === null || _c === void 0 ? void 0 : _c.onBeforeReturnGet) === null || _d === void 0 ? void 0 : _d.call(_c, p, it_1, this.root([p], it_1, false));
|
149
163
|
}
|
164
|
+
return it_1;
|
150
165
|
}
|
151
166
|
};
|
152
167
|
DomRenderProxy.prototype.has = function (target, p) {
|
package/README.MD
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
[](https://www.npmjs.com/package/dom-render) [](LICENSE.md) [](https://discord.gg/PW56dpns) [](https://github.com/visualkhh/dom-render)
|
3
3
|
# Our primary goals are
|
4
4
|
- view template engine
|
5
|
-
- Dom control and reorder
|
5
|
+
- Dom control and reorder
|
6
|
+
- all internal variables are managed by proxy. (DomRenderProxy)
|
6
7
|
---
|
7
8
|
|
8
9
|
# 🚀 Quick start
|
@@ -33,7 +34,7 @@ data.name = 'modify name';
|
|
33
34
|
## dr-if
|
34
35
|
```html
|
35
36
|
<div dr-if="true">true</div>
|
36
|
-
<div dr-if="this.gender==='M'">
|
37
|
+
<div dr-if="this.gender==='M'">gender: M</div>
|
37
38
|
```
|
38
39
|
## dr-for, dr-for-of
|
39
40
|
```html
|
@@ -54,30 +55,41 @@ data.name = 'modify name';
|
|
54
55
|
```
|
55
56
|
|
56
57
|
## event
|
57
|
-
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
<
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
58
|
+
dr-event-(name)
|
59
|
+
- click, mousedown, mouseup, dblclick, mouseover, mouseout, mousemove, mouseenter, mouseleave, contextmenu, keyup, keydown, keypress, change, input, submit, resize, focus, blur
|
60
|
+
- ref: element
|
61
|
+
- variable: $event, $target
|
62
|
+
```html
|
63
|
+
click: <button dr-event-click="this.name = 'name' + new Date()">click</button> <br>
|
64
|
+
change: <input type="text" dr-event-change="this.name = $target.value"> <br>
|
65
|
+
input: <input type="text" dr-event-input="this.name = $target.value"> <br>
|
66
|
+
keyup: <input type="text" dr-event-keyup="this.name = $target.value"> <br>
|
67
|
+
...
|
68
|
+
keydown: <input type="text" dr-event-keydown="this.name = $target.value"><br>
|
69
|
+
submit: <form dr-event-submit="console.log($event); $event.preventDefault();"><input type="text"> <button type="submit">submit</button></form><br>
|
70
|
+
```
|
71
|
+
|
72
|
+
dr-window-event-popstate
|
73
|
+
- ref: window
|
74
|
+
- variable: $target
|
75
|
+
```html
|
76
|
+
window-event-popstate: <input type="text" dr-window-event-popstate="alert(this.name)"><br>
|
77
|
+
```
|
78
|
+
|
79
|
+
dr-event
|
80
|
+
- other event
|
81
|
+
- ref: element
|
82
|
+
- variable: $params, $event
|
83
|
+
```html
|
84
|
+
<input dr-event:bind='eventName1, eventName2' dr-event="console.log('event', $params, $event)" type="text">
|
78
85
|
```
|
79
86
|
|
80
87
|
## dr-value, value-link
|
88
|
+
dr-value
|
89
|
+
- The value is assigned the first time.
|
90
|
+
|
91
|
+
dr-value-link
|
92
|
+
- Value and variable values are referencing each other. It affects each other when changing. (Immediate reflection event: input)
|
81
93
|
```html
|
82
94
|
dr-value: <input type="text" dr-value="this.office.name"> <br>
|
83
95
|
dr-value-link: <input type="text" dr-value-link="this.office.addr.street"> <br>
|
@@ -86,11 +98,24 @@ dr-value-link: <input type="text" dr-value-link="this.office.addr.street"> <br>
|
|
86
98
|
## dr-attr
|
87
99
|
```html
|
88
100
|
<textarea dr-attr="{rows: this.age/2, cols: this.age}"></textarea>
|
101
|
+
<div dr-attr="{wow: '123', good: 123444}"></div>
|
102
|
+
<div dr-attr="['wow=123', 'good=123444']"></div>
|
103
|
+
<div dr-attr="'wow=123, good=123444'"></div>
|
104
|
+
```
|
105
|
+
|
106
|
+
## dr-class
|
107
|
+
```html
|
108
|
+
<div dr-class="{big: this.age > 50, red: this.age > 50}">
|
109
|
+
<div dr-class="'big yellow ' + (this.age > 50 ? 'old' : 'young')">
|
110
|
+
<div dr-class="['small', 'yellow']">
|
89
111
|
```
|
90
112
|
|
91
113
|
## dr-style
|
92
114
|
```html
|
93
|
-
<div dr-style="{fontSize: this.age+'px'}"> style </div>
|
115
|
+
<div dr-style="{fontSize: this.age + 'px'}"> style </div>
|
116
|
+
<div dr-style="{'font-size': '20px'}"> style</div>
|
117
|
+
<div dr-style="'font-size: ' + this.age +'px; margin: ' + this.age + 'px'"> style </div>
|
118
|
+
<div dr-style="['font-size: ' + this.age +'px', 'margin: ' + this.age + 'px']"> style </div>
|
94
119
|
```
|
95
120
|
|
96
121
|
|
@@ -120,9 +145,15 @@ to-be
|
|
120
145
|
</select>
|
121
146
|
```
|
122
147
|
|
148
|
+
---
|
149
|
+
# LifeCycle
|
150
|
+
```
|
151
|
+
* OnInitRender
|
152
|
+
- onInitRender(): init render call
|
153
|
+
```
|
123
154
|
---
|
124
155
|
|
125
|
-
#
|
156
|
+
# Script
|
126
157
|
```typescript
|
127
158
|
new DomRender.run(obj, target, {
|
128
159
|
scripts: {
|
@@ -142,7 +173,7 @@ const data = config.scripts.concat('head', 'tail')
|
|
142
173
|
```
|
143
174
|
|
144
175
|
---
|
145
|
-
#
|
176
|
+
# Component
|
146
177
|
```typescript
|
147
178
|
export namespace Profile {
|
148
179
|
export const templat = '<div>aaaaa${this.name}aaaaa </div>';
|
@@ -174,10 +205,82 @@ using component
|
|
174
205
|
- $innerHTML: element innerHTML string
|
175
206
|
---
|
176
207
|
|
177
|
-
#
|
208
|
+
# Detect Get, Set
|
209
|
+
OnBeforeReturnSet
|
210
|
+
```typescript
|
211
|
+
export interface OnBeforeReturnSet {
|
212
|
+
onBeforeReturnSet(name: string, value: any, fullPath?: string[]): void;
|
213
|
+
}
|
178
214
|
```
|
179
|
-
|
180
|
-
|
215
|
+
OnBeforeReturnGet
|
216
|
+
```typescript
|
217
|
+
export interface OnBeforeReturnGet {
|
218
|
+
onBeforeReturnGet(name: string, value: any, fullPath?: string[]): void;
|
219
|
+
}
|
220
|
+
```
|
221
|
+
|
222
|
+
using detect
|
223
|
+
```typescript
|
224
|
+
{
|
225
|
+
name: 'dom-render'
|
226
|
+
onBeforeReturnSet: (name: string, value: any, fullpath: string[]) => {
|
227
|
+
console.log('set name-->', name, value, fullpath);
|
228
|
+
}
|
229
|
+
onBeforeReturnGet: (name: string, value: any, fullpath: string[]) => {
|
230
|
+
console.log('get name-->', name, value, fullpath);
|
231
|
+
}
|
232
|
+
}
|
233
|
+
```
|
234
|
+
exclude detect property: Config
|
235
|
+
- proxyExcludeOnBeforeReturnGets: ['propertyName']
|
236
|
+
- proxyExcludeOnBeforeReturnSets: ['propertyName']
|
237
|
+
---
|
238
|
+
|
239
|
+
# Proxy
|
240
|
+
all internal variables are managed by proxy. (DomRenderProxy)
|
241
|
+
### exclude proxy (situation: Maximum call stack error)
|
242
|
+
exclude detect property: Config
|
243
|
+
- proxyExcludeTyps: [Class...]
|
244
|
+
|
245
|
+
Code base
|
246
|
+
```typescript
|
247
|
+
// frezz
|
248
|
+
{name : Object.freeze({...})}
|
249
|
+
|
250
|
+
// Shield Object type: {[k: string]: any}
|
251
|
+
{name : new Shield()}
|
252
|
+
|
253
|
+
// DomRenderProxy Final
|
254
|
+
{name : DomRenderProxy.final({...})}
|
255
|
+
```
|
256
|
+
---
|
257
|
+
# Config
|
258
|
+
```typescript
|
259
|
+
export type TargetElement = {
|
260
|
+
_name: string,
|
261
|
+
template?: string,
|
262
|
+
styles?: string[],
|
263
|
+
callBack: (target: Element, obj: any, rawSet: RawSet) => DocumentFragment,
|
264
|
+
complete?: (target: Element, obj: any, rawSet: RawSet) => void
|
265
|
+
};
|
266
|
+
|
267
|
+
export type TargetAttr = {
|
268
|
+
name: string,
|
269
|
+
callBack: (target: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment,
|
270
|
+
complete?: (target: Element, attrValue: string, obj: any, rawSet: RawSet) => void
|
271
|
+
};
|
272
|
+
|
273
|
+
export interface Config {
|
274
|
+
targetElements?: TargetElement[];
|
275
|
+
targetAttrs?: TargetAttr[];
|
276
|
+
onElementInit?: (name: string, obj: any, rawSet: RawSet) => void;
|
277
|
+
onAttrInit?: (name: string, attrValue: string, obj: any, rawSet: RawSet) => void;
|
278
|
+
proxyExcludeTyps?: ConstructorType<any>[];
|
279
|
+
proxyExcludeOnBeforeReturnSets?: string[];
|
280
|
+
proxyExcludeOnBeforeReturnGets?: string[];
|
281
|
+
scripts?: { [n: string]: any };
|
282
|
+
applyEvents?: { attrName: string, callBack: (elements: Element, attrValue: string, obj: any) => void }[];
|
283
|
+
}
|
181
284
|
```
|
182
285
|
----
|
183
286
|
# License
|
package/dist/Config.d.ts
CHANGED
@@ -18,6 +18,8 @@ export interface Config {
|
|
18
18
|
onElementInit?: (name: string, obj: any, rawSet: RawSet) => void;
|
19
19
|
onAttrInit?: (name: string, attrValue: string, obj: any, rawSet: RawSet) => void;
|
20
20
|
proxyExcludeTyps?: ConstructorType<any>[];
|
21
|
+
proxyExcludeOnBeforeReturnSets?: string[];
|
22
|
+
proxyExcludeOnBeforeReturnGets?: string[];
|
21
23
|
scripts?: {
|
22
24
|
[n: string]: any;
|
23
25
|
};
|
package/dist/DomRenderProxy.d.ts
CHANGED
@@ -14,7 +14,7 @@ export declare class DomRenderProxy<T extends object> implements ProxyHandler<T>
|
|
14
14
|
initRender(target: Node): void;
|
15
15
|
getRawSets(): RawSet[];
|
16
16
|
render(raws?: RawSet[]): void;
|
17
|
-
root(paths: string[], value
|
17
|
+
root(paths: string[], value?: any, lastDoneExecute?: boolean): string[];
|
18
18
|
set(target: T, p: string | symbol, value: any, receiver: T): boolean;
|
19
19
|
get(target: T, p: string | symbol, receiver: any): any;
|
20
20
|
has(target: T, p: string | symbol): boolean;
|
package/dist/bundle.js
CHANGED
@@ -270,7 +270,7 @@ var eventManager = new (function () {
|
|
270
270
|
document.querySelectorAll('[dr-window-event-popstate]').forEach(function (it) {
|
271
271
|
var script = it.getAttribute('dr-window-event-popstate');
|
272
272
|
if (script) {
|
273
|
-
ScriptUtils.eval("
|
273
|
+
ScriptUtils.eval("const $target = this.__render.target; " + script + " ", Object.assign(it.obj, {
|
274
274
|
__render: Object.freeze({
|
275
275
|
target: it
|
276
276
|
})
|
@@ -365,14 +365,28 @@ var eventManager = new (function () {
|
|
365
365
|
script = 'return ' + script;
|
366
366
|
}
|
367
367
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
368
|
-
var data = ScriptUtils.eval("
|
368
|
+
var data = ScriptUtils.eval("const $target=this.__render.target; " + script + " ", Object.assign(obj, {
|
369
369
|
__render: Object.freeze({
|
370
370
|
target: it
|
371
371
|
})
|
372
372
|
}));
|
373
|
-
|
374
|
-
|
375
|
-
|
373
|
+
if (typeof data === 'string') {
|
374
|
+
data.split(',').forEach(function (sit) {
|
375
|
+
var _a = sit.split('='), key = _a[0], value = _a[1];
|
376
|
+
it.setAttribute(key.trim(), value.trim());
|
377
|
+
});
|
378
|
+
}
|
379
|
+
else if (Array.isArray(data)) {
|
380
|
+
data.forEach(function (sit) {
|
381
|
+
var _a = sit.split('='), key = _a[0], value = _a[1];
|
382
|
+
it.setAttribute(key.trim(), value.trim());
|
383
|
+
});
|
384
|
+
}
|
385
|
+
else {
|
386
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
387
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
388
|
+
it.setAttribute(key, String(value));
|
389
|
+
}
|
376
390
|
}
|
377
391
|
}
|
378
392
|
});
|
@@ -382,15 +396,23 @@ var eventManager = new (function () {
|
|
382
396
|
script = 'return ' + script;
|
383
397
|
}
|
384
398
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
385
|
-
var data = ScriptUtils.eval("
|
399
|
+
var data = ScriptUtils.eval("const $target = this.__render.target; " + script + " ", Object.assign(obj, {
|
386
400
|
__render: Object.freeze({
|
387
401
|
target: it
|
388
402
|
})
|
389
403
|
}));
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
404
|
+
if (typeof data === 'string') {
|
405
|
+
it.setAttribute('style', data);
|
406
|
+
}
|
407
|
+
else if (Array.isArray(data)) {
|
408
|
+
it.setAttribute('style', data.join(';'));
|
409
|
+
}
|
410
|
+
else {
|
411
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
412
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
413
|
+
if (it instanceof HTMLElement) {
|
414
|
+
it.style[key] = String(value);
|
415
|
+
}
|
394
416
|
}
|
395
417
|
}
|
396
418
|
}
|
@@ -401,19 +423,27 @@ var eventManager = new (function () {
|
|
401
423
|
script = 'return ' + script;
|
402
424
|
}
|
403
425
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
404
|
-
var data = ScriptUtils.eval("
|
426
|
+
var data = ScriptUtils.eval("const $target = this.$target; " + script + " ", Object.assign(obj, {
|
405
427
|
__render: Object.freeze({
|
406
428
|
target: it
|
407
429
|
})
|
408
430
|
}));
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
431
|
+
if (typeof data === 'string') {
|
432
|
+
it.setAttribute('class', data);
|
433
|
+
}
|
434
|
+
else if (Array.isArray(data)) {
|
435
|
+
it.setAttribute('class', data.join(' '));
|
436
|
+
}
|
437
|
+
else {
|
438
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
439
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
440
|
+
if (it instanceof HTMLElement) {
|
441
|
+
if (value) {
|
442
|
+
it.classList.add(key);
|
443
|
+
}
|
444
|
+
else {
|
445
|
+
it.classList.remove(key);
|
446
|
+
}
|
417
447
|
}
|
418
448
|
}
|
419
449
|
}
|
@@ -425,7 +455,7 @@ var eventManager = new (function () {
|
|
425
455
|
this.procAttr(elements, attr, function (it, attribute) {
|
426
456
|
var script = attribute;
|
427
457
|
it.addEventListener(eventName, function (event) {
|
428
|
-
ScriptUtils.eval("
|
458
|
+
ScriptUtils.eval("const $event=this.__render.event; const $target=$event.target; " + script + " ", Object.assign(obj, {
|
429
459
|
__render: Object.freeze({
|
430
460
|
event: event
|
431
461
|
})
|
@@ -439,16 +469,17 @@ var eventManager = new (function () {
|
|
439
469
|
if (bind) {
|
440
470
|
var script_1 = attribute;
|
441
471
|
var params_1 = {};
|
472
|
+
var prefix_1 = attr + ':';
|
442
473
|
Object.entries(attributes).filter(function (_a) {
|
443
474
|
var k = _a[0]; _a[1];
|
444
|
-
return k.startsWith(
|
475
|
+
return k.startsWith(prefix_1);
|
445
476
|
}).forEach(function (_a) {
|
446
477
|
var k = _a[0], v = _a[1];
|
447
|
-
params_1[k] = v;
|
478
|
+
params_1[k.slice(prefix_1.length)] = v;
|
448
479
|
});
|
449
480
|
bind.split(',').forEach(function (eventName) {
|
450
481
|
it.addEventListener(eventName.trim(), function (event) {
|
451
|
-
ScriptUtils.eval("
|
482
|
+
ScriptUtils.eval("const $params = this.__render.params; const $event=this.__render.event; const $target=$event.target; " + script_1 + " ", Object.assign(obj, {
|
452
483
|
__render: Object.freeze({
|
453
484
|
event: event,
|
454
485
|
params: params_1
|
@@ -1030,6 +1061,7 @@ var Shield = (function () {
|
|
1030
1061
|
return Shield;
|
1031
1062
|
}());
|
1032
1063
|
|
1064
|
+
var excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
|
1033
1065
|
var DomRenderProxy = (function () {
|
1034
1066
|
function DomRenderProxy(_domRender_origin, target, config) {
|
1035
1067
|
this._domRender_origin = _domRender_origin;
|
@@ -1112,14 +1144,17 @@ var DomRenderProxy = (function () {
|
|
1112
1144
|
}
|
1113
1145
|
});
|
1114
1146
|
};
|
1115
|
-
DomRenderProxy.prototype.root = function (paths, value) {
|
1147
|
+
DomRenderProxy.prototype.root = function (paths, value, lastDoneExecute) {
|
1116
1148
|
var _this = this;
|
1149
|
+
if (lastDoneExecute === void 0) { lastDoneExecute = true; }
|
1150
|
+
var fullPaths = [];
|
1117
1151
|
if (this._domRender_ref.size > 0) {
|
1118
1152
|
this._domRender_ref.forEach(function (it, key) {
|
1119
1153
|
if ('_DomRender_isProxy' in key) {
|
1120
1154
|
it.forEach(function (sit) {
|
1121
1155
|
var _a;
|
1122
|
-
(_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value);
|
1156
|
+
var items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value, lastDoneExecute);
|
1157
|
+
fullPaths.push(items.join(','));
|
1123
1158
|
});
|
1124
1159
|
}
|
1125
1160
|
});
|
@@ -1127,37 +1162,47 @@ var DomRenderProxy = (function () {
|
|
1127
1162
|
else {
|
1128
1163
|
var strings = paths.reverse();
|
1129
1164
|
var fullPathStr_1 = strings.join('.');
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1165
|
+
if (lastDoneExecute) {
|
1166
|
+
var iterable = this._rawSets.get(fullPathStr_1);
|
1167
|
+
var front = strings.slice(0, strings.length - 1).join('.');
|
1168
|
+
var last = strings[strings.length - 1];
|
1169
|
+
if (!isNaN(Number(last)) && Array.isArray(ScriptUtils.evalReturn('this.' + front, this._domRender_proxy))) {
|
1170
|
+
var aIterable = this._rawSets.get(front);
|
1171
|
+
if (aIterable) {
|
1172
|
+
this.render(Array.from(aIterable));
|
1173
|
+
}
|
1137
1174
|
}
|
1138
|
-
|
1139
|
-
|
1140
|
-
this.render(Array.from(iterable));
|
1141
|
-
}
|
1142
|
-
this._targets.forEach(function (it) {
|
1143
|
-
if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
|
1144
|
-
var targets = eventManager.findAttrElements(it, _this.config);
|
1145
|
-
eventManager.changeVar(_this._domRender_proxy, targets, "this." + fullPathStr_1);
|
1175
|
+
else if (iterable) {
|
1176
|
+
this.render(Array.from(iterable));
|
1146
1177
|
}
|
1147
|
-
|
1178
|
+
this._targets.forEach(function (it) {
|
1179
|
+
if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
|
1180
|
+
var targets = eventManager.findAttrElements(it, _this.config);
|
1181
|
+
eventManager.changeVar(_this._domRender_proxy, targets, "this." + fullPathStr_1);
|
1182
|
+
}
|
1183
|
+
});
|
1184
|
+
}
|
1185
|
+
fullPaths.push(fullPathStr_1);
|
1148
1186
|
}
|
1187
|
+
return fullPaths;
|
1149
1188
|
};
|
1150
1189
|
DomRenderProxy.prototype.set = function (target, p, value, receiver) {
|
1190
|
+
var _a, _b, _c, _d;
|
1151
1191
|
if (typeof p === 'string') {
|
1152
1192
|
value = this.proxy(receiver, value, p);
|
1153
1193
|
}
|
1154
1194
|
target[p] = value;
|
1195
|
+
var fullPath;
|
1155
1196
|
if (typeof p === 'string') {
|
1156
|
-
this.root([p], value);
|
1197
|
+
fullPath = this.root([p], value);
|
1198
|
+
}
|
1199
|
+
if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.proxyExcludeOnBeforeReturnSets) !== null && _b !== void 0 ? _b : []).concat(excludeGetSetPropertys).includes(p)) {
|
1200
|
+
(_d = (_c = receiver) === null || _c === void 0 ? void 0 : _c.onBeforeReturnSet) === null || _d === void 0 ? void 0 : _d.call(_c, p, value, fullPath);
|
1157
1201
|
}
|
1158
1202
|
return true;
|
1159
1203
|
};
|
1160
1204
|
DomRenderProxy.prototype.get = function (target, p, receiver) {
|
1205
|
+
var _a, _b, _c, _d;
|
1161
1206
|
if (p === '_DomRender_origin') {
|
1162
1207
|
return this._domRender_origin;
|
1163
1208
|
}
|
@@ -1170,11 +1215,12 @@ var DomRenderProxy = (function () {
|
|
1170
1215
|
else {
|
1171
1216
|
var it_1 = target[p];
|
1172
1217
|
if (it_1 && typeof it_1 === 'object' && ('_DomRender_isProxy' in it_1) && Object.prototype.toString.call(it_1._DomRender_origin) === '[object Date]') {
|
1173
|
-
|
1218
|
+
it_1 = it_1._DomRender_origin;
|
1174
1219
|
}
|
1175
|
-
|
1176
|
-
|
1220
|
+
if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.proxyExcludeOnBeforeReturnGets) !== null && _b !== void 0 ? _b : []).concat(excludeGetSetPropertys).includes(p)) {
|
1221
|
+
(_d = (_c = receiver) === null || _c === void 0 ? void 0 : _c.onBeforeReturnGet) === null || _d === void 0 ? void 0 : _d.call(_c, p, it_1, this.root([p], it_1, false));
|
1177
1222
|
}
|
1223
|
+
return it_1;
|
1178
1224
|
}
|
1179
1225
|
};
|
1180
1226
|
DomRenderProxy.prototype.has = function (target, p) {
|
package/dist/bundle.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bundle.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"bundle.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/events/EventManager.js
CHANGED
@@ -27,7 +27,7 @@ export var eventManager = new (function () {
|
|
27
27
|
document.querySelectorAll('[dr-window-event-popstate]').forEach(function (it) {
|
28
28
|
var script = it.getAttribute('dr-window-event-popstate');
|
29
29
|
if (script) {
|
30
|
-
ScriptUtils.eval("
|
30
|
+
ScriptUtils.eval("const $target = this.__render.target; " + script + " ", Object.assign(it.obj, {
|
31
31
|
__render: Object.freeze({
|
32
32
|
target: it
|
33
33
|
})
|
@@ -122,14 +122,28 @@ export var eventManager = new (function () {
|
|
122
122
|
script = 'return ' + script;
|
123
123
|
}
|
124
124
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
125
|
-
var data = ScriptUtils.eval("
|
125
|
+
var data = ScriptUtils.eval("const $target=this.__render.target; " + script + " ", Object.assign(obj, {
|
126
126
|
__render: Object.freeze({
|
127
127
|
target: it
|
128
128
|
})
|
129
129
|
}));
|
130
|
-
|
131
|
-
|
132
|
-
|
130
|
+
if (typeof data === 'string') {
|
131
|
+
data.split(',').forEach(function (sit) {
|
132
|
+
var _a = sit.split('='), key = _a[0], value = _a[1];
|
133
|
+
it.setAttribute(key.trim(), value.trim());
|
134
|
+
});
|
135
|
+
}
|
136
|
+
else if (Array.isArray(data)) {
|
137
|
+
data.forEach(function (sit) {
|
138
|
+
var _a = sit.split('='), key = _a[0], value = _a[1];
|
139
|
+
it.setAttribute(key.trim(), value.trim());
|
140
|
+
});
|
141
|
+
}
|
142
|
+
else {
|
143
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
144
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
145
|
+
it.setAttribute(key, String(value));
|
146
|
+
}
|
133
147
|
}
|
134
148
|
}
|
135
149
|
});
|
@@ -139,15 +153,23 @@ export var eventManager = new (function () {
|
|
139
153
|
script = 'return ' + script;
|
140
154
|
}
|
141
155
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
142
|
-
var data = ScriptUtils.eval("
|
156
|
+
var data = ScriptUtils.eval("const $target = this.__render.target; " + script + " ", Object.assign(obj, {
|
143
157
|
__render: Object.freeze({
|
144
158
|
target: it
|
145
159
|
})
|
146
160
|
}));
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
161
|
+
if (typeof data === 'string') {
|
162
|
+
it.setAttribute('style', data);
|
163
|
+
}
|
164
|
+
else if (Array.isArray(data)) {
|
165
|
+
it.setAttribute('style', data.join(';'));
|
166
|
+
}
|
167
|
+
else {
|
168
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
169
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
170
|
+
if (it instanceof HTMLElement) {
|
171
|
+
it.style[key] = String(value);
|
172
|
+
}
|
151
173
|
}
|
152
174
|
}
|
153
175
|
}
|
@@ -158,19 +180,27 @@ export var eventManager = new (function () {
|
|
158
180
|
script = 'return ' + script;
|
159
181
|
}
|
160
182
|
if (_this.isUsingThisVar(script, varName) || varName === undefined) {
|
161
|
-
var data = ScriptUtils.eval("
|
183
|
+
var data = ScriptUtils.eval("const $target = this.$target; " + script + " ", Object.assign(obj, {
|
162
184
|
__render: Object.freeze({
|
163
185
|
target: it
|
164
186
|
})
|
165
187
|
}));
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
188
|
+
if (typeof data === 'string') {
|
189
|
+
it.setAttribute('class', data);
|
190
|
+
}
|
191
|
+
else if (Array.isArray(data)) {
|
192
|
+
it.setAttribute('class', data.join(' '));
|
193
|
+
}
|
194
|
+
else {
|
195
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
196
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
197
|
+
if (it instanceof HTMLElement) {
|
198
|
+
if (value) {
|
199
|
+
it.classList.add(key);
|
200
|
+
}
|
201
|
+
else {
|
202
|
+
it.classList.remove(key);
|
203
|
+
}
|
174
204
|
}
|
175
205
|
}
|
176
206
|
}
|
@@ -182,7 +212,7 @@ export var eventManager = new (function () {
|
|
182
212
|
this.procAttr(elements, attr, function (it, attribute) {
|
183
213
|
var script = attribute;
|
184
214
|
it.addEventListener(eventName, function (event) {
|
185
|
-
ScriptUtils.eval("
|
215
|
+
ScriptUtils.eval("const $event=this.__render.event; const $target=$event.target; " + script + " ", Object.assign(obj, {
|
186
216
|
__render: Object.freeze({
|
187
217
|
event: event
|
188
218
|
})
|
@@ -196,16 +226,17 @@ export var eventManager = new (function () {
|
|
196
226
|
if (bind) {
|
197
227
|
var script_1 = attribute;
|
198
228
|
var params_1 = {};
|
229
|
+
var prefix_1 = attr + ':';
|
199
230
|
Object.entries(attributes).filter(function (_a) {
|
200
231
|
var k = _a[0], v = _a[1];
|
201
|
-
return k.startsWith(
|
232
|
+
return k.startsWith(prefix_1);
|
202
233
|
}).forEach(function (_a) {
|
203
234
|
var k = _a[0], v = _a[1];
|
204
|
-
params_1[k] = v;
|
235
|
+
params_1[k.slice(prefix_1.length)] = v;
|
205
236
|
});
|
206
237
|
bind.split(',').forEach(function (eventName) {
|
207
238
|
it.addEventListener(eventName.trim(), function (event) {
|
208
|
-
ScriptUtils.eval("
|
239
|
+
ScriptUtils.eval("const $params = this.__render.params; const $event=this.__render.event; const $target=$event.target; " + script_1 + " ", Object.assign(obj, {
|
209
240
|
__render: Object.freeze({
|
210
241
|
event: event,
|
211
242
|
params: params_1
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "dom-render",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.49",
|
4
4
|
"main": "DomRender.js",
|
5
5
|
"license": "MIT",
|
6
6
|
"description": "dom-render",
|
@@ -55,7 +55,7 @@
|
|
55
55
|
"bundle:watch": "rollup -c -w",
|
56
56
|
"dev:start": "npm run start --workspace=dev",
|
57
57
|
"dev:serve": "npm run serve --workspace=dev",
|
58
|
-
"npm-build": "npm run build && cp package.json dist && cp README.MD dist",
|
58
|
+
"npm-build": "npm run build && cp package.json dist && cp .npmignore dist && cp README.MD dist",
|
59
59
|
"npm-publish": "npm run npm-build && npm publish ./dist",
|
60
60
|
"tsc": "tsc",
|
61
61
|
"tsc:watch": "rm -rf ./dist && mkdir dist && cp package.json dist && tsc --watch --sourceMap true",
|
package/assets/banner.png
DELETED
Binary file
|