unframer 4.0.3 → 4.0.4
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/bin.d.ts +2 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +3 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +51 -1
- package/dist/cli.js.map +1 -1
- package/dist/framer-chunks/chunk-76VXR6QG.js +91 -0
- package/dist/framer-chunks/chunk-OAKBJJLO.js +105 -0
- package/dist/framer-chunks/fontshare-LJWOE5KG-36DNQHCT.js +27099 -0
- package/dist/framer-chunks/fontshare-LTYJMI6Q-XCFP3GWO.js +119 -0
- package/dist/framer-chunks/fontshare-MHXFPDHS-VQYPAYVC.js +825 -0
- package/dist/framer-chunks/fontshare-Q7VOJ3QT-LXRXXTSM.js +119 -0
- package/dist/framer-chunks/fontshare-X63NXWGB-NRPGYMPJ.js +825 -0
- package/dist/framer-chunks/fontshare-XMKN2FOD-D5TWBHNT.js +27099 -0
- package/dist/framer-chunks/framer-font-D6RMCRV4-XCFIRDL6.js +7 -0
- package/dist/framer-chunks/framer-font-G73BNA7N-B3OPPZB7.js +7 -0
- package/dist/framer-chunks/google-AG6EYFMK-QBWWKKVD.js +1612 -0
- package/dist/framer-chunks/google-CQFUID6E-C6DG6E7T.js +6792 -0
- package/dist/framer-chunks/google-EJBUPU3N-LSIK52DF.js +616382 -0
- package/dist/framer-chunks/google-LLNWFNMY-PWPZVCX5.js +6792 -0
- package/dist/framer-chunks/google-TRAPONMP-UUEFJ4ZF.js +616382 -0
- package/dist/framer-chunks/google-VQ4ZP4WR-C2T2J24Z.js +1612 -0
- package/dist/framer.js +827 -582
- package/dist/lib/config.d.ts +17 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +26 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/mcp-to-cli.d.ts +25 -0
- package/dist/lib/mcp-to-cli.d.ts.map +1 -0
- package/dist/lib/mcp-to-cli.js +176 -0
- package/dist/lib/mcp-to-cli.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +93 -92
- package/src/bin.ts +3 -0
- package/src/cli.ts +61 -2
- package/src/framer.js +827 -582
- package/src/lib/config.ts +43 -0
- package/src/lib/mcp-to-cli.ts +229 -0
- package/src/styles/framer.css +16 -16
- package/src/version.ts +1 -1
package/src/framer.js
CHANGED
|
@@ -9,12 +9,11 @@ import {
|
|
|
9
9
|
__privateMethod,
|
|
10
10
|
__privateSet,
|
|
11
11
|
__publicField,
|
|
12
|
-
__require,
|
|
13
12
|
__runInitializers,
|
|
14
13
|
__toESM,
|
|
15
|
-
} from './framer-chunks/chunk-
|
|
14
|
+
} from './framer-chunks/chunk-76VXR6QG.js';
|
|
16
15
|
|
|
17
|
-
// /:https://app.framerstatic.com/chunk-
|
|
16
|
+
// /:https://app.framerstatic.com/chunk-G5LRCHUN.mjs
|
|
18
17
|
import { createContext, } from 'react';
|
|
19
18
|
import { useEffect, useLayoutEffect, } from 'react';
|
|
20
19
|
import * as React from 'react';
|
|
@@ -29,9 +28,47 @@ import { jsxs, } from 'react/jsx-runtime';
|
|
|
29
28
|
import { forwardRef, } from 'react';
|
|
30
29
|
import { createElement, } from 'react';
|
|
31
30
|
import { Component as Component2, } from 'react';
|
|
32
|
-
var
|
|
31
|
+
var __unframerWindow = typeof window !== 'undefined' ? window : void 0;
|
|
32
|
+
var __unframerNavigator = typeof __unframerWindow !== 'undefined' ? navigator : void 0;
|
|
33
|
+
var require_memoize_browser_cjs = __commonJS({
|
|
34
|
+
'../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js'(exports,) {
|
|
35
|
+
'use strict';
|
|
36
|
+
|
|
37
|
+
Object.defineProperty(exports, '__esModule', {
|
|
38
|
+
value: true,
|
|
39
|
+
},);
|
|
40
|
+
function memoize3(fn,) {
|
|
41
|
+
var cache2 = {};
|
|
42
|
+
return function (arg,) {
|
|
43
|
+
if (cache2[arg] === void 0) cache2[arg] = fn(arg,);
|
|
44
|
+
return cache2[arg];
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
exports.default = memoize3;
|
|
48
|
+
},
|
|
49
|
+
},);
|
|
50
|
+
var require_is_prop_valid_browser_cjs = __commonJS({
|
|
51
|
+
'../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js'(exports,) {
|
|
52
|
+
'use strict';
|
|
53
|
+
|
|
54
|
+
Object.defineProperty(exports, '__esModule', {
|
|
55
|
+
value: true,
|
|
56
|
+
},);
|
|
57
|
+
function _interopDefault(ex,) {
|
|
58
|
+
return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;
|
|
59
|
+
}
|
|
60
|
+
var memoize3 = _interopDefault(require_memoize_browser_cjs(),);
|
|
61
|
+
var reactPropsRegex2 =
|
|
62
|
+
/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;
|
|
63
|
+
var index = memoize3(function (prop,) {
|
|
64
|
+
return reactPropsRegex2.test(prop,) || prop.charCodeAt(0,) === 111 && prop.charCodeAt(1,) === 110 && prop.charCodeAt(2,) < 91;
|
|
65
|
+
},/* Z+1 */
|
|
66
|
+
);
|
|
67
|
+
exports.default = index;
|
|
68
|
+
},
|
|
69
|
+
},);
|
|
33
70
|
var LayoutGroupContext = createContext({},);
|
|
34
|
-
var isBrowser = typeof
|
|
71
|
+
var isBrowser = typeof __unframerWindow !== 'undefined';
|
|
35
72
|
var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
|
|
36
73
|
var PresenceContext = /* @__PURE__ */ createContext(null,);
|
|
37
74
|
function addUniqueItem(arr, item,) {
|
|
@@ -1782,7 +1819,7 @@ function measureAllKeyframes() {
|
|
|
1782
1819
|
resolversToMeasure.forEach((resolver) => resolver.measureEndState());
|
|
1783
1820
|
resolversToMeasure.forEach((resolver) => {
|
|
1784
1821
|
if (resolver.suspendedScrollY !== void 0) {
|
|
1785
|
-
|
|
1822
|
+
__unframerWindow.scrollTo(0, resolver.suspendedScrollY,);
|
|
1786
1823
|
}
|
|
1787
1824
|
},);
|
|
1788
1825
|
}
|
|
@@ -1881,7 +1918,7 @@ var isCSSVar = (name) => name.startsWith('--',);
|
|
|
1881
1918
|
function setStyle(element, name, value,) {
|
|
1882
1919
|
isCSSVar(name,) ? element.style.setProperty(name, value,) : element.style[name] = value;
|
|
1883
1920
|
}
|
|
1884
|
-
var supportsScrollTimeline = /* @__PURE__ */ memo(() =>
|
|
1921
|
+
var supportsScrollTimeline = /* @__PURE__ */ memo(() => __unframerWindow.ScrollTimeline !== void 0);
|
|
1885
1922
|
var supportsFlags = {};
|
|
1886
1923
|
function memoSupports(callback, supportsFlag,) {
|
|
1887
1924
|
const memoized = /* @__PURE__ */ memo(callback,);
|
|
@@ -2523,7 +2560,7 @@ function getVariableValue(current2, element, depth = 1,) {
|
|
|
2523
2560
|
);
|
|
2524
2561
|
const [token, fallback,] = parseCSSVariable(current2,);
|
|
2525
2562
|
if (!token) return;
|
|
2526
|
-
const resolved =
|
|
2563
|
+
const resolved = __unframerWindow.getComputedStyle(element,).getPropertyValue(token,);
|
|
2527
2564
|
if (resolved) {
|
|
2528
2565
|
const trimmed = resolved.trim();
|
|
2529
2566
|
return isNumericalString(trimmed,) ? parseFloat(trimmed,) : trimmed;
|
|
@@ -2751,9 +2788,9 @@ var DOMKeyframesResolver = class extends KeyframeResolver {
|
|
|
2751
2788
|
} = this;
|
|
2752
2789
|
if (!element || !element.current) return;
|
|
2753
2790
|
if (name === 'height') {
|
|
2754
|
-
this.suspendedScrollY =
|
|
2791
|
+
this.suspendedScrollY = __unframerWindow.pageYOffset;
|
|
2755
2792
|
}
|
|
2756
|
-
this.measuredOrigin = positionalValues[name](element.measureViewportBox(),
|
|
2793
|
+
this.measuredOrigin = positionalValues[name](element.measureViewportBox(), __unframerWindow.getComputedStyle(element.current,),);
|
|
2757
2794
|
unresolvedKeyframes[0] = this.measuredOrigin;
|
|
2758
2795
|
const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
2759
2796
|
if (measureKeyframe !== void 0) {
|
|
@@ -2773,7 +2810,7 @@ var DOMKeyframesResolver = class extends KeyframeResolver {
|
|
|
2773
2810
|
const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
|
|
2774
2811
|
unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](
|
|
2775
2812
|
element.measureViewportBox(),
|
|
2776
|
-
|
|
2813
|
+
__unframerWindow.getComputedStyle(element.current,),
|
|
2777
2814
|
);
|
|
2778
2815
|
if (finalKeyframe !== null && this.finalKeyframe === void 0) {
|
|
2779
2816
|
this.finalKeyframe = finalKeyframe;
|
|
@@ -3486,8 +3523,8 @@ function press(targetOrSelector, onPressStart, options = {},) {
|
|
|
3486
3523
|
isPressing.add(target,);
|
|
3487
3524
|
const onPressEnd = onPressStart(target, startEvent,);
|
|
3488
3525
|
const onPointerEnd = (endEvent, success,) => {
|
|
3489
|
-
|
|
3490
|
-
|
|
3526
|
+
__unframerWindow.removeEventListener('pointerup', onPointerUp,);
|
|
3527
|
+
__unframerWindow.removeEventListener('pointercancel', onPointerCancel,);
|
|
3491
3528
|
if (isPressing.has(target,)) {
|
|
3492
3529
|
isPressing.delete(target,);
|
|
3493
3530
|
}
|
|
@@ -3501,16 +3538,19 @@ function press(targetOrSelector, onPressStart, options = {},) {
|
|
|
3501
3538
|
}
|
|
3502
3539
|
};
|
|
3503
3540
|
const onPointerUp = (upEvent) => {
|
|
3504
|
-
onPointerEnd(
|
|
3541
|
+
onPointerEnd(
|
|
3542
|
+
upEvent,
|
|
3543
|
+
target === __unframerWindow || target === document || options.useGlobalTarget || isNodeOrChild(target, upEvent.target,),
|
|
3544
|
+
);
|
|
3505
3545
|
};
|
|
3506
3546
|
const onPointerCancel = (cancelEvent) => {
|
|
3507
3547
|
onPointerEnd(cancelEvent, false,);
|
|
3508
3548
|
};
|
|
3509
|
-
|
|
3510
|
-
|
|
3549
|
+
__unframerWindow.addEventListener('pointerup', onPointerUp, eventOptions,);
|
|
3550
|
+
__unframerWindow.addEventListener('pointercancel', onPointerCancel, eventOptions,);
|
|
3511
3551
|
};
|
|
3512
3552
|
targets.forEach((target) => {
|
|
3513
|
-
const pointerDownTarget = options.useGlobalTarget ?
|
|
3553
|
+
const pointerDownTarget = options.useGlobalTarget ? __unframerWindow : target;
|
|
3514
3554
|
pointerDownTarget.addEventListener('pointerdown', startPress, eventOptions,);
|
|
3515
3555
|
if (isHTMLElement(target,)) {
|
|
3516
3556
|
target.addEventListener('focus', (event) => enableKeyboardPress(event, eventOptions,),);
|
|
@@ -3522,7 +3562,7 @@ function press(targetOrSelector, onPressStart, options = {},) {
|
|
|
3522
3562
|
return cancelEvents;
|
|
3523
3563
|
}
|
|
3524
3564
|
function getComputedStyle2(element, name,) {
|
|
3525
|
-
const computedStyle =
|
|
3565
|
+
const computedStyle = __unframerWindow.getComputedStyle(element,);
|
|
3526
3566
|
return isCSSVar(name,) ? computedStyle.getPropertyValue(name,) : computedStyle[name];
|
|
3527
3567
|
}
|
|
3528
3568
|
function isSVGElement(element,) {
|
|
@@ -3591,15 +3631,15 @@ function createWindowResizeHandler() {
|
|
|
3591
3631
|
windowResizeHandler = () => {
|
|
3592
3632
|
const info = {
|
|
3593
3633
|
get width() {
|
|
3594
|
-
return
|
|
3634
|
+
return __unframerWindow.innerWidth;
|
|
3595
3635
|
},
|
|
3596
3636
|
get height() {
|
|
3597
|
-
return
|
|
3637
|
+
return __unframerWindow.innerHeight;
|
|
3598
3638
|
},
|
|
3599
3639
|
};
|
|
3600
3640
|
windowCallbacks.forEach((callback) => callback(info,));
|
|
3601
3641
|
};
|
|
3602
|
-
|
|
3642
|
+
__unframerWindow.addEventListener('resize', windowResizeHandler,);
|
|
3603
3643
|
}
|
|
3604
3644
|
function resizeWindow(callback,) {
|
|
3605
3645
|
windowCallbacks.add(callback,);
|
|
@@ -3607,7 +3647,7 @@ function resizeWindow(callback,) {
|
|
|
3607
3647
|
return () => {
|
|
3608
3648
|
windowCallbacks.delete(callback,);
|
|
3609
3649
|
if (!windowCallbacks.size && typeof windowResizeHandler === 'function') {
|
|
3610
|
-
|
|
3650
|
+
__unframerWindow.removeEventListener('resize', windowResizeHandler,);
|
|
3611
3651
|
windowResizeHandler = void 0;
|
|
3612
3652
|
}
|
|
3613
3653
|
};
|
|
@@ -4637,7 +4677,7 @@ function loadExternalIsValidProp(isValidProp,) {
|
|
|
4637
4677
|
shouldForward = (key7) => key7.startsWith('on',) ? !isValidMotionProp(key7,) : isValidProp(key7,);
|
|
4638
4678
|
}
|
|
4639
4679
|
try {
|
|
4640
|
-
loadExternalIsValidProp(
|
|
4680
|
+
loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default,);
|
|
4641
4681
|
} catch {}
|
|
4642
4682
|
function filterProps(props, isDom, forwardMotionProps,) {
|
|
4643
4683
|
const filteredProps2 = {};
|
|
@@ -5268,13 +5308,13 @@ function useVisualElement(Component33, visualState, props, createVisualElement,
|
|
|
5268
5308
|
},);
|
|
5269
5309
|
const optimisedAppearId = props[optimizedAppearDataAttribute];
|
|
5270
5310
|
const wantsHandoff = useRef(
|
|
5271
|
-
Boolean(optimisedAppearId,) && !
|
|
5272
|
-
|
|
5311
|
+
Boolean(optimisedAppearId,) && !__unframerWindow.MotionHandoffIsComplete?.(optimisedAppearId,) &&
|
|
5312
|
+
__unframerWindow.MotionHasOptimisedAnimation?.(optimisedAppearId,),
|
|
5273
5313
|
);
|
|
5274
5314
|
useIsomorphicLayoutEffect(() => {
|
|
5275
5315
|
if (!visualElement) return;
|
|
5276
5316
|
isMounted.current = true;
|
|
5277
|
-
|
|
5317
|
+
__unframerWindow.MotionIsMounted = true;
|
|
5278
5318
|
visualElement.updateFeatures();
|
|
5279
5319
|
visualElement.scheduleRenderMicrotask();
|
|
5280
5320
|
if (wantsHandoff.current && visualElement.animationState) {
|
|
@@ -5288,7 +5328,7 @@ function useVisualElement(Component33, visualState, props, createVisualElement,
|
|
|
5288
5328
|
}
|
|
5289
5329
|
if (wantsHandoff.current) {
|
|
5290
5330
|
queueMicrotask(() => {
|
|
5291
|
-
|
|
5331
|
+
__unframerWindow.MotionHandoffMarkAsComplete?.(optimisedAppearId,);
|
|
5292
5332
|
},);
|
|
5293
5333
|
wantsHandoff.current = false;
|
|
5294
5334
|
}
|
|
@@ -5480,8 +5520,8 @@ var hasReducedMotionListener = {
|
|
|
5480
5520
|
function initPrefersReducedMotion() {
|
|
5481
5521
|
hasReducedMotionListener.current = true;
|
|
5482
5522
|
if (!isBrowser) return;
|
|
5483
|
-
if (
|
|
5484
|
-
const motionMediaQuery =
|
|
5523
|
+
if (__unframerWindow.matchMedia) {
|
|
5524
|
+
const motionMediaQuery = __unframerWindow.matchMedia('(prefers-reduced-motion)',);
|
|
5485
5525
|
const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;
|
|
5486
5526
|
motionMediaQuery.addEventListener('change', setReducedMotionPreferences,);
|
|
5487
5527
|
setReducedMotionPreferences();
|
|
@@ -5692,8 +5732,8 @@ var VisualElement = class {
|
|
|
5692
5732
|
this.scheduleRender();
|
|
5693
5733
|
},);
|
|
5694
5734
|
let removeSyncCheck;
|
|
5695
|
-
if (
|
|
5696
|
-
removeSyncCheck =
|
|
5735
|
+
if (__unframerWindow.MotionCheckAppearSync) {
|
|
5736
|
+
removeSyncCheck = __unframerWindow.MotionCheckAppearSync(this, key7, value,);
|
|
5697
5737
|
}
|
|
5698
5738
|
this.valueSubscriptions.set(key7, () => {
|
|
5699
5739
|
removeOnChange();
|
|
@@ -6119,10 +6159,10 @@ function animateTarget(visualElement, targetAndTransition, {
|
|
|
6119
6159
|
continue;
|
|
6120
6160
|
}
|
|
6121
6161
|
let isHandoff = false;
|
|
6122
|
-
if (
|
|
6162
|
+
if (__unframerWindow.MotionHandoffAnimation) {
|
|
6123
6163
|
const appearId = getOptimisedAppearId(visualElement,);
|
|
6124
6164
|
if (appearId) {
|
|
6125
|
-
const startTime =
|
|
6165
|
+
const startTime = __unframerWindow.MotionHandoffAnimation(appearId, key7, frame,);
|
|
6126
6166
|
if (startTime !== null) {
|
|
6127
6167
|
valueTransition.startTime = startTime;
|
|
6128
6168
|
isHandoff = true;
|
|
@@ -6866,7 +6906,7 @@ function renderHTML(
|
|
|
6866
6906
|
}
|
|
6867
6907
|
}
|
|
6868
6908
|
function getComputedStyle3(element,) {
|
|
6869
|
-
return
|
|
6909
|
+
return __unframerWindow.getComputedStyle(element,);
|
|
6870
6910
|
}
|
|
6871
6911
|
var HTMLVisualElement = class extends DOMVisualElement {
|
|
6872
6912
|
constructor() {
|
|
@@ -6974,7 +7014,7 @@ var getContextWindow = ({
|
|
|
6974
7014
|
var PanSession = class {
|
|
6975
7015
|
constructor(event, handlers, {
|
|
6976
7016
|
transformPagePoint,
|
|
6977
|
-
contextWindow =
|
|
7017
|
+
contextWindow = __unframerWindow,
|
|
6978
7018
|
dragSnapToOrigin = false,
|
|
6979
7019
|
distanceThreshold = 3,
|
|
6980
7020
|
} = {},) {
|
|
@@ -6982,7 +7022,7 @@ var PanSession = class {
|
|
|
6982
7022
|
this.lastMoveEvent = null;
|
|
6983
7023
|
this.lastMoveEventInfo = null;
|
|
6984
7024
|
this.handlers = {};
|
|
6985
|
-
this.contextWindow =
|
|
7025
|
+
this.contextWindow = __unframerWindow;
|
|
6986
7026
|
this.updatePoint = () => {
|
|
6987
7027
|
if (!(this.lastMoveEvent && this.lastMoveEventInfo)) return;
|
|
6988
7028
|
const info2 = getPanInfo(this.lastMoveEventInfo, this.history,);
|
|
@@ -7040,7 +7080,7 @@ var PanSession = class {
|
|
|
7040
7080
|
this.handlers = handlers;
|
|
7041
7081
|
this.transformPagePoint = transformPagePoint;
|
|
7042
7082
|
this.distanceThreshold = distanceThreshold;
|
|
7043
|
-
this.contextWindow = contextWindow ||
|
|
7083
|
+
this.contextWindow = contextWindow || __unframerWindow;
|
|
7044
7084
|
const info = extractEventInfo(event,);
|
|
7045
7085
|
const initialInfo = transformPoint(info, this.transformPagePoint,);
|
|
7046
7086
|
const {
|
|
@@ -7629,7 +7669,7 @@ var VisualElementDragControls = class {
|
|
|
7629
7669
|
projection.updateLayout();
|
|
7630
7670
|
}
|
|
7631
7671
|
frame.read(measureDragConstraints,);
|
|
7632
|
-
const stopResizeListener = addDomEvent(
|
|
7672
|
+
const stopResizeListener = addDomEvent(__unframerWindow, 'resize', () => this.scalePositionWithinConstraints(),);
|
|
7633
7673
|
const stopLayoutUpdateListener = projection.addEventListener('didUpdate', ({
|
|
7634
7674
|
delta,
|
|
7635
7675
|
hasLayoutChanged,
|
|
@@ -8171,12 +8211,12 @@ function cancelTreeOptimisedTransformAnimations(projectionNode,) {
|
|
|
8171
8211
|
} = projectionNode.options;
|
|
8172
8212
|
if (!visualElement) return;
|
|
8173
8213
|
const appearId = getOptimisedAppearId(visualElement,);
|
|
8174
|
-
if (
|
|
8214
|
+
if (__unframerWindow.MotionHasOptimisedAnimation(appearId, 'transform',)) {
|
|
8175
8215
|
const {
|
|
8176
8216
|
layout: layout2,
|
|
8177
8217
|
layoutId,
|
|
8178
8218
|
} = projectionNode.options;
|
|
8179
|
-
|
|
8219
|
+
__unframerWindow.MotionCancelOptimisedAnimation(appearId, 'transform', frame, !(layout2 || layoutId),);
|
|
8180
8220
|
}
|
|
8181
8221
|
const {
|
|
8182
8222
|
parent,
|
|
@@ -8295,10 +8335,10 @@ function createProjectionNode2({
|
|
|
8295
8335
|
let innerWidth = 0;
|
|
8296
8336
|
const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;
|
|
8297
8337
|
frame.read(() => {
|
|
8298
|
-
innerWidth =
|
|
8338
|
+
innerWidth = __unframerWindow.innerWidth;
|
|
8299
8339
|
},);
|
|
8300
8340
|
attachResizeListener(instance, () => {
|
|
8301
|
-
const newInnerWidth =
|
|
8341
|
+
const newInnerWidth = __unframerWindow.innerWidth;
|
|
8302
8342
|
if (newInnerWidth === innerWidth) return;
|
|
8303
8343
|
innerWidth = newInnerWidth;
|
|
8304
8344
|
this.root.updateBlockedByResize = true;
|
|
@@ -8405,7 +8445,7 @@ function createProjectionNode2({
|
|
|
8405
8445
|
this.options.onExitComplete && this.options.onExitComplete();
|
|
8406
8446
|
return;
|
|
8407
8447
|
}
|
|
8408
|
-
if (
|
|
8448
|
+
if (__unframerWindow.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {
|
|
8409
8449
|
cancelTreeOptimisedTransformAnimations(this,);
|
|
8410
8450
|
}
|
|
8411
8451
|
!this.root.isUpdating && this.root.startUpdate();
|
|
@@ -9331,7 +9371,7 @@ var HTMLProjectionNode = createProjectionNode2({
|
|
|
9331
9371
|
defaultParent: () => {
|
|
9332
9372
|
if (!rootProjectionNode.current) {
|
|
9333
9373
|
const documentNode = new DocumentProjectionNode({},);
|
|
9334
|
-
documentNode.mount(
|
|
9374
|
+
documentNode.mount(__unframerWindow,);
|
|
9335
9375
|
documentNode.setOptions({
|
|
9336
9376
|
layoutScroll: true,
|
|
9337
9377
|
},);
|
|
@@ -9342,7 +9382,7 @@ var HTMLProjectionNode = createProjectionNode2({
|
|
|
9342
9382
|
resetTransform: (instance, value,) => {
|
|
9343
9383
|
instance.style.transform = value !== void 0 ? value : 'none';
|
|
9344
9384
|
},
|
|
9345
|
-
checkIsScrollRoot: (instance) => Boolean(
|
|
9385
|
+
checkIsScrollRoot: (instance) => Boolean(__unframerWindow.getComputedStyle(instance,).position === 'fixed',),
|
|
9346
9386
|
},);
|
|
9347
9387
|
var drag = {
|
|
9348
9388
|
pan: {
|
|
@@ -9825,7 +9865,7 @@ function createOnScrollHandler(element, onScroll, info, options = {},) {
|
|
|
9825
9865
|
var scrollListeners = /* @__PURE__ */ new WeakMap();
|
|
9826
9866
|
var resizeListeners = /* @__PURE__ */ new WeakMap();
|
|
9827
9867
|
var onScrollHandlers = /* @__PURE__ */ new WeakMap();
|
|
9828
|
-
var getEventTarget = (element) => element === document.scrollingElement ?
|
|
9868
|
+
var getEventTarget = (element) => element === document.scrollingElement ? __unframerWindow : element;
|
|
9829
9869
|
function scrollInfo(onScroll, {
|
|
9830
9870
|
container = document.scrollingElement,
|
|
9831
9871
|
...options
|
|
@@ -9854,7 +9894,7 @@ function scrollInfo(onScroll, {
|
|
|
9854
9894
|
const listener2 = () => frame.read(measureAll,);
|
|
9855
9895
|
scrollListeners.set(container, listener2,);
|
|
9856
9896
|
const target = getEventTarget(container,);
|
|
9857
|
-
|
|
9897
|
+
__unframerWindow.addEventListener('resize', listener2, {
|
|
9858
9898
|
passive: true,
|
|
9859
9899
|
},);
|
|
9860
9900
|
if (container !== document.documentElement) {
|
|
@@ -9878,7 +9918,7 @@ function scrollInfo(onScroll, {
|
|
|
9878
9918
|
if (scrollListener) {
|
|
9879
9919
|
getEventTarget(container,).removeEventListener('scroll', scrollListener,);
|
|
9880
9920
|
resizeListeners.get(container,)?.();
|
|
9881
|
-
|
|
9921
|
+
__unframerWindow.removeEventListener('resize', scrollListener,);
|
|
9882
9922
|
}
|
|
9883
9923
|
};
|
|
9884
9924
|
}
|
|
@@ -11015,10 +11055,10 @@ function handoffOptimizedAppearAnimation(elementId, valueName, frame2,) {
|
|
|
11015
11055
|
startTime,
|
|
11016
11056
|
} = optimisedAnimation;
|
|
11017
11057
|
function cancelAnimation() {
|
|
11018
|
-
|
|
11058
|
+
__unframerWindow.MotionCancelOptimisedAnimation?.(elementId, valueName, frame2,);
|
|
11019
11059
|
}
|
|
11020
11060
|
animation.onfinish = cancelAnimation;
|
|
11021
|
-
if (startTime === null ||
|
|
11061
|
+
if (startTime === null || __unframerWindow.MotionHandoffIsComplete?.(elementId,)) {
|
|
11022
11062
|
cancelAnimation();
|
|
11023
11063
|
return null;
|
|
11024
11064
|
} else {
|
|
@@ -11036,12 +11076,12 @@ function resumeSuspendedAnimations() {
|
|
|
11036
11076
|
suspendedAnimations.clear();
|
|
11037
11077
|
}
|
|
11038
11078
|
function startOptimizedAppearAnimation(element, name, keyframes2, options, onReady,) {
|
|
11039
|
-
if (
|
|
11079
|
+
if (__unframerWindow.MotionIsMounted) {
|
|
11040
11080
|
return;
|
|
11041
11081
|
}
|
|
11042
11082
|
const id4 = element.dataset[optimizedAppearDataId];
|
|
11043
11083
|
if (!id4) return;
|
|
11044
|
-
|
|
11084
|
+
__unframerWindow.MotionHandoffAnimation = handoffOptimizedAppearAnimation;
|
|
11045
11085
|
const storeId = appearStoreId(id4, name,);
|
|
11046
11086
|
if (!readyAnimation) {
|
|
11047
11087
|
readyAnimation = startWaapiAnimation(element, name, [keyframes2[0], keyframes2[0],], /**
|
|
@@ -11056,8 +11096,8 @@ function startOptimizedAppearAnimation(element, name, keyframes2, options, onRea
|
|
|
11056
11096
|
animation: readyAnimation,
|
|
11057
11097
|
startTime: null,
|
|
11058
11098
|
},);
|
|
11059
|
-
|
|
11060
|
-
|
|
11099
|
+
__unframerWindow.MotionHandoffAnimation = handoffOptimizedAppearAnimation;
|
|
11100
|
+
__unframerWindow.MotionHasOptimisedAnimation = (elementId, valueName,) => {
|
|
11061
11101
|
if (!elementId) return false;
|
|
11062
11102
|
if (!valueName) {
|
|
11063
11103
|
return appearComplete.has(elementId,);
|
|
@@ -11065,15 +11105,15 @@ function startOptimizedAppearAnimation(element, name, keyframes2, options, onRea
|
|
|
11065
11105
|
const animationId = appearStoreId(elementId, valueName,);
|
|
11066
11106
|
return Boolean(appearAnimationStore.get(animationId,),);
|
|
11067
11107
|
};
|
|
11068
|
-
|
|
11108
|
+
__unframerWindow.MotionHandoffMarkAsComplete = (elementId) => {
|
|
11069
11109
|
if (appearComplete.has(elementId,)) {
|
|
11070
11110
|
appearComplete.set(elementId, true,);
|
|
11071
11111
|
}
|
|
11072
11112
|
};
|
|
11073
|
-
|
|
11113
|
+
__unframerWindow.MotionHandoffIsComplete = (elementId) => {
|
|
11074
11114
|
return appearComplete.get(elementId,) === true;
|
|
11075
11115
|
};
|
|
11076
|
-
|
|
11116
|
+
__unframerWindow.MotionCancelOptimisedAnimation = (elementId, valueName, frame2, canResume,) => {
|
|
11077
11117
|
const animationId = appearStoreId(elementId, valueName,);
|
|
11078
11118
|
const data2 = appearAnimationStore.get(animationId,);
|
|
11079
11119
|
if (!data2) return;
|
|
@@ -11092,19 +11132,19 @@ function startOptimizedAppearAnimation(element, name, keyframes2, options, onRea
|
|
|
11092
11132
|
} else {
|
|
11093
11133
|
appearAnimationStore.delete(animationId,);
|
|
11094
11134
|
if (!appearAnimationStore.size) {
|
|
11095
|
-
|
|
11135
|
+
__unframerWindow.MotionCancelOptimisedAnimation = void 0;
|
|
11096
11136
|
}
|
|
11097
11137
|
}
|
|
11098
11138
|
};
|
|
11099
|
-
|
|
11139
|
+
__unframerWindow.MotionCheckAppearSync = (visualElement, valueName, value,) => {
|
|
11100
11140
|
const appearId = getOptimisedAppearId(visualElement,);
|
|
11101
11141
|
if (!appearId) return;
|
|
11102
|
-
const valueIsOptimised =
|
|
11142
|
+
const valueIsOptimised = __unframerWindow.MotionHasOptimisedAnimation?.(appearId, valueName,);
|
|
11103
11143
|
const externalAnimationValue = visualElement.props.values?.[valueName];
|
|
11104
11144
|
if (!valueIsOptimised || !externalAnimationValue) return;
|
|
11105
11145
|
const removeSyncCheck = value.on('change', (latestValue) => {
|
|
11106
11146
|
if (externalAnimationValue.get() !== latestValue) {
|
|
11107
|
-
|
|
11147
|
+
__unframerWindow.MotionCancelOptimisedAnimation?.(appearId, valueName,);
|
|
11108
11148
|
removeSyncCheck();
|
|
11109
11149
|
}
|
|
11110
11150
|
},);
|
|
@@ -11342,7 +11382,7 @@ function ReorderItemComponent({
|
|
|
11342
11382
|
}
|
|
11343
11383
|
var ReorderItem = /* @__PURE__ */ forwardRef(ReorderItemComponent,);
|
|
11344
11384
|
|
|
11345
|
-
// /:https://app.framerstatic.com/framer.
|
|
11385
|
+
// /:https://app.framerstatic.com/framer.UA53KO5V.mjs
|
|
11346
11386
|
|
|
11347
11387
|
import React42 from 'react';
|
|
11348
11388
|
import { useDeferredValue, useSyncExternalStore, } from 'react';
|
|
@@ -11354,7 +11394,8 @@ import { createRef, } from 'react';
|
|
|
11354
11394
|
import { useTransition, } from 'react';
|
|
11355
11395
|
import { createPortal, } from 'react-dom';
|
|
11356
11396
|
import { cloneElement as cloneElement32, } from 'react';
|
|
11357
|
-
var
|
|
11397
|
+
var __unframerWindow2 = typeof window !== 'undefined' ? window : void 0;
|
|
11398
|
+
var __unframerNavigator2 = typeof __unframerWindow2 !== 'undefined' ? navigator : void 0;
|
|
11358
11399
|
var require_hsluv = __commonJS({
|
|
11359
11400
|
'../../../node_modules/hsluv/dist/hsluv.cjs'(exports,) {
|
|
11360
11401
|
'use strict';
|
|
@@ -12147,7 +12188,7 @@ var require_fontfaceobserver_standalone = __commonJS({
|
|
|
12147
12188
|
|
|
12148
12189
|
function D(a, c, b,) {
|
|
12149
12190
|
c = c || {};
|
|
12150
|
-
b = b ||
|
|
12191
|
+
b = b || __unframerWindow2;
|
|
12151
12192
|
this.family = a;
|
|
12152
12193
|
this.style = c.style || 'normal';
|
|
12153
12194
|
this.weight = c.weight || 'normal';
|
|
@@ -12160,8 +12201,8 @@ var require_fontfaceobserver_standalone = __commonJS({
|
|
|
12160
12201
|
H = null;
|
|
12161
12202
|
function I(a,) {
|
|
12162
12203
|
null === F &&
|
|
12163
|
-
(M(a,) && /Apple/.test(
|
|
12164
|
-
? (a = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(
|
|
12204
|
+
(M(a,) && /Apple/.test(__unframerWindow2.navigator.vendor,)
|
|
12205
|
+
? (a = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(__unframerWindow2.navigator.userAgent,),
|
|
12165
12206
|
F = !!a && 603 > parseInt(a[1], 10,))
|
|
12166
12207
|
: F = false);
|
|
12167
12208
|
return F;
|
|
@@ -12215,7 +12256,7 @@ var require_fontfaceobserver_standalone = __commonJS({
|
|
|
12215
12256
|
if (d = -1 != k && -1 != l2 || -1 != k && -1 != m2 || -1 != l2 && -1 != m2) {
|
|
12216
12257
|
(d = k != l2 && k != m2 && l2 != m2) ||
|
|
12217
12258
|
(null === E &&
|
|
12218
|
-
(d = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(
|
|
12259
|
+
(d = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(__unframerWindow2.navigator.userAgent,),
|
|
12219
12260
|
E = !!d && (536 > parseInt(d[1], 10,) || 536 === parseInt(d[1], 10,) && 11 >= parseInt(d[2], 10,))),
|
|
12220
12261
|
d = E && (k == y && l2 == y && m2 == y || k == z && l2 == z && m2 == z || k == A && l2 == A && m2 == A)), d = !d;
|
|
12221
12262
|
}
|
|
@@ -12272,7 +12313,7 @@ var require_fontfaceobserver_standalone = __commonJS({
|
|
|
12272
12313
|
};
|
|
12273
12314
|
'object' === typeof module
|
|
12274
12315
|
? module.exports = D
|
|
12275
|
-
: (
|
|
12316
|
+
: (__unframerWindow2.FontFaceObserver = D, __unframerWindow2.FontFaceObserver.prototype.load = D.prototype.load);
|
|
12276
12317
|
})();
|
|
12277
12318
|
},
|
|
12278
12319
|
},);
|
|
@@ -12323,15 +12364,15 @@ function isPromise(value,) {
|
|
|
12323
12364
|
return value instanceof Promise;
|
|
12324
12365
|
}
|
|
12325
12366
|
var noop2 = () => {};
|
|
12326
|
-
var isWindow = typeof
|
|
12367
|
+
var isWindow = typeof __unframerWindow2 !== 'undefined';
|
|
12327
12368
|
var isBot =
|
|
12328
12369
|
/* @__PURE__ */ (() =>
|
|
12329
12370
|
isWindow &&
|
|
12330
12371
|
(__unframerNavigator2.webdriver || /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(__unframerNavigator2.userAgent,)))();
|
|
12331
|
-
var supportsRequestIdleCallback = isWindow && typeof
|
|
12372
|
+
var supportsRequestIdleCallback = isWindow && typeof __unframerWindow2.requestIdleCallback === 'function';
|
|
12332
12373
|
var requestIdleCallback = /* @__PURE__ */ (() =>
|
|
12333
12374
|
// eslint-disable-next-line compat/compat,framer-studio/tscompat
|
|
12334
|
-
supportsRequestIdleCallback ?
|
|
12375
|
+
supportsRequestIdleCallback ? __unframerWindow2.requestIdleCallback : setTimeout)();
|
|
12335
12376
|
function encodeSVGForCSS(svg,) {
|
|
12336
12377
|
return `url('data:image/svg+xml,${svg.replaceAll('#', '%23',).replaceAll('\'', '%27',)}')`;
|
|
12337
12378
|
}
|
|
@@ -12659,6 +12700,7 @@ function getRouteElementId(route, hash2,) {
|
|
|
12659
12700
|
return void 0;
|
|
12660
12701
|
}
|
|
12661
12702
|
var EMPTY_ARRAY = [];
|
|
12703
|
+
var EMPTY_OBJECT = {};
|
|
12662
12704
|
function monitorINPRelatedInputs(signal,) {
|
|
12663
12705
|
const inpRelatedInputs = ['pointerdown', 'pointerup', 'keydown', 'keyup',];
|
|
12664
12706
|
const inpRelatedInputHandler = (event) => {
|
|
@@ -12834,11 +12876,15 @@ var DevalueError = class extends Error {
|
|
|
12834
12876
|
/**
|
|
12835
12877
|
* @param {string} message
|
|
12836
12878
|
* @param {string[]} keys
|
|
12879
|
+
* @param {any} [value] - The value that failed to be serialized
|
|
12880
|
+
* @param {any} [root] - The root value being serialized
|
|
12837
12881
|
*/
|
|
12838
|
-
constructor(message, keys3,) {
|
|
12882
|
+
constructor(message, keys3, value, root,) {
|
|
12839
12883
|
super(message,);
|
|
12840
12884
|
this.name = 'DevalueError';
|
|
12841
12885
|
this.path = keys3.join('',);
|
|
12886
|
+
this.value = value;
|
|
12887
|
+
this.root = root;
|
|
12842
12888
|
}
|
|
12843
12889
|
};
|
|
12844
12890
|
function is_primitive(thing,) {
|
|
@@ -12987,6 +13033,7 @@ function unflatten(parsed, revivers,) {
|
|
|
12987
13033
|
const values = /** @type {any[]} */
|
|
12988
13034
|
parsed;
|
|
12989
13035
|
const hydrated = Array(values.length,);
|
|
13036
|
+
let hydrating = null;
|
|
12990
13037
|
function hydrate(index, standalone = false,) {
|
|
12991
13038
|
if (index === UNDEFINED) return void 0;
|
|
12992
13039
|
if (index === NAN) return NaN;
|
|
@@ -13003,13 +13050,20 @@ function unflatten(parsed, revivers,) {
|
|
|
13003
13050
|
} else if (Array.isArray(value,)) {
|
|
13004
13051
|
if (typeof value[0] === 'string') {
|
|
13005
13052
|
const type = value[0];
|
|
13006
|
-
const reviver = revivers
|
|
13053
|
+
const reviver = revivers && Object.hasOwn(revivers, type,) ? revivers[type] : void 0;
|
|
13007
13054
|
if (reviver) {
|
|
13008
13055
|
let i = value[1];
|
|
13009
13056
|
if (typeof i !== 'number') {
|
|
13010
13057
|
i = values.push(value[1],) - 1;
|
|
13011
13058
|
}
|
|
13012
|
-
|
|
13059
|
+
hydrating ??= /* @__PURE__ */ new Set();
|
|
13060
|
+
if (hydrating.has(i,)) {
|
|
13061
|
+
throw new Error('Invalid circular reference',);
|
|
13062
|
+
}
|
|
13063
|
+
hydrating.add(i,);
|
|
13064
|
+
hydrated[index] = reviver(hydrate(i,),);
|
|
13065
|
+
hydrating.delete(i,);
|
|
13066
|
+
return hydrated[index];
|
|
13013
13067
|
}
|
|
13014
13068
|
switch (type) {
|
|
13015
13069
|
case 'Date':
|
|
@@ -13056,13 +13110,20 @@ function unflatten(parsed, revivers,) {
|
|
|
13056
13110
|
case 'Float64Array':
|
|
13057
13111
|
case 'BigInt64Array':
|
|
13058
13112
|
case 'BigUint64Array': {
|
|
13113
|
+
if (values[value[1]][0] !== 'ArrayBuffer') {
|
|
13114
|
+
throw new Error('Invalid data',);
|
|
13115
|
+
}
|
|
13059
13116
|
const TypedArrayConstructor = globalThis[type];
|
|
13060
|
-
const
|
|
13117
|
+
const buffer = hydrate(value[1],);
|
|
13118
|
+
const typedArray = new TypedArrayConstructor(buffer,);
|
|
13061
13119
|
hydrated[index] = value[2] !== void 0 ? typedArray.subarray(value[2], value[3],) : typedArray;
|
|
13062
13120
|
break;
|
|
13063
13121
|
}
|
|
13064
13122
|
case 'ArrayBuffer': {
|
|
13065
13123
|
const base64 = value[1];
|
|
13124
|
+
if (typeof base64 !== 'string') {
|
|
13125
|
+
throw new Error('Invalid ArrayBuffer encoding',);
|
|
13126
|
+
}
|
|
13066
13127
|
const arraybuffer = decode64(base64,);
|
|
13067
13128
|
hydrated[index] = arraybuffer;
|
|
13068
13129
|
break;
|
|
@@ -13152,7 +13213,7 @@ function stringify(value, reducers,) {
|
|
|
13152
13213
|
}
|
|
13153
13214
|
}
|
|
13154
13215
|
if (typeof thing === 'function') {
|
|
13155
|
-
throw new DevalueError(`Cannot stringify a function`, keys3,);
|
|
13216
|
+
throw new DevalueError(`Cannot stringify a function`, keys3, thing, value,);
|
|
13156
13217
|
}
|
|
13157
13218
|
let str = '';
|
|
13158
13219
|
if (is_primitive(thing,)) {
|
|
@@ -13255,10 +13316,10 @@ function stringify(value, reducers,) {
|
|
|
13255
13316
|
break;
|
|
13256
13317
|
default:
|
|
13257
13318
|
if (!is_plain_object(thing,)) {
|
|
13258
|
-
throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys3,);
|
|
13319
|
+
throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys3, thing, value,);
|
|
13259
13320
|
}
|
|
13260
13321
|
if (enumerable_symbols(thing,).length > 0) {
|
|
13261
|
-
throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys3,);
|
|
13322
|
+
throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys3, thing, value,);
|
|
13262
13323
|
}
|
|
13263
13324
|
if (Object.getPrototypeOf(thing,) === null) {
|
|
13264
13325
|
str = '["null"';
|
|
@@ -13355,7 +13416,7 @@ var mockWindow = {
|
|
|
13355
13416
|
open: function (_url, _target, _features,) {},
|
|
13356
13417
|
__framer_events: [],
|
|
13357
13418
|
};
|
|
13358
|
-
var safeWindow = !isWindow ? mockWindow :
|
|
13419
|
+
var safeWindow = !isWindow ? mockWindow : __unframerWindow2;
|
|
13359
13420
|
var pageviewEventVersion = 2;
|
|
13360
13421
|
function sendTrackingEvent(eventType, eventData, sendOn = 'lazy',) {
|
|
13361
13422
|
safeWindow.__framer_events?.push([eventType, eventData, sendOn,],);
|
|
@@ -13693,144 +13754,8 @@ function yieldToMain(options,) {
|
|
|
13693
13754
|
}
|
|
13694
13755
|
return schedulerYield(schedulerOptions,);
|
|
13695
13756
|
}
|
|
13696
|
-
var pathVariablesRegExpRaw = ':([a-z]\\w*)';
|
|
13697
|
-
var pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, 'gi',);
|
|
13698
|
-
async function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils,) {
|
|
13699
|
-
if (!currentRoute) return locales;
|
|
13700
|
-
const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(
|
|
13701
|
-
activeLocale,
|
|
13702
|
-
locales,
|
|
13703
|
-
currentRoute,
|
|
13704
|
-
pathVariables,
|
|
13705
|
-
collectionUtils,
|
|
13706
|
-
);
|
|
13707
|
-
const includedLocalesForCurrentRoute = currentRoute.includedLocales;
|
|
13708
|
-
const localesForCurrentRoute = [];
|
|
13709
|
-
for (const locale of locales) {
|
|
13710
|
-
if (includedLocalesForCurrentRoute) {
|
|
13711
|
-
if (!includedLocalesForCurrentRoute.includes(locale.id,)) continue;
|
|
13712
|
-
}
|
|
13713
|
-
if (slugByLocaleIfCollectionPage) {
|
|
13714
|
-
const hasSlug = slugByLocaleIfCollectionPage.has(locale.id,);
|
|
13715
|
-
if (!hasSlug) continue;
|
|
13716
|
-
}
|
|
13717
|
-
localesForCurrentRoute.push(locale,);
|
|
13718
|
-
}
|
|
13719
|
-
return localesForCurrentRoute;
|
|
13720
|
-
}
|
|
13721
|
-
async function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils,) {
|
|
13722
|
-
const {
|
|
13723
|
-
collectionId,
|
|
13724
|
-
} = currentRoute;
|
|
13725
|
-
if (!collectionId) return null;
|
|
13726
|
-
if (!activeLocale) return null;
|
|
13727
|
-
if (!pathVariables) return null;
|
|
13728
|
-
const {
|
|
13729
|
-
path,
|
|
13730
|
-
} = currentRoute;
|
|
13731
|
-
if (!path) return null;
|
|
13732
|
-
const matches = Array.from(path.matchAll(pathVariablesRegExp,),);
|
|
13733
|
-
const lastMatch = matches.pop();
|
|
13734
|
-
if (!lastMatch) return null;
|
|
13735
|
-
const pathVariableWithDelimiter = lastMatch?.[0];
|
|
13736
|
-
const pathVariableValue = lastMatch?.[1];
|
|
13737
|
-
if (!pathVariableWithDelimiter || !pathVariableValue) {
|
|
13738
|
-
throw new Error('Failed to replace path variables: unexpected regex match group',);
|
|
13739
|
-
}
|
|
13740
|
-
const currentSlug = pathVariables[pathVariableValue];
|
|
13741
|
-
if (!currentSlug || !isString(currentSlug,)) {
|
|
13742
|
-
throw new Error(`No slug found for path variable ${pathVariableValue}`,);
|
|
13743
|
-
}
|
|
13744
|
-
const utils = collectionUtils?.get(collectionId,);
|
|
13745
|
-
if (!utils) return null;
|
|
13746
|
-
const maybeRecordId = utils.getRecordIdBySlug(currentSlug, activeLocale,);
|
|
13747
|
-
const recordId = isPromise(maybeRecordId,) ? await maybeRecordId : maybeRecordId;
|
|
13748
|
-
if (!recordId) return null;
|
|
13749
|
-
const slugById = /* @__PURE__ */ new Map();
|
|
13750
|
-
await Promise.all(locales.map(async (locale) => {
|
|
13751
|
-
const maybeSlug = utils.getSlugByRecordId(recordId, locale,);
|
|
13752
|
-
const slug = isPromise(maybeSlug,) ? await maybeSlug : maybeSlug;
|
|
13753
|
-
if (!slug) return;
|
|
13754
|
-
slugById.set(locale.id, slug,);
|
|
13755
|
-
},),);
|
|
13756
|
-
return slugById;
|
|
13757
|
-
}
|
|
13758
|
-
var noopAsync = async () => {};
|
|
13759
|
-
var defaultLocaleInfo = {
|
|
13760
|
-
activeLocale: null,
|
|
13761
|
-
locales: [],
|
|
13762
|
-
setLocale: noopAsync,
|
|
13763
|
-
};
|
|
13764
|
-
var LocaleInfoContext = /* @__PURE__ */ (() => {
|
|
13765
|
-
const Context2 = React42.createContext(defaultLocaleInfo,);
|
|
13766
|
-
Context2.displayName = 'LocaleInfoContext';
|
|
13767
|
-
return Context2;
|
|
13768
|
-
})();
|
|
13769
|
-
function useLocaleInfo() {
|
|
13770
|
-
return React42.useContext(LocaleInfoContext,);
|
|
13771
|
-
}
|
|
13772
|
-
function useLocalesForCurrentRoute() {
|
|
13773
|
-
const {
|
|
13774
|
-
currentRouteId,
|
|
13775
|
-
routes,
|
|
13776
|
-
currentPathVariables,
|
|
13777
|
-
} = useRouter();
|
|
13778
|
-
const {
|
|
13779
|
-
activeLocale,
|
|
13780
|
-
locales,
|
|
13781
|
-
} = useLocaleInfo();
|
|
13782
|
-
const [localesForCurrentRoute, setLocalesForCurrentRoute,] = React42.useState(() => activeLocale ? [activeLocale,] : []);
|
|
13783
|
-
const currentRoute = currentRouteId ? routes?.[currentRouteId] : void 0;
|
|
13784
|
-
const collectionUtils = useCollectionUtils();
|
|
13785
|
-
React42.useEffect(() => {
|
|
13786
|
-
let active = true;
|
|
13787
|
-
getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils,).then((localesSubset) => {
|
|
13788
|
-
if (!active) return;
|
|
13789
|
-
React42.startTransition(() => {
|
|
13790
|
-
if (localesSubset) {
|
|
13791
|
-
setLocalesForCurrentRoute(localesSubset,);
|
|
13792
|
-
} else {
|
|
13793
|
-
setLocalesForCurrentRoute(activeLocale ? [activeLocale,] : [],);
|
|
13794
|
-
}
|
|
13795
|
-
},);
|
|
13796
|
-
},).catch(() => {},);
|
|
13797
|
-
return () => {
|
|
13798
|
-
active = false;
|
|
13799
|
-
};
|
|
13800
|
-
}, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables,],);
|
|
13801
|
-
return localesForCurrentRoute;
|
|
13802
|
-
}
|
|
13803
|
-
function useLocalizationInfo() {
|
|
13804
|
-
const {
|
|
13805
|
-
activeLocale,
|
|
13806
|
-
locales,
|
|
13807
|
-
setLocale,
|
|
13808
|
-
} = useLocaleInfo();
|
|
13809
|
-
return {
|
|
13810
|
-
activeLocalization: activeLocale,
|
|
13811
|
-
localizations: locales,
|
|
13812
|
-
setLocalization: setLocale,
|
|
13813
|
-
};
|
|
13814
|
-
}
|
|
13815
|
-
function useLocaleCode() {
|
|
13816
|
-
return useLocaleInfo().activeLocale?.code ?? 'en-US';
|
|
13817
|
-
}
|
|
13818
|
-
function useLocale() {
|
|
13819
|
-
return useLocaleCode();
|
|
13820
|
-
}
|
|
13821
|
-
var LayoutDirectionContext = /* @__PURE__ */ (() => {
|
|
13822
|
-
const Context2 = React42.createContext('ltr',);
|
|
13823
|
-
Context2.displayName = 'LayoutDirectionContext';
|
|
13824
|
-
return Context2;
|
|
13825
|
-
})();
|
|
13826
|
-
function useLayoutDirection() {
|
|
13827
|
-
return React42.useContext(LayoutDirectionContext,);
|
|
13828
|
-
}
|
|
13829
13757
|
var shouldPreloadBasedOnUA = !isBot;
|
|
13830
13758
|
function usePreloadRoute() {
|
|
13831
|
-
const {
|
|
13832
|
-
activeLocale,
|
|
13833
|
-
} = useLocaleInfo();
|
|
13834
13759
|
const collectionUtils = useCollectionUtils();
|
|
13835
13760
|
const {
|
|
13836
13761
|
autobahnNavigation: autobahnNavigationEnabled,
|
|
@@ -13838,26 +13763,30 @@ function usePreloadRoute() {
|
|
|
13838
13763
|
const {
|
|
13839
13764
|
getRoute,
|
|
13840
13765
|
} = useRouter();
|
|
13841
|
-
return useCallback2((routeId,
|
|
13766
|
+
return useCallback2((routeId, linkContext, yieldBeforePreload = true,) => {
|
|
13842
13767
|
if (!routeId || !getRoute) return;
|
|
13843
13768
|
const route = getRoute(routeId,);
|
|
13769
|
+
const {
|
|
13770
|
+
pathVariables,
|
|
13771
|
+
locale,
|
|
13772
|
+
} = linkContext;
|
|
13844
13773
|
const context = routeId && autobahnNavigationEnabled
|
|
13845
13774
|
? {
|
|
13846
13775
|
routeId,
|
|
13847
13776
|
pathVariables,
|
|
13848
|
-
locale
|
|
13777
|
+
locale,
|
|
13849
13778
|
collectionUtils,
|
|
13850
13779
|
}
|
|
13851
13780
|
: void 0;
|
|
13852
13781
|
return preloadRoute(route, context, yieldBeforePreload,);
|
|
13853
|
-
}, [getRoute,
|
|
13782
|
+
}, [getRoute, collectionUtils, autobahnNavigationEnabled,],);
|
|
13854
13783
|
}
|
|
13855
13784
|
function useRoutePreloader(routeIds, enabled = true,) {
|
|
13856
13785
|
const preload = usePreloadRoute();
|
|
13857
13786
|
useEffect(() => {
|
|
13858
13787
|
if (!enabled || !shouldPreloadBasedOnUA) return;
|
|
13859
13788
|
for (const routeId of routeIds) {
|
|
13860
|
-
void preload(routeId,);
|
|
13789
|
+
void preload(routeId, EMPTY_OBJECT,);
|
|
13861
13790
|
}
|
|
13862
13791
|
}, [routeIds, enabled, preload,],);
|
|
13863
13792
|
}
|
|
@@ -13888,7 +13817,7 @@ async function preloadRouteData(component, context,) {
|
|
|
13888
13817
|
collectionUtils: context.collectionUtils,
|
|
13889
13818
|
};
|
|
13890
13819
|
try {
|
|
13891
|
-
await loader.load(
|
|
13820
|
+
await loader.load(EMPTY_OBJECT, loaderContext,);
|
|
13892
13821
|
} catch (e) {
|
|
13893
13822
|
if (false) console.warn('Route data preload failed', e,);
|
|
13894
13823
|
}
|
|
@@ -14025,6 +13954,8 @@ function normalizeString(path,) {
|
|
|
14025
13954
|
return res;
|
|
14026
13955
|
}
|
|
14027
13956
|
var customNotFoundPagePaths = /* @__PURE__ */ new Set([`/404.html`, `/404`, `/404/`,],);
|
|
13957
|
+
var pathVariablesRegExpRaw = ':([a-z]\\w*)';
|
|
13958
|
+
var pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, 'gi',);
|
|
14028
13959
|
function fillPathVariables(path, variables,) {
|
|
14029
13960
|
return path.replace(pathVariablesRegExp, (match, name,) => {
|
|
14030
13961
|
const value = variables[name];
|
|
@@ -14033,7 +13964,7 @@ function fillPathVariables(path, variables,) {
|
|
|
14033
13964
|
},);
|
|
14034
13965
|
}
|
|
14035
13966
|
function forwardCurrentQueryParams(href,) {
|
|
14036
|
-
const queryParamsString = typeof
|
|
13967
|
+
const queryParamsString = typeof __unframerWindow2 !== 'undefined' ? __unframerWindow2.location.search : '';
|
|
14037
13968
|
if (!queryParamsString) {
|
|
14038
13969
|
return href;
|
|
14039
13970
|
}
|
|
@@ -14170,7 +14101,7 @@ function getSitePrefix(siteCanonicalURL,) {
|
|
|
14170
14101
|
} catch {
|
|
14171
14102
|
return '';
|
|
14172
14103
|
}
|
|
14173
|
-
if (url.pathname === '/' ||
|
|
14104
|
+
if (url.pathname === '/' || __unframerWindow2.location.origin !== url.origin) return '';
|
|
14174
14105
|
return url.pathname.endsWith('/',) ? url.pathname.slice(0, -1,) : url.pathname;
|
|
14175
14106
|
}
|
|
14176
14107
|
var defaultSitePageEffects = {
|
|
@@ -14221,7 +14152,7 @@ function calcMaskPosition(mask,) {
|
|
|
14221
14152
|
const {
|
|
14222
14153
|
innerWidth,
|
|
14223
14154
|
innerHeight,
|
|
14224
|
-
} =
|
|
14155
|
+
} = __unframerWindow2;
|
|
14225
14156
|
const [x, xUnit,] = parseUnit(mask.x,);
|
|
14226
14157
|
const [y, yUnit,] = parseUnit(mask.y,);
|
|
14227
14158
|
return {
|
|
@@ -14271,7 +14202,7 @@ var circle = {
|
|
|
14271
14202
|
if (progress2 === 'start') {
|
|
14272
14203
|
return `clip-path: circle(0 at ${x}px ${y}px);`;
|
|
14273
14204
|
} else {
|
|
14274
|
-
const endRadius = Math.hypot(Math.max(x,
|
|
14205
|
+
const endRadius = Math.hypot(Math.max(x, __unframerWindow2.innerWidth - x,), Math.max(y, __unframerWindow2.innerHeight - y,),);
|
|
14275
14206
|
return `clip-path: circle(${endRadius}px at ${x}px ${y}px);`;
|
|
14276
14207
|
}
|
|
14277
14208
|
},
|
|
@@ -14282,8 +14213,8 @@ var inset = {
|
|
|
14282
14213
|
x,
|
|
14283
14214
|
y,
|
|
14284
14215
|
} = calcMaskPosition(mask,);
|
|
14285
|
-
const bottom =
|
|
14286
|
-
const right =
|
|
14216
|
+
const bottom = __unframerWindow2.innerHeight - y;
|
|
14217
|
+
const right = __unframerWindow2.innerWidth - x;
|
|
14287
14218
|
return progress2 === 'start'
|
|
14288
14219
|
? `clip-path: inset(${y}px ${right}px ${bottom}px ${x}px round ${mask.round}px);`
|
|
14289
14220
|
: `clip-path: inset(0 round 0);`;
|
|
@@ -14718,8 +14649,10 @@ function isHistoryState(data2,) {
|
|
|
14718
14649
|
}
|
|
14719
14650
|
function replaceHistoryState(data2, url, ignoreReplaceStateWrapper = false,) {
|
|
14720
14651
|
performance.mark('framer-history-replace',);
|
|
14721
|
-
const replaceState = ignoreReplaceStateWrapper
|
|
14722
|
-
|
|
14652
|
+
const replaceState = ignoreReplaceStateWrapper
|
|
14653
|
+
? __unframerWindow2.history.__proto__.replaceState
|
|
14654
|
+
: __unframerWindow2.history.replaceState;
|
|
14655
|
+
replaceState.call(__unframerWindow2.history, data2, '', url,);
|
|
14723
14656
|
}
|
|
14724
14657
|
var maybeHasPopstateBug = true;
|
|
14725
14658
|
var isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {
|
|
@@ -14731,9 +14664,9 @@ var isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {
|
|
|
14731
14664
|
})();
|
|
14732
14665
|
async function pushHistoryState(data2, url, isNavigationTransition = false,) {
|
|
14733
14666
|
performance.mark('framer-history-push',);
|
|
14734
|
-
updateCanonicalURL(url,
|
|
14667
|
+
updateCanonicalURL(url, __unframerWindow2.location.href,);
|
|
14735
14668
|
if (!isNavigationTransition) {
|
|
14736
|
-
|
|
14669
|
+
__unframerWindow2.history.pushState(data2, '', url,);
|
|
14737
14670
|
return;
|
|
14738
14671
|
}
|
|
14739
14672
|
let popstateCalled = false,
|
|
@@ -14748,20 +14681,20 @@ async function pushHistoryState(data2, url, isNavigationTransition = false,) {
|
|
|
14748
14681
|
message: msg,
|
|
14749
14682
|
},);
|
|
14750
14683
|
};
|
|
14751
|
-
|
|
14684
|
+
__unframerWindow2.addEventListener('popstate', popstateListener, {
|
|
14752
14685
|
once: true,
|
|
14753
14686
|
},);
|
|
14754
14687
|
}
|
|
14755
14688
|
if (isImpactedPopstateBugChromiumVersion && maybeHasPopstateBug) {
|
|
14756
|
-
|
|
14689
|
+
__unframerWindow2.history.__proto__.pushState.call(__unframerWindow2.history, data2, '', url,);
|
|
14757
14690
|
} else {
|
|
14758
|
-
|
|
14691
|
+
__unframerWindow2.history.pushState(data2, '', url,);
|
|
14759
14692
|
}
|
|
14760
14693
|
if (maybeHasPopstateBug) {
|
|
14761
14694
|
queueMicrotask(() => {
|
|
14762
14695
|
if (popstateCalled) return;
|
|
14763
14696
|
maybeHasPopstateBug = false;
|
|
14764
|
-
|
|
14697
|
+
__unframerWindow2.removeEventListener('popstate', popstateListener,);
|
|
14765
14698
|
return;
|
|
14766
14699
|
},);
|
|
14767
14700
|
}
|
|
@@ -14786,7 +14719,7 @@ function useReplaceInitialState({
|
|
|
14786
14719
|
);
|
|
14787
14720
|
}, [],);
|
|
14788
14721
|
}
|
|
14789
|
-
var supportsNavigationAPI = /* @__PURE__ */ (() => isWindow && typeof
|
|
14722
|
+
var supportsNavigationAPI = /* @__PURE__ */ (() => isWindow && typeof __unframerWindow2.navigation?.back === 'function')();
|
|
14790
14723
|
function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
14791
14724
|
const startViewTransition2 = useViewTransition();
|
|
14792
14725
|
const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender('framer-route-change',);
|
|
@@ -14794,7 +14727,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
|
14794
14727
|
const popStateHandler = useCallback2(async ({
|
|
14795
14728
|
state,
|
|
14796
14729
|
},) => {
|
|
14797
|
-
if (
|
|
14730
|
+
if (__unframerWindow2.navigation?.transition && __unframerWindow2.navigation?.transition?.navigationType !== 'traverse') return;
|
|
14798
14731
|
if (!isObject2(state,)) return;
|
|
14799
14732
|
const {
|
|
14800
14733
|
routeId,
|
|
@@ -14813,7 +14746,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
|
14813
14746
|
routeId,
|
|
14814
14747
|
isString(localeId,) ? localeId : void 0,
|
|
14815
14748
|
isString(hash2,) ? hash2 : void 0,
|
|
14816
|
-
|
|
14749
|
+
__unframerWindow2.location.pathname + __unframerWindow2.location.search + __unframerWindow2.location.hash,
|
|
14817
14750
|
isObject2(pathVariables,) ? pathVariables : void 0,
|
|
14818
14751
|
true,
|
|
14819
14752
|
nextRender,
|
|
@@ -14821,7 +14754,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
|
14821
14754
|
);
|
|
14822
14755
|
};
|
|
14823
14756
|
const viewTransition = await startViewTransition2(currentRouteId.current, routeId, changeRoute,);
|
|
14824
|
-
const navigationTransition =
|
|
14757
|
+
const navigationTransition = __unframerWindow2.navigation?.transition;
|
|
14825
14758
|
await (viewTransition?.updateCallbackDone ?? Promise.resolve()).then(viewTransitionReady.current?.resolve,).catch(
|
|
14826
14759
|
viewTransitionReady.current?.reject,
|
|
14827
14760
|
);
|
|
@@ -14832,7 +14765,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
|
14832
14765
|
console.warn('Popstate transition failed', error,);
|
|
14833
14766
|
}
|
|
14834
14767
|
announceNavigation();
|
|
14835
|
-
updateCanonicalURL(
|
|
14768
|
+
updateCanonicalURL(__unframerWindow2.location.href,);
|
|
14836
14769
|
}, [currentRouteId, monitorNextPaintAfterRender, setCurrentRouteId, startViewTransition2,],);
|
|
14837
14770
|
const traversalHandler = useCallback2((event) => {
|
|
14838
14771
|
if (event.navigationType !== 'traverse' || !event.canIntercept) return;
|
|
@@ -14850,11 +14783,11 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
|
|
|
14850
14783
|
},);
|
|
14851
14784
|
}, [],);
|
|
14852
14785
|
useEffect(() => {
|
|
14853
|
-
|
|
14854
|
-
if (supportsNavigationAPI)
|
|
14786
|
+
__unframerWindow2.addEventListener('popstate', popStateHandler,);
|
|
14787
|
+
if (supportsNavigationAPI) __unframerWindow2.navigation.addEventListener('navigate', traversalHandler,);
|
|
14855
14788
|
return () => {
|
|
14856
|
-
|
|
14857
|
-
if (supportsNavigationAPI)
|
|
14789
|
+
__unframerWindow2.removeEventListener('popstate', popStateHandler,);
|
|
14790
|
+
if (supportsNavigationAPI) __unframerWindow2.navigation.removeEventListener('navigate', traversalHandler,);
|
|
14858
14791
|
};
|
|
14859
14792
|
}, [popStateHandler, traversalHandler,],);
|
|
14860
14793
|
}
|
|
@@ -14894,9 +14827,9 @@ function getPathForRoute(route, {
|
|
|
14894
14827
|
}
|
|
14895
14828
|
const isSamePageHashNavigation = currentPath === path && resolvedHash;
|
|
14896
14829
|
if (relative2) {
|
|
14897
|
-
if (customNotFoundPagePaths.has(currentPath,) && typeof
|
|
14830
|
+
if (customNotFoundPagePaths.has(currentPath,) && typeof __unframerWindow2 !== 'undefined') {
|
|
14898
14831
|
const sitePrefix = getSitePrefix(siteCanonicalURL,);
|
|
14899
|
-
path = computeRelativePath(
|
|
14832
|
+
path = computeRelativePath(__unframerWindow2.location.pathname, sitePrefix + path,);
|
|
14900
14833
|
} else {
|
|
14901
14834
|
path = computeRelativePath(currentPath, path,);
|
|
14902
14835
|
}
|
|
@@ -14920,7 +14853,7 @@ async function handleRedirectForMissingSlugs(route, pathVariables, nextLocale,)
|
|
|
14920
14853
|
},);
|
|
14921
14854
|
const isRedirect = response.type === 'opaqueredirect';
|
|
14922
14855
|
if (isRedirect) {
|
|
14923
|
-
|
|
14856
|
+
__unframerWindow2.location.href = __unframerWindow2.location.origin + nextLocaleWithDefaultSlugPath;
|
|
14924
14857
|
return true;
|
|
14925
14858
|
}
|
|
14926
14859
|
return false;
|
|
@@ -14953,7 +14886,7 @@ async function switchLocale(options,) {
|
|
|
14953
14886
|
}
|
|
14954
14887
|
function pushLoadMoreHistory(hash2, paginationInfo,) {
|
|
14955
14888
|
try {
|
|
14956
|
-
const currentHistoryState =
|
|
14889
|
+
const currentHistoryState = __unframerWindow2.history.state;
|
|
14957
14890
|
if (!isHistoryState(currentHistoryState,)) return;
|
|
14958
14891
|
const isInitialLoad = currentHistoryState?.paginationInfo === void 0 || currentHistoryState.paginationInfo[hash2] === void 0;
|
|
14959
14892
|
const newPaginationInfo = {
|
|
@@ -14990,10 +14923,10 @@ function useNativeLoadingSpinner() {
|
|
|
14990
14923
|
}
|
|
14991
14924
|
navigationPromise.current = promise;
|
|
14992
14925
|
navigationController.current = controller;
|
|
14993
|
-
|
|
14926
|
+
__unframerWindow2.navigation.addEventListener('navigate', navigateListener,);
|
|
14994
14927
|
void updateURL(true,);
|
|
14995
14928
|
void promise.finally(() => {
|
|
14996
|
-
|
|
14929
|
+
__unframerWindow2.navigation.removeEventListener('navigate', navigateListener,);
|
|
14997
14930
|
},);
|
|
14998
14931
|
}, [navigateListener,],);
|
|
14999
14932
|
}
|
|
@@ -15054,6 +14987,137 @@ function useMemoOne(factory, inputs,) {
|
|
|
15054
14987
|
}, [cache2,],);
|
|
15055
14988
|
return cache2.result;
|
|
15056
14989
|
}
|
|
14990
|
+
async function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils,) {
|
|
14991
|
+
if (!currentRoute) return locales;
|
|
14992
|
+
const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(
|
|
14993
|
+
activeLocale,
|
|
14994
|
+
locales,
|
|
14995
|
+
currentRoute,
|
|
14996
|
+
pathVariables,
|
|
14997
|
+
collectionUtils,
|
|
14998
|
+
);
|
|
14999
|
+
const includedLocalesForCurrentRoute = currentRoute.includedLocales;
|
|
15000
|
+
const localesForCurrentRoute = [];
|
|
15001
|
+
for (const locale of locales) {
|
|
15002
|
+
if (includedLocalesForCurrentRoute) {
|
|
15003
|
+
if (!includedLocalesForCurrentRoute.includes(locale.id,)) continue;
|
|
15004
|
+
}
|
|
15005
|
+
if (slugByLocaleIfCollectionPage) {
|
|
15006
|
+
const hasSlug = slugByLocaleIfCollectionPage.has(locale.id,);
|
|
15007
|
+
if (!hasSlug) continue;
|
|
15008
|
+
}
|
|
15009
|
+
localesForCurrentRoute.push(locale,);
|
|
15010
|
+
}
|
|
15011
|
+
return localesForCurrentRoute;
|
|
15012
|
+
}
|
|
15013
|
+
async function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils,) {
|
|
15014
|
+
const {
|
|
15015
|
+
collectionId,
|
|
15016
|
+
} = currentRoute;
|
|
15017
|
+
if (!collectionId) return null;
|
|
15018
|
+
if (!activeLocale) return null;
|
|
15019
|
+
if (!pathVariables) return null;
|
|
15020
|
+
const {
|
|
15021
|
+
path,
|
|
15022
|
+
} = currentRoute;
|
|
15023
|
+
if (!path) return null;
|
|
15024
|
+
const matches = Array.from(path.matchAll(pathVariablesRegExp,),);
|
|
15025
|
+
const lastMatch = matches.pop();
|
|
15026
|
+
if (!lastMatch) return null;
|
|
15027
|
+
const pathVariableWithDelimiter = lastMatch?.[0];
|
|
15028
|
+
const pathVariableValue = lastMatch?.[1];
|
|
15029
|
+
if (!pathVariableWithDelimiter || !pathVariableValue) {
|
|
15030
|
+
throw new Error('Failed to replace path variables: unexpected regex match group',);
|
|
15031
|
+
}
|
|
15032
|
+
const currentSlug = pathVariables[pathVariableValue];
|
|
15033
|
+
if (!currentSlug || !isString(currentSlug,)) {
|
|
15034
|
+
throw new Error(`No slug found for path variable ${pathVariableValue}`,);
|
|
15035
|
+
}
|
|
15036
|
+
const utils = collectionUtils?.get(collectionId,);
|
|
15037
|
+
if (!utils) return null;
|
|
15038
|
+
const maybeRecordId = utils.getRecordIdBySlug(currentSlug, activeLocale,);
|
|
15039
|
+
const recordId = isPromise(maybeRecordId,) ? await maybeRecordId : maybeRecordId;
|
|
15040
|
+
if (!recordId) return null;
|
|
15041
|
+
const slugById = /* @__PURE__ */ new Map();
|
|
15042
|
+
await Promise.all(locales.map(async (locale) => {
|
|
15043
|
+
const maybeSlug = utils.getSlugByRecordId(recordId, locale,);
|
|
15044
|
+
const slug = isPromise(maybeSlug,) ? await maybeSlug : maybeSlug;
|
|
15045
|
+
if (!slug) return;
|
|
15046
|
+
slugById.set(locale.id, slug,);
|
|
15047
|
+
},),);
|
|
15048
|
+
return slugById;
|
|
15049
|
+
}
|
|
15050
|
+
var noopAsync = async () => {};
|
|
15051
|
+
var defaultLocaleInfo = {
|
|
15052
|
+
activeLocale: null,
|
|
15053
|
+
locales: [],
|
|
15054
|
+
setLocale: noopAsync,
|
|
15055
|
+
};
|
|
15056
|
+
var LocaleInfoContext = /* @__PURE__ */ (() => {
|
|
15057
|
+
const Context2 = React42.createContext(defaultLocaleInfo,);
|
|
15058
|
+
Context2.displayName = 'LocaleInfoContext';
|
|
15059
|
+
return Context2;
|
|
15060
|
+
})();
|
|
15061
|
+
function useLocaleInfo() {
|
|
15062
|
+
return React42.useContext(LocaleInfoContext,);
|
|
15063
|
+
}
|
|
15064
|
+
function useLocalesForCurrentRoute() {
|
|
15065
|
+
const {
|
|
15066
|
+
currentRouteId,
|
|
15067
|
+
routes,
|
|
15068
|
+
currentPathVariables,
|
|
15069
|
+
} = useRouter();
|
|
15070
|
+
const {
|
|
15071
|
+
activeLocale,
|
|
15072
|
+
locales,
|
|
15073
|
+
} = useLocaleInfo();
|
|
15074
|
+
const [localesForCurrentRoute, setLocalesForCurrentRoute,] = React42.useState(() => activeLocale ? [activeLocale,] : []);
|
|
15075
|
+
const currentRoute = currentRouteId ? routes?.[currentRouteId] : void 0;
|
|
15076
|
+
const collectionUtils = useCollectionUtils();
|
|
15077
|
+
React42.useEffect(() => {
|
|
15078
|
+
let active = true;
|
|
15079
|
+
getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils,).then((localesSubset) => {
|
|
15080
|
+
if (!active) return;
|
|
15081
|
+
React42.startTransition(() => {
|
|
15082
|
+
if (localesSubset) {
|
|
15083
|
+
setLocalesForCurrentRoute(localesSubset,);
|
|
15084
|
+
} else {
|
|
15085
|
+
setLocalesForCurrentRoute(activeLocale ? [activeLocale,] : [],);
|
|
15086
|
+
}
|
|
15087
|
+
},);
|
|
15088
|
+
},).catch(() => {},);
|
|
15089
|
+
return () => {
|
|
15090
|
+
active = false;
|
|
15091
|
+
};
|
|
15092
|
+
}, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables,],);
|
|
15093
|
+
return localesForCurrentRoute;
|
|
15094
|
+
}
|
|
15095
|
+
function useLocalizationInfo() {
|
|
15096
|
+
const {
|
|
15097
|
+
activeLocale,
|
|
15098
|
+
locales,
|
|
15099
|
+
setLocale,
|
|
15100
|
+
} = useLocaleInfo();
|
|
15101
|
+
return {
|
|
15102
|
+
activeLocalization: activeLocale,
|
|
15103
|
+
localizations: locales,
|
|
15104
|
+
setLocalization: setLocale,
|
|
15105
|
+
};
|
|
15106
|
+
}
|
|
15107
|
+
function useLocaleCode() {
|
|
15108
|
+
return useLocaleInfo().activeLocale?.code ?? 'en-US';
|
|
15109
|
+
}
|
|
15110
|
+
function useLocale() {
|
|
15111
|
+
return useLocaleCode();
|
|
15112
|
+
}
|
|
15113
|
+
var LayoutDirectionContext = /* @__PURE__ */ (() => {
|
|
15114
|
+
const Context2 = React42.createContext('ltr',);
|
|
15115
|
+
Context2.displayName = 'LayoutDirectionContext';
|
|
15116
|
+
return Context2;
|
|
15117
|
+
})();
|
|
15118
|
+
function useLayoutDirection() {
|
|
15119
|
+
return React42.useContext(LayoutDirectionContext,);
|
|
15120
|
+
}
|
|
15057
15121
|
var URLSearchParamsContext = /* @__PURE__ */ (() => {
|
|
15058
15122
|
const Context2 = createContext({
|
|
15059
15123
|
urlSearchParams: new URLSearchParams(),
|
|
@@ -15072,13 +15136,13 @@ function URLSearchParamsProvider({
|
|
|
15072
15136
|
const handler = () => {
|
|
15073
15137
|
onStoreChange();
|
|
15074
15138
|
};
|
|
15075
|
-
|
|
15139
|
+
__unframerWindow2.addEventListener('popstate', handler,);
|
|
15076
15140
|
return () => {
|
|
15077
15141
|
onStoreChangeRef.current = null;
|
|
15078
|
-
|
|
15142
|
+
__unframerWindow2.removeEventListener('popstate', handler,);
|
|
15079
15143
|
};
|
|
15080
15144
|
},
|
|
15081
|
-
() =>
|
|
15145
|
+
() => __unframerWindow2.location.search,
|
|
15082
15146
|
() => '',
|
|
15083
15147
|
);
|
|
15084
15148
|
const deferredSearchString = useDeferredValue(searchString,);
|
|
@@ -15107,10 +15171,9 @@ function useStringArrayQueryParam({
|
|
|
15107
15171
|
}, [urlSearchParams,],);
|
|
15108
15172
|
const setValue = useCallback2(async (newValues) => {
|
|
15109
15173
|
if (!isArray(newValues,)) return;
|
|
15110
|
-
const currentHistoryState =
|
|
15111
|
-
if (!isHistoryState(currentHistoryState,)) return;
|
|
15174
|
+
const currentHistoryState = __unframerWindow2.history.state;
|
|
15112
15175
|
const name = parameterNameRef.current;
|
|
15113
|
-
const url = new URL(
|
|
15176
|
+
const url = new URL(__unframerWindow2.location.href,);
|
|
15114
15177
|
const next2 = new URLSearchParams();
|
|
15115
15178
|
let inserted = false;
|
|
15116
15179
|
for (const [key7, originalValue,] of url.searchParams.entries()) {
|
|
@@ -16049,7 +16112,7 @@ function escapeStringRegExp(string,) {
|
|
|
16049
16112
|
return string.replace(/[|\\{}()[\]^$+*?.]/gu, '\\$&',).replace(/-/gu, '\\x2d',);
|
|
16050
16113
|
}
|
|
16051
16114
|
function getVariantsFromServerTiming() {
|
|
16052
|
-
if ('PerformanceServerTiming' in
|
|
16115
|
+
if ('PerformanceServerTiming' in __unframerWindow2) {
|
|
16053
16116
|
const serverTiming = performance.getEntriesByType('navigation',)[0]?.serverTiming;
|
|
16054
16117
|
if (!serverTiming || serverTiming.length === 0) return new URLSearchParams();
|
|
16055
16118
|
const entry = serverTiming.find((it) => it.name === 'abtests');
|
|
@@ -16113,7 +16176,7 @@ function patchInitialRoute(routes, routeId,) {
|
|
|
16113
16176
|
};
|
|
16114
16177
|
}
|
|
16115
16178
|
function patchRoutesForABTesting(routes, initialRouteId,) {
|
|
16116
|
-
if (typeof
|
|
16179
|
+
if (typeof __unframerWindow2 === 'undefined') return initialRouteId;
|
|
16117
16180
|
let resolvedInitialRouteId = initialRouteId;
|
|
16118
16181
|
if (initialRouteId) {
|
|
16119
16182
|
patchInitialRoute(routes, initialRouteId,);
|
|
@@ -21292,6 +21355,149 @@ var ControlType = /* @__PURE__ */ ((ControlType2) => {
|
|
|
21292
21355
|
ControlType2['LinkRelValues'] = 'linkrelvalues';
|
|
21293
21356
|
return ControlType2;
|
|
21294
21357
|
})(ControlType || {},);
|
|
21358
|
+
function getNavigator() {
|
|
21359
|
+
return typeof __unframerNavigator2 !== 'undefined' ? __unframerNavigator2 : void 0;
|
|
21360
|
+
}
|
|
21361
|
+
function getWindow() {
|
|
21362
|
+
return typeof __unframerWindow2 !== 'undefined' ? __unframerWindow2 : void 0;
|
|
21363
|
+
}
|
|
21364
|
+
var macRegex = /Mac/u;
|
|
21365
|
+
var winRegex = /Win/u;
|
|
21366
|
+
var iOSRegex = /iPhone|iPod|iPad/iu;
|
|
21367
|
+
var macIntelRegex = /MacIntel/iu;
|
|
21368
|
+
var androidRegex = /android/iu;
|
|
21369
|
+
function isMacOS() {
|
|
21370
|
+
const nav = getNavigator();
|
|
21371
|
+
return nav ? macRegex.test(nav.platform,) : false;
|
|
21372
|
+
}
|
|
21373
|
+
function isWindows() {
|
|
21374
|
+
const nav = getNavigator();
|
|
21375
|
+
return nav ? winRegex.test(nav.platform,) : false;
|
|
21376
|
+
}
|
|
21377
|
+
function isIOS() {
|
|
21378
|
+
const nav = getNavigator();
|
|
21379
|
+
if (!nav) return false;
|
|
21380
|
+
if (iOSRegex.test(nav.platform,)) return true;
|
|
21381
|
+
return macIntelRegex.test(nav.platform,) && nav.maxTouchPoints != null && nav.maxTouchPoints > 2;
|
|
21382
|
+
}
|
|
21383
|
+
function isAppleDevice() {
|
|
21384
|
+
return isMacOS() || isIOS();
|
|
21385
|
+
}
|
|
21386
|
+
function isAndroid() {
|
|
21387
|
+
const nav = getNavigator();
|
|
21388
|
+
return nav ? androidRegex.test(nav.userAgent,) : false;
|
|
21389
|
+
}
|
|
21390
|
+
var edgeRegex = /Edg\//u;
|
|
21391
|
+
function isEdge() {
|
|
21392
|
+
const nav = getNavigator();
|
|
21393
|
+
return nav ? edgeRegex.test(nav.userAgent,) : false;
|
|
21394
|
+
}
|
|
21395
|
+
var chromeRegex = /Chrome/u;
|
|
21396
|
+
var googleVendorRegex = /Google Inc/u;
|
|
21397
|
+
function isChrome() {
|
|
21398
|
+
const nav = getNavigator();
|
|
21399
|
+
return nav ? chromeRegex.test(nav.userAgent,) && googleVendorRegex.test(nav.vendor,) && !isEdge() : false;
|
|
21400
|
+
}
|
|
21401
|
+
var appleWebKitRegex = /AppleWebKit\//u;
|
|
21402
|
+
function isWebKit() {
|
|
21403
|
+
const nav = getNavigator();
|
|
21404
|
+
return nav ? appleWebKitRegex.test(nav.userAgent,) && !isChrome() && !isEdge() : false;
|
|
21405
|
+
}
|
|
21406
|
+
var safariRegex = /Safari/u;
|
|
21407
|
+
var appleComputerRegex = /Apple Computer/u;
|
|
21408
|
+
function isSafari() {
|
|
21409
|
+
const nav = getNavigator();
|
|
21410
|
+
return nav ? safariRegex.test(nav.userAgent,) && appleComputerRegex.test(nav.vendor,) : false;
|
|
21411
|
+
}
|
|
21412
|
+
var firefoxRegex = /Firefox\/\d+\.\d+$/u;
|
|
21413
|
+
function isFirefox() {
|
|
21414
|
+
const nav = getNavigator();
|
|
21415
|
+
return nav ? firefoxRegex.test(nav.userAgent,) : false;
|
|
21416
|
+
}
|
|
21417
|
+
function isBrowser2() {
|
|
21418
|
+
return typeof document === 'object';
|
|
21419
|
+
}
|
|
21420
|
+
var chromeVersionRegex = /Chrome\/(\d+)/u;
|
|
21421
|
+
function chromeMainVersion() {
|
|
21422
|
+
const nav = getNavigator();
|
|
21423
|
+
if (!nav) return -1;
|
|
21424
|
+
const result = chromeVersionRegex.exec(nav.userAgent,);
|
|
21425
|
+
if (!result || !result[1]) return -1;
|
|
21426
|
+
const version2 = parseInt(result[1],);
|
|
21427
|
+
return Number.isFinite(version2,) ? version2 : -1;
|
|
21428
|
+
}
|
|
21429
|
+
var safariVersionRegex = /Version\/([\d.]+)/u;
|
|
21430
|
+
function safariVersion() {
|
|
21431
|
+
const nav = getNavigator();
|
|
21432
|
+
if (!nav) return -1;
|
|
21433
|
+
const result = safariVersionRegex.exec(nav.userAgent,);
|
|
21434
|
+
if (result?.[1]) {
|
|
21435
|
+
return parseFloat(result[1],);
|
|
21436
|
+
}
|
|
21437
|
+
return -1;
|
|
21438
|
+
}
|
|
21439
|
+
var framerXRegex = /FramerX/u;
|
|
21440
|
+
function isFramerX() {
|
|
21441
|
+
const nav = getNavigator();
|
|
21442
|
+
return nav ? framerXRegex.test(nav.userAgent,) : false;
|
|
21443
|
+
}
|
|
21444
|
+
function isTest() {
|
|
21445
|
+
return false;
|
|
21446
|
+
}
|
|
21447
|
+
function isTouch() {
|
|
21448
|
+
const win = getWindow();
|
|
21449
|
+
const nav = getNavigator();
|
|
21450
|
+
if (!win || !nav) return false;
|
|
21451
|
+
return 'ontouchstart' in win || nav.maxTouchPoints > 0;
|
|
21452
|
+
}
|
|
21453
|
+
var tabletRegex = /tablet|iPad|Nexus 9/iu;
|
|
21454
|
+
var mobileRegex = /mobi/iu;
|
|
21455
|
+
function deviceType() {
|
|
21456
|
+
const nav = getNavigator();
|
|
21457
|
+
if (nav && tabletRegex.test(nav.userAgent,)) return 'tablet';
|
|
21458
|
+
if (nav && mobileRegex.test(nav.userAgent,)) return 'phone';
|
|
21459
|
+
return 'desktop';
|
|
21460
|
+
}
|
|
21461
|
+
function isDesktop() {
|
|
21462
|
+
return deviceType() === 'desktop';
|
|
21463
|
+
}
|
|
21464
|
+
function isPhone() {
|
|
21465
|
+
return deviceType() === 'phone';
|
|
21466
|
+
}
|
|
21467
|
+
function isTablet() {
|
|
21468
|
+
return deviceType() === 'tablet';
|
|
21469
|
+
}
|
|
21470
|
+
function isMobile() {
|
|
21471
|
+
return isPhone() || isTablet();
|
|
21472
|
+
}
|
|
21473
|
+
var embeddedRegex = /Instagram|FB_IAB\/FB4A|FBAN\/FBIOS|BytedanceWebview|Twitter|LinkedIn/iu;
|
|
21474
|
+
function isEmbedded() {
|
|
21475
|
+
const nav = getNavigator();
|
|
21476
|
+
return nav ? embeddedRegex.test(nav.userAgent,) : false;
|
|
21477
|
+
}
|
|
21478
|
+
var absoluteUrlRegex = /^[a-z]{1,8}:\/\/.*$/iu;
|
|
21479
|
+
function isRelativeUrl(url,) {
|
|
21480
|
+
return !absoluteUrlRegex.test(url,);
|
|
21481
|
+
}
|
|
21482
|
+
function isFileUrl(url,) {
|
|
21483
|
+
return url.startsWith('file://',);
|
|
21484
|
+
}
|
|
21485
|
+
function isDataUrl(url,) {
|
|
21486
|
+
return url.startsWith('data:',);
|
|
21487
|
+
}
|
|
21488
|
+
var localServerUrlRegex1 = /[a-z]{1,8}:\/\/127\.0\.0\.1/iu;
|
|
21489
|
+
var localServerUrlRegex2 = /[a-zA-Z]{1,8}:\/\/localhost/u;
|
|
21490
|
+
function isLocalServerUrl(url,) {
|
|
21491
|
+
return localServerUrlRegex1.test(url,) || localServerUrlRegex2.test(url,);
|
|
21492
|
+
}
|
|
21493
|
+
function isLocalUrl(url,) {
|
|
21494
|
+
if (isFileUrl(url,)) return true;
|
|
21495
|
+
if (isLocalServerUrl(url,)) return true;
|
|
21496
|
+
return false;
|
|
21497
|
+
}
|
|
21498
|
+
function isCommandKeyPressed(event,) {
|
|
21499
|
+
return isAppleDevice() ? event.metaKey : event.ctrlKey;
|
|
21500
|
+
}
|
|
21295
21501
|
var StyleSheetContext = /* @__PURE__ */ React42.createContext(void 0,);
|
|
21296
21502
|
var defaultCache = /* @__PURE__ */ new Set();
|
|
21297
21503
|
var defaultSheet;
|
|
@@ -21321,127 +21527,6 @@ function injectCSSRule(cssRule, sheet, cache2 = defaultCache,) {
|
|
|
21321
21527
|
sheet.insertRule(cssRule, sheet.cssRules.length,);
|
|
21322
21528
|
} catch {}
|
|
21323
21529
|
}
|
|
21324
|
-
var safeNavigator = typeof __unframerNavigator2 !== 'undefined' ? __unframerNavigator2 : void 0;
|
|
21325
|
-
var isBrowser2 = () => typeof document === 'object';
|
|
21326
|
-
var isWebKit = () => safeNavigator?.userAgent.includes('AppleWebKit/',) && !isChrome() && !isEdge();
|
|
21327
|
-
var webkitVersion = () => {
|
|
21328
|
-
let version2 = -1;
|
|
21329
|
-
const regexp = /AppleWebKit\/([\d.]+)/u;
|
|
21330
|
-
const result = safeNavigator && regexp.exec(safeNavigator.userAgent,);
|
|
21331
|
-
if (result && result[1]) {
|
|
21332
|
-
version2 = parseFloat(result[1],);
|
|
21333
|
-
}
|
|
21334
|
-
return version2;
|
|
21335
|
-
};
|
|
21336
|
-
var safariVersion = () => {
|
|
21337
|
-
let version2 = -1;
|
|
21338
|
-
const regexp = /Version\/([\d.]+)/u;
|
|
21339
|
-
const result = safeNavigator && regexp.exec(safeNavigator.userAgent,);
|
|
21340
|
-
if (result && result[1]) {
|
|
21341
|
-
version2 = parseFloat(result[1],);
|
|
21342
|
-
}
|
|
21343
|
-
return version2;
|
|
21344
|
-
};
|
|
21345
|
-
var isChrome = () => safeNavigator && /Chrome/u.test(safeNavigator.userAgent,) && /Google Inc/u.test(safeNavigator.vendor,) && !isEdge();
|
|
21346
|
-
var isSafari = () => safeNavigator && /Safari/u.test(safeNavigator.userAgent,) && /Apple Computer/u.test(safeNavigator.vendor,);
|
|
21347
|
-
var isFirefox = () => safeNavigator && /Firefox\/\d+\.\d+$/u.test(safeNavigator.userAgent,);
|
|
21348
|
-
var isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent,);
|
|
21349
|
-
var isEdge = () => safeNavigator && /Edg\//u.test(safeNavigator.userAgent,);
|
|
21350
|
-
var isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent,);
|
|
21351
|
-
var iOSRegex = /iPhone|iPod|iPad/iu;
|
|
21352
|
-
var macIntelRegex = /MacIntel/iu;
|
|
21353
|
-
var isIOS = () => {
|
|
21354
|
-
if (!safeNavigator) return false;
|
|
21355
|
-
if (iOSRegex.test(safeNavigator.platform,)) return true;
|
|
21356
|
-
return macIntelRegex.test(safeNavigator.platform,) && safeNavigator.maxTouchPoints && safeNavigator.maxTouchPoints > 2;
|
|
21357
|
-
};
|
|
21358
|
-
var isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform,);
|
|
21359
|
-
var isWindows = () => safeNavigator && /Win/u.test(safeNavigator.platform,);
|
|
21360
|
-
var isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;
|
|
21361
|
-
var isDesktop = () => deviceType() === 'desktop';
|
|
21362
|
-
var isPhone = () => deviceType() === 'phone';
|
|
21363
|
-
var isTablet = () => deviceType() === 'tablet';
|
|
21364
|
-
var isMobile = () => isPhone() || isTablet();
|
|
21365
|
-
var isFileUrl = (url) => url.startsWith('file://',);
|
|
21366
|
-
var isDataUrl = (url) => url.startsWith('data:',);
|
|
21367
|
-
var isTest = () => false;
|
|
21368
|
-
var isRelativeUrl = (url) => !/^[a-z]{1,8}:\/\/.*$/i.test(url,);
|
|
21369
|
-
var isLocalServerUrl = (url) => /[a-z]{1,8}:\/\/127\.0\.0\.1/i.test(url,) || /[a-zA-Z]{1,8}:\/\/localhost/u.test(url,);
|
|
21370
|
-
var isLocalUrl = (url) => {
|
|
21371
|
-
if (isFileUrl(url,)) return true;
|
|
21372
|
-
if (isLocalServerUrl(url,)) return true;
|
|
21373
|
-
return false;
|
|
21374
|
-
};
|
|
21375
|
-
var isLocalAssetUrl = (url, baseUrl,) => {
|
|
21376
|
-
if (baseUrl === null) baseUrl = safeWindow.location.href;
|
|
21377
|
-
if (isDataUrl(url,)) return false;
|
|
21378
|
-
if (isLocalUrl(url,)) return true;
|
|
21379
|
-
if (isRelativeUrl(url,) && isLocalUrl(baseUrl,)) return true;
|
|
21380
|
-
return false;
|
|
21381
|
-
};
|
|
21382
|
-
var devicePixelRatio = () => safeWindow.devicePixelRatio;
|
|
21383
|
-
var isJP2Supported = function () {
|
|
21384
|
-
if (isFirefox()) return false;
|
|
21385
|
-
return isWebKit();
|
|
21386
|
-
};
|
|
21387
|
-
var isWebPSupported = () => isChrome();
|
|
21388
|
-
var deviceType = () => {
|
|
21389
|
-
if (safeNavigator && /tablet|iPad|Nexus 9/i.test(safeNavigator.userAgent,)) return 'tablet';
|
|
21390
|
-
if (safeNavigator && /mobi/iu.test(safeNavigator.userAgent,)) return 'phone';
|
|
21391
|
-
return 'desktop';
|
|
21392
|
-
};
|
|
21393
|
-
var deviceOS = () => {
|
|
21394
|
-
if (isMacOS()) return 'macos';
|
|
21395
|
-
if (isIOS()) return 'ios';
|
|
21396
|
-
if (isAndroid()) return 'android';
|
|
21397
|
-
if (isWindows()) return 'windows';
|
|
21398
|
-
};
|
|
21399
|
-
var deviceFont = (os) => {
|
|
21400
|
-
if (!os) {
|
|
21401
|
-
os = deviceOS();
|
|
21402
|
-
}
|
|
21403
|
-
const fonts = {
|
|
21404
|
-
apple: '-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue',
|
|
21405
|
-
google: 'Roboto, Helvetica Neue',
|
|
21406
|
-
microsoft: 'Segoe UI, Helvetica Neue',
|
|
21407
|
-
};
|
|
21408
|
-
if (os === 'macos') return fonts.apple;
|
|
21409
|
-
if (os === 'ios') return fonts.apple;
|
|
21410
|
-
if (os === 'android') return fonts.google;
|
|
21411
|
-
if (os === 'windows') return fonts.microsoft;
|
|
21412
|
-
return fonts.apple;
|
|
21413
|
-
};
|
|
21414
|
-
var environment = {
|
|
21415
|
-
isWebKit,
|
|
21416
|
-
webkitVersion,
|
|
21417
|
-
isChrome,
|
|
21418
|
-
isSafari,
|
|
21419
|
-
isFirefox,
|
|
21420
|
-
isFramerX,
|
|
21421
|
-
isEdge,
|
|
21422
|
-
isAndroid,
|
|
21423
|
-
isIOS,
|
|
21424
|
-
isMacOS,
|
|
21425
|
-
isWindows,
|
|
21426
|
-
isTouch,
|
|
21427
|
-
isDesktop,
|
|
21428
|
-
isPhone,
|
|
21429
|
-
isTablet,
|
|
21430
|
-
isMobile,
|
|
21431
|
-
isFileUrl,
|
|
21432
|
-
isDataUrl,
|
|
21433
|
-
isRelativeUrl,
|
|
21434
|
-
isLocalServerUrl,
|
|
21435
|
-
isLocalUrl,
|
|
21436
|
-
isLocalAssetUrl,
|
|
21437
|
-
devicePixelRatio,
|
|
21438
|
-
isJP2Supported,
|
|
21439
|
-
isWebPSupported,
|
|
21440
|
-
deviceType,
|
|
21441
|
-
deviceOS,
|
|
21442
|
-
deviceFont,
|
|
21443
|
-
safariVersion,
|
|
21444
|
-
};
|
|
21445
21530
|
var framerPostSSRCSSSelector = 'style[data-framer-css-ssr-minified]';
|
|
21446
21531
|
var componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {
|
|
21447
21532
|
if (!isBrowser2()) return /* @__PURE__ */ new Set();
|
|
@@ -21996,9 +22081,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
21996
22081
|
ul.framer-text,
|
|
21997
22082
|
mark.framer-text,
|
|
21998
22083
|
span.framer-text:not([data-text-fill]) {
|
|
21999
|
-
font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));
|
|
22000
|
-
font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));
|
|
22001
|
-
font-weight: var(--framer-blockquote-font-weight, var(--framer-font-weight, 400));
|
|
22084
|
+
font-family: var(--framer-font-family-preview, var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));
|
|
22085
|
+
font-style: var(--framer-font-style-preview, var(--framer-blockquote-font-style, var(--framer-font-style, normal)));
|
|
22086
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-blockquote-font-weight, var(--framer-font-weight, 400)));
|
|
22002
22087
|
color: var(--framer-blockquote-text-color, var(--framer-text-color, #000));
|
|
22003
22088
|
font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
|
|
22004
22089
|
letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));
|
|
@@ -22016,7 +22101,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
22016
22101
|
-moz-font-feature-settings: var(--framer-font-open-type-features, initial);
|
|
22017
22102
|
-webkit-font-feature-settings: var(--framer-font-open-type-features, initial);
|
|
22018
22103
|
font-feature-settings: var(--framer-font-open-type-features, initial);
|
|
22019
|
-
font-variation-settings: var(--framer-font-variation-axes, normal);
|
|
22104
|
+
font-variation-settings: var(--framer-font-variation-axes-preview, var(--framer-font-variation-axes, normal));
|
|
22020
22105
|
text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));
|
|
22021
22106
|
}
|
|
22022
22107
|
`, /* css */
|
|
@@ -22180,9 +22265,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
22180
22265
|
span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
|
|
22181
22266
|
/* Ensure the color is inherited from the link style rather than the parent text for nested spans */
|
|
22182
22267
|
color: inherit;
|
|
22183
|
-
font-family: var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));
|
|
22184
|
-
font-style: var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));
|
|
22185
|
-
font-weight: var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));
|
|
22268
|
+
font-family: var(--framer-font-family-preview, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
|
|
22269
|
+
font-style: var(--framer-font-style-preview, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));
|
|
22270
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));
|
|
22186
22271
|
font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
|
|
22187
22272
|
text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
|
|
22188
22273
|
/* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
|
|
@@ -22264,9 +22349,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
22264
22349
|
a.framer-text:hover span.framer-text:not([data-text-fill]),
|
|
22265
22350
|
span.framer-text[data-nested-link]:hover,
|
|
22266
22351
|
span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {
|
|
22267
|
-
font-family: var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
|
|
22268
|
-
font-style: var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));
|
|
22269
|
-
font-weight: var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));
|
|
22352
|
+
font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)))));
|
|
22353
|
+
font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)))));
|
|
22354
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)))));
|
|
22270
22355
|
font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
|
|
22271
22356
|
text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
|
|
22272
22357
|
border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
|
|
@@ -22343,9 +22428,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
22343
22428
|
a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),
|
|
22344
22429
|
span.framer-text[data-framer-page-link-current],
|
|
22345
22430
|
span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {
|
|
22346
|
-
font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));
|
|
22347
|
-
font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));
|
|
22348
|
-
font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));
|
|
22431
|
+
font-family: var(--framer-font-family-preview, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
|
|
22432
|
+
font-style: var(--framer-font-style-preview, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));
|
|
22433
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));
|
|
22349
22434
|
font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
|
|
22350
22435
|
text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
|
|
22351
22436
|
border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial));
|
|
@@ -22438,9 +22523,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
|
|
|
22438
22523
|
span.framer-text[data-framer-page-link-current]:hover,
|
|
22439
22524
|
span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {
|
|
22440
22525
|
color: inherit;
|
|
22441
|
-
font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
|
|
22442
|
-
font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));
|
|
22443
|
-
font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));
|
|
22526
|
+
font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)))));
|
|
22527
|
+
font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)))));
|
|
22528
|
+
font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)))));
|
|
22444
22529
|
font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));
|
|
22445
22530
|
text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
|
|
22446
22531
|
border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial)));
|
|
@@ -28384,7 +28469,7 @@ var FramerEvent = class _FramerEvent {
|
|
|
28384
28469
|
* @internal
|
|
28385
28470
|
*/
|
|
28386
28471
|
get isLeftMouseClick() {
|
|
28387
|
-
if (
|
|
28472
|
+
if (isTouch()) {
|
|
28388
28473
|
return void 0;
|
|
28389
28474
|
}
|
|
28390
28475
|
if ('button' in this.originalEvent && 'buttons' in this.originalEvent && 'ctrlKey' in this.originalEvent) {
|
|
@@ -32164,7 +32249,7 @@ var TouchEventListener = class extends Component2 {
|
|
|
32164
32249
|
safeWindow.removeEventListener('touchend', this.domTouchEnd,);
|
|
32165
32250
|
}
|
|
32166
32251
|
};
|
|
32167
|
-
var FramerEventListener = /* @__PURE__ */
|
|
32252
|
+
var FramerEventListener = /* @__PURE__ */ isTouch() ? TouchEventListener : MouseEventListener;
|
|
32168
32253
|
var directionMap = {
|
|
32169
32254
|
horizontal: 'x',
|
|
32170
32255
|
vertical: 'y',
|
|
@@ -32680,7 +32765,7 @@ function useEmulateTouchScroll(ref, direction, enabled,) {
|
|
|
32680
32765
|
case 3:
|
|
32681
32766
|
return;
|
|
32682
32767
|
}
|
|
32683
|
-
if (event
|
|
32768
|
+
if (isCommandKeyPressed(event,)) return;
|
|
32684
32769
|
const point2 = getEventPoint(event,);
|
|
32685
32770
|
if (!downPoint) return;
|
|
32686
32771
|
const offset = Point.subtract(point2, downPoint,);
|
|
@@ -32764,7 +32849,7 @@ function useEmulateTouchScroll(ref, direction, enabled,) {
|
|
|
32764
32849
|
}
|
|
32765
32850
|
function onMouseDown(event,) {
|
|
32766
32851
|
if (!enabled) return;
|
|
32767
|
-
if (event
|
|
32852
|
+
if (isCommandKeyPressed(event,)) return;
|
|
32768
32853
|
if (!canStartScrollFromElement(event.target, direction,)) {
|
|
32769
32854
|
if (phase === 4) {
|
|
32770
32855
|
phase = 0;
|
|
@@ -34852,9 +34937,9 @@ function isSuspense426Error(error,) {
|
|
|
34852
34937
|
const minifiedMessage = 'Minified React error #426';
|
|
34853
34938
|
return error instanceof Error && (error.message.includes(unminifiedMessage,) || error.message.includes(minifiedMessage,));
|
|
34854
34939
|
}
|
|
34855
|
-
var suspendPromise = /* @__PURE__ */ (() => typeof
|
|
34940
|
+
var suspendPromise = /* @__PURE__ */ (() => typeof __unframerWindow2 !== 'undefined' ? new Promise(() => {},) : null)();
|
|
34856
34941
|
function Suspend() {
|
|
34857
|
-
if (typeof
|
|
34942
|
+
if (typeof __unframerWindow2 === 'undefined' || shouldSuspenseBoundariesBeActive) {
|
|
34858
34943
|
return /* @__PURE__ */ jsx('div', {
|
|
34859
34944
|
hidden: true,
|
|
34860
34945
|
dangerouslySetInnerHTML: {
|
|
@@ -34957,7 +35042,7 @@ function ServerSideErrorBoundary({
|
|
|
34957
35042
|
children,
|
|
34958
35043
|
fallback = nullFallback,
|
|
34959
35044
|
},) {
|
|
34960
|
-
return typeof
|
|
35045
|
+
return typeof __unframerWindow2 === 'undefined'
|
|
34961
35046
|
? // On the server, Suspense fallback is activated by errors. So we use the actual Suspense,
|
|
34962
35047
|
// and render the actual error fallback if Suspense activates.
|
|
34963
35048
|
/* @__PURE__ */
|
|
@@ -35732,8 +35817,7 @@ function useReplaceNestedLinks(children, scopeId, nodeId, href, propsAddedByLink
|
|
|
35732
35817
|
if (!propsAddedByLink.href) return;
|
|
35733
35818
|
event.preventDefault();
|
|
35734
35819
|
event.stopPropagation();
|
|
35735
|
-
|
|
35736
|
-
if (isAppleDevice ? event.metaKey : event.ctrlKey) {
|
|
35820
|
+
if (isCommandKeyPressed(event,)) {
|
|
35737
35821
|
openExternalLink(propsAddedByLink.href, '', '_blank',);
|
|
35738
35822
|
return;
|
|
35739
35823
|
}
|
|
@@ -36570,7 +36654,7 @@ var GracefullyDegradingErrorBoundary = class extends Component2 {
|
|
|
36570
36654
|
};
|
|
36571
36655
|
}
|
|
36572
36656
|
componentDidCatch(error,) {
|
|
36573
|
-
|
|
36657
|
+
__unframerWindow2.__framer_hadFatalError = true;
|
|
36574
36658
|
if ('cause' in error) {
|
|
36575
36659
|
error = error.cause;
|
|
36576
36660
|
}
|
|
@@ -36643,102 +36727,6 @@ function withChildrenCanSuspend(Component18,) {
|
|
|
36643
36727
|
},);
|
|
36644
36728
|
},);
|
|
36645
36729
|
}
|
|
36646
|
-
var PRELOAD_AFTER_MS = 500;
|
|
36647
|
-
var OBSERVER_THRESHOLD = 0.9;
|
|
36648
|
-
var LOW_MEMORY_THRESHOLD = 1.7;
|
|
36649
|
-
var MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;
|
|
36650
|
-
var MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;
|
|
36651
|
-
var nodeToRoute = /* @__PURE__ */ new WeakMap();
|
|
36652
|
-
var preloadedRoutes = /* @__PURE__ */ new Set();
|
|
36653
|
-
var routeToNodesInViewport = /* @__PURE__ */ new Map();
|
|
36654
|
-
function getObserveRouteForPreloadingFn() {
|
|
36655
|
-
const connection = __unframerNavigator2.connection || __unframerNavigator2.mozConnection || __unframerNavigator2.webkitConnection || {};
|
|
36656
|
-
const lowDeviceMemory = __unframerNavigator2.deviceMemory && __unframerNavigator2.deviceMemory > LOW_MEMORY_THRESHOLD;
|
|
36657
|
-
let effectiveType, preloadDisabled, maxPreloadAmount;
|
|
36658
|
-
function updateConnection() {
|
|
36659
|
-
effectiveType = connection.effectiveType || '';
|
|
36660
|
-
preloadDisabled = connection.saveData || effectiveType.includes('2g',);
|
|
36661
|
-
maxPreloadAmount = effectiveType === '3g' || lowDeviceMemory
|
|
36662
|
-
? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK
|
|
36663
|
-
: MAX_CONCURRENT_PRELOADS_FAST_NETWORK;
|
|
36664
|
-
}
|
|
36665
|
-
connection.addEventListener?.('change', updateConnection,);
|
|
36666
|
-
updateConnection();
|
|
36667
|
-
const observer2 = new IntersectionObserver(onPreloadIntersectionChange, {
|
|
36668
|
-
threshold: OBSERVER_THRESHOLD,
|
|
36669
|
-
},);
|
|
36670
|
-
let activePreloadsAmount = 0;
|
|
36671
|
-
async function preloadTimeout(context, target,) {
|
|
36672
|
-
if (preloadDisabled) return;
|
|
36673
|
-
const {
|
|
36674
|
-
routeId,
|
|
36675
|
-
pathVariables,
|
|
36676
|
-
preload,
|
|
36677
|
-
} = context;
|
|
36678
|
-
const nodesInViewport = routeToNodesInViewport.get(routeId,);
|
|
36679
|
-
if (!nodesInViewport?.size || preloadedRoutes.has(routeId,)) return;
|
|
36680
|
-
++activePreloadsAmount;
|
|
36681
|
-
preloadedRoutes.add(routeId,);
|
|
36682
|
-
const preloadPromise = preload(routeId, pathVariables,)?.catch(() => {
|
|
36683
|
-
if (false) {
|
|
36684
|
-
throw new Error(
|
|
36685
|
-
'Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.',
|
|
36686
|
-
);
|
|
36687
|
-
}
|
|
36688
|
-
},);
|
|
36689
|
-
observer2.unobserve(target,);
|
|
36690
|
-
nodeToRoute.delete(target,);
|
|
36691
|
-
for (const node of nodesInViewport) {
|
|
36692
|
-
observer2.unobserve(node,);
|
|
36693
|
-
nodeToRoute.delete(node,);
|
|
36694
|
-
}
|
|
36695
|
-
nodesInViewport.clear();
|
|
36696
|
-
routeToNodesInViewport.delete(routeId,);
|
|
36697
|
-
await preloadPromise;
|
|
36698
|
-
--activePreloadsAmount;
|
|
36699
|
-
}
|
|
36700
|
-
function onPreloadIntersectionChange(entries,) {
|
|
36701
|
-
for (const entry of entries) {
|
|
36702
|
-
const target = entry.target;
|
|
36703
|
-
const context = nodeToRoute.get(target,);
|
|
36704
|
-
if (!context || preloadedRoutes.has(context.routeId,)) {
|
|
36705
|
-
observer2.unobserve(target,);
|
|
36706
|
-
nodeToRoute.delete(target,);
|
|
36707
|
-
continue;
|
|
36708
|
-
}
|
|
36709
|
-
const {
|
|
36710
|
-
routeId,
|
|
36711
|
-
} = context;
|
|
36712
|
-
const nodes = routeToNodesInViewport.get(routeId,);
|
|
36713
|
-
const amountOfNodesInViewport = routeToNodesInViewport.get(routeId,)?.size ?? 0;
|
|
36714
|
-
if (entry.isIntersecting) {
|
|
36715
|
-
if (activePreloadsAmount >= maxPreloadAmount) continue;
|
|
36716
|
-
if (nodes) nodes.add(target,);
|
|
36717
|
-
else routeToNodesInViewport.set(routeId, /* @__PURE__ */ new Set([target,],),);
|
|
36718
|
-
setTimeout(preloadTimeout.bind(void 0, context, target,), PRELOAD_AFTER_MS,);
|
|
36719
|
-
} else {
|
|
36720
|
-
if (nodes) nodes.delete(target,);
|
|
36721
|
-
if (amountOfNodesInViewport <= 1) routeToNodesInViewport.delete(routeId,);
|
|
36722
|
-
}
|
|
36723
|
-
}
|
|
36724
|
-
}
|
|
36725
|
-
return (node, preload, routeId, pathVariables,) => {
|
|
36726
|
-
if (preloadedRoutes.has(routeId,)) return;
|
|
36727
|
-
nodeToRoute.set(node, {
|
|
36728
|
-
routeId,
|
|
36729
|
-
pathVariables,
|
|
36730
|
-
preload,
|
|
36731
|
-
},);
|
|
36732
|
-
observer2.observe(node,);
|
|
36733
|
-
return () => {
|
|
36734
|
-
nodeToRoute.delete(node,);
|
|
36735
|
-
observer2.unobserve(node,);
|
|
36736
|
-
};
|
|
36737
|
-
};
|
|
36738
|
-
}
|
|
36739
|
-
var observeRouteForPreloading =
|
|
36740
|
-
// this also guards `window`
|
|
36741
|
-
!shouldPreloadBasedOnUA || typeof IntersectionObserver === 'undefined' ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn();
|
|
36742
36730
|
function findMatchingRouteAttributesForWebPageLink(router, currentRoute, pageLink, activeLocale, resolvedSlugs, implicitPathVariables,) {
|
|
36743
36731
|
const {
|
|
36744
36732
|
webPageId,
|
|
@@ -36774,10 +36762,16 @@ function findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVa
|
|
|
36774
36762
|
const {
|
|
36775
36763
|
routeId,
|
|
36776
36764
|
pathVariables,
|
|
36765
|
+
localeId,
|
|
36777
36766
|
} = inferInitialRouteFromPath(router.routes, pathname, void 0, locales,);
|
|
36778
36767
|
const route = router.getRoute(routeId,);
|
|
36779
36768
|
if (route) {
|
|
36780
36769
|
const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables,);
|
|
36770
|
+
const locale = localeId
|
|
36771
|
+
? locales?.find(({
|
|
36772
|
+
id: id3,
|
|
36773
|
+
},) => id3 === localeId)
|
|
36774
|
+
: void 0;
|
|
36781
36775
|
return {
|
|
36782
36776
|
routeId,
|
|
36783
36777
|
route,
|
|
@@ -36786,6 +36780,7 @@ function findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVa
|
|
|
36786
36780
|
// should be resolved by getHashForRoute.
|
|
36787
36781
|
elementId: hash2,
|
|
36788
36782
|
pathVariables: combinedPathVariables,
|
|
36783
|
+
locale,
|
|
36789
36784
|
};
|
|
36790
36785
|
}
|
|
36791
36786
|
} catch {}
|
|
@@ -36830,6 +36825,7 @@ function getRouteAttributes(
|
|
|
36830
36825
|
href: resolvedHref,
|
|
36831
36826
|
elementId: resolvedHash,
|
|
36832
36827
|
pathVariables: combinedPathVariables,
|
|
36828
|
+
locale: activeLocale ?? void 0,
|
|
36833
36829
|
};
|
|
36834
36830
|
}
|
|
36835
36831
|
var pathVariablesRegExp2 = /:([a-z]\w*)/gi;
|
|
@@ -36865,6 +36861,98 @@ function useLinkMatchesRoute(link,) {
|
|
|
36865
36861
|
const pageLink = isString(link,) ? linkFromFramerPageLink(link,) : link;
|
|
36866
36862
|
return isLinkToWebPage(pageLink,) ? linkMatchesRoute(route, pageLink, contextPathVariables,) : false;
|
|
36867
36863
|
}
|
|
36864
|
+
var PRELOAD_AFTER_MS = 500;
|
|
36865
|
+
var OBSERVER_THRESHOLD = 0.9;
|
|
36866
|
+
var LOW_MEMORY_THRESHOLD = 1.7;
|
|
36867
|
+
var MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;
|
|
36868
|
+
var MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;
|
|
36869
|
+
var nodeToRoute = /* @__PURE__ */ new WeakMap();
|
|
36870
|
+
var preloadedRoutes = /* @__PURE__ */ new Set();
|
|
36871
|
+
var routeToNodesInViewport = /* @__PURE__ */ new Map();
|
|
36872
|
+
function getObserveRouteForPreloadingFn() {
|
|
36873
|
+
const connection = __unframerNavigator2.connection || __unframerNavigator2.mozConnection || __unframerNavigator2.webkitConnection || {};
|
|
36874
|
+
const lowDeviceMemory = __unframerNavigator2.deviceMemory && __unframerNavigator2.deviceMemory > LOW_MEMORY_THRESHOLD;
|
|
36875
|
+
let effectiveType, preloadDisabled, maxPreloadAmount;
|
|
36876
|
+
function updateConnection() {
|
|
36877
|
+
effectiveType = connection.effectiveType || '';
|
|
36878
|
+
preloadDisabled = connection.saveData || effectiveType.includes('2g',);
|
|
36879
|
+
maxPreloadAmount = effectiveType === '3g' || lowDeviceMemory
|
|
36880
|
+
? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK
|
|
36881
|
+
: MAX_CONCURRENT_PRELOADS_FAST_NETWORK;
|
|
36882
|
+
}
|
|
36883
|
+
connection.addEventListener?.('change', updateConnection,);
|
|
36884
|
+
updateConnection();
|
|
36885
|
+
const observer2 = new IntersectionObserver(onPreloadIntersectionChange, {
|
|
36886
|
+
threshold: OBSERVER_THRESHOLD,
|
|
36887
|
+
},);
|
|
36888
|
+
let activePreloadsAmount = 0;
|
|
36889
|
+
async function preloadTimeout(context, target,) {
|
|
36890
|
+
if (preloadDisabled) return;
|
|
36891
|
+
const {
|
|
36892
|
+
id: id3,
|
|
36893
|
+
preload,
|
|
36894
|
+
} = context;
|
|
36895
|
+
const nodesInViewport = routeToNodesInViewport.get(id3,);
|
|
36896
|
+
if (!nodesInViewport?.size || preloadedRoutes.has(id3,)) return;
|
|
36897
|
+
++activePreloadsAmount;
|
|
36898
|
+
preloadedRoutes.add(id3,);
|
|
36899
|
+
const preloadPromise = preload()?.catch(() => {
|
|
36900
|
+
if (false) {
|
|
36901
|
+
throw new Error(
|
|
36902
|
+
'Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.',
|
|
36903
|
+
);
|
|
36904
|
+
}
|
|
36905
|
+
},);
|
|
36906
|
+
observer2.unobserve(target,);
|
|
36907
|
+
nodeToRoute.delete(target,);
|
|
36908
|
+
for (const node of nodesInViewport) {
|
|
36909
|
+
observer2.unobserve(node,);
|
|
36910
|
+
nodeToRoute.delete(node,);
|
|
36911
|
+
}
|
|
36912
|
+
nodesInViewport.clear();
|
|
36913
|
+
routeToNodesInViewport.delete(id3,);
|
|
36914
|
+
await preloadPromise;
|
|
36915
|
+
--activePreloadsAmount;
|
|
36916
|
+
}
|
|
36917
|
+
function onPreloadIntersectionChange(entries,) {
|
|
36918
|
+
for (const entry of entries) {
|
|
36919
|
+
const target = entry.target;
|
|
36920
|
+
const context = nodeToRoute.get(target,);
|
|
36921
|
+
if (!context || preloadedRoutes.has(context.id,)) {
|
|
36922
|
+
observer2.unobserve(target,);
|
|
36923
|
+
nodeToRoute.delete(target,);
|
|
36924
|
+
continue;
|
|
36925
|
+
}
|
|
36926
|
+
const preloadId = context.id;
|
|
36927
|
+
const nodes = routeToNodesInViewport.get(preloadId,);
|
|
36928
|
+
const amountOfNodesInViewport = routeToNodesInViewport.get(preloadId,)?.size ?? 0;
|
|
36929
|
+
if (entry.isIntersecting) {
|
|
36930
|
+
if (activePreloadsAmount >= maxPreloadAmount) continue;
|
|
36931
|
+
if (nodes) nodes.add(target,);
|
|
36932
|
+
else routeToNodesInViewport.set(preloadId, /* @__PURE__ */ new Set([target,],),);
|
|
36933
|
+
setTimeout(preloadTimeout, PRELOAD_AFTER_MS, context, target,);
|
|
36934
|
+
} else {
|
|
36935
|
+
if (nodes) nodes.delete(target,);
|
|
36936
|
+
if (amountOfNodesInViewport <= 1) routeToNodesInViewport.delete(preloadId,);
|
|
36937
|
+
}
|
|
36938
|
+
}
|
|
36939
|
+
}
|
|
36940
|
+
return (node, preload, id3,) => {
|
|
36941
|
+
if (preloadedRoutes.has(id3,)) return;
|
|
36942
|
+
nodeToRoute.set(node, {
|
|
36943
|
+
id: id3,
|
|
36944
|
+
preload,
|
|
36945
|
+
},);
|
|
36946
|
+
observer2.observe(node,);
|
|
36947
|
+
return () => {
|
|
36948
|
+
nodeToRoute.delete(node,);
|
|
36949
|
+
observer2.unobserve(node,);
|
|
36950
|
+
};
|
|
36951
|
+
};
|
|
36952
|
+
}
|
|
36953
|
+
var observeRouteForPreloading =
|
|
36954
|
+
// this also guards `window`
|
|
36955
|
+
!shouldPreloadBasedOnUA || typeof IntersectionObserver === 'undefined' ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn();
|
|
36868
36956
|
var AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {
|
|
36869
36957
|
AnchorLinkTarget2['_blank'] = '_blank';
|
|
36870
36958
|
AnchorLinkTarget2['_self'] = '_self';
|
|
@@ -37032,15 +37120,15 @@ function makeUrlAbsolute(href,) {
|
|
|
37032
37120
|
}
|
|
37033
37121
|
}
|
|
37034
37122
|
function performNavigation(router, routeId, preload, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate,) {
|
|
37035
|
-
void preload(
|
|
37123
|
+
void preload();
|
|
37036
37124
|
router.navigate?.(routeId, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate,);
|
|
37037
37125
|
}
|
|
37038
|
-
function createOnClickLinkHandler(
|
|
37126
|
+
function createOnClickLinkHandler(href, trackLinkClick, navigate,) {
|
|
37039
37127
|
return async (event) => {
|
|
37040
|
-
const
|
|
37128
|
+
const usedCommandKey = isCommandKeyPressed(event,);
|
|
37041
37129
|
const anchorElement = findAnchorElement(event.target,);
|
|
37042
37130
|
const isExternalLink = !anchorElement || anchorElement.getAttribute('target',) === '_blank';
|
|
37043
|
-
const shouldPerformNavigation = !
|
|
37131
|
+
const shouldPerformNavigation = !usedCommandKey && !isExternalLink;
|
|
37044
37132
|
const track = () => void trackLinkClick(href,);
|
|
37045
37133
|
if (!shouldPerformNavigation) {
|
|
37046
37134
|
await yieldToMain({
|
|
@@ -37052,7 +37140,7 @@ function createOnClickLinkHandler(router, routeId, href, trackLinkClick, preload
|
|
|
37052
37140
|
return;
|
|
37053
37141
|
}
|
|
37054
37142
|
event.preventDefault();
|
|
37055
|
-
|
|
37143
|
+
navigate(track,);
|
|
37056
37144
|
};
|
|
37057
37145
|
}
|
|
37058
37146
|
function propsForRoutePath(href, router, currentRoute, linkOptions, preload, localeId, locales, implicitPathVariables,) {
|
|
@@ -37064,6 +37152,7 @@ function propsForRoutePath(href, router, currentRoute, linkOptions, preload, loc
|
|
|
37064
37152
|
route,
|
|
37065
37153
|
elementId,
|
|
37066
37154
|
pathVariables,
|
|
37155
|
+
locale,
|
|
37067
37156
|
} = matchedRoute;
|
|
37068
37157
|
if (!route) return propsForLink(href, linkOptions,);
|
|
37069
37158
|
const path = getPathForRoute(route, {
|
|
@@ -37081,26 +37170,38 @@ function propsForRoutePath(href, router, currentRoute, linkOptions, preload, loc
|
|
|
37081
37170
|
localeId,
|
|
37082
37171
|
},);
|
|
37083
37172
|
const anchorTarget = getTargetAttrValue(linkOptions.openInNewTab, true,);
|
|
37084
|
-
|
|
37085
|
-
|
|
37086
|
-
href: path,
|
|
37087
|
-
target: anchorTarget,
|
|
37088
|
-
onClick: createOnClickLinkHandler(
|
|
37173
|
+
const navigate = (beforeUrlUpdate) =>
|
|
37174
|
+
performNavigation(
|
|
37089
37175
|
router,
|
|
37090
37176
|
routeId,
|
|
37091
|
-
|
|
37092
|
-
|
|
37093
|
-
|
|
37177
|
+
() =>
|
|
37178
|
+
preload(routeId, {
|
|
37179
|
+
pathVariables,
|
|
37180
|
+
locale,
|
|
37181
|
+
}, false,),
|
|
37094
37182
|
elementId,
|
|
37095
37183
|
pathVariables,
|
|
37096
37184
|
linkOptions.smoothScroll,
|
|
37097
|
-
|
|
37098
|
-
|
|
37185
|
+
beforeUrlUpdate,
|
|
37186
|
+
);
|
|
37187
|
+
return {
|
|
37188
|
+
href: path,
|
|
37189
|
+
target: anchorTarget,
|
|
37190
|
+
onClick: createOnClickLinkHandler(path, linkOptions.trackLinkClick, navigate,),
|
|
37191
|
+
navigate,
|
|
37099
37192
|
'data-framer-page-link-current': currentRoute && linkMatchesRoute(currentRoute, {
|
|
37100
37193
|
webPageId: routeId,
|
|
37101
37194
|
hash: elementId,
|
|
37102
37195
|
pathVariables,
|
|
37103
37196
|
}, implicitPathVariables,) || void 0,
|
|
37197
|
+
preload: () =>
|
|
37198
|
+
preload(routeId, {
|
|
37199
|
+
pathVariables,
|
|
37200
|
+
locale,
|
|
37201
|
+
},),
|
|
37202
|
+
_routeId: routeId,
|
|
37203
|
+
_pathVariables: pathVariables,
|
|
37204
|
+
_locale: locale,
|
|
37104
37205
|
};
|
|
37105
37206
|
}
|
|
37106
37207
|
var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(function Link2({
|
|
@@ -37125,6 +37226,7 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
|
|
|
37125
37226
|
} = useLocaleInfo();
|
|
37126
37227
|
const resolveSlugsWithSuspense2 = useResolveSlugsWithSuspense();
|
|
37127
37228
|
const preload = usePreloadRoute();
|
|
37229
|
+
const isOnFramerCanvas = useIsOnFramerCanvas();
|
|
37128
37230
|
const trackLinkClick = useTrackLinkClick({
|
|
37129
37231
|
nodeId,
|
|
37130
37232
|
clickTrackingId,
|
|
@@ -37171,19 +37273,41 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
|
|
|
37171
37273
|
implicitPathVariables,
|
|
37172
37274
|
);
|
|
37173
37275
|
const {
|
|
37174
|
-
routeId
|
|
37276
|
+
routeId,
|
|
37175
37277
|
href: resolvedHref,
|
|
37176
37278
|
elementId,
|
|
37177
37279
|
pathVariables,
|
|
37280
|
+
locale,
|
|
37178
37281
|
} = maybeRouteAttributes;
|
|
37179
37282
|
const anchorTarget = getTargetAttrValue(openInNewTab, true,);
|
|
37283
|
+
const navigate2 = (beforeUrlUpdate) =>
|
|
37284
|
+
performNavigation(
|
|
37285
|
+
router,
|
|
37286
|
+
routeId,
|
|
37287
|
+
() =>
|
|
37288
|
+
preload(routeId, {
|
|
37289
|
+
pathVariables,
|
|
37290
|
+
locale,
|
|
37291
|
+
}, false,),
|
|
37292
|
+
elementId,
|
|
37293
|
+
pathVariables,
|
|
37294
|
+
smoothScroll,
|
|
37295
|
+
beforeUrlUpdate,
|
|
37296
|
+
);
|
|
37180
37297
|
return {
|
|
37181
|
-
routeId: routeId2,
|
|
37182
37298
|
href: resolvedHref,
|
|
37183
37299
|
target: anchorTarget,
|
|
37184
|
-
onClick: createOnClickLinkHandler(
|
|
37185
|
-
navigate: () => performNavigation(router, routeId2, preload, elementId, pathVariables, smoothScroll,),
|
|
37300
|
+
onClick: createOnClickLinkHandler(resolvedHref, trackLinkClick, navigate2,),
|
|
37186
37301
|
'data-framer-page-link-current': currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables,) || void 0,
|
|
37302
|
+
navigate: navigate2,
|
|
37303
|
+
preload: () =>
|
|
37304
|
+
preload(routeId, {
|
|
37305
|
+
pathVariables,
|
|
37306
|
+
locale,
|
|
37307
|
+
},),
|
|
37308
|
+
_routeId: routeId,
|
|
37309
|
+
_pathVariables: pathVariables,
|
|
37310
|
+
_locale: locale,
|
|
37187
37311
|
};
|
|
37188
37312
|
}, [
|
|
37189
37313
|
href,
|
|
@@ -37204,22 +37328,22 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
|
|
|
37204
37328
|
const observerRef = useObserverRef(hasRef ? children.ref : void 0,);
|
|
37205
37329
|
const {
|
|
37206
37330
|
navigate,
|
|
37207
|
-
|
|
37208
|
-
|
|
37331
|
+
preload: preloadFn,
|
|
37332
|
+
_routeId,
|
|
37333
|
+
_pathVariables,
|
|
37334
|
+
_locale,
|
|
37335
|
+
...restPropsAddedByLink
|
|
37209
37336
|
} = propsAddedByLink;
|
|
37210
37337
|
useRefEffect(observerRef, (node) => {
|
|
37211
|
-
if (node === null || !
|
|
37212
|
-
|
|
37213
|
-
|
|
37214
|
-
const pathVariables = isString(pageLink,) ? void 0 : pageLink.pathVariables;
|
|
37215
|
-
return observeRouteForPreloading?.(node, preload, routeId, pathVariables,);
|
|
37216
|
-
}, [href, preload, routeId,],);
|
|
37338
|
+
if (node === null || !_routeId || !preloadFn || isOnFramerCanvas) return;
|
|
37339
|
+
return observeRouteForPreloading?.(node, preloadFn, `${_routeId}:${_locale?.id}:${JSON.stringify(_pathVariables,)}`,);
|
|
37340
|
+
}, [preloadFn, _routeId, _pathVariables, _locale,],);
|
|
37217
37341
|
const isInternalNavigation = Boolean(navigate,);
|
|
37218
37342
|
const clone = useCloneChildrenWithPropsAndRef(forwardedRef,);
|
|
37219
37343
|
const replacedChildren = clone.cloneAsArray(children, (childProps) =>
|
|
37220
37344
|
cloneChildPropsWithAggregatedEvents(childProps, {
|
|
37221
37345
|
...restProps,
|
|
37222
|
-
...rebindEventHandlersIfNeeded(
|
|
37346
|
+
...rebindEventHandlersIfNeeded(restPropsAddedByLink, motionChild, isInternalNavigation,),
|
|
37223
37347
|
}, observerRef,),);
|
|
37224
37348
|
return useReplaceNestedLinks(replacedChildren, scopeId, nodeId, href, propsAddedByLink, observerRef,);
|
|
37225
37349
|
},),);
|
|
@@ -38329,9 +38453,9 @@ var useSendPageView = (
|
|
|
38329
38453
|
sendTrackingEvent('published_site_pageview', eventData, 'eager',);
|
|
38330
38454
|
}
|
|
38331
38455
|
};
|
|
38332
|
-
|
|
38456
|
+
__unframerWindow2.addEventListener('pageshow', listener,);
|
|
38333
38457
|
return () => {
|
|
38334
|
-
|
|
38458
|
+
__unframerWindow2.removeEventListener('pageshow', listener,);
|
|
38335
38459
|
};
|
|
38336
38460
|
}, [
|
|
38337
38461
|
currentRoute,
|
|
@@ -38356,7 +38480,7 @@ function updateScrollPosition(hash2, smoothScroll, isHistoryTransition,) {
|
|
|
38356
38480
|
return;
|
|
38357
38481
|
}
|
|
38358
38482
|
if (isHistoryTransition) return;
|
|
38359
|
-
|
|
38483
|
+
__unframerWindow2.scrollTo(0, 0,);
|
|
38360
38484
|
}
|
|
38361
38485
|
function useScheduleRenderSideEffects(dep,) {
|
|
38362
38486
|
const actions = useRef([],);
|
|
@@ -38403,7 +38527,7 @@ function useNavigationTransition() {
|
|
|
38403
38527
|
startNativeSpinner(navigationPromise, updateURL, controller,);
|
|
38404
38528
|
await nextRender.promise;
|
|
38405
38529
|
if (signal?.aborted) return;
|
|
38406
|
-
const navigationTransition =
|
|
38530
|
+
const navigationTransition = __unframerWindow2.navigation?.transition;
|
|
38407
38531
|
resolveNavigationPromise();
|
|
38408
38532
|
try {
|
|
38409
38533
|
await navigationTransition?.finished;
|
|
@@ -38513,7 +38637,9 @@ function Router({
|
|
|
38513
38637
|
preserveQueryParams,
|
|
38514
38638
|
},);
|
|
38515
38639
|
if (!localeResult) return;
|
|
38516
|
-
const currentStatePaginationInfo = isHistoryState(
|
|
38640
|
+
const currentStatePaginationInfo = isHistoryState(__unframerWindow2.history.state,)
|
|
38641
|
+
? __unframerWindow2.history.state.paginationInfo
|
|
38642
|
+
: void 0;
|
|
38517
38643
|
const currentPath = localeResult.path;
|
|
38518
38644
|
isInitialNavigationRef.current = false;
|
|
38519
38645
|
currentPathVariablesRef.current = localeResult.pathVariables;
|
|
@@ -38626,7 +38752,7 @@ function Router({
|
|
|
38626
38752
|
) {
|
|
38627
38753
|
nextRender.ignore?.();
|
|
38628
38754
|
const route = routes[routeId];
|
|
38629
|
-
if (
|
|
38755
|
+
if (__unframerWindow2.history.state?.hash !== hash2 && !disableHistory && route) {
|
|
38630
38756
|
executeBeforeUrlUpdate();
|
|
38631
38757
|
await pushRouteState(routeId, route, {
|
|
38632
38758
|
currentRoutePath: route.path,
|
|
@@ -44348,7 +44474,11 @@ function getWhereExpressionFromPathVariables(pathVariables, collection,) {
|
|
|
44348
44474
|
}));
|
|
44349
44475
|
}
|
|
44350
44476
|
var ALL_ELEMENTS_VALUE = '__all__';
|
|
44477
|
+
var BOOLEAN_TRUE_VALUE = '__true__';
|
|
44478
|
+
var BOOLEAN_FALSE_VALUE = '__false__';
|
|
44351
44479
|
var variableBindingHooks = {
|
|
44480
|
+
['boolean'/* Boolean */
|
|
44481
|
+
]: useFormSelectBooleanVariableBinding,
|
|
44352
44482
|
['collectionreference'/* CollectionReference */
|
|
44353
44483
|
]: useFormSelectCollectionVariableBinding,
|
|
44354
44484
|
};
|
|
@@ -44356,6 +44486,51 @@ function useFormSelectVariableBinding(options,) {
|
|
|
44356
44486
|
const variableTypeRef = useRef(options.variableType,);
|
|
44357
44487
|
return variableBindingHooks[variableTypeRef.current](options,);
|
|
44358
44488
|
}
|
|
44489
|
+
function useFormSelectBooleanVariableBinding({
|
|
44490
|
+
allItemsLabel,
|
|
44491
|
+
booleanTrueLabel,
|
|
44492
|
+
booleanFalseLabel,
|
|
44493
|
+
isOptional,
|
|
44494
|
+
setValue,
|
|
44495
|
+
value,
|
|
44496
|
+
},) {
|
|
44497
|
+
const selectValue = useMemo(() => {
|
|
44498
|
+
if (value === true) return BOOLEAN_TRUE_VALUE;
|
|
44499
|
+
if (value === false) return BOOLEAN_FALSE_VALUE;
|
|
44500
|
+
return isOptional ? ALL_ELEMENTS_VALUE : BOOLEAN_TRUE_VALUE;
|
|
44501
|
+
}, [isOptional, value,],);
|
|
44502
|
+
const selectOptions = useMemo(() =>
|
|
44503
|
+
withAllOption(
|
|
44504
|
+
[{
|
|
44505
|
+
disabled: false,
|
|
44506
|
+
title: booleanTrueLabel,
|
|
44507
|
+
type: 'option',
|
|
44508
|
+
value: BOOLEAN_TRUE_VALUE,
|
|
44509
|
+
}, {
|
|
44510
|
+
disabled: false,
|
|
44511
|
+
title: booleanFalseLabel,
|
|
44512
|
+
type: 'option',
|
|
44513
|
+
value: BOOLEAN_FALSE_VALUE,
|
|
44514
|
+
},],
|
|
44515
|
+
isOptional,
|
|
44516
|
+
allItemsLabel,
|
|
44517
|
+
false,
|
|
44518
|
+
), [allItemsLabel, booleanTrueLabel, booleanFalseLabel, isOptional,],);
|
|
44519
|
+
const onChange = useCallback2((event) => {
|
|
44520
|
+
if (!(event.target instanceof HTMLSelectElement)) return;
|
|
44521
|
+
const selectedValue = event.target.value;
|
|
44522
|
+
startTransition2(() => {
|
|
44523
|
+
if (selectedValue === ALL_ELEMENTS_VALUE) {
|
|
44524
|
+
setValue(void 0,);
|
|
44525
|
+
} else if (selectedValue === BOOLEAN_TRUE_VALUE) {
|
|
44526
|
+
setValue(true,);
|
|
44527
|
+
} else if (selectedValue === BOOLEAN_FALSE_VALUE) {
|
|
44528
|
+
setValue(false,);
|
|
44529
|
+
}
|
|
44530
|
+
},);
|
|
44531
|
+
}, [setValue,],);
|
|
44532
|
+
return [selectValue, selectOptions, onChange,];
|
|
44533
|
+
}
|
|
44359
44534
|
function useFormSelectCollectionVariableBinding({
|
|
44360
44535
|
allItemsLabel,
|
|
44361
44536
|
collectionData,
|
|
@@ -44363,26 +44538,20 @@ function useFormSelectCollectionVariableBinding({
|
|
|
44363
44538
|
slugId,
|
|
44364
44539
|
titleId,
|
|
44365
44540
|
setValue,
|
|
44366
|
-
value,
|
|
44541
|
+
value: rawValue,
|
|
44367
44542
|
},) {
|
|
44368
44543
|
const selectOptions = useCollectionSelectOptions({
|
|
44369
44544
|
collectionData,
|
|
44370
44545
|
slugId,
|
|
44371
44546
|
titleId,
|
|
44372
44547
|
},);
|
|
44548
|
+
const value = isBoolean(rawValue,) ? void 0 : rawValue;
|
|
44373
44549
|
const selectValue = value === void 0 ? ALL_ELEMENTS_VALUE : value;
|
|
44374
|
-
const selectOptionsIncludingOptional = useMemo(() =>
|
|
44375
|
-
|
|
44376
|
-
|
|
44377
|
-
|
|
44378
|
-
|
|
44379
|
-
value: ALL_ELEMENTS_VALUE,
|
|
44380
|
-
};
|
|
44381
|
-
if (!selectOptions || selectOptions.length === 0) return [allOption,];
|
|
44382
|
-
return [allOption, {
|
|
44383
|
-
type: 'divider',
|
|
44384
|
-
}, ...selectOptions,];
|
|
44385
|
-
}, [allItemsLabel, isOptional, selectOptions,],);
|
|
44550
|
+
const selectOptionsIncludingOptional = useMemo(() => withAllOption(selectOptions, isOptional, allItemsLabel,), [
|
|
44551
|
+
allItemsLabel,
|
|
44552
|
+
isOptional,
|
|
44553
|
+
selectOptions,
|
|
44554
|
+
],);
|
|
44386
44555
|
const onChange = useCallback2((event) => {
|
|
44387
44556
|
if (!(event.target instanceof HTMLSelectElement)) return;
|
|
44388
44557
|
const selectedValue = event.target.value;
|
|
@@ -44440,6 +44609,21 @@ function useCollectionSelectOptions({
|
|
|
44440
44609
|
},);
|
|
44441
44610
|
}, [records, titleId, slugId,],);
|
|
44442
44611
|
}
|
|
44612
|
+
function withAllOption(options, isOptional, allItemsLabel, includeDivider = true,) {
|
|
44613
|
+
if (isOptional !== true || !allItemsLabel) return options;
|
|
44614
|
+
const allOption = {
|
|
44615
|
+
title: allItemsLabel,
|
|
44616
|
+
type: 'option',
|
|
44617
|
+
value: ALL_ELEMENTS_VALUE,
|
|
44618
|
+
};
|
|
44619
|
+
if (!options || options.length === 0) return [allOption,];
|
|
44620
|
+
if (includeDivider) {
|
|
44621
|
+
return [allOption, {
|
|
44622
|
+
type: 'divider',
|
|
44623
|
+
}, ...options,];
|
|
44624
|
+
}
|
|
44625
|
+
return [allOption, ...options,];
|
|
44626
|
+
}
|
|
44443
44627
|
function rejectPending(pendingTimers, pendingPromises,) {
|
|
44444
44628
|
pendingTimers.forEach((t) => clearTimeout(t,));
|
|
44445
44629
|
pendingTimers.clear();
|
|
@@ -45817,7 +46001,7 @@ var ltrStrategy = (insetProp, lengthProp, viewportLengthProp, paddingStartProp,
|
|
|
45817
46001
|
var xStrategy = /* @__PURE__ */ (() => ltrStrategy('offsetLeft', 'offsetWidth', 'innerWidth', 'paddingLeft', 'right',))();
|
|
45818
46002
|
var yStrategy = /* @__PURE__ */ (() => ltrStrategy('offsetTop', 'offsetHeight', 'innerHeight', 'paddingTop', 'bottom',))();
|
|
45819
46003
|
function offsetRight(element, container,) {
|
|
45820
|
-
const containerWidth = container?.offsetWidth ??
|
|
46004
|
+
const containerWidth = container?.offsetWidth ?? __unframerWindow2.innerWidth;
|
|
45821
46005
|
return containerWidth - (element.offsetLeft + element.offsetWidth);
|
|
45822
46006
|
}
|
|
45823
46007
|
var xRtlStrategy = /* @__PURE__ */ (() => ({
|
|
@@ -46019,8 +46203,8 @@ function useFocusNavigation(containerRef, axis, focusOffset, offset, setHasFocus
|
|
|
46019
46203
|
setHasFocus(true,);
|
|
46020
46204
|
isFocusTrapped.current = true;
|
|
46021
46205
|
applyFocusOffset();
|
|
46022
|
-
|
|
46023
|
-
|
|
46206
|
+
__unframerWindow2.addEventListener('focus', detectTrapEnd, eventOptionsWithCapture,);
|
|
46207
|
+
__unframerWindow2.addEventListener('blur', detectTrapEnd, eventOptionsWithCapture,);
|
|
46024
46208
|
container.addEventListener('keydown', handleFocusNavigation, eventOptions,);
|
|
46025
46209
|
};
|
|
46026
46210
|
const detectTrapEnd = (event) => {
|
|
@@ -46033,8 +46217,8 @@ function useFocusNavigation(containerRef, axis, focusOffset, offset, setHasFocus
|
|
|
46033
46217
|
isFocusTrapped.current = false;
|
|
46034
46218
|
setHasFocus(false,);
|
|
46035
46219
|
offset.set(focusOffset.get(),);
|
|
46036
|
-
|
|
46037
|
-
|
|
46220
|
+
__unframerWindow2.removeEventListener('focus', detectTrapEnd,);
|
|
46221
|
+
__unframerWindow2.removeEventListener('blur', detectTrapEnd,);
|
|
46038
46222
|
container.removeEventListener('keydown', handleFocusNavigation,);
|
|
46039
46223
|
};
|
|
46040
46224
|
const handleFocus = (event) => {
|
|
@@ -46050,13 +46234,13 @@ function useFocusNavigation(containerRef, axis, focusOffset, offset, setHasFocus
|
|
|
46050
46234
|
if (detectionEnabled) return;
|
|
46051
46235
|
detectionEnabled = true;
|
|
46052
46236
|
container.addEventListener('focus', handleFocus, eventOptionsWithCapture,);
|
|
46053
|
-
|
|
46237
|
+
__unframerWindow2.addEventListener('pointermove', handlePointerMove, eventOptions,);
|
|
46054
46238
|
};
|
|
46055
46239
|
const handlePointerMove = () => {
|
|
46056
46240
|
if (!detectionEnabled) return;
|
|
46057
46241
|
detectionEnabled = false;
|
|
46058
46242
|
container.removeEventListener('focus', handleFocus, true,);
|
|
46059
|
-
|
|
46243
|
+
__unframerWindow2.removeEventListener('pointermove', handlePointerMove, eventOptions,);
|
|
46060
46244
|
};
|
|
46061
46245
|
const handleAriaHiddenClicks = (event) => {
|
|
46062
46246
|
const target = event.target;
|
|
@@ -46065,7 +46249,7 @@ function useFocusNavigation(containerRef, axis, focusOffset, offset, setHasFocus
|
|
|
46065
46249
|
ariaHiddenAncestor.removeAttribute('aria-hidden',);
|
|
46066
46250
|
}
|
|
46067
46251
|
};
|
|
46068
|
-
|
|
46252
|
+
__unframerWindow2.addEventListener('keydown', detectFocusTrapEnable, eventOptions,);
|
|
46069
46253
|
container.addEventListener('pointerdown', handleAriaHiddenClicks, eventOptions,);
|
|
46070
46254
|
return () => {
|
|
46071
46255
|
abortController.abort();
|
|
@@ -46188,7 +46372,7 @@ function TickerComponent({
|
|
|
46188
46372
|
const isReducedMotion = useReducedMotion();
|
|
46189
46373
|
const updateMeasurements = () => {
|
|
46190
46374
|
if (!internalContainerRef.current || !listRef.current) return;
|
|
46191
|
-
const direction =
|
|
46375
|
+
const direction = __unframerWindow2.getComputedStyle(internalContainerRef.current,).direction;
|
|
46192
46376
|
const {
|
|
46193
46377
|
measureItem,
|
|
46194
46378
|
lengthProp,
|
|
@@ -46211,13 +46395,13 @@ function TickerComponent({
|
|
|
46211
46395
|
hasItemSizeChanged = true;
|
|
46212
46396
|
}
|
|
46213
46397
|
}
|
|
46214
|
-
const containerLength = Math.min(container[lengthProp],
|
|
46215
|
-
let visibleLength = overflow ?
|
|
46398
|
+
const containerLength = Math.min(container[lengthProp], __unframerWindow2[viewportLengthProp],);
|
|
46399
|
+
let visibleLength = overflow ? __unframerWindow2[viewportLengthProp] : containerLength;
|
|
46216
46400
|
if (safeMargin > 0) {
|
|
46217
46401
|
visibleLength += safeMargin * 2;
|
|
46218
46402
|
}
|
|
46219
46403
|
const totalItemLength = calcTotalItemLength(itemPositions,);
|
|
46220
|
-
const computedContainerStyle =
|
|
46404
|
+
const computedContainerStyle = __unframerWindow2.getComputedStyle(container,);
|
|
46221
46405
|
const containerPaddingStart = parseInt(computedContainerStyle[paddingStartProp] ?? 0,);
|
|
46222
46406
|
const containerPaddingEnd = parseInt(computedContainerStyle[paddingEndProp] ?? 0,);
|
|
46223
46407
|
const inset2 = overflow ? getCumulativeInset(allItems[0],) : containerPaddingStart;
|
|
@@ -47778,22 +47962,22 @@ var MapWithHash = class extends Map {
|
|
|
47778
47962
|
};
|
|
47779
47963
|
var cachedServiceMap;
|
|
47780
47964
|
function getServiceMap() {
|
|
47781
|
-
if (typeof
|
|
47965
|
+
if (typeof __unframerWindow2 === 'undefined') return {};
|
|
47782
47966
|
if (cachedServiceMap) return cachedServiceMap;
|
|
47783
47967
|
cachedServiceMap = extractServiceMap();
|
|
47784
47968
|
return cachedServiceMap;
|
|
47785
47969
|
}
|
|
47786
47970
|
function extractServiceMap() {
|
|
47787
|
-
const location =
|
|
47788
|
-
let services =
|
|
47971
|
+
const location = __unframerWindow2.location;
|
|
47972
|
+
let services = __unframerWindow2?.bootstrap?.services;
|
|
47789
47973
|
if (services) {
|
|
47790
47974
|
return services;
|
|
47791
47975
|
}
|
|
47792
47976
|
let topOrigin;
|
|
47793
47977
|
try {
|
|
47794
|
-
const topWindow =
|
|
47978
|
+
const topWindow = __unframerWindow2.top;
|
|
47795
47979
|
topOrigin = topWindow.location.origin;
|
|
47796
|
-
services =
|
|
47980
|
+
services = __unframerWindow2.top?.bootstrap?.services;
|
|
47797
47981
|
if (services) {
|
|
47798
47982
|
return services;
|
|
47799
47983
|
}
|
|
@@ -48468,11 +48652,11 @@ function getAssetOwnerType(asset,) {
|
|
|
48468
48652
|
async function loadFontsWithOpenType(source,) {
|
|
48469
48653
|
switch (source) {
|
|
48470
48654
|
case 'google': {
|
|
48471
|
-
const supportedFonts = await import('./framer-chunks/google-
|
|
48655
|
+
const supportedFonts = await import('./framer-chunks/google-VQ4ZP4WR-C2T2J24Z.js');
|
|
48472
48656
|
return supportedFonts.default;
|
|
48473
48657
|
}
|
|
48474
48658
|
case 'fontshare': {
|
|
48475
|
-
const supportedFonts = await import('./framer-chunks/fontshare-
|
|
48659
|
+
const supportedFonts = await import('./framer-chunks/fontshare-Q7VOJ3QT-LXRXXTSM.js');
|
|
48476
48660
|
return supportedFonts.default;
|
|
48477
48661
|
}
|
|
48478
48662
|
default:
|
|
@@ -48482,15 +48666,15 @@ async function loadFontsWithOpenType(source,) {
|
|
|
48482
48666
|
async function loadFontToOpenTypeFeatures(source,) {
|
|
48483
48667
|
switch (source) {
|
|
48484
48668
|
case 'google': {
|
|
48485
|
-
const features = await import('./framer-chunks/google-
|
|
48669
|
+
const features = await import('./framer-chunks/google-TRAPONMP-UUEFJ4ZF.js');
|
|
48486
48670
|
return features.default;
|
|
48487
48671
|
}
|
|
48488
48672
|
case 'fontshare': {
|
|
48489
|
-
const features = await import('./framer-chunks/fontshare-
|
|
48673
|
+
const features = await import('./framer-chunks/fontshare-LJWOE5KG-36DNQHCT.js');
|
|
48490
48674
|
return features.default;
|
|
48491
48675
|
}
|
|
48492
48676
|
case 'framer': {
|
|
48493
|
-
const features = await import('./framer-chunks/framer-font-
|
|
48677
|
+
const features = await import('./framer-chunks/framer-font-G73BNA7N-B3OPPZB7.js');
|
|
48494
48678
|
return features.default;
|
|
48495
48679
|
}
|
|
48496
48680
|
default:
|
|
@@ -49034,10 +49218,10 @@ function loadVariationAxes(source,) {
|
|
|
49034
49218
|
const axes = (async () => {
|
|
49035
49219
|
switch (source) {
|
|
49036
49220
|
case 'google': {
|
|
49037
|
-
return (await import('./framer-chunks/google-
|
|
49221
|
+
return (await import('./framer-chunks/google-LLNWFNMY-PWPZVCX5.js')).default;
|
|
49038
49222
|
}
|
|
49039
49223
|
case 'fontshare': {
|
|
49040
|
-
return (await import('./framer-chunks/fontshare-
|
|
49224
|
+
return (await import('./framer-chunks/fontshare-MHXFPDHS-VQYPAYVC.js')).default;
|
|
49041
49225
|
}
|
|
49042
49226
|
default:
|
|
49043
49227
|
assertNever(source,);
|
|
@@ -49983,13 +50167,13 @@ function useEscToClose(isOpen, close,) {
|
|
|
49983
50167
|
close();
|
|
49984
50168
|
}
|
|
49985
50169
|
}
|
|
49986
|
-
|
|
49987
|
-
return () =>
|
|
50170
|
+
__unframerWindow2.addEventListener('keyup', handleKeyDown,);
|
|
50171
|
+
return () => __unframerWindow2.removeEventListener('keyup', handleKeyDown,);
|
|
49988
50172
|
}, [isOpen, close,],);
|
|
49989
50173
|
}
|
|
49990
50174
|
function calculateImageWidth(aspectRatio2, maxWidth, totalHorizontalPadding, totalVerticalPadding,) {
|
|
49991
|
-
const availableHeight =
|
|
49992
|
-
const availableWidth = Math.min(
|
|
50175
|
+
const availableHeight = __unframerWindow2.innerHeight - totalVerticalPadding;
|
|
50176
|
+
const availableWidth = Math.min(__unframerWindow2.innerWidth - totalHorizontalPadding, maxWidth,);
|
|
49993
50177
|
const maxWidthBasedOnHeight = availableHeight / aspectRatio2;
|
|
49994
50178
|
return Math.min(availableWidth, maxWidthBasedOnHeight,);
|
|
49995
50179
|
}
|
|
@@ -49998,7 +50182,7 @@ function optimisticallyDecodeImage(image, {
|
|
|
49998
50182
|
height,
|
|
49999
50183
|
},) {
|
|
50000
50184
|
if (!image.src || !image.srcSet) return;
|
|
50001
|
-
const i = new
|
|
50185
|
+
const i = new __unframerWindow2.Image();
|
|
50002
50186
|
i.src = image.src;
|
|
50003
50187
|
i.srcset = image.srcSet;
|
|
50004
50188
|
i.sizes = image.sizes || '';
|
|
@@ -50888,7 +51072,7 @@ var DeprecatedRichTextInner = /* @__PURE__ */ React.forwardRef(function Text(pro
|
|
|
50888
51072
|
if (container === null) return;
|
|
50889
51073
|
function interceptPageLinks(event,) {
|
|
50890
51074
|
const anchorElement = findAnchorElement(event.target, layoutRef.current,);
|
|
50891
|
-
if (event
|
|
51075
|
+
if (isCommandKeyPressed(event,) || !navigate || !anchorElement || anchorElement.getAttribute('target',) === '_blank') {
|
|
50892
51076
|
return;
|
|
50893
51077
|
}
|
|
50894
51078
|
const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables,);
|
|
@@ -52651,7 +52835,7 @@ var TextInner = /* @__PURE__ */ React42.forwardRef(function Text2(props, forward
|
|
|
52651
52835
|
const implicitPathVariables = useImplicitPathVariables();
|
|
52652
52836
|
const interceptPageLinks = React42.useCallback((event) => {
|
|
52653
52837
|
const anchorElement = findAnchorElement(event.target, layoutRef.current,);
|
|
52654
|
-
if (event
|
|
52838
|
+
if (isCommandKeyPressed(event,) || !navigate || !anchorElement) return;
|
|
52655
52839
|
const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables,);
|
|
52656
52840
|
if (didNavigate) {
|
|
52657
52841
|
event.preventDefault();
|
|
@@ -52923,7 +53107,7 @@ var TextComponent = /* @__PURE__ */ (() => {
|
|
|
52923
53107
|
alignment: void 0,
|
|
52924
53108
|
verticalAlignment: 'top',
|
|
52925
53109
|
shadows: [],
|
|
52926
|
-
font: '16px '
|
|
53110
|
+
font: '16px Arial',
|
|
52927
53111
|
},),
|
|
52928
53112
|
__publicField(_a, 'defaultProps', {
|
|
52929
53113
|
...Layer.defaultProps,
|
|
@@ -53388,8 +53572,8 @@ var SVGRoot = (props) => {
|
|
|
53388
53572
|
viewBox: `0 0 ${width} ${height}`,
|
|
53389
53573
|
ref,
|
|
53390
53574
|
};
|
|
53391
|
-
const needsScale = isSafari() ?
|
|
53392
|
-
const needsTranslate =
|
|
53575
|
+
const needsScale = isSafari() ? __unframerWindow2.devicePixelRatio !== 1 : __unframerWindow2.devicePixelRatio === 1;
|
|
53576
|
+
const needsTranslate = __unframerWindow2.devicePixelRatio === 1;
|
|
53393
53577
|
if (!needsScale && !needsTranslate) {
|
|
53394
53578
|
return /* @__PURE__ */ jsx('svg', {
|
|
53395
53579
|
role: 'presentation',
|
|
@@ -54067,6 +54251,58 @@ function withPerformanceMarks(prefix3, callback,) {
|
|
|
54067
54251
|
performance.mark(markEnd,);
|
|
54068
54252
|
performance.measure(prefix3, markStart, markEnd,);
|
|
54069
54253
|
}
|
|
54254
|
+
function deviceOS() {
|
|
54255
|
+
if (isMacOS()) return 'macos';
|
|
54256
|
+
if (isIOS()) return 'ios';
|
|
54257
|
+
if (isAndroid()) return 'android';
|
|
54258
|
+
if (isWindows()) return 'windows';
|
|
54259
|
+
return void 0;
|
|
54260
|
+
}
|
|
54261
|
+
function deviceFont(os,) {
|
|
54262
|
+
if (!os) {
|
|
54263
|
+
os = deviceOS();
|
|
54264
|
+
}
|
|
54265
|
+
const fonts = {
|
|
54266
|
+
apple: '-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue',
|
|
54267
|
+
google: 'Roboto, Helvetica Neue',
|
|
54268
|
+
microsoft: 'Segoe UI, Helvetica Neue',
|
|
54269
|
+
};
|
|
54270
|
+
if (os === 'macos') return fonts.apple;
|
|
54271
|
+
if (os === 'ios') return fonts.apple;
|
|
54272
|
+
if (os === 'android') return fonts.google;
|
|
54273
|
+
if (os === 'windows') return fonts.microsoft;
|
|
54274
|
+
return fonts.apple;
|
|
54275
|
+
}
|
|
54276
|
+
var environment = {
|
|
54277
|
+
chromeMainVersion,
|
|
54278
|
+
deviceFont,
|
|
54279
|
+
deviceOS,
|
|
54280
|
+
deviceType,
|
|
54281
|
+
isAndroid,
|
|
54282
|
+
isBrowser: isBrowser2,
|
|
54283
|
+
isChrome,
|
|
54284
|
+
isDataUrl,
|
|
54285
|
+
isDesktop,
|
|
54286
|
+
isEdge,
|
|
54287
|
+
isEmbedded,
|
|
54288
|
+
isFileUrl,
|
|
54289
|
+
isFirefox,
|
|
54290
|
+
isFramerX,
|
|
54291
|
+
isIOS,
|
|
54292
|
+
isLocalServerUrl,
|
|
54293
|
+
isLocalUrl,
|
|
54294
|
+
isMacOS,
|
|
54295
|
+
isMobile,
|
|
54296
|
+
isPhone,
|
|
54297
|
+
isRelativeUrl,
|
|
54298
|
+
isSafari,
|
|
54299
|
+
isTablet,
|
|
54300
|
+
isTest,
|
|
54301
|
+
isTouch,
|
|
54302
|
+
isWebKit,
|
|
54303
|
+
isWindows,
|
|
54304
|
+
safariVersion,
|
|
54305
|
+
};
|
|
54070
54306
|
function loadJSON(url,) {
|
|
54071
54307
|
return fetch(url, {
|
|
54072
54308
|
mode: 'cors',
|
|
@@ -54184,6 +54420,14 @@ function useInitialRouteComponent(routes, homeNodeId,) {
|
|
|
54184
54420
|
}, [],);
|
|
54185
54421
|
return RouteComponent;
|
|
54186
54422
|
}
|
|
54423
|
+
function getLoader(component,) {
|
|
54424
|
+
return component.loader;
|
|
54425
|
+
}
|
|
54426
|
+
function forwardLoader(component, props, context,) {
|
|
54427
|
+
const loader = getLoader(component,);
|
|
54428
|
+
if (!loader) return Promise.resolve(void 0,);
|
|
54429
|
+
return loader.load(props, context,);
|
|
54430
|
+
}
|
|
54187
54431
|
var package_default = {
|
|
54188
54432
|
name: 'framer',
|
|
54189
54433
|
version: '2.4.1',
|
|
@@ -54200,7 +54444,7 @@ var package_default = {
|
|
|
54200
54444
|
watch: 'jest --watch',
|
|
54201
54445
|
},
|
|
54202
54446
|
dependencies: {
|
|
54203
|
-
devalue: '^5.
|
|
54447
|
+
devalue: '^5.6.2',
|
|
54204
54448
|
eventemitter3: '^5.0.1',
|
|
54205
54449
|
fontfaceobserver: '2.2.0',
|
|
54206
54450
|
'hoist-non-react-statics': '^3.3.2',
|
|
@@ -54402,6 +54646,7 @@ export {
|
|
|
54402
54646
|
FormContainer,
|
|
54403
54647
|
FormPlainTextInput2 as FormPlainTextInput,
|
|
54404
54648
|
FormSelect,
|
|
54649
|
+
forwardLoader,
|
|
54405
54650
|
fraction,
|
|
54406
54651
|
Frame,
|
|
54407
54652
|
frame,
|