taggedjs 2.1.1 → 2.1.2

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 (151) hide show
  1. package/js/Subject.d.ts +12 -0
  2. package/js/Subject.js +38 -0
  3. package/js/Subject.js.map +1 -0
  4. package/js/Tag.class.d.ts +45 -0
  5. package/js/Tag.class.js +213 -0
  6. package/js/Tag.class.js.map +1 -0
  7. package/js/Tag.utils.d.ts +24 -0
  8. package/js/Tag.utils.js +102 -0
  9. package/js/Tag.utils.js.map +1 -0
  10. package/js/ValueSubject.d.ts +6 -0
  11. package/js/ValueSubject.js +15 -0
  12. package/js/ValueSubject.js.map +1 -0
  13. package/js/deepFunctions.d.ts +2 -0
  14. package/js/deepFunctions.js +76 -0
  15. package/js/deepFunctions.js.map +1 -0
  16. package/js/elementInitCheck.d.ts +2 -0
  17. package/js/elementInitCheck.js +18 -0
  18. package/js/elementInitCheck.js.map +1 -0
  19. package/js/getCallback.d.ts +3 -0
  20. package/js/getCallback.js +53 -0
  21. package/js/getCallback.js.map +1 -0
  22. package/js/getTagSupport.d.ts +20 -0
  23. package/js/getTagSupport.js +20 -0
  24. package/js/getTagSupport.js.map +1 -0
  25. package/js/html.d.ts +2 -0
  26. package/js/html.js +5 -0
  27. package/js/html.js.map +1 -0
  28. package/js/index.d.ts +10 -0
  29. package/js/index.js +12 -0
  30. package/js/index.js.map +1 -0
  31. package/js/inputAttribute.d.ts +1 -0
  32. package/js/inputAttribute.js +19 -0
  33. package/js/inputAttribute.js.map +1 -0
  34. package/js/interpolateAttributes.d.ts +3 -0
  35. package/js/interpolateAttributes.js +69 -0
  36. package/js/interpolateAttributes.js.map +1 -0
  37. package/js/interpolateContentTemplates.d.ts +3 -0
  38. package/js/interpolateContentTemplates.js +47 -0
  39. package/js/interpolateContentTemplates.js.map +1 -0
  40. package/js/interpolateElement.d.ts +14 -0
  41. package/js/interpolateElement.js +35 -0
  42. package/js/interpolateElement.js.map +1 -0
  43. package/js/interpolateTemplate.d.ts +21 -0
  44. package/js/interpolateTemplate.js +262 -0
  45. package/js/interpolateTemplate.js.map +1 -0
  46. package/js/interpolations.d.ts +6 -0
  47. package/js/interpolations.js +17 -0
  48. package/js/interpolations.js.map +1 -0
  49. package/js/js/Subject.d.ts +12 -0
  50. package/js/js/Subject.js +38 -0
  51. package/js/js/Subject.js.map +1 -0
  52. package/js/js/Tag.class.d.ts +45 -0
  53. package/js/js/Tag.class.js +213 -0
  54. package/js/js/Tag.class.js.map +1 -0
  55. package/js/js/Tag.utils.d.ts +24 -0
  56. package/js/js/Tag.utils.js +102 -0
  57. package/js/js/Tag.utils.js.map +1 -0
  58. package/js/js/ValueSubject.d.ts +6 -0
  59. package/js/js/ValueSubject.js +15 -0
  60. package/js/js/ValueSubject.js.map +1 -0
  61. package/js/js/deepFunctions.d.ts +2 -0
  62. package/js/js/deepFunctions.js +76 -0
  63. package/js/js/deepFunctions.js.map +1 -0
  64. package/js/js/elementInitCheck.d.ts +2 -0
  65. package/js/js/elementInitCheck.js +18 -0
  66. package/js/js/elementInitCheck.js.map +1 -0
  67. package/js/js/getCallback.d.ts +3 -0
  68. package/js/js/getCallback.js +53 -0
  69. package/js/js/getCallback.js.map +1 -0
  70. package/js/js/getTagSupport.d.ts +20 -0
  71. package/js/js/getTagSupport.js +20 -0
  72. package/js/js/getTagSupport.js.map +1 -0
  73. package/js/js/html.d.ts +2 -0
  74. package/js/js/html.js +5 -0
  75. package/js/js/html.js.map +1 -0
  76. package/js/js/index.d.ts +10 -0
  77. package/js/js/index.js +12 -0
  78. package/js/js/index.js.map +1 -0
  79. package/js/js/inputAttribute.d.ts +1 -0
  80. package/js/js/inputAttribute.js +19 -0
  81. package/js/js/inputAttribute.js.map +1 -0
  82. package/js/js/interpolateAttributes.d.ts +3 -0
  83. package/js/js/interpolateAttributes.js +69 -0
  84. package/js/js/interpolateAttributes.js.map +1 -0
  85. package/js/js/interpolateContentTemplates.d.ts +3 -0
  86. package/js/js/interpolateContentTemplates.js +47 -0
  87. package/js/js/interpolateContentTemplates.js.map +1 -0
  88. package/js/js/interpolateElement.d.ts +14 -0
  89. package/js/js/interpolateElement.js +35 -0
  90. package/js/js/interpolateElement.js.map +1 -0
  91. package/js/js/interpolateTemplate.d.ts +21 -0
  92. package/js/js/interpolateTemplate.js +262 -0
  93. package/js/js/interpolateTemplate.js.map +1 -0
  94. package/js/js/interpolations.d.ts +6 -0
  95. package/js/js/interpolations.js +17 -0
  96. package/js/js/interpolations.js.map +1 -0
  97. package/js/js/onInit.d.ts +6 -0
  98. package/js/js/onInit.js +17 -0
  99. package/js/js/onInit.js.map +1 -0
  100. package/js/js/processTagArray.d.ts +5 -0
  101. package/js/js/processTagArray.js +49 -0
  102. package/js/js/processTagArray.js.map +1 -0
  103. package/js/js/providers.d.ts +25 -0
  104. package/js/js/providers.js +78 -0
  105. package/js/js/providers.js.map +1 -0
  106. package/js/js/render.d.ts +6 -0
  107. package/js/js/render.js +31 -0
  108. package/js/js/render.js.map +1 -0
  109. package/js/js/renderAppToElement.d.ts +8 -0
  110. package/js/js/renderAppToElement.js +38 -0
  111. package/js/js/renderAppToElement.js.map +1 -0
  112. package/js/js/state.d.ts +21 -0
  113. package/js/js/state.js +63 -0
  114. package/js/js/state.js.map +1 -0
  115. package/js/js/tag.d.ts +17 -0
  116. package/js/js/tag.js +57 -0
  117. package/js/js/tag.js.map +1 -0
  118. package/js/js/tagRunner.d.ts +17 -0
  119. package/js/js/tagRunner.js +19 -0
  120. package/js/js/tagRunner.js.map +1 -0
  121. package/js/js/wait.d.ts +1 -0
  122. package/js/js/wait.js +8 -0
  123. package/js/js/wait.js.map +1 -0
  124. package/js/onInit.d.ts +6 -0
  125. package/js/onInit.js +17 -0
  126. package/js/onInit.js.map +1 -0
  127. package/js/processTagArray.d.ts +5 -0
  128. package/js/processTagArray.js +49 -0
  129. package/js/processTagArray.js.map +1 -0
  130. package/js/providers.d.ts +25 -0
  131. package/js/providers.js +78 -0
  132. package/js/providers.js.map +1 -0
  133. package/js/render.d.ts +6 -0
  134. package/js/render.js +31 -0
  135. package/js/render.js.map +1 -0
  136. package/js/renderAppToElement.d.ts +8 -0
  137. package/js/renderAppToElement.js +38 -0
  138. package/js/renderAppToElement.js.map +1 -0
  139. package/js/state.d.ts +21 -0
  140. package/js/state.js +63 -0
  141. package/js/state.js.map +1 -0
  142. package/js/tag.d.ts +17 -0
  143. package/js/tag.js +57 -0
  144. package/js/tag.js.map +1 -0
  145. package/js/tagRunner.d.ts +17 -0
  146. package/js/tagRunner.js +19 -0
  147. package/js/tagRunner.js.map +1 -0
  148. package/js/wait.d.ts +1 -0
  149. package/js/wait.js +8 -0
  150. package/js/wait.js.map +1 -0
  151. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ export type Subscription = (() => void) & {
2
+ unsubscribe: () => any;
3
+ };
4
+ type Subscriber = () => any;
5
+ export declare class Subject {
6
+ subscribers: Subscriber[];
7
+ value?: any;
8
+ subscribe(callback: Subscriber): Subscription;
9
+ set(value: any): void;
10
+ next: (value: any) => void;
11
+ }
12
+ export {};
package/js/Subject.js ADDED
@@ -0,0 +1,38 @@
1
+ export class Subject {
2
+ subscribers = [];
3
+ value;
4
+ // unsubcount = 0 // 🔬 testing
5
+ subscribe(callback) {
6
+ this.subscribers.push(callback);
7
+ Subject.globalSubs.push(callback); // 🔬 testing
8
+ ++Subject.globalSubCount;
9
+ const unsubscribe = () => {
10
+ removeSubFromArray(this.subscribers, callback);
11
+ removeSubFromArray(Subject.globalSubs, callback); // 🔬 testing
12
+ --Subject.globalSubCount;
13
+ };
14
+ // Return a function to unsubscribe from the BehaviorSubject
15
+ unsubscribe.unsubscribe = unsubscribe;
16
+ return unsubscribe;
17
+ }
18
+ set(value) {
19
+ this.value = value;
20
+ // Notify all subscribers with the new value
21
+ this.subscribers.forEach((callback) => {
22
+ callback.value = value;
23
+ callback(value);
24
+ });
25
+ }
26
+ next = this.set;
27
+ }
28
+ function removeSubFromArray(subscribers, callback) {
29
+ const index = subscribers.indexOf(callback);
30
+ if (index !== -1) {
31
+ subscribers.splice(index, 1);
32
+ }
33
+ }
34
+ ;
35
+ Subject.globalSubCount = 0 // for ease of debugging
36
+ ;
37
+ Subject.globalSubs = []; // 🔬 testing
38
+ //# sourceMappingURL=Subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subject.js","sourceRoot":"","sources":["../ts/Subject.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,OAAO;IAClB,WAAW,GAAiB,EAAE,CAAA;IAC9B,KAAK,CAAM;IACX,+BAA+B;IAE/B,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9B;QAAC,OAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,aAAa;QAEzD,EAAG,OAAe,CAAC,cAAc,CAAA;QAEjC,MAAM,WAAW,GAAiB,GAAG,EAAE;YACrC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC9C,kBAAkB,CAAE,OAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA,CAAC,aAAa;YACvE,EAAG,OAAe,CAAC,cAAc,CAAA;QACnC,CAAC,CAAA;QAED,4DAA4D;QAC5D,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;QAErC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,KAAU;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAA;CAChB;AAED,SAAS,kBAAkB,CACzB,WAAyB,EACzB,QAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,CAAC;AAAC,OAAe,CAAC,cAAc,GAAG,CAAC,CAAC,wBAAwB;CAC5D;AAAC,OAAe,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,aAAa"}
@@ -0,0 +1,45 @@
1
+ import { TagSupport } from "./getTagSupport.js";
2
+ import { Provider } from "./providers.js";
3
+ import { Subscription } from "./Subject.js";
4
+ export declare const variablePrefix = "__tagVar";
5
+ export declare const escapeVariable: string;
6
+ export declare const escapeSearch: RegExp;
7
+ export type Context = {
8
+ [index: string]: any;
9
+ };
10
+ export declare class Tag {
11
+ strings: string[];
12
+ values: any[];
13
+ context: Context;
14
+ clones: (Element | Text | ChildNode)[];
15
+ cloneSubs: Subscription[];
16
+ children: Tag[];
17
+ tagSupport: TagSupport;
18
+ ownerTag?: Tag;
19
+ arrayValue?: any[];
20
+ constructor(strings: string[], values: any[]);
21
+ providers: Provider[];
22
+ beforeRedraw(): void;
23
+ afterRender(): void;
24
+ /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
25
+ key(arrayValue: any[]): this;
26
+ destroy(stagger?: number, byParent?: boolean): number;
27
+ destroySubscriptions(): void;
28
+ destroyClones(stagger?: number): number;
29
+ updateByTag(tag: Tag): void;
30
+ lastTemplateString: string | undefined;
31
+ /** A method of passing down the same render method */
32
+ setSupport(tagSupport: TagSupport): void;
33
+ updateConfig(strings: string[], values: any[]): void;
34
+ getTemplate(): {
35
+ string: string;
36
+ strings: string[];
37
+ values: any[];
38
+ context: Context;
39
+ };
40
+ isLikeTag(tag: Tag): boolean;
41
+ update(): Context;
42
+ updateValues(values: any[]): Context;
43
+ updateContext(context: Context): Context;
44
+ getAppElement(): Tag;
45
+ }
@@ -0,0 +1,213 @@
1
+ import { bindSubjectFunction, elementDestroyCheck, getSubjectFunction, setValueRedraw } from "./Tag.utils.js";
2
+ import { getTagSupport } from "./getTagSupport.js";
3
+ import { isTagComponent } from "./interpolateTemplate.js";
4
+ import { ValueSubject } from "./ValueSubject.js";
5
+ import { deepEqual } from "./deepFunctions.js";
6
+ import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
7
+ export const variablePrefix = '__tagVar';
8
+ export const escapeVariable = '--' + variablePrefix + '--';
9
+ const prefixSearch = new RegExp(variablePrefix, 'g');
10
+ export const escapeSearch = new RegExp(escapeVariable, 'g');
11
+ export class Tag {
12
+ strings;
13
+ values;
14
+ context = {}; // populated after reading interpolated.values array converted to an object {variable0, variable:1}
15
+ clones = []; // elements on document
16
+ cloneSubs = []; // subscriptions created by clones
17
+ children = []; // tags on me
18
+ tagSupport;
19
+ // only present when a child of a tag
20
+ ownerTag;
21
+ // present only when an array. Populated by this.key()
22
+ arrayValue;
23
+ constructor(strings, values) {
24
+ this.strings = strings;
25
+ this.values = values;
26
+ }
27
+ providers = [];
28
+ beforeRedraw() {
29
+ runBeforeRedraw(this.tagSupport, this);
30
+ }
31
+ afterRender() {
32
+ runAfterRender(this.tagSupport, this);
33
+ }
34
+ /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
35
+ key(arrayValue) {
36
+ this.arrayValue = arrayValue;
37
+ return this;
38
+ }
39
+ destroy(stagger = 0, byParent = false) {
40
+ this.children.forEach((kid, index) => kid.destroy(0, true));
41
+ this.destroySubscriptions();
42
+ if (!byParent) {
43
+ stagger = this.destroyClones(stagger);
44
+ }
45
+ return stagger;
46
+ }
47
+ destroySubscriptions() {
48
+ this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
49
+ this.cloneSubs.length = 0;
50
+ }
51
+ destroyClones(stagger = 0) {
52
+ this.clones.reverse().forEach((clone, index) => {
53
+ let promise = Promise.resolve();
54
+ if (clone.ondestroy) {
55
+ promise = elementDestroyCheck(clone, stagger);
56
+ }
57
+ promise.then(() => clone.parentNode.removeChild(clone));
58
+ });
59
+ this.clones.length = 0;
60
+ return stagger;
61
+ }
62
+ updateByTag(tag) {
63
+ this.updateConfig(tag.strings, tag.values);
64
+ this.tagSupport.templater = tag.tagSupport.templater;
65
+ }
66
+ lastTemplateString = undefined; // used to compare templates for updates
67
+ /** A method of passing down the same render method */
68
+ setSupport(tagSupport) {
69
+ this.tagSupport = this.tagSupport || tagSupport;
70
+ this.tagSupport.mutatingRender = this.tagSupport.mutatingRender || tagSupport.mutatingRender;
71
+ this.children.forEach(kid => kid.setSupport(tagSupport));
72
+ }
73
+ updateConfig(strings, values) {
74
+ this.strings = strings;
75
+ this.updateValues(values);
76
+ }
77
+ getTemplate() {
78
+ // TODO: treat interpolation hack here
79
+ const string = this.lastTemplateString = this.strings.map((string, index) => {
80
+ const safeString = string.replace(prefixSearch, escapeVariable);
81
+ const endString = safeString + (this.values.length > index ? `{${variablePrefix}${index}}` : '');
82
+ return endString;
83
+ }).join('');
84
+ return { string, strings: this.strings, values: this.values, context: this.context };
85
+ }
86
+ isLikeTag(tag) {
87
+ if (tag.lastTemplateString !== this.lastTemplateString) {
88
+ return false;
89
+ }
90
+ if (tag.values.length !== this.values.length) {
91
+ return false;
92
+ }
93
+ const allVarsMatch = tag.values.every((value, index) => {
94
+ const compareTo = this.values[index];
95
+ const isFunctions = value instanceof Function && compareTo instanceof Function;
96
+ if (isFunctions) {
97
+ const stringMatch = value.toString() === compareTo.toString();
98
+ if (stringMatch) {
99
+ return true;
100
+ }
101
+ return false;
102
+ }
103
+ if (value instanceof Tag && compareTo instanceof Tag) {
104
+ value.ownerTag = this; // let children know I own them
105
+ this.children.push(value); // record children I created
106
+ value.lastTemplateString || value.getTemplate().string; // ensure last template string is generated
107
+ if (value.isLikeTag(compareTo)) {
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ return true;
113
+ });
114
+ if (allVarsMatch) {
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ update() {
120
+ return this.updateContext(this.context);
121
+ }
122
+ updateValues(values) {
123
+ this.values = values;
124
+ return this.updateContext(this.context);
125
+ }
126
+ updateContext(context) {
127
+ this.strings.map((_string, index) => {
128
+ const variableName = variablePrefix + index;
129
+ const hasValue = this.values.length > index;
130
+ const value = this.values[index];
131
+ // is something already there?
132
+ const existing = context[variableName];
133
+ if (existing) {
134
+ /** @type {Tag | undefined} */
135
+ const ogTag = existing.value?.tag;
136
+ // handle already seen tag components
137
+ if (isTagComponent(value)) {
138
+ const latestProps = value.cloneProps;
139
+ const existingTag = existing.tag;
140
+ // previously was something else, now a tag component
141
+ if (!existing.tag) {
142
+ setValueRedraw(value, existing, this);
143
+ value.redraw(latestProps);
144
+ return;
145
+ }
146
+ const oldTagSetup = existingTag.tagSupport;
147
+ const tagSupport = value.tagSupport || oldTagSetup || getTagSupport(value);
148
+ const oldCloneProps = tagSupport.templater?.cloneProps;
149
+ const oldProps = tagSupport.templater?.props;
150
+ if (existingTag) {
151
+ const isCommonEqual = oldProps === undefined && oldProps === latestProps;
152
+ const equal = isCommonEqual || deepEqual(oldCloneProps, latestProps);
153
+ if (equal) {
154
+ return;
155
+ }
156
+ }
157
+ setValueRedraw(value, existing, this);
158
+ oldTagSetup.templater = value;
159
+ existing.value.tag = oldTagSetup.newest = value.redraw(latestProps);
160
+ return;
161
+ }
162
+ // handle already seen tags
163
+ if (ogTag) {
164
+ const tagSupport = ogTag.tagSupport;
165
+ const templater = value;
166
+ runBeforeRender(tagSupport, ogTag);
167
+ tagSupport.oldest.beforeRedraw();
168
+ const retag = templater.wrapper();
169
+ retag.tagSupport = tagSupport;
170
+ templater.newest = retag;
171
+ tagSupport.oldest.afterRender();
172
+ ogTag.updateByTag(retag);
173
+ existing.set(value);
174
+ return;
175
+ }
176
+ // now its a function
177
+ if (value instanceof Function) {
178
+ existing.set(bindSubjectFunction(value, this));
179
+ return;
180
+ }
181
+ existing.set(value); // let ValueSubject now of newest value
182
+ return;
183
+ }
184
+ // First time values below
185
+ if (isTagComponent(value)) {
186
+ const existing = context[variableName] = new ValueSubject(value);
187
+ setValueRedraw(value, existing, this);
188
+ return;
189
+ }
190
+ if (value instanceof Function) {
191
+ context[variableName] = getSubjectFunction(value, this);
192
+ return;
193
+ }
194
+ if (!hasValue) {
195
+ return; // more strings than values, stop here
196
+ }
197
+ if (value instanceof Tag) {
198
+ value.ownerTag = this;
199
+ this.children.push(value);
200
+ }
201
+ context[variableName] = new ValueSubject(value);
202
+ });
203
+ return context;
204
+ }
205
+ getAppElement() {
206
+ let tag = this;
207
+ while (tag.ownerTag) {
208
+ tag = tag.ownerTag;
209
+ }
210
+ return tag;
211
+ }
212
+ }
213
+ //# sourceMappingURL=Tag.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ValueSubject } from "./ValueSubject.js";
2
+ import { Tag } from "./Tag.class.js";
3
+ import { TemplaterResult } from "./tag.js";
4
+ export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject;
5
+ /**
6
+ * @param {*} value
7
+ * @param {Tag} tag
8
+ * @returns
9
+ */
10
+ export declare function bindSubjectFunction(value: (...args: any[]) => any, tag: Tag): {
11
+ (element: Element, args: any[]): any;
12
+ tagFunction: (...args: any[]) => any;
13
+ };
14
+ /**
15
+ *
16
+ * @param {*} templater
17
+ * @param {ExistingValue} existing
18
+ * @param {Tag} ownerTag
19
+ */
20
+ export declare function setValueRedraw(templater: TemplaterResult, // latest tag function to call for rendering
21
+ existing: any, ownerTag: Tag): void;
22
+ export declare function elementDestroyCheck(nextSibling: Element & {
23
+ ondestroy?: () => any;
24
+ }, stagger: number): any;
@@ -0,0 +1,102 @@
1
+ import { getTagSupport } from "./getTagSupport.js";
2
+ import { config as providers } from "./providers.js";
3
+ import { ValueSubject } from "./ValueSubject.js";
4
+ import { runBeforeRender } from "./tagRunner.js";
5
+ export function getSubjectFunction(value, tag) {
6
+ return new ValueSubject(bindSubjectFunction(value, tag));
7
+ }
8
+ /**
9
+ * @param {*} value
10
+ * @param {Tag} tag
11
+ * @returns
12
+ */
13
+ export function bindSubjectFunction(value, tag) {
14
+ function subjectFunction(element, args) {
15
+ const renderCount = tag.tagSupport.renderCount;
16
+ const method = value.bind(element);
17
+ const callbackResult = method(...args);
18
+ if (renderCount !== tag.tagSupport.renderCount) {
19
+ return; // already rendered
20
+ }
21
+ tag.tagSupport.render();
22
+ if (callbackResult instanceof Promise) {
23
+ callbackResult.then(() => {
24
+ tag.tagSupport.render();
25
+ });
26
+ }
27
+ return callbackResult;
28
+ }
29
+ subjectFunction.tagFunction = value;
30
+ return subjectFunction;
31
+ }
32
+ /**
33
+ *
34
+ * @param {*} templater
35
+ * @param {ExistingValue} existing
36
+ * @param {Tag} ownerTag
37
+ */
38
+ export function setValueRedraw(templater, // latest tag function to call for rendering
39
+ existing, ownerTag) {
40
+ // redraw does not communicate to parent
41
+ templater.redraw = () => {
42
+ // Find previous variables
43
+ const existingTag = existing.tag;
44
+ const tagSupport = existingTag?.tagSupport || getTagSupport(templater); // this.tagSupport
45
+ // signify to other operations that a rendering has occurred so they do not need to render again
46
+ ++tagSupport.renderCount;
47
+ existing.tagSupport = tagSupport;
48
+ // const self = this as any
49
+ const self = templater;
50
+ tagSupport.mutatingRender = tagSupport.mutatingRender || existing.tagSupport?.mutatingRender || ( /* TODO: we might be able to remove this last OR */self.tagSupport.mutatingRender);
51
+ const runtimeOwnerTag = existingTag?.ownerTag || ownerTag;
52
+ runBeforeRender(tagSupport, tagSupport.oldest);
53
+ if (tagSupport.oldest) {
54
+ tagSupport.oldest.beforeRedraw();
55
+ }
56
+ else {
57
+ providers.ownerTag = runtimeOwnerTag;
58
+ }
59
+ const retag = templater.wrapper();
60
+ retag.tagSupport = tagSupport;
61
+ if (tagSupport.oldest) {
62
+ tagSupport.oldest.afterRender();
63
+ }
64
+ else {
65
+ retag.afterRender();
66
+ }
67
+ templater.newest = retag;
68
+ retag.ownerTag = runtimeOwnerTag;
69
+ const oldest = tagSupport.oldest = tagSupport.oldest || retag;
70
+ tagSupport.newest = retag;
71
+ const oldestTagSupport = oldest.tagSupport;
72
+ oldest.tagSupport = oldestTagSupport || tagSupport;
73
+ oldest.tagSupport.templater = templater;
74
+ // retag.getTemplate() // cause lastTemplateString to render
75
+ retag.setSupport(tagSupport);
76
+ const isSameTag = existingTag && existingTag.isLikeTag(retag);
77
+ // If previously was a tag and seems to be same tag, then just update current tag with new values
78
+ if (isSameTag) {
79
+ oldest.updateByTag(retag);
80
+ return;
81
+ }
82
+ existing.set(templater);
83
+ return retag;
84
+ };
85
+ }
86
+ export function elementDestroyCheck(nextSibling, stagger) {
87
+ const onDestroyDoubleWrap = nextSibling.ondestroy; // nextSibling.getAttribute('onDestroy')
88
+ if (!onDestroyDoubleWrap) {
89
+ return;
90
+ }
91
+ const onDestroyWrap = onDestroyDoubleWrap.tagFunction;
92
+ if (!onDestroyWrap) {
93
+ return;
94
+ }
95
+ const onDestroy = onDestroyWrap.tagFunction;
96
+ if (!onDestroy) {
97
+ return;
98
+ }
99
+ const event = { target: nextSibling, stagger };
100
+ return onDestroy(event);
101
+ }
102
+ //# sourceMappingURL=Tag.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.utils.js","sourceRoot":"","sources":["../ts/Tag.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Subject } from './Subject.js';
2
+ export declare class ValueSubject extends Subject {
3
+ value: any;
4
+ constructor(initialValue: any);
5
+ subscribe(callback: any): import("./Subject.js").Subscription;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { Subject } from './Subject.js';
2
+ export class ValueSubject extends Subject {
3
+ value;
4
+ constructor(initialValue) {
5
+ super();
6
+ this.value = initialValue;
7
+ }
8
+ subscribe(callback) {
9
+ const unsubscribe = super.subscribe(callback);
10
+ // Call the callback immediately with the current value
11
+ callback(this.value);
12
+ return unsubscribe;
13
+ }
14
+ }
15
+ //# sourceMappingURL=ValueSubject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueSubject.js","sourceRoot":"","sources":["../ts/ValueSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,KAAK,CAAK;IAEV,YAAY,YAAiB;QAC3B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;IAC3B,CAAC;IAED,SAAS,CAAC,QAAa;QACrB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAE7C,uDAAuD;QACvD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEpB,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function deepClone(obj: any, visited?: WeakMap<WeakKey, any>): any;
2
+ export declare function deepEqual(obj1: any, obj2: any): boolean;
@@ -0,0 +1,76 @@
1
+ export function deepClone(obj, visited = new WeakMap()) {
2
+ // If obj is a primitive type or null, return it directly
3
+ if (obj === null || typeof obj !== 'object') {
4
+ return obj;
5
+ }
6
+ // If obj is already visited, return the cloned reference
7
+ if (visited.has(obj)) {
8
+ return visited.get(obj);
9
+ }
10
+ // Handle special cases like Date and RegExp
11
+ if (obj instanceof Date) {
12
+ return new Date(obj);
13
+ }
14
+ if (obj instanceof RegExp) {
15
+ return new RegExp(obj);
16
+ }
17
+ // Create an empty object or array with the same prototype
18
+ const clone = Array.isArray(obj) ? [] : Object.create(Object.getPrototypeOf(obj));
19
+ // Register the cloned object to avoid cyclic references
20
+ visited.set(obj, clone);
21
+ // Clone each property or element of the object or array
22
+ if (Array.isArray(obj)) {
23
+ for (let i = 0; i < obj.length; i++) {
24
+ clone[i] = deepClone(obj[i], visited);
25
+ }
26
+ }
27
+ else {
28
+ for (const key in obj) {
29
+ if (obj.hasOwnProperty(key)) {
30
+ clone[key] = deepClone(obj[key], visited);
31
+ }
32
+ }
33
+ }
34
+ return clone;
35
+ }
36
+ export function deepEqual(obj1, obj2) {
37
+ if (obj1 === obj2) {
38
+ return true;
39
+ }
40
+ if (typeof obj1 !== 'object' ||
41
+ typeof obj2 !== 'object' ||
42
+ obj1 === null ||
43
+ obj2 === null) {
44
+ return false;
45
+ }
46
+ const keys1 = Object.keys(obj1);
47
+ const keys2 = Object.keys(obj2);
48
+ if (keys1.length !== keys2.length) {
49
+ return false;
50
+ }
51
+ for (const key of keys1) {
52
+ if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
53
+ if (obj1[key] instanceof Function && obj2[key] instanceof Function && obj1[key].toString() === obj2[key].toString()) {
54
+ continue;
55
+ }
56
+ return false;
57
+ }
58
+ }
59
+ // Check if obj1 and obj2 are both arrays
60
+ if (Array.isArray(obj1) && Array.isArray(obj2)) {
61
+ if (obj1.length !== obj2.length) {
62
+ return false;
63
+ }
64
+ for (let i = 0; i < obj1.length; i++) {
65
+ if (!deepEqual(obj1[i], obj2[i])) {
66
+ return false;
67
+ }
68
+ }
69
+ }
70
+ else if (Array.isArray(obj1) || Array.isArray(obj2)) {
71
+ // One is an array, and the other is not
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+ //# sourceMappingURL=deepFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepFunctions.js","sourceRoot":"","sources":["../ts/deepFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Counts } from "./interpolateTemplate.js";
2
+ export declare function elementInitCheck(nextSibling: Element | ChildNode, counts: Counts): void;
@@ -0,0 +1,18 @@
1
+ export function elementInitCheck(nextSibling, counts) {
2
+ const onInitDoubleWrap = nextSibling.oninit;
3
+ if (!onInitDoubleWrap) {
4
+ return;
5
+ }
6
+ const onInitWrap = onInitDoubleWrap.tagFunction;
7
+ if (!onInitWrap) {
8
+ return;
9
+ }
10
+ const onInit = onInitWrap.tagFunction;
11
+ if (!onInit) {
12
+ return;
13
+ }
14
+ const event = { target: nextSibling, stagger: counts.added };
15
+ onInit(event);
16
+ ++counts.added;
17
+ }
18
+ //# sourceMappingURL=elementInitCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementInitCheck.js","sourceRoot":"","sources":["../ts/elementInitCheck.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,WAAgC,EAChC,MAAc;IAEd,MAAM,gBAAgB,GAAI,WAAmB,CAAC,MAAM,CAAA;IACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO;IACX,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO;IACX,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,EAAE,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ type Callback = <T>(...args: unknown[]) => T;
2
+ export declare let getCallback: () => (callback: Callback) => () => void;
3
+ export {};