octane 0.2.11 → 0.2.13
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/README.md +5 -0
- package/dist/behavior-root.d.ts +13 -3
- package/dist/behavior-root.js +28 -5
- package/dist/cjs/behavior-root.cjs +32 -6
- package/dist/cjs/class-names.cjs +49 -0
- package/dist/cjs/constants.cjs +9 -0
- package/dist/cjs/context-epoch.cjs +38 -0
- package/dist/cjs/css.cjs +6 -27
- package/dist/cjs/data-encoding.cjs +160 -0
- package/dist/cjs/dom-binding-handoff.cjs +93 -0
- package/dist/cjs/dom-binding-protocol.cjs +115 -0
- package/dist/cjs/dom-binding-styles.cjs +292 -0
- package/dist/cjs/dom-bindings.cjs +700 -0
- package/dist/cjs/dom-focused-move.cjs +66 -0
- package/dist/cjs/dom-stage.cjs +896 -0
- package/dist/cjs/dom-tables.cjs +4 -94
- package/dist/cjs/error-codes.client.generated.cjs +33 -0
- package/dist/cjs/error-codes.server.generated.cjs +24 -0
- package/dist/cjs/hydration/control-capture.cjs +244 -0
- package/dist/cjs/hydration/event-capture.cjs +125 -43
- package/dist/cjs/hydration/interaction-config.cjs +50 -2
- package/dist/cjs/hydration-markers.cjs +37 -0
- package/dist/cjs/independent-hydration-protocol.cjs +106 -0
- package/dist/cjs/index.cjs +9 -0
- package/dist/cjs/runtime.cjs +6397 -1683
- package/dist/cjs/runtime.server.cjs +1465 -213
- package/dist/cjs/server/early-signals.cjs +45 -0
- package/dist/cjs/server/index.cjs +47 -0
- package/dist/cjs/server/rpc-batch.cjs +149 -0
- package/dist/cjs/server/rpc-stream.cjs +146 -0
- package/dist/cjs/server/rpc.cjs +34 -15
- package/dist/cjs/server/signal-query-observation.cjs +158 -0
- package/dist/cjs/server/streamed-region.cjs +52 -0
- package/dist/cjs/server/streamed-signals.cjs +512 -0
- package/dist/cjs/server-call.cjs +103 -0
- package/dist/cjs/server-rpc-batch-client.cjs +141 -0
- package/dist/cjs/server-rpc-client.cjs +94 -27
- package/dist/cjs/server-rpc-protocol.cjs +141 -0
- package/dist/cjs/server-rpc-stream-client.cjs +118 -0
- package/dist/cjs/signals/actions.cjs +474 -0
- package/dist/cjs/signals/client.cjs +4 -1
- package/dist/cjs/signals/computations.cjs +460 -0
- package/dist/cjs/signals/control-binding.cjs +368 -0
- package/dist/cjs/signals/derived-facade.cjs +50 -0
- package/dist/cjs/signals/document-owner.cjs +71 -0
- package/dist/cjs/signals/early-values.cjs +155 -0
- package/dist/cjs/signals/encoding.cjs +6 -95
- package/dist/cjs/signals/engine.cjs +276 -12
- package/dist/cjs/signals/errors.cjs +18 -0
- package/dist/cjs/signals/facade.cjs +477 -0
- package/dist/cjs/signals/graph.cjs +166 -20
- package/dist/cjs/signals/handle-protocol.cjs +36 -0
- package/dist/cjs/signals/index.cjs +81 -2
- package/dist/cjs/signals/native-read-client.cjs +10 -0
- package/dist/cjs/signals/owner-context.cjs +112 -0
- package/dist/cjs/signals/query-attempt-observer.cjs +68 -0
- package/dist/cjs/signals/query-facade.cjs +72 -0
- package/dist/cjs/signals/read-protocol.cjs +54 -0
- package/dist/cjs/signals/requests.cjs +287 -14
- package/dist/cjs/signals/scalar-computations.cjs +76 -0
- package/dist/cjs/signals/server.cjs +4 -1
- package/dist/cjs/signals/transition-candidate.cjs +567 -0
- package/dist/cjs/signals/transition-state.cjs +106 -0
- package/dist/cjs/signals/types.cjs +50 -0
- package/dist/cjs/stream-protocol.cjs +3 -0
- package/dist/cjs/streamed-signals-protocol.cjs +159 -0
- package/dist/cjs/style-values.cjs +122 -0
- package/dist/cjs/trusted-html.cjs +30 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/class-names.d.ts +5 -0
- package/dist/class-names.js +25 -0
- package/dist/compiler/bundler.js +51 -22
- package/dist/compiler/compile.js +2534 -581
- package/dist/compiler/dom-binding-program.js +935 -0
- package/dist/compiler/dom-binding-request.js +57 -0
- package/dist/compiler/dom-bindings.js +2245 -0
- package/dist/compiler/hook-deps.js +759 -10
- package/dist/compiler/hydrate-boundaries.js +358 -15
- package/dist/compiler/index.d.ts +39 -2
- package/dist/compiler/index.js +1 -0
- package/dist/compiler/native-attribute-reads.js +127 -0
- package/dist/compiler/native-change-diagnostics.js +32 -38
- package/dist/compiler/native-read-diagnostics.js +69 -8
- package/dist/compiler/native-read-types.js +80 -34
- package/dist/compiler/parser.node.js +1 -1
- package/dist/compiler/renderer-boundaries.js +40 -0
- package/dist/compiler/server-context.js +118 -0
- package/dist/compiler/signal-attempt-reads.js +479 -0
- package/dist/compiler/signal-declarations.js +557 -0
- package/dist/compiler/signal-start-reads.js +413 -0
- package/dist/compiler/slot-hooks.d.ts +3 -1
- package/dist/compiler/slot-hooks.js +168 -34
- package/dist/compiler/strong-auto-memo.js +90 -0
- package/dist/compiler/strong-html.js +143 -0
- package/dist/compiler/strong-mode.js +764 -66
- package/dist/compiler/strong-template-policy.js +307 -0
- package/dist/compiler/template-ir.js +200 -0
- package/dist/compiler/typescript.d.ts +2 -0
- package/dist/compiler/typescript.js +2 -0
- package/dist/compiler/vite.d.ts +3 -1
- package/dist/compiler/vite.js +122 -4
- package/dist/compiler/volar.LICENSES.txt +1 -1
- package/dist/compiler/volar.d.ts +6 -1
- package/dist/compiler/volar.js +750 -1433
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +10 -0
- package/dist/context-epoch.d.ts +2 -0
- package/dist/context-epoch.js +13 -0
- package/dist/css.d.ts +2 -5
- package/dist/css.js +2 -23
- package/dist/data-encoding.d.ts +9 -0
- package/dist/data-encoding.js +134 -0
- package/dist/dom-binding-classes.d.ts +15 -0
- package/dist/dom-binding-classes.js +129 -0
- package/dist/dom-binding-controls.d.ts +2 -0
- package/dist/dom-binding-controls.js +6 -0
- package/dist/dom-binding-handoff.d.ts +55 -0
- package/dist/dom-binding-handoff.js +62 -0
- package/dist/dom-binding-program.d.ts +300 -0
- package/dist/dom-binding-program.js +1625 -0
- package/dist/dom-binding-projections.d.ts +15 -0
- package/dist/dom-binding-projections.js +187 -0
- package/dist/dom-binding-protocol.d.ts +13 -0
- package/dist/dom-binding-protocol.js +88 -0
- package/dist/dom-binding-signals.d.ts +21 -0
- package/dist/dom-binding-signals.js +109 -0
- package/dist/dom-binding-styles.d.ts +17 -0
- package/dist/dom-binding-styles.js +272 -0
- package/dist/dom-bindings.d.ts +89 -0
- package/dist/dom-bindings.js +670 -0
- package/dist/dom-focused-move.d.ts +6 -0
- package/dist/dom-focused-move.js +42 -0
- package/dist/dom-stage.d.ts +52 -0
- package/dist/dom-stage.js +872 -0
- package/dist/dom-tables.d.ts +1 -3
- package/dist/dom-tables.js +1 -91
- package/dist/error-codes.client.generated.d.ts +9 -0
- package/dist/error-codes.client.generated.js +33 -0
- package/dist/error-codes.server.generated.d.ts +6 -0
- package/dist/error-codes.server.generated.js +24 -0
- package/dist/hydration/control-capture.d.ts +62 -0
- package/dist/hydration/control-capture.js +223 -0
- package/dist/hydration/document-lifecycle.d.ts +23 -0
- package/dist/hydration/document-lifecycle.js +80 -0
- package/dist/hydration/event-capture.d.ts +20 -1
- package/dist/hydration/event-capture.js +128 -42
- package/dist/hydration/independent-island.d.ts +45 -0
- package/dist/hydration/independent-island.js +233 -0
- package/dist/hydration/index.d.ts +8 -1
- package/dist/hydration/index.js +55 -1
- package/dist/hydration/interaction-config.d.ts +5 -0
- package/dist/hydration/interaction-config.js +44 -1
- package/dist/hydration/stream-delivery.d.ts +32 -0
- package/dist/hydration/stream-delivery.js +333 -0
- package/dist/hydration/stream-receiver.d.ts +26 -0
- package/dist/hydration/stream-receiver.js +204 -0
- package/dist/hydration/stream-result-receiver.d.ts +70 -0
- package/dist/hydration/stream-result-receiver.js +246 -0
- package/dist/hydration/streamed-signals.d.ts +44 -0
- package/dist/hydration/streamed-signals.js +186 -0
- package/dist/hydration/types.d.ts +6 -0
- package/dist/hydration-markers.d.ts +7 -0
- package/dist/hydration-markers.js +10 -0
- package/dist/independent-hydration-protocol.d.ts +31 -0
- package/dist/independent-hydration-protocol.js +80 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/internal/signal-read.d.ts +1 -0
- package/dist/internal/signal-read.js +4 -0
- package/dist/jsx-runtime-strong.d.ts +33 -0
- package/dist/jsx-runtime.d.ts +58 -2
- package/dist/public-types.d.ts +15 -1
- package/dist/runtime.d.ts +297 -23
- package/dist/runtime.js +6405 -1679
- package/dist/runtime.server.d.ts +110 -27
- package/dist/runtime.server.js +1458 -213
- package/dist/server/early-signals.d.ts +14 -0
- package/dist/server/early-signals.js +34 -0
- package/dist/server/index.d.ts +11 -2
- package/dist/server/index.js +50 -1
- package/dist/server/rpc-batch.d.ts +17 -0
- package/dist/server/rpc-batch.js +129 -0
- package/dist/server/rpc-stream.d.ts +9 -0
- package/dist/server/rpc-stream.js +125 -0
- package/dist/server/rpc.d.ts +5 -1
- package/dist/server/rpc.js +37 -13
- package/dist/server/signal-query-observation.d.ts +3 -0
- package/dist/server/signal-query-observation.js +134 -0
- package/dist/server/streamed-region.d.ts +15 -0
- package/dist/server/streamed-region.js +30 -0
- package/dist/server/streamed-signals.d.ts +45 -0
- package/dist/server/streamed-signals.js +488 -0
- package/dist/server-call.d.ts +41 -0
- package/dist/server-call.js +75 -0
- package/dist/server-rpc-batch-client.d.ts +7 -0
- package/dist/server-rpc-batch-client.js +119 -0
- package/dist/server-rpc-client.d.ts +3 -1
- package/dist/server-rpc-client.js +99 -27
- package/dist/server-rpc-protocol.d.ts +47 -0
- package/dist/server-rpc-protocol.js +109 -0
- package/dist/server-rpc-stream-client.d.ts +5 -0
- package/dist/server-rpc-stream-client.js +98 -0
- package/dist/signals/actions.d.ts +12 -0
- package/dist/signals/actions.js +466 -0
- package/dist/signals/client.d.ts +2 -0
- package/dist/signals/client.js +1 -0
- package/dist/signals/computations.d.ts +37 -0
- package/dist/signals/computations.js +455 -0
- package/dist/signals/control-binding.d.ts +31 -0
- package/dist/signals/control-binding.js +353 -0
- package/dist/signals/derived-facade.d.ts +3 -0
- package/dist/signals/derived-facade.js +25 -0
- package/dist/signals/document-owner.d.ts +10 -0
- package/dist/signals/document-owner.js +43 -0
- package/dist/signals/early-values.d.ts +24 -0
- package/dist/signals/early-values.js +124 -0
- package/dist/signals/encoding.d.ts +1 -3
- package/dist/signals/encoding.js +3 -93
- package/dist/signals/engine.d.ts +53 -4
- package/dist/signals/engine.js +275 -16
- package/dist/signals/errors.d.ts +7 -0
- package/dist/signals/errors.js +16 -0
- package/dist/signals/facade.d.ts +74 -0
- package/dist/signals/facade.js +452 -0
- package/dist/signals/graph.d.ts +52 -6
- package/dist/signals/graph.js +174 -19
- package/dist/signals/handle-protocol.d.ts +4 -0
- package/dist/signals/handle-protocol.js +11 -0
- package/dist/signals/index.d.ts +12 -3
- package/dist/signals/index.js +71 -2
- package/dist/signals/native-read-client.d.ts +3 -0
- package/dist/signals/native-read-client.js +10 -0
- package/dist/signals/owner-context.d.ts +22 -0
- package/dist/signals/owner-context.js +77 -0
- package/dist/signals/query-attempt-observer.d.ts +49 -0
- package/dist/signals/query-attempt-observer.js +41 -0
- package/dist/signals/query-facade.d.ts +3 -0
- package/dist/signals/query-facade.js +49 -0
- package/dist/signals/read-protocol.d.ts +37 -2
- package/dist/signals/read-protocol.js +44 -0
- package/dist/signals/requests.d.ts +38 -5
- package/dist/signals/requests.js +298 -15
- package/dist/signals/scalar-computations.d.ts +2 -0
- package/dist/signals/scalar-computations.js +60 -0
- package/dist/signals/server.d.ts +2 -0
- package/dist/signals/server.js +1 -0
- package/dist/signals/transition-candidate.d.ts +71 -0
- package/dist/signals/transition-candidate.js +557 -0
- package/dist/signals/transition-state.d.ts +51 -0
- package/dist/signals/transition-state.js +70 -0
- package/dist/signals/types.d.ts +95 -5
- package/dist/signals/types.js +20 -0
- package/dist/stream-protocol.d.ts +0 -5
- package/dist/stream-protocol.js +3 -0
- package/dist/streamed-signals-protocol.d.ts +60 -0
- package/dist/streamed-signals-protocol.js +130 -0
- package/dist/style-values.d.ts +3 -0
- package/dist/style-values.js +96 -0
- package/dist/trusted-html.d.ts +17 -0
- package/dist/trusted-html.js +6 -0
- package/dist/universal-core.d.ts +6 -0
- package/dist/universal-core.js +214 -202
- package/dist/version.js +1 -1
- package/package.json +48 -5
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dom_binding_protocol_exports = {};
|
|
20
|
+
__export(dom_binding_protocol_exports, {
|
|
21
|
+
decodeBindingKey: () => decodeBindingKey,
|
|
22
|
+
encodeBindingKey: () => encodeBindingKey,
|
|
23
|
+
isBindingOpenComment: () => isBindingOpenComment,
|
|
24
|
+
parseBindingMarker: () => parseBindingMarker
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(dom_binding_protocol_exports);
|
|
27
|
+
function encodeBindingKey(key) {
|
|
28
|
+
if (typeof key === "string")
|
|
29
|
+
return "s:" + JSON.stringify(key).replace(/-/g, "\\u002d").replace(/</g, "\\u003c");
|
|
30
|
+
if (typeof key === "number" && Number.isFinite(key)) return "n:" + String(key);
|
|
31
|
+
throw new TypeError("A DOM presentation key must be a string or finite number.");
|
|
32
|
+
}
|
|
33
|
+
function decodeBindingKey(encoded) {
|
|
34
|
+
let key;
|
|
35
|
+
try {
|
|
36
|
+
key = JSON.parse(encoded.slice(2));
|
|
37
|
+
} catch {
|
|
38
|
+
throw new TypeError("A DOM presentation key has invalid serialized identity.");
|
|
39
|
+
}
|
|
40
|
+
if (encoded.startsWith("s:") && typeof key === "string" || encoded.startsWith("n:") && typeof key === "number" && Number.isFinite(key)) {
|
|
41
|
+
if (encodeBindingKey(key) === encoded) return key;
|
|
42
|
+
}
|
|
43
|
+
throw new TypeError("A DOM presentation key has invalid serialized identity.");
|
|
44
|
+
}
|
|
45
|
+
function parseBindingMarker(data) {
|
|
46
|
+
if (data.startsWith("[f0;b;") || data.startsWith("[f1;b;")) {
|
|
47
|
+
const separator = data.indexOf(";", 6);
|
|
48
|
+
if (separator <= 6 || separator === data.length - 1) return null;
|
|
49
|
+
return {
|
|
50
|
+
id: data.slice(6, separator),
|
|
51
|
+
site: data.slice(separator + 1),
|
|
52
|
+
kind: "for",
|
|
53
|
+
arm: data.charCodeAt(2) - 48
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (!data.startsWith("[b;")) return null;
|
|
57
|
+
const idEnd = data.indexOf(";", 3);
|
|
58
|
+
if (idEnd <= 3 || idEnd === data.length - 1) return null;
|
|
59
|
+
const id = data.slice(3, idEnd);
|
|
60
|
+
if (data.slice(idEnd + 1) === "root") return { id, site: "root", kind: "root" };
|
|
61
|
+
const siteEnd = data.indexOf(";", idEnd + 1);
|
|
62
|
+
if (siteEnd <= idEnd + 1 || siteEnd === data.length - 1) return null;
|
|
63
|
+
const site = data.slice(idEnd + 1, siteEnd);
|
|
64
|
+
const kind = data.slice(siteEnd + 1);
|
|
65
|
+
if (kind === "t") return { id, site, kind: "text" };
|
|
66
|
+
if (kind === "v") return { id, site, kind: "view" };
|
|
67
|
+
if (kind === "s") return { id, site, kind: "slot" };
|
|
68
|
+
if (kind === "o") return { id, site, kind: "opaque" };
|
|
69
|
+
if (kind.startsWith("k;")) {
|
|
70
|
+
const key = kind.slice(2);
|
|
71
|
+
try {
|
|
72
|
+
decodeBindingKey(key);
|
|
73
|
+
} catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return { id, site, kind: "item", key };
|
|
77
|
+
}
|
|
78
|
+
if (/^(?:-1|0|[1-9]\d*)$/.test(kind)) {
|
|
79
|
+
const arm = Number(kind);
|
|
80
|
+
if (Number.isSafeInteger(arm)) return { id, site, kind: "if", arm };
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
function isBindingOpenComment(data) {
|
|
85
|
+
const list = data.startsWith("[f0;b;") || data.startsWith("[f1;b;");
|
|
86
|
+
if (!list && !data.startsWith("[b;")) return false;
|
|
87
|
+
const idStart = list ? 6 : 3;
|
|
88
|
+
const idEnd = data.indexOf(";", idStart);
|
|
89
|
+
if (idEnd <= idStart || idEnd === data.length - 1) return false;
|
|
90
|
+
if (list) return data.indexOf(";", idEnd + 1) === -1;
|
|
91
|
+
if (data.length - idEnd === 5 && data.endsWith(";root")) return true;
|
|
92
|
+
const siteEnd = data.indexOf(";", idEnd + 1);
|
|
93
|
+
if (siteEnd <= idEnd + 1 || siteEnd === data.length - 1) return false;
|
|
94
|
+
const tail = siteEnd + 1;
|
|
95
|
+
if (data.length === tail + 1) {
|
|
96
|
+
const code = data.charCodeAt(tail);
|
|
97
|
+
return code === 116 || code === 118 || code === 115 || code === 111 || code >= 48 && code <= 57;
|
|
98
|
+
}
|
|
99
|
+
if (data.charCodeAt(tail) === 107 && data.charCodeAt(tail + 1) === 59)
|
|
100
|
+
return (data.charCodeAt(tail + 2) === 115 || data.charCodeAt(tail + 2) === 110) && data.charCodeAt(tail + 3) === 58 && data.length > tail + 4;
|
|
101
|
+
if (data.length === tail + 2 && data.endsWith("-1")) return true;
|
|
102
|
+
if (data.charCodeAt(tail) < 49 || data.charCodeAt(tail) > 57) return false;
|
|
103
|
+
for (let index = tail + 1; index < data.length; index++) {
|
|
104
|
+
const code = data.charCodeAt(index);
|
|
105
|
+
if (code < 48 || code > 57) return false;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
110
|
+
0 && (module.exports = {
|
|
111
|
+
decodeBindingKey,
|
|
112
|
+
encodeBindingKey,
|
|
113
|
+
isBindingOpenComment,
|
|
114
|
+
parseBindingMarker
|
|
115
|
+
});
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dom_binding_styles_exports = {};
|
|
20
|
+
__export(dom_binding_styles_exports, {
|
|
21
|
+
__createBindingStyles: () => __createBindingStyles,
|
|
22
|
+
__normalizeBindingStyle: () => __normalizeBindingStyle,
|
|
23
|
+
__prepareBindingSources: () => __prepareBindingSources
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(dom_binding_styles_exports);
|
|
26
|
+
var import_style_values = require("./style-values.cjs");
|
|
27
|
+
var import_dom_bindings = require("./dom-bindings.cjs");
|
|
28
|
+
var import_owner_context = require("./signals/owner-context.cjs");
|
|
29
|
+
var import_read_protocol = require("./signals/read-protocol.cjs");
|
|
30
|
+
function __prepareBindingSources(reads, subscriptions, notify, active, run) {
|
|
31
|
+
const previous = new Map(subscriptions);
|
|
32
|
+
const acquired = /* @__PURE__ */ new Map();
|
|
33
|
+
let accepted = false;
|
|
34
|
+
let retired = false;
|
|
35
|
+
let invalid = false;
|
|
36
|
+
try {
|
|
37
|
+
for (const source of reads.keys()) {
|
|
38
|
+
if (previous.has(source)) continue;
|
|
39
|
+
let live = true;
|
|
40
|
+
const stop = run(
|
|
41
|
+
() => source.subscribe(
|
|
42
|
+
(0, import_read_protocol.forwardNativeTransitionConsumer)(notify, () => {
|
|
43
|
+
if (!live || retired || !active()) return;
|
|
44
|
+
if (!accepted) invalid = true;
|
|
45
|
+
else notify();
|
|
46
|
+
})
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
acquired.set(source, () => {
|
|
50
|
+
live = false;
|
|
51
|
+
stop();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
for (const stop of acquired.values()) stop();
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
validate: () => !retired && !invalid && active() && subscriptions.size === previous.size && [...previous].every(([source, stop]) => subscriptions.get(source) === stop) && [...reads].every(([source, version]) => source.getVersion() === version),
|
|
60
|
+
commit() {
|
|
61
|
+
if (accepted || retired || !active()) return;
|
|
62
|
+
accepted = true;
|
|
63
|
+
for (const [source, stop] of acquired) subscriptions.set(source, stop);
|
|
64
|
+
for (const [source, stop] of previous) {
|
|
65
|
+
if (reads.has(source)) continue;
|
|
66
|
+
subscriptions.delete(source);
|
|
67
|
+
stop();
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
discard() {
|
|
71
|
+
if (accepted || retired) return;
|
|
72
|
+
retired = true;
|
|
73
|
+
for (const stop of acquired.values()) stop();
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function __normalizeBindingStyle(value) {
|
|
78
|
+
if (value == null || value === false || value === "") return null;
|
|
79
|
+
if (typeof value === "string") return value;
|
|
80
|
+
if (typeof value !== "object")
|
|
81
|
+
throw new TypeError("A whole-style DOM binding requires a style object, CSS text or null.");
|
|
82
|
+
const result = /* @__PURE__ */ Object.create(null);
|
|
83
|
+
for (const name in value) {
|
|
84
|
+
const property = value[name];
|
|
85
|
+
result[name] = property == null || typeof property === "boolean" ? null : (0, import_style_values.cssStyleValue)(name, property);
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
function __createBindingStyles() {
|
|
90
|
+
const owner = (0, import_owner_context.currentSignalOwner)();
|
|
91
|
+
const run = owner === null ? (callback) => callback() : (0, import_owner_context.captureSignalOwner)(owner);
|
|
92
|
+
return {
|
|
93
|
+
connect(node, notify, restoreStyles = false) {
|
|
94
|
+
let raw;
|
|
95
|
+
let disposed = false;
|
|
96
|
+
const subscriptions = /* @__PURE__ */ new Map();
|
|
97
|
+
let previous = null;
|
|
98
|
+
let firstWrite = true;
|
|
99
|
+
const style = node.style;
|
|
100
|
+
let restorations;
|
|
101
|
+
let baseline;
|
|
102
|
+
let expected;
|
|
103
|
+
let probe;
|
|
104
|
+
const snapshotDOM = () => {
|
|
105
|
+
const result = /* @__PURE__ */ Object.create(null);
|
|
106
|
+
for (let i = 0; i < style.length; i++) {
|
|
107
|
+
const name = style.item(i);
|
|
108
|
+
result[name] = style.getPropertyValue(name) + (style.getPropertyPriority(name) ? " !important" : "");
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
};
|
|
112
|
+
previous = snapshotDOM();
|
|
113
|
+
const get = () => {
|
|
114
|
+
if (disposed) return null;
|
|
115
|
+
const reads = /* @__PURE__ */ new Map();
|
|
116
|
+
const previousObserver = (0, import_read_protocol.setNativeReadObserver)(
|
|
117
|
+
(source, version) => reads.set(source, version)
|
|
118
|
+
);
|
|
119
|
+
const guard = (0, import_read_protocol.beginNativeWriteGuard)();
|
|
120
|
+
let value;
|
|
121
|
+
try {
|
|
122
|
+
value = run(() => __normalizeBindingStyle((0, import_read_protocol.readNativeDomStyle)(raw)));
|
|
123
|
+
} finally {
|
|
124
|
+
(0, import_read_protocol.endNativeWriteGuard)(guard);
|
|
125
|
+
(0, import_read_protocol.setNativeReadObserver)(previousObserver);
|
|
126
|
+
}
|
|
127
|
+
for (const [source, stop] of subscriptions) {
|
|
128
|
+
if (reads.has(source)) continue;
|
|
129
|
+
subscriptions.delete(source);
|
|
130
|
+
stop();
|
|
131
|
+
}
|
|
132
|
+
for (const [source, version] of reads) {
|
|
133
|
+
if (disposed) break;
|
|
134
|
+
if (!subscriptions.has(source)) {
|
|
135
|
+
let active = true;
|
|
136
|
+
const stop = run(
|
|
137
|
+
() => source.subscribe(
|
|
138
|
+
(0, import_read_protocol.forwardNativeTransitionConsumer)(notify, () => {
|
|
139
|
+
if (active && !disposed) notify();
|
|
140
|
+
})
|
|
141
|
+
)
|
|
142
|
+
);
|
|
143
|
+
if (typeof stop !== "function")
|
|
144
|
+
throw new TypeError("A DOM style subscription must return cleanup.");
|
|
145
|
+
const disposeSource = () => {
|
|
146
|
+
active = false;
|
|
147
|
+
stop();
|
|
148
|
+
};
|
|
149
|
+
if (disposed) disposeSource();
|
|
150
|
+
else subscriptions.set(source, disposeSource);
|
|
151
|
+
}
|
|
152
|
+
if (!disposed && source.getVersion() !== version) notify();
|
|
153
|
+
}
|
|
154
|
+
return value;
|
|
155
|
+
};
|
|
156
|
+
const writeProperty = (name, value) => {
|
|
157
|
+
if (disposed) return;
|
|
158
|
+
name = (0, import_style_values.hyphenateStyleName)(name);
|
|
159
|
+
const operation = [0, "styleProperty", name];
|
|
160
|
+
if (restoreStyles) {
|
|
161
|
+
if (!baseline) {
|
|
162
|
+
baseline = node.ownerDocument.createElement("i");
|
|
163
|
+
expected = node.ownerDocument.createElement("i");
|
|
164
|
+
baseline.style.cssText = expected.style.cssText = style.cssText;
|
|
165
|
+
restorations = /* @__PURE__ */ new Set();
|
|
166
|
+
}
|
|
167
|
+
restorations.add(name);
|
|
168
|
+
(0, import_dom_bindings.__writeBinding)(expected, operation, value);
|
|
169
|
+
}
|
|
170
|
+
(0, import_dom_bindings.__writeBinding)(node, operation, value);
|
|
171
|
+
};
|
|
172
|
+
const restore = () => {
|
|
173
|
+
if (!restorations) return;
|
|
174
|
+
const owned = [...restorations].filter(
|
|
175
|
+
(name) => style.getPropertyValue(name) === expected.style.getPropertyValue(name) && style.getPropertyPriority(name) === expected.style.getPropertyPriority(name)
|
|
176
|
+
);
|
|
177
|
+
let failed = false;
|
|
178
|
+
let failure;
|
|
179
|
+
for (const name of owned) {
|
|
180
|
+
try {
|
|
181
|
+
const value = baseline.style.getPropertyValue(name);
|
|
182
|
+
if (value === "") style.removeProperty(name);
|
|
183
|
+
else style.setProperty(name, value, baseline.style.getPropertyPriority(name));
|
|
184
|
+
} catch (error) {
|
|
185
|
+
if (!failed) {
|
|
186
|
+
failed = true;
|
|
187
|
+
failure = error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (failed) throw failure;
|
|
192
|
+
};
|
|
193
|
+
return {
|
|
194
|
+
get,
|
|
195
|
+
preview(value) {
|
|
196
|
+
const reads = /* @__PURE__ */ new Map();
|
|
197
|
+
const previousObserver = (0, import_read_protocol.setNativeReadObserver)((source, version) => {
|
|
198
|
+
if (!reads.has(source)) reads.set(source, version);
|
|
199
|
+
});
|
|
200
|
+
const guard = (0, import_read_protocol.beginNativeWriteGuard)();
|
|
201
|
+
let projected;
|
|
202
|
+
try {
|
|
203
|
+
projected = run(() => __normalizeBindingStyle((0, import_read_protocol.readNativeDomStyle)(value)));
|
|
204
|
+
} finally {
|
|
205
|
+
(0, import_read_protocol.endNativeWriteGuard)(guard);
|
|
206
|
+
(0, import_read_protocol.setNativeReadObserver)(previousObserver);
|
|
207
|
+
}
|
|
208
|
+
const prepared = __prepareBindingSources(
|
|
209
|
+
reads,
|
|
210
|
+
subscriptions,
|
|
211
|
+
notify,
|
|
212
|
+
() => !disposed,
|
|
213
|
+
run
|
|
214
|
+
);
|
|
215
|
+
return {
|
|
216
|
+
value: projected,
|
|
217
|
+
validate: prepared.validate,
|
|
218
|
+
discard: prepared.discard,
|
|
219
|
+
commit() {
|
|
220
|
+
raw = value;
|
|
221
|
+
prepared.commit();
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
},
|
|
225
|
+
read(value) {
|
|
226
|
+
raw = value;
|
|
227
|
+
return get();
|
|
228
|
+
},
|
|
229
|
+
write(value) {
|
|
230
|
+
if (disposed) return;
|
|
231
|
+
let next = value;
|
|
232
|
+
let old = typeof previous === "string" ? snapshotDOM() : previous;
|
|
233
|
+
const writeAll = firstWrite || typeof previous === "string" || typeof value === "string";
|
|
234
|
+
if (typeof next === "string") {
|
|
235
|
+
probe ??= node.ownerDocument.createElement("i");
|
|
236
|
+
probe.style.cssText = next;
|
|
237
|
+
const parsed = /* @__PURE__ */ Object.create(null);
|
|
238
|
+
for (let i = 0; i < probe.style.length; i++) {
|
|
239
|
+
const name = probe.style.item(i);
|
|
240
|
+
parsed[name] = probe.style.getPropertyValue(name) + (probe.style.getPropertyPriority(name) ? " !important" : "");
|
|
241
|
+
}
|
|
242
|
+
next = parsed;
|
|
243
|
+
old = snapshotDOM();
|
|
244
|
+
}
|
|
245
|
+
previous = typeof value === "string" ? value : next;
|
|
246
|
+
const initialNames = firstWrite && next && typeof next === "object" ? new Set(Object.keys(next).map(import_style_values.hyphenateStyleName)) : null;
|
|
247
|
+
firstWrite = false;
|
|
248
|
+
if (old && typeof old === "object") {
|
|
249
|
+
for (const name in old)
|
|
250
|
+
if (next === null || (initialNames ? !initialNames.has(name) : !(name in next)))
|
|
251
|
+
writeProperty(name, null);
|
|
252
|
+
}
|
|
253
|
+
if (next && typeof next === "object") {
|
|
254
|
+
for (const name in next)
|
|
255
|
+
if (writeAll || old === null || typeof old !== "object" || next[name] !== old[name])
|
|
256
|
+
writeProperty(name, next[name]);
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
dispose(preservePresentation) {
|
|
260
|
+
if (disposed) return;
|
|
261
|
+
disposed = true;
|
|
262
|
+
raw = previous = null;
|
|
263
|
+
let failed = false;
|
|
264
|
+
let failure;
|
|
265
|
+
for (const stop of [
|
|
266
|
+
...subscriptions.values(),
|
|
267
|
+
...preservePresentation ? [] : [restore]
|
|
268
|
+
]) {
|
|
269
|
+
try {
|
|
270
|
+
stop();
|
|
271
|
+
} catch (error) {
|
|
272
|
+
if (!failed) {
|
|
273
|
+
failed = true;
|
|
274
|
+
failure = error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
subscriptions.clear();
|
|
279
|
+
restorations?.clear();
|
|
280
|
+
probe = baseline = expected = void 0;
|
|
281
|
+
if (failed) throw failure;
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
288
|
+
0 && (module.exports = {
|
|
289
|
+
__createBindingStyles,
|
|
290
|
+
__normalizeBindingStyle,
|
|
291
|
+
__prepareBindingSources
|
|
292
|
+
});
|