dom-render 1.0.44 → 1.0.48

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 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
  };
@@ -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: any): void;
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
@@ -1,7 +1,8 @@
1
1
  import { RawSet } from './RawSet';
2
2
  import { eventManager } from './events/EventManager';
3
3
  import { ScriptUtils } from './utils/script/ScriptUtils';
4
- import { Shield } from './Shield';
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
- var iterable = this._rawSets.get(fullPathStr_1);
103
- var front = strings.slice(0, strings.length - 1).join('.');
104
- var last = strings[strings.length - 1];
105
- if (!isNaN(Number(last)) && Array.isArray(ScriptUtils.evalReturn('this.' + front, this._domRender_proxy))) {
106
- var aIterable = this._rawSets.get(front);
107
- if (aIterable) {
108
- this.render(Array.from(aIterable));
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
- else if (iterable) {
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
- return it_1._DomRender_origin;
159
+ it_1 = it_1._DomRender_origin;
146
160
  }
147
- else {
148
- return it_1;
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
@@ -1,117 +1,280 @@
1
- dom-render
2
- ===
3
- ## view template engine
4
- ### Dom control and reorder using web component
1
+ ![Single Page Application Framworks](assets/banner.png)
2
+ [![npm version](https://img.shields.io/badge/npm-v1.0.44-blue)](https://www.npmjs.com/package/dom-render) [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE.md) [![Chat](https://img.shields.io/badge/discord-20%20online-brightgreen?logo=discord)](https://discord.gg/PW56dpns) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/dom-render)
3
+ # Our primary goals are
4
+ - view template engine
5
+ - Dom control and reorder
6
+ - all internal variables are managed by proxy. (DomRenderProxy)
7
+ ---
8
+
9
+ # 🚀 Quick start
5
10
  ```shell
6
11
  npm install dom-render
7
12
  ````
13
+ ---
14
+ # 😃 examples
15
+ - [examples project](./example)
16
+ ---
17
+
18
+ # 📄 Code description
19
+ ## initialized
8
20
  ```html
9
- <!doctype html>
10
- <html lang="en">
11
- <head>
12
- <meta charset="utf-8">
13
- <meta name="viewport" content="width=device-width, initial-scale=1">
14
- <meta name="description" content="">
15
- <title>dom-render</title>
16
- </head>
17
- <body id="app">
18
- <h1>template</h1>
19
- <h2>print</h2>
20
- <div>${this.name}</div>
21
- <div>${this.office.addr.first}, ${this.office.addr.last}, ${this.office.addr.street} (${this.office.name})</div>
22
- <div dr="this.office.addr.street">${this.getOfficeFullAddr()}</div>
23
-
24
- <h2>df-if</h2>
25
- <div dr-if="true"> true</div>
26
- <div dr-if="this.gender==='M'"> gender: M</div>
27
-
28
- <h2>df-for, of</h2>
29
- <div dr-for="var i = 0; i < this.friends.length; i++"> friend</div>
30
- <div dr-for-of="this.friends"> ${#it#.name}</div>
31
- <div dr-for="var i = 1 ; i <= 9 ; i++" dr-it="i">
32
- ${#it#} *
33
- <scope dr-for="var y = 1 ; y <= 9 ; y++" dr-it="y" dr-var="superIt=#it#" dr-strip="true">
34
- #it# = ${var.superIt * #it#}
35
- </scope>
36
- </div>
37
-
38
- <h2>df-inner-text</h2>
39
- <div dr-strip="true" dr-inner-text="'<b>aa</b> <button dr-event-click=\'alert(1)\'>aa</button>'" > friend</div>
40
-
41
- <h2>df-inner-html</h2>
42
- <div dr-strip="true" dr-inner-html="'<b>aa</b> <button dr-event-click=\'alert(1)\'>aa</button>'" > friend</div>
43
-
44
- <h1>event</h1>
45
- <h2>dr-event, click, change, input, keyup, keydown</h2>
46
- <div>
47
- click: <button dr-event-click="this.name = 'name' + new Date()">click</button> <br>
48
- change: <input type="text" dr-event-change="this.name = $target.value"> <br>
49
- input: <input type="text" dr-event-input="this.name = $target.value"> <br>
50
- keyup: <input type="text" dr-event-keyup="this.name = $target.value"> <br>
51
- keydown: <input type="text" dr-event-keydown="this.name = $target.value"><br>
52
- submit: <form dr-event-submit="console.log($event); $event.preventDefault();"><input type="text"> <button type="submit">submit</button></form><br>
53
- window-event-popstate: <input type="text" dr-window-event-popstate="alert(this.name)"><br>
54
- </div>
55
-
56
- <h2>dr-value, value-link</h2>
57
- <div>
58
- dr-value: <input type="text" dr-value="this.office.name"> <br>
59
- dr-value-link: <input type="text" dr-value-link="this.office.addr.street"> <br>
60
- </div>
61
-
62
- <h1>attribute</h1>
63
- <h2>dr-attr</h2>
64
- <textarea dr-attr="{rows: this.age/2, cols: this.age}"></textarea>
65
- <h2>dr-style</h2>
66
- <div dr-style="{fontSize: this.age+'px'}"> style </div>
67
- <button dr-event-click="this.age = Math.floor(Math.random() * 20)"> change age</button>
68
-
69
- <h1>lifeCycle</h1>
70
- <h2>dr-on-init</h2>
71
- <div>
72
- <input dr-on-init="this.onInitElement" value="init-test-value">
73
- </div>
74
- <script src="./src/index.ts"></script>
75
- </body>
76
- </html>
21
+ <!doctype html><html lang="en"><body id="app"></body></html>
77
22
  ```
78
23
  ```typescript
79
- class User {
80
- name: string;
81
- age: number;
82
- gender: string;
83
- friends: User[];
84
- office = {
85
- name: 'guro',
86
- addr: {
87
- first: 'guro',
88
- last: ' digital',
89
- street: ' complex'
90
- }
91
- }
24
+ const target = document.querySelector('#app');
25
+ const data = DomRender.run({name: 'my name is dom-render'}, target);
26
+ data.name = 'modify name';
27
+ ```
28
+ ## print and call
29
+ ```html
30
+ <div>${this.name}</div>
31
+ <div>${this.office.addr.first}, ${this.office.addr.last}, ${this.office.addr.street} (${this.office.name})</div>
32
+ <div dr="this.office.addr.street">${this.getOfficeFullAddr()}</div>
33
+ ```
34
+ ## dr-if
35
+ ```html
36
+ <div dr-if="true">true</div>
37
+ <div dr-if="this.gender==='M'"> gender: M</div>
38
+ ```
39
+ ## dr-for, dr-for-of
40
+ ```html
41
+ <div dr-for="var i = 0; i < this.friends.length; i++"> friend</div>
42
+ <div dr-for-of="this.friends"> ${#it#.name}</div>
43
+ <div dr-for="var i = 1 ; i <= 9 ; i++" dr-it="i">
44
+ ${#it#} *
45
+ <scope dr-for="var y = 1 ; y <= 9 ; y++" dr-it="y" dr-var="superIt=#it#" dr-strip="true">
46
+ #it# = ${var.superIt * #it#}
47
+ </scope>
48
+ </div>
49
+ ```
92
50
 
93
- constructor(name: string, age: number, gender: string, friends: User[] = []) {
94
- this.name = name;
95
- this.age = age;
96
- this.gender = gender;
97
- this.friends = friends;
98
- }
51
+ ## dr-inner-text, dr-inner-html
52
+ ```html
53
+ <div dr-inner-text="'<b>aa</b> <button dr-event-click=\'alert(1)\'>aa</button>'"> friend</div>
54
+ <div dr-inner-html="'<b>aa</b> <button dr-event-click=\'alert(1)\'>aa</button>'"> friend</div>
55
+ ```
56
+
57
+ ## event
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">
85
+ ```
86
+
87
+ ## dr-value, value-link
88
+ ```html
89
+ dr-value: <input type="text" dr-value="this.office.name"> <br>
90
+ dr-value-link: <input type="text" dr-value-link="this.office.addr.street"> <br>
91
+ ```
92
+
93
+ ## dr-attr
94
+ ```html
95
+ <textarea dr-attr="{rows: this.age/2, cols: this.age}"></textarea>
96
+ ```
97
+
98
+ ## dr-class
99
+ ```html
100
+ <div dr-class="{big: this.age > 50, red: this.age > 50}">
101
+ <div dr-class="'big yellow ' + (this.age > 50 ? 'old' : 'young')">
102
+ <div dr-class="['small', 'yellow']">
103
+ ```
104
+
105
+ ## dr-style
106
+ ```html
107
+ <div dr-style="{fontSize: this.age + 'px'}"> style </div>
108
+ <div dr-style="{'font-size': '20px'}"> style</div>
109
+ <div dr-style="'font-size: ' + this.age +'px; margin: ' + this.age + 'px'"> style </div>
110
+ <div dr-style="['font-size: ' + this.age +'px', 'margin: ' + this.age + 'px']"> style </div>
111
+ ```
112
+
113
+
114
+ ## dr-strip
115
+ as-is
116
+ ```html
117
+ <div dr-strip="true"><span>hello</span></div>
118
+ ```
119
+ to-be
120
+ ```html
121
+ <span>hello</span>
122
+ ```
123
+
124
+ ## dr-on-init
125
+ ```html
126
+ <input dr-on-init="this.onInitElement">
127
+ ```
99
128
 
100
- onInitElement(e: HTMLInputElement) {
101
- console.log('inputElement onInit', e.value)
129
+ ## dr-before, dr-after
130
+ ```html
131
+ <div dr-before="console.log('process before')" dr-after="console.log('process after')"></div>
132
+ ```
133
+ ## dr-complete
134
+ ```html
135
+ <select dr-value-link="this.currentContry" dr-event-change="this.contryChange($event)">
136
+ <option dr-for-of="this.languages" dr-value="#it#.key" dr-complete="this.currentContry='defaultValue'">${#it#.title}</option>
137
+ </select>
138
+ ```
139
+
140
+ ---
141
+ # LifeCycle
142
+ ```
143
+ * OnInitRender
144
+ - onInitRender(): init render call
145
+ ```
146
+ ---
147
+
148
+ # Script
149
+ ```typescript
150
+ new DomRender.run(obj, target, {
151
+ scripts: {
152
+ concat: function (head: string, tail: string) {
153
+ return head + tail;
102
154
  }
155
+ }
156
+ });
157
+ ```
158
+ using script
159
+ ```typescript
160
+ const data = config.scripts.concat('head', 'tail')
161
+ ```
162
+ ```html
163
+ <div>${$scripts.concat('head', 'tail')}</div>
164
+ <div dr-if="$scripts.concat('wow', 'good') === 'wowgood'"> is wowgood</div>
165
+ ```
103
166
 
104
- getOfficeFullAddr() {
105
- return `${this.office.addr.first}, ${this.office.addr.last}, ${this.office.addr.street} (${this.office.name})`
167
+ ---
168
+ # Component
169
+ ```typescript
170
+ export namespace Profile {
171
+ export const templat = '<div>aaaaa${this.name}aaaaa </div>';
172
+ export const styles = ['p {color: red}', 'div {margin: ${this.margin} + \'px\' }'];
173
+ export class Component {
174
+ public name = 'default name';
175
+ public margin = 5;
176
+ public say() {
177
+ console.log('say!~')
106
178
  }
179
+ }
180
+ }
181
+
182
+ new DomRender.run(obj, target, {
183
+ targetElements: [
184
+ RawSet.createComponentTargetElement('my-element', (e, o, r) => new Profile.Component(), Profile.templat, Profile.styles, scripts)
185
+ ],
186
+ });
187
+ ```
188
+ using component
189
+ ```html
190
+ <my-element dr-on-init="$component.say();"></my-element>
191
+ ```
192
+ - attribute
193
+ - dr-on-init: component created init call script
194
+ - $component: component instance
195
+ - $element: element instance
196
+ - $attribute: element attribute object
197
+ - $innerHTML: element innerHTML string
198
+ ---
107
199
 
108
- sayName() {
109
- console.log(this.name)
200
+ # Detect Get, Set
201
+ OnBeforeReturnSet
202
+ ```typescript
203
+ export interface OnBeforeReturnSet {
204
+ onBeforeReturnSet(name: string, value: any, fullPath?: string[]): void;
205
+ }
206
+ ```
207
+ OnBeforeReturnGet
208
+ ```typescript
209
+ export interface OnBeforeReturnGet {
210
+ onBeforeReturnGet(name: string, value: any, fullPath?: string[]): void;
211
+ }
212
+ ```
213
+
214
+ using detect
215
+ ```typescript
216
+ {
217
+ name: 'dom-render'
218
+ onBeforeReturnSet: (name: string, value: any, fullpath: string[]) => {
219
+ console.log('set name-->', name, value, fullpath);
220
+ }
221
+ onBeforeReturnGet: (name: string, value: any, fullpath: string[]) => {
222
+ console.log('get name-->', name, value, fullpath);
110
223
  }
111
224
  }
112
- const friends = [new User('friend1', 15, 'M'), new User('friend2', 16, 'F')]
113
- const target = document.querySelector('#app');
114
- if (target) {
115
- const user = DomRender.run(new User('parent', 10, 'M', friends), target);
225
+ ```
226
+ exclude detect property: Config
227
+ - proxyExcludeOnBeforeReturnGets: ['propertyName']
228
+ - proxyExcludeOnBeforeReturnSets: ['propertyName']
229
+ ---
230
+
231
+ # Proxy
232
+ all internal variables are managed by proxy. (DomRenderProxy)
233
+ ### exclude proxy (situation: Maximum call stack error)
234
+ exclude detect property: Config
235
+ - proxyExcludeTyps: [Class...]
236
+
237
+ Code base
238
+ ```typescript
239
+ // frezz
240
+ {name : Object.freeze({...})}
241
+
242
+ // Shield Object type: {[k: string]: any}
243
+ {name : new Shield()}
244
+
245
+ // DomRenderProxy Final
246
+ {name : DomRenderProxy.final({...})}
247
+ ```
248
+ ---
249
+ # Config
250
+ ```typescript
251
+ export type TargetElement = {
252
+ _name: string,
253
+ template?: string,
254
+ styles?: string[],
255
+ callBack: (target: Element, obj: any, rawSet: RawSet) => DocumentFragment,
256
+ complete?: (target: Element, obj: any, rawSet: RawSet) => void
257
+ };
258
+
259
+ export type TargetAttr = {
260
+ name: string,
261
+ callBack: (target: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment,
262
+ complete?: (target: Element, attrValue: string, obj: any, rawSet: RawSet) => void
263
+ };
264
+
265
+ export interface Config {
266
+ targetElements?: TargetElement[];
267
+ targetAttrs?: TargetAttr[];
268
+ onElementInit?: (name: string, obj: any, rawSet: RawSet) => void;
269
+ onAttrInit?: (name: string, attrValue: string, obj: any, rawSet: RawSet) => void;
270
+ proxyExcludeTyps?: ConstructorType<any>[];
271
+ proxyExcludeOnBeforeReturnSets?: string[];
272
+ proxyExcludeOnBeforeReturnGets?: string[];
273
+ scripts?: { [n: string]: any };
274
+ applyEvents?: { attrName: string, callBack: (elements: Element, attrValue: string, obj: any) => void }[];
116
275
  }
117
276
  ```
277
+ ----
278
+ # License
279
+ * MIT
280
+ * visualkhh@gmail.com
package/RawSet.js CHANGED
@@ -462,6 +462,7 @@ var RawSet = (function () {
462
462
  styles: styles,
463
463
  template: template,
464
464
  callBack: function (element, obj, rawSet) {
465
+ var _a;
465
466
  if (!obj.__domrender_components) {
466
467
  obj.__domrender_components = {};
467
468
  }
@@ -489,7 +490,8 @@ var RawSet = (function () {
489
490
  }));
490
491
  }
491
492
  var fag = document.createDocumentFragment();
492
- element.innerHTML = template;
493
+ var innerHTML = ((_a = styles === null || styles === void 0 ? void 0 : styles.map(function (it) { return "<style>" + it + "</style>"; })) !== null && _a !== void 0 ? _a : []).join(' ') + (template !== null && template !== void 0 ? template : '');
494
+ element.innerHTML = innerHTML;
493
495
  fag.append(RawSet.drThisCreate(element, "this.__domrender_components." + componentKey, '', true, obj));
494
496
  return fag;
495
497
  }
Binary file
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
  };
@@ -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: any): void;
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;