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