tungsten 0.1.55 → 0.1.58
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/Instance/Instance.d.ts +1 -0
- package/dist/Instance/Instance.d.ts.map +1 -1
- package/dist/Instance/Instance.js +2 -0
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +19 -6
- package/dist/render/processHead.d.ts.map +1 -1
- package/dist/render/processHead.js +2 -0
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +6 -1
- package/package.json +1 -1
|
@@ -25,6 +25,7 @@ export declare class Instance {
|
|
|
25
25
|
defaultTitle: string;
|
|
26
26
|
globalData: GlobalData;
|
|
27
27
|
matchedRouteInfo: MatchedRouteInfo;
|
|
28
|
+
persistentHeadChildren: HTMLElement[];
|
|
28
29
|
navigating: boolean;
|
|
29
30
|
constructor(location: string, instanceConfig: InstanceConfig, reqRes: ReqRes | null, appRoutes: AppRoutes, routes: Routes, internalStore: TrueStore<InternalStoreSchema>, stores: TrueStore<any>[], storeSubscriptions: StoreSubscriptionsMap, globalData: GlobalData, matchedRouteInfo: MatchedRouteInfo);
|
|
30
31
|
getRoutes: () => Routes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/Instance/Instance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAIjE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AAGlF,qBAAa,QAAQ;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,UAAQ;IACzB,aAAa,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAA;IAE7C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IACxB,kBAAkB,EAAE,qBAAqB,CAAA;IACzC,iBAAiB,EAAE,OAAO,CAAQ;IAClC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,GAAG,CAAA;IAGf,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAK;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,UAAU,EAAE,OAAO,CAAQ;gBAEvB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EAGd,aAAa,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAC7C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EACxB,kBAAkB,EAAE,qBAAqB,EACzC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/Instance/Instance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAIjE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AAGlF,qBAAa,QAAQ;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,UAAQ;IACzB,aAAa,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAA;IAE7C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IACxB,kBAAkB,EAAE,qBAAqB,CAAA;IACzC,iBAAiB,EAAE,OAAO,CAAQ;IAClC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,GAAG,CAAA;IAGf,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAK;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,sBAAsB,EAAE,WAAW,EAAE,CAAA;IACrC,UAAU,EAAE,OAAO,CAAQ;gBAEvB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EAGd,aAAa,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAC7C,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EACxB,kBAAkB,EAAE,qBAAqB,EACzC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB;IAgCtC,SAAS,eAER;IACD,cAAc,aAAc,MAAM,UAMjC;IACD,IAAI,aAAoB,QAAQ,mBAyB/B;IASD,eAAe,iBAAkB,MAAM,UAEtC;IACD,QAAQ,UAAW,MAAM,UAIxB;IACD,iBAAiB,aAEhB;CAIJ"}
|
|
@@ -31,6 +31,7 @@ export class Instance {
|
|
|
31
31
|
_defineProperty(this, "defaultTitle", '');
|
|
32
32
|
_defineProperty(this, "globalData", void 0);
|
|
33
33
|
_defineProperty(this, "matchedRouteInfo", void 0);
|
|
34
|
+
_defineProperty(this, "persistentHeadChildren", void 0);
|
|
34
35
|
_defineProperty(this, "navigating", false);
|
|
35
36
|
_defineProperty(this, "getRoutes", () => {
|
|
36
37
|
return typeof this.appRoutes === 'function' ? this.appRoutes(this.reqRes) : this.appRoutes;
|
|
@@ -98,6 +99,7 @@ export class Instance {
|
|
|
98
99
|
this.globalData = globalData;
|
|
99
100
|
this.matchedRouteInfo = _matchedRouteInfo;
|
|
100
101
|
this.config = instanceConfig; // createInstanceConfig(appConfig)
|
|
102
|
+
this.persistentHeadChildren = [];
|
|
101
103
|
//if (AppClass === null) throwError('Instance', 'AppClass is null, did you register an '
|
|
102
104
|
if (isClient) {
|
|
103
105
|
window.addEventListener('popstate', event => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../src/hydrate/hydrate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../src/hydrate/hydrate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAQnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAmBlE,OAAO,EAAE,yBAAyB,EAAoD,MAAM,mBAAmB,CAAA;AAuB/G,KAAK,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;AAOhE,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,wBAAwB,EAAE,UAAU,CAAA;IACxC,IAAI,+BAA+B,EAAE,uBAAuB,CAAA;IAE5D,IAAI,uBAAuB,EAAE,OAAO,CAAA;CACvC;AAGD,wBAAsB,OAAO,CACzB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,yBAAyB,EACxC,cAAc,EAAE,cAAc,iBAyCjC"}
|
package/dist/hydrate/hydrate.js
CHANGED
|
@@ -28,7 +28,7 @@ function debug(...texts) {
|
|
|
28
28
|
//console.log(...texts)
|
|
29
29
|
//console.log(getStackTrace().split('\n')[2])
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function makeDefaultHydrateMeta() {
|
|
32
32
|
return {
|
|
33
33
|
insideForm: false
|
|
34
34
|
};
|
|
@@ -60,7 +60,7 @@ export async function hydrate(appRoutes, RootComponent, instanceConfig) {
|
|
|
60
60
|
instance.routeData = __tungsten_route_data__;
|
|
61
61
|
}
|
|
62
62
|
//await hydrateRootComponent( instance, RootComponent, new DomPointer(document, 0) ) // dom pointer at doctype?
|
|
63
|
-
await hydrateRootComponent(instance, RootComponent, new DomPointer(document, 1),
|
|
63
|
+
await hydrateRootComponent(instance, RootComponent, new DomPointer(document, 1), makeDefaultHydrateMeta()); // dom pointer at html?
|
|
64
64
|
instance.hydrationComplete = true;
|
|
65
65
|
//// Can components update while hydrating is still taking place
|
|
66
66
|
//// -- probably yes
|
|
@@ -305,6 +305,19 @@ async function hydrateNodeSingle(node, parentElement, domPointer, instance, meta
|
|
|
305
305
|
if (node.nodeType !== 1 || node.nodeName.toLocaleLowerCase() !== 'head') {
|
|
306
306
|
throwError('hydrateNodeSingle', `expected to find a head node, instead found nodeType ${node.nodeType}, nodeName ${node.nodeName}`);
|
|
307
307
|
}
|
|
308
|
+
// collect persistent head nodes
|
|
309
|
+
const persistentHeadChildren = [];
|
|
310
|
+
const domChildren = node.childNodes;
|
|
311
|
+
for (const child of domChildren) {
|
|
312
|
+
if (child.nodeType === 1) {
|
|
313
|
+
const el = child;
|
|
314
|
+
if (el.hasAttribute('data--t-persist')) {
|
|
315
|
+
persistentHeadChildren.push(el.cloneNode(true));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
//const domChildrenPointer = new DomPointer(node as HTMLHeadElement)
|
|
320
|
+
instance.persistentHeadChildren = persistentHeadChildren;
|
|
308
321
|
debug('head node - skipping, because we add a lot to this during initial render, breaking matching');
|
|
309
322
|
domPointer.increment();
|
|
310
323
|
return {
|
|
@@ -321,7 +334,7 @@ async function hydrateNodeSingle(node, parentElement, domPointer, instance, meta
|
|
|
321
334
|
if (node[$type] === 'form') {
|
|
322
335
|
debug('FOUND A FORM', meta.insideForm);
|
|
323
336
|
if (meta.insideForm) {
|
|
324
|
-
throwError('hydrateNodeSingle', 'tried to hydrate a <form> within another <form>. Forms are not allowed within forms. Browsers may strip out inner forms.');
|
|
337
|
+
throwError('hydrateNodeSingle', 'tried to hydrate a <form> within another <form>. Forms are not allowed within forms.' + 'Browsers may strip out inner forms.');
|
|
325
338
|
}
|
|
326
339
|
meta.insideForm = true;
|
|
327
340
|
}
|
|
@@ -333,12 +346,12 @@ async function hydrateNodeSingle(node, parentElement, domPointer, instance, meta
|
|
|
333
346
|
debug('domPointer.parent.childNodes', [...domPointer.parent.childNodes]);
|
|
334
347
|
debug('domNode', domNode);
|
|
335
348
|
debug('expected:', node[$type]);
|
|
336
|
-
throw new TungstenError(`${packageNameCapitalized} hydrateNode() error - DOM node at position where HTML element was expected is not an HTMLElement.` + ` Found: ${domNode}`);
|
|
349
|
+
throw new TungstenError(`${packageNameCapitalized} hydrateNode() error` + ` - DOM node at position where HTML element was expected is not an HTMLElement.` + ` Found: ${domNode}`);
|
|
337
350
|
}
|
|
338
351
|
debug('domNode', domNode);
|
|
339
352
|
if (domNode.tagName.toLowerCase() !== node[$type]) {
|
|
340
353
|
debug('mismatched html el type');
|
|
341
|
-
throw new TungstenError(`${packageNameCapitalized} hydrateNode() error - existing DOM node tagName does not match expected tag name.` + ` Expected <${node[$type]}>, found <${domNode.tagName.toLowerCase()}>.`);
|
|
354
|
+
throw new TungstenError(`${packageNameCapitalized} hydrateNode() error` + ` - existing DOM node tagName does not match expected tag name.` + ` Expected <${node[$type]}>, found <${domNode.tagName.toLowerCase()}>.`);
|
|
342
355
|
}
|
|
343
356
|
debug('save refs');
|
|
344
357
|
// if (node[$props].ref) {
|
|
@@ -616,7 +629,7 @@ function processAttributes(node) {
|
|
|
616
629
|
const [bindObject, bindKey] = props[key];
|
|
617
630
|
props.checked = bindObject[bindKey] === node[$props].value;
|
|
618
631
|
const handler = event => {
|
|
619
|
-
console.log('bound radio changed 2')
|
|
632
|
+
//console.log('bound radio changed 2')
|
|
620
633
|
bindObject[bindKey] = event.target.value;
|
|
621
634
|
};
|
|
622
635
|
if (eventName in props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processHead.d.ts","sourceRoot":"","sources":["../../src/render/processHead.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAK7C,OAAO,EAAE,oBAAoB,EAAqB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"processHead.d.ts","sourceRoot":"","sources":["../../src/render/processHead.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAK7C,OAAO,EAAE,oBAAoB,EAAqB,MAAM,qBAAqB,CAAA;AAO7E,wBAAgB,WAAW,CACvB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ,QAoGrB"}
|
|
@@ -20,6 +20,7 @@ export function processHead(headNode, headData) {
|
|
|
20
20
|
[$type]: 'link',
|
|
21
21
|
[$props]: {
|
|
22
22
|
'data--t-internal': undefined,
|
|
23
|
+
'data--t-persist': true,
|
|
23
24
|
rel: 'stylesheet',
|
|
24
25
|
href: `${siteBasePath}/${componentCssFolder}/${componentCssFile}`
|
|
25
26
|
}
|
|
@@ -83,6 +84,7 @@ export function processHead(headNode, headData) {
|
|
|
83
84
|
[$type]: 'meta',
|
|
84
85
|
[$props]: {
|
|
85
86
|
'data--t-internal': undefined,
|
|
87
|
+
'data--t-persist': true,
|
|
86
88
|
'http-equiv': 'Content-Type',
|
|
87
89
|
content: 'text/html; charset=utf-8'
|
|
88
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AAWA,OAAO,EACH,WAAW,EAAwC,eAAe,EAIrE,MAAM,mBAAmB,CAAA;AAQ1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAejD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAShD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC5C,wBAAwB,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,CAAA;IACpE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AASD,wBAAsB,0BAA0B,CAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAC/C,OAAO,CAAC,YAAY,CAAC,CAgGvB;AAgiBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,QAkK7E"}
|
|
@@ -717,6 +717,11 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
|
|
|
717
717
|
debug('-createHtmlElement', node);
|
|
718
718
|
const htmlEl = document.createElement(node[$type]);
|
|
719
719
|
addAttributes(node, htmlEl);
|
|
720
|
+
if (node[$type] === 'head') {
|
|
721
|
+
for (const el of instance.persistentHeadChildren) {
|
|
722
|
+
htmlEl.appendChild(el.cloneNode(true));
|
|
723
|
+
}
|
|
724
|
+
}
|
|
720
725
|
debug('dom parent', domPointer.parent);
|
|
721
726
|
debug('dom parent children length', domPointer.parent.childNodes.length);
|
|
722
727
|
debug('domPointer.index', domPointer.index);
|
|
@@ -736,7 +741,7 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
|
|
|
736
741
|
tungstenElement: tungstenElement,
|
|
737
742
|
instance,
|
|
738
743
|
newNode: node[$props].children,
|
|
739
|
-
domPointer: new DomPointer(htmlEl,
|
|
744
|
+
domPointer: new DomPointer(htmlEl, htmlEl.childNodes.length),
|
|
740
745
|
parentNode: node
|
|
741
746
|
});
|
|
742
747
|
return {
|