tungsten 0.1.55 → 0.1.57

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.
@@ -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;IA+BtC,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"}
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;AAKnE,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;AAalE,OAAO,EAAE,yBAAyB,EAAoD,MAAM,mBAAmB,CAAA;AA0B/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,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,yBAAyB,EAAE,cAAc,EAAE,cAAc,iBAwC3H"}
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"}
@@ -28,7 +28,7 @@ function debug(...texts) {
28
28
  //console.log(...texts)
29
29
  //console.log(getStackTrace().split('\n')[2])
30
30
  }
31
- function makeDfaultHydrateMeta() {
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), makeDfaultHydrateMeta()); // dom pointer at html?
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;AAS7E,wBAAgB,WAAW,CACvB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ,QAkGrB"}
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tungsten",
3
- "version": "0.1.55",
3
+ "version": "0.1.57",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "bin": {