@getforma/core 0.6.1 → 0.8.2
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 +125 -15
- package/dist/chunk-3U57L2TY.cjs +38 -0
- package/dist/chunk-3U57L2TY.cjs.map +1 -0
- package/dist/{chunk-TKGUHASG.js → chunk-N522P3G6.js} +20 -12
- package/dist/chunk-N522P3G6.js.map +1 -0
- package/dist/chunk-OZCHIVAZ.js +35 -0
- package/dist/chunk-OZCHIVAZ.js.map +1 -0
- package/dist/{chunk-YSKF3VRA.cjs → chunk-YMIMKO4W.cjs} +51 -20
- package/dist/chunk-YMIMKO4W.cjs.map +1 -0
- package/dist/forma-runtime-csp.js +1 -1
- package/dist/forma-runtime.js +1 -1
- package/dist/formajs-runtime-hardened.global.js +1 -1
- package/dist/formajs-runtime-hardened.global.js.map +1 -1
- package/dist/formajs-runtime.global.js +1 -1
- package/dist/formajs-runtime.global.js.map +1 -1
- package/dist/formajs.global.js +1 -1
- package/dist/formajs.global.js.map +1 -1
- package/dist/index.cjs +112 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +30 -21
- package/dist/index.d.ts +30 -21
- package/dist/index.js +25 -50
- package/dist/index.js.map +1 -1
- package/dist/runtime-hardened.cjs +106 -27
- package/dist/runtime-hardened.cjs.map +1 -1
- package/dist/runtime-hardened.js +107 -28
- package/dist/runtime-hardened.js.map +1 -1
- package/dist/runtime.cjs +128 -50
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.js +102 -24
- package/dist/runtime.js.map +1 -1
- package/dist/signal-B4_wQJHs.d.cts +53 -0
- package/dist/signal-B4_wQJHs.d.ts +53 -0
- package/dist/ssr/index.cjs +19 -2
- package/dist/ssr/index.cjs.map +1 -1
- package/dist/ssr/index.js +19 -2
- package/dist/ssr/index.js.map +1 -1
- package/dist/tc39-compat.cjs +4 -12
- package/dist/tc39-compat.cjs.map +1 -1
- package/dist/tc39-compat.d.cts +1 -1
- package/dist/tc39-compat.d.ts +1 -1
- package/dist/tc39-compat.js +3 -11
- package/dist/tc39-compat.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-DPSAVBCP.js +0 -26
- package/dist/chunk-DPSAVBCP.js.map +0 -1
- package/dist/chunk-KH3F5NRU.cjs +0 -29
- package/dist/chunk-KH3F5NRU.cjs.map +0 -1
- package/dist/chunk-TKGUHASG.js.map +0 -1
- package/dist/chunk-YSKF3VRA.cjs.map +0 -1
- package/dist/signal-CfLDwMyg.d.cts +0 -29
- package/dist/signal-CfLDwMyg.d.ts +0 -29
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
var alienSignals = require('alien-signals');
|
|
4
4
|
|
|
5
5
|
// src/reactive/signal.ts
|
|
6
|
-
function applySignalSet(s, v) {
|
|
6
|
+
function applySignalSet(s, v, equals) {
|
|
7
7
|
if (typeof v !== "function") {
|
|
8
8
|
s(v);
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
alienSignals.
|
|
11
|
+
const prevSub = alienSignals.setActiveSub(void 0);
|
|
12
12
|
const prev = s();
|
|
13
|
-
alienSignals.
|
|
14
|
-
|
|
13
|
+
alienSignals.setActiveSub(prevSub);
|
|
14
|
+
const next = v(prev);
|
|
15
|
+
s(next);
|
|
15
16
|
}
|
|
16
|
-
function createSignal(initialValue) {
|
|
17
|
+
function createSignal(initialValue, options) {
|
|
17
18
|
const s = alienSignals.signal(initialValue);
|
|
18
19
|
const getter = s;
|
|
19
20
|
const setter = (v) => applySignalSet(s, v);
|
|
@@ -1813,14 +1814,6 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1813
1814
|
return () => left() ?? right();
|
|
1814
1815
|
}
|
|
1815
1816
|
}
|
|
1816
|
-
const andMatch = expr.match(RE_AND);
|
|
1817
|
-
if (andMatch) {
|
|
1818
|
-
const left = parseExpression(andMatch[1].trim(), scope);
|
|
1819
|
-
const right = parseExpression(andMatch[2].trim(), scope);
|
|
1820
|
-
if (left && right) {
|
|
1821
|
-
return () => left() && right();
|
|
1822
|
-
}
|
|
1823
|
-
}
|
|
1824
1817
|
const orMatch = expr.match(RE_OR);
|
|
1825
1818
|
if (orMatch) {
|
|
1826
1819
|
const left = parseExpression(orMatch[1].trim(), scope);
|
|
@@ -1829,6 +1822,14 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1829
1822
|
return () => left() || right();
|
|
1830
1823
|
}
|
|
1831
1824
|
}
|
|
1825
|
+
const andMatch = expr.match(RE_AND);
|
|
1826
|
+
if (andMatch) {
|
|
1827
|
+
const left = parseExpression(andMatch[1].trim(), scope);
|
|
1828
|
+
const right = parseExpression(andMatch[2].trim(), scope);
|
|
1829
|
+
if (left && right) {
|
|
1830
|
+
return () => left() && right();
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1832
1833
|
const compMatch = expr.match(RE_COMPARISON);
|
|
1833
1834
|
if (compMatch) {
|
|
1834
1835
|
const left = parseExpression(compMatch[1].trim(), scope);
|
|
@@ -1858,6 +1859,19 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1858
1859
|
};
|
|
1859
1860
|
}
|
|
1860
1861
|
}
|
|
1862
|
+
const addMatch = expr.match(RE_ADD);
|
|
1863
|
+
if (addMatch) {
|
|
1864
|
+
const left = parseExpression(addMatch[1].trim(), scope);
|
|
1865
|
+
const right = parseExpression(addMatch[3].trim(), scope);
|
|
1866
|
+
if (left && right) {
|
|
1867
|
+
const op = addMatch[2];
|
|
1868
|
+
return () => {
|
|
1869
|
+
const l = left(), r = right();
|
|
1870
|
+
if (op === "+") return l + r;
|
|
1871
|
+
return l - r;
|
|
1872
|
+
};
|
|
1873
|
+
}
|
|
1874
|
+
}
|
|
1861
1875
|
const mulMatch = expr.match(RE_MUL);
|
|
1862
1876
|
if (mulMatch) {
|
|
1863
1877
|
const left = parseExpression(mulMatch[1].trim(), scope);
|
|
@@ -1877,19 +1891,6 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1877
1891
|
};
|
|
1878
1892
|
}
|
|
1879
1893
|
}
|
|
1880
|
-
const addMatch = expr.match(RE_ADD);
|
|
1881
|
-
if (addMatch) {
|
|
1882
|
-
const left = parseExpression(addMatch[1].trim(), scope);
|
|
1883
|
-
const right = parseExpression(addMatch[3].trim(), scope);
|
|
1884
|
-
if (left && right) {
|
|
1885
|
-
const op = addMatch[2];
|
|
1886
|
-
return () => {
|
|
1887
|
-
const l = left(), r = right();
|
|
1888
|
-
if (op === "+") return l + r;
|
|
1889
|
-
return l - r;
|
|
1890
|
-
};
|
|
1891
|
-
}
|
|
1892
|
-
}
|
|
1893
1894
|
const tmplMatch = expr.match(RE_TEMPLATE_LIT);
|
|
1894
1895
|
if (tmplMatch) {
|
|
1895
1896
|
const raw = tmplMatch[1];
|
|
@@ -2186,9 +2187,87 @@ function initScope(stateEl) {
|
|
|
2186
2187
|
getters["$refetch"] = () => $refetch;
|
|
2187
2188
|
return { getters, setters };
|
|
2188
2189
|
}
|
|
2190
|
+
var SAFE_EL_PROPS = /* @__PURE__ */ new Set([
|
|
2191
|
+
// Identity & attributes
|
|
2192
|
+
"id",
|
|
2193
|
+
"className",
|
|
2194
|
+
"tagName",
|
|
2195
|
+
"nodeName",
|
|
2196
|
+
"getAttribute",
|
|
2197
|
+
"setAttribute",
|
|
2198
|
+
"removeAttribute",
|
|
2199
|
+
"hasAttribute",
|
|
2200
|
+
"toggleAttribute",
|
|
2201
|
+
"dataset",
|
|
2202
|
+
"classList",
|
|
2203
|
+
// Content
|
|
2204
|
+
"textContent",
|
|
2205
|
+
"innerText",
|
|
2206
|
+
// Form elements
|
|
2207
|
+
"value",
|
|
2208
|
+
"checked",
|
|
2209
|
+
"disabled",
|
|
2210
|
+
"selected",
|
|
2211
|
+
"type",
|
|
2212
|
+
"name",
|
|
2213
|
+
"placeholder",
|
|
2214
|
+
"readOnly",
|
|
2215
|
+
"required",
|
|
2216
|
+
"min",
|
|
2217
|
+
"max",
|
|
2218
|
+
"step",
|
|
2219
|
+
"pattern",
|
|
2220
|
+
// Dimensions & position
|
|
2221
|
+
"getBoundingClientRect",
|
|
2222
|
+
"offsetWidth",
|
|
2223
|
+
"offsetHeight",
|
|
2224
|
+
"offsetTop",
|
|
2225
|
+
"offsetLeft",
|
|
2226
|
+
"clientWidth",
|
|
2227
|
+
"clientHeight",
|
|
2228
|
+
"scrollWidth",
|
|
2229
|
+
"scrollHeight",
|
|
2230
|
+
"scrollTop",
|
|
2231
|
+
"scrollLeft",
|
|
2232
|
+
// Style
|
|
2233
|
+
"style",
|
|
2234
|
+
"hidden",
|
|
2235
|
+
// Focus & interaction
|
|
2236
|
+
"focus",
|
|
2237
|
+
"blur",
|
|
2238
|
+
"click",
|
|
2239
|
+
"scrollIntoView",
|
|
2240
|
+
"scrollTo",
|
|
2241
|
+
// Traversal (safe — returns elements, not window/document)
|
|
2242
|
+
"closest",
|
|
2243
|
+
"matches",
|
|
2244
|
+
"querySelector",
|
|
2245
|
+
"querySelectorAll",
|
|
2246
|
+
"children",
|
|
2247
|
+
"childElementCount",
|
|
2248
|
+
"firstElementChild",
|
|
2249
|
+
"lastElementChild",
|
|
2250
|
+
"nextElementSibling",
|
|
2251
|
+
"previousElementSibling"
|
|
2252
|
+
]);
|
|
2253
|
+
function createSafeElProxy(el) {
|
|
2254
|
+
return new Proxy(el, {
|
|
2255
|
+
get(target, prop) {
|
|
2256
|
+
if (typeof prop === "symbol") return Reflect.get(target, prop);
|
|
2257
|
+
if (!SAFE_EL_PROPS.has(prop)) return void 0;
|
|
2258
|
+
const val = Reflect.get(target, prop);
|
|
2259
|
+
return typeof val === "function" ? val.bind(target) : val;
|
|
2260
|
+
},
|
|
2261
|
+
set(target, prop, value2) {
|
|
2262
|
+
if (typeof prop === "symbol") return false;
|
|
2263
|
+
if (!SAFE_EL_PROPS.has(prop)) return false;
|
|
2264
|
+
return Reflect.set(target, prop, value2);
|
|
2265
|
+
}
|
|
2266
|
+
});
|
|
2267
|
+
}
|
|
2189
2268
|
function bindElement(el, scope, disposers) {
|
|
2190
2269
|
const elMagics = {
|
|
2191
|
-
$el: el,
|
|
2270
|
+
$el: createSafeElProxy(el),
|
|
2192
2271
|
$dispatch: (name, detail) => {
|
|
2193
2272
|
el.dispatchEvent(new CustomEvent(name, {
|
|
2194
2273
|
bubbles: true,
|