unframer 2.26.0 → 2.27.0
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/css.d.ts.map +1 -1
- package/dist/css.js +7 -6
- package/dist/css.js.map +1 -1
- package/dist/exporter.d.ts.map +1 -1
- package/dist/exporter.js +0 -1
- package/dist/exporter.js.map +1 -1
- package/dist/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.d.ts +115 -0
- package/dist/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.d.ts.map +1 -0
- package/dist/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js +8 -0
- package/dist/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js.map +1 -0
- package/dist/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.d.ts +781 -0
- package/dist/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.d.ts.map +1 -0
- package/dist/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js +8 -0
- package/dist/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js.map +1 -0
- package/dist/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.d.ts +634 -0
- package/dist/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.d.ts.map +1 -0
- package/dist/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js +8 -0
- package/dist/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js.map +1 -0
- package/dist/framer-chunks/google-42BCYVR5-QT55MZO3.d.ts +3231 -0
- package/dist/framer-chunks/google-42BCYVR5-QT55MZO3.d.ts.map +1 -0
- package/dist/framer-chunks/google-42BCYVR5-QT55MZO3.js +8 -0
- package/dist/framer-chunks/google-42BCYVR5-QT55MZO3.js.map +1 -0
- package/dist/framer.d.ts.map +1 -1
- package/dist/framer.js +745 -443
- package/dist/framer.js.map +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +18 -0
- package/dist/react.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/css.d.ts.map +1 -1
- package/esm/css.js +7 -6
- package/esm/css.js.map +1 -1
- package/esm/exporter.d.ts.map +1 -1
- package/esm/exporter.js +1 -2
- package/esm/exporter.js.map +1 -1
- package/esm/framer-chunks/chunk-22NYTOTD.d.ts +14 -0
- package/esm/framer-chunks/chunk-22NYTOTD.d.ts.map +1 -0
- package/esm/framer-chunks/chunk-22NYTOTD.js +99 -0
- package/esm/framer-chunks/chunk-22NYTOTD.js.map +1 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.d.ts +115 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js +5 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js.map +1 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.d.ts +115 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.js +5 -0
- package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.js.map +1 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.d.ts +781 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js +5 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js.map +1 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.d.ts +781 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.js +5 -0
- package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.js.map +1 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.d.ts +634 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.js +5 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.js.map +1 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.d.ts +634 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.d.ts.map +1 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js +5 -0
- package/esm/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js.map +1 -0
- package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.d.ts +18 -0
- package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.d.ts.map +1 -0
- package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.js +5 -0
- package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.js.map +1 -0
- package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.d.ts +9827 -0
- package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.d.ts.map +1 -0
- package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.js +5 -0
- package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.js.map +1 -0
- package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.d.ts +3231 -0
- package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.d.ts.map +1 -0
- package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.js +5 -0
- package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.js.map +1 -0
- package/esm/framer-chunks/google-42BCYVR5-QT55MZO3.d.ts +3231 -0
- package/esm/framer-chunks/google-42BCYVR5-QT55MZO3.d.ts.map +1 -0
- package/esm/framer-chunks/google-42BCYVR5-QT55MZO3.js +5 -0
- package/esm/framer-chunks/google-42BCYVR5-QT55MZO3.js.map +1 -0
- package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.d.ts +1499 -0
- package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.d.ts.map +1 -0
- package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.js +5 -0
- package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.js.map +1 -0
- package/esm/framer.d.ts.map +1 -1
- package/esm/framer.js +739 -439
- package/esm/framer.js.map +1 -1
- package/esm/react.d.ts.map +1 -1
- package/esm/react.js +18 -0
- package/esm/react.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/css.ts +7 -6
- package/src/exporter.ts +0 -1
- package/src/framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js +7 -0
- package/src/framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js +7 -0
- package/src/framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js +7 -0
- package/src/framer-chunks/google-42BCYVR5-QT55MZO3.js +7 -0
- package/src/framer.js +763 -449
- package/src/react.tsx +24 -0
- package/src/version.ts +1 -1
package/esm/framer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __commonJS, __decorateElement, __decoratorMetadata, __decoratorStart, __export, __privateAdd, __privateGet, __privateMethod, __privateSet, __publicField, __runInitializers, __toESM, } from './framer-chunks/chunk-A2PMVMFI.js';
|
|
2
|
-
// /:https://app.framerstatic.com/chunk-
|
|
2
|
+
// /:https://app.framerstatic.com/chunk-BLFSVU7M.mjs
|
|
3
3
|
import { createContext, } from 'react';
|
|
4
4
|
import { useEffect, useLayoutEffect, } from 'react';
|
|
5
5
|
import { useCallback, useContext, useId, } from 'react';
|
|
@@ -3385,6 +3385,99 @@ function getComputedStyle2(element, name) {
|
|
|
3385
3385
|
const computedStyle = window.getComputedStyle(element);
|
|
3386
3386
|
return isCSSVar(name) ? computedStyle.getPropertyValue(name) : computedStyle[name];
|
|
3387
3387
|
}
|
|
3388
|
+
function isSVGElement(element) {
|
|
3389
|
+
return isObject(element) && 'ownerSVGElement' in element;
|
|
3390
|
+
}
|
|
3391
|
+
var resizeHandlers = /* @__PURE__ */ new WeakMap();
|
|
3392
|
+
var observer;
|
|
3393
|
+
var getSize = (borderBoxAxis, svgAxis, htmlAxis) => (target, borderBoxSize) => {
|
|
3394
|
+
if (borderBoxSize && borderBoxSize[0]) {
|
|
3395
|
+
return borderBoxSize[0][borderBoxAxis + 'Size'];
|
|
3396
|
+
}
|
|
3397
|
+
else if (isSVGElement(target) && 'getBBox' in target) {
|
|
3398
|
+
return target.getBBox()[svgAxis];
|
|
3399
|
+
}
|
|
3400
|
+
else {
|
|
3401
|
+
return target[htmlAxis];
|
|
3402
|
+
}
|
|
3403
|
+
};
|
|
3404
|
+
var getWidth = /* @__PURE__ */ getSize('inline', 'width', 'offsetWidth');
|
|
3405
|
+
var getHeight = /* @__PURE__ */ getSize('block', 'height', 'offsetHeight');
|
|
3406
|
+
function notifyTarget({ target, borderBoxSize, }) {
|
|
3407
|
+
var _a;
|
|
3408
|
+
(_a = resizeHandlers.get(target)) == null ? void 0 : _a.forEach((handler) => {
|
|
3409
|
+
handler(target, {
|
|
3410
|
+
get width() {
|
|
3411
|
+
return getWidth(target, borderBoxSize);
|
|
3412
|
+
},
|
|
3413
|
+
get height() {
|
|
3414
|
+
return getHeight(target, borderBoxSize);
|
|
3415
|
+
},
|
|
3416
|
+
});
|
|
3417
|
+
});
|
|
3418
|
+
}
|
|
3419
|
+
function notifyAll(entries) {
|
|
3420
|
+
entries.forEach(notifyTarget);
|
|
3421
|
+
}
|
|
3422
|
+
function createResizeObserver() {
|
|
3423
|
+
if (typeof ResizeObserver === 'undefined')
|
|
3424
|
+
return;
|
|
3425
|
+
observer = new ResizeObserver(notifyAll);
|
|
3426
|
+
}
|
|
3427
|
+
function resizeElement(target, handler) {
|
|
3428
|
+
if (!observer)
|
|
3429
|
+
createResizeObserver();
|
|
3430
|
+
const elements = resolveElements(target);
|
|
3431
|
+
elements.forEach((element) => {
|
|
3432
|
+
let elementHandlers = resizeHandlers.get(element);
|
|
3433
|
+
if (!elementHandlers) {
|
|
3434
|
+
elementHandlers = /* @__PURE__ */ new Set();
|
|
3435
|
+
resizeHandlers.set(element, elementHandlers);
|
|
3436
|
+
}
|
|
3437
|
+
elementHandlers.add(handler);
|
|
3438
|
+
observer == null ? void 0 : observer.observe(element);
|
|
3439
|
+
});
|
|
3440
|
+
return () => {
|
|
3441
|
+
elements.forEach((element) => {
|
|
3442
|
+
const elementHandlers = resizeHandlers.get(element);
|
|
3443
|
+
elementHandlers == null ? void 0 : elementHandlers.delete(handler);
|
|
3444
|
+
if (!(elementHandlers == null ? void 0 : elementHandlers.size)) {
|
|
3445
|
+
observer == null ? void 0 : observer.unobserve(element);
|
|
3446
|
+
}
|
|
3447
|
+
});
|
|
3448
|
+
};
|
|
3449
|
+
}
|
|
3450
|
+
var windowCallbacks = /* @__PURE__ */ new Set();
|
|
3451
|
+
var windowResizeHandler;
|
|
3452
|
+
function createWindowResizeHandler() {
|
|
3453
|
+
windowResizeHandler = () => {
|
|
3454
|
+
const info = {
|
|
3455
|
+
get width() {
|
|
3456
|
+
return window.innerWidth;
|
|
3457
|
+
},
|
|
3458
|
+
get height() {
|
|
3459
|
+
return window.innerHeight;
|
|
3460
|
+
},
|
|
3461
|
+
};
|
|
3462
|
+
windowCallbacks.forEach((callback) => callback(info));
|
|
3463
|
+
};
|
|
3464
|
+
window.addEventListener('resize', windowResizeHandler);
|
|
3465
|
+
}
|
|
3466
|
+
function resizeWindow(callback) {
|
|
3467
|
+
windowCallbacks.add(callback);
|
|
3468
|
+
if (!windowResizeHandler)
|
|
3469
|
+
createWindowResizeHandler();
|
|
3470
|
+
return () => {
|
|
3471
|
+
windowCallbacks.delete(callback);
|
|
3472
|
+
if (!windowCallbacks.size && typeof windowResizeHandler === 'function') {
|
|
3473
|
+
window.removeEventListener('resize', windowResizeHandler);
|
|
3474
|
+
windowResizeHandler = void 0;
|
|
3475
|
+
}
|
|
3476
|
+
};
|
|
3477
|
+
}
|
|
3478
|
+
function resize(a, b) {
|
|
3479
|
+
return typeof a === 'function' ? resizeWindow(a) : resizeElement(a, b);
|
|
3480
|
+
}
|
|
3388
3481
|
function observeTimeline(update, timeline) {
|
|
3389
3482
|
let prevProgress;
|
|
3390
3483
|
const onFrame = () => {
|
|
@@ -3507,9 +3600,6 @@ function recordStats() {
|
|
|
3507
3600
|
frame.postRender(record, true);
|
|
3508
3601
|
return reportStats;
|
|
3509
3602
|
}
|
|
3510
|
-
function isSVGElement(element) {
|
|
3511
|
-
return isObject(element) && 'ownerSVGElement' in element;
|
|
3512
|
-
}
|
|
3513
3603
|
function isSVGSVGElement(element) {
|
|
3514
3604
|
return isSVGElement(element) && element.tagName === 'svg';
|
|
3515
3605
|
}
|
|
@@ -8023,6 +8113,7 @@ function createProjectionNode2({ attachResizeListener, defaultParent, measureScr
|
|
|
8023
8113
|
this.motionValue || (this.motionValue = motionValue(0));
|
|
8024
8114
|
this.currentAnimation = animateSingleValue(this.motionValue, [0, 1e3,], {
|
|
8025
8115
|
...options,
|
|
8116
|
+
velocity: 0,
|
|
8026
8117
|
isSync: true,
|
|
8027
8118
|
onUpdate: (latest) => {
|
|
8028
8119
|
this.mixTargetDelta(latest);
|
|
@@ -8811,100 +8902,6 @@ var domMin = {
|
|
|
8811
8902
|
function useMotionValueEvent(value, event, callback) {
|
|
8812
8903
|
useInsertionEffect(() => value.on(event, callback), [value, event, callback,]);
|
|
8813
8904
|
}
|
|
8814
|
-
var resizeHandlers = /* @__PURE__ */ new WeakMap();
|
|
8815
|
-
var observer;
|
|
8816
|
-
function getElementSize(target, borderBoxSize) {
|
|
8817
|
-
if (borderBoxSize) {
|
|
8818
|
-
const { inlineSize, blockSize, } = borderBoxSize[0];
|
|
8819
|
-
return {
|
|
8820
|
-
width: inlineSize,
|
|
8821
|
-
height: blockSize,
|
|
8822
|
-
};
|
|
8823
|
-
}
|
|
8824
|
-
else if (isSVGElement(target) && 'getBBox' in target) {
|
|
8825
|
-
return target.getBBox();
|
|
8826
|
-
}
|
|
8827
|
-
else {
|
|
8828
|
-
return {
|
|
8829
|
-
width: target.offsetWidth,
|
|
8830
|
-
height: target.offsetHeight,
|
|
8831
|
-
};
|
|
8832
|
-
}
|
|
8833
|
-
}
|
|
8834
|
-
function notifyTarget({ target, contentRect, borderBoxSize, }) {
|
|
8835
|
-
var _a;
|
|
8836
|
-
(_a = resizeHandlers.get(target)) == null ? void 0 : _a.forEach((handler) => {
|
|
8837
|
-
handler({
|
|
8838
|
-
target,
|
|
8839
|
-
contentSize: contentRect,
|
|
8840
|
-
get size() {
|
|
8841
|
-
return getElementSize(target, borderBoxSize);
|
|
8842
|
-
},
|
|
8843
|
-
});
|
|
8844
|
-
});
|
|
8845
|
-
}
|
|
8846
|
-
function notifyAll(entries) {
|
|
8847
|
-
entries.forEach(notifyTarget);
|
|
8848
|
-
}
|
|
8849
|
-
function createResizeObserver() {
|
|
8850
|
-
if (typeof ResizeObserver === 'undefined')
|
|
8851
|
-
return;
|
|
8852
|
-
observer = new ResizeObserver(notifyAll);
|
|
8853
|
-
}
|
|
8854
|
-
function resizeElement(target, handler) {
|
|
8855
|
-
if (!observer)
|
|
8856
|
-
createResizeObserver();
|
|
8857
|
-
const elements = resolveElements(target);
|
|
8858
|
-
elements.forEach((element) => {
|
|
8859
|
-
let elementHandlers = resizeHandlers.get(element);
|
|
8860
|
-
if (!elementHandlers) {
|
|
8861
|
-
elementHandlers = /* @__PURE__ */ new Set();
|
|
8862
|
-
resizeHandlers.set(element, elementHandlers);
|
|
8863
|
-
}
|
|
8864
|
-
elementHandlers.add(handler);
|
|
8865
|
-
observer == null ? void 0 : observer.observe(element);
|
|
8866
|
-
});
|
|
8867
|
-
return () => {
|
|
8868
|
-
elements.forEach((element) => {
|
|
8869
|
-
const elementHandlers = resizeHandlers.get(element);
|
|
8870
|
-
elementHandlers == null ? void 0 : elementHandlers.delete(handler);
|
|
8871
|
-
if (!(elementHandlers == null ? void 0 : elementHandlers.size)) {
|
|
8872
|
-
observer == null ? void 0 : observer.unobserve(element);
|
|
8873
|
-
}
|
|
8874
|
-
});
|
|
8875
|
-
};
|
|
8876
|
-
}
|
|
8877
|
-
var windowCallbacks = /* @__PURE__ */ new Set();
|
|
8878
|
-
var windowResizeHandler;
|
|
8879
|
-
function createWindowResizeHandler() {
|
|
8880
|
-
windowResizeHandler = () => {
|
|
8881
|
-
const size = {
|
|
8882
|
-
width: window.innerWidth,
|
|
8883
|
-
height: window.innerHeight,
|
|
8884
|
-
};
|
|
8885
|
-
const info = {
|
|
8886
|
-
target: window,
|
|
8887
|
-
size,
|
|
8888
|
-
contentSize: size,
|
|
8889
|
-
};
|
|
8890
|
-
windowCallbacks.forEach((callback) => callback(info));
|
|
8891
|
-
};
|
|
8892
|
-
window.addEventListener('resize', windowResizeHandler);
|
|
8893
|
-
}
|
|
8894
|
-
function resizeWindow(callback) {
|
|
8895
|
-
windowCallbacks.add(callback);
|
|
8896
|
-
if (!windowResizeHandler)
|
|
8897
|
-
createWindowResizeHandler();
|
|
8898
|
-
return () => {
|
|
8899
|
-
windowCallbacks.delete(callback);
|
|
8900
|
-
if (!windowCallbacks.size && windowResizeHandler) {
|
|
8901
|
-
windowResizeHandler = void 0;
|
|
8902
|
-
}
|
|
8903
|
-
};
|
|
8904
|
-
}
|
|
8905
|
-
function resize(a, b) {
|
|
8906
|
-
return typeof a === 'function' ? resizeWindow(a) : resizeElement(a, b);
|
|
8907
|
-
}
|
|
8908
8905
|
var maxElapsed2 = 50;
|
|
8909
8906
|
var createAxisInfo = () => ({
|
|
8910
8907
|
current: 0,
|
|
@@ -10502,7 +10499,7 @@ function stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2, } = {}
|
|
|
10502
10499
|
return startDelay + delay2;
|
|
10503
10500
|
};
|
|
10504
10501
|
}
|
|
10505
|
-
// /:https://app.framerstatic.com/framer.
|
|
10502
|
+
// /:https://app.framerstatic.com/framer.6RBAH774.mjs
|
|
10506
10503
|
import { lazy as ReactLazy, } from 'react';
|
|
10507
10504
|
import React4 from 'react';
|
|
10508
10505
|
import { startTransition as startTransition2, } from 'react';
|
|
@@ -13790,6 +13787,198 @@ function patchRoutesForABTesting(routes, initialRouteId) {
|
|
|
13790
13787
|
removeRoutesVariants(routes);
|
|
13791
13788
|
return resolvedInitialRouteId;
|
|
13792
13789
|
}
|
|
13790
|
+
var mainTagId = 'main';
|
|
13791
|
+
var generatedPageDatasetKey = 'framerGeneratedPage';
|
|
13792
|
+
var searchIndexMetaName = 'framer-search-index';
|
|
13793
|
+
var searchIndexMetaSelector = `meta[name="${searchIndexMetaName}"]`;
|
|
13794
|
+
var endOfHeadStartMarker = '<!-- End of headStart -->';
|
|
13795
|
+
var endOfHeadEndMarker = '<!-- End of headEnd -->';
|
|
13796
|
+
var endOfBodyStartMarker = '<!-- End of bodyStart -->';
|
|
13797
|
+
var endOfBodyEndMarker = '<!-- End of bodyEnd -->';
|
|
13798
|
+
function assert(condition, ...msg) {
|
|
13799
|
+
var _a, _b;
|
|
13800
|
+
if (condition)
|
|
13801
|
+
return;
|
|
13802
|
+
const e = Error('Assertion Error' + (msg.length > 0 ? ': ' + msg.join(' ') : ''));
|
|
13803
|
+
if (e.stack) {
|
|
13804
|
+
try {
|
|
13805
|
+
const lines = e.stack.split('\n');
|
|
13806
|
+
if ((_a = lines[1]) == null ? void 0 : _a.includes('assert')) {
|
|
13807
|
+
lines.splice(1, 1);
|
|
13808
|
+
e.stack = lines.join('\n');
|
|
13809
|
+
}
|
|
13810
|
+
else if ((_b = lines[0]) == null ? void 0 : _b.includes('assert')) {
|
|
13811
|
+
lines.splice(0, 1);
|
|
13812
|
+
e.stack = lines.join('\n');
|
|
13813
|
+
}
|
|
13814
|
+
}
|
|
13815
|
+
catch { }
|
|
13816
|
+
}
|
|
13817
|
+
throw e;
|
|
13818
|
+
}
|
|
13819
|
+
function assertNever(x, error) {
|
|
13820
|
+
throw error || new Error(x ? `Unexpected value: ${x}` : 'Application entered invalid state');
|
|
13821
|
+
}
|
|
13822
|
+
async function insertHTML(html, referenceNode, position = 'beforeend') {
|
|
13823
|
+
let insertionParent, insertionPoint;
|
|
13824
|
+
switch (position) {
|
|
13825
|
+
case 'beforebegin':
|
|
13826
|
+
assert(referenceNode.parentNode, 'Can\'t use \'beforebegin\' with a referenceNode at the top level');
|
|
13827
|
+
insertionParent = referenceNode.parentNode;
|
|
13828
|
+
insertionPoint = referenceNode;
|
|
13829
|
+
break;
|
|
13830
|
+
case 'afterend':
|
|
13831
|
+
assert(referenceNode.parentNode, 'Can\'t use \'afterend\' with a referenceNode at the top level');
|
|
13832
|
+
insertionParent = referenceNode.parentNode;
|
|
13833
|
+
insertionPoint = referenceNode.nextSibling;
|
|
13834
|
+
break;
|
|
13835
|
+
case 'afterbegin':
|
|
13836
|
+
insertionParent = referenceNode;
|
|
13837
|
+
insertionPoint = referenceNode.firstChild;
|
|
13838
|
+
break;
|
|
13839
|
+
case 'beforeend':
|
|
13840
|
+
insertionParent = referenceNode;
|
|
13841
|
+
insertionPoint = null;
|
|
13842
|
+
break;
|
|
13843
|
+
default:
|
|
13844
|
+
assertNever(position);
|
|
13845
|
+
}
|
|
13846
|
+
const range = document.createRange();
|
|
13847
|
+
range.selectNodeContents(insertionParent);
|
|
13848
|
+
const fragment = range.createContextualFragment(html);
|
|
13849
|
+
await pump(fragment, insertionParent, insertionPoint);
|
|
13850
|
+
}
|
|
13851
|
+
async function pump(sourceNode, targetParent, beforeNode) {
|
|
13852
|
+
for (let node = sourceNode.firstChild; node; node = node.nextSibling) {
|
|
13853
|
+
if (node instanceof HTMLScriptElement) {
|
|
13854
|
+
await handleScript(node, targetParent, beforeNode);
|
|
13855
|
+
continue;
|
|
13856
|
+
}
|
|
13857
|
+
const clone = node.cloneNode(false);
|
|
13858
|
+
targetParent.insertBefore(clone, beforeNode);
|
|
13859
|
+
if (node.firstChild) {
|
|
13860
|
+
await pump(node, clone, null);
|
|
13861
|
+
}
|
|
13862
|
+
}
|
|
13863
|
+
}
|
|
13864
|
+
async function handleScript(node, parent, beforeNode) {
|
|
13865
|
+
var _a;
|
|
13866
|
+
const script = node.cloneNode(true);
|
|
13867
|
+
const isExternal = script.hasAttribute('src');
|
|
13868
|
+
const isAsync = script.hasAttribute('async');
|
|
13869
|
+
const isDefer = script.hasAttribute('defer');
|
|
13870
|
+
const isModule = ((_a = script.getAttribute('type')) == null ? void 0 : _a.toLowerCase()) === 'module';
|
|
13871
|
+
if (!isExternal || isAsync || isDefer || isModule) {
|
|
13872
|
+
parent.insertBefore(script, beforeNode);
|
|
13873
|
+
}
|
|
13874
|
+
else {
|
|
13875
|
+
await execExternalBlockingScript(script, parent, beforeNode);
|
|
13876
|
+
}
|
|
13877
|
+
}
|
|
13878
|
+
function execExternalBlockingScript(script, parent, beforeNode) {
|
|
13879
|
+
return new Promise((resolve) => {
|
|
13880
|
+
script.onload = () => resolve();
|
|
13881
|
+
script.onerror = () => resolve();
|
|
13882
|
+
parent.insertBefore(script, beforeNode);
|
|
13883
|
+
});
|
|
13884
|
+
}
|
|
13885
|
+
function useMetadata(metadata) {
|
|
13886
|
+
const { isInitialNavigation, } = useRouter();
|
|
13887
|
+
React2.useEffect(() => {
|
|
13888
|
+
if (metadata.robots) {
|
|
13889
|
+
let robotsTag = document.querySelector('meta[name="robots"]');
|
|
13890
|
+
if (robotsTag) {
|
|
13891
|
+
robotsTag.setAttribute('content', metadata.robots);
|
|
13892
|
+
}
|
|
13893
|
+
else {
|
|
13894
|
+
robotsTag = document.createElement('meta');
|
|
13895
|
+
robotsTag.setAttribute('name', 'robots');
|
|
13896
|
+
robotsTag.setAttribute('content', metadata.robots);
|
|
13897
|
+
document.head.appendChild(robotsTag);
|
|
13898
|
+
}
|
|
13899
|
+
}
|
|
13900
|
+
}, [metadata.robots,]);
|
|
13901
|
+
React2.useInsertionEffect(() => {
|
|
13902
|
+
var _a;
|
|
13903
|
+
document.title = metadata.title || '';
|
|
13904
|
+
if (metadata.viewport) {
|
|
13905
|
+
(_a = document.querySelector('meta[name="viewport"]')) == null ? void 0 : _a.setAttribute('content', metadata.viewport);
|
|
13906
|
+
}
|
|
13907
|
+
}, [metadata.title, metadata.viewport,]);
|
|
13908
|
+
React2.useEffect(() => {
|
|
13909
|
+
if (!isInitialNavigation)
|
|
13910
|
+
return;
|
|
13911
|
+
const mainTag = document.getElementById(mainTagId);
|
|
13912
|
+
const isGeneratedPage = mainTag && mainTag.dataset[generatedPageDatasetKey] !== void 0;
|
|
13913
|
+
if (isGeneratedPage)
|
|
13914
|
+
return;
|
|
13915
|
+
void insertCustomHTML(metadata.customHTMLHeadStart, metadata.customHTMLHeadEnd, metadata.customHTMLBodyStart, metadata.customHTMLBodyEnd);
|
|
13916
|
+
}, []);
|
|
13917
|
+
}
|
|
13918
|
+
async function insertCustomHTML(customHTMLHeadStart, customHTMLHeadEnd, customHTMLBodyStart, customHTMLBodyEnd) {
|
|
13919
|
+
let endOfHeadStart;
|
|
13920
|
+
let endOfHeadEnd;
|
|
13921
|
+
let endOfBodyStart;
|
|
13922
|
+
let endOfBodyEnd;
|
|
13923
|
+
if (customHTMLHeadStart || customHTMLHeadEnd) {
|
|
13924
|
+
const { start: start2, end, } = findCommentMarkers(document.head.childNodes, customHTMLHeadStart ? endOfHeadStartMarker : void 0, customHTMLHeadEnd ? endOfHeadEndMarker : void 0);
|
|
13925
|
+
endOfHeadStart = start2;
|
|
13926
|
+
endOfHeadEnd = end;
|
|
13927
|
+
}
|
|
13928
|
+
if (customHTMLBodyStart || customHTMLBodyEnd) {
|
|
13929
|
+
const { start: start2, end, } = findCommentMarkers(document.body.childNodes, customHTMLBodyStart ? endOfBodyStartMarker : void 0, customHTMLBodyEnd ? endOfBodyEndMarker : void 0);
|
|
13930
|
+
endOfBodyStart = start2;
|
|
13931
|
+
endOfBodyEnd = end;
|
|
13932
|
+
}
|
|
13933
|
+
if (customHTMLHeadStart && endOfHeadStart) {
|
|
13934
|
+
await insertHTML(customHTMLHeadStart, endOfHeadStart, 'beforebegin');
|
|
13935
|
+
}
|
|
13936
|
+
if (customHTMLHeadEnd && endOfHeadEnd) {
|
|
13937
|
+
await insertHTML(customHTMLHeadEnd, endOfHeadEnd, 'beforebegin');
|
|
13938
|
+
}
|
|
13939
|
+
if (customHTMLBodyStart && endOfBodyStart) {
|
|
13940
|
+
await insertHTML(customHTMLBodyStart, endOfBodyStart, 'beforebegin');
|
|
13941
|
+
}
|
|
13942
|
+
if (customHTMLBodyEnd && endOfBodyEnd) {
|
|
13943
|
+
await insertHTML(customHTMLBodyEnd, endOfBodyEnd, 'beforebegin');
|
|
13944
|
+
}
|
|
13945
|
+
}
|
|
13946
|
+
function findCommentMarkers(nodes, startMarker, endMarker) {
|
|
13947
|
+
if (!startMarker && !endMarker) {
|
|
13948
|
+
return {
|
|
13949
|
+
start: void 0,
|
|
13950
|
+
end: void 0,
|
|
13951
|
+
};
|
|
13952
|
+
}
|
|
13953
|
+
let start2;
|
|
13954
|
+
let end;
|
|
13955
|
+
let i = 0;
|
|
13956
|
+
let j = nodes.length - 1;
|
|
13957
|
+
while (i <= j) {
|
|
13958
|
+
const startNode = nodes[i];
|
|
13959
|
+
const endNode = nodes[j];
|
|
13960
|
+
if (!start2 && (startNode == null ? void 0 : startNode.nodeType) === Node.COMMENT_NODE && startMarker &&
|
|
13961
|
+
`<!--${startNode.nodeValue}-->` === startMarker) {
|
|
13962
|
+
start2 = startNode;
|
|
13963
|
+
if (!endMarker)
|
|
13964
|
+
break;
|
|
13965
|
+
}
|
|
13966
|
+
if (!end && (endNode == null ? void 0 : endNode.nodeType) === Node.COMMENT_NODE && endMarker &&
|
|
13967
|
+
`<!--${endNode.nodeValue}-->` === endMarker) {
|
|
13968
|
+
end = endNode;
|
|
13969
|
+
if (!startMarker)
|
|
13970
|
+
break;
|
|
13971
|
+
}
|
|
13972
|
+
if (start2 && end)
|
|
13973
|
+
break;
|
|
13974
|
+
i++;
|
|
13975
|
+
j--;
|
|
13976
|
+
}
|
|
13977
|
+
return {
|
|
13978
|
+
start: start2,
|
|
13979
|
+
end,
|
|
13980
|
+
};
|
|
13981
|
+
}
|
|
13793
13982
|
var warningMessages = /* @__PURE__ */ new Set();
|
|
13794
13983
|
function warnOnce2(keyMessage, ...rest) {
|
|
13795
13984
|
if (warningMessages.has(keyMessage))
|
|
@@ -13976,6 +14165,9 @@ function roundWithOffset(value, offset) {
|
|
|
13976
14165
|
}
|
|
13977
14166
|
return Math.round(value - offset) + offset;
|
|
13978
14167
|
}
|
|
14168
|
+
function roundToHalfPixel(value) {
|
|
14169
|
+
return Math.round(value * 2) / 2;
|
|
14170
|
+
}
|
|
13979
14171
|
function Point(x, y) {
|
|
13980
14172
|
return {
|
|
13981
14173
|
x,
|
|
@@ -14104,30 +14296,6 @@ function Point(x, y) {
|
|
|
14104
14296
|
}
|
|
14105
14297
|
Point2.sortClockwise = sortClockwise;
|
|
14106
14298
|
})(Point || (Point = {}));
|
|
14107
|
-
function assert(condition, ...msg) {
|
|
14108
|
-
var _a, _b;
|
|
14109
|
-
if (condition)
|
|
14110
|
-
return;
|
|
14111
|
-
const e = Error('Assertion Error' + (msg.length > 0 ? ': ' + msg.join(' ') : ''));
|
|
14112
|
-
if (e.stack) {
|
|
14113
|
-
try {
|
|
14114
|
-
const lines = e.stack.split('\n');
|
|
14115
|
-
if ((_a = lines[1]) == null ? void 0 : _a.includes('assert')) {
|
|
14116
|
-
lines.splice(1, 1);
|
|
14117
|
-
e.stack = lines.join('\n');
|
|
14118
|
-
}
|
|
14119
|
-
else if ((_b = lines[0]) == null ? void 0 : _b.includes('assert')) {
|
|
14120
|
-
lines.splice(0, 1);
|
|
14121
|
-
e.stack = lines.join('\n');
|
|
14122
|
-
}
|
|
14123
|
-
}
|
|
14124
|
-
catch { }
|
|
14125
|
-
}
|
|
14126
|
-
throw e;
|
|
14127
|
-
}
|
|
14128
|
-
function assertNever(x, error) {
|
|
14129
|
-
throw error || new Error(x ? `Unexpected value: ${x}` : 'Application entered invalid state');
|
|
14130
|
-
}
|
|
14131
14299
|
var BezierDefaults = {
|
|
14132
14300
|
curve: 'ease',
|
|
14133
14301
|
duration: 1,
|
|
@@ -16321,7 +16489,10 @@ var Loop = class extends EventEmitter {
|
|
|
16321
16489
|
};
|
|
16322
16490
|
var MainLoop = /* @__PURE__ */ new Loop();
|
|
16323
16491
|
var RenderEnvironment = {
|
|
16324
|
-
target:
|
|
16492
|
+
target:
|
|
16493
|
+
// Enable static renderer when taking screenshots
|
|
16494
|
+
// in screenshot-site lambda
|
|
16495
|
+
safeWindow.location.origin === 'https://screenshot.framer.invalid' ? 'EXPORT' : 'PREVIEW',
|
|
16325
16496
|
zoom: 1,
|
|
16326
16497
|
};
|
|
16327
16498
|
function executeInRenderEnvironment(customEnvironment, task) {
|
|
@@ -17539,11 +17710,21 @@ var Rect = {
|
|
|
17539
17710
|
return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;
|
|
17540
17711
|
},
|
|
17541
17712
|
/** @internal */
|
|
17713
|
+
from: (rect) => {
|
|
17714
|
+
return {
|
|
17715
|
+
x: rect.x,
|
|
17716
|
+
y: rect.y,
|
|
17717
|
+
width: rect.width,
|
|
17718
|
+
height: rect.height,
|
|
17719
|
+
};
|
|
17720
|
+
},
|
|
17721
|
+
/** @internal */
|
|
17542
17722
|
atOrigin: (size) => {
|
|
17543
17723
|
return {
|
|
17544
|
-
...size,
|
|
17545
17724
|
x: 0,
|
|
17546
17725
|
y: 0,
|
|
17726
|
+
width: size.width,
|
|
17727
|
+
height: size.height,
|
|
17547
17728
|
};
|
|
17548
17729
|
},
|
|
17549
17730
|
/** @internal */
|
|
@@ -17707,13 +17888,13 @@ var Rect = {
|
|
|
17707
17888
|
};
|
|
17708
17889
|
},
|
|
17709
17890
|
/** @internal */
|
|
17710
|
-
boundingRectFromPoints: (
|
|
17891
|
+
boundingRectFromPoints: (points) => {
|
|
17711
17892
|
let minX = Infinity;
|
|
17712
17893
|
let maxX = -Infinity;
|
|
17713
17894
|
let minY = Infinity;
|
|
17714
17895
|
let maxY = -Infinity;
|
|
17715
|
-
for (let i = 0; i <
|
|
17716
|
-
const point2 =
|
|
17896
|
+
for (let i = 0; i < points.length; i++) {
|
|
17897
|
+
const point2 = points[i];
|
|
17717
17898
|
minX = Math.min(minX, point2.x);
|
|
17718
17899
|
maxX = Math.max(maxX, point2.x);
|
|
17719
17900
|
minY = Math.min(minY, point2.y);
|
|
@@ -18017,20 +18198,6 @@ var Rect = {
|
|
|
18017
18198
|
y: 0,
|
|
18018
18199
|
});
|
|
18019
18200
|
},
|
|
18020
|
-
/** @internal */
|
|
18021
|
-
fromAny: (rect, defaults = {
|
|
18022
|
-
x: 0,
|
|
18023
|
-
y: 0,
|
|
18024
|
-
width: 0,
|
|
18025
|
-
height: 0,
|
|
18026
|
-
}) => {
|
|
18027
|
-
return {
|
|
18028
|
-
x: rect.x || defaults.x,
|
|
18029
|
-
y: rect.y || defaults.y,
|
|
18030
|
-
width: rect.width || defaults.width,
|
|
18031
|
-
height: rect.height || defaults.height,
|
|
18032
|
-
};
|
|
18033
|
-
},
|
|
18034
18201
|
delta: (a, b) => {
|
|
18035
18202
|
const pointA = {
|
|
18036
18203
|
x: Rect.minX(a),
|
|
@@ -18750,6 +18917,7 @@ var ControlType = /* @__PURE__ */ ((ControlType2) => {
|
|
|
18750
18917
|
ControlType2['MultiCollectionReference'] = 'multicollectionreference';
|
|
18751
18918
|
ControlType2['TrackingId'] = 'trackingid';
|
|
18752
18919
|
ControlType2['VectorSetItem'] = 'vectorsetitem';
|
|
18920
|
+
ControlType2['LinkRelValues'] = 'linkrelvalues';
|
|
18753
18921
|
return ControlType2;
|
|
18754
18922
|
})(ControlType || {});
|
|
18755
18923
|
var isFlexboxGapSupportedCached;
|
|
@@ -20118,6 +20286,8 @@ function getControlDefaultValue(control) {
|
|
|
20118
20286
|
return isObject2(control.defaultValue) ? control.defaultValue : void 0;
|
|
20119
20287
|
case 'font':
|
|
20120
20288
|
return isObject2(control.defaultValue) ? control.defaultValue : void 0;
|
|
20289
|
+
case 'linkrelvalues':
|
|
20290
|
+
return isArray(control.defaultValue) ? control.defaultValue : void 0;
|
|
20121
20291
|
case 'object': {
|
|
20122
20292
|
const value = isObject2(control.defaultValue) ? control.defaultValue : {};
|
|
20123
20293
|
if (isObject2(control.controls)) {
|
|
@@ -21938,7 +22108,7 @@ function OptimizedCanvasImage({ nodeId, image, containerSize, }) {
|
|
|
21938
22108
|
});
|
|
21939
22109
|
}
|
|
21940
22110
|
function BackgroundImageComponent({ layoutId, image, ...props }) {
|
|
21941
|
-
const {
|
|
22111
|
+
const { motionDivToDivBackgroundImage, } = useLibraryFeatures();
|
|
21942
22112
|
if (layoutId) {
|
|
21943
22113
|
layoutId += '-background';
|
|
21944
22114
|
}
|
|
@@ -21952,6 +22122,7 @@ function BackgroundImageComponent({ layoutId, image, ...props }) {
|
|
|
21952
22122
|
width: Math.round(backgroundSize * image.pixelWidth),
|
|
21953
22123
|
height: Math.round(backgroundSize * image.pixelHeight),
|
|
21954
22124
|
};
|
|
22125
|
+
const roundedBackgroundSize = roundToHalfPixel(backgroundSize * (image.pixelWidth / 2));
|
|
21955
22126
|
const imageSource = runtime.useImageSource(image, tileSize);
|
|
21956
22127
|
fallbackWrapperStyles = {
|
|
21957
22128
|
...wrapperStyle,
|
|
@@ -21960,15 +22131,7 @@ function BackgroundImageComponent({ layoutId, image, ...props }) {
|
|
|
21960
22131
|
backgroundPosition: cssObjectPosition(image.positionX, image.positionY),
|
|
21961
22132
|
opacity: void 0,
|
|
21962
22133
|
border: 0,
|
|
21963
|
-
|
|
21964
|
-
// so we need to multiply it by the pixelWidth to get the pixel
|
|
21965
|
-
// value for the backgroundSize so that the size of the tile is
|
|
21966
|
-
// a function of the image width + background size percentage.
|
|
21967
|
-
// e.g image is 64px/64px and backgroundSize is 0.05, the tile size
|
|
21968
|
-
// should be 3.2px
|
|
21969
|
-
// We divide the pixel width by 2 because we assume that most designers
|
|
21970
|
-
// will be working with 2x (retina) assets.
|
|
21971
|
-
backgroundSize: `${(backgroundSize * (image.pixelWidth / 2)).toFixed(2)}px auto`,
|
|
22134
|
+
backgroundSize: `${roundedBackgroundSize}px auto`,
|
|
21972
22135
|
};
|
|
21973
22136
|
imageNode = null;
|
|
21974
22137
|
needsMotion = true;
|
|
@@ -21999,7 +22162,7 @@ function BackgroundImageComponent({ layoutId, image, ...props }) {
|
|
|
21999
22162
|
...wrapperStyle,
|
|
22000
22163
|
...getPlaceholderStyle(),
|
|
22001
22164
|
};
|
|
22002
|
-
return needsMotion || !
|
|
22165
|
+
return needsMotion || !motionDivToDivBackgroundImage
|
|
22003
22166
|
? /* @__PURE__ */ jsx3(motion.div, {
|
|
22004
22167
|
layoutId,
|
|
22005
22168
|
style: style2,
|
|
@@ -22148,7 +22311,15 @@ var isFirefox = () => safeNavigator && /Firefox\/\d+\.\d+$/u.test(safeNavigator.
|
|
|
22148
22311
|
var isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent);
|
|
22149
22312
|
var isEdge = () => safeNavigator && /Edg\//u.test(safeNavigator.userAgent);
|
|
22150
22313
|
var isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent);
|
|
22151
|
-
var
|
|
22314
|
+
var iOSRegex = /iPhone|iPod|iPad/iu;
|
|
22315
|
+
var macIntelRegex = /MacIntel/iu;
|
|
22316
|
+
var isIOS = () => {
|
|
22317
|
+
if (!safeNavigator)
|
|
22318
|
+
return false;
|
|
22319
|
+
if (iOSRegex.test(safeNavigator.platform))
|
|
22320
|
+
return true;
|
|
22321
|
+
return macIntelRegex.test(safeNavigator.platform) && safeNavigator.maxTouchPoints && safeNavigator.maxTouchPoints > 2;
|
|
22322
|
+
};
|
|
22152
22323
|
var isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform);
|
|
22153
22324
|
var isWindows = () => safeNavigator && /Win/u.test(safeNavigator.platform);
|
|
22154
22325
|
var isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;
|
|
@@ -23471,39 +23642,59 @@ function useStableRefWithObserver() {
|
|
|
23471
23642
|
return ref.current;
|
|
23472
23643
|
},
|
|
23473
23644
|
set current(value) {
|
|
23645
|
+
if (value === ref.current)
|
|
23646
|
+
return;
|
|
23647
|
+
ref.current = value;
|
|
23474
23648
|
if (refCallback)
|
|
23475
23649
|
refCallback(value);
|
|
23476
|
-
|
|
23477
|
-
|
|
23478
|
-
|
|
23479
|
-
|
|
23480
|
-
|
|
23481
|
-
|
|
23482
|
-
|
|
23483
|
-
cleanups.set(callback, cleanup);
|
|
23650
|
+
cleanups.forEach((cleanup, callback) => {
|
|
23651
|
+
if (cleanup) {
|
|
23652
|
+
cleanup();
|
|
23653
|
+
}
|
|
23654
|
+
else {
|
|
23655
|
+
callback(null);
|
|
23656
|
+
}
|
|
23484
23657
|
});
|
|
23485
|
-
if (
|
|
23486
|
-
cleanups.forEach((cleanup) => cleanup());
|
|
23658
|
+
if (value === null) {
|
|
23487
23659
|
cleanups.clear();
|
|
23660
|
+
callbacks.clear();
|
|
23661
|
+
return;
|
|
23488
23662
|
}
|
|
23663
|
+
callbacks.forEach((callback) => {
|
|
23664
|
+
const cleanup = callback(value);
|
|
23665
|
+
cleanups.set(callback, cleanup);
|
|
23666
|
+
});
|
|
23489
23667
|
},
|
|
23490
|
-
|
|
23491
|
-
|
|
23492
|
-
|
|
23668
|
+
/**
|
|
23669
|
+
* Adds `fn` to the list of callbacks to be called when the ref is updated.
|
|
23670
|
+
* Executes `fn` immediately if the ref already has a value.
|
|
23671
|
+
*/
|
|
23672
|
+
observe(fn) {
|
|
23493
23673
|
callbacks.add(fn);
|
|
23494
|
-
|
|
23495
|
-
|
|
23674
|
+
const value = ref.current;
|
|
23675
|
+
if (value) {
|
|
23676
|
+
const cleanup = fn(value);
|
|
23677
|
+
cleanups.set(fn, cleanup);
|
|
23678
|
+
}
|
|
23496
23679
|
},
|
|
23680
|
+
/**
|
|
23681
|
+
* Removes `fn` from the list of callbacks.
|
|
23682
|
+
* Runs the cleanup for `fn` if it has been called before.
|
|
23683
|
+
*/
|
|
23497
23684
|
unobserve(fn) {
|
|
23498
|
-
if (fn)
|
|
23499
|
-
|
|
23500
|
-
|
|
23501
|
-
|
|
23502
|
-
|
|
23503
|
-
|
|
23504
|
-
|
|
23505
|
-
|
|
23506
|
-
|
|
23685
|
+
if (!fn)
|
|
23686
|
+
return;
|
|
23687
|
+
callbacks.delete(fn);
|
|
23688
|
+
if (!cleanups.has(fn))
|
|
23689
|
+
return;
|
|
23690
|
+
const cleanupFn = cleanups.get(fn);
|
|
23691
|
+
if (cleanupFn) {
|
|
23692
|
+
cleanupFn();
|
|
23693
|
+
}
|
|
23694
|
+
else {
|
|
23695
|
+
fn(null);
|
|
23696
|
+
}
|
|
23697
|
+
cleanups.delete(fn);
|
|
23507
23698
|
},
|
|
23508
23699
|
};
|
|
23509
23700
|
});
|
|
@@ -23520,32 +23711,22 @@ function useObserverRef(forwardedRef) {
|
|
|
23520
23711
|
});
|
|
23521
23712
|
}
|
|
23522
23713
|
function useRefEffect(ref, effect, deps) {
|
|
23523
|
-
var _a;
|
|
23524
23714
|
const effectRef = useRef3();
|
|
23525
23715
|
const depsChangedRef = useRef3();
|
|
23526
23716
|
useMemoOne(() => {
|
|
23527
|
-
if (depsChangedRef.current !== void 0)
|
|
23717
|
+
if (depsChangedRef.current !== void 0) {
|
|
23528
23718
|
depsChangedRef.current = true;
|
|
23719
|
+
}
|
|
23529
23720
|
}, deps ?? [{},]);
|
|
23530
23721
|
if (!ref)
|
|
23531
23722
|
return;
|
|
23532
23723
|
const depsChanged = depsChangedRef.current;
|
|
23533
|
-
if (depsChanged)
|
|
23534
|
-
depsChangedRef.current = false;
|
|
23535
|
-
if (!ref.cleanup(effectRef.current)) {
|
|
23536
|
-
(_a = effectRef.current) == null ? void 0 : _a.call(effectRef, null);
|
|
23537
|
-
}
|
|
23538
|
-
const value = ref.current;
|
|
23539
|
-
if (value)
|
|
23540
|
-
effect == null ? void 0 : effect(value);
|
|
23541
|
-
}
|
|
23542
|
-
if (effectRef.current === effect)
|
|
23724
|
+
if (depsChanged === false)
|
|
23543
23725
|
return;
|
|
23726
|
+
depsChangedRef.current = false;
|
|
23544
23727
|
ref.unobserve(effectRef.current);
|
|
23728
|
+
ref.observe(effect);
|
|
23545
23729
|
effectRef.current = effect;
|
|
23546
|
-
ref.observe(effect, depsChanged);
|
|
23547
|
-
if (depsChangedRef.current === void 0)
|
|
23548
|
-
depsChangedRef.current = false;
|
|
23549
23730
|
}
|
|
23550
23731
|
var SharedIntersectionObserver = class {
|
|
23551
23732
|
constructor(options) {
|
|
@@ -26315,7 +26496,7 @@ function collectBoxShadowsForProps(props, style2) {
|
|
|
26315
26496
|
return;
|
|
26316
26497
|
style2.boxShadow = boxShadow;
|
|
26317
26498
|
}
|
|
26318
|
-
function shadowForShape(boxShadows, rect, shapeId,
|
|
26499
|
+
function shadowForShape(boxShadows, rect, shapeId, fillEnabled, strokeEnabled, strokeWidth, strokeClipId, svgStrokeAttributes) {
|
|
26319
26500
|
const definition = [];
|
|
26320
26501
|
let outsetElement = null;
|
|
26321
26502
|
let insetElement = null;
|
|
@@ -26402,6 +26583,7 @@ function shadowForShape(boxShadows, rect, shapeId, strokeAlpha, strokeWidth, str
|
|
|
26402
26583
|
/* @__PURE__ */ jsx3('use', {
|
|
26403
26584
|
href: shapeId.link,
|
|
26404
26585
|
fill: 'black',
|
|
26586
|
+
fillOpacity: fillEnabled ? void 0 : 0,
|
|
26405
26587
|
}),
|
|
26406
26588
|
],
|
|
26407
26589
|
});
|
|
@@ -26412,9 +26594,10 @@ function shadowForShape(boxShadows, rect, shapeId, strokeAlpha, strokeWidth, str
|
|
|
26412
26594
|
children: /* @__PURE__ */ jsx3('use', {
|
|
26413
26595
|
...svgStrokeAttributes,
|
|
26414
26596
|
fill: 'black',
|
|
26597
|
+
fillOpacity: fillEnabled ? void 0 : 0,
|
|
26415
26598
|
stroke: 'black',
|
|
26416
|
-
strokeOpacity:
|
|
26417
|
-
strokeWidth:
|
|
26599
|
+
strokeOpacity: strokeEnabled ? void 0 : 0,
|
|
26600
|
+
strokeWidth: strokeEnabled ? strokeWidth : 0,
|
|
26418
26601
|
xlinkHref: shapeId.link,
|
|
26419
26602
|
clipPath: strokeClipId.urlLink,
|
|
26420
26603
|
}),
|
|
@@ -30677,7 +30860,7 @@ function useParallax(options, ref, visibilityStyle) {
|
|
|
30677
30860
|
const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? 'hidden' : visibilityStyle);
|
|
30678
30861
|
const defaultValue = useMotionValue(0);
|
|
30679
30862
|
useRefEffect(ref, (element) => {
|
|
30680
|
-
if (element === null)
|
|
30863
|
+
if (element === null || !parallaxTransformEnabled)
|
|
30681
30864
|
return;
|
|
30682
30865
|
frame.read(() => {
|
|
30683
30866
|
var _a;
|
|
@@ -30689,8 +30872,12 @@ function useParallax(options, ref, visibilityStyle) {
|
|
|
30689
30872
|
visibility.set(visibilityStyle ?? 'initial');
|
|
30690
30873
|
}
|
|
30691
30874
|
});
|
|
30692
|
-
}, [adjustPosition,]);
|
|
30693
|
-
useOnRouteChange(() =>
|
|
30875
|
+
}, [adjustPosition, parallaxTransformEnabled,]);
|
|
30876
|
+
useOnRouteChange(() => {
|
|
30877
|
+
if (!parallaxTransformEnabled)
|
|
30878
|
+
return;
|
|
30879
|
+
parallaxY.set(0);
|
|
30880
|
+
});
|
|
30694
30881
|
return {
|
|
30695
30882
|
values: {
|
|
30696
30883
|
y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY,
|
|
@@ -31288,8 +31475,13 @@ function extractFXOptions(props) {
|
|
|
31288
31475
|
},
|
|
31289
31476
|
loop: {},
|
|
31290
31477
|
forwardedProps: {},
|
|
31478
|
+
targetOpacityValue: props.__targetOpacity,
|
|
31479
|
+
withPerspective: props.__perspectiveFX,
|
|
31480
|
+
inSmartComponent: props.__smartComponentFX,
|
|
31291
31481
|
};
|
|
31292
31482
|
for (const key7 in props) {
|
|
31483
|
+
if (key7 === '__targetOpacity' || key7 === '__perspectiveFX' || key7 === '__smartComponentFX')
|
|
31484
|
+
continue;
|
|
31293
31485
|
const strippedKey = stripPrefixFromPrefixedKey(key7);
|
|
31294
31486
|
if (strippedKey) {
|
|
31295
31487
|
for (const group of groupValues) {
|
|
@@ -31348,9 +31540,7 @@ var withFX = (Component17) => React4.forwardRef((props, forwardedRef) => {
|
|
|
31348
31540
|
ref: forwardedRef,
|
|
31349
31541
|
});
|
|
31350
31542
|
}
|
|
31351
|
-
const { parallax = {}, styleAppear = {}, styleTransform = {}, presence = {}, loop = {}, forwardedProps, } = extractFXOptions(props);
|
|
31352
|
-
const { __targetOpacity: targetOpacityValue, __perspectiveFX: withPerspective, __smartComponentFX: inSmartComponent = false, } = props;
|
|
31353
|
-
const targetOpacity = useMotionValue(targetOpacityValue ?? 1);
|
|
31543
|
+
const { parallax = {}, styleAppear = {}, styleTransform = {}, presence = {}, loop = {}, forwardedProps, targetOpacityValue, withPerspective, inSmartComponent = false, } = extractFXOptions(props);
|
|
31354
31544
|
const observerRef = useObserverRef(forwardedRef);
|
|
31355
31545
|
const { values: presenceEffectValues, style: presenceEffectStyle, } = usePresenceAnimation(presence, observerRef, inSmartComponent, props.style, props[optimizedAppearDataAttribute]);
|
|
31356
31546
|
const { values: parallaxValues, style: parallaxStyle, } = useParallax(parallax, observerRef, (_a = props.style) == null ? void 0 : _a.visibility);
|
|
@@ -31358,16 +31548,10 @@ var withFX = (Component17) => React4.forwardRef((props, forwardedRef) => {
|
|
|
31358
31548
|
const { values: appearEffectValues, style: scrollAppearStyle, } = useStyleAppearEffect(styleAppear, observerRef);
|
|
31359
31549
|
const { values: loopValues, style: loopStyle, } = useLoop(loop, observerRef);
|
|
31360
31550
|
const fxValues = React4.useMemo(() => {
|
|
31551
|
+
const layerOpacity = new MotionValue(targetOpacityValue ?? 1);
|
|
31361
31552
|
return {
|
|
31362
31553
|
scale: [appearEffectValues.scale, loopValues.scale, presenceEffectValues.scale, transformValues2.scale,],
|
|
31363
|
-
opacity: [
|
|
31364
|
-
appearEffectValues.opacity,
|
|
31365
|
-
loopValues.opacity,
|
|
31366
|
-
presenceEffectValues.opacity,
|
|
31367
|
-
// Ensure that the layers opacity is always represented.
|
|
31368
|
-
targetOpacity,
|
|
31369
|
-
transformValues2.opacity,
|
|
31370
|
-
],
|
|
31554
|
+
opacity: [appearEffectValues.opacity, loopValues.opacity, presenceEffectValues.opacity, layerOpacity, transformValues2.opacity,],
|
|
31371
31555
|
x: [appearEffectValues.x, loopValues.x, presenceEffectValues.x, transformValues2.x,],
|
|
31372
31556
|
y: [appearEffectValues.y, loopValues.y, parallaxValues.y, presenceEffectValues.y, transformValues2.y,],
|
|
31373
31557
|
rotate: [appearEffectValues.rotate, loopValues.rotate, presenceEffectValues.rotate, transformValues2.rotate,],
|
|
@@ -31381,7 +31565,7 @@ var withFX = (Component17) => React4.forwardRef((props, forwardedRef) => {
|
|
|
31381
31565
|
// value here on purpose.
|
|
31382
31566
|
],
|
|
31383
31567
|
};
|
|
31384
|
-
}, [
|
|
31568
|
+
}, [targetOpacityValue, transformValues2, parallaxValues, appearEffectValues, loopValues, presenceEffectValues,]);
|
|
31385
31569
|
addMotionValueStyle(props.style, fxValues);
|
|
31386
31570
|
const scale2 = useTransform(fxValues.scale, multiply);
|
|
31387
31571
|
const opacity = useTransform(fxValues.opacity, multiply);
|
|
@@ -32449,7 +32633,7 @@ function motionOriginFromFloatingPosition(placement = 'bottom', alignment = 'cen
|
|
|
32449
32633
|
assertNever(placement);
|
|
32450
32634
|
}
|
|
32451
32635
|
}
|
|
32452
|
-
function
|
|
32636
|
+
function domReadGetAncestorInfo(anchorRef) {
|
|
32453
32637
|
var _a;
|
|
32454
32638
|
let el = anchorRef.current;
|
|
32455
32639
|
const info = {
|
|
@@ -32469,12 +32653,11 @@ function getAncestorInfo(anchorRef) {
|
|
|
32469
32653
|
}
|
|
32470
32654
|
return info;
|
|
32471
32655
|
}
|
|
32472
|
-
function
|
|
32473
|
-
|
|
32474
|
-
|
|
32475
|
-
return [startLoop, cancelLoop,];
|
|
32656
|
+
function domReadStartAnimationFrameLoop(onRead) {
|
|
32657
|
+
frame.read(onRead, true);
|
|
32658
|
+
return () => cancelFrame(onRead);
|
|
32476
32659
|
}
|
|
32477
|
-
function
|
|
32660
|
+
function domWriteCreateUpdateSafeArea(safeAreaRef) {
|
|
32478
32661
|
let x = 0;
|
|
32479
32662
|
let y = 0;
|
|
32480
32663
|
return (anchorRect, calculatedRect, placement, event) => {
|
|
@@ -32486,7 +32669,7 @@ function createUpdateSafeArea(safeAreaRef) {
|
|
|
32486
32669
|
Object.assign(safeAreaRef.current.style, floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect));
|
|
32487
32670
|
};
|
|
32488
32671
|
}
|
|
32489
|
-
function
|
|
32672
|
+
function domWriteUpdatePosition(floatingPositionRef, position, rect) {
|
|
32490
32673
|
if (!floatingPositionRef.current)
|
|
32491
32674
|
return;
|
|
32492
32675
|
Object.assign(floatingPositionRef.current.style, {
|
|
@@ -32497,7 +32680,11 @@ function updatePosition(floatingPositionRef, position, rect) {
|
|
|
32497
32680
|
top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollY) + 'px',
|
|
32498
32681
|
});
|
|
32499
32682
|
}
|
|
32500
|
-
var FloatingStackingContext = /* @__PURE__ */
|
|
32683
|
+
var FloatingStackingContext = /* @__PURE__ */ (() => {
|
|
32684
|
+
const Context2 = React4.createContext(/* @__PURE__ */ new Set());
|
|
32685
|
+
Context2.displayName = 'FloatingStackingContext';
|
|
32686
|
+
return Context2;
|
|
32687
|
+
})();
|
|
32501
32688
|
function useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, { safeArea, onDismiss, }) {
|
|
32502
32689
|
const descendantStackingContext = useConstant2(() => /* @__PURE__ */ new Set());
|
|
32503
32690
|
const ancestorStackingContext = React4.useContext(FloatingStackingContext);
|
|
@@ -32604,70 +32791,98 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
|
|
|
32604
32791
|
React4.useLayoutEffect(() => {
|
|
32605
32792
|
if (!refHasValue(anchorRef) || !contentRef.current || !placement || !alignment)
|
|
32606
32793
|
return;
|
|
32607
|
-
const { position, scrolls, } = getAncestorInfo(anchorRef);
|
|
32608
|
-
const elementRect = contentRef.current.getBoundingClientRect();
|
|
32609
|
-
const initialAnchorRect = anchorRef.current.getBoundingClientRect();
|
|
32610
32794
|
const offset = {
|
|
32611
32795
|
x: offsetX ?? 0,
|
|
32612
32796
|
y: offsetY ?? 0,
|
|
32613
32797
|
};
|
|
32614
|
-
|
|
32615
|
-
|
|
32616
|
-
|
|
32617
|
-
|
|
32618
|
-
|
|
32619
|
-
|
|
32620
|
-
|
|
32621
|
-
height: safeWindow.innerHeight,
|
|
32622
|
-
}
|
|
32623
|
-
: void 0,
|
|
32624
|
-
collisionDetectionPadding,
|
|
32625
|
-
});
|
|
32626
|
-
const [initialSafePlacement, initialCalculatedRect,] = getSafePlacementRect(initialAnchorRect, elementRect);
|
|
32627
|
-
frame.update(() => {
|
|
32628
|
-
updateOrigin(initialSafePlacement);
|
|
32629
|
-
});
|
|
32630
|
-
frame.render(() => {
|
|
32631
|
-
if (!floatingPositionRef.current)
|
|
32632
|
-
return;
|
|
32633
|
-
updatePosition(floatingPositionRef, position, initialCalculatedRect);
|
|
32634
|
-
});
|
|
32635
|
-
const updateSafeArea = createUpdateSafeArea(safeAreaRef);
|
|
32636
|
-
let anchorRect = initialAnchorRect;
|
|
32798
|
+
let getSafePlacementRect;
|
|
32799
|
+
let position;
|
|
32800
|
+
let cleanup;
|
|
32801
|
+
let cleanupHasRun = false;
|
|
32802
|
+
let initialUpdateHasRun = false;
|
|
32803
|
+
let anchorRect;
|
|
32804
|
+
let elementRect;
|
|
32637
32805
|
let safePlacement;
|
|
32638
32806
|
let calculatedRect;
|
|
32807
|
+
let scrolls;
|
|
32639
32808
|
let latestEvent;
|
|
32640
|
-
|
|
32641
|
-
updateOrigin(safePlacement);
|
|
32642
|
-
};
|
|
32809
|
+
let updateSafeArea;
|
|
32643
32810
|
const onRender = () => {
|
|
32644
|
-
|
|
32811
|
+
if (cleanupHasRun)
|
|
32812
|
+
return;
|
|
32813
|
+
domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
|
|
32645
32814
|
if (safeArea)
|
|
32646
32815
|
updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);
|
|
32647
32816
|
latestEvent = void 0;
|
|
32648
32817
|
};
|
|
32649
|
-
const
|
|
32818
|
+
const initialRender = () => {
|
|
32819
|
+
updateSafeArea = domWriteCreateUpdateSafeArea(safeAreaRef);
|
|
32820
|
+
if (latestEvent) {
|
|
32821
|
+
onRender();
|
|
32822
|
+
}
|
|
32823
|
+
else {
|
|
32824
|
+
domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
|
|
32825
|
+
}
|
|
32826
|
+
initialUpdateHasRun = true;
|
|
32827
|
+
};
|
|
32828
|
+
const onUpdate = () => {
|
|
32829
|
+
if (cleanupHasRun)
|
|
32830
|
+
return;
|
|
32831
|
+
updateOrigin(safePlacement);
|
|
32832
|
+
};
|
|
32833
|
+
const domReadUpdateSafePlacementAndRect = () => {
|
|
32834
|
+
if (!getSafePlacementRect || cleanupHasRun)
|
|
32835
|
+
return;
|
|
32650
32836
|
anchorRect = anchorRef.current.getBoundingClientRect();
|
|
32651
32837
|
const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);
|
|
32652
32838
|
safePlacement = safePlacementAndRect[0];
|
|
32653
32839
|
calculatedRect = safePlacementAndRect[1];
|
|
32654
|
-
frame.update(onUpdate);
|
|
32655
|
-
frame.render(onRender);
|
|
32656
32840
|
};
|
|
32657
|
-
|
|
32658
|
-
|
|
32659
|
-
|
|
32660
|
-
|
|
32661
|
-
|
|
32841
|
+
frame.read(() => {
|
|
32842
|
+
if (cleanupHasRun || !contentRef.current)
|
|
32843
|
+
return;
|
|
32844
|
+
const ancestorInfo = domReadGetAncestorInfo(anchorRef);
|
|
32845
|
+
position = ancestorInfo.position;
|
|
32846
|
+
elementRect = contentRef.current.getBoundingClientRect();
|
|
32847
|
+
getSafePlacementRect = makeGetSafePlacementFloatingPositionRect({
|
|
32848
|
+
placement,
|
|
32849
|
+
alignment,
|
|
32850
|
+
offset,
|
|
32851
|
+
collisionDetectionSize: collisionDetection
|
|
32852
|
+
? {
|
|
32853
|
+
width: safeWindow.innerWidth,
|
|
32854
|
+
height: safeWindow.innerHeight,
|
|
32855
|
+
}
|
|
32856
|
+
: void 0,
|
|
32857
|
+
collisionDetectionPadding,
|
|
32858
|
+
});
|
|
32859
|
+
domReadUpdateSafePlacementAndRect();
|
|
32860
|
+
frame.update(onUpdate);
|
|
32861
|
+
frame.render(initialRender);
|
|
32862
|
+
if (!ancestorInfo.scrolls)
|
|
32863
|
+
return;
|
|
32864
|
+
cleanup = domReadStartAnimationFrameLoop(domReadUpdateSafePlacementAndRect);
|
|
32865
|
+
});
|
|
32866
|
+
if (!safeArea) {
|
|
32867
|
+
return () => {
|
|
32868
|
+
cleanup == null ? void 0 : cleanup();
|
|
32869
|
+
cleanupHasRun = true;
|
|
32870
|
+
};
|
|
32871
|
+
}
|
|
32662
32872
|
const handleMouseMove = (event) => {
|
|
32663
32873
|
latestEvent = event;
|
|
32664
|
-
|
|
32874
|
+
if (!initialUpdateHasRun)
|
|
32875
|
+
return;
|
|
32876
|
+
frame.read(domReadUpdateSafePlacementAndRect);
|
|
32877
|
+
frame.update(onUpdate, false, true);
|
|
32878
|
+
frame.render(onRender, false, true);
|
|
32665
32879
|
};
|
|
32666
32880
|
const anchor = anchorRef.current;
|
|
32667
32881
|
anchor.addEventListener('mousemove', handleMouseMove);
|
|
32668
32882
|
return () => {
|
|
32669
|
-
cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();
|
|
32670
32883
|
anchor.removeEventListener('mousemove', handleMouseMove);
|
|
32884
|
+
cleanup == null ? void 0 : cleanup();
|
|
32885
|
+
cleanupHasRun = true;
|
|
32671
32886
|
};
|
|
32672
32887
|
}, [safeArea, placement, alignment, offsetX, offsetY, anchorRef, collisionDetection, collisionDetectionPadding, updateOrigin,]);
|
|
32673
32888
|
const descendantContext = useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, {
|
|
@@ -33325,25 +33540,23 @@ var AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {
|
|
|
33325
33540
|
AnchorLinkTarget2['_self'] = '_self';
|
|
33326
33541
|
return AnchorLinkTarget2;
|
|
33327
33542
|
})(AnchorLinkTarget || {});
|
|
33328
|
-
function propsForLink(href,
|
|
33543
|
+
function propsForLink(href, options) {
|
|
33329
33544
|
const isInternal = isInternalURL(href);
|
|
33330
|
-
const
|
|
33331
|
-
|
|
33332
|
-
|
|
33333
|
-
|
|
33334
|
-
|
|
33335
|
-
|
|
33336
|
-
|
|
33337
|
-
|
|
33338
|
-
|
|
33339
|
-
|
|
33340
|
-
|
|
33341
|
-
|
|
33342
|
-
: {
|
|
33343
|
-
href,
|
|
33344
|
-
target,
|
|
33345
|
-
rel,
|
|
33545
|
+
const props = {
|
|
33546
|
+
href: href === '' || isValidURL(href, isInternal) ? href : `https://${href}`,
|
|
33547
|
+
target: getTargetAttrValue(options == null ? void 0 : options.openInNewTab, isInternal),
|
|
33548
|
+
rel: !isInternal ? combineRels('noopener', options == null ? void 0 : options.rel) : void 0,
|
|
33549
|
+
};
|
|
33550
|
+
if (options == null ? void 0 : options.preserveParams) {
|
|
33551
|
+
props.href = forwardCurrentQueryParams(props.href ?? href);
|
|
33552
|
+
props['data-framer-preserve-params'] = true;
|
|
33553
|
+
}
|
|
33554
|
+
if (options == null ? void 0 : options.trackLinkClick) {
|
|
33555
|
+
props.onClick = () => {
|
|
33556
|
+
void options.trackLinkClick(href);
|
|
33346
33557
|
};
|
|
33558
|
+
}
|
|
33559
|
+
return props;
|
|
33347
33560
|
}
|
|
33348
33561
|
function getTargetAttrValue(openInNewTab, isInternal) {
|
|
33349
33562
|
if (openInNewTab !== void 0) {
|
|
@@ -33351,6 +33564,15 @@ function getTargetAttrValue(openInNewTab, isInternal) {
|
|
|
33351
33564
|
}
|
|
33352
33565
|
return isInternal ? void 0 : '_blank';
|
|
33353
33566
|
}
|
|
33567
|
+
function combineRels(rel, otherRel) {
|
|
33568
|
+
if (rel && !otherRel)
|
|
33569
|
+
return rel;
|
|
33570
|
+
if (!rel && otherRel)
|
|
33571
|
+
return otherRel;
|
|
33572
|
+
if (rel && otherRel)
|
|
33573
|
+
return `${rel} ${otherRel}`;
|
|
33574
|
+
return void 0;
|
|
33575
|
+
}
|
|
33354
33576
|
function linkInfoKey(link) {
|
|
33355
33577
|
var _a, _b;
|
|
33356
33578
|
return `${link.scopeId}:${link.nodeId}:${(_a = link.furthestExternalComponent) == null ? void 0 : _a.scopeId}:${(_b = link.furthestExternalComponent) == null ? void 0 : _b.nodeId}`;
|
|
@@ -33608,15 +33830,15 @@ function createOnClickLinkHandler(router, routeId, href, trackLinkClick, element
|
|
|
33608
33830
|
performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll, track);
|
|
33609
33831
|
};
|
|
33610
33832
|
}
|
|
33611
|
-
function propsForRoutePath(href,
|
|
33833
|
+
function propsForRoutePath(href, router, currentRoute, linkOptions, implicitPathVariables) {
|
|
33612
33834
|
if (!currentRoute)
|
|
33613
|
-
return propsForLink(href,
|
|
33835
|
+
return propsForLink(href, linkOptions);
|
|
33614
33836
|
const matchedRoute = findMatchingRouteAttributesForResolvedPath(router, href, implicitPathVariables);
|
|
33615
33837
|
if (!matchedRoute)
|
|
33616
|
-
return propsForLink(href,
|
|
33838
|
+
return propsForLink(href, linkOptions);
|
|
33617
33839
|
const { routeId, route, elementId, pathVariables, } = matchedRoute;
|
|
33618
33840
|
if (!route)
|
|
33619
|
-
return propsForLink(href,
|
|
33841
|
+
return propsForLink(href, linkOptions);
|
|
33620
33842
|
const path = getPathForRoute(route, {
|
|
33621
33843
|
// If the link is resolved, we trust that the slugs are resolved.
|
|
33622
33844
|
currentRoutePath: currentRoute.path,
|
|
@@ -33629,16 +33851,16 @@ function propsForRoutePath(href, openInNewTab, router, currentRoute, trackLinkCl
|
|
|
33629
33851
|
// don't preserve query params for bots
|
|
33630
33852
|
siteCanonicalURL: router.siteCanonicalURL,
|
|
33631
33853
|
});
|
|
33632
|
-
const anchorTarget = getTargetAttrValue(openInNewTab, true);
|
|
33854
|
+
const anchorTarget = getTargetAttrValue(linkOptions.openInNewTab, true);
|
|
33633
33855
|
return {
|
|
33634
33856
|
href: path,
|
|
33635
33857
|
target: anchorTarget,
|
|
33636
|
-
onClick: createOnClickLinkHandler(router, routeId, path, trackLinkClick, elementId, pathVariables, smoothScroll),
|
|
33637
|
-
navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),
|
|
33858
|
+
onClick: createOnClickLinkHandler(router, routeId, path, linkOptions.trackLinkClick, elementId, pathVariables, linkOptions.smoothScroll),
|
|
33859
|
+
navigate: () => performNavigation(router, routeId, elementId, pathVariables, linkOptions.smoothScroll),
|
|
33638
33860
|
'data-framer-page-link-current': !elementId && currentRoute.id === routeId || void 0,
|
|
33639
33861
|
};
|
|
33640
33862
|
}
|
|
33641
|
-
var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(function Link2({ children, href, openInNewTab, smoothScroll, clickTrackingId, nodeId, scopeId, motionChild, ...restProps }, forwardedRef) {
|
|
33863
|
+
var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(function Link2({ children, href, openInNewTab, smoothScroll, clickTrackingId, relValues, preserveParams, nodeId, scopeId, motionChild, ...restProps }, forwardedRef) {
|
|
33642
33864
|
const router = useRouter();
|
|
33643
33865
|
const currentRoute = useCurrentRoute();
|
|
33644
33866
|
const implicitPathVariables = useImplicitPathVariables();
|
|
@@ -33657,7 +33879,13 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
|
|
|
33657
33879
|
if (!pageLink)
|
|
33658
33880
|
return {};
|
|
33659
33881
|
if (isString(pageLink)) {
|
|
33660
|
-
return propsForRoutePath(pageLink,
|
|
33882
|
+
return propsForRoutePath(pageLink, router, currentRoute, {
|
|
33883
|
+
openInNewTab,
|
|
33884
|
+
trackLinkClick,
|
|
33885
|
+
rel: relValues == null ? void 0 : relValues.join(' '),
|
|
33886
|
+
preserveParams,
|
|
33887
|
+
smoothScroll,
|
|
33888
|
+
}, implicitPathVariables);
|
|
33661
33889
|
}
|
|
33662
33890
|
const { routeId, href: resolvedHref, elementId, pathVariables, } = findMatchingRouteAttributesForWebPageLinkWithSuspense(router, currentRoute, pageLink, activeLocale, implicitPathVariables);
|
|
33663
33891
|
const anchorTarget = getTargetAttrValue(openInNewTab, true);
|
|
@@ -33668,7 +33896,18 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
|
|
|
33668
33896
|
navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),
|
|
33669
33897
|
'data-framer-page-link-current': currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0,
|
|
33670
33898
|
};
|
|
33671
|
-
}, [
|
|
33899
|
+
}, [
|
|
33900
|
+
href,
|
|
33901
|
+
router,
|
|
33902
|
+
activeLocale,
|
|
33903
|
+
implicitPathVariables,
|
|
33904
|
+
openInNewTab,
|
|
33905
|
+
currentRoute,
|
|
33906
|
+
smoothScroll,
|
|
33907
|
+
trackLinkClick,
|
|
33908
|
+
relValues,
|
|
33909
|
+
preserveParams,
|
|
33910
|
+
]);
|
|
33672
33911
|
const hasRef = isValidElement(children) && 'ref' in children;
|
|
33673
33912
|
const observerRef = useObserverRef(hasRef ? children.ref : void 0);
|
|
33674
33913
|
useRefEffect(observerRef, (node) => {
|
|
@@ -34249,6 +34488,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34249
34488
|
const scheduleSideEffect = useScheduleRenderSideEffects(dep);
|
|
34250
34489
|
const startNavigation = useNavigationTransition();
|
|
34251
34490
|
const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender('framer-route-change');
|
|
34491
|
+
const isInitialNavigationRef = useRef3(true);
|
|
34252
34492
|
const currentRouteRef = useRef3(initialRoute);
|
|
34253
34493
|
const currentPathVariablesRef = useRef3(initialPathVariables);
|
|
34254
34494
|
const currentLocaleIdRef = useRef3(initialLocaleId);
|
|
@@ -34302,6 +34542,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34302
34542
|
return;
|
|
34303
34543
|
const currentStatePaginationInfo = isHistoryState(window.history.state) ? window.history.state.paginationInfo : void 0;
|
|
34304
34544
|
const currentPath = localeResult.path;
|
|
34545
|
+
isInitialNavigationRef.current = false;
|
|
34305
34546
|
currentPathVariablesRef.current = localeResult.pathVariables;
|
|
34306
34547
|
currentLocaleIdRef.current = nextLocale.id;
|
|
34307
34548
|
const updateURL = async (ignorePushStateWrapper = false) => {
|
|
@@ -34333,6 +34574,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34333
34574
|
monitorNextPaintAfterRender,
|
|
34334
34575
|
]);
|
|
34335
34576
|
const setCurrentRouteId = useCallback((routeId, localeId, hash2, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {
|
|
34577
|
+
isInitialNavigationRef.current = false;
|
|
34336
34578
|
const currentRouteId2 = currentRouteRef.current;
|
|
34337
34579
|
currentRouteRef.current = routeId;
|
|
34338
34580
|
currentPathVariablesRef.current = pathVariables;
|
|
@@ -34430,6 +34672,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34430
34672
|
const currentRoute = routes[currentRouteId];
|
|
34431
34673
|
const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;
|
|
34432
34674
|
const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale);
|
|
34675
|
+
const isInitialNavigation = isInitialNavigationRef.current;
|
|
34433
34676
|
const api = useMemo2(() => ({
|
|
34434
34677
|
navigate,
|
|
34435
34678
|
getRoute,
|
|
@@ -34440,6 +34683,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34440
34683
|
preserveQueryParams,
|
|
34441
34684
|
pageviewEventData,
|
|
34442
34685
|
siteCanonicalURL,
|
|
34686
|
+
isInitialNavigation,
|
|
34443
34687
|
}), [
|
|
34444
34688
|
navigate,
|
|
34445
34689
|
getRoute,
|
|
@@ -34450,6 +34694,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
|
|
|
34450
34694
|
preserveQueryParams,
|
|
34451
34695
|
siteCanonicalURL,
|
|
34452
34696
|
pageviewEventData,
|
|
34697
|
+
isInitialNavigation,
|
|
34453
34698
|
]);
|
|
34454
34699
|
if (!currentRoute) {
|
|
34455
34700
|
throw new Error(`Router cannot find route for ${currentRouteId}`);
|
|
@@ -35249,6 +35494,7 @@ var CompatibilityDatabaseCollection = class {
|
|
|
35249
35494
|
assert(definition.type !== 'unknown', 'Invalid definition type');
|
|
35250
35495
|
data2[key7] = {
|
|
35251
35496
|
type: definition.type,
|
|
35497
|
+
// biome-ignore lint/suspicious/noExplicitAny: Existing.
|
|
35252
35498
|
value,
|
|
35253
35499
|
};
|
|
35254
35500
|
}
|
|
@@ -35553,6 +35799,23 @@ function castRichText(value) {
|
|
|
35553
35799
|
}
|
|
35554
35800
|
return null;
|
|
35555
35801
|
}
|
|
35802
|
+
function compareVectorSetItem(left, right) {
|
|
35803
|
+
const leftValue = left.value;
|
|
35804
|
+
const rightValue = right.value;
|
|
35805
|
+
if (leftValue < rightValue)
|
|
35806
|
+
return -1;
|
|
35807
|
+
if (leftValue > rightValue)
|
|
35808
|
+
return 1;
|
|
35809
|
+
return 0;
|
|
35810
|
+
}
|
|
35811
|
+
function castVectorSetItem(value) {
|
|
35812
|
+
switch (value == null ? void 0 : value.type) {
|
|
35813
|
+
case 'vectorsetitem': {
|
|
35814
|
+
return value;
|
|
35815
|
+
}
|
|
35816
|
+
}
|
|
35817
|
+
return null;
|
|
35818
|
+
}
|
|
35556
35819
|
function compareString(left, right, collation11) {
|
|
35557
35820
|
let leftValue = left.value;
|
|
35558
35821
|
let rightValue = right.value;
|
|
@@ -35614,6 +35877,8 @@ var DatabaseValue = {
|
|
|
35614
35877
|
return castRichText(value);
|
|
35615
35878
|
case 'string':
|
|
35616
35879
|
return castString(value);
|
|
35880
|
+
case 'vectorsetitem':
|
|
35881
|
+
return castVectorSetItem(value);
|
|
35617
35882
|
case 'unknown':
|
|
35618
35883
|
return value;
|
|
35619
35884
|
default:
|
|
@@ -35795,6 +36060,8 @@ var DatabaseValue = {
|
|
|
35795
36060
|
return `'${value.value}' /* Date */`;
|
|
35796
36061
|
case 'richtext':
|
|
35797
36062
|
return 'RichText';
|
|
36063
|
+
case 'vectorsetitem':
|
|
36064
|
+
return 'VectorSetItem';
|
|
35798
36065
|
case 'responsiveimage':
|
|
35799
36066
|
return 'ResponsiveImage';
|
|
35800
36067
|
case 'file':
|
|
@@ -35858,6 +36125,10 @@ function compare(left, right, collation11) {
|
|
|
35858
36125
|
assert(left.type === right.type);
|
|
35859
36126
|
return compareRichText(left, right);
|
|
35860
36127
|
}
|
|
36128
|
+
case 'vectorsetitem': {
|
|
36129
|
+
assert(left.type === right.type);
|
|
36130
|
+
return compareVectorSetItem(left, right);
|
|
36131
|
+
}
|
|
35861
36132
|
case 'string': {
|
|
35862
36133
|
assert(left.type === right.type);
|
|
35863
36134
|
return compareString(left, right, collation11);
|
|
@@ -36098,7 +36369,7 @@ function calculateHash(name, ...values) {
|
|
|
36098
36369
|
});
|
|
36099
36370
|
return Hash(`${name}(${hashes.join(', ')})`);
|
|
36100
36371
|
}
|
|
36101
|
-
var
|
|
36372
|
+
var RichTextResolver = class {
|
|
36102
36373
|
constructor(data2, pointer) {
|
|
36103
36374
|
this.data = data2;
|
|
36104
36375
|
this.pointer = pointer;
|
|
@@ -36109,6 +36380,18 @@ var RichText = class {
|
|
|
36109
36380
|
return this.cached;
|
|
36110
36381
|
}
|
|
36111
36382
|
};
|
|
36383
|
+
var VectorSetItemResolver = class {
|
|
36384
|
+
constructor(data2, pointer) {
|
|
36385
|
+
this.data = data2;
|
|
36386
|
+
this.pointer = pointer;
|
|
36387
|
+
__publicField(this, 'cached');
|
|
36388
|
+
}
|
|
36389
|
+
resolve() {
|
|
36390
|
+
assert(this.data.resolveVectorSetItem, 'Can\'t resolve vector set item.');
|
|
36391
|
+
this.cached ??= this.data.resolveVectorSetItem(this.pointer);
|
|
36392
|
+
return this.cached;
|
|
36393
|
+
}
|
|
36394
|
+
};
|
|
36112
36395
|
var VIRTUAL_INDEX_FIELD = 'index';
|
|
36113
36396
|
var Metadata = class extends Set {
|
|
36114
36397
|
merge(other) {
|
|
@@ -36203,7 +36486,14 @@ var FieldMetadata = class {
|
|
|
36203
36486
|
assert(this.collection, 'Rich text field must have a collection');
|
|
36204
36487
|
return {
|
|
36205
36488
|
type: 'richtext',
|
|
36206
|
-
value: new
|
|
36489
|
+
value: new RichTextResolver(this.collection.data, value.value),
|
|
36490
|
+
};
|
|
36491
|
+
}
|
|
36492
|
+
if ((value == null ? void 0 : value.type) === 'vectorsetitem') {
|
|
36493
|
+
assert(this.collection, 'Vector set item field must have a collection');
|
|
36494
|
+
return {
|
|
36495
|
+
type: 'vectorsetitem',
|
|
36496
|
+
value: new VectorSetItemResolver(this.collection.data, value.value),
|
|
36207
36497
|
};
|
|
36208
36498
|
}
|
|
36209
36499
|
return value ?? null;
|
|
@@ -39207,10 +39497,14 @@ var EnforcerResolve = class _EnforcerResolve extends EnforcerNode {
|
|
|
39207
39497
|
for (const tuple of input.tuples) {
|
|
39208
39498
|
for (const field of this.fields) {
|
|
39209
39499
|
const value = tuple.getValue(field);
|
|
39210
|
-
if ((value == null ? void 0 : value.type)
|
|
39211
|
-
|
|
39212
|
-
|
|
39213
|
-
|
|
39500
|
+
if ((value == null ? void 0 : value.type) === 'richtext') {
|
|
39501
|
+
assert(value.value instanceof RichTextResolver, 'Pointer must be wrapped');
|
|
39502
|
+
void value.value.resolve();
|
|
39503
|
+
}
|
|
39504
|
+
else if ((value == null ? void 0 : value.type) === 'vectorsetitem') {
|
|
39505
|
+
assert(value.value instanceof VectorSetItemResolver, 'Pointer must be wrapped');
|
|
39506
|
+
void value.value.resolve();
|
|
39507
|
+
}
|
|
39214
39508
|
}
|
|
39215
39509
|
}
|
|
39216
39510
|
const collectionItems = yield Promise.all(Array.from(collections).map(async (collection) => {
|
|
@@ -39543,7 +39837,11 @@ ${stringifyQuery(query)}`);
|
|
|
39543
39837
|
}
|
|
39544
39838
|
async resolveValue(value) {
|
|
39545
39839
|
if ((value == null ? void 0 : value.type) === 'richtext') {
|
|
39546
|
-
assert(value.value instanceof
|
|
39840
|
+
assert(value.value instanceof RichTextResolver, 'Pointer must be wrapped');
|
|
39841
|
+
return value.value.resolve();
|
|
39842
|
+
}
|
|
39843
|
+
if ((value == null ? void 0 : value.type) === 'vectorsetitem') {
|
|
39844
|
+
assert(value.value instanceof VectorSetItemResolver, 'Pointer must be wrapped');
|
|
39547
39845
|
return value.value.resolve();
|
|
39548
39846
|
}
|
|
39549
39847
|
if ((value == null ? void 0 : value.type) === 'array') {
|
|
@@ -40520,9 +40818,9 @@ function useRunCallbackIfElementIsInView() {
|
|
|
40520
40818
|
queuedMicrotask = true;
|
|
40521
40819
|
queueMicrotask(() => {
|
|
40522
40820
|
var _a;
|
|
40821
|
+
queuedMicrotask = false;
|
|
40523
40822
|
if (!isInViewRef.current)
|
|
40524
40823
|
return;
|
|
40525
|
-
queuedMicrotask = false;
|
|
40526
40824
|
(_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);
|
|
40527
40825
|
});
|
|
40528
40826
|
};
|
|
@@ -40812,6 +41110,11 @@ function tryToApplyOverride(Component17, override) {
|
|
|
40812
41110
|
function valueWithMirroring(value, mirror) {
|
|
40813
41111
|
return mirror ? wrap(0, 2, value) : value;
|
|
40814
41112
|
}
|
|
41113
|
+
function singleFrame() {
|
|
41114
|
+
return new Promise((resolve) => {
|
|
41115
|
+
frame.postRender(() => resolve());
|
|
41116
|
+
});
|
|
41117
|
+
}
|
|
40815
41118
|
var withV1StrokeFX = (Component17) => forwardRef((props, forwardedRef) => {
|
|
40816
41119
|
const { strokeEffectLength, strokeEffectGap, strokeEffectOffset, strokeEffectLoop, strokeEffectTotalLength, strokeEffectLoopType, pathLengthTransition, ...restProps } = props;
|
|
40817
41120
|
const isCanvas = isStaticRenderer();
|
|
@@ -40829,11 +41132,11 @@ var withV1StrokeFX = (Component17) => forwardRef((props, forwardedRef) => {
|
|
|
40829
41132
|
while (true) {
|
|
40830
41133
|
if (signal.signal.aborted)
|
|
40831
41134
|
break;
|
|
40832
|
-
const mirror = strokeEffectLoopType === 'mirror';
|
|
41135
|
+
const mirror = strokeEffectLoop && strokeEffectLoopType === 'mirror';
|
|
40833
41136
|
const from = valueWithMirroring(index, mirror);
|
|
40834
41137
|
const to = valueWithMirroring(index + 1, mirror);
|
|
40835
|
-
await animate(offset, [from, to,], pathLengthTransition);
|
|
40836
|
-
if (!strokeEffectLoop
|
|
41138
|
+
await Promise.all([animate(offset, [from, to,], pathLengthTransition), singleFrame(),]);
|
|
41139
|
+
if (!strokeEffectLoop)
|
|
40837
41140
|
break;
|
|
40838
41141
|
if (strokeEffectLoop && strokeEffectLoopType === 'repeat')
|
|
40839
41142
|
continue;
|
|
@@ -42002,6 +42305,8 @@ var variantsNameToWeight = {
|
|
|
42002
42305
|
extrabold: 800,
|
|
42003
42306
|
'extrabold-italic': 800,
|
|
42004
42307
|
black: 900,
|
|
42308
|
+
extralight: 100,
|
|
42309
|
+
'extralight-italic': 100,
|
|
42005
42310
|
'black-italic': 900,
|
|
42006
42311
|
'extra-italic': 900,
|
|
42007
42312
|
'extra-italic-bold': 900,
|
|
@@ -42270,7 +42575,7 @@ async function loadFontsWithOpenType(source) {
|
|
|
42270
42575
|
return supportedFonts == null ? void 0 : supportedFonts.default;
|
|
42271
42576
|
}
|
|
42272
42577
|
case 'fontshare': {
|
|
42273
|
-
const supportedFonts = await import('./framer-chunks/fontshare-
|
|
42578
|
+
const supportedFonts = await import('./framer-chunks/fontshare-GSJIWLGZ-3DSFZVD7.js');
|
|
42274
42579
|
return supportedFonts == null ? void 0 : supportedFonts.default;
|
|
42275
42580
|
}
|
|
42276
42581
|
default:
|
|
@@ -42284,7 +42589,7 @@ async function loadFontToOpenTypeFeatures(source) {
|
|
|
42284
42589
|
return features == null ? void 0 : features.default;
|
|
42285
42590
|
}
|
|
42286
42591
|
case 'fontshare': {
|
|
42287
|
-
const features = await import('./framer-chunks/fontshare-
|
|
42592
|
+
const features = await import('./framer-chunks/fontshare-SSHBFVID-JIQZ2OLR.js');
|
|
42288
42593
|
return features == null ? void 0 : features.default;
|
|
42289
42594
|
}
|
|
42290
42595
|
case 'framer': {
|
|
@@ -42808,10 +43113,10 @@ function loadVariationAxes(source) {
|
|
|
42808
43113
|
const axes = (async () => {
|
|
42809
43114
|
switch (source) {
|
|
42810
43115
|
case 'google': {
|
|
42811
|
-
return (await import('./framer-chunks/google-
|
|
43116
|
+
return (await import('./framer-chunks/google-42BCYVR5-QT55MZO3.js')).default;
|
|
42812
43117
|
}
|
|
42813
43118
|
case 'fontshare': {
|
|
42814
|
-
return (await import('./framer-chunks/fontshare-
|
|
43119
|
+
return (await import('./framer-chunks/fontshare-X6MCIXW5-UOB5XTBQ.js')).default;
|
|
42815
43120
|
}
|
|
42816
43121
|
default:
|
|
42817
43122
|
assertNever(source);
|
|
@@ -42993,11 +43298,12 @@ var FontStore = class {
|
|
|
42993
43298
|
if (builtInFontLocator) {
|
|
42994
43299
|
const fontVariant = BuiltInFontSource.parseVariant(builtInFontLocator.variant);
|
|
42995
43300
|
if (isSuccessfullyParsedFontVariant(fontVariant)) {
|
|
43301
|
+
const family = builtInFontLocator.isVariable ? createVariableFontFamilyName(builtInFontLocator.name) : builtInFontLocator.name;
|
|
42996
43302
|
return {
|
|
42997
43303
|
style: fontVariant.style,
|
|
42998
43304
|
weight: fontVariant.weight,
|
|
42999
43305
|
variant: builtInFontLocator.variant,
|
|
43000
|
-
family
|
|
43306
|
+
family,
|
|
43001
43307
|
source: 'builtIn',
|
|
43002
43308
|
category: void 0,
|
|
43003
43309
|
};
|
|
@@ -43762,14 +44068,103 @@ var trimSlugRegExp = /^-+|-+$/gu;
|
|
|
43762
44068
|
function slugify(value) {
|
|
43763
44069
|
return value.toLowerCase().replace(nonSlugCharactersRegExp, '-').replace(trimSlugRegExp, '');
|
|
43764
44070
|
}
|
|
43765
|
-
var
|
|
43766
|
-
|
|
43767
|
-
|
|
43768
|
-
|
|
43769
|
-
|
|
43770
|
-
|
|
43771
|
-
|
|
43772
|
-
|
|
44071
|
+
var frameFromElement = (element) => {
|
|
44072
|
+
const frame2 = Rect.fromRect(element.getBoundingClientRect());
|
|
44073
|
+
frame2.x = frame2.x + safeWindow.scrollX;
|
|
44074
|
+
frame2.y = frame2.y + safeWindow.scrollY;
|
|
44075
|
+
return frame2;
|
|
44076
|
+
};
|
|
44077
|
+
var frameFromElements = (elements) => {
|
|
44078
|
+
return Rect.merge(...elements.map(frameFromElement));
|
|
44079
|
+
};
|
|
44080
|
+
var convertToPageFrame = (frame2, element) => {
|
|
44081
|
+
const point2 = convertToPagePoint(frame2, element);
|
|
44082
|
+
return {
|
|
44083
|
+
x: point2.x,
|
|
44084
|
+
y: point2.y,
|
|
44085
|
+
width: frame2.width,
|
|
44086
|
+
height: frame2.height,
|
|
44087
|
+
};
|
|
44088
|
+
};
|
|
44089
|
+
var convertFromPageFrame = (frame2, element) => {
|
|
44090
|
+
const point2 = convertFromPagePoint(frame2, element);
|
|
44091
|
+
return {
|
|
44092
|
+
x: point2.x,
|
|
44093
|
+
y: point2.y,
|
|
44094
|
+
width: frame2.width,
|
|
44095
|
+
height: frame2.height,
|
|
44096
|
+
};
|
|
44097
|
+
};
|
|
44098
|
+
var getPageFrame = (element) => {
|
|
44099
|
+
const rect = element.getBoundingClientRect();
|
|
44100
|
+
return {
|
|
44101
|
+
x: rect.left + safeWindow.scrollX,
|
|
44102
|
+
y: rect.top + safeWindow.scrollY,
|
|
44103
|
+
width: rect.width,
|
|
44104
|
+
height: rect.height,
|
|
44105
|
+
};
|
|
44106
|
+
};
|
|
44107
|
+
var fromEventForPage = (event) => {
|
|
44108
|
+
return {
|
|
44109
|
+
x: event.pageX,
|
|
44110
|
+
y: event.pageY,
|
|
44111
|
+
};
|
|
44112
|
+
};
|
|
44113
|
+
var fromEventForClient = (event) => {
|
|
44114
|
+
return {
|
|
44115
|
+
x: event.clientX,
|
|
44116
|
+
y: event.clientY,
|
|
44117
|
+
};
|
|
44118
|
+
};
|
|
44119
|
+
var convertToPagePoint = (point2, element) => {
|
|
44120
|
+
const frame2 = getPageFrame(element);
|
|
44121
|
+
return {
|
|
44122
|
+
x: point2.x + frame2.x,
|
|
44123
|
+
y: point2.y + frame2.y,
|
|
44124
|
+
};
|
|
44125
|
+
};
|
|
44126
|
+
var convertFromPagePoint = (point2, element) => {
|
|
44127
|
+
const frame2 = getPageFrame(element);
|
|
44128
|
+
return {
|
|
44129
|
+
x: point2.x - frame2.x,
|
|
44130
|
+
y: point2.y - frame2.y,
|
|
44131
|
+
};
|
|
44132
|
+
};
|
|
44133
|
+
var dispatchKeyDownEvent = (keyCode, options = {}) => {
|
|
44134
|
+
const keyboardEvent = new KeyboardEvent('keydown', {
|
|
44135
|
+
bubbles: true,
|
|
44136
|
+
keyCode,
|
|
44137
|
+
...options,
|
|
44138
|
+
});
|
|
44139
|
+
const activeElement = document.activeElement;
|
|
44140
|
+
if (activeElement) {
|
|
44141
|
+
activeElement.dispatchEvent(keyboardEvent);
|
|
44142
|
+
}
|
|
44143
|
+
};
|
|
44144
|
+
var DOM = {
|
|
44145
|
+
frameFromElement,
|
|
44146
|
+
frameFromElements,
|
|
44147
|
+
convertToPageFrame,
|
|
44148
|
+
convertFromPageFrame,
|
|
44149
|
+
getPageFrame,
|
|
44150
|
+
fromEventForPage,
|
|
44151
|
+
fromEventForClient,
|
|
44152
|
+
convertToPagePoint,
|
|
44153
|
+
convertFromPagePoint,
|
|
44154
|
+
};
|
|
44155
|
+
var parser;
|
|
44156
|
+
var supportsNativeParseHTML = /* @__PURE__ */ (() =>
|
|
44157
|
+
// Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969
|
|
44158
|
+
!isFirefox() && typeof Document !== 'undefined' && typeof Document.parseHTMLUnsafe === 'function')();
|
|
44159
|
+
function domParser(html, type) {
|
|
44160
|
+
if (supportsNativeParseHTML && !type)
|
|
44161
|
+
return Document.parseHTMLUnsafe(html);
|
|
44162
|
+
parser ??= new DOMParser();
|
|
44163
|
+
return parser.parseFromString(html, type ?? 'text/html');
|
|
44164
|
+
}
|
|
44165
|
+
function escapeHTML(value) {
|
|
44166
|
+
return value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll('\'', ''');
|
|
44167
|
+
}
|
|
43773
44168
|
var regex = /(<([a-z]+)(?:\s+(?!href[\s=])[^=\s]+=(?:'[^']*'|"[^"]*"))*)(?:(\s+href\s*=)(?:'([^']*)'|"([^"]*)"))?((?:\s+[^=\s]+=(?:'[^']*'|"[^"]*"))*>)/gi;
|
|
43774
44169
|
function replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {
|
|
43775
44170
|
return rawHTML.replace(regex, (original, pre1, tag, pre2, value1, value2, post) => {
|
|
@@ -43814,18 +44209,6 @@ function replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVar
|
|
|
43814
44209
|
function isShallowEqualArray(a, b) {
|
|
43815
44210
|
return a.length === b.length && a.every((v, i) => v === b[i]);
|
|
43816
44211
|
}
|
|
43817
|
-
var htmlEscapes = {
|
|
43818
|
-
'&': '&',
|
|
43819
|
-
'<': '<',
|
|
43820
|
-
'>': '>',
|
|
43821
|
-
'"': '"',
|
|
43822
|
-
'\'': ''',
|
|
43823
|
-
};
|
|
43824
|
-
var reUnescapedHtml = /[&<>"']/gu;
|
|
43825
|
-
var reHasUnescapedHtml = /* @__PURE__ */ (() => new RegExp(reUnescapedHtml.source))();
|
|
43826
|
-
function escapeHTML2(str) {
|
|
43827
|
-
return str && reHasUnescapedHtml.test(str) ? str.replace(reUnescapedHtml, (chr) => htmlEscapes[chr] ?? '') : str || '';
|
|
43828
|
-
}
|
|
43829
44212
|
var deprecatedRichTextPlaceholder = '{{ text-placeholder }}';
|
|
43830
44213
|
var richTextWrapperClassName = 'rich-text-wrapper';
|
|
43831
44214
|
var DeprecatedRichText = /* @__PURE__ */ React2.forwardRef(function Text(props, forwardedRef) {
|
|
@@ -43850,14 +44233,14 @@ var DeprecatedRichText = /* @__PURE__ */ React2.forwardRef(function Text(props,
|
|
|
43850
44233
|
}
|
|
43851
44234
|
let innerHTML = '';
|
|
43852
44235
|
if (textOrOverride) {
|
|
43853
|
-
const escapedText =
|
|
44236
|
+
const escapedText = escapeHTML(textOrOverride);
|
|
43854
44237
|
innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;
|
|
43855
44238
|
}
|
|
43856
44239
|
else if (html) {
|
|
43857
44240
|
innerHTML = html;
|
|
43858
44241
|
}
|
|
43859
44242
|
else if (textFromDesign) {
|
|
43860
|
-
const escapedText =
|
|
44243
|
+
const escapedText = escapeHTML(textFromDesign);
|
|
43861
44244
|
innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;
|
|
43862
44245
|
}
|
|
43863
44246
|
else if (htmlFromDesign) {
|
|
@@ -44421,13 +44804,21 @@ function createLineGroups(elements) {
|
|
|
44421
44804
|
groups2.push(currentGroup);
|
|
44422
44805
|
return groups2;
|
|
44423
44806
|
}
|
|
44424
|
-
var
|
|
44807
|
+
var BaseSVG = /* @__PURE__ */ forwardRef(function BaseSVG2(props, forwardedRef) {
|
|
44425
44808
|
return (
|
|
44426
44809
|
// biome-ignore lint/a11y/noSvgWithoutTitle: FIXME: FitText might be inaccessible to screen readers because it’s wrapped in an svg
|
|
44427
44810
|
/* @__PURE__ */
|
|
44428
|
-
jsx3(
|
|
44429
|
-
ref,
|
|
44811
|
+
jsx3('svg', {
|
|
44430
44812
|
...props,
|
|
44813
|
+
ref: forwardedRef,
|
|
44814
|
+
children: props.children,
|
|
44815
|
+
}));
|
|
44816
|
+
});
|
|
44817
|
+
var MotionSVG = /* @__PURE__ */ motion.create(BaseSVG);
|
|
44818
|
+
var FitText = /* @__PURE__ */ forwardRef(function FitText2({ viewBoxScale, viewBox, children, ...props }, forwardedRef) {
|
|
44819
|
+
return /* @__PURE__ */ jsx3(MotionSVG, {
|
|
44820
|
+
...props,
|
|
44821
|
+
ref: forwardedRef,
|
|
44431
44822
|
viewBox,
|
|
44432
44823
|
children: /* @__PURE__ */ jsx3(motion.foreignObject, {
|
|
44433
44824
|
width: '100%',
|
|
@@ -44440,16 +44831,18 @@ var FitText = /* @__PURE__ */ forwardRef(({ viewBoxScale, viewBox, children, ...
|
|
|
44440
44831
|
},
|
|
44441
44832
|
children,
|
|
44442
44833
|
}),
|
|
44443
|
-
})
|
|
44834
|
+
});
|
|
44444
44835
|
});
|
|
44445
|
-
var
|
|
44446
|
-
|
|
44836
|
+
var defaultFonts = [];
|
|
44837
|
+
var richTextContainerComponentType = 'RichTextContainer';
|
|
44838
|
+
var RichTextContainer = /* @__PURE__ */ forwardRef(function RichTextContainer2(props, forwardedRef) {
|
|
44839
|
+
const { __fromCanvasComponent = false, _forwardedOverrideId, _forwardedOverrides, _usesDOMRect, anchorLinkOffsetY, as: _as, bottom, center, children, environment: environment2 = RenderTarget.current, fonts = defaultFonts, height, isEditable = false, left, name, opacity, positionSticky, positionStickyBottom, positionStickyLeft, positionStickyRight, positionStickyTop, right, rotation = 0, style: style2, _initialStyle, stylesPresetsClassNames, text: plainText, top, verticalAlignment = 'top', visible = true, width, withExternalLayout = false, viewBox, viewBoxScale = 1, effect, ...rest } = props;
|
|
44447
44840
|
const parentSize = useParentSize();
|
|
44448
44841
|
const isOnCanvas = useIsOnFramerCanvas();
|
|
44449
44842
|
const inCodeComponent = useContext(ComponentContainerContext);
|
|
44450
44843
|
const layoutId = useLayoutId2(props);
|
|
44451
44844
|
const fallbackRef = useRef3(null);
|
|
44452
|
-
const containerRef =
|
|
44845
|
+
const containerRef = forwardedRef ?? fallbackRef;
|
|
44453
44846
|
useMeasureLayout(props, containerRef);
|
|
44454
44847
|
useLoadFonts(fonts, __fromCanvasComponent, containerRef);
|
|
44455
44848
|
useInsertionEffect(() => {
|
|
@@ -44518,6 +44911,7 @@ var RichTextContainer = /* @__PURE__ */ forwardRef(function RichTextContainer2(p
|
|
|
44518
44911
|
rest.layout = 'preserve-aspect';
|
|
44519
44912
|
}
|
|
44520
44913
|
const Component17 = htmlElementAsMotionComponent(props.as);
|
|
44914
|
+
const dataFramerName = rest['data-framer-name'] ?? name;
|
|
44521
44915
|
if (isString(props.viewBox)) {
|
|
44522
44916
|
if (props.as !== void 0) {
|
|
44523
44917
|
return /* @__PURE__ */ jsx3(Component17, {
|
|
@@ -44526,8 +44920,8 @@ var RichTextContainer = /* @__PURE__ */ forwardRef(function RichTextContainer2(p
|
|
|
44526
44920
|
style: containerStyle,
|
|
44527
44921
|
layoutId,
|
|
44528
44922
|
transformTemplate: template,
|
|
44529
|
-
'data-framer-name':
|
|
44530
|
-
'data-framer-component-type':
|
|
44923
|
+
'data-framer-name': dataFramerName,
|
|
44924
|
+
'data-framer-component-type': richTextContainerComponentType,
|
|
44531
44925
|
children: /* @__PURE__ */ jsx3(FitText, {
|
|
44532
44926
|
viewBox,
|
|
44533
44927
|
viewBoxScale,
|
|
@@ -44548,8 +44942,8 @@ var RichTextContainer = /* @__PURE__ */ forwardRef(function RichTextContainer2(p
|
|
|
44548
44942
|
viewBox,
|
|
44549
44943
|
viewBoxScale,
|
|
44550
44944
|
transformTemplate: template,
|
|
44551
|
-
'data-framer-name':
|
|
44552
|
-
'data-framer-component-type':
|
|
44945
|
+
'data-framer-name': dataFramerName,
|
|
44946
|
+
'data-framer-component-type': richTextContainerComponentType,
|
|
44553
44947
|
children: processedChildren,
|
|
44554
44948
|
});
|
|
44555
44949
|
}
|
|
@@ -44560,8 +44954,8 @@ var RichTextContainer = /* @__PURE__ */ forwardRef(function RichTextContainer2(p
|
|
|
44560
44954
|
style: containerStyle,
|
|
44561
44955
|
layoutId,
|
|
44562
44956
|
transformTemplate: template,
|
|
44563
|
-
'data-framer-name':
|
|
44564
|
-
'data-framer-component-type':
|
|
44957
|
+
'data-framer-name': dataFramerName,
|
|
44958
|
+
'data-framer-component-type': richTextContainerComponentType,
|
|
44565
44959
|
children: processedChildren,
|
|
44566
44960
|
});
|
|
44567
44961
|
});
|
|
@@ -44637,7 +45031,7 @@ function extractTextFromReactNode(node) {
|
|
|
44637
45031
|
}
|
|
44638
45032
|
return '';
|
|
44639
45033
|
}
|
|
44640
|
-
var
|
|
45034
|
+
var RichText = /* @__PURE__ */ forwardRef(function RichText2({ children, html, htmlFromDesign, ...props }, forwardedRef) {
|
|
44641
45035
|
const content = html || children || htmlFromDesign;
|
|
44642
45036
|
if (isString(content)) {
|
|
44643
45037
|
if (!props.stylesPresetsClassName && isObject2(props.stylesPresetsClassNames)) {
|
|
@@ -44650,7 +45044,7 @@ var RichText2 = /* @__PURE__ */ forwardRef(function RichText3({ children, html,
|
|
|
44650
45044
|
return /* @__PURE__ */ jsx3(DeprecatedRichText, {
|
|
44651
45045
|
...props,
|
|
44652
45046
|
...contentProp,
|
|
44653
|
-
ref,
|
|
45047
|
+
ref: forwardedRef,
|
|
44654
45048
|
});
|
|
44655
45049
|
}
|
|
44656
45050
|
if (!props.stylesPresetsClassNames && isString(props.stylesPresetsClassName)) {
|
|
@@ -44670,7 +45064,7 @@ var RichText2 = /* @__PURE__ */ forwardRef(function RichText3({ children, html,
|
|
|
44670
45064
|
}
|
|
44671
45065
|
return /* @__PURE__ */ jsx3(RichTextContainer, {
|
|
44672
45066
|
...props,
|
|
44673
|
-
ref,
|
|
45067
|
+
ref: forwardedRef,
|
|
44674
45068
|
children: isValidElement(content) ? content : void 0,
|
|
44675
45069
|
});
|
|
44676
45070
|
});
|
|
@@ -44876,100 +45270,6 @@ var ImagePatternElement = ({ id: id3, path, transform: transform2, repeat, width
|
|
|
44876
45270
|
}, href),
|
|
44877
45271
|
});
|
|
44878
45272
|
};
|
|
44879
|
-
var frameFromElement = (element) => {
|
|
44880
|
-
const frame2 = Rect.fromRect(element.getBoundingClientRect());
|
|
44881
|
-
frame2.x = frame2.x + safeWindow.scrollX;
|
|
44882
|
-
frame2.y = frame2.y + safeWindow.scrollY;
|
|
44883
|
-
return frame2;
|
|
44884
|
-
};
|
|
44885
|
-
var frameFromElements = (elements) => {
|
|
44886
|
-
return Rect.merge(...elements.map(frameFromElement));
|
|
44887
|
-
};
|
|
44888
|
-
var convertToPageFrame = (frame2, element) => {
|
|
44889
|
-
const point2 = convertToPagePoint(frame2, element);
|
|
44890
|
-
return {
|
|
44891
|
-
x: point2.x,
|
|
44892
|
-
y: point2.y,
|
|
44893
|
-
width: frame2.width,
|
|
44894
|
-
height: frame2.height,
|
|
44895
|
-
};
|
|
44896
|
-
};
|
|
44897
|
-
var convertFromPageFrame = (frame2, element) => {
|
|
44898
|
-
const point2 = convertFromPagePoint(frame2, element);
|
|
44899
|
-
return {
|
|
44900
|
-
x: point2.x,
|
|
44901
|
-
y: point2.y,
|
|
44902
|
-
width: frame2.width,
|
|
44903
|
-
height: frame2.height,
|
|
44904
|
-
};
|
|
44905
|
-
};
|
|
44906
|
-
var getPageFrame = (element) => {
|
|
44907
|
-
const rect = element.getBoundingClientRect();
|
|
44908
|
-
return {
|
|
44909
|
-
x: rect.left + safeWindow.scrollX,
|
|
44910
|
-
y: rect.top + safeWindow.scrollY,
|
|
44911
|
-
width: rect.width,
|
|
44912
|
-
height: rect.height,
|
|
44913
|
-
};
|
|
44914
|
-
};
|
|
44915
|
-
var fromEventForPage = (event) => {
|
|
44916
|
-
return {
|
|
44917
|
-
x: event.pageX,
|
|
44918
|
-
y: event.pageY,
|
|
44919
|
-
};
|
|
44920
|
-
};
|
|
44921
|
-
var fromEventForClient = (event) => {
|
|
44922
|
-
return {
|
|
44923
|
-
x: event.clientX,
|
|
44924
|
-
y: event.clientY,
|
|
44925
|
-
};
|
|
44926
|
-
};
|
|
44927
|
-
var convertToPagePoint = (point2, element) => {
|
|
44928
|
-
const frame2 = getPageFrame(element);
|
|
44929
|
-
return {
|
|
44930
|
-
x: point2.x + frame2.x,
|
|
44931
|
-
y: point2.y + frame2.y,
|
|
44932
|
-
};
|
|
44933
|
-
};
|
|
44934
|
-
var convertFromPagePoint = (point2, element) => {
|
|
44935
|
-
const frame2 = getPageFrame(element);
|
|
44936
|
-
return {
|
|
44937
|
-
x: point2.x - frame2.x,
|
|
44938
|
-
y: point2.y - frame2.y,
|
|
44939
|
-
};
|
|
44940
|
-
};
|
|
44941
|
-
var dispatchKeyDownEvent = (keyCode, options = {}) => {
|
|
44942
|
-
const keyboardEvent = new KeyboardEvent('keydown', {
|
|
44943
|
-
bubbles: true,
|
|
44944
|
-
keyCode,
|
|
44945
|
-
...options,
|
|
44946
|
-
});
|
|
44947
|
-
const activeElement = document.activeElement;
|
|
44948
|
-
if (activeElement) {
|
|
44949
|
-
activeElement.dispatchEvent(keyboardEvent);
|
|
44950
|
-
}
|
|
44951
|
-
};
|
|
44952
|
-
var DOM = {
|
|
44953
|
-
frameFromElement,
|
|
44954
|
-
frameFromElements,
|
|
44955
|
-
convertToPageFrame,
|
|
44956
|
-
convertFromPageFrame,
|
|
44957
|
-
getPageFrame,
|
|
44958
|
-
fromEventForPage,
|
|
44959
|
-
fromEventForClient,
|
|
44960
|
-
convertToPagePoint,
|
|
44961
|
-
convertFromPagePoint,
|
|
44962
|
-
};
|
|
44963
|
-
var parser;
|
|
44964
|
-
var supportsNativeParseHTML = /* @__PURE__ */ (() =>
|
|
44965
|
-
// Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969
|
|
44966
|
-
!isFirefox() && typeof Document !== 'undefined' && typeof Document.parseHTMLUnsafe === 'function')();
|
|
44967
|
-
function domParser(html, type) {
|
|
44968
|
-
if (supportsNativeParseHTML && !type)
|
|
44969
|
-
return Document.parseHTMLUnsafe(html);
|
|
44970
|
-
parser ??= new DOMParser();
|
|
44971
|
-
return parser.parseFromString(html, type ?? 'text/html');
|
|
44972
|
-
}
|
|
44973
45273
|
var useDOM = /* @__PURE__ */ isBrowser2();
|
|
44974
45274
|
var SharedSVGEntry = class {
|
|
44975
45275
|
constructor(id3, svg, innerHTML, viewBox, count = 0) {
|
|
@@ -46326,7 +46626,7 @@ var Vector = /* @__PURE__ */ (() => {
|
|
|
46326
46626
|
return _a = class extends Layer {
|
|
46327
46627
|
render() {
|
|
46328
46628
|
countNodeRender();
|
|
46329
|
-
const { opacity, calculatedPath, calculatedPathBoundingBox, d, insideStroke, strokeEnabled, strokeClipId, strokeWidth, idAttribute, shadows,
|
|
46629
|
+
const { opacity, calculatedPath, calculatedPathBoundingBox, d, insideStroke, strokeEnabled, strokeClipId, strokeWidth, idAttribute, shadows, name, includeTransform, isRootVectorNode, rotation, id: id3, lineCap, lineJoin, strokeColor, strokeMiterLimit, strokeDashArray, strokeDashOffset, fill, variants, transition, fillOpacity, visible, x, y, width, height, } = this.props;
|
|
46330
46630
|
if (!visible)
|
|
46331
46631
|
return null;
|
|
46332
46632
|
if (!id3 || !strokeClipId)
|
|
@@ -46425,7 +46725,7 @@ var Vector = /* @__PURE__ */ (() => {
|
|
|
46425
46725
|
// Shadow filter uses 'objectBoundingBox' as filter units, so calculations should be
|
|
46426
46726
|
// relative to the referenced object itself (path), instead of the node rect, which
|
|
46427
46727
|
// can be larger than the path bounding box.
|
|
46428
|
-
calculatedPathBoundingBox, internalShapeId,
|
|
46728
|
+
calculatedPathBoundingBox, internalShapeId, Boolean(fill), strokeEnabled, strokeWidth, internalStrokeClipId, svgStrokeAttributes);
|
|
46429
46729
|
const currentName = target === RenderTarget.preview ? name || void 0 : void 0;
|
|
46430
46730
|
if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {
|
|
46431
46731
|
pathAttributes.id = internalShapeId.id;
|
|
@@ -46993,8 +47293,8 @@ var package_default = {
|
|
|
46993
47293
|
scripts: {
|
|
46994
47294
|
coverage: 'yarn :jest --coverage',
|
|
46995
47295
|
lint: 'yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache',
|
|
46996
|
-
'lint:ci': 'yarn
|
|
46997
|
-
'lint:fix': 'yarn lint --fix
|
|
47296
|
+
'lint:ci': 'yarn lint --cache-strategy content --cache-location $HOME/.cache/eslint/framer-library',
|
|
47297
|
+
'lint:fix': 'yarn lint --fix',
|
|
46998
47298
|
test: 'yarn :jest',
|
|
46999
47299
|
watch: 'yarn :jest --watch',
|
|
47000
47300
|
postinstall: 'node postinstall.cjs',
|
|
@@ -47053,7 +47353,7 @@ MotionValue.prototype.addChild = function ({ transformer = (v) => v, }) {
|
|
|
47053
47353
|
if (false) {
|
|
47054
47354
|
MainLoop2.start();
|
|
47055
47355
|
}
|
|
47056
|
-
export { _injectRuntime, acceleratedValues2 as acceleratedValues, activeAnimations, addActionControls, addAttrValue, addFonts, addPointerEvent, addPointerInfo, addPropertyControls, addScaleCorrector, addStyleValue, addUniqueItem, alpha, analyseComplexValue, AnchorLinkTarget, Animatable, animate2 as animate, animateMini, AnimatePresence, AnimateSharedLayout, animateValue, animateView, animateVisualElement, animationControls, animationMapKey, animations, annotateTypeOnStringify, anticipate, AnyInterpolation, applyPxDefaults, AsyncMotionValueAnimation, attachSpring, attrEffect, AutomaticLayoutIds, BackgroundImage, backgroundImageFromProps, backIn, backInOut, backOut, BezierAnimator, BoxShadow, buildTransform2 as buildTransform, calcGeneratorDuration, calcLength, calculateRect, callEach, cancelFrame, cancelMicrotask, cancelSync, ChildrenCanSuspend, circIn, circInOut, circOut, clamp, clampRGB, collectMotionValues, collectVisualStyleFromProps, Color, color, ColorFormat, ColorMixModelType, combinedCSSRulesForPreview, complex, ComponentContainerContext, ComponentPresetsConsumer, ComponentPresetsProvider, ComponentViewportProvider, ConstraintMask, constraintsEnabled, ConstraintValues, Container, ControlType, ConvertColor, convertOffsetToTimes, convertPropsToDeviceOptions, createBox, createData, createFramerPageLink, createGeneratorEasing, createRenderBatcher, createRendererMotionComponent, createScopedAnimate, cssBackgroundSize, cubicBezier, cubicBezierAsString, CustomCursorHost, CustomProperties, cx, CycleVariantState, Data, DataContext, DataObserver, DataObserverContext, debounce, defaultDeviceProps, defaultEasing, defaultOffset, defaultTransformValue, defaultValueTypes, degrees, degreesToRadians, delay, DeprecatedComponentContainer, DeprecatedFrameWithEvents, DeprecatedLayoutGroupContext, DeprecatedLayoutGroupContext as LayoutGroupContext, Device, DeviceCodeComponent, devicePresets, DimensionType, dimensionValueTypes, disableInstantTransitions, dispatchKeyDownEvent, distance, distance2D, DOM, domAnimation, DOMKeyframesResolver, domMax, domMin, DragControls, Draggable, easeIn, easeInOut, easeOut, easingDefinitionToFunction, EmptyState, environment, ErrorPlaceholder, executeInRenderEnvironment, Fetcher, fillOffset, fillWildcards, filterProps, findDimensionValueType, findValueType, finiteNumber, FlatTree, Floating, flushKeyframeResolvers, FontSourceNames, fontStore, forceLayerBackingWithCSSProperties, FormBooleanInput, FormContainer, FormPlainTextInput2 as FormPlainTextInput, FormSelect, fraction, Frame, frame, frameData, frameFromElement, frameFromElements, FramerAnimation, framerAppearAnimationScriptKey, framerAppearEffects, framerAppearIdKey, framerAppearTransformTemplateToken, framerCSSMarker, FramerEvent, FramerEventListener, FramerEventSession, frameSteps, FrameWithMotion, GamepadContext, GeneratedComponentContext, generateLinearEasing, getAnimatableNone2 as getAnimatableNone, getAnimationMap, getComponentSize, getComputedStyle2 as getComputedStyle, getDefaultValueType, getDevicePreset, getEasingForSegment, getFonts, getFontsFromComponentPreset, getFontsFromSharedStyle, getLoadingLazyAtYPosition, getMeasurableCodeComponentChildren, getMixer, getPropertyControls, getValueAsType, getValueTransition, getVariableValue, getWhereExpressionFromPathVariables, GracefullyDegradingErrorBoundary, gradientForShape, GroupAnimation, GroupAnimationWithThen, hasWarned, hex, hover, hsla, hslaToRgba, Image2 as Image, imagePatternPropsForFill, imageUrlForAsset, inertia, inferInitialRouteFromPath, injectComponentCSSRules, installFlexboxGapWorkaroundIfNeeded, Instance, InternalID, interpolate, invariant, inView, invisibleValues, isAnimatable2 as isAnimatable, isBezierDefinition, isBrowser, isCSSVariableName, isCSSVariableToken, isDesignDefinition, isDragActive, isDragging, isEasingArray, isEqual, isFiniteNumber, isFractionDimension, isFramerGamepadKeydownData, isFramerPageLink, isGapEnabled, isGenerator, isHTMLElement, isMotionComponent, isMotionValue2 as isMotionValue, isNodeOrChild, isNumericalString, isObject, isOfAnnotatedType, isOverride, isPrimaryPointer, isReactDefinition, isRelativeNumber, isShallowEqualArray, isStaticRenderer, isStraightCurve, isSVGElement, isSVGSVGElement, isValidMotionProp, isWaapiSupportedEasing, isZeroValueString, JSAnimation, KeyframeResolver, keyframes, Layer, LayoutGroup, LayoutIdContext, lazy, LazyMotion, LazyValue, LibraryFeaturesProvider, Line, LinearGradient, Link, loadFont, loadJSON, localPackageFallbackIdentifier, localShadowFrame, m, MainLoop, makePaddingString, makeUseVisualState, mapEasingToNativeEasing, mapValue, markHydrationStart, maxGeneratorDuration, memo, memoize2 as memoize, microtask, millisecondsToSeconds, mirrorEasing, mix, mixArray, mixColor, mixComplex, mixImmediate, mixLinearColor, mixNumber, mixObject, mixVisibility, modulate, motion, MotionConfig, MotionConfigContext, MotionContext, MotionGlobalConfig, MotionSetup, MotionValue, motionValue, moveItem, namespace_exports as Reorder, NativeAnimation, NativeAnimationExtended, NativeAnimationWrapper, NavigateTo, NavigationCallbackProvider, NavigationConsumer, NavigationTransitionType, NavigationWrapper as Navigation, nestedLinksCollector, noop, NotFoundError, number, numberValueTypes, ObservableObject, observeTimeline, optimizeAppear, optimizeAppearTransformTemplate, optimizedAppearDataAttribute, paddingFromProps, Page3 as Page, PageEffectsProvider, PageRoot, ParentSizeState, parseCSSVariable, parseFramerPageLink, parseValueFromTransform, patchRoutesForABTesting, pathDefaults, PathSegment, PathVariablesContext, percent, pipe, Point, Polygon, positionalKeys, preloadImage, PresenceContext, press, print, progress, progressPercentage, propEffect, PropertyOverrides2 as PropertyOverrides, PropertyStore, propsForLink, pushLoadMoreHistory, px, QueryCache, QueryEngine, RadialGradient, readTransformValue, recordStats, Rect, removeHiddenBreakpointLayers, removeHiddenBreakpointLayersV2, removeItem, RenderTarget, resolveElements, resolveLink, ResolveLinks, resolveMotionValue, resolvePageScope, reverseEasing, rgba, rgbUnit,
|
|
47356
|
+
export { _injectRuntime, acceleratedValues2 as acceleratedValues, activeAnimations, addActionControls, addAttrValue, addFonts, addPointerEvent, addPointerInfo, addPropertyControls, addScaleCorrector, addStyleValue, addUniqueItem, alpha, analyseComplexValue, AnchorLinkTarget, Animatable, animate2 as animate, animateMini, AnimatePresence, AnimateSharedLayout, animateValue, animateView, animateVisualElement, animationControls, animationMapKey, animations, annotateTypeOnStringify, anticipate, AnyInterpolation, applyPxDefaults, AsyncMotionValueAnimation, attachSpring, attrEffect, AutomaticLayoutIds, BackgroundImage, backgroundImageFromProps, backIn, backInOut, backOut, BezierAnimator, BoxShadow, buildTransform2 as buildTransform, calcGeneratorDuration, calcLength, calculateRect, callEach, cancelFrame, cancelMicrotask, cancelSync, ChildrenCanSuspend, circIn, circInOut, circOut, clamp, clampRGB, collectMotionValues, collectVisualStyleFromProps, Color, color, ColorFormat, ColorMixModelType, combinedCSSRulesForPreview, complex, ComponentContainerContext, ComponentPresetsConsumer, ComponentPresetsProvider, ComponentViewportProvider, ConstraintMask, constraintsEnabled, ConstraintValues, Container, ControlType, ConvertColor, convertOffsetToTimes, convertPropsToDeviceOptions, createBox, createData, createFramerPageLink, createGeneratorEasing, createRenderBatcher, createRendererMotionComponent, createScopedAnimate, cssBackgroundSize, cubicBezier, cubicBezierAsString, CustomCursorHost, CustomProperties, cx, CycleVariantState, Data, DataContext, DataObserver, DataObserverContext, debounce, defaultDeviceProps, defaultEasing, defaultOffset, defaultTransformValue, defaultValueTypes, degrees, degreesToRadians, delay, DeprecatedComponentContainer, DeprecatedFrameWithEvents, DeprecatedLayoutGroupContext, DeprecatedLayoutGroupContext as LayoutGroupContext, Device, DeviceCodeComponent, devicePresets, DimensionType, dimensionValueTypes, disableInstantTransitions, dispatchKeyDownEvent, distance, distance2D, DOM, domAnimation, DOMKeyframesResolver, domMax, domMin, DragControls, Draggable, easeIn, easeInOut, easeOut, easingDefinitionToFunction, EmptyState, environment, ErrorPlaceholder, executeInRenderEnvironment, Fetcher, fillOffset, fillWildcards, filterProps, findDimensionValueType, findValueType, finiteNumber, FlatTree, Floating, flushKeyframeResolvers, FontSourceNames, fontStore, forceLayerBackingWithCSSProperties, FormBooleanInput, FormContainer, FormPlainTextInput2 as FormPlainTextInput, FormSelect, fraction, Frame, frame, frameData, frameFromElement, frameFromElements, FramerAnimation, framerAppearAnimationScriptKey, framerAppearEffects, framerAppearIdKey, framerAppearTransformTemplateToken, framerCSSMarker, FramerEvent, FramerEventListener, FramerEventSession, frameSteps, FrameWithMotion, GamepadContext, GeneratedComponentContext, generateLinearEasing, getAnimatableNone2 as getAnimatableNone, getAnimationMap, getComponentSize, getComputedStyle2 as getComputedStyle, getDefaultValueType, getDevicePreset, getEasingForSegment, getFonts, getFontsFromComponentPreset, getFontsFromSharedStyle, getLoadingLazyAtYPosition, getMeasurableCodeComponentChildren, getMixer, getPropertyControls, getValueAsType, getValueTransition, getVariableValue, getWhereExpressionFromPathVariables, GracefullyDegradingErrorBoundary, gradientForShape, GroupAnimation, GroupAnimationWithThen, hasWarned, hex, hover, hsla, hslaToRgba, Image2 as Image, imagePatternPropsForFill, imageUrlForAsset, inertia, inferInitialRouteFromPath, injectComponentCSSRules, installFlexboxGapWorkaroundIfNeeded, Instance, InternalID, interpolate, invariant, inView, invisibleValues, isAnimatable2 as isAnimatable, isBezierDefinition, isBrowser, isCSSVariableName, isCSSVariableToken, isDesignDefinition, isDragActive, isDragging, isEasingArray, isEqual, isFiniteNumber, isFractionDimension, isFramerGamepadKeydownData, isFramerPageLink, isGapEnabled, isGenerator, isHTMLElement, isMotionComponent, isMotionValue2 as isMotionValue, isNodeOrChild, isNumericalString, isObject, isOfAnnotatedType, isOverride, isPrimaryPointer, isReactDefinition, isRelativeNumber, isShallowEqualArray, isStaticRenderer, isStraightCurve, isSVGElement, isSVGSVGElement, isValidMotionProp, isWaapiSupportedEasing, isZeroValueString, JSAnimation, KeyframeResolver, keyframes, Layer, LayoutGroup, LayoutIdContext, lazy, LazyMotion, LazyValue, LibraryFeaturesProvider, Line, LinearGradient, Link, loadFont, loadJSON, localPackageFallbackIdentifier, localShadowFrame, m, MainLoop, makePaddingString, makeUseVisualState, mapEasingToNativeEasing, mapValue, markHydrationStart, maxGeneratorDuration, memo, memoize2 as memoize, microtask, millisecondsToSeconds, mirrorEasing, mix, mixArray, mixColor, mixComplex, mixImmediate, mixLinearColor, mixNumber, mixObject, mixVisibility, modulate, motion, MotionConfig, MotionConfigContext, MotionContext, MotionGlobalConfig, MotionSetup, MotionValue, motionValue, moveItem, namespace_exports as Reorder, NativeAnimation, NativeAnimationExtended, NativeAnimationWrapper, NavigateTo, NavigationCallbackProvider, NavigationConsumer, NavigationTransitionType, NavigationWrapper as Navigation, nestedLinksCollector, noop, NotFoundError, number, numberValueTypes, ObservableObject, observeTimeline, optimizeAppear, optimizeAppearTransformTemplate, optimizedAppearDataAttribute, paddingFromProps, Page3 as Page, PageEffectsProvider, PageRoot, ParentSizeState, parseCSSVariable, parseFramerPageLink, parseValueFromTransform, patchRoutesForABTesting, pathDefaults, PathSegment, PathVariablesContext, percent, pipe, Point, Polygon, positionalKeys, preloadImage, PresenceContext, press, print, progress, progressPercentage, propEffect, PropertyOverrides2 as PropertyOverrides, PropertyStore, propsForLink, pushLoadMoreHistory, px, QueryCache, QueryEngine, RadialGradient, readTransformValue, recordStats, Rect, removeHiddenBreakpointLayers, removeHiddenBreakpointLayersV2, removeItem, RenderTarget, resize, resolveElements, resolveLink, ResolveLinks, resolveMotionValue, resolvePageScope, reverseEasing, rgba, rgbUnit, RichText, roundedNumber, roundedNumberString, roundWithOffset, safeCSSValue, scale, Scroll, scroll, scrollInfo, secondsToMilliseconds, setDragLock, setGlobalRenderEnvironment, setStyle, Shadow, sharedSVGManager, shouldOpenLinkInNewTab, Size, SmartComponentScopedContainer, spring, SpringAnimator, springValue, SSRVariants, Stack, stagger, startAnimation, startOptimizedAppearAnimation, startWaapiAnimation, statsBuffer, steps, styleEffect, StyleSheetContext, SubscriptionManager, supportedWaapiEasing, supportsBrowserAnimation, supportsFlags, supportsLinearEasing, supportsPartialKeyframes, supportsScrollTimeline, SVG, svgEffect, SwitchLayoutGroupContext, sync, systemFontFamilyName, testValueType, Text2 as Text, throttle, time, toFlexDirection, toJustifyOrAlignment, toSVGPath, transform, transformPropOrder, transformProps, transformString2 as transformString, transformTemplate, transformValue, transformValueTypes, turnOffReactEventHandling, unwrapMotionComponent, useActiveTargetCallback, useActiveVariantCallback, useAddVariantProps, useAnimate, useAnimatedState, useAnimatedState as useDeprecatedAnimatedState, useAnimateMini, useAnimation, useAnimationControls, useAnimationFrame, useBreakpointVariants, useComponentViewport, useConstant2 as useConstant, useCurrentPathVariables, useCurrentRoute, useCurrentRouteId, useCustomCursors, useCycle, useDataRecord, useDomEvent, useDragControls, useDynamicRefs, useElementScroll, useForceUpdate, useGamepad, useHotkey, useHydratedBreakpointVariants, useInitialRouteComponent, useInstantLayoutTransition, useInstantTransition, useInvertedScale, useInvertedScale as useDeprecatedInvertedScale, useInView, useIsInCurrentNavigationTarget, useIsomorphicLayoutEffect, useIsOnFramerCanvas, useIsPresent, useIsStaticRenderer, useLoadMorePaginatedQuery, useLoadMorePagination, useLocale, useLocaleCode, useLocaleInfo, useLocalesForCurrentRoute, useLocalizationInfo, useMeasureLayout, useMetadata, useMotionTemplate, useMotionValue, useMotionValueEvent, useNavigate, useNavigation, useObserveData, useOnAppear, useOnCurrentTargetChange, useOnVariantChange, useOverlayState, usePageEffects, usePrefetch, usePreloadQuery, usePresence, usePresenceData, usePrototypeNavigate, useProvidedWindow, useQueryData, useReducedMotion, useReducedMotionConfig, useRenderEnvironment, useResetProjection, useRoute, useRouteAnchor, useRouteElementId, useRouteHandler, useRouter, useScroll, useSiteRefs, useSpring, useSVGTemplate, useTime, useTransform, useUnmountEffect, useVariantState, useVelocity, useViewportScroll, useWillChange, ValueInterpolation, valueToDimensionType, VariantSelector, Vector, VectorGroup, velocityPerSecond, version, vh, ViewTransitionBuilder, VisualElement, visualElementStore, vw, warning, warnOnce, WillChangeMotionValue, WindowContext, withCodeBoundaryForOverrides, withCSS, withFX, withGeneratedLayoutId, withInfiniteScroll, withMappedReactProps, withMeasuredSize, WithNavigator, withOpacity, withOptimizedAppearEffect, WithOverride, withParallaxTransform, withPath, withPerformanceMarks, withShape, withStyleAppearEffect, withV1StrokeFX, withVariantAppearEffect, withVariantFX, wrap, yieldToMain, };
|
|
47057
47357
|
//! Credit to Astro | MIT License
|
|
47058
47358
|
/**
|
|
47059
47359
|
* @license Emotion v11.0.0
|