tungsten 0.2.25 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ContentNode.d.ts +7 -0
- package/dist/ContentNode.d.ts.map +1 -1
- package/dist/Instance/Instance.d.ts.map +1 -1
- package/dist/Instance/Instance.js +7 -5
- package/dist/Instance/gotoRedirect.sxyt.d.ts +2 -0
- package/dist/Instance/gotoRedirect.sxyt.d.ts.map +1 -0
- package/dist/Instance/gotoRedirect.sxyt.js +148 -0
- package/dist/Servers/DevServer.d.ts +7 -0
- package/dist/Servers/DevServer.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +38 -1
- package/dist/Servers/routing.d.ts.map +1 -1
- package/dist/Servers/routing.js +10 -1
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +86 -1
- package/dist/build/compileStyles.d.ts +1 -1
- package/dist/build/compileStyles.d.ts.map +1 -1
- package/dist/build/compileStyles.js +10 -4
- package/dist/build/compileUserApp.d.ts.map +1 -1
- package/dist/build/compileUserApp.js +7 -2
- package/dist/components/RawHtml.d.ts +36 -0
- package/dist/components/RawHtml.d.ts.map +1 -0
- package/dist/components/RawHtml.js +30 -0
- package/dist/components/RawHtml.sxyt.d.ts +2 -0
- package/dist/components/RawHtml.sxyt.d.ts.map +1 -0
- package/dist/components/RawHtml.sxyt.js +104 -0
- package/dist/dev/liveReloadHub.d.ts +6 -0
- package/dist/dev/liveReloadHub.d.ts.map +1 -0
- package/dist/dev/liveReloadHub.js +12 -0
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +11 -4
- package/dist/hydrate/reconcileHydratedAttributes.d.ts +24 -0
- package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -0
- package/dist/hydrate/reconcileHydratedAttributes.js +73 -0
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts +2 -0
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts.map +1 -0
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.js +173 -0
- package/dist/indexInner.d.ts +4 -0
- package/dist/indexInner.d.ts.map +1 -1
- package/dist/indexInner.js +3 -0
- package/dist/innerHtmlFromProps.d.ts +16 -0
- package/dist/innerHtmlFromProps.d.ts.map +1 -0
- package/dist/innerHtmlFromProps.js +31 -0
- package/dist/innerHtmlFromProps.sxyt.d.ts +2 -0
- package/dist/innerHtmlFromProps.sxyt.d.ts.map +1 -0
- package/dist/innerHtmlFromProps.sxyt.js +99 -0
- package/dist/rawHtml/HtmlAllowList.d.ts +17 -0
- package/dist/rawHtml/HtmlAllowList.d.ts.map +1 -0
- package/dist/rawHtml/HtmlAllowList.js +1 -0
- package/dist/rawHtml/decodeHtmlEntities.d.ts +8 -0
- package/dist/rawHtml/decodeHtmlEntities.d.ts.map +1 -0
- package/dist/rawHtml/decodeHtmlEntities.js +105 -0
- package/dist/rawHtml/htmlParsingTags.d.ts +23 -0
- package/dist/rawHtml/htmlParsingTags.d.ts.map +1 -0
- package/dist/rawHtml/htmlParsingTags.js +55 -0
- package/dist/rawHtml/parseHtml.d.ts +35 -0
- package/dist/rawHtml/parseHtml.d.ts.map +1 -0
- package/dist/rawHtml/parseHtml.js +214 -0
- package/dist/rawHtml/parseHtml.sxyt.d.ts +2 -0
- package/dist/rawHtml/parseHtml.sxyt.d.ts.map +1 -0
- package/dist/rawHtml/parseHtml.sxyt.js +239 -0
- package/dist/rawHtml/safeHtmlAllowList.d.ts +18 -0
- package/dist/rawHtml/safeHtmlAllowList.d.ts.map +1 -0
- package/dist/rawHtml/safeHtmlAllowList.js +47 -0
- package/dist/rawHtml/tokenizeHtml.d.ts +25 -0
- package/dist/rawHtml/tokenizeHtml.d.ts.map +1 -0
- package/dist/rawHtml/tokenizeHtml.js +148 -0
- package/dist/render/processHead.d.ts.map +1 -1
- package/dist/render/processHead.js +10 -0
- package/dist/render/processProps.d.ts.map +1 -1
- package/dist/render/processProps.js +14 -2
- package/dist/render/processProps.sxyt.d.ts +2 -0
- package/dist/render/processProps.sxyt.d.ts.map +1 -0
- package/dist/render/processProps.sxyt.js +90 -0
- package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
- package/dist/render/renderingTreeToHtml.js +8 -0
- package/dist/routing/RouteTypes.d.ts +1 -1
- package/dist/routing/RouteTypes.d.ts.map +1 -1
- package/dist/routing/routeSymbols.d.ts +9 -0
- package/dist/routing/routeSymbols.d.ts.map +1 -0
- package/dist/routing/routeSymbols.js +4 -0
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +28 -7
- package/package.json +3 -3
|
@@ -13,6 +13,7 @@ import { printComponentNamesInSource } from "./printComponentNameInSource.js";
|
|
|
13
13
|
import { RenderingNodeElementIsComponent, RenderingNodeElementIsHtml } from "../RenderingNode.js";
|
|
14
14
|
import { processHead } from "./processHead.js";
|
|
15
15
|
import { processRenderingNodeHtml } from "./processRenderingNodeHtml.js";
|
|
16
|
+
import { innerHtmlFromProps } from "../innerHtmlFromProps.js";
|
|
16
17
|
//// Maybe we should build the full tree before rendering
|
|
17
18
|
//// may need some merging with componentTreeToHtml
|
|
18
19
|
export async function renderingNodeToHtml(node, noEscape, headData, lastSelect) {
|
|
@@ -93,6 +94,13 @@ export async function renderingNodeToHtml(node, noEscape, headData, lastSelect)
|
|
|
93
94
|
...attribProps
|
|
94
95
|
} = node[$props]);
|
|
95
96
|
debug('validChildren(children)', validRenderingChildren(children));
|
|
97
|
+
const innerHtml = innerHtmlFromProps(type, node[$props], validRenderingChildren(children));
|
|
98
|
+
if (innerHtml !== null) {
|
|
99
|
+
if (type in htmlVoidTags) {
|
|
100
|
+
throw new TungstenError(`nodeToHtml() error: node type ${type} is an HTML void type` + ` (cannot have children), but the node has dangerouslySetInnerHTML.`);
|
|
101
|
+
}
|
|
102
|
+
return html + `<${type}${attribs}>${innerHtml}</${type}>`;
|
|
103
|
+
}
|
|
96
104
|
if (validRenderingChildren(children)) {
|
|
97
105
|
if (type in htmlVoidTags) {
|
|
98
106
|
throw new TungstenError(`nodeToHtml() error: node ${JSON.stringify(node)} type ${type} is an HTML void type` + ` (cannot have children), but the node has children.`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Routes } from './Routes.js';
|
|
2
2
|
export type Path = `/${string}`;
|
|
3
|
-
export type RouteKey = Path | 'default' | '404';
|
|
3
|
+
export type RouteKey = Path | 'default' | '404' | 'error';
|
|
4
4
|
export declare function StringIsValidRouteKey(string: string, routes: Routes): string is RouteKey;
|
|
5
5
|
export declare function StringIsPath(string: string): string is Path;
|
|
6
6
|
export declare function RouteKeyIsPath(path: RouteKey): path is Path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteTypes.d.ts","sourceRoot":"","sources":["../../src/routing/RouteTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"RouteTypes.d.ts","sourceRoot":"","sources":["../../src/routing/RouteTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;AACzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ,CAExF;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,CAE3D;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,IAAI,CAE3D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const $notFound: unique symbol;
|
|
2
|
+
export type $NotFound = typeof $notFound;
|
|
3
|
+
export declare const $404: unique symbol;
|
|
4
|
+
export type $404 = typeof $404;
|
|
5
|
+
export declare const $default: unique symbol;
|
|
6
|
+
export type $Default = typeof $default;
|
|
7
|
+
export declare const $error: unique symbol;
|
|
8
|
+
export type $Error = typeof $error;
|
|
9
|
+
//# sourceMappingURL=routeSymbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeSymbols.d.ts","sourceRoot":"","sources":["../../src/routing/routeSymbols.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,eAAqB,CAAA;AAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AAExC,eAAO,MAAM,IAAI,eAAgB,CAAA;AACjC,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAA;AAE9B,eAAO,MAAM,QAAQ,eAAoB,CAAA;AACzC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAA;AAEtC,eAAO,MAAM,MAAM,eAAkB,CAAA;AACrC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACH,WAAW,EAAwC,eAAe,EAElE,uBAAuB,EAG1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAKlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAE1D,OAAO,EACe,mBAAmB,EAIT,4BAA4B,EAI3D,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACH,WAAW,EAAwC,eAAe,EAElE,uBAAuB,EAG1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAKlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAE1D,OAAO,EACe,mBAAmB,EAIT,4BAA4B,EAI3D,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAYhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAGlE,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;AAYD,wBAAsB,0BAA0B,CAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAC/C,OAAO,CAAC,YAAY,CAAC,CA0GvB;AA8gBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,QAuC5E;AAgED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,QAkK7E;AA0WD,KAAK,2BAA2B,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,uBAAuB,CAAC;IAE9B,UAAU,EAAE,UAAU,CAAA;CACzB,CAAA;AACD,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,GAC3G,OAAO,CAAC,4BAA4B,CAAC,CAU1C;AAED,MAAM,MAAM,mBAAmB,CAC3B,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,IACzD;IACA,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;IACtC,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAsB,2BAA2B,CAC7C,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,EAEzD,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,GACvB,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAgD7C;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAC/D,IAAI,CAON"}
|
|
@@ -17,6 +17,8 @@ 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 { innerHtmlFromProps } from "../innerHtmlFromProps.js";
|
|
21
|
+
import { validChildren } from "../validChildren.js";
|
|
20
22
|
import { setCurrentComponent } from 'tungsten/hooks/setCurrentComponent.js';
|
|
21
23
|
import { clearCurrentComponent } from 'tungsten/hooks/clearCurrentComponent.js';
|
|
22
24
|
import { isDev } from "../isDev.js";
|
|
@@ -401,6 +403,15 @@ async function updateHtmlElement(tungstenElement, instance, newNode, oldNode, do
|
|
|
401
403
|
//console.log(newNode[$type], 'children', newChildren)
|
|
402
404
|
const oldChildren = oldNode.renderedChildren;
|
|
403
405
|
//console.log('oldChildren', oldChildren)
|
|
406
|
+
const newInnerHtml = innerHtmlFromProps(newNode[$type], newNode[$props], validChildren(newChildren));
|
|
407
|
+
if (newInnerHtml !== null) {
|
|
408
|
+
// Replacing the markup wholesale is the only option: Tungsten holds the
|
|
409
|
+
// subtree as one opaque string and cannot diff it. Guarded so an update
|
|
410
|
+
// for an unrelated reason does not discard DOM state under the host.
|
|
411
|
+
const oldInnerHtml = innerHtmlFromProps(oldNode[$type], oldNode[$props], false);
|
|
412
|
+
if (newInnerHtml !== oldInnerHtml) domNode.innerHTML = newInnerHtml;
|
|
413
|
+
return makeRenderedContentNodeHtml(newNode, domNode, oldChildren);
|
|
414
|
+
}
|
|
404
415
|
const renderedChildren = newNode[$props].__opaque === true ? oldChildren : await applyUpdate({
|
|
405
416
|
tungstenElement: tungstenElement,
|
|
406
417
|
instance,
|
|
@@ -783,13 +794,22 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
|
|
|
783
794
|
//!!!! node.domElement = el
|
|
784
795
|
if (IsHTMLElement(domPointer.parent)) debug('***', node[$type], 'html created', htmlEl);
|
|
785
796
|
// children
|
|
786
|
-
const
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
797
|
+
const innerHtml = innerHtmlFromProps(node[$type], node[$props], validChildren(node[$props].children));
|
|
798
|
+
let renderedChildren;
|
|
799
|
+
if (innerHtml !== null) {
|
|
800
|
+
// The raw markup owns the whole subtree, so there is nothing to create
|
|
801
|
+
// and nothing to record as rendered children.
|
|
802
|
+
htmlEl.innerHTML = innerHtml;
|
|
803
|
+
renderedChildren = makeRenderedContentNodeNonRendered();
|
|
804
|
+
} else {
|
|
805
|
+
renderedChildren = await createNode({
|
|
806
|
+
tungstenElement: tungstenElement,
|
|
807
|
+
instance,
|
|
808
|
+
newNode: node[$props].children,
|
|
809
|
+
domPointer: new DomPointer(htmlEl, htmlEl.childNodes.length),
|
|
810
|
+
parentNode: node
|
|
811
|
+
});
|
|
812
|
+
}
|
|
793
813
|
if (node[$type] === 'select') {
|
|
794
814
|
if (node[$props].value !== undefined && node[$props].value !== null) {
|
|
795
815
|
htmlEl.value = String(node[$props].value);
|
|
@@ -930,6 +950,7 @@ function processAttributes(node) {
|
|
|
930
950
|
delete attributes.ref;
|
|
931
951
|
delete attributes.__zoneHtml;
|
|
932
952
|
delete attributes.__opaque;
|
|
953
|
+
delete attributes.dangerouslySetInnerHTML;
|
|
933
954
|
delete attributes.class;
|
|
934
955
|
if (attributes.className !== undefined) attributes.class = attributes.className;
|
|
935
956
|
delete attributes.className;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tungsten",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -134,8 +134,8 @@
|
|
|
134
134
|
"scripts": {
|
|
135
135
|
"__build": "pnpm clean && pnpm build-prep && pnpm build-watch",
|
|
136
136
|
"build": "run-s -c clean build-prep build-watch",
|
|
137
|
-
"clean": "rimraf intermed
|
|
138
|
-
"build-once": "rimraf intermed
|
|
137
|
+
"clean": "rimraf intermed dist",
|
|
138
|
+
"build-once": "rimraf intermed dist && pnpm build-ts-once && pnpm build-babel-once",
|
|
139
139
|
"build-quick": "pnpm build-watch",
|
|
140
140
|
"build-prep": "pnpm build-ts-once",
|
|
141
141
|
"build-watch": "run-p build-ts build-babel",
|