@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.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { internalEffect, reconcileList, batch } from './chunk-
|
|
2
|
-
import { createSignal, createComputed } from './chunk-
|
|
1
|
+
import { internalEffect, reconcileList, batch } from './chunk-N522P3G6.js';
|
|
2
|
+
import { createSignal, createComputed } from './chunk-OZCHIVAZ.js';
|
|
3
3
|
|
|
4
4
|
// src/dom/reconcile.ts
|
|
5
5
|
function getBindTargets(el) {
|
|
@@ -1538,14 +1538,6 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1538
1538
|
return () => left() ?? right();
|
|
1539
1539
|
}
|
|
1540
1540
|
}
|
|
1541
|
-
const andMatch = expr.match(RE_AND);
|
|
1542
|
-
if (andMatch) {
|
|
1543
|
-
const left = parseExpression(andMatch[1].trim(), scope);
|
|
1544
|
-
const right = parseExpression(andMatch[2].trim(), scope);
|
|
1545
|
-
if (left && right) {
|
|
1546
|
-
return () => left() && right();
|
|
1547
|
-
}
|
|
1548
|
-
}
|
|
1549
1541
|
const orMatch = expr.match(RE_OR);
|
|
1550
1542
|
if (orMatch) {
|
|
1551
1543
|
const left = parseExpression(orMatch[1].trim(), scope);
|
|
@@ -1554,6 +1546,14 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1554
1546
|
return () => left() || right();
|
|
1555
1547
|
}
|
|
1556
1548
|
}
|
|
1549
|
+
const andMatch = expr.match(RE_AND);
|
|
1550
|
+
if (andMatch) {
|
|
1551
|
+
const left = parseExpression(andMatch[1].trim(), scope);
|
|
1552
|
+
const right = parseExpression(andMatch[2].trim(), scope);
|
|
1553
|
+
if (left && right) {
|
|
1554
|
+
return () => left() && right();
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1557
1557
|
const compMatch = expr.match(RE_COMPARISON);
|
|
1558
1558
|
if (compMatch) {
|
|
1559
1559
|
const left = parseExpression(compMatch[1].trim(), scope);
|
|
@@ -1583,6 +1583,19 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1583
1583
|
};
|
|
1584
1584
|
}
|
|
1585
1585
|
}
|
|
1586
|
+
const addMatch = expr.match(RE_ADD);
|
|
1587
|
+
if (addMatch) {
|
|
1588
|
+
const left = parseExpression(addMatch[1].trim(), scope);
|
|
1589
|
+
const right = parseExpression(addMatch[3].trim(), scope);
|
|
1590
|
+
if (left && right) {
|
|
1591
|
+
const op = addMatch[2];
|
|
1592
|
+
return () => {
|
|
1593
|
+
const l = left(), r = right();
|
|
1594
|
+
if (op === "+") return l + r;
|
|
1595
|
+
return l - r;
|
|
1596
|
+
};
|
|
1597
|
+
}
|
|
1598
|
+
}
|
|
1586
1599
|
const mulMatch = expr.match(RE_MUL);
|
|
1587
1600
|
if (mulMatch) {
|
|
1588
1601
|
const left = parseExpression(mulMatch[1].trim(), scope);
|
|
@@ -1602,19 +1615,6 @@ function parseExpressionUncached(expr, scope) {
|
|
|
1602
1615
|
};
|
|
1603
1616
|
}
|
|
1604
1617
|
}
|
|
1605
|
-
const addMatch = expr.match(RE_ADD);
|
|
1606
|
-
if (addMatch) {
|
|
1607
|
-
const left = parseExpression(addMatch[1].trim(), scope);
|
|
1608
|
-
const right = parseExpression(addMatch[3].trim(), scope);
|
|
1609
|
-
if (left && right) {
|
|
1610
|
-
const op = addMatch[2];
|
|
1611
|
-
return () => {
|
|
1612
|
-
const l = left(), r = right();
|
|
1613
|
-
if (op === "+") return l + r;
|
|
1614
|
-
return l - r;
|
|
1615
|
-
};
|
|
1616
|
-
}
|
|
1617
|
-
}
|
|
1618
1618
|
const tmplMatch = expr.match(RE_TEMPLATE_LIT);
|
|
1619
1619
|
if (tmplMatch) {
|
|
1620
1620
|
const raw = tmplMatch[1];
|
|
@@ -1911,9 +1911,87 @@ function initScope(stateEl) {
|
|
|
1911
1911
|
getters["$refetch"] = () => $refetch;
|
|
1912
1912
|
return { getters, setters };
|
|
1913
1913
|
}
|
|
1914
|
+
var SAFE_EL_PROPS = /* @__PURE__ */ new Set([
|
|
1915
|
+
// Identity & attributes
|
|
1916
|
+
"id",
|
|
1917
|
+
"className",
|
|
1918
|
+
"tagName",
|
|
1919
|
+
"nodeName",
|
|
1920
|
+
"getAttribute",
|
|
1921
|
+
"setAttribute",
|
|
1922
|
+
"removeAttribute",
|
|
1923
|
+
"hasAttribute",
|
|
1924
|
+
"toggleAttribute",
|
|
1925
|
+
"dataset",
|
|
1926
|
+
"classList",
|
|
1927
|
+
// Content
|
|
1928
|
+
"textContent",
|
|
1929
|
+
"innerText",
|
|
1930
|
+
// Form elements
|
|
1931
|
+
"value",
|
|
1932
|
+
"checked",
|
|
1933
|
+
"disabled",
|
|
1934
|
+
"selected",
|
|
1935
|
+
"type",
|
|
1936
|
+
"name",
|
|
1937
|
+
"placeholder",
|
|
1938
|
+
"readOnly",
|
|
1939
|
+
"required",
|
|
1940
|
+
"min",
|
|
1941
|
+
"max",
|
|
1942
|
+
"step",
|
|
1943
|
+
"pattern",
|
|
1944
|
+
// Dimensions & position
|
|
1945
|
+
"getBoundingClientRect",
|
|
1946
|
+
"offsetWidth",
|
|
1947
|
+
"offsetHeight",
|
|
1948
|
+
"offsetTop",
|
|
1949
|
+
"offsetLeft",
|
|
1950
|
+
"clientWidth",
|
|
1951
|
+
"clientHeight",
|
|
1952
|
+
"scrollWidth",
|
|
1953
|
+
"scrollHeight",
|
|
1954
|
+
"scrollTop",
|
|
1955
|
+
"scrollLeft",
|
|
1956
|
+
// Style
|
|
1957
|
+
"style",
|
|
1958
|
+
"hidden",
|
|
1959
|
+
// Focus & interaction
|
|
1960
|
+
"focus",
|
|
1961
|
+
"blur",
|
|
1962
|
+
"click",
|
|
1963
|
+
"scrollIntoView",
|
|
1964
|
+
"scrollTo",
|
|
1965
|
+
// Traversal (safe — returns elements, not window/document)
|
|
1966
|
+
"closest",
|
|
1967
|
+
"matches",
|
|
1968
|
+
"querySelector",
|
|
1969
|
+
"querySelectorAll",
|
|
1970
|
+
"children",
|
|
1971
|
+
"childElementCount",
|
|
1972
|
+
"firstElementChild",
|
|
1973
|
+
"lastElementChild",
|
|
1974
|
+
"nextElementSibling",
|
|
1975
|
+
"previousElementSibling"
|
|
1976
|
+
]);
|
|
1977
|
+
function createSafeElProxy(el) {
|
|
1978
|
+
return new Proxy(el, {
|
|
1979
|
+
get(target, prop) {
|
|
1980
|
+
if (typeof prop === "symbol") return Reflect.get(target, prop);
|
|
1981
|
+
if (!SAFE_EL_PROPS.has(prop)) return void 0;
|
|
1982
|
+
const val = Reflect.get(target, prop);
|
|
1983
|
+
return typeof val === "function" ? val.bind(target) : val;
|
|
1984
|
+
},
|
|
1985
|
+
set(target, prop, value) {
|
|
1986
|
+
if (typeof prop === "symbol") return false;
|
|
1987
|
+
if (!SAFE_EL_PROPS.has(prop)) return false;
|
|
1988
|
+
return Reflect.set(target, prop, value);
|
|
1989
|
+
}
|
|
1990
|
+
});
|
|
1991
|
+
}
|
|
1914
1992
|
function bindElement(el, scope, disposers) {
|
|
1915
1993
|
const elMagics = {
|
|
1916
|
-
$el: el,
|
|
1994
|
+
$el: createSafeElProxy(el),
|
|
1917
1995
|
$dispatch: (name, detail) => {
|
|
1918
1996
|
el.dispatchEvent(new CustomEvent(name, {
|
|
1919
1997
|
bubbles: true,
|