j-templates 6.1.11 → 7.0.0

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.
Files changed (50) hide show
  1. package/DOM/createAssignment.js +4 -5
  2. package/DOM/createAttributeAssignment.d.ts +1 -0
  3. package/DOM/createAttributeAssignment.js +16 -0
  4. package/DOM/createPropertyAssignment.d.ts +1 -0
  5. package/DOM/createPropertyAssignment.js +7 -0
  6. package/DOM/domNodeConfig.js +41 -1
  7. package/DOM/elements.d.ts +80 -26
  8. package/DOM/elements.js +12 -101
  9. package/DOM/index.d.ts +0 -1
  10. package/DOM/index.js +0 -1
  11. package/DOM/svgElements.d.ts +0 -4
  12. package/DOM/svgElements.js +0 -16
  13. package/Node/component.d.ts +19 -16
  14. package/Node/component.js +25 -31
  15. package/Node/component.types.d.ts +5 -0
  16. package/Node/nodeConfig.d.ts +7 -0
  17. package/Node/vNode.d.ts +20 -0
  18. package/Node/vNode.js +296 -0
  19. package/Node/vNode.types.d.ts +45 -0
  20. package/Store/Tree/observableNode.js +1 -2
  21. package/Store/Tree/observableScope.d.ts +3 -4
  22. package/Store/Tree/observableScope.js +64 -66
  23. package/Utils/avlTree.d.ts +15 -0
  24. package/Utils/avlTree.js +139 -0
  25. package/Utils/decorators.d.ts +4 -25
  26. package/Utils/decorators.js +3 -61
  27. package/Utils/distinctArray.d.ts +10 -0
  28. package/Utils/distinctArray.js +26 -0
  29. package/Utils/emitter.d.ts +2 -0
  30. package/Utils/emitter.js +5 -0
  31. package/index.d.ts +1 -2
  32. package/package.json +1 -1
  33. package/Node/boundNode.d.ts +0 -4
  34. package/Node/boundNode.js +0 -115
  35. package/Node/boundNode.types.d.ts +0 -57
  36. package/Node/componentNode.d.ts +0 -7
  37. package/Node/componentNode.js +0 -123
  38. package/Node/componentNode.types.d.ts +0 -37
  39. package/Node/elementNode.d.ts +0 -5
  40. package/Node/elementNode.js +0 -176
  41. package/Node/elementNode.types.d.ts +0 -40
  42. package/Node/elementNode.types.js +0 -2
  43. package/Node/nodeRef.d.ts +0 -26
  44. package/Node/nodeRef.js +0 -252
  45. package/Node/nodeRef.types.d.ts +0 -21
  46. package/Node/nodeRef.types.js +0 -2
  47. package/Node/textNode.types.d.ts +0 -7
  48. package/Node/textNode.types.js +0 -2
  49. /package/Node/{boundNode.types.js → component.types.js} +0 -0
  50. /package/Node/{componentNode.types.js → vNode.types.js} +0 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AVL = void 0;
4
+ const VALUE = 0;
5
+ const BALANCE = 1;
6
+ const HEIGHT = 2;
7
+ const LEFT = 3;
8
+ const RIGHT = 4;
9
+ function Squash(x) {
10
+ return x ? x < 0 ? -1 : 1 : 0;
11
+ }
12
+ var AVL;
13
+ (function (AVL) {
14
+ function Create(compare) {
15
+ return CreateTree(compare);
16
+ }
17
+ AVL.Create = Create;
18
+ function Clear(tree) {
19
+ tree.root = null;
20
+ tree.size = 0;
21
+ }
22
+ AVL.Clear = Clear;
23
+ function Insert(tree, value) {
24
+ if (tree.size === 0) {
25
+ tree.root = CreateNode(value);
26
+ tree.size = 1;
27
+ return;
28
+ }
29
+ InsertValue(tree, value);
30
+ }
31
+ AVL.Insert = Insert;
32
+ function ForEach(tree, callback) {
33
+ InOrder(tree.root, callback);
34
+ }
35
+ AVL.ForEach = ForEach;
36
+ function ToArray(tree) {
37
+ const result = new Array(tree.size);
38
+ let index = 0;
39
+ ForEach(tree, function (value) {
40
+ result[index++] = value;
41
+ });
42
+ return result;
43
+ }
44
+ AVL.ToArray = ToArray;
45
+ })(AVL || (exports.AVL = AVL = {}));
46
+ function InOrder(node, callback) {
47
+ if (node === null)
48
+ return;
49
+ InOrder(node[LEFT], callback);
50
+ callback(node[VALUE]);
51
+ InOrder(node[RIGHT], callback);
52
+ }
53
+ function CreateTree(compare) {
54
+ return {
55
+ size: 0,
56
+ compare,
57
+ root: null,
58
+ };
59
+ }
60
+ function CreateNode(value) {
61
+ return [value, 0, 1, null, null];
62
+ }
63
+ function InsertValue(tree, value) {
64
+ const startSize = tree.size;
65
+ let node = tree.root;
66
+ const path = [];
67
+ while (node !== null) {
68
+ const comp = Squash(tree.compare(value, node[VALUE]));
69
+ path.push([comp, node]);
70
+ switch (comp) {
71
+ case 0:
72
+ node = null;
73
+ break;
74
+ case -1:
75
+ node = node[LEFT] ??= (tree.size++, CreateNode(value));
76
+ break;
77
+ case 1:
78
+ node = node[RIGHT] ??= (tree.size++, CreateNode(value));
79
+ break;
80
+ }
81
+ }
82
+ if (tree.size === startSize)
83
+ return;
84
+ for (let x = path.length - 2; x >= 0; x--) {
85
+ SetHeight(path[x][1]);
86
+ if (Math.abs(path[x][1][BALANCE]) === 2) {
87
+ const newRoot = BalanceNode(path[x][1]);
88
+ if (x === 0)
89
+ tree.root = newRoot;
90
+ else {
91
+ const [comp, parent] = path[x - 1];
92
+ switch (comp) {
93
+ case -1:
94
+ parent[LEFT] = newRoot;
95
+ break;
96
+ case 1:
97
+ parent[RIGHT] = newRoot;
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ function BalanceNode(node) {
105
+ if (node[BALANCE] < 0) {
106
+ if (node[LEFT][BALANCE] > 0)
107
+ node[LEFT] = RotateLeft(node[LEFT]);
108
+ return RotateRight(node);
109
+ }
110
+ if (node[RIGHT][BALANCE] < 0)
111
+ node[RIGHT] = RotateRight(node[RIGHT]);
112
+ return RotateLeft(node);
113
+ }
114
+ function RotateLeft(node) {
115
+ const startRightLeft = node[RIGHT][LEFT];
116
+ const root = node[RIGHT];
117
+ root[LEFT] = node;
118
+ node[RIGHT] = startRightLeft;
119
+ SetHeight(node);
120
+ SetHeight(root);
121
+ return root;
122
+ }
123
+ function RotateRight(node) {
124
+ const startLeftRight = node[LEFT][RIGHT];
125
+ const root = node[LEFT];
126
+ root[RIGHT] = node;
127
+ node[LEFT] = startLeftRight;
128
+ SetHeight(node);
129
+ SetHeight(root);
130
+ return root;
131
+ }
132
+ function SetHeight(node) {
133
+ const leftHeight = node[LEFT]?.[HEIGHT] ?? 0;
134
+ const rightHeight = node[RIGHT]?.[HEIGHT] ?? 0;
135
+ const balance = rightHeight - leftHeight;
136
+ const height = leftHeight > rightHeight ? leftHeight : rightHeight;
137
+ node[HEIGHT] = height + 1;
138
+ node[BALANCE] = balance;
139
+ }
@@ -1,34 +1,13 @@
1
- import { Component } from "../Node/component";
2
1
  import { IDestroyable } from "./utils.types";
3
- import { ElementNodeRefTypes } from "../Node/nodeRef.types";
4
- export declare function Computed<T extends Component<any, any, any>, K extends keyof T, V extends T[K]>(defaultValue: V): (target: T, propertyKey: K, descriptor: PropertyDescriptor) => PropertyDescriptor;
5
- export declare function ComputedAsync<T extends Component<any, any, any>, K extends keyof T, V extends T[K]>(defaultValue: V): (target: T, propertyKey: K, descriptor: PropertyDescriptor) => PropertyDescriptor;
2
+ export declare function Computed<T extends WeakKey, K extends keyof T, V extends T[K]>(defaultValue: V): (target: T, propertyKey: K, descriptor: PropertyDescriptor) => PropertyDescriptor;
3
+ export declare function ComputedAsync<T extends WeakKey, K extends keyof T, V extends T[K]>(defaultValue: V): (target: T, propertyKey: K, descriptor: PropertyDescriptor) => PropertyDescriptor;
6
4
  export declare function State(): any;
7
5
  export declare function Value(): any;
8
6
  export declare function Scope(): typeof ScopeDecorator;
9
- declare function ScopeDecorator<T extends Component<any, any, any>, K extends string>(target: T, propertyKey: K, descriptor: PropertyDescriptor): PropertyDescriptor;
10
- export declare function Inject<I>(type: {
11
- new (...args: Array<any>): I;
12
- }): <F extends I, T extends Component<any, any, any> & Record<K, F>, K extends string>(target: T, propertyKey: K, descriptor?: PropertyDescriptor) => any;
7
+ declare function ScopeDecorator<T, K extends string>(target: T, propertyKey: K, descriptor: PropertyDescriptor): PropertyDescriptor;
13
8
  export declare function Destroy(): typeof DestroyDecorator;
14
9
  export declare namespace Destroy {
15
10
  function All<T extends WeakKey, K>(value: T): void;
16
11
  }
17
- declare function DestroyDecorator<T extends Component<any, any, any> & Record<K, IDestroyable>, K extends string>(target: T, propertyKey: K): any;
18
- export declare function PreReqTemplate(template: {
19
- (): ElementNodeRefTypes | ElementNodeRefTypes[];
20
- }): <T extends Component<any, any, any>>(target: {
21
- new (...args: Array<any>): T;
22
- }) => any;
23
- export declare namespace PreReqTemplate {
24
- function Get(value: any): ElementNodeRefTypes[];
25
- }
26
- export declare function PreReq(): typeof PreReqDecorator;
27
- export declare namespace PreReq {
28
- function All(value: any): Promise<void[]>;
29
- function Has(value: any): boolean;
30
- }
31
- declare function PreReqDecorator<T extends Record<K, {
32
- Init: Promise<void>;
33
- }>, K extends string>(target: T, propertyKey: K): any;
12
+ declare function DestroyDecorator<T extends Record<K, IDestroyable>, K extends string>(target: T, propertyKey: K): any;
34
13
  export {};
@@ -5,10 +5,7 @@ exports.ComputedAsync = ComputedAsync;
5
5
  exports.State = State;
6
6
  exports.Value = Value;
7
7
  exports.Scope = Scope;
8
- exports.Inject = Inject;
9
8
  exports.Destroy = Destroy;
10
- exports.PreReqTemplate = PreReqTemplate;
11
- exports.PreReq = PreReq;
12
9
  const observableScope_1 = require("../Store/Tree/observableScope");
13
10
  const observableNode_1 = require("../Store/Tree/observableNode");
14
11
  const Store_1 = require("../Store");
@@ -170,21 +167,6 @@ function ScopeDecorator(target, propertyKey, descriptor) {
170
167
  },
171
168
  };
172
169
  }
173
- function Inject(type) {
174
- return InjectorDecorator.bind(null, type);
175
- }
176
- function InjectorDecorator(type, target, propertyKey, descriptor) {
177
- return {
178
- configurable: false,
179
- enumerable: true,
180
- get: function () {
181
- return this.Injector.Get(type);
182
- },
183
- set: function (val) {
184
- this.Injector.Set(type, val);
185
- },
186
- };
187
- }
188
170
  function Destroy() {
189
171
  return DestroyDecorator;
190
172
  }
@@ -192,9 +174,9 @@ function Destroy() {
192
174
  function All(value) {
193
175
  const scopeMap = scopeInstanceMap.get(value);
194
176
  if (scopeMap !== undefined) {
195
- const keys = Object.keys(scopeMap);
196
- for (let x = 0; x < keys.length; x++)
197
- observableScope_1.ObservableScope.Destroy(scopeMap[keys[x]][0]);
177
+ const values = Object.values(scopeMap);
178
+ for (let x = 0; x < values.length; x++)
179
+ observableScope_1.ObservableScope.Destroy(values[x][0]);
198
180
  }
199
181
  const array = GetDestroyArrayForPrototype(Object.getPrototypeOf(value));
200
182
  for (let x = 0; x < array.length; x++)
@@ -206,43 +188,3 @@ function DestroyDecorator(target, propertyKey) {
206
188
  const array = GetDestroyArrayForPrototype(target);
207
189
  array.push(propertyKey);
208
190
  }
209
- function PreReqTemplate(template) {
210
- return PreReqTemplateDecorator.bind(null, template);
211
- }
212
- (function (PreReqTemplate) {
213
- function Get(value) {
214
- var func = value && value.PreReqTemplateDecorator_Template;
215
- var ret = func ? func() : [];
216
- if (!Array.isArray(ret))
217
- ret = [ret];
218
- return ret;
219
- }
220
- PreReqTemplate.Get = Get;
221
- })(PreReqTemplate || (exports.PreReqTemplate = PreReqTemplate = {}));
222
- function PreReqTemplateDecorator(template, target) {
223
- var proto = target.prototype;
224
- proto.PreReqTemplateDecorator_Template = template;
225
- }
226
- function PreReq() {
227
- return PreReqDecorator;
228
- }
229
- (function (PreReq) {
230
- function Get(value) {
231
- return (value && value.PreReqDecorator_PreReqs) || [];
232
- }
233
- function All(value) {
234
- var arr = Get(value).map((prop) => (value[prop] && value[prop].Init) ||
235
- Promise.resolve());
236
- return Promise.all(arr);
237
- }
238
- PreReq.All = All;
239
- function Has(value) {
240
- return Get(value).length > 0;
241
- }
242
- PreReq.Has = Has;
243
- })(PreReq || (exports.PreReq = PreReq = {}));
244
- function PreReqDecorator(target, propertyKey) {
245
- var proto = target;
246
- proto.PreReqDecorator_PreReqs = proto.PreReqDecorator_PreReqs || [];
247
- proto.PreReqDecorator_PreReqs.push(propertyKey);
248
- }
@@ -0,0 +1,10 @@
1
+ export type DistinctArray<T> = {
2
+ id: (value: T) => number;
3
+ distinct: boolean[];
4
+ array: T[];
5
+ };
6
+ export declare namespace DistinctArray {
7
+ function Create<T>(id: (value: T) => number): DistinctArray<T>;
8
+ function Push<T>({ id, distinct, array }: DistinctArray<T>, value: T): void;
9
+ function Get<T>({ array }: DistinctArray<T>): T[];
10
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DistinctArray = void 0;
4
+ var DistinctArray;
5
+ (function (DistinctArray) {
6
+ function Create(id) {
7
+ return {
8
+ id,
9
+ distinct: [],
10
+ array: []
11
+ };
12
+ }
13
+ DistinctArray.Create = Create;
14
+ function Push({ id, distinct, array }, value) {
15
+ const vId = id(value);
16
+ if (!distinct[vId]) {
17
+ distinct[vId] = true;
18
+ array.push(value);
19
+ }
20
+ }
21
+ DistinctArray.Push = Push;
22
+ function Get({ array }) {
23
+ return array;
24
+ }
25
+ DistinctArray.Get = Get;
26
+ })(DistinctArray || (exports.DistinctArray = DistinctArray = {}));
@@ -2,9 +2,11 @@ export type EmitterCallback<T extends readonly any[] = any[]> = (...args: T) =>
2
2
  export type Emitter = [number, ...EmitterCallback[]];
3
3
  export declare namespace Emitter {
4
4
  function Create(): Emitter;
5
+ function GetId(emitter: Emitter): number;
5
6
  function On(emitter: Emitter, callback: EmitterCallback): void;
6
7
  function Emit(emitter: Emitter, ...args: any[]): void;
7
8
  function Remove(emitter: Emitter, callback: EmitterCallback): void;
8
9
  function Clear(emitter: Emitter): void;
9
10
  function Sort(emitters: Emitter[]): Emitter[];
11
+ function Compare(a: Emitter, b: Emitter): number;
10
12
  }
package/Utils/emitter.js CHANGED
@@ -10,6 +10,10 @@ var Emitter;
10
10
  return emitter;
11
11
  }
12
12
  Emitter.Create = Create;
13
+ function GetId(emitter) {
14
+ return emitter[0];
15
+ }
16
+ Emitter.GetId = GetId;
13
17
  function On(emitter, callback) {
14
18
  emitter.push(callback);
15
19
  }
@@ -43,4 +47,5 @@ var Emitter;
43
47
  function Compare(a, b) {
44
48
  return a[0] - b[0];
45
49
  }
50
+ Emitter.Compare = Compare;
46
51
  })(Emitter || (exports.Emitter = Emitter = {}));
package/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export { AllNodeRefTypes as NodeRefTypes } from "./Node/nodeRef.types";
2
- export { Component } from "./Node/component";
1
+ export { Component } from './Node/component';
3
2
  export { CalcScope as calc } from './Store/Tree/observableScope';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "j-templates",
3
- "version": "6.1.11",
3
+ "version": "7.0.0",
4
4
  "description": "j-templates",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/TypesInCode/jTemplates",
@@ -1,4 +0,0 @@
1
- import { IBoundNodeBase } from "./boundNode.types";
2
- export declare namespace BoundNode {
3
- function Init(boundNode: IBoundNodeBase): void;
4
- }
package/Node/boundNode.js DELETED
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BoundNode = void 0;
4
- const nodeConfig_1 = require("./nodeConfig");
5
- const observableScope_1 = require("../Store/Tree/observableScope");
6
- var BoundNode;
7
- (function (BoundNode) {
8
- function WrapEventObject(node, events) {
9
- const keys = Object.keys(events);
10
- const ret = {};
11
- for (let x = 0; x < keys.length; x++) {
12
- const event = keys[x];
13
- const eventFunc = events[event];
14
- ret[event] = function (event) {
15
- if (node.destroyed)
16
- return;
17
- return eventFunc(event);
18
- };
19
- }
20
- return ret;
21
- }
22
- function Init(boundNode) {
23
- const nodeDef = boundNode.nodeDef;
24
- if (nodeDef.props) {
25
- boundNode.assignProperties = nodeConfig_1.NodeConfig.createPropertyAssignment(boundNode.node);
26
- if (typeof nodeDef.props === 'function') {
27
- const scope = observableScope_1.ObservableScope.Create(nodeDef.props);
28
- boundNode.scopes ??= [];
29
- boundNode.scopes.push(scope);
30
- observableScope_1.ObservableScope.Watch(scope, function (scope) { ScheduleSetProperties(boundNode, scope); });
31
- const next = observableScope_1.ObservableScope.Value(scope);
32
- boundNode.assignProperties(next);
33
- }
34
- else {
35
- boundNode.assignProperties(nodeDef.props);
36
- boundNode.assignProperties = null;
37
- }
38
- }
39
- if (nodeDef.attrs) {
40
- if (typeof nodeDef.attrs === 'function') {
41
- const scope = observableScope_1.ObservableScope.Create(nodeDef.attrs);
42
- boundNode.scopes ??= [];
43
- boundNode.scopes.push(scope);
44
- observableScope_1.ObservableScope.Watch(scope, function (scope) { ScheduleSetAttributes(boundNode, scope); });
45
- SetAttributes(boundNode, observableScope_1.ObservableScope.Value(scope));
46
- }
47
- else
48
- SetAttributes(boundNode, nodeDef.attrs);
49
- }
50
- if (nodeDef.on) {
51
- boundNode.assignEvents = nodeConfig_1.NodeConfig.createEventAssignment(boundNode.node);
52
- if (typeof nodeDef.on === 'function') {
53
- const scope = observableScope_1.ObservableScope.Create(nodeDef.on);
54
- const eventScope = observableScope_1.ObservableScope.Create(function () {
55
- const events = observableScope_1.ObservableScope.Value(scope);
56
- return WrapEventObject(boundNode, events);
57
- });
58
- boundNode.scopes ??= [];
59
- boundNode.scopes.push(scope, eventScope);
60
- observableScope_1.ObservableScope.Watch(eventScope, function (scope) { ScheduleSetEvents(boundNode, scope); });
61
- const next = observableScope_1.ObservableScope.Value(eventScope);
62
- boundNode.assignEvents(next);
63
- }
64
- else {
65
- boundNode.assignEvents(WrapEventObject(boundNode, nodeDef.on));
66
- boundNode.assignEvents = null;
67
- }
68
- }
69
- }
70
- BoundNode.Init = Init;
71
- })(BoundNode || (exports.BoundNode = BoundNode = {}));
72
- function ScheduleSetProperties(node, scope) {
73
- if (node.setProperties)
74
- return;
75
- node.setProperties = true;
76
- nodeConfig_1.NodeConfig.scheduleUpdate(function () {
77
- node.setProperties = false;
78
- if (node.destroyed)
79
- return;
80
- const next = observableScope_1.ObservableScope.Value(scope);
81
- node.assignProperties(next || null);
82
- });
83
- }
84
- function ScheduleSetAttributes(node, scope) {
85
- if (node.setAttributes)
86
- return;
87
- node.setAttributes = true;
88
- nodeConfig_1.NodeConfig.scheduleUpdate(function () {
89
- node.setAttributes = false;
90
- if (node.destroyed)
91
- return;
92
- SetAttributes(node, observableScope_1.ObservableScope.Value(scope));
93
- });
94
- }
95
- function SetAttributes(node, attributes) {
96
- if (!attributes)
97
- return;
98
- for (var key in attributes) {
99
- var val = nodeConfig_1.NodeConfig.getAttribute(node.node, key);
100
- if (val !== attributes[key])
101
- nodeConfig_1.NodeConfig.setAttribute(node.node, key, attributes[key]);
102
- }
103
- }
104
- function ScheduleSetEvents(node, scope) {
105
- if (node.setEvents)
106
- return;
107
- node.setEvents = true;
108
- nodeConfig_1.NodeConfig.scheduleUpdate(function () {
109
- node.setEvents = false;
110
- if (node.destroyed)
111
- return;
112
- const next = observableScope_1.ObservableScope.Value(scope);
113
- node.assignEvents(next);
114
- });
115
- }
@@ -1,57 +0,0 @@
1
- import { IObservableScope } from "../Store/Tree/observableScope";
2
- import { RecursivePartial } from "../Utils/utils.types";
3
- import { NodeRefType } from "./nodeRef";
4
- import { AllNodeRefTypes, INodeRefBase } from "./nodeRef.types";
5
- export type FunctionOr<T> = {
6
- (...args: Array<any>): T | Promise<T>;
7
- } | T;
8
- export type NodeRefEvents<E extends {
9
- [event: string]: any;
10
- } = any> = {
11
- [P in keyof E]?: {
12
- (events: E[P]): void;
13
- };
14
- };
15
- export interface NodeDefinition<T = any, E = any> {
16
- type: any;
17
- namespace: string;
18
- props?: FunctionOr<{
19
- [name: string]: unknown;
20
- }>;
21
- attrs?: FunctionOr<{
22
- [name: string]: string;
23
- }>;
24
- on?: FunctionOr<NodeRefEvents<E>>;
25
- text?: FunctionOr<string>;
26
- }
27
- export interface BoundNodeFunctionParam<P = HTMLElement, E = HTMLElementEventMap> {
28
- props?: FunctionOr<RecursivePartial<P>>;
29
- attrs?: FunctionOr<{
30
- [name: string]: string;
31
- }>;
32
- on?: FunctionOr<NodeRefEvents<E>>;
33
- text?: FunctionOr<string>;
34
- }
35
- export interface IBoundNodeBase extends INodeRefBase {
36
- nodeDef: BoundNodeFunctionParam;
37
- scopes: IObservableScope<unknown>[];
38
- setProperties: boolean;
39
- assignProperties: {
40
- (next: any): void;
41
- };
42
- assignEvents: {
43
- (next: {
44
- [event: string]: (event: Event) => void;
45
- }): void;
46
- };
47
- assignText: {
48
- (next: string): void;
49
- };
50
- setAttributes: boolean;
51
- setEvents: boolean;
52
- setText: boolean;
53
- }
54
- export interface IBoundNode extends IBoundNodeBase {
55
- type: NodeRefType.BoundNode;
56
- childNodes: AllNodeRefTypes[];
57
- }
@@ -1,7 +0,0 @@
1
- import { ComponentConstructor } from "./component";
2
- import { ComponentNodeFunction, IComponentNodeBase } from "./componentNode.types";
3
- export declare namespace ComponentNode {
4
- function Fire<E, P extends keyof E>(event: P, data?: E[P]): void;
5
- function ToFunction<D = void, T = void, E = void>(type: any, namespace: string, constructor: ComponentConstructor<D, T, E>): ComponentNodeFunction<D, T, E>;
6
- function Init(componentNode: IComponentNodeBase<any, any, any>): void;
7
- }
@@ -1,123 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ComponentNode = void 0;
4
- const boundNode_1 = require("./boundNode");
5
- const nodeRef_1 = require("./nodeRef");
6
- const nodeConfig_1 = require("./nodeConfig");
7
- const component_1 = require("./component");
8
- const injector_1 = require("../Utils/injector");
9
- const decorators_1 = require("../Utils/decorators");
10
- const thread_1 = require("../Utils/thread");
11
- const list_1 = require("../Utils/list");
12
- var ComponentNode;
13
- (function (ComponentNode) {
14
- function Fire(event, data) {
15
- var eventCallback = this.componentEvents && this.componentEvents[event];
16
- eventCallback && eventCallback(data);
17
- }
18
- ComponentNode.Fire = Fire;
19
- function ToFunction(type, namespace, constructor) {
20
- return function (nodeDef, templates) {
21
- return Create(type, namespace, nodeDef, constructor, templates);
22
- };
23
- }
24
- ComponentNode.ToFunction = ToFunction;
25
- function Init(componentNode) {
26
- var nodeDef = componentNode.nodeDef;
27
- var events = nodeDef.on;
28
- nodeDef.on = null;
29
- componentNode.component = new componentNode.constructor(nodeDef.data, componentNode.templates, componentNode, events);
30
- SetChildren(componentNode);
31
- boundNode_1.BoundNode.Init(componentNode);
32
- }
33
- ComponentNode.Init = Init;
34
- })(ComponentNode || (exports.ComponentNode = ComponentNode = {}));
35
- function Create(type, namespace, nodeDef, constructor, templates) {
36
- var compNode = nodeRef_1.NodeRef.Create(type, namespace, nodeRef_1.NodeRefType.ComponentNode);
37
- compNode.nodeDef = nodeDef;
38
- compNode.constructor = constructor;
39
- compNode.templates = templates;
40
- return compNode;
41
- }
42
- function SetChildren(node) {
43
- if (decorators_1.PreReq.Has(node.component)) {
44
- AddPreReqTemplate(node).then(function () {
45
- AddTemplate(node, false);
46
- });
47
- }
48
- else
49
- AddTemplate(node, true);
50
- }
51
- function AddPreReqTemplate(node) {
52
- return new Promise(resolve => {
53
- (0, thread_1.Thread)(function () {
54
- const preNodes = injector_1.Injector.Scope(node.injector, decorators_1.PreReqTemplate.Get, node.component);
55
- (0, thread_1.Schedule)(function () {
56
- if (node.destroyed)
57
- return;
58
- nodeRef_1.NodeRef.InitAll(node, preNodes);
59
- });
60
- (0, thread_1.Thread)(function () {
61
- if (node.destroyed)
62
- return;
63
- for (var x = 0; x < preNodes.length; x++)
64
- nodeRef_1.NodeRef.AddChild(node, preNodes[x]);
65
- decorators_1.PreReq.All(node.component).then(function () {
66
- if (node.destroyed)
67
- return;
68
- for (var x = 0; x < preNodes.length; x++)
69
- nodeRef_1.NodeRef.Destroy(preNodes[x]);
70
- nodeConfig_1.NodeConfig.scheduleUpdate(function () {
71
- if (node.destroyed)
72
- return;
73
- for (var x = 0; x < preNodes.length; x++)
74
- nodeRef_1.NodeRef.DetachChild(node, preNodes[x]);
75
- resolve();
76
- });
77
- });
78
- });
79
- });
80
- });
81
- }
82
- function InvokeNodeTemplate(node) {
83
- const nodes = node.component.Template();
84
- if (!Array.isArray(nodes))
85
- return [nodes];
86
- return nodes;
87
- }
88
- function AddTemplate(node, init) {
89
- (0, thread_1.Thread)(function () {
90
- if (node.destroyed)
91
- return;
92
- const nodes = injector_1.Injector.Scope(node.injector, InvokeNodeTemplate, node);
93
- (0, thread_1.Schedule)(function () {
94
- nodeRef_1.NodeRef.InitAll(node, nodes);
95
- });
96
- (0, thread_1.Thread)(function () {
97
- if (node.destroyed)
98
- return;
99
- const list = list_1.List.Create();
100
- list_1.List.Add(list, {
101
- value: undefined,
102
- init: true,
103
- scope: null,
104
- nodes
105
- });
106
- if (init) {
107
- nodeRef_1.NodeRef.ReconcileChildren(node, list);
108
- list_1.List.Clear(list);
109
- }
110
- else
111
- nodeConfig_1.NodeConfig.scheduleUpdate(function () {
112
- if (node.destroyed)
113
- return;
114
- nodeRef_1.NodeRef.ReconcileChildren(node, list);
115
- list_1.List.Clear(list);
116
- });
117
- });
118
- if (node.component.Bound !== component_1.Component.prototype.Bound)
119
- (0, thread_1.After)(function () {
120
- nodeConfig_1.NodeConfig.scheduleUpdate(() => setTimeout(() => node.component.Bound(), 0));
121
- });
122
- });
123
- }