@jxsuite/runtime 0.33.0 → 0.34.1

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/runtime.js CHANGED
@@ -1781,7 +1781,60 @@ var _serverFnConfig = { skip: false };
1781
1781
  function setSkipServerFunctions(v) {
1782
1782
  _serverFnConfig.skip = v;
1783
1783
  }
1784
+ var _resolveToken = null;
1785
+ function setResolveToken(token) {
1786
+ _resolveToken = token || null;
1787
+ }
1788
+ function resolveProxyPath(path) {
1789
+ return _resolveToken ? `${path}?token=${encodeURIComponent(_resolveToken)}` : path;
1790
+ }
1784
1791
  function setSkipContentResolution(_v) {}
1792
+ function observeScope(fn) {
1793
+ const scope = effectScope(true);
1794
+ scope.run(() => {
1795
+ effect(fn);
1796
+ });
1797
+ return () => scope.stop();
1798
+ }
1799
+ function runScoped(fn) {
1800
+ const scope = effectScope(true);
1801
+ try {
1802
+ const result = scope.run(fn);
1803
+ return { result, stop: () => scope.stop() };
1804
+ } catch (error) {
1805
+ scope.stop();
1806
+ throw error;
1807
+ }
1808
+ }
1809
+ var _canvasViewportTranspose = false;
1810
+ function setCanvasViewportTranspose(on) {
1811
+ _canvasViewportTranspose = on;
1812
+ }
1813
+ var VIEWPORT_UNIT_RE = /(-?\d*\.?\d+)(?:s|l|d)?v(h|w|min|max|i|b)\b/gi;
1814
+ var VIEWPORT_UNIT_MAP = {
1815
+ b: "cqb",
1816
+ h: "cqh",
1817
+ i: "cqi",
1818
+ max: "cqmax",
1819
+ min: "cqmin",
1820
+ w: "cqw"
1821
+ };
1822
+ function transposeCanvasUnits(value) {
1823
+ if (!_canvasViewportTranspose || !value.includes("v")) {
1824
+ return value;
1825
+ }
1826
+ return value.replace(VIEWPORT_UNIT_RE, (_m, num, dim) => `${num}${VIEWPORT_UNIT_MAP[dim.toLowerCase()] ?? `cq${dim}`}`);
1827
+ }
1828
+ var _canvasDelinkAnchors = false;
1829
+ function setCanvasDelinkAnchors(on) {
1830
+ _canvasDelinkAnchors = on;
1831
+ }
1832
+ function canvasAttrName(el, key) {
1833
+ if (_canvasDelinkAnchors && key === "href" && (el.tagName === "A" || el.tagName === "AREA")) {
1834
+ return "data-jx-href";
1835
+ }
1836
+ return key;
1837
+ }
1785
1838
  async function buildScope(doc, parentScope = {}, base = location.href) {
1786
1839
  const raw = {};
1787
1840
  for (const [key, val] of Object.entries(parentScope)) {
@@ -2140,19 +2193,19 @@ function applyStyle(el, styleDef, mediaQueries = {}, state = {}) {
2140
2193
  if (prop.startsWith("--")) {
2141
2194
  if (isTemplateString(val)) {
2142
2195
  effect(() => {
2143
- el.style.setProperty(prop, evaluateTemplate(val, state));
2196
+ el.style.setProperty(prop, transposeCanvasUnits(evaluateTemplate(val, state)));
2144
2197
  });
2145
2198
  } else {
2146
- el.style.setProperty(prop, scalar);
2199
+ el.style.setProperty(prop, transposeCanvasUnits(scalar));
2147
2200
  }
2148
2201
  } else if (isTemplateString(val)) {
2149
2202
  effect(() => {
2150
- el.style[prop] = evaluateTemplate(val, state);
2203
+ el.style[prop] = transposeCanvasUnits(evaluateTemplate(val, state));
2151
2204
  });
2152
2205
  } else if (mediaOverriddenProps.has(prop)) {
2153
2206
  baseDecls[prop] = scalar;
2154
2207
  } else {
2155
- el.style[prop] = scalar;
2208
+ el.style[prop] = transposeCanvasUnits(scalar);
2156
2209
  }
2157
2210
  }
2158
2211
  const hasNested = Object.keys(nested).length > 0;
@@ -2236,12 +2289,13 @@ function reapplyStyle(el, styleDef, mediaQueries = {}, state = {}) {
2236
2289
  }
2237
2290
  function applyAttributes(el, attrs, state) {
2238
2291
  for (const [k, v] of Object.entries(attrs)) {
2292
+ const attr = canvasAttrName(el, k);
2239
2293
  if (isRefObj(v)) {
2240
- effect(() => el.setAttribute(k, String(resolveRef(v.$ref, state) ?? "")));
2294
+ effect(() => el.setAttribute(attr, String(resolveRef(v.$ref, state) ?? "")));
2241
2295
  } else if (isTemplateString(v)) {
2242
- effect(() => el.setAttribute(k, String(evaluateTemplate(v, state))));
2296
+ effect(() => el.setAttribute(attr, String(evaluateTemplate(v, state))));
2243
2297
  } else {
2244
- el.setAttribute(k, String(v));
2298
+ el.setAttribute(attr, String(v));
2245
2299
  }
2246
2300
  }
2247
2301
  }
@@ -2717,7 +2771,7 @@ async function resolveViaDevProxy(def2, state, key, base) {
2717
2771
  }
2718
2772
  }
2719
2773
  const hasTemplates = Object.values(config).some((v) => isTemplateString(v));
2720
- const doResolve = (resolvedConfig) => fetch("/__jx_resolve__", {
2774
+ const doResolve = (resolvedConfig) => fetch(resolveProxyPath("/__jx_resolve__"), {
2721
2775
  body: JSON.stringify({
2722
2776
  $base: base,
2723
2777
  $export: def2.$export,
@@ -2815,7 +2869,7 @@ async function resolveServerFunctionViaProxy(def2, state, key, base) {
2815
2869
  }
2816
2870
  return args;
2817
2871
  };
2818
- const doResolve = (args) => fetch("/__jx_server__", {
2872
+ const doResolve = (args) => fetch(resolveProxyPath("/__jx_server__"), {
2819
2873
  body: JSON.stringify({
2820
2874
  $base: base,
2821
2875
  $export: def2.$export,
@@ -2903,10 +2957,13 @@ function camelToKebab(s) {
2903
2957
  return s.replaceAll(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
2904
2958
  }
2905
2959
  function toCSSText(rules) {
2906
- return Object.entries(rules).filter(([k, v]) => !isNestedSelector(k) && (v === null || typeof v !== "object")).map(([p, v]) => `${camelToKebab(p)}: ${v}`).join("; ");
2960
+ return Object.entries(rules).filter(([k, v]) => !isNestedSelector(k) && (v === null || typeof v !== "object")).map(([p, v]) => `${camelToKebab(p)}: ${transposeCanvasUnits(String(v))}`).join("; ");
2907
2961
  }
2908
2962
  var _rootMedia = {};
2909
2963
  var _elementDefs = new Map;
2964
+ function setRootMedia(map) {
2965
+ _rootMedia = map ?? {};
2966
+ }
2910
2967
  async function registerElements(elements, base) {
2911
2968
  for (const entry of elements) {
2912
2969
  if (typeof entry === "string") {
@@ -2996,6 +3053,9 @@ async function defineElement(source, baseUrl) {
2996
3053
  return observedAttrs;
2997
3054
  }
2998
3055
  async connectedCallback() {
3056
+ if (this.dataset.jxDefinitionRoot !== undefined) {
3057
+ return;
3058
+ }
2999
3059
  if (this._jxInitialized) {
3000
3060
  return;
3001
3061
  }
@@ -3013,6 +3073,14 @@ async function defineElement(source, baseUrl) {
3013
3073
  } catch {}
3014
3074
  delete this.dataset.jxProps;
3015
3075
  }
3076
+ const propAttrNames = this.getAttributeNames().filter((name) => name.startsWith("props.") && name.length > "props.".length);
3077
+ for (const name of propAttrNames) {
3078
+ const key = name.slice("props.".length);
3079
+ if (key in (def2.state ?? {})) {
3080
+ state[key] = this.getAttribute(name);
3081
+ this.removeAttribute(name);
3082
+ }
3083
+ }
3016
3084
  for (const key of Object.keys(def2.state ?? {})) {
3017
3085
  if (key in this && this[key] !== undefined) {
3018
3086
  state[key] = this[key];
@@ -3137,14 +3205,21 @@ function distributeSlots(host, slottedChildren) {
3137
3205
  }
3138
3206
  }
3139
3207
  export {
3208
+ transposeCanvasUnits,
3140
3209
  toCSSText,
3141
3210
  setSkipServerFunctions,
3142
3211
  setSkipContentResolution,
3212
+ setRootMedia,
3213
+ setResolveToken,
3214
+ setCanvasViewportTranspose,
3215
+ setCanvasDelinkAnchors,
3216
+ runScoped,
3143
3217
  resolveRef,
3144
3218
  resolvePrototype,
3145
3219
  resolve,
3146
3220
  renderNode,
3147
3221
  reapplyStyle,
3222
+ observeScope,
3148
3223
  isSignal,
3149
3224
  hasSchemaKeywords,
3150
3225
  elementStyleTags,
@@ -3156,5 +3231,5 @@ export {
3156
3231
  Jx
3157
3232
  };
3158
3233
 
3159
- //# debugId=F4441B44825A3DD064756E2164756E21
3234
+ //# debugId=242E5668DE62643A64756E2164756E21
3160
3235
  //# sourceMappingURL=runtime.js.map