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.
- package/dist/AnyComponent.d.ts.map +1 -1
- package/dist/ComponentInstance.d.ts +1 -2
- package/dist/ComponentInstance.d.ts.map +1 -1
- package/dist/ComponentInstance.js +4 -1
- package/dist/ComponentRenderInfo.type.d.ts +6 -0
- package/dist/ComponentRenderInfo.type.d.ts.map +1 -0
- package/dist/ComponentRenderInfo.type.js +1 -0
- package/dist/Components.d.ts +18 -2
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +105 -4
- package/dist/ContentNode.d.ts +3 -1
- package/dist/ContentNode.d.ts.map +1 -1
- package/dist/ContentNode.js +1 -0
- package/dist/Framework.d.ts +1 -1
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js +42 -25
- package/dist/FrameworkConfig.d.ts +20 -4
- package/dist/FrameworkConfig.d.ts.map +1 -1
- package/dist/FunctionComponent.d.ts +2 -0
- package/dist/FunctionComponent.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.d.ts +9 -4
- package/dist/FunctionComponentStandIn.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.js +17 -2
- package/dist/Instance/Instance.d.ts.map +1 -1
- package/dist/Instance/InstanceConfig.d.ts +2 -0
- package/dist/Instance/InstanceConfig.d.ts.map +1 -1
- package/dist/RenderedContentNode.d.ts +6 -1
- package/dist/RenderedContentNode.d.ts.map +1 -1
- package/dist/RenderedContentNode.js +2 -2
- package/dist/RenderingNode.d.ts +23 -8
- package/dist/RenderingNode.d.ts.map +1 -1
- package/dist/RenderingNode.js +39 -8
- package/dist/Servers/DevServer.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +74 -25
- package/dist/Servers/ProdServer.d.ts +5 -1
- package/dist/Servers/ProdServer.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +49 -33
- package/dist/Store/makeStore.d.ts.map +1 -1
- package/dist/TungstenApp.d.ts +11 -0
- package/dist/TungstenApp.d.ts.map +1 -0
- package/dist/TungstenApp.js +46 -0
- package/dist/TungstenElement.d.ts +3 -0
- package/dist/TungstenElement.d.ts.map +1 -0
- package/dist/TungstenElement.js +1 -0
- package/dist/_client/client.d.ts +4 -1
- package/dist/_client/client.d.ts.map +1 -1
- package/dist/_client/client.js +16 -9
- package/dist/babelPlugins/BabelTransformBindDirect.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformBindVar.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformComponentState.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
- package/dist/babelPlugins/{BabelTransformCssImport.d.ts → BabelTransformCssImports.d.ts} +5 -3
- package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +1 -0
- package/dist/babelPlugins/BabelTransformCssImports.js +129 -0
- package/dist/babelPlugins/BabelTransformDependencyImportsOld.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformDeproxyState.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.js +110 -45
- package/dist/babelPlugins/BabelTransformReactive.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformReactiveSvelteStyle.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.js +5 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts +2 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts.map +1 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.js +1 -0
- package/dist/babelPlugins/BabelTransformUniqueComponents.d.ts.map +1 -1
- package/dist/babelPlugins/fixImportsInSassErrorMessage.d.ts.map +1 -1
- package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.d.ts → transformPackageImports/BabelTransformDependencyImportsCjs.d.ts} +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -0
- package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.js → transformPackageImports/BabelTransformDependencyImportsCjs.js} +10 -3
- package/dist/babelPlugins/{BabelTransformDependencyImportsEsm.d.ts → transformPackageImports/BabelTransformDependencyImportsEsm.d.ts} +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -0
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.js +112 -0
- package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.d.ts +2 -0
- package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.d.ts.map +1 -0
- package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.js +24 -0
- package/dist/bin/commands/compileSimplePackage.d.ts +2 -0
- package/dist/bin/commands/compileSimplePackage.d.ts.map +1 -0
- package/dist/bin/commands/compileSimplePackage.js +51 -0
- package/dist/bin/commands/static.js +2 -2
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +5 -0
- package/dist/browserStorage.d.ts.map +1 -1
- package/dist/build/babel.user.common.config.d.ts.map +1 -1
- package/dist/build/babel.user.common.config.js +2 -56
- package/dist/build/bundle.d.ts +1 -2
- package/dist/build/bundle.d.ts.map +1 -1
- package/dist/build/bundle.js +7 -4
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +23 -11
- package/dist/build/compilePackages.d.ts +0 -5
- package/dist/build/compilePackages.d.ts.map +1 -1
- package/dist/build/compilePackages.js +89 -82
- package/dist/build/compileUserApp.d.ts.map +1 -1
- package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +1 -1
- package/dist/build/copyPackageModulesToPackagesFolder.js +3 -1
- package/dist/build/createClientFiles.d.ts.map +1 -1
- package/dist/build/createClientFiles.js +43 -52
- package/dist/build/createInstanceConfigFile.d.ts +4 -0
- package/dist/build/createInstanceConfigFile.d.ts.map +1 -0
- package/dist/build/{createAppConfig.js → createInstanceConfigFile.js} +2 -2
- package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserDevConfig.js +8 -14
- package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserProdConfig.js +4 -5
- package/dist/componentProxyHandlers.d.ts.map +1 -1
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +1 -1
- package/dist/components/Stylesheet.d.ts.map +1 -1
- package/dist/components/Stylesheet.js +5 -3
- package/dist/createRef.d.ts +4 -2
- package/dist/createRef.d.ts.map +1 -1
- package/dist/createRef.js +5 -2
- package/dist/createRoutes.d.ts +3 -0
- package/dist/createRoutes.d.ts.map +1 -0
- package/dist/createRoutes.js +3 -0
- package/dist/defaultConfig.d.ts +1 -0
- package/dist/defaultConfig.d.ts.map +1 -1
- package/dist/defaultConfig.js +1 -0
- package/dist/findUserConfig.d.ts.map +1 -1
- package/dist/findUserConfig.js +1 -1
- package/dist/frameworkConfigSchema.d.ts +188 -0
- package/dist/frameworkConfigSchema.d.ts.map +1 -0
- package/dist/frameworkConfigSchema.js +65 -0
- package/dist/getConfig.d.ts +1 -15
- package/dist/getConfig.d.ts.map +1 -1
- package/dist/getConfig.js +12 -11
- package/dist/getRoutes.d.ts.map +1 -1
- package/dist/getRoutes.js +20 -15
- package/dist/getUserConfig.d.ts +3 -0
- package/dist/getUserConfig.d.ts.map +1 -0
- package/dist/getUserConfig.js +25 -0
- package/dist/hasDomain.d.ts.map +1 -1
- package/dist/hooks/getCurrentComponent.d.ts +4 -0
- package/dist/hooks/getCurrentComponent.d.ts.map +1 -1
- package/dist/hooks/getCurrentComponent.js +8 -2
- package/dist/hooks/globalType.d.ts +2 -0
- package/dist/hooks/globalType.d.ts.map +1 -0
- package/dist/hooks/globalType.js +1 -0
- package/dist/hooks/useState.d.ts +1 -1
- package/dist/hooks/useState.d.ts.map +1 -1
- package/dist/hooks/useState.js +5 -5
- package/dist/hydrate/hydrate.d.ts +1 -1
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +159 -53
- package/dist/indexInner.d.ts +5 -3
- package/dist/indexInner.d.ts.map +1 -1
- package/dist/indexInner.js +5 -3
- package/dist/jsx-runtime.d.ts +2 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +1 -0
- package/dist/jsxRuntime.d.ts +1 -1
- package/dist/jsxRuntime.d.ts.map +1 -1
- package/dist/jsxRuntime.js +10 -2
- package/dist/makeFinalConfig.d.ts.map +1 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts +4 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.js +12 -0
- package/dist/makeServerRpc.d.ts.map +1 -1
- package/dist/nbsp.d.ts +3 -0
- package/dist/nbsp.d.ts.map +1 -0
- package/dist/nbsp.js +8 -0
- package/dist/render/componentNodeToRenderingTree.d.ts +6 -0
- package/dist/render/componentNodeToRenderingTree.d.ts.map +1 -0
- package/dist/render/componentNodeToRenderingTree.js +41 -0
- package/dist/render/contentToHtml.d.ts +9 -0
- package/dist/render/contentToHtml.d.ts.map +1 -0
- package/dist/render/contentToHtml.js +44 -0
- package/dist/render/contentToHtmlDev.d.ts +9 -0
- package/dist/render/contentToHtmlDev.d.ts.map +1 -0
- package/dist/render/contentToHtmlDev.js +4 -0
- package/dist/render/contentTreeToRenderingTree.d.ts.map +1 -1
- package/dist/render/contentTreeToRenderingTree.js +8 -8
- package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +1 -1
- package/dist/render/functionComponentNodeToRenderingTree.js +4 -2
- package/dist/render/instantiateClassComponent.d.ts +2 -2
- package/dist/render/instantiateClassComponent.d.ts.map +1 -1
- package/dist/render/instantiateClassComponent.js +1 -1
- package/dist/render/instantiateComponent.d.ts.map +1 -1
- package/dist/render/processProps.d.ts.map +1 -1
- package/dist/render/processProps.js +1 -1
- package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
- package/dist/render/renderingTreeToHtml.js +42 -8
- package/dist/render/rootToHtml.d.ts +2 -1
- package/dist/render/rootToHtml.d.ts.map +1 -1
- package/dist/render/rootToHtml.js +12 -6
- package/dist/render/rootToHtmlDev.d.ts +4 -3
- package/dist/render/rootToHtmlDev.d.ts.map +1 -1
- package/dist/render/rootToHtmlDev.js +2 -2
- package/dist/routing/MatchedRoute.d.ts.map +1 -1
- package/dist/routing/MatchedRoute.js +0 -3
- package/dist/routing/runContentFunction.d.ts +2 -0
- package/dist/routing/runContentFunction.d.ts.map +1 -0
- package/dist/routing/runContentFunction.js +13 -0
- package/dist/staticGen/getAppRoutes.d.ts.map +1 -1
- package/dist/staticGen/getAppRoutes.js +7 -6
- package/dist/staticGen/staticGen.d.ts.map +1 -1
- package/dist/staticGen/staticGen.js +9 -1
- package/dist/update/integrateUpdateVdom.d.ts +13 -1
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +122 -61
- package/dist/update/integrateUpdateVdomPrebuild.d.ts +2 -0
- package/dist/update/integrateUpdateVdomPrebuild.d.ts.map +1 -0
- package/dist/update/integrateUpdateVdomPrebuild.js +1453 -0
- package/dist/validChildren.d.ts +4 -2
- package/dist/validChildren.d.ts.map +1 -1
- package/dist/validChildren.js +4 -0
- package/package.json +51 -45
- package/types/jsx/jsx.d.ts +10 -7
- package/dist/babelPlugins/BabelTransformCssImport.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformCssImport.js +0 -80
- package/dist/babelPlugins/BabelTransformDependencyImportsCjs.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsEsm.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsEsm.js +0 -85
- package/dist/build/compileEnv.d.ts +0 -2
- package/dist/build/compileEnv.d.ts.map +0 -1
- package/dist/build/compileEnv.js +0 -132
- package/dist/build/createAppConfig.d.ts +0 -4
- package/dist/build/createAppConfig.d.ts.map +0 -1
- package/dist/build/webpack.user.prod.config.d.ts +0 -2
- package/dist/build/webpack.user.prod.config.d.ts.map +0 -1
- package/dist/build/webpack.user.prod.config.js +0 -337
- package/dist/createInstanceConfigFromFrameworkConfig.d.ts +0 -4
- package/dist/createInstanceConfigFromFrameworkConfig.d.ts.map +0 -1
- package/dist/createInstanceConfigFromFrameworkConfig.js +0 -9
- package/dist/getAppConfig.d.ts +0 -3
- package/dist/getAppConfig.d.ts.map +0 -1
- package/dist/getAppConfig.js +0 -12
- package/dist/render/componentNodeToRenderingToTree.d.ts +0 -6
- package/dist/render/componentNodeToRenderingToTree.d.ts.map +0 -1
- package/dist/render/componentNodeToRenderingToTree.js +0 -15
- package/dist/render/componentNodeToTree.d.ts +0 -5
- package/dist/render/componentNodeToTree.d.ts.map +0 -1
- 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 $
|
|
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'
|
|
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
|
-
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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
|
-
|
|
396
|
-
debug('
|
|
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
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
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 (
|
|
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
|
|
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])
|
|
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 =
|
|
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(
|
|
886
|
+
domNode.value = String(newAttributes[key]);
|
|
833
887
|
} else {
|
|
834
|
-
if (typeof
|
|
835
|
-
if (
|
|
836
|
-
} else if (
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"integrateUpdateVdomPrebuild.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdomPrebuild.ts"],"names":[],"mappings":""}
|