treeloom 0.0.0-stage → 2.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 (283) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +72 -2
  3. package/browser/treeloom.js +11006 -0
  4. package/browser/treeloom.min.js +1 -0
  5. package/browser/treeloomRenderOnly.js +10530 -0
  6. package/browser/treeloomRenderOnly.min.js +1 -0
  7. package/dist/deflate/domItemToJson.d.ts +14 -0
  8. package/dist/deflate/domItemToJson.js +43 -0
  9. package/dist/deflate/domItemToJson.min.js +1 -0
  10. package/dist/deflate/index.d.ts +7 -0
  11. package/dist/deflate/index.js +19 -0
  12. package/dist/deflate/index.min.js +1 -0
  13. package/dist/deflate/removeEmptyProperties.d.ts +8 -0
  14. package/dist/deflate/removeEmptyProperties.js +43 -0
  15. package/dist/deflate/removeEmptyProperties.min.js +1 -0
  16. package/dist/diff/createChangeList.d.ts +9 -0
  17. package/dist/diff/createChangeList.js +44 -0
  18. package/dist/diff/createChangeList.min.js +1 -0
  19. package/dist/diff/domItemChanges.d.ts +9 -0
  20. package/dist/diff/domItemChanges.js +154 -0
  21. package/dist/diff/domItemChanges.min.js +1 -0
  22. package/dist/diff/domItemHasAttribute.d.ts +11 -0
  23. package/dist/diff/domItemHasAttribute.js +63 -0
  24. package/dist/diff/domItemHasAttribute.min.js +1 -0
  25. package/dist/diff/elementChanges.d.ts +10 -0
  26. package/dist/diff/elementChanges.js +151 -0
  27. package/dist/diff/elementChanges.min.js +1 -0
  28. package/dist/diff/elementHasAttribute.d.ts +10 -0
  29. package/dist/diff/elementHasAttribute.js +70 -0
  30. package/dist/diff/elementHasAttribute.min.js +1 -0
  31. package/dist/diff/getAssignedStyles.d.ts +9 -0
  32. package/dist/diff/getAssignedStyles.js +22 -0
  33. package/dist/diff/getAssignedStyles.min.js +1 -0
  34. package/dist/diff/index.d.ts +9 -0
  35. package/dist/diff/index.js +27 -0
  36. package/dist/diff/index.min.js +1 -0
  37. package/dist/diff/types.d.ts +17 -0
  38. package/dist/diff/types.js +8 -0
  39. package/dist/diff/types.min.js +1 -0
  40. package/dist/domItem/index.d.ts +34 -0
  41. package/dist/domItem/index.js +81 -0
  42. package/dist/domItem/index.min.js +1 -0
  43. package/dist/domItem/objects/addDomItemProperties.d.ts +7 -0
  44. package/dist/domItem/objects/addDomItemProperties.js +27 -0
  45. package/dist/domItem/objects/addDomItemProperties.min.js +1 -0
  46. package/dist/domItem/objects/createCoreItem.d.ts +9 -0
  47. package/dist/domItem/objects/createCoreItem.js +53 -0
  48. package/dist/domItem/objects/createCoreItem.min.js +1 -0
  49. package/dist/domItem/objects/createDomItem.d.ts +10 -0
  50. package/dist/domItem/objects/createDomItem.js +40 -0
  51. package/dist/domItem/objects/createDomItem.min.js +1 -0
  52. package/dist/domItem/objects/documentDomItem.d.ts +12 -0
  53. package/dist/domItem/objects/documentDomItem.js +36 -0
  54. package/dist/domItem/objects/documentDomItem.min.js +1 -0
  55. package/dist/domItem/objects/documentItem.d.ts +18 -0
  56. package/dist/domItem/objects/documentItem.js +40 -0
  57. package/dist/domItem/objects/documentItem.min.js +1 -0
  58. package/dist/domItem/objects/initChildren.d.ts +6 -0
  59. package/dist/domItem/objects/initChildren.js +44 -0
  60. package/dist/domItem/objects/initChildren.min.js +1 -0
  61. package/dist/domItem/objects/initRoot.d.ts +9 -0
  62. package/dist/domItem/objects/initRoot.js +32 -0
  63. package/dist/domItem/objects/initRoot.min.js +1 -0
  64. package/dist/domItem/query/gatherChildItems.d.ts +12 -0
  65. package/dist/domItem/query/gatherChildItems.js +19 -0
  66. package/dist/domItem/query/gatherChildItems.min.js +1 -0
  67. package/dist/domItem/query/getChildTest.d.ts +8 -0
  68. package/dist/domItem/query/getChildTest.js +15 -0
  69. package/dist/domItem/query/getChildTest.min.js +1 -0
  70. package/dist/domItem/query/getChildrenByClass.d.ts +11 -0
  71. package/dist/domItem/query/getChildrenByClass.js +26 -0
  72. package/dist/domItem/query/getChildrenByClass.min.js +1 -0
  73. package/dist/domItem/query/getChildrenByName.d.ts +9 -0
  74. package/dist/domItem/query/getChildrenByName.js +23 -0
  75. package/dist/domItem/query/getChildrenByName.min.js +1 -0
  76. package/dist/domItem/query/getChildrenFromAttribute.d.ts +13 -0
  77. package/dist/domItem/query/getChildrenFromAttribute.js +28 -0
  78. package/dist/domItem/query/getChildrenFromAttribute.min.js +1 -0
  79. package/dist/domItem/query/getItemByElement.d.ts +11 -0
  80. package/dist/domItem/query/getItemByElement.js +29 -0
  81. package/dist/domItem/query/getItemByElement.min.js +1 -0
  82. package/dist/domItem/query/getParentsByClass.d.ts +12 -0
  83. package/dist/domItem/query/getParentsByClass.js +40 -0
  84. package/dist/domItem/query/getParentsByClass.min.js +1 -0
  85. package/dist/domItem/query/getParentsByName.d.ts +9 -0
  86. package/dist/domItem/query/getParentsByName.js +23 -0
  87. package/dist/domItem/query/getParentsByName.min.js +1 -0
  88. package/dist/domItem/query/getParentsByTagName.d.ts +9 -0
  89. package/dist/domItem/query/getParentsByTagName.js +23 -0
  90. package/dist/domItem/query/getParentsByTagName.min.js +1 -0
  91. package/dist/domItem/query/getParentsFromAttribute.d.ts +13 -0
  92. package/dist/domItem/query/getParentsFromAttribute.js +39 -0
  93. package/dist/domItem/query/getParentsFromAttribute.min.js +1 -0
  94. package/dist/domItem/traits/defineTrait.d.ts +10 -0
  95. package/dist/domItem/traits/defineTrait.js +26 -0
  96. package/dist/domItem/traits/defineTrait.min.js +1 -0
  97. package/dist/domItem/traits/definitions.d.ts +7 -0
  98. package/dist/domItem/traits/definitions.js +20 -0
  99. package/dist/domItem/traits/definitions.min.js +1 -0
  100. package/dist/domItem/traits/getNonSerializableKeys.d.ts +9 -0
  101. package/dist/domItem/traits/getNonSerializableKeys.js +25 -0
  102. package/dist/domItem/traits/getNonSerializableKeys.min.js +1 -0
  103. package/dist/domItem/traits/getTraitDefinition.d.ts +7 -0
  104. package/dist/domItem/traits/getTraitDefinition.js +20 -0
  105. package/dist/domItem/traits/getTraitDefinition.min.js +1 -0
  106. package/dist/domItem/traits/hasTrait.d.ts +8 -0
  107. package/dist/domItem/traits/hasTrait.js +15 -0
  108. package/dist/domItem/traits/hasTrait.min.js +1 -0
  109. package/dist/domItem/traits/hasTraits.d.ts +9 -0
  110. package/dist/domItem/traits/hasTraits.js +16 -0
  111. package/dist/domItem/traits/hasTraits.min.js +1 -0
  112. package/dist/domItem/traits/isDomItem.d.ts +8 -0
  113. package/dist/domItem/traits/isDomItem.js +21 -0
  114. package/dist/domItem/traits/isDomItem.min.js +1 -0
  115. package/dist/domItem/traits/withTrait.d.ts +11 -0
  116. package/dist/domItem/traits/withTrait.js +30 -0
  117. package/dist/domItem/traits/withTrait.min.js +1 -0
  118. package/dist/domItem/tree/appendChild.d.ts +8 -0
  119. package/dist/domItem/tree/appendChild.js +19 -0
  120. package/dist/domItem/tree/appendChild.min.js +1 -0
  121. package/dist/domItem/tree/getItemByPath.d.ts +10 -0
  122. package/dist/domItem/tree/getItemByPath.js +23 -0
  123. package/dist/domItem/tree/getItemByPath.min.js +1 -0
  124. package/dist/domItem/tree/getItemPath.d.ts +9 -0
  125. package/dist/domItem/tree/getItemPath.js +31 -0
  126. package/dist/domItem/tree/getItemPath.min.js +1 -0
  127. package/dist/domItem/tree/getTopParentItem.d.ts +8 -0
  128. package/dist/domItem/tree/getTopParentItem.js +29 -0
  129. package/dist/domItem/tree/getTopParentItem.min.js +1 -0
  130. package/dist/domItem/tree/insertChild.d.ts +11 -0
  131. package/dist/domItem/tree/insertChild.js +22 -0
  132. package/dist/domItem/tree/insertChild.min.js +1 -0
  133. package/dist/domItem/tree/itemIdIndex.d.ts +43 -0
  134. package/dist/domItem/tree/itemIdIndex.js +118 -0
  135. package/dist/domItem/tree/itemIdIndex.min.js +1 -0
  136. package/dist/domItem/tree/removeChild.d.ts +8 -0
  137. package/dist/domItem/tree/removeChild.js +21 -0
  138. package/dist/domItem/tree/removeChild.min.js +1 -0
  139. package/dist/domItem/tree/setParentItemReferences.d.ts +7 -0
  140. package/dist/domItem/tree/setParentItemReferences.js +24 -0
  141. package/dist/domItem/tree/setParentItemReferences.min.js +1 -0
  142. package/dist/domItem/types.d.ts +131 -0
  143. package/dist/domItem/types.js +8 -0
  144. package/dist/domItem/types.min.js +1 -0
  145. package/dist/events/functions/activateListener.d.ts +10 -0
  146. package/dist/events/functions/activateListener.js +45 -0
  147. package/dist/events/functions/activateListener.min.js +1 -0
  148. package/dist/events/functions/addEventListener.d.ts +23 -0
  149. package/dist/events/functions/addEventListener.js +54 -0
  150. package/dist/events/functions/addEventListener.min.js +1 -0
  151. package/dist/events/functions/applyActiveListeners.d.ts +9 -0
  152. package/dist/events/functions/applyActiveListeners.js +52 -0
  153. package/dist/events/functions/applyActiveListeners.min.js +1 -0
  154. package/dist/events/functions/assignListener.d.ts +12 -0
  155. package/dist/events/functions/assignListener.js +39 -0
  156. package/dist/events/functions/assignListener.min.js +1 -0
  157. package/dist/events/functions/bindAllListeners.d.ts +10 -0
  158. package/dist/events/functions/bindAllListeners.js +28 -0
  159. package/dist/events/functions/bindAllListeners.min.js +1 -0
  160. package/dist/events/functions/bindElementListeners.d.ts +7 -0
  161. package/dist/events/functions/bindElementListeners.js +34 -0
  162. package/dist/events/functions/bindElementListeners.min.js +1 -0
  163. package/dist/events/functions/bindListeners.d.ts +9 -0
  164. package/dist/events/functions/bindListeners.js +23 -0
  165. package/dist/events/functions/bindListeners.min.js +1 -0
  166. package/dist/events/functions/deactivateListener.d.ts +13 -0
  167. package/dist/events/functions/deactivateListener.js +58 -0
  168. package/dist/events/functions/deactivateListener.min.js +1 -0
  169. package/dist/events/functions/deactivateListeners.d.ts +7 -0
  170. package/dist/events/functions/deactivateListeners.js +22 -0
  171. package/dist/events/functions/deactivateListeners.min.js +1 -0
  172. package/dist/events/functions/findEventListener.d.ts +22 -0
  173. package/dist/events/functions/findEventListener.js +61 -0
  174. package/dist/events/functions/findEventListener.min.js +1 -0
  175. package/dist/events/functions/fullAddEventListener.d.ts +20 -0
  176. package/dist/events/functions/fullAddEventListener.js +45 -0
  177. package/dist/events/functions/fullAddEventListener.min.js +1 -0
  178. package/dist/events/functions/fullRemoveEventListener.d.ts +22 -0
  179. package/dist/events/functions/fullRemoveEventListener.js +37 -0
  180. package/dist/events/functions/fullRemoveEventListener.min.js +1 -0
  181. package/dist/events/functions/listenerOptions.d.ts +12 -0
  182. package/dist/events/functions/listenerOptions.js +31 -0
  183. package/dist/events/functions/listenerOptions.min.js +1 -0
  184. package/dist/events/functions/makeEventHandler.d.ts +10 -0
  185. package/dist/events/functions/makeEventHandler.js +23 -0
  186. package/dist/events/functions/makeEventHandler.min.js +1 -0
  187. package/dist/events/functions/makeForwardingListener.d.ts +11 -0
  188. package/dist/events/functions/makeForwardingListener.js +46 -0
  189. package/dist/events/functions/makeForwardingListener.min.js +1 -0
  190. package/dist/events/functions/receiveForwardedEvent.d.ts +23 -0
  191. package/dist/events/functions/receiveForwardedEvent.js +40 -0
  192. package/dist/events/functions/receiveForwardedEvent.min.js +1 -0
  193. package/dist/events/functions/registerListener.d.ts +11 -0
  194. package/dist/events/functions/registerListener.js +25 -0
  195. package/dist/events/functions/registerListener.min.js +1 -0
  196. package/dist/events/functions/registerListeners.d.ts +10 -0
  197. package/dist/events/functions/registerListeners.js +26 -0
  198. package/dist/events/functions/registerListeners.min.js +1 -0
  199. package/dist/events/functions/removeEventListener.d.ts +18 -0
  200. package/dist/events/functions/removeEventListener.js +42 -0
  201. package/dist/events/functions/removeEventListener.min.js +1 -0
  202. package/dist/events/functions/retrieveListener.d.ts +14 -0
  203. package/dist/events/functions/retrieveListener.js +39 -0
  204. package/dist/events/functions/retrieveListener.min.js +1 -0
  205. package/dist/events/functions/revokeActiveListeners.d.ts +12 -0
  206. package/dist/events/functions/revokeActiveListeners.js +54 -0
  207. package/dist/events/functions/revokeActiveListeners.min.js +1 -0
  208. package/dist/events/functions/setForwardEvents.d.ts +11 -0
  209. package/dist/events/functions/setForwardEvents.js +26 -0
  210. package/dist/events/functions/setForwardEvents.min.js +1 -0
  211. package/dist/events/functions/unassignListener.d.ts +12 -0
  212. package/dist/events/functions/unassignListener.js +32 -0
  213. package/dist/events/functions/unassignListener.min.js +1 -0
  214. package/dist/events/index.d.ts +37 -0
  215. package/dist/events/index.js +72 -0
  216. package/dist/events/index.min.js +1 -0
  217. package/dist/events/objects/createEventListener.d.ts +13 -0
  218. package/dist/events/objects/createEventListener.js +30 -0
  219. package/dist/events/objects/createEventListener.min.js +1 -0
  220. package/dist/events/objects/createEventProxy.d.ts +10 -0
  221. package/dist/events/objects/createEventProxy.js +48 -0
  222. package/dist/events/objects/createEventProxy.min.js +1 -0
  223. package/dist/events/objects/createEventResponder.d.ts +8 -0
  224. package/dist/events/objects/createEventResponder.js +27 -0
  225. package/dist/events/objects/createEventResponder.min.js +1 -0
  226. package/dist/events/objects/options/getListenerOptions.d.ts +6 -0
  227. package/dist/events/objects/options/getListenerOptions.js +22 -0
  228. package/dist/events/objects/options/getListenerOptions.min.js +1 -0
  229. package/dist/events/objects/options/numberToOptions.d.ts +8 -0
  230. package/dist/events/objects/options/numberToOptions.js +21 -0
  231. package/dist/events/objects/options/numberToOptions.min.js +1 -0
  232. package/dist/events/objects/options/optionsToNumber.d.ts +9 -0
  233. package/dist/events/objects/options/optionsToNumber.js +27 -0
  234. package/dist/events/objects/options/optionsToNumber.min.js +1 -0
  235. package/dist/events/objects/options.d.ts +6 -0
  236. package/dist/events/objects/options.js +24 -0
  237. package/dist/events/objects/options.min.js +1 -0
  238. package/dist/events/types.d.ts +87 -0
  239. package/dist/events/types.js +8 -0
  240. package/dist/events/types.min.js +1 -0
  241. package/dist/inflate/index.d.ts +4 -0
  242. package/dist/inflate/index.js +17 -0
  243. package/dist/inflate/index.min.js +1 -0
  244. package/dist/inflate/jsonToDomItem.d.ts +7 -0
  245. package/dist/inflate/jsonToDomItem.js +30 -0
  246. package/dist/inflate/jsonToDomItem.min.js +1 -0
  247. package/dist/main.d.ts +2 -0
  248. package/dist/main.js +24 -0
  249. package/dist/main.min.js +1 -0
  250. package/dist/render/generateElement.d.ts +7 -0
  251. package/dist/render/generateElement.js +41 -0
  252. package/dist/render/generateElement.min.js +1 -0
  253. package/dist/render/index.d.ts +8 -0
  254. package/dist/render/index.js +25 -0
  255. package/dist/render/index.min.js +1 -0
  256. package/dist/render/renderHtml.d.ts +16 -0
  257. package/dist/render/renderHtml.js +57 -0
  258. package/dist/render/renderHtml.min.js +1 -0
  259. package/dist/render/updateChildNodes.d.ts +7 -0
  260. package/dist/render/updateChildNodes.js +56 -0
  261. package/dist/render/updateChildNodes.min.js +1 -0
  262. package/dist/render/updateElement.d.ts +14 -0
  263. package/dist/render/updateElement.js +110 -0
  264. package/dist/render/updateElement.min.js +1 -0
  265. package/dist/render/updateElements.d.ts +9 -0
  266. package/dist/render/updateElements.js +33 -0
  267. package/dist/render/updateElements.min.js +1 -0
  268. package/dist/renderOnly.d.ts +2 -0
  269. package/dist/renderOnly.js +27 -0
  270. package/dist/renderOnly.min.js +1 -0
  271. package/dist/sync/index.d.ts +6 -0
  272. package/dist/sync/index.js +21 -0
  273. package/dist/sync/index.min.js +1 -0
  274. package/dist/sync/updateChildren.d.ts +7 -0
  275. package/dist/sync/updateChildren.js +38 -0
  276. package/dist/sync/updateChildren.min.js +1 -0
  277. package/dist/sync/updateDomItem.d.ts +8 -0
  278. package/dist/sync/updateDomItem.js +49 -0
  279. package/dist/sync/updateDomItem.min.js +1 -0
  280. package/dist/sync/updateDomItems.d.ts +9 -0
  281. package/dist/sync/updateDomItems.js +33 -0
  282. package/dist/sync/updateDomItems.min.js +1 -0
  283. package/package.json +74 -4
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const setParentItemReferences_1 = __importDefault(require("../domItem/tree/setParentItemReferences"));
15
+ const addDomItemProperties_1 = __importDefault(require("../domItem/objects/addDomItemProperties"));
16
+ /**
17
+ * Convert DOM Item to JSON string.
18
+ * @param jsonString
19
+ */
20
+ const jsonToDomItem = jsonString => {
21
+ const parsedJson = (0, setParentItemReferences_1.default)((0, addDomItemProperties_1.default)(JSON.parse(jsonString)));
22
+ if (parsedJson.nodeName === '#document') {
23
+ const root = parsedJson;
24
+ root.element = document;
25
+ root.head = root.children[0];
26
+ root.body = root.children[1];
27
+ }
28
+ return parsedJson;
29
+ };
30
+ exports.default = jsonToDomItem;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const setParentItemReferences_1=__importDefault(require("../domItem/tree/setParentItemReferences")),addDomItemProperties_1=__importDefault(require("../domItem/objects/addDomItemProperties")),jsonToDomItem=e=>{const t=(0,setParentItemReferences_1.default)((0,addDomItemProperties_1.default)(JSON.parse(e)));if("#document"===t.nodeName){const e=t;e.element=document,e.head=e.children[0],e.body=e.children[1]}return t};exports.default=jsonToDomItem;
package/dist/main.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const treeloom: any;
2
+ export = treeloom;
package/dist/main.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ /**
12
+ * All of the JSON DOM system functions for building and syncing a Virtual DOM (DomItem tree) to the real HTML DOM.
13
+ */
14
+ const index_1 = __importDefault(require("./events/index"));
15
+ const index_2 = __importDefault(require("./domItem/index"));
16
+ const documentItem_1 = require("./domItem/objects/documentItem");
17
+ const index_3 = __importDefault(require("./inflate/index"));
18
+ const index_4 = __importDefault(require("./deflate/index"));
19
+ const index_5 = __importDefault(require("./render/index"));
20
+ const index_6 = __importDefault(require("./sync/index"));
21
+ const index_7 = __importDefault(require("./diff/index"));
22
+ // documentItem is a getter (see withDocumentItem), so loading treeloom never touches a real document
23
+ const treeloom = (0, documentItem_1.withDocumentItem)(Object.assign({}, index_1.default, index_2.default, index_3.default, index_4.default, index_5.default, index_6.default, index_7.default));
24
+ module.exports = treeloom;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};const index_1=__importDefault(require("./events/index")),index_2=__importDefault(require("./domItem/index")),documentItem_1=require("./domItem/objects/documentItem"),index_3=__importDefault(require("./inflate/index")),index_4=__importDefault(require("./deflate/index")),index_5=__importDefault(require("./render/index")),index_6=__importDefault(require("./sync/index")),index_7=__importDefault(require("./diff/index")),treeloom=(0,documentItem_1.withDocumentItem)(Object.assign({},index_1.default,index_2.default,index_3.default,index_4.default,index_5.default,index_6.default,index_7.default));module.exports=treeloom;
@@ -0,0 +1,7 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Create an HTML element based on the provided attributes and return the element as an Object.
4
+ * @param domItem - The DomItem requiring matching HTML element property
5
+ */
6
+ declare const generateElement: (domItem: DomItem) => DomItem;
7
+ export default generateElement;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const updateElement_1 = __importDefault(require("./updateElement"));
15
+ /**
16
+ * Create a new DOM Node based on name and data.
17
+ * @param nodeName
18
+ * @param data
19
+ */
20
+ const makeElementType = (nodeName, data = null, is) => {
21
+ switch (nodeName) {
22
+ case '#text':
23
+ return document.createTextNode(data);
24
+ case '#comment':
25
+ return document.createComment(data);
26
+ default:
27
+ // A customized built-in element (<button is="fancy-button">) has to be given its name when it is created
28
+ return is ? document.createElement(nodeName, {
29
+ is
30
+ }) : document.createElement(nodeName);
31
+ }
32
+ };
33
+ /**
34
+ * Create an HTML element based on the provided attributes and return the element as an Object.
35
+ * @param domItem - The DomItem requiring matching HTML element property
36
+ */
37
+ const generateElement = domItem => {
38
+ domItem.element = makeElementType(domItem.nodeName, domItem.nodeValue, typeof domItem.attributes.is === 'string' ? domItem.attributes.is : undefined);
39
+ return (0, updateElement_1.default)(domItem);
40
+ };
41
+ exports.default = generateElement;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const updateElement_1=__importDefault(require("./updateElement")),makeElementType=(e,t=null,n)=>{switch(e){case"#text":return document.createTextNode(t);case"#comment":return document.createComment(t);default:return n?document.createElement(e,{is:n}):document.createElement(e)}},generateElement=e=>(e.element=makeElementType(e.nodeName,e.nodeValue,"string"==typeof e.attributes.is?e.attributes.is:void 0),(0,updateElement_1.default)(e));exports.default=generateElement;
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ generateElement: (domItem: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
3
+ renderHtml: (item?: import("../domItem/types").DomItem | null, parent?: import("../domItem/types").DomItem, index?: number) => import("../domItem/types").DomItem;
4
+ updateChildNodes: (domItem: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
5
+ updateElement: (domItem: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
6
+ updateElements: (config: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
7
+ };
8
+ export default _default;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const generateElement_1 = __importDefault(require("./generateElement"));
15
+ const renderHtml_1 = __importDefault(require("./renderHtml"));
16
+ const updateChildNodes_1 = __importDefault(require("./updateChildNodes"));
17
+ const updateElement_1 = __importDefault(require("./updateElement"));
18
+ const updateElements_1 = __importDefault(require("./updateElements"));
19
+ exports.default = {
20
+ generateElement: generateElement_1.default,
21
+ renderHtml: renderHtml_1.default,
22
+ updateChildNodes: updateChildNodes_1.default,
23
+ updateElement: updateElement_1.default,
24
+ updateElements: updateElements_1.default
25
+ };
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const generateElement_1=__importDefault(require("./generateElement")),renderHtml_1=__importDefault(require("./renderHtml")),updateChildNodes_1=__importDefault(require("./updateChildNodes")),updateElement_1=__importDefault(require("./updateElement")),updateElements_1=__importDefault(require("./updateElements"));exports.default={generateElement:generateElement_1.default,renderHtml:renderHtml_1.default,updateChildNodes:updateChildNodes_1.default,updateElement:updateElement_1.default,updateElements:updateElements_1.default};
@@ -0,0 +1,16 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * This is a shortcut for syncing a Virtual DOM (DomItem tree) item onto the real HTML DOM: builds the real elements
4
+ * for it and its descendants, inserts them into parent's children (the document body by default), and binds their
5
+ * associated listeners.
6
+ * @param item - The DomItem that we want to render the element for
7
+ * @param parent - Where to insert item, when it does not already have a parent - defaults to the
8
+ * document body, so passing nothing keeps working exactly as before
9
+ * @param index - Where in parent's children to put item - defaults to the end (a plain append), so passing nothing
10
+ * keeps working exactly as before. To insert item among parent's already-rendered content (existing real HTML),
11
+ * parent's children must already reflect that content first - see {@link updateDomItems}, which captures the real
12
+ * DOM into items. Skipping that step and inserting anyway will make the next render remove the untracked content,
13
+ * since it is invisible to parent.children.
14
+ */
15
+ declare const renderHtml: (item?: DomItem | null, parent?: DomItem, index?: number) => DomItem;
16
+ export default renderHtml;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const documentItem_1 = __importDefault(require("../domItem/objects/documentItem"));
15
+ const insertChild_1 = __importDefault(require("../domItem/tree/insertChild"));
16
+ const itemIdIndex_1 = require("../domItem/tree/itemIdIndex");
17
+ const setParentItemReferences_1 = __importDefault(require("../domItem/tree/setParentItemReferences"));
18
+ const updateChildNodes_1 = __importDefault(require("./updateChildNodes"));
19
+ const updateElements_1 = __importDefault(require("./updateElements"));
20
+ /**
21
+ * This is a shortcut for syncing a Virtual DOM (DomItem tree) item onto the real HTML DOM: builds the real elements
22
+ * for it and its descendants, inserts them into parent's children (the document body by default), and binds their
23
+ * associated listeners.
24
+ * @param item - The DomItem that we want to render the element for
25
+ * @param parent - Where to insert item, when it does not already have a parent - defaults to the
26
+ * document body, so passing nothing keeps working exactly as before
27
+ * @param index - Where in parent's children to put item - defaults to the end (a plain append), so passing nothing
28
+ * keeps working exactly as before. To insert item among parent's already-rendered content (existing real HTML),
29
+ * parent's children must already reflect that content first - see {@link updateDomItems}, which captures the real
30
+ * DOM into items. Skipping that step and inserting anyway will make the next render remove the untracked content,
31
+ * since it is invisible to parent.children.
32
+ */
33
+ const renderHtml = (item = null, parent = (0, documentItem_1.default)().body, index = parent.children.length) => {
34
+ const itemToRender = item === null ? (0, documentItem_1.default)() : item;
35
+ // Every descendant needs its parentItem chain in place before anything below tries to walk up it (a listener
36
+ // being bound looks up its root via getTopParentItem) - set it first, rather than after rendering the subtree.
37
+ (0, setParentItemReferences_1.default)(itemToRender);
38
+ if (itemToRender.parentItem === null) {
39
+ // excluding when documentItem was passed in, insert the item into parent, and place its real element among
40
+ // parent's real children - scoped to just this positioning, not a resync of parent's whole existing subtree
41
+ // (updateElements(parent) would walk every sibling's attributes too, reverting anything about them - like a
42
+ // style change some other, unrelated script made directly on the real DOM - that parent's items don't track)
43
+ (0, insertChild_1.default)(parent, item, index);
44
+ (0, updateChildNodes_1.default)(parent);
45
+ }
46
+ // Register this subtree (root item included) in its own root's id index - unconditionally, since this is
47
+ // correct and idempotent whichever branch above ran: a freshly-attached subtree needs it for the first time,
48
+ // an already-attached one being re-rendered just gets its own (unchanged) entries re-set, and the document
49
+ // root's own very first render (parentItem is {}, not null, so the branch above never runs for it) registers
50
+ // the root's own already-built initial content. Does nothing at all when itemToRender is rendered into some
51
+ // arbitrary, never-rooted container rather than a real DomItemRoot - see registerItemIds.
52
+ (0, itemIdIndex_1.registerItemIds)(itemToRender);
53
+ // Render the elements and return either to original reference, or updated documentItem (whichever is available)
54
+ const updatedItem = (0, updateElements_1.default)(itemToRender);
55
+ return item ?? updatedItem;
56
+ };
57
+ exports.default = renderHtml;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const documentItem_1=__importDefault(require("../domItem/objects/documentItem")),insertChild_1=__importDefault(require("../domItem/tree/insertChild")),itemIdIndex_1=require("../domItem/tree/itemIdIndex"),setParentItemReferences_1=__importDefault(require("../domItem/tree/setParentItemReferences")),updateChildNodes_1=__importDefault(require("./updateChildNodes")),updateElements_1=__importDefault(require("./updateElements")),renderHtml=(e=null,t=(0,documentItem_1.default)().body,r=t.children.length)=>{const d=null===e?(0,documentItem_1.default)():e;(0,setParentItemReferences_1.default)(d),null===d.parentItem&&((0,insertChild_1.default)(t,e,r),(0,updateChildNodes_1.default)(t)),(0,itemIdIndex_1.registerItemIds)(d);const u=(0,updateElements_1.default)(d);return e??u};exports.default=renderHtml;
@@ -0,0 +1,7 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Update all the childNodes for this domItem element to mach domItem children.
4
+ * @param domItem
5
+ */
6
+ declare const updateChildNodes: (domItem: DomItem) => DomItem;
7
+ export default updateChildNodes;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const updateElement_1 = __importDefault(require("./updateElement"));
15
+ /**
16
+ * Update all the childNodes for this domItem element to mach domItem children.
17
+ * @param domItem
18
+ */
19
+ const updateChildNodes = domItem => {
20
+ if (!domItem.element) {
21
+ domItem = (0, updateElement_1.default)(domItem);
22
+ }
23
+ if (!domItem.children || !domItem.children.length) {
24
+ domItem.children = [];
25
+ return domItem;
26
+ }
27
+ const element = domItem.element;
28
+ const previousChildNodes = Array.from(element.childNodes);
29
+ domItem.children.map((child, index) => {
30
+ const existing = previousChildNodes.find(childNode => childNode === child.element);
31
+ let childNode = existing ?? child.element;
32
+ if (!childNode) {
33
+ childNode = (0, updateElement_1.default)(child).element;
34
+ }
35
+ if (!previousChildNodes[index]) {
36
+ element.appendChild(childNode);
37
+ return childNode;
38
+ }
39
+ if (childNode !== previousChildNodes[index]) {
40
+ element.replaceChild(childNode, previousChildNodes[index]);
41
+ }
42
+ return childNode;
43
+ }).forEach((childNode, index) => {
44
+ domItem.children[index].element = childNode;
45
+ });
46
+ if (element.childNodes.length > domItem.children.length) {
47
+ const maxLength = domItem.children.length;
48
+ let nodeToRemove = element.childNodes[maxLength];
49
+ while (nodeToRemove) {
50
+ element.removeChild(nodeToRemove);
51
+ nodeToRemove = element.childNodes[maxLength];
52
+ }
53
+ }
54
+ return domItem;
55
+ };
56
+ exports.default = updateChildNodes;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const updateElement_1=__importDefault(require("./updateElement")),updateChildNodes=e=>{if(e.element||(e=(0,updateElement_1.default)(e)),!e.children||!e.children.length)return e.children=[],e;const t=e.element,l=Array.from(t.childNodes);if(e.children.map((e,d)=>{const n=l.find(t=>t===e.element);let r=n??e.element;return r||(r=(0,updateElement_1.default)(e).element),l[d]?(r!==l[d]&&t.replaceChild(r,l[d]),r):(t.appendChild(r),r)}).forEach((t,l)=>{e.children[l].element=t}),t.childNodes.length>e.children.length){const l=e.children.length;let d=t.childNodes[l];for(;d;)t.removeChild(d),d=t.childNodes[l]}return e};exports.default=updateChildNodes;
@@ -0,0 +1,14 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Update a single objects.DomItem element with the provided attributes / style / elementProperties.
4
+ *
5
+ * Safe to call standalone (not just through {@link updateElements}/{@link renderHtml}): whenever this ends up
6
+ * (re)generating domItem.element - because it had none yet, or because nodeName changed - it also re-attaches
7
+ * domItem's direct children onto that element via {@link updateChildNodes}, so a bare call never orphans an
8
+ * existing child subtree. The plain attribute/style patch path below doesn't touch domItem.element itself, so it
9
+ * doesn't need to.
10
+ * @param domItem - The DomItem having domItem changes to be applied to its
11
+ * element
12
+ */
13
+ declare const updateElement: (domItem: DomItem) => DomItem;
14
+ export default updateElement;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ require("core-js/modules/es.array.includes.js");
7
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
8
+ return mod && mod.__esModule ? mod : {
9
+ "default": mod
10
+ };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ const bindListeners_1 = __importDefault(require("../events/functions/bindListeners"));
16
+ const deactivateListeners_1 = __importDefault(require("../events/functions/deactivateListeners"));
17
+ const domItemChanges_1 = __importDefault(require("../diff/domItemChanges"));
18
+ const si_funciona_1 = __importDefault(require("si-funciona"));
19
+ const generateElement_1 = __importDefault(require("./generateElement"));
20
+ const updateChildNodes_1 = __importDefault(require("./updateChildNodes"));
21
+ /**
22
+ * Update a single objects.DomItem element with the provided attributes / style / elementProperties.
23
+ *
24
+ * Safe to call standalone (not just through {@link updateElements}/{@link renderHtml}): whenever this ends up
25
+ * (re)generating domItem.element - because it had none yet, or because nodeName changed - it also re-attaches
26
+ * domItem's direct children onto that element via {@link updateChildNodes}, so a bare call never orphans an
27
+ * existing child subtree. The plain attribute/style patch path below doesn't touch domItem.element itself, so it
28
+ * doesn't need to.
29
+ * @param domItem - The DomItem having domItem changes to be applied to its
30
+ * element
31
+ */
32
+ const updateElement = domItem => {
33
+ if (!domItem.element) {
34
+ return (0, updateChildNodes_1.default)((0, generateElement_1.default)((0, deactivateListeners_1.default)(domItem)));
35
+ }
36
+ const changes = (0, domItemChanges_1.default)(domItem);
37
+ // From here on the item has an element (an element which is missing was generated above)
38
+ const element = domItem.element;
39
+ const properties = element;
40
+ if (changes.removed.nodeName || changes.added.nodeName) {
41
+ // if the nodeName has changed then remove the element and create a new one
42
+ element.remove();
43
+ return (0, updateChildNodes_1.default)((0, generateElement_1.default)((0, deactivateListeners_1.default)(domItem)));
44
+ }
45
+ for (const dotKey in changes.removed) {
46
+ const value = changes.removed[dotKey];
47
+ if (!dotKey.includes('.')) {
48
+ if (dotKey in element) {
49
+ delete properties[dotKey];
50
+ continue;
51
+ }
52
+ element.removeAttribute(dotKey);
53
+ continue;
54
+ }
55
+ const baseKey = si_funciona_1.default.strBefore(dotKey, '.');
56
+ if (baseKey !== 'class' && baseKey !== 'style') {
57
+ throw new Error('Unhandled dotKey: ' + dotKey);
58
+ }
59
+ if (baseKey === 'class') {
60
+ element.classList.remove(value);
61
+ continue;
62
+ }
63
+ // The key is usually already kebab-case here (domItemChanges normalizes it), but not always - see the fix
64
+ // notes on the matching line below. kabobCase on an already-kebab string is a harmless no-op.
65
+ element.style.removeProperty(si_funciona_1.default.kabobCase(si_funciona_1.default.strAfter(dotKey, '.')));
66
+ }
67
+ for (const dotKey in changes.added) {
68
+ const value = changes.added[dotKey];
69
+ if (dotKey === 'className') {
70
+ element.className = value;
71
+ continue;
72
+ }
73
+ if (dotKey === 'style') {
74
+ // Update all styles based on incoming style object
75
+ // setProperty wants CSS names (background-color), but the style object is written in camelCase (backgroundColor)
76
+ for (const style in value) {
77
+ element.style.setProperty(si_funciona_1.default.kabobCase(style), value[style]);
78
+ }
79
+ continue;
80
+ }
81
+ if (!dotKey.includes('.')) {
82
+ if (dotKey in element && dotKey !== 'form') {
83
+ // Some things can be assigned directly, but 'form' attribute cannot
84
+ properties[dotKey] = value;
85
+ continue;
86
+ }
87
+ element.setAttribute(dotKey, value);
88
+ continue;
89
+ }
90
+ const baseKey = si_funciona_1.default.strBefore(dotKey, '.');
91
+ if (baseKey !== 'class' && baseKey !== 'style') {
92
+ throw new Error('Unhandled dotKey: ' + dotKey);
93
+ }
94
+ if (baseKey === 'class' && (/\s/.test(value) || !value)) {
95
+ // Skip this empty class name
96
+ continue;
97
+ }
98
+ if (baseKey === 'class') {
99
+ element.classList.add(value);
100
+ continue;
101
+ }
102
+ // domItemChanges is expected to hand this key through already kebab-cased, but a style property which was
103
+ // already assigned on the element (changed, not newly added) can come back through as its original camelCase
104
+ // form; CSSOM silently ignores setProperty with an invalid (camelCase) name, so the style is dropped with no
105
+ // error. kabobCase here is a harmless no-op when the key is already kebab, and a real fix when it is not.
106
+ element.style.setProperty(si_funciona_1.default.kabobCase(si_funciona_1.default.strAfter(dotKey, '.')), value);
107
+ }
108
+ return (0, bindListeners_1.default)(domItem);
109
+ };
110
+ exports.default = updateElement;
@@ -0,0 +1 @@
1
+ "use strict";require("core-js/modules/es.array.includes.js");var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const bindListeners_1=__importDefault(require("../events/functions/bindListeners")),deactivateListeners_1=__importDefault(require("../events/functions/deactivateListeners")),domItemChanges_1=__importDefault(require("../diff/domItemChanges")),si_funciona_1=__importDefault(require("si-funciona")),generateElement_1=__importDefault(require("./generateElement")),updateChildNodes_1=__importDefault(require("./updateChildNodes")),updateElement=e=>{if(!e.element)return(0,updateChildNodes_1.default)((0,generateElement_1.default)((0,deactivateListeners_1.default)(e)));const t=(0,domItemChanges_1.default)(e),s=e.element,n=s;if(t.removed.nodeName||t.added.nodeName)return s.remove(),(0,updateChildNodes_1.default)((0,generateElement_1.default)((0,deactivateListeners_1.default)(e)));for(const e in t.removed){const i=t.removed[e];if(!e.includes(".")){if(e in s){delete n[e];continue}s.removeAttribute(e);continue}const r=si_funciona_1.default.strBefore(e,".");if("class"!==r&&"style"!==r)throw new Error("Unhandled dotKey: "+e);"class"!==r?s.style.removeProperty(si_funciona_1.default.kabobCase(si_funciona_1.default.strAfter(e,"."))):s.classList.remove(i)}for(const e in t.added){const i=t.added[e];if("className"===e){s.className=i;continue}if("style"===e){for(const e in i)s.style.setProperty(si_funciona_1.default.kabobCase(e),i[e]);continue}if(!e.includes(".")){if(e in s&&"form"!==e){n[e]=i;continue}s.setAttribute(e,i);continue}const r=si_funciona_1.default.strBefore(e,".");if("class"!==r&&"style"!==r)throw new Error("Unhandled dotKey: "+e);("class"!==r||!/\s/.test(i)&&i)&&("class"!==r?s.style.setProperty(si_funciona_1.default.kabobCase(si_funciona_1.default.strAfter(e,".")),i):s.classList.add(i))}return(0,bindListeners_1.default)(e)};exports.default=updateElement;
@@ -0,0 +1,9 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Generate HTML element data for each object in the matrix
4
+ * WARNING: This is a recursive function.
5
+ * @param config - The DomItem having child DomItems with config changes to be
6
+ * applied
7
+ */
8
+ declare const updateElements: (config: DomItem) => DomItem;
9
+ export default updateElements;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const updateChildNodes_1 = __importDefault(require("./updateChildNodes"));
15
+ const updateElement_1 = __importDefault(require("./updateElement"));
16
+ /**
17
+ * Generate HTML element data for each object in the matrix
18
+ * WARNING: This is a recursive function.
19
+ * @param config - The DomItem having child DomItems with config changes to be
20
+ * applied
21
+ */
22
+ const updateElements = config => {
23
+ if (config.nodeName === '#document') {
24
+ for (const child of config.children) {
25
+ updateElements(child);
26
+ }
27
+ return config;
28
+ }
29
+ const domItem = (0, updateChildNodes_1.default)((0, updateElement_1.default)(config));
30
+ domItem.children.forEach(updateElements);
31
+ return domItem;
32
+ };
33
+ exports.default = updateElements;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const updateChildNodes_1=__importDefault(require("./updateChildNodes")),updateElement_1=__importDefault(require("./updateElement")),updateElements=e=>{if("#document"===e.nodeName){for(const t of e.children)updateElements(t);return e}const t=(0,updateChildNodes_1.default)((0,updateElement_1.default)(e));return t.children.forEach(updateElements),t};exports.default=updateElements;
@@ -0,0 +1,2 @@
1
+ declare const treeloomRenderOnly: any;
2
+ export = treeloomRenderOnly;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ /**
12
+ * The render-only subset of treeloom: build and sync a Virtual DOM (DomItem tree) to the real
13
+ * HTML DOM, and forward fired events elsewhere (see events/objects/setForwardEvents) instead of
14
+ * running local business logic - a consumer that never needs to run that logic locally never
15
+ * needs to go the other way (DOM back to JSON) either, so this excludes deflate, the one part of
16
+ * the full build with no other internal code path depending on it.
17
+ */
18
+ const index_1 = __importDefault(require("./events/index"));
19
+ const index_2 = __importDefault(require("./domItem/index"));
20
+ const documentItem_1 = require("./domItem/objects/documentItem");
21
+ const index_3 = __importDefault(require("./inflate/index"));
22
+ const index_4 = __importDefault(require("./render/index"));
23
+ const index_5 = __importDefault(require("./sync/index"));
24
+ const index_6 = __importDefault(require("./diff/index"));
25
+ // documentItem is a getter (see withDocumentItem), so loading treeloom never touches a real document
26
+ const treeloomRenderOnly = (0, documentItem_1.withDocumentItem)(Object.assign({}, index_1.default, index_2.default, index_3.default, index_4.default, index_5.default, index_6.default));
27
+ module.exports = treeloomRenderOnly;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};const index_1=__importDefault(require("./events/index")),index_2=__importDefault(require("./domItem/index")),documentItem_1=require("./domItem/objects/documentItem"),index_3=__importDefault(require("./inflate/index")),index_4=__importDefault(require("./render/index")),index_5=__importDefault(require("./sync/index")),index_6=__importDefault(require("./diff/index")),treeloomRenderOnly=(0,documentItem_1.withDocumentItem)(Object.assign({},index_1.default,index_2.default,index_3.default,index_4.default,index_5.default,index_6.default));module.exports=treeloomRenderOnly;
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ updateChildren: (domItem: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
3
+ updateDomItem: (config: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
4
+ updateDomItems: (config: import("../domItem/types").DomItem) => import("../domItem/types").DomItem;
5
+ };
6
+ export default _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const updateChildren_1 = __importDefault(require("./updateChildren"));
15
+ const updateDomItem_1 = __importDefault(require("./updateDomItem"));
16
+ const updateDomItems_1 = __importDefault(require("./updateDomItems"));
17
+ exports.default = {
18
+ updateChildren: updateChildren_1.default,
19
+ updateDomItem: updateDomItem_1.default,
20
+ updateDomItems: updateDomItems_1.default
21
+ };
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const updateChildren_1=__importDefault(require("./updateChildren")),updateDomItem_1=__importDefault(require("./updateDomItem")),updateDomItems_1=__importDefault(require("./updateDomItems"));exports.default={updateChildren:updateChildren_1.default,updateDomItem:updateDomItem_1.default,updateDomItems:updateDomItems_1.default};
@@ -0,0 +1,7 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Update all the children for this domItem to match the domItem element childNodes.
4
+ * @param domItem
5
+ */
6
+ declare const updateChildren: (domItem: DomItem) => DomItem;
7
+ export default updateChildren;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ /* This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
6
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7
+ return mod && mod.__esModule ? mod : {
8
+ "default": mod
9
+ };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ const createDomItem_1 = __importDefault(require("../domItem/objects/createDomItem"));
15
+ /**
16
+ * Update all the children for this domItem to match the domItem element childNodes.
17
+ * @param domItem
18
+ */
19
+ const updateChildren = domItem => {
20
+ if (!domItem.element) {
21
+ domItem.children = [];
22
+ return domItem;
23
+ }
24
+ const previousChildren = domItem.children;
25
+ domItem.children = [];
26
+ domItem.element.childNodes.forEach((childNode, index) => {
27
+ const existing = previousChildren.find(child => child.element === childNode);
28
+ const child = existing ?? (0, createDomItem_1.default)({
29
+ nodeName: childNode.nodeName.toLowerCase(),
30
+ nodeValue: childNode.nodeValue,
31
+ element: childNode
32
+ });
33
+ domItem.children[index] = child;
34
+ child.parentItem = domItem;
35
+ });
36
+ return domItem;
37
+ };
38
+ exports.default = updateChildren;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const createDomItem_1=__importDefault(require("../domItem/objects/createDomItem")),updateChildren=e=>{if(!e.element)return e.children=[],e;const t=e.children;return e.children=[],e.element.childNodes.forEach((r,n)=>{const o=t.find(e=>e.element===r),d=o??(0,createDomItem_1.default)({nodeName:r.nodeName.toLowerCase(),nodeValue:r.nodeValue,element:r});e.children[n]=d,d.parentItem=e}),e};exports.default=updateChildren;
@@ -0,0 +1,8 @@
1
+ import type { DomItem } from '../domItem/types';
2
+ /**
3
+ * Update a single objects.DomItem element with the provided attributes / style / elementProperties
4
+ * @param config - The DomItem having config changes to be applied to its
5
+ * element
6
+ */
7
+ declare const updateDomItem: (config: DomItem) => DomItem;
8
+ export default updateDomItem;