tungsten 0.1.59 → 0.1.61

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 (240) hide show
  1. package/dist/AnyComponent.d.ts.map +1 -1
  2. package/dist/ComponentInstance.d.ts +1 -2
  3. package/dist/ComponentInstance.d.ts.map +1 -1
  4. package/dist/ComponentInstance.js +4 -1
  5. package/dist/ComponentRenderInfo.type.d.ts +6 -0
  6. package/dist/ComponentRenderInfo.type.d.ts.map +1 -0
  7. package/dist/ComponentRenderInfo.type.js +1 -0
  8. package/dist/Components.d.ts +18 -2
  9. package/dist/Components.d.ts.map +1 -1
  10. package/dist/Components.js +105 -4
  11. package/dist/ContentNode.d.ts +3 -1
  12. package/dist/ContentNode.d.ts.map +1 -1
  13. package/dist/ContentNode.js +1 -0
  14. package/dist/Framework.d.ts +1 -1
  15. package/dist/Framework.d.ts.map +1 -1
  16. package/dist/Framework.js +42 -25
  17. package/dist/FrameworkConfig.d.ts +20 -4
  18. package/dist/FrameworkConfig.d.ts.map +1 -1
  19. package/dist/FunctionComponent.d.ts +2 -0
  20. package/dist/FunctionComponent.d.ts.map +1 -1
  21. package/dist/FunctionComponentStandIn.d.ts +9 -4
  22. package/dist/FunctionComponentStandIn.d.ts.map +1 -1
  23. package/dist/FunctionComponentStandIn.js +17 -2
  24. package/dist/Instance/Instance.d.ts.map +1 -1
  25. package/dist/Instance/InstanceConfig.d.ts +2 -0
  26. package/dist/Instance/InstanceConfig.d.ts.map +1 -1
  27. package/dist/RenderedContentNode.d.ts +6 -1
  28. package/dist/RenderedContentNode.d.ts.map +1 -1
  29. package/dist/RenderedContentNode.js +2 -2
  30. package/dist/RenderingNode.d.ts +23 -8
  31. package/dist/RenderingNode.d.ts.map +1 -1
  32. package/dist/RenderingNode.js +39 -8
  33. package/dist/Servers/DevServer.d.ts.map +1 -1
  34. package/dist/Servers/DevServer.js +74 -25
  35. package/dist/Servers/ProdServer.d.ts +5 -1
  36. package/dist/Servers/ProdServer.d.ts.map +1 -1
  37. package/dist/Servers/ProdServer.js +49 -33
  38. package/dist/Store/makeStore.d.ts.map +1 -1
  39. package/dist/TungstenApp.d.ts +11 -0
  40. package/dist/TungstenApp.d.ts.map +1 -0
  41. package/dist/TungstenApp.js +46 -0
  42. package/dist/TungstenElement.d.ts +3 -0
  43. package/dist/TungstenElement.d.ts.map +1 -0
  44. package/dist/TungstenElement.js +1 -0
  45. package/dist/_client/client.d.ts +4 -1
  46. package/dist/_client/client.d.ts.map +1 -1
  47. package/dist/_client/client.js +16 -9
  48. package/dist/babelPlugins/BabelTransformBindDirect.d.ts.map +1 -1
  49. package/dist/babelPlugins/BabelTransformBindVar.d.ts.map +1 -1
  50. package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts +1 -1
  51. package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts.map +1 -1
  52. package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts +1 -1
  53. package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts.map +1 -1
  54. package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts +1 -1
  55. package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts.map +1 -1
  56. package/dist/babelPlugins/BabelTransformComponentState.d.ts.map +1 -1
  57. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
  58. package/dist/babelPlugins/{BabelTransformCssImport.d.ts → BabelTransformCssImports.d.ts} +5 -3
  59. package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +1 -0
  60. package/dist/babelPlugins/BabelTransformCssImports.js +129 -0
  61. package/dist/babelPlugins/BabelTransformDependencyImportsOld.d.ts.map +1 -1
  62. package/dist/babelPlugins/BabelTransformDeproxyState.d.ts.map +1 -1
  63. package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
  64. package/dist/babelPlugins/BabelTransformPackageImports.js +110 -45
  65. package/dist/babelPlugins/BabelTransformReactive.d.ts.map +1 -1
  66. package/dist/babelPlugins/BabelTransformReactiveSvelteStyle.d.ts.map +1 -1
  67. package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +1 -1
  68. package/dist/babelPlugins/BabelTransformRemoveServerBlocks.js +5 -0
  69. package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts +2 -0
  70. package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts.map +1 -0
  71. package/dist/babelPlugins/BabelTransformRemoveServerCode.js +1 -0
  72. package/dist/babelPlugins/BabelTransformUniqueComponents.d.ts.map +1 -1
  73. package/dist/babelPlugins/fixImportsInSassErrorMessage.d.ts.map +1 -1
  74. package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.d.ts → transformPackageImports/BabelTransformDependencyImportsCjs.d.ts} +1 -1
  75. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -0
  76. package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.js → transformPackageImports/BabelTransformDependencyImportsCjs.js} +10 -3
  77. package/dist/babelPlugins/{BabelTransformDependencyImportsEsm.d.ts → transformPackageImports/BabelTransformDependencyImportsEsm.d.ts} +1 -1
  78. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -0
  79. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.js +112 -0
  80. package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.d.ts +2 -0
  81. package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.d.ts.map +1 -0
  82. package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.js +24 -0
  83. package/dist/bin/commands/compileSimplePackage.d.ts +2 -0
  84. package/dist/bin/commands/compileSimplePackage.d.ts.map +1 -0
  85. package/dist/bin/commands/compileSimplePackage.js +51 -0
  86. package/dist/bin/commands/static.js +2 -2
  87. package/dist/bin/index.d.ts.map +1 -1
  88. package/dist/bin/index.js +5 -0
  89. package/dist/browserStorage.d.ts.map +1 -1
  90. package/dist/build/babel.user.common.config.d.ts.map +1 -1
  91. package/dist/build/babel.user.common.config.js +2 -56
  92. package/dist/build/bundle.d.ts +1 -2
  93. package/dist/build/bundle.d.ts.map +1 -1
  94. package/dist/build/bundle.js +7 -4
  95. package/dist/build/compileJavascript.d.ts.map +1 -1
  96. package/dist/build/compileJavascript.js +23 -11
  97. package/dist/build/compilePackages.d.ts +0 -5
  98. package/dist/build/compilePackages.d.ts.map +1 -1
  99. package/dist/build/compilePackages.js +89 -82
  100. package/dist/build/compileUserApp.d.ts.map +1 -1
  101. package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +1 -1
  102. package/dist/build/copyPackageModulesToPackagesFolder.js +3 -1
  103. package/dist/build/createClientFiles.d.ts.map +1 -1
  104. package/dist/build/createClientFiles.js +43 -52
  105. package/dist/build/createInstanceConfigFile.d.ts +4 -0
  106. package/dist/build/createInstanceConfigFile.d.ts.map +1 -0
  107. package/dist/build/{createAppConfig.js → createInstanceConfigFile.js} +2 -2
  108. package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
  109. package/dist/build/makeBabelUserDevConfig.js +8 -14
  110. package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
  111. package/dist/build/makeBabelUserProdConfig.js +4 -5
  112. package/dist/componentProxyHandlers.d.ts.map +1 -1
  113. package/dist/components/Link.d.ts.map +1 -1
  114. package/dist/components/Link.js +1 -1
  115. package/dist/components/Stylesheet.d.ts.map +1 -1
  116. package/dist/components/Stylesheet.js +5 -3
  117. package/dist/createRef.d.ts +4 -2
  118. package/dist/createRef.d.ts.map +1 -1
  119. package/dist/createRef.js +5 -2
  120. package/dist/createRoutes.d.ts +3 -0
  121. package/dist/createRoutes.d.ts.map +1 -0
  122. package/dist/createRoutes.js +3 -0
  123. package/dist/defaultConfig.d.ts +1 -0
  124. package/dist/defaultConfig.d.ts.map +1 -1
  125. package/dist/defaultConfig.js +1 -0
  126. package/dist/findUserConfig.d.ts.map +1 -1
  127. package/dist/findUserConfig.js +1 -1
  128. package/dist/frameworkConfigSchema.d.ts +188 -0
  129. package/dist/frameworkConfigSchema.d.ts.map +1 -0
  130. package/dist/frameworkConfigSchema.js +65 -0
  131. package/dist/getConfig.d.ts +1 -15
  132. package/dist/getConfig.d.ts.map +1 -1
  133. package/dist/getConfig.js +12 -11
  134. package/dist/getRoutes.d.ts.map +1 -1
  135. package/dist/getRoutes.js +20 -15
  136. package/dist/getUserConfig.d.ts +3 -0
  137. package/dist/getUserConfig.d.ts.map +1 -0
  138. package/dist/getUserConfig.js +25 -0
  139. package/dist/hasDomain.d.ts.map +1 -1
  140. package/dist/hooks/getCurrentComponent.d.ts +4 -0
  141. package/dist/hooks/getCurrentComponent.d.ts.map +1 -1
  142. package/dist/hooks/getCurrentComponent.js +8 -2
  143. package/dist/hooks/globalType.d.ts +2 -0
  144. package/dist/hooks/globalType.d.ts.map +1 -0
  145. package/dist/hooks/globalType.js +1 -0
  146. package/dist/hooks/useState.d.ts +1 -1
  147. package/dist/hooks/useState.d.ts.map +1 -1
  148. package/dist/hooks/useState.js +5 -5
  149. package/dist/hydrate/hydrate.d.ts +1 -1
  150. package/dist/hydrate/hydrate.d.ts.map +1 -1
  151. package/dist/hydrate/hydrate.js +159 -53
  152. package/dist/indexInner.d.ts +5 -3
  153. package/dist/indexInner.d.ts.map +1 -1
  154. package/dist/indexInner.js +5 -3
  155. package/dist/jsx-runtime.d.ts +2 -0
  156. package/dist/jsx-runtime.d.ts.map +1 -0
  157. package/dist/jsx-runtime.js +1 -0
  158. package/dist/jsxRuntime.d.ts +1 -1
  159. package/dist/jsxRuntime.d.ts.map +1 -1
  160. package/dist/jsxRuntime.js +10 -2
  161. package/dist/makeFinalConfig.d.ts.map +1 -1
  162. package/dist/makeInstanceConfigFromFrameworkConfig.d.ts +4 -0
  163. package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -0
  164. package/dist/makeInstanceConfigFromFrameworkConfig.js +12 -0
  165. package/dist/makeServerRpc.d.ts.map +1 -1
  166. package/dist/nbsp.d.ts +3 -0
  167. package/dist/nbsp.d.ts.map +1 -0
  168. package/dist/nbsp.js +8 -0
  169. package/dist/render/componentNodeToRenderingTree.d.ts +6 -0
  170. package/dist/render/componentNodeToRenderingTree.d.ts.map +1 -0
  171. package/dist/render/componentNodeToRenderingTree.js +41 -0
  172. package/dist/render/contentToHtml.d.ts +9 -0
  173. package/dist/render/contentToHtml.d.ts.map +1 -0
  174. package/dist/render/contentToHtml.js +44 -0
  175. package/dist/render/contentToHtmlDev.d.ts +9 -0
  176. package/dist/render/contentToHtmlDev.d.ts.map +1 -0
  177. package/dist/render/contentToHtmlDev.js +4 -0
  178. package/dist/render/contentTreeToRenderingTree.d.ts.map +1 -1
  179. package/dist/render/contentTreeToRenderingTree.js +8 -8
  180. package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +1 -1
  181. package/dist/render/functionComponentNodeToRenderingTree.js +4 -2
  182. package/dist/render/instantiateClassComponent.d.ts +2 -2
  183. package/dist/render/instantiateClassComponent.d.ts.map +1 -1
  184. package/dist/render/instantiateClassComponent.js +1 -1
  185. package/dist/render/instantiateComponent.d.ts.map +1 -1
  186. package/dist/render/processProps.d.ts.map +1 -1
  187. package/dist/render/processProps.js +1 -1
  188. package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
  189. package/dist/render/renderingTreeToHtml.js +42 -8
  190. package/dist/render/rootToHtml.d.ts +2 -1
  191. package/dist/render/rootToHtml.d.ts.map +1 -1
  192. package/dist/render/rootToHtml.js +12 -6
  193. package/dist/render/rootToHtmlDev.d.ts +4 -3
  194. package/dist/render/rootToHtmlDev.d.ts.map +1 -1
  195. package/dist/render/rootToHtmlDev.js +2 -2
  196. package/dist/routing/MatchedRoute.d.ts.map +1 -1
  197. package/dist/routing/MatchedRoute.js +0 -3
  198. package/dist/routing/runContentFunction.d.ts +2 -0
  199. package/dist/routing/runContentFunction.d.ts.map +1 -0
  200. package/dist/routing/runContentFunction.js +13 -0
  201. package/dist/staticGen/getAppRoutes.d.ts.map +1 -1
  202. package/dist/staticGen/getAppRoutes.js +7 -6
  203. package/dist/staticGen/staticGen.d.ts.map +1 -1
  204. package/dist/staticGen/staticGen.js +9 -1
  205. package/dist/update/integrateUpdateVdom.d.ts +13 -1
  206. package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
  207. package/dist/update/integrateUpdateVdom.js +122 -61
  208. package/dist/update/integrateUpdateVdomPrebuild.d.ts +2 -0
  209. package/dist/update/integrateUpdateVdomPrebuild.d.ts.map +1 -0
  210. package/dist/update/integrateUpdateVdomPrebuild.js +1453 -0
  211. package/dist/validChildren.d.ts +4 -2
  212. package/dist/validChildren.d.ts.map +1 -1
  213. package/dist/validChildren.js +4 -0
  214. package/package.json +51 -45
  215. package/types/jsx/jsx.d.ts +10 -7
  216. package/dist/babelPlugins/BabelTransformCssImport.d.ts.map +0 -1
  217. package/dist/babelPlugins/BabelTransformCssImport.js +0 -80
  218. package/dist/babelPlugins/BabelTransformDependencyImportsCjs.d.ts.map +0 -1
  219. package/dist/babelPlugins/BabelTransformDependencyImportsEsm.d.ts.map +0 -1
  220. package/dist/babelPlugins/BabelTransformDependencyImportsEsm.js +0 -85
  221. package/dist/build/compileEnv.d.ts +0 -2
  222. package/dist/build/compileEnv.d.ts.map +0 -1
  223. package/dist/build/compileEnv.js +0 -132
  224. package/dist/build/createAppConfig.d.ts +0 -4
  225. package/dist/build/createAppConfig.d.ts.map +0 -1
  226. package/dist/build/webpack.user.prod.config.d.ts +0 -2
  227. package/dist/build/webpack.user.prod.config.d.ts.map +0 -1
  228. package/dist/build/webpack.user.prod.config.js +0 -337
  229. package/dist/createInstanceConfigFromFrameworkConfig.d.ts +0 -4
  230. package/dist/createInstanceConfigFromFrameworkConfig.d.ts.map +0 -1
  231. package/dist/createInstanceConfigFromFrameworkConfig.js +0 -9
  232. package/dist/getAppConfig.d.ts +0 -3
  233. package/dist/getAppConfig.d.ts.map +0 -1
  234. package/dist/getAppConfig.js +0 -12
  235. package/dist/render/componentNodeToRenderingToTree.d.ts +0 -6
  236. package/dist/render/componentNodeToRenderingToTree.d.ts.map +0 -1
  237. package/dist/render/componentNodeToRenderingToTree.js +0 -15
  238. package/dist/render/componentNodeToTree.d.ts +0 -5
  239. package/dist/render/componentNodeToTree.d.ts.map +0 -1
  240. package/dist/render/componentNodeToTree.js +0 -16
@@ -3,7 +3,7 @@ import { DomRegion } from "../DomRegion.js";
3
3
  import { DomPointer } from "../DomPointer.js";
4
4
  import { ContentNodeComponentIsClassComponent, ContentNodeIsNonRendered, ContentNodeIsLiteral, ContentNodeIsHtml, ContentNodeIsComponent, ContentNodeIsArray, ContentNodeIsElement, ContentNodeElementHasValidKey } from "../ContentNode.js";
5
5
  import { StringIsHtmlEvent, htmlEvents } from "../htmlEvents.js";
6
- import { warn } from "../appOutput.js";
6
+ import { out, warn } from "../appOutput.js";
7
7
  import { getStyledContentFromFunctionComponent } from "../getStyledContentFromFunctionComponent.js";
8
8
  import { FunctionElement } from "../FunctionComponentStandIn.js";
9
9
  import { jssToCss } from "../style/jssToCss.js";
@@ -17,12 +17,19 @@ import { $key, $props, $routeData, $routeParams, $type } from "../contentNodeSym
17
17
  import { printComponentNamesInSource } from "../render/printComponentNameInSource.js";
18
18
  import { bindableHtmlElementsNumber, bindableHtmlElementsString } from "../components/bindable/bindableHtmlElements.js";
19
19
  import { checkedValueToBoolean } from "../checkedValueToBoolean.js";
20
+ import { setCurrentComponent } from 'tungsten/hooks/setCurrentComponent.js';
21
+ import { clearCurrentComponent } from 'tungsten/hooks/clearCurrentComponent.js';
20
22
  function debug(...texts) {
21
23
  //console.log(...texts)
22
24
  //console.log(getStackTrace().split('\n')[2])
23
25
  }
26
+ const timing = true; // eslint-disable-line no-type-assertion/no-type-assertion
24
27
  // need to be adapted to work for func components?
25
28
  export async function integrateElementUpdateVdom(element, newContent) {
29
+ let startTime = 0;
30
+ if (timing) startTime = new Date().getMilliseconds();
31
+ debug(`integrateElementUpdateVdom`, element);
32
+ debug(`integrateElementUpdateVdom`, newContent);
26
33
  //console.log('***** integrateElementUpdateVdom', element.constructor.name, '*****')
27
34
  //console.log(newContent, element.__currentContent)
28
35
  // if (element.constructor.name === 'ViewpointComponent') return {
@@ -33,7 +40,7 @@ export async function integrateElementUpdateVdom(element, newContent) {
33
40
  const instance = element.__instance;
34
41
  // get the content tree that was previous rendered
35
42
  if (element.__currentContent === $contentNull) {
36
- throwError('integrateElementContent()', '__currentContent is $noContent (element that is updating is missing info for current content)');
43
+ throwError('integrateElementContent()', '__currentContent is $contentNull (element that is updating is missing info for current content)');
37
44
  }
38
45
  const currentContent = element.__currentContent;
39
46
  debug(`${element.constructor.name} currentContent`, currentContent);
@@ -49,8 +56,8 @@ export async function integrateElementUpdateVdom(element, newContent) {
49
56
  debug(`get position of first element for '${element.constructor.name}'`);
50
57
  debug('dom region', domRegion);
51
58
  const previousPositionOfFirstElement = domRegion.positionOfFirst();
52
- const previousPositionOfLastElement = domRegion.positionOfLast();
53
- const previousNodesLength = previousPositionOfFirstElement >= 0 ? 1 + previousPositionOfLastElement - previousPositionOfFirstElement : 0;
59
+ //const previousPositionOfLastElement = domRegion.positionOfLast()
60
+ //const previousNodesLength = (previousPositionOfFirstElement >= 0) ? 1 + previousPositionOfLastElement - previousPositionOfFirstElement : 0
54
61
  //console.log('previousPositionOfFirstElement', previousPositionOfFirstElement)
55
62
  //console.log('previousPositionOfLastElement', previousPositionOfLastElement)
56
63
  const domPointer = new DomPointer(domRegion.parent, previousPositionOfFirstElement);
@@ -89,6 +96,7 @@ export async function integrateElementUpdateVdom(element, newContent) {
89
96
  const newPositionOfLastElement = domRegion.positionOfLast();
90
97
  const newNodesLength = newPositionOfFirstElement >= 0 ? 1 + newPositionOfLastElement - newPositionOfFirstElement : 0;
91
98
  //console.log('finished updating element. ', element.constructor.name, ' El positions:', newPositionOfFirstElement, newPositionOfLastElement)
99
+ if (timing) out(`Updated ${element.constructor.name} in ${new Date().getMilliseconds() - startTime}ms`);
92
100
  // newNodesLength previousNodesLength
93
101
  return {
94
102
  renderedContent: renderedTree,
@@ -115,10 +123,14 @@ async function applyUpdate({
115
123
  domPointer,
116
124
  parentNode
117
125
  }) {
118
- //console.log('applyUpdate', newNode)
126
+ //console.log('applyUpdate')
127
+ //console.log('newNode', newNode)
128
+ //console.log('oldNode', oldNode)
129
+ //console.log('parentNode', parentNode)
119
130
  //console.log('domPointer.index', domPointer.index)
120
131
  debug('existing node', oldNode);
121
132
  if (ContentNodeIsNonRendered(newNode)) {
133
+ console.log('DD delete node because current node is non rendered');
122
134
  debug('DD delete node because current node is non rendered');
123
135
  deleteNodeIfRendered(oldNode);
124
136
  return makeRenderedContentNodeNonRendered();
@@ -238,6 +250,7 @@ async function applyUpdate({
238
250
  // trim
239
251
  for (const oldChild of tempOldChildren) {
240
252
  if (oldChild) {
253
+ console.log('deleting old child', oldChild);
241
254
  deleteNodeIfRendered(oldChild);
242
255
  }
243
256
  }
@@ -269,12 +282,14 @@ async function applyUpdate({
269
282
  i++;
270
283
  }
271
284
  while (i < oldNode.length) {
285
+ console.log('deleting old child 2', oldNode[i]);
272
286
  deleteNodeIfRendered(oldNode[i]);
273
287
  i++;
274
288
  }
275
289
  return renderedNodes;
276
290
  }
277
291
  } else {
292
+ console.log('DD delete node because current node is array and existing node is not', oldNode);
278
293
  debug('DD delete node because current node is array and existing node is not');
279
294
  deleteNodeIfRendered(oldNode);
280
295
  // insert
@@ -309,7 +324,7 @@ async function applyUpdate({
309
324
  debug(`!!!!dom pointer index is`, domPointer.index, 'after updating literal node');
310
325
  return makeRenderedContentNodeLiteral(newNode, oldNode.domNode);
311
326
  } else {
312
- //console.log('deleting old node and creating literal')
327
+ console.log('DD delete node because current node is literal and existing node is not', oldNode);
313
328
  debug('DD delete node because current node is literal and existing node is not');
314
329
  deleteNodeIfRendered(oldNode);
315
330
  // insert text node
@@ -323,13 +338,18 @@ async function applyUpdate({
323
338
  //console.log('comparing html el', newNode, 'to', oldNode)
324
339
  //console.log('applying an html node', newNode)
325
340
  processHtmlNode(newNode, parentNode);
341
+ debug('old node is html', WideRenderedContentNodeIsHtml(oldNode));
342
+ if (WideRenderedContentNodeIsHtml(oldNode)) {
343
+ debug('node types', newNode[$type].toLocaleLowerCase(), oldNode[$type].toLocaleLowerCase(), newNode[$type].toLocaleLowerCase() === oldNode[$type].toLocaleLowerCase());
344
+ }
326
345
  if (WideRenderedContentNodeIsHtml(oldNode) && newNode[$type].toLocaleLowerCase() === oldNode[$type].toLocaleLowerCase()) {
327
346
  //newNode[$props].it = it
328
347
  //console.log('updating html node', newNode[$type])
348
+ //console.log('old node', oldNode[$type])
329
349
  debug('updating html node', newNode[$type]);
330
350
  // !!!! update
331
351
  const domNode = oldNode.domNode;
332
- updateAttributes(newNode, domNode);
352
+ updateAttributes(newNode, oldNode, domNode);
333
353
  domPointer.increment();
334
354
  debug(`!!!!dom pointer index is`, domPointer.index, 'after updating html node');
335
355
  // !!! handle children
@@ -356,44 +376,21 @@ async function applyUpdate({
356
376
  return renderedHtmlElement;
357
377
  }
358
378
  } else if (ContentNodeIsComponent(newNode)) {
359
- //console.log('comparing component node', newNode, 'to', oldNode)
360
- //console.log('Comp A', WideRenderedContentNodeIsComponent(oldNode))
361
- //if (WideRenderedContentNodeIsComponent(oldNode)) {
362
- //console.log('Comp B', newNode[$type] === oldNode[$type])
363
- //console.log('Comp C', oldNode[$key] !== undefined)
364
- //console.log('Comp D', newNode[$key] !== undefined)
365
- //console.log('Comp E', (oldNode[$key] !== undefined && newNode[$key] !== undefined))
366
- //console.log('Comp F', oldNode[$key] === newNode[$key])SW
367
- //}
368
379
  //console.log('Comp A', WideRenderedContentNodeIsComponent(oldNode))
369
380
  if (WideRenderedContentNodeIsComponent(oldNode) && newNode[$type] === oldNode[$type] && (oldNode[$key] !== undefined && newNode[$key] !== undefined || oldNode[$key] === newNode[$key])) {
370
381
  //console.log('updating tu el', newNode, oldNode[$key], newNode[$key])
371
382
  // update
372
- if (ContentNodeComponentIsClassComponent(newNode)) {
373
- debug('updating component', newNode[$type].name);
374
- return await updateClassComponent({
375
- parent: tungstenElement,
376
- instance,
377
- newNode,
378
- oldNode: oldNode,
379
- // eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be class comp, because type is the same as newNode
380
- domPointer
381
- });
382
- } else {
383
- debug('updating function component', newNode[$type].name);
384
- return await updateFunctionComponent({
385
- parent: tungstenElement,
386
- instance,
387
- newNode,
388
- oldNode: oldNode,
389
- // eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be function comp, because type is the same as newNode
390
- domPointer
391
- });
392
- }
383
+ return updateComponent({
384
+ newNode,
385
+ parent: tungstenElement,
386
+ instance,
387
+ oldNode,
388
+ domPointer
389
+ });
393
390
  } else {
394
391
  //console.log('deleting and replacing node', oldNode)
395
- //console.log('new Comp El', newNode)
396
- debug('deletin node and creating component', newNode[$type].constructor.name, oldNode);
392
+ console.log('deleting node and creating component', newNode[$type].constructor.name, oldNode);
393
+ debug('deleting node and creating component', newNode[$type].constructor.name, oldNode);
397
394
  deleteNodeIfRendered(oldNode);
398
395
  // insert new
399
396
  //console.log('Creating tung comp in applyUpdate')
@@ -411,6 +408,35 @@ async function applyUpdate({
411
408
  const n = newNode; // eslint-disable-line @typescript-eslint/no-unused-vars
412
409
  return makeRenderedContentNodeNonRendered();
413
410
  }
411
+ async function updateComponent({
412
+ newNode,
413
+ parent,
414
+ instance,
415
+ oldNode,
416
+ domPointer
417
+ }) {
418
+ if (ContentNodeComponentIsClassComponent(newNode)) {
419
+ debug('updating component', newNode[$type].name);
420
+ return await updateClassComponent({
421
+ parent,
422
+ instance,
423
+ newNode,
424
+ oldNode: oldNode,
425
+ // eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be class comp, because type is the same as newNode
426
+ domPointer
427
+ });
428
+ } else {
429
+ debug('updating function component', newNode[$type].name);
430
+ return await updateFunctionComponent({
431
+ parent,
432
+ instance,
433
+ newNode,
434
+ oldNode: oldNode,
435
+ // eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be function comp, because type is the same as newNode
436
+ domPointer
437
+ });
438
+ }
439
+ }
414
440
  function moveRenderedContent(renderedContent, domPointer) {
415
441
  //console.log('moving, index', domPointer.index, renderedContent)
416
442
  if (RenderedContentNodeIsArray(renderedContent)) {
@@ -458,6 +484,7 @@ function moveDomNode(domNode, domPointer) {
458
484
  domPointer.increment();
459
485
  }
460
486
  function deleteNodeIfRendered(node) {
487
+ //console.log('-deleteNodeIfRendered', node)
461
488
  debug('-deleteNodeIfRendered', node);
462
489
  if (node !== $contentNull && !RenderedContentNodeIsNonRendered(node)) {
463
490
  //node
@@ -648,7 +675,7 @@ export function processHtmlNode(node, parentNode) {
648
675
  const [bindObject, bindKey] = props.bindRadio;
649
676
  props.checked = bindObject[bindKey] === props.value;
650
677
  const handler = event => {
651
- console.log('bound radio changed 3', event.target.value);
678
+ //console.log('bound radio changed 3', (event.target as HTMLCheckedBindableElement).value)
652
679
  bindObject[bindKey] = event.target.value;
653
680
  };
654
681
  if (eventName in props) {
@@ -722,6 +749,11 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
722
749
  htmlEl.appendChild(el.cloneNode(true));
723
750
  }
724
751
  }
752
+ //console.log('creating hmtl node', node[$type])
753
+ //console.log('has ref?', 'ref' in node[$props])
754
+ if ('ref' in node[$props]) {
755
+ node[$props].ref.current = htmlEl;
756
+ }
725
757
  debug('dom parent', domPointer.parent);
726
758
  debug('dom parent children length', domPointer.parent.childNodes.length);
727
759
  debug('domPointer.index', domPointer.index);
@@ -773,6 +805,7 @@ function addAttributes(node, domNode) {
773
805
  domNode.addEventListener(eventName, handler);
774
806
  domNode[htmlEventHandlerKey(eventName)] = handler;
775
807
  } else {
808
+ //if (! (key in ignoreAttributes)) {
776
809
  //console.log('add attr', key, attributes[key])
777
810
  if (typeof attributes[key] === 'boolean') {
778
811
  //console.log('bool attr', attributes[key])
@@ -781,39 +814,60 @@ function addAttributes(node, domNode) {
781
814
  //console.log('string attr', String(attributes[key]))
782
815
  domNode.setAttribute(key, String(attributes[key]));
783
816
  }
817
+ //}
784
818
  }
785
819
  }
820
+ domNode.__tungsten_oldAttributes = attributes;
821
+ return attributes;
786
822
  }
787
823
  const clickEvents = [['onClick', 'click']];
788
- function updateAttributes(node, domNodeHTMLElement) {
824
+ function updateAttributes(node, oldNode, domNodeHTMLElement) {
825
+ //console.log('-updateAttributes node', node)
826
+ //console.log('domNodeHTMLElement', domNodeHTMLElement)
789
827
  const domNode = domNodeHTMLElement;
828
+ //console.log('-updateAttributes', node)
790
829
  debug('-updateAttributes', node);
791
- const attributes = processAttributes(node);
792
- debug('attributes', attributes);
793
- for (const attr of domNode.attributes) {
794
- if (!(attr.name in attributes)) {
795
- debug('remove attr', attr.name);
796
- removeAttribute(domNode, attr.name);
830
+ const newAttributes = processAttributes(node);
831
+ // are re-process the old node attribs here to we can see what we applied last time.
832
+ // would be better to save this and then grab it later
833
+ //const oldAttributes = processAttributes(oldNode)
834
+ const oldAttributes = domNode.__tungsten_oldAttributes;
835
+ //console.log('newAttributes', newAttributes)
836
+ //console.log('oldAttributes', oldAttributes)
837
+ debug('attributes', newAttributes);
838
+ debug('oldAttributes', oldAttributes);
839
+ for (const attr in oldAttributes) {
840
+ if (!(attr in newAttributes)) {
841
+ debug('remove attr', attr);
842
+ removeAttribute(domNode, attr);
797
843
  }
798
844
  }
845
+ // for (const attr of domNode.attributes) {
846
+ // if ( ! (attr.name in newAttributes) ) {
847
+ // debug('remove attr', attr.name)
848
+ // removeAttribute(domNode, attr.name)
849
+ // }
850
+ // }
799
851
  //if (attributes.onClick !== undefined)
800
852
  for (const [event, eventName] of clickEvents) {
801
- if (attributes[event] === undefined) {
853
+ if (newAttributes[event] === undefined) {
802
854
  debug('remove event', eventName);
803
855
  //!!
804
856
  domNode.removeEventListener(eventName, domNode[htmlEventHandlerKey(eventName)]);
805
857
  }
806
858
  }
807
- for (const key in attributes) {
859
+ for (const key in newAttributes) {
808
860
  switch (key) {
809
861
  case 'onClick':
810
862
  {
811
863
  debug('add onclick');
812
864
  const clickHandlerKey = htmlEventHandlerKey('click');
813
865
  debug('domNode.' + clickHandlerKey, domNode[clickHandlerKey]);
814
- if (domNode[clickHandlerKey]) domNode.removeEventListener('click', domNode[clickHandlerKey]);
866
+ if (domNode[clickHandlerKey]) {
867
+ domNode.removeEventListener('click', domNode[clickHandlerKey]);
868
+ }
815
869
  // if its a button without type="submit", prevent default to stop it from submitting forms
816
- const handler = attributes[key];
870
+ const handler = newAttributes[key];
817
871
  // const handler = (key === 'onClick' && node[$type] === 'button' && node[$props].type !== 'submit')
818
872
  // ? (event: Event) => { event.preventDefault(); return (attributes[key] as EventListener)(event) }
819
873
  // : attributes[key] as EventListener
@@ -829,20 +883,26 @@ function updateAttributes(node, domNodeHTMLElement) {
829
883
  //if (domNode.tagName === 'input' || domNode.tagName === 'INPUT') continue
830
884
  // try to set value directly for inputs that aren't updating with the below code
831
885
  if (key === 'value') {
832
- domNode.value = String(attributes[key]);
886
+ domNode.value = String(newAttributes[key]);
833
887
  } else {
834
- if (typeof attributes[key] === 'boolean') {
835
- if (attributes[key]) domNode.setAttribute(key, '');else removeAttribute(domNode, key);
836
- } else if (attributes[key] === undefined || attributes[key] === null) {
888
+ if (typeof newAttributes[key] === 'boolean') {
889
+ if (newAttributes[key]) domNode.setAttribute(key, '');else removeAttribute(domNode, key);
890
+ } else if (newAttributes[key] === undefined || newAttributes[key] === null) {
837
891
  removeAttribute(domNode, key);
838
892
  } else {
839
- domNode.setAttribute(key, String(attributes[key]));
893
+ domNode.setAttribute(key, String(newAttributes[key]));
840
894
  }
841
895
  }
842
896
  }
843
897
  }
844
898
  }
899
+ domNode.__tungsten_oldAttributes = newAttributes;
900
+ return newAttributes;
845
901
  }
902
+ // const ignoreAttributes = {
903
+ // 'ref': true,
904
+ // //'key': true
905
+ // }
846
906
  function processAttributes(node) {
847
907
  const {
848
908
  [$props]: props
@@ -852,6 +912,7 @@ function processAttributes(node) {
852
912
  const attributes = {
853
913
  ...props
854
914
  };
915
+ delete attributes.ref;
855
916
  delete attributes.class;
856
917
  if (attributes.className !== undefined) attributes.class = attributes.className;
857
918
  delete attributes.className;
@@ -907,7 +968,7 @@ function processAttributes(node) {
907
968
  }
908
969
  return attributes;
909
970
  }
910
- async function createTungstenComponent({
971
+ export async function createTungstenComponent({
911
972
  parent,
912
973
  instance,
913
974
  node,
@@ -923,7 +984,7 @@ async function createTungstenComponent({
923
984
  // need to set a domRegion
924
985
  // element.__domRegion = domRegion
925
986
  }
926
- let cc = 0;
987
+ let cc = 0; // debugging aid
927
988
  async function createTungstenClassComponent(parent, instance, node, domPointer) {
928
989
  //console.log('creating tung class comp', node[$type].name)
929
990
  //console.log('domPointer', domPointer)
@@ -938,7 +999,7 @@ async function createTungstenClassComponent(parent, instance, node, domPointer)
938
999
  routeParams: node[$routeParams],
939
1000
  routeData: node[$routeData],
940
1001
  instance,
941
- parentComponent: parent
1002
+ parentElement: parent
942
1003
  });
943
1004
  await element.__init();
944
1005
  const content = await element.__initialContent();
@@ -995,11 +1056,11 @@ async function createTungstenFunctionComponent(parent, instance, node, domPointe
995
1056
  debug(`[${x}]`, 'domPointer.parent', domPointer.parent);
996
1057
  debug(`[${x}]`, 'dom index', domPointer.index);
997
1058
  const element = new FunctionElement(node[$type], node[$props], node[$routeParams], node[$routeData], instance, parent);
998
- // MC? setCurrentComponent(element)
1059
+ setCurrentComponent(element);
999
1060
  const content = await getStyledContentFromFunctionComponent(element);
1000
1061
  debug('new func comp content', content);
1001
1062
  //const content = await getStyledContentFromFunctionComponent(node.type, node.props)
1002
- // MC? clearCurrentComponent()
1063
+ clearCurrentComponent();
1003
1064
  debug('content', content);
1004
1065
  const compName = node[$type].name; // should take into account other factors // maybe in render too
1005
1066
  const openingComment = createComment({
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integrateUpdateVdomPrebuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrateUpdateVdomPrebuild.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdomPrebuild.ts"],"names":[],"mappings":""}