taggedjs 2.4.2 → 2.4.12

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 (186) hide show
  1. package/bundle.js +3612 -0
  2. package/bundle.js.map +1 -0
  3. package/index.js +1 -1
  4. package/js/Subject.d.ts +3 -4
  5. package/js/Subject.js +4 -4
  6. package/js/Subject.js.map +1 -1
  7. package/js/Tag.class.d.ts +25 -17
  8. package/js/Tag.class.js +208 -78
  9. package/js/Tag.class.js.map +1 -1
  10. package/js/Tag.utils.d.ts +13 -13
  11. package/js/Tag.utils.js +2 -18
  12. package/js/Tag.utils.js.map +1 -1
  13. package/js/TagSupport.class.d.ts +15 -14
  14. package/js/TagSupport.class.js +24 -46
  15. package/js/TagSupport.class.js.map +1 -1
  16. package/js/TemplaterResult.class.d.ts +36 -0
  17. package/js/TemplaterResult.class.js +73 -0
  18. package/js/TemplaterResult.class.js.map +1 -0
  19. package/js/ValueSubject.d.ts +4 -2
  20. package/js/ValueSubject.js +1 -1
  21. package/js/ValueSubject.js.map +1 -1
  22. package/js/alterProps.function.d.ts +4 -0
  23. package/js/alterProps.function.js +45 -0
  24. package/js/alterProps.function.js.map +1 -0
  25. package/js/bindSubjectCallback.function 9.27.33/342/200/257AM.js" +32 -0
  26. package/js/bindSubjectCallback.function.d 9.27.33/342/200/257AM.ts" +8 -0
  27. package/js/bindSubjectCallback.function.d.ts +3 -4
  28. package/js/bindSubjectCallback.function.js +20 -8
  29. package/js/bindSubjectCallback.function.js.map +1 -1
  30. package/js/checkDestroyPrevious.function.d.ts +6 -0
  31. package/js/checkDestroyPrevious.function.js +62 -0
  32. package/js/checkDestroyPrevious.function.js.map +1 -0
  33. package/js/destroyTag.function.d.ts +5 -0
  34. package/js/destroyTag.function.js +18 -0
  35. package/js/destroyTag.function.js.map +1 -0
  36. package/js/elementInitCheck.d.ts +1 -1
  37. package/js/getCallback.d.ts +1 -1
  38. package/js/getCallback.js +16 -15
  39. package/js/getCallback.js.map +1 -1
  40. package/js/hasTagSupportChanged.function.d.ts +6 -6
  41. package/js/hasTagSupportChanged.function.js +30 -21
  42. package/js/hasTagSupportChanged.function.js.map +1 -1
  43. package/js/html.d.ts +1 -1
  44. package/js/html.js +1 -1
  45. package/js/html.js.map +1 -1
  46. package/js/index.d.ts +22 -27
  47. package/js/index.js +26 -27
  48. package/js/index.js.map +1 -1
  49. package/js/interpolateAttributes.d.ts +2 -3
  50. package/js/interpolateAttributes.js +1 -127
  51. package/js/interpolateAttributes.js.map +1 -1
  52. package/js/interpolateContentTemplates.d.ts +9 -6
  53. package/js/interpolateContentTemplates.js +18 -28
  54. package/js/interpolateContentTemplates.js.map +1 -1
  55. package/js/interpolateElement.d.ts +7 -6
  56. package/js/interpolateElement.js +13 -10
  57. package/js/interpolateElement.js.map +1 -1
  58. package/js/interpolateTemplate.d.ts +22 -7
  59. package/js/interpolateTemplate.js +65 -27
  60. package/js/interpolateTemplate.js.map +1 -1
  61. package/js/isInstance.d.ts +3 -4
  62. package/js/isInstance.js.map +1 -1
  63. package/js/isLikeTags.function.d.ts +2 -0
  64. package/js/isLikeTags.function.js +30 -0
  65. package/js/isLikeTags.function.js.map +1 -0
  66. package/js/onDestroy.js +3 -3
  67. package/js/onDestroy.js.map +1 -1
  68. package/js/onInit.js +6 -4
  69. package/js/onInit.js.map +1 -1
  70. package/js/processAttribute.function.d.ts +3 -0
  71. package/js/processAttribute.function.js +122 -0
  72. package/js/processAttribute.function.js.map +1 -0
  73. package/js/processNewValue.function.d.ts +2 -2
  74. package/js/processNewValue.function.js +13 -15
  75. package/js/processNewValue.function.js.map +1 -1
  76. package/js/processRegularValue.function.d.ts +5 -7
  77. package/js/processRegularValue.function.js +10 -17
  78. package/js/processRegularValue.function.js.map +1 -1
  79. package/js/processSubjectComponent.function.d.ts +6 -6
  80. package/js/processSubjectComponent.function.js +30 -22
  81. package/js/processSubjectComponent.function.js.map +1 -1
  82. package/js/processSubjectValue.function.d.ts +17 -14
  83. package/js/processSubjectValue.function.js +55 -79
  84. package/js/processSubjectValue.function.js.map +1 -1
  85. package/js/processTagArray.d.ts +9 -8
  86. package/js/processTagArray.js +36 -37
  87. package/js/processTagArray.js.map +1 -1
  88. package/js/processTagResult.function.d.ts +7 -8
  89. package/js/processTagResult.function.js +40 -17
  90. package/js/processTagResult.function.js.map +1 -1
  91. package/js/provider.utils.d.ts +1 -1
  92. package/js/provider.utils.js +19 -8
  93. package/js/provider.utils.js.map +1 -1
  94. package/js/providers.js +6 -6
  95. package/js/providers.js.map +1 -1
  96. package/js/redrawTag.function.d.ts +5 -8
  97. package/js/redrawTag.function.js +16 -4
  98. package/js/redrawTag.function.js.map +1 -1
  99. package/js/render.d.ts +1 -1
  100. package/js/render.js.map +1 -1
  101. package/js/renderExistingTag.function.d.ts +7 -0
  102. package/js/renderExistingTag.function.js +30 -0
  103. package/js/renderExistingTag.function.js.map +1 -0
  104. package/js/renderTagSupport.function.d.ts +4 -0
  105. package/js/renderTagSupport.function.js +42 -0
  106. package/js/renderTagSupport.function.js.map +1 -0
  107. package/js/scanTextAreaValue.function.d.ts +2 -0
  108. package/js/scanTextAreaValue.function.js +16 -0
  109. package/js/scanTextAreaValue.function.js.map +1 -0
  110. package/js/set.function.d.ts +4 -3
  111. package/js/set.function.js +25 -34
  112. package/js/set.function.js.map +1 -1
  113. package/js/setLet.function.d.ts +1 -1
  114. package/js/setLet.function.js +14 -3
  115. package/js/setLet.function.js.map +1 -1
  116. package/js/setProp.function.d.ts +1 -1
  117. package/js/setProp.function.js +6 -3
  118. package/js/setProp.function.js.map +1 -1
  119. package/js/setUse.function.d.ts +11 -11
  120. package/js/tag.d.ts +6 -4
  121. package/js/tag.js +78 -71
  122. package/js/tag.js.map +1 -1
  123. package/js/tagElement.d.ts +5 -7
  124. package/js/tagElement.js +20 -31
  125. package/js/tagElement.js.map +1 -1
  126. package/js/tagRunner.d.ts +6 -6
  127. package/js/tagRunner.js +1 -1
  128. package/js/tagRunner.js.map +1 -1
  129. package/js/templater.utils.d.ts +23 -12
  130. package/js/templater.utils.js +55 -40
  131. package/js/templater.utils.js.map +1 -1
  132. package/js/updateExistingTag.function.d.ts +4 -4
  133. package/js/updateExistingTag.function.js +16 -7
  134. package/js/updateExistingTag.function.js.map +1 -1
  135. package/js/updateExistingTagComponent.function.d.ts +4 -4
  136. package/js/updateExistingTagComponent.function.js +105 -39
  137. package/js/updateExistingTagComponent.function.js.map +1 -1
  138. package/js/updateExistingValue.function.d.ts +8 -10
  139. package/js/updateExistingValue.function.js +62 -89
  140. package/js/updateExistingValue.function.js.map +1 -1
  141. package/js/watch.function.js +4 -3
  142. package/js/watch.function.js.map +1 -1
  143. package/package.json +1 -2
  144. package/js/CustomError.d.ts +0 -7
  145. package/js/CustomError.js +0 -9
  146. package/js/CustomError.js.map +0 -1
  147. package/js/ElementTarget.interface.d.ts +0 -7
  148. package/js/ElementTarget.interface.js +0 -2
  149. package/js/ElementTarget.interface.js.map +0 -1
  150. package/js/Errors2.d.ts +0 -14
  151. package/js/Errors2.js +0 -21
  152. package/js/Errors2.js.map +0 -1
  153. package/js/gateway/gateway.web.component.d.ts +0 -11
  154. package/js/gateway/gateway.web.component.js +0 -20
  155. package/js/gateway/gateway.web.component.js.map +0 -1
  156. package/js/gateway/index.d.ts +0 -3
  157. package/js/gateway/index.js +0 -4
  158. package/js/gateway/index.js.map +0 -1
  159. package/js/gateway/loadTagGateway.function.d.ts +0 -2
  160. package/js/gateway/loadTagGateway.function.js +0 -18
  161. package/js/gateway/loadTagGateway.function.js.map +0 -1
  162. package/js/gateway/tagGateway.function.d.ts +0 -5
  163. package/js/gateway/tagGateway.function.js +0 -49
  164. package/js/gateway/tagGateway.function.js.map +0 -1
  165. package/js/gateway/tagGateway.utils.d.ts +0 -22
  166. package/js/gateway/tagGateway.utils.js +0 -137
  167. package/js/gateway/tagGateway.utils.js.map +0 -1
  168. package/js/getTagSupport.d.ts +0 -20
  169. package/js/getTagSupport.js +0 -114
  170. package/js/getTagSupport.js.map +0 -1
  171. package/js/renderAppToElement.d.ts +0 -14
  172. package/js/renderAppToElement.js +0 -57
  173. package/js/renderAppToElement.js.map +0 -1
  174. package/js/state.d.ts +0 -22
  175. package/js/state.js +0 -128
  176. package/js/state.js.map +0 -1
  177. package/js/tagGateway.function.d.ts +0 -14
  178. package/js/tagGateway.function.js +0 -138
  179. package/js/tagGateway.function.js.map +0 -1
  180. package/js/updateTag.utils.d.ts +0 -8
  181. package/js/updateTag.utils.js +0 -83
  182. package/js/updateTag.utils.js.map +0 -1
  183. package/taggedjs.js +0 -1
  184. /package/js/{Errors.d.ts → errors.d.ts} +0 -0
  185. /package/js/{Errors.js → errors.js} +0 -0
  186. /package/js/{Errors.js.map → errors.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway.web.component.js","sourceRoot":"","sources":["../../ts/gateway/gateway.web.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE/E;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAU;IAEjB;QACE,KAAK,EAAE,CAAA;QACP,0CAA0C;QAC1C,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,oBAAoB;QAClB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,uBAAuB;AACvB,MAAM,UAAU,iBAAiB;IAC/B,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;AAClD,CAAC"}
@@ -1,3 +0,0 @@
1
- export { loadTagGateway } from "./loadTagGateway.function.js";
2
- export { initWebComponents } from "./gateway.web.component.js";
3
- export { tagGateway } from "./tagGateway.function.js";
@@ -1,4 +0,0 @@
1
- export { loadTagGateway } from "./loadTagGateway.function.js";
2
- export { initWebComponents } from "./gateway.web.component.js";
3
- export { tagGateway } from "./tagGateway.function.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
@@ -1,2 +0,0 @@
1
- import { Tag, TagChildrenInput, TagComponent } from "../index.js";
2
- export declare function loadTagGateway(component: TagComponent | ((props?: any, children?: TagChildrenInput) => Tag)): string;
@@ -1,18 +0,0 @@
1
- import { initWebComponents } from "./gateway.web.component.js";
2
- import { gatewayTagIds, getTagId } from "./tagGateway.utils.js";
3
- let hasInitWebComponents = false;
4
- export function loadTagGateway(component) {
5
- if (!hasInitWebComponents) {
6
- try {
7
- initWebComponents();
8
- }
9
- catch (err) {
10
- throw err;
11
- }
12
- hasInitWebComponents = true;
13
- }
14
- const id = getTagId(component);
15
- gatewayTagIds[id] = component;
16
- return id;
17
- }
18
- //# sourceMappingURL=loadTagGateway.function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadTagGateway.function.js","sourceRoot":"","sources":["../../ts/gateway/loadTagGateway.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE/D,IAAI,oBAAoB,GAAG,KAAK,CAAA;AAEhC,MAAM,UAAU,cAAc,CAC5B,SAA6E;IAE7E,IAAG,CAAC,oBAAoB,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,iBAAiB,EAAE,CAAA;QACrB,CAAC;QAAC,OAAM,GAAG,EAAE,CAAC;YACZ,MAAM,GAAG,CAAA;QACX,CAAC;QAED,oBAAoB,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9B,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -1,5 +0,0 @@
1
- import { TagComponent, TagComponentBase } from "../index.js";
2
- export type TagGatewayComponent = TagComponent | TagComponentBase<[props: unknown]>;
3
- export declare const tagGateway: (component: TagGatewayComponent) => {
4
- id: string;
5
- };
@@ -1,49 +0,0 @@
1
- import { checkElement, getTagId } from "./tagGateway.utils.js";
2
- const namedTimeouts = {};
3
- export const tagGateway = function tagGateway(component) {
4
- const id = getTagId(component);
5
- if (namedTimeouts[id]) {
6
- return namedTimeouts[id];
7
- }
8
- let intervalId;
9
- let hitCount = 0;
10
- const interval = 5;
11
- function findElements() {
12
- const elements = checkTagElementsById(id, component);
13
- if (!elements.length) {
14
- return elements.length;
15
- }
16
- // Element has been found, load
17
- if (intervalId) {
18
- clearInterval(intervalId);
19
- }
20
- delete namedTimeouts[id];
21
- return elements.length;
22
- }
23
- function findElement() {
24
- intervalId = setInterval(() => {
25
- hitCount = hitCount + interval;
26
- if (hitCount >= 2000) {
27
- clearInterval(intervalId);
28
- throw new Error(`TaggedJs Element ${id} not found`);
29
- }
30
- findElements();
31
- }, interval);
32
- }
33
- const elementCounts = findElements();
34
- if (elementCounts) {
35
- return { id };
36
- }
37
- findElement();
38
- namedTimeouts[id] = { id };
39
- return namedTimeouts[id];
40
- };
41
- function checkTagElementsById(id, component) {
42
- const elements = document.querySelectorAll('#' + id);
43
- return checkTagElements(id, elements, component);
44
- }
45
- function checkTagElements(id, elements, component) {
46
- elements.forEach(element => checkElement(id, element, component));
47
- return elements;
48
- }
49
- //# sourceMappingURL=tagGateway.function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tagGateway.function.js","sourceRoot":"","sources":["../../ts/gateway/tagGateway.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE9D,MAAM,aAAa,GAAwB,EAAE,CAAA;AAI7C,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,UAAU,CAC3C,SAA8B;IAE9B,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAE9B,IAAG,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,IAAI,UAA0B,CAAA;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,QAAQ,GAAG,CAAC,CAAA;IAElB,SAAS,YAAY;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QAEpD,IAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC,MAAM,CAAA;QACxB,CAAC;QAED,+BAA+B;QAC/B,IAAG,UAAU,EAAE,CAAC;YACd,aAAa,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;QAExB,OAAO,QAAQ,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,SAAS,WAAW;QAClB,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;YAE9B,IAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACpB,aAAa,CAAC,UAAU,CAAC,CAAA;gBACzB,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;YACrD,CAAC;YAED,YAAY,EAAE,CAAA;QAChB,CAAC,EAAE,QAAQ,CAAC,CAAA;IACd,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAA;IACpC,IAAG,aAAa,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,CAAA;IACf,CAAC;IAED,WAAW,EAAE,CAAA;IAEb,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAA;IAE1B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,SAAS,oBAAoB,CAC3B,EAAU,EACV,SAA8B;IAE9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IACpD,OAAO,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAU,EACV,QAA6B,EAC7B,SAA8B;IAE9B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAEjE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -1,22 +0,0 @@
1
- import { TagComponent, Tag } from "../index.js";
2
- import { TagGatewayComponent } from "./tagGateway.function.js";
3
- export declare const gatewayTagIds: {
4
- [id: string]: TagComponent;
5
- };
6
- export declare function checkAllGateways(): void;
7
- export declare function checkGateways(gateways: Gateway[]): void;
8
- export declare function destroyGateway(gateway: Gateway): void;
9
- export declare function getTagId(component: TagGatewayComponent): string;
10
- export type EventData = {
11
- detail: Record<string, any>;
12
- };
13
- export type Gateway = {
14
- tag: Tag;
15
- id: string;
16
- observer: MutationObserver;
17
- element: HTMLElement;
18
- component: TagGatewayComponent;
19
- updateTag: () => unknown;
20
- };
21
- export declare function checkByElement(element: HTMLElement | Element): Gateway;
22
- export declare function checkElement(id: string, element: Element, component: TagGatewayComponent): Gateway;
@@ -1,137 +0,0 @@
1
- import { tagElement } from "../index.js";
2
- // import { onNextStateOnly } from "../state.js"
3
- import { loadTagGateway } from "./loadTagGateway.function.js";
4
- const gateways = {};
5
- export const gatewayTagIds = {};
6
- export function checkAllGateways() {
7
- Object.entries(gateways).forEach(([id, gateways]) => checkGateways(gateways));
8
- }
9
- export function checkGateways(gateways) {
10
- gateways.forEach(gateway => checkGateway(gateway));
11
- }
12
- function checkGateway(gateway) {
13
- const { element } = gateway;
14
- if (document.body.contains(element)) {
15
- return; // its still good, do not continue to destroy
16
- }
17
- destroyGateway(gateway);
18
- return false;
19
- }
20
- export function destroyGateway(gateway) {
21
- const { id, observer, tag } = gateway;
22
- observer.disconnect();
23
- tag.destroy();
24
- delete gateways[id];
25
- }
26
- export function getTagId(component) {
27
- const componentString = functionToHtmlId(component);
28
- return '__tagTemplate_' + componentString;
29
- }
30
- function parsePropsString(element) {
31
- const propsString = element.getAttribute('props');
32
- if (!propsString) {
33
- return { element };
34
- }
35
- try {
36
- const props = JSON.parse(propsString);
37
- // attribute eventProps as output bindings
38
- const eventPropsString = element.getAttribute('events');
39
- if (eventPropsString) {
40
- eventPropsString.split(',').map(x => x.trim()).map((name) => {
41
- props[name] = (value) => dispatchEvent(name, { detail: { [name]: value } });
42
- });
43
- }
44
- const dispatchEvent = function (name, eventData) {
45
- const event = new CustomEvent(name, eventData);
46
- element.dispatchEvent(event);
47
- };
48
- // props.dispatchEvent = dispatchEvent
49
- return props;
50
- }
51
- catch (err) {
52
- console.warn('Failed to parse props on element', { element, propsString });
53
- throw err;
54
- }
55
- }
56
- /** adds to gateways[id].push */
57
- function watchElement(id, targetNode, tag, component) {
58
- let lastTag = tag;
59
- const observer = new MutationObserver(mutationsList => {
60
- if (!checkGateway(gateway)) {
61
- return;
62
- }
63
- for (const mutation of mutationsList) {
64
- if (mutation.type === 'attributes') {
65
- updateTag();
66
- }
67
- }
68
- });
69
- function updateTag() {
70
- const templater = tag.tagSupport.templater;
71
- const oldProps = templater.tagSupport.propsConfig.latest;
72
- const newProps = parsePropsString(targetNode);
73
- templater.tagSupport.propsConfig.latest = newProps;
74
- const isSameProps = JSON.stringify(oldProps) === JSON.stringify(newProps);
75
- if (isSameProps) {
76
- return; // no reason to update, same props
77
- }
78
- templater.tagSupport.propsConfig.latest = newProps;
79
- }
80
- loadTagGateway(component);
81
- const gateway = {
82
- id, tag, observer, component, element: targetNode, updateTag,
83
- };
84
- gateways[id] = gateways[id] || [];
85
- gateways[id].push(gateway);
86
- targetNode.gateway = gateway;
87
- // Configure the observer to watch for changes in child nodes and attributes
88
- const config = { attributes: true };
89
- // Start observing the target node for specified changes
90
- observer.observe(targetNode, config);
91
- return gateway;
92
- }
93
- function functionToHtmlId(func) {
94
- // Convert function to string
95
- let funcString = func.toString();
96
- // Remove spaces and replace special characters with underscores
97
- let cleanedString = funcString.replace(/\s+/g, '_')
98
- .replace(/[^\w\d]/g, '_');
99
- // Ensure the ID starts with a letter
100
- if (!/^[a-zA-Z]/.test(cleanedString)) {
101
- cleanedString = 'fn_' + cleanedString;
102
- }
103
- return cleanedString;
104
- }
105
- export function checkByElement(element) {
106
- const id = element.id || element.getAttribute('id');
107
- if (!id) {
108
- const message = 'Cannot check a tag on element with no id attribute';
109
- console.warn(message, { id, element });
110
- throw new Error(message);
111
- }
112
- const component = gatewayTagIds[id];
113
- if (!component) {
114
- const message = `Cannot find a tag registered by id of ${id}`;
115
- console.warn(message, { id, element });
116
- throw new Error(message);
117
- }
118
- return checkElement(id, element, component);
119
- }
120
- export function checkElement(id, element, component) {
121
- const gateway = element.gateway;
122
- if (gateway) {
123
- gateway.updateTag();
124
- return gateway;
125
- }
126
- const props = parsePropsString(element);
127
- try {
128
- const { tag } = tagElement(component, element, props);
129
- // watch element AND add to gateways[id].push()
130
- return watchElement(id, element, tag, component);
131
- }
132
- catch (err) {
133
- console.warn('Failed to render component to element', { component, element, props });
134
- throw err;
135
- }
136
- }
137
- //# sourceMappingURL=tagGateway.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tagGateway.utils.js","sourceRoot":"","sources":["../../ts/gateway/tagGateway.utils.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { Props } from "./Props.js";
2
- import { Tag, TagMemory } from "./Tag.class.js";
3
- import { TemplaterResult } from "./templater.utils.js";
4
- export declare class TagSupport {
5
- templater: TemplaterResult;
6
- props?: unknown;
7
- latestProps: Props;
8
- latestClonedProps: Props;
9
- clonedProps: Props;
10
- memory: TagMemory;
11
- constructor(templater: TemplaterResult, props?: unknown);
12
- oldest?: Tag;
13
- newest?: Tag;
14
- hasPropChanges(props: any, // natural props
15
- pastCloneProps: any, // previously cloned props
16
- compareToProps: any): boolean;
17
- mutatingRender(): Tag;
18
- render(): Tag;
19
- renderExistingTag(tag: Tag, newTemplater: TemplaterResult): boolean;
20
- }
@@ -1,114 +0,0 @@
1
- import { deepClone, deepEqual } from "./deepFunctions.js";
2
- import { isTagInstance } from "./isInstance.js";
3
- import { alterProps } from "./templater.utils.js";
4
- export class TagSupport {
5
- templater;
6
- props;
7
- latestProps; // new props NOT cloned props
8
- // props from **constructor** are converted for comparing over renders
9
- latestClonedProps; // This seems to be a duplicate of clonedProps
10
- // TODO: see if we can remove
11
- clonedProps;
12
- memory = {
13
- context: {}, // populated after reading interpolated.values array converted to an object {variable0, variable:1}
14
- state: {
15
- newest: [],
16
- },
17
- providers: [],
18
- /** Indicator of re-rending. Saves from double rending something already rendered */
19
- renderCount: 0,
20
- };
21
- constructor(templater, props) {
22
- this.templater = templater;
23
- this.props = props;
24
- this.latestProps = props;
25
- const latestProps = alterProps(props, templater);
26
- this.latestClonedProps = latestProps;
27
- // if the latest props are not HTML children, then clone the props for later render cycles to compare
28
- if (!isTagInstance(props)) {
29
- this.latestClonedProps = deepClone(latestProps);
30
- }
31
- // TODO: see if we can remove
32
- this.clonedProps = this.latestClonedProps;
33
- }
34
- // TODO: these below may not be in use
35
- oldest;
36
- newest;
37
- hasPropChanges(props, // natural props
38
- pastCloneProps, // previously cloned props
39
- compareToProps) {
40
- const isCommonEqual = props === undefined && props === compareToProps;
41
- const isEqual = isCommonEqual || deepEqual(pastCloneProps, props);
42
- return !isEqual; // if equal then no changes
43
- }
44
- mutatingRender() {
45
- const message = 'Tag function "render()" was called in sync but can only be called async';
46
- console.error(message, { tagSupport: this });
47
- throw new Error(message);
48
- } // loaded later and only callable async
49
- render() {
50
- ++this.memory.renderCount;
51
- return this.mutatingRender();
52
- } // ensure this function still works even during deconstructing
53
- renderExistingTag(tag, newTemplater) {
54
- const preRenderCount = this.memory.renderCount;
55
- providersChangeCheck(tag);
56
- // When the providers were checked, a render to myself occurred and I do not need to re-render again
57
- if (preRenderCount !== this.memory.renderCount) {
58
- return true;
59
- }
60
- const oldTemplater = tag.tagSupport.templater;
61
- const nowProps = newTemplater.tagSupport.props; // natural props
62
- // const oldClonedProps = newTemplater.tagSupport.clonedProps // natural props
63
- const oldClonedProps = oldTemplater.tagSupport.clonedProps; // natural props
64
- // const oldClonedProps = oldTemplater?.tagSupport.clonedProps // previously cloned props
65
- // const newProps = newTemplater.tagSupport.clonedProps // new props cloned
66
- const oldProps = oldTemplater?.tagSupport.props; // new props cloned
67
- // const newProps = newTemplater.tagSupport.latestClonedProps // new props cloned
68
- return renderTag(this, nowProps, oldClonedProps, oldProps, // newProps,
69
- this.templater);
70
- }
71
- }
72
- function providersChangeCheck(tag) {
73
- const providersWithChanges = tag.tagSupport.memory.providers.filter(provider => !deepEqual(provider.instance, provider.clone));
74
- // reset clones
75
- providersWithChanges.forEach(provider => {
76
- const appElement = tag.getAppElement();
77
- handleProviderChanges(appElement, provider);
78
- provider.clone = deepClone(provider.instance);
79
- });
80
- }
81
- function handleProviderChanges(appElement, provider) {
82
- const tagsWithProvider = getTagsWithProvider(appElement, provider);
83
- tagsWithProvider.forEach(({ tag, renderCount, provider }) => {
84
- const unRendered = renderCount === tag.tagSupport.memory.renderCount;
85
- if (unRendered) {
86
- provider.clone = deepClone(provider.instance);
87
- tag.tagSupport.render();
88
- }
89
- });
90
- }
91
- function getTagsWithProvider(tag, provider, memory = []) {
92
- const hasProvider = tag.tagSupport.memory.providers.find(xProvider => xProvider.constructMethod === provider.constructMethod);
93
- if (hasProvider) {
94
- memory.push({
95
- tag,
96
- renderCount: tag.tagSupport.memory.renderCount,
97
- provider: hasProvider
98
- });
99
- }
100
- tag.children.forEach(child => getTagsWithProvider(child, provider, memory));
101
- return memory;
102
- }
103
- function renderTag(tagSupport, nowProps, // natural props
104
- oldCloneProps, // now props cloned
105
- oldProps, // previously NOT cloned props
106
- templater) {
107
- const hasPropsChanged = tagSupport.hasPropChanges(nowProps, oldCloneProps, oldProps);
108
- tagSupport.newest = templater.redraw(); // No change detected, just redraw me only
109
- if (!hasPropsChanged) {
110
- return true;
111
- }
112
- return false;
113
- }
114
- //# sourceMappingURL=getTagSupport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTagSupport.js","sourceRoot":"","sources":["../ts/getTagSupport.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { TagSupport } from "./getTagSupport.js";
2
- import { TagComponent, TemplaterResult } from "./templater.utils.js";
3
- import { Tag } from "./Tag.class.js";
4
- export declare function renderAppToElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
5
- element: Element, props: unknown): {
6
- tag: Tag;
7
- tags: TagComponent[];
8
- };
9
- export declare function applyTagUpdater(wrapper: TemplaterResult): {
10
- tag: Tag;
11
- tagSupport: TagSupport;
12
- };
13
- /** Overwrites arguments.tagSupport.mutatingRender */
14
- export declare function addAppTagRender(tagSupport: TagSupport, tag: Tag): void;
@@ -1,57 +0,0 @@
1
- import { runBeforeRender } from "./tagRunner.js";
2
- const appElements = [];
3
- export function renderAppToElement(app, // (...args: unknown[]) => TemplaterResult,
4
- element, props) {
5
- const appElmIndex = appElements.findIndex(appElm => appElm.element === element);
6
- if (appElmIndex >= 0) {
7
- appElements[appElmIndex].tag.destroy();
8
- appElements.splice(appElmIndex, 1);
9
- console.warn('Found and destroyed app element already rendered to element', { element });
10
- }
11
- // Create the app which returns [props, runOneTimeFunction]
12
- const wrapper = app(props);
13
- // have a function setup and call the tagWrapper with (props, {update, async, on})
14
- const result = applyTagUpdater(wrapper);
15
- const { tag, tagSupport } = result;
16
- tag.appElement = element;
17
- addAppTagRender(tagSupport, tag);
18
- // const context = tag.updateValues(tag.values)
19
- const templateElm = document.createElement('template');
20
- templateElm.setAttribute('tag-detail', 'app-template-placeholder');
21
- element.appendChild(templateElm);
22
- tag.buildBeforeElement(templateElm);
23
- element.setUse = app.original.setUse;
24
- appElements.push({ element, tag });
25
- return { tag, tags: app.original.tags };
26
- }
27
- export function applyTagUpdater(wrapper) {
28
- const tagSupport = wrapper.tagSupport; // getTagSupport(0, wrapper)
29
- runBeforeRender(tagSupport, undefined);
30
- // Call the apps function for our tag templater
31
- // const templater = tagSupport.templater as TemplaterResult
32
- const tag = wrapper.wrapper(); // templater.wrapper()
33
- tag.tagSupport = tagSupport;
34
- tag.afterRender();
35
- return { tag, tagSupport };
36
- }
37
- /** Overwrites arguments.tagSupport.mutatingRender */
38
- export function addAppTagRender(tagSupport, tag) {
39
- let lastTag;
40
- tagSupport.mutatingRender = () => {
41
- tag.beforeRedraw();
42
- const templater = tagSupport.templater; // wrapper
43
- const fromTag = lastTag = templater.wrapper();
44
- // tagSupport.props = fromTag.tagSupport.props
45
- tagSupport.latestProps = fromTag.tagSupport.props;
46
- tagSupport.latestClonedProps = fromTag.tagSupport.clonedProps;
47
- fromTag.setSupport(tagSupport);
48
- tag.afterRender();
49
- tag.updateByTag(fromTag);
50
- if (lastTag) {
51
- lastTag.destroy({ stagger: 0 });
52
- }
53
- tagSupport.newest = fromTag;
54
- return lastTag;
55
- };
56
- }
57
- //# sourceMappingURL=renderAppToElement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderAppToElement.js","sourceRoot":"","sources":["../ts/renderAppToElement.ts"],"names":[],"mappings":"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"}
package/js/state.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export type StateConfig<T> = (x: T) => [T, T];
2
- type StateConfigItem<T> = {
3
- callback?: StateConfig<T>;
4
- lastValue?: any;
5
- defaultValue?: any;
6
- };
7
- export type StateConfigArray = StateConfigItem<any>[];
8
- export type Config = {
9
- array: StateConfigArray;
10
- rearray: StateConfigArray;
11
- };
12
- export type State = {
13
- newest: StateConfigArray;
14
- };
15
- export type GetSet<T> = (y: T) => [T, T];
16
- /** Used for variables that need to remain the same variable during render passes */
17
- export declare function state<T>(defaultValue: T | (() => T)): ((getSet?: GetSet<T>) => T);
18
- export declare function onNextStateOnly(callback: () => unknown): void;
19
- export declare function getStateValue<T>(state: StateConfigItem<T>): any;
20
- export declare class StateEchoBack {
21
- }
22
- export {};
package/js/state.js DELETED
@@ -1,128 +0,0 @@
1
- import { StateMismatchError } from "./errors.js";
2
- import { setUse } from "./setUse.function.js";
3
- // TODO: rename
4
- setUse.memory.stateConfig = {
5
- array: [], // state memory on the first render
6
- rearray: [], // state memory to be used before the next render
7
- };
8
- /** Used for variables that need to remain the same variable during render passes */
9
- export function state(defaultValue) {
10
- const config = setUse.memory.stateConfig;
11
- let getSetMethod;
12
- const restate = config.rearray[config.array.length];
13
- if (restate) {
14
- let oldValue = getStateValue(restate);
15
- getSetMethod = ((x) => [oldValue, oldValue = x]);
16
- const push = {
17
- callback: getSetMethod,
18
- lastValue: oldValue,
19
- defaultValue: restate.defaultValue,
20
- };
21
- config.array.push(push);
22
- return makeStateResult(oldValue, push);
23
- }
24
- // State first time run
25
- const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
26
- let initValue = defaultFn();
27
- getSetMethod = ((x) => [initValue, initValue = x]);
28
- const push = {
29
- callback: getSetMethod,
30
- lastValue: initValue,
31
- defaultValue: initValue,
32
- };
33
- config.array.push(push);
34
- return makeStateResult(initValue, push);
35
- }
36
- function makeStateResult(initValue, push) {
37
- // return initValue
38
- const result = (y) => {
39
- push.callback = y || (x => [initValue, initValue = x]);
40
- return initValue;
41
- };
42
- return result;
43
- }
44
- const waitingStates = [];
45
- export function onNextStateOnly(callback) {
46
- const config = setUse.memory.stateConfig;
47
- if (!config.rearray.length) {
48
- callback();
49
- return;
50
- }
51
- waitingStates.push(callback);
52
- }
53
- setUse({
54
- beforeRender: (tagSupport) => initState(tagSupport),
55
- beforeRedraw: (tagSupport) => initState(tagSupport),
56
- afterRender: (tagSupport, tag) => {
57
- const state = tagSupport.memory.state;
58
- const config = setUse.memory.stateConfig;
59
- if (config.rearray.length) {
60
- if (config.rearray.length !== config.array.length) {
61
- const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
62
- const error = new StateMismatchError(message, {
63
- oldStates: config.array,
64
- newStates: config.rearray,
65
- component: tagSupport.templater?.wrapper.original
66
- });
67
- throw error;
68
- }
69
- }
70
- // config.rearray.length = 0 // clean up any previous runs
71
- config.rearray = []; // clean up any previous runs
72
- // state.newest.length = 0
73
- // state.newest.push(...config.array) as any
74
- state.newest = [...config.array];
75
- // config.array.length = 0
76
- config.array = [];
77
- waitingStates.forEach(callback => callback());
78
- waitingStates.length = 0;
79
- }
80
- });
81
- export function getStateValue(
82
- // state: StateConfig,
83
- state) {
84
- const callback = state.callback;
85
- if (!callback) {
86
- return state.defaultValue;
87
- }
88
- const oldState = callback(StateEchoBack); // get value and set to undefined
89
- const [oldValue] = oldState;
90
- const [checkValue] = callback(oldValue); // set back to original value
91
- if (checkValue !== StateEchoBack) {
92
- const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
93
- 'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
94
- 'For "const" state use `const name = state(default)()`\n\n' +
95
- 'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
96
- console.error(message, { state, callback, oldState, oldValue, checkValue });
97
- throw new Error(message);
98
- }
99
- return oldValue;
100
- }
101
- export class StateEchoBack {
102
- }
103
- function initState(tagSupport) {
104
- const state = tagSupport.memory.state;
105
- const config = setUse.memory.stateConfig;
106
- // TODO: This guard may no longer be needed
107
- if (config.rearray.length) {
108
- const message = 'last array not cleared';
109
- console.error(message, {
110
- config,
111
- component: tagSupport.templater?.wrapper.original,
112
- state,
113
- expectedClearArray: config.rearray,
114
- });
115
- throw new StateMismatchError(message, {
116
- config,
117
- component: tagSupport.templater?.wrapper.original,
118
- state,
119
- expectedClearArray: config.rearray,
120
- });
121
- }
122
- // TODO: this maybe redundant and not needed
123
- config.rearray = []; // .length = 0
124
- if (state?.newest.length) {
125
- config.rearray.push(...state.newest);
126
- }
127
- }
128
- //# sourceMappingURL=state.js.map