unframer 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/framer.d.ts.map +1 -1
- package/dist/framer.js +901 -710
- package/dist/framer.js.map +1 -1
- package/esm/framer.d.ts.map +1 -1
- package/esm/framer.js +347 -162
- package/esm/framer.js.map +1 -1
- package/package.json +1 -1
- package/src/framer.js +390 -168
package/esm/framer.js
CHANGED
|
@@ -19,7 +19,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
19
19
|
return t;
|
|
20
20
|
};
|
|
21
21
|
// @ts-nocheck
|
|
22
|
-
// https :https://app.framerstatic.com/chunk-
|
|
22
|
+
// https :https://app.framerstatic.com/chunk-O7E5UDPD.js
|
|
23
23
|
import { createContext, } from 'react';
|
|
24
24
|
import { createContext as createContext2, } from 'react';
|
|
25
25
|
import { createContext as createContext3, } from 'react';
|
|
@@ -39,6 +39,7 @@ import { createElement as createElement2, Fragment, useMemo as useMemo4, } from
|
|
|
39
39
|
import { useMemo as useMemo2, } from 'react';
|
|
40
40
|
import { useMemo as useMemo3, } from 'react';
|
|
41
41
|
import React__default, { useContext as useContext6, } from 'react';
|
|
42
|
+
import React__default2 from 'react';
|
|
42
43
|
import { useCallback as useCallback2, useState, } from 'react';
|
|
43
44
|
import { useRef as useRef3, } from 'react';
|
|
44
45
|
import { useEffect as useEffect4, } from 'react';
|
|
@@ -1861,7 +1862,7 @@ var MotionValue = class {
|
|
|
1861
1862
|
* @internal
|
|
1862
1863
|
*/
|
|
1863
1864
|
constructor(init, options = {}) {
|
|
1864
|
-
this.version = '11.0.11-sync.
|
|
1865
|
+
this.version = '11.0.11-sync.5';
|
|
1865
1866
|
this.canTrackVelocity = false;
|
|
1866
1867
|
this.events = {};
|
|
1867
1868
|
this.updateAndNotify = (v, render = true) => {
|
|
@@ -3241,7 +3242,7 @@ function updateMotionValuesFromProps(element, next, prev) {
|
|
|
3241
3242
|
willChange.add(key7);
|
|
3242
3243
|
}
|
|
3243
3244
|
if (false) {
|
|
3244
|
-
warnOnce(nextValue.version === '11.0.11-sync.
|
|
3245
|
+
warnOnce(nextValue.version === '11.0.11-sync.5', `Attempting to mix Framer Motion versions ${nextValue.version} with 11.0.11-sync.5 may not work as expected.`);
|
|
3245
3246
|
}
|
|
3246
3247
|
}
|
|
3247
3248
|
else if (isMotionValue(prevValue)) {
|
|
@@ -3275,6 +3276,12 @@ function updateMotionValuesFromProps(element, next, prev) {
|
|
|
3275
3276
|
}
|
|
3276
3277
|
var featureNames = Object.keys(featureDefinitions);
|
|
3277
3278
|
var numFeatures = featureNames.length;
|
|
3279
|
+
function getClosestProjectingNode(visualElement) {
|
|
3280
|
+
if (!visualElement) {
|
|
3281
|
+
return void 0;
|
|
3282
|
+
}
|
|
3283
|
+
return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);
|
|
3284
|
+
}
|
|
3278
3285
|
var propEventHandlers = [
|
|
3279
3286
|
'AnimationStart',
|
|
3280
3287
|
'AnimationComplete',
|
|
@@ -3432,7 +3439,7 @@ var VisualElement = class {
|
|
|
3432
3439
|
}
|
|
3433
3440
|
}
|
|
3434
3441
|
if ((this.type === 'html' || this.type === 'svg') && !this.projection && ProjectionNodeConstructor) {
|
|
3435
|
-
this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent
|
|
3442
|
+
this.projection = new ProjectionNodeConstructor(this.latestValues, getClosestProjectingNode(this.parent));
|
|
3436
3443
|
const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;
|
|
3437
3444
|
this.projection.setOptions({
|
|
3438
3445
|
layoutId,
|
|
@@ -5426,7 +5433,10 @@ function buildProjectionTransform(delta, treeScale, latestTransform) {
|
|
|
5426
5433
|
transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;
|
|
5427
5434
|
}
|
|
5428
5435
|
if (latestTransform) {
|
|
5429
|
-
const { rotate, rotateX, rotateY, skewX, skewY, } = latestTransform;
|
|
5436
|
+
const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY, } = latestTransform;
|
|
5437
|
+
if (transformPerspective) {
|
|
5438
|
+
transform2 = `perspective(${transformPerspective}px) ${transform2}`;
|
|
5439
|
+
}
|
|
5430
5440
|
if (rotate) {
|
|
5431
5441
|
transform2 += `rotate(${rotate}deg) `;
|
|
5432
5442
|
}
|
|
@@ -6909,7 +6919,10 @@ var SVGVisualElement = class extends DOMVisualElement {
|
|
|
6909
6919
|
var createDomVisualElement = (Component23, options) => {
|
|
6910
6920
|
return isSVGComponent(Component23)
|
|
6911
6921
|
? new SVGVisualElement(options, { enableHardwareAcceleration: false, })
|
|
6912
|
-
: new HTMLVisualElement(options, {
|
|
6922
|
+
: new HTMLVisualElement(options, {
|
|
6923
|
+
enableHardwareAcceleration: true,
|
|
6924
|
+
allowProjection: Component23 !== React__default2.Fragment,
|
|
6925
|
+
});
|
|
6913
6926
|
};
|
|
6914
6927
|
var layout = {
|
|
6915
6928
|
layout: {
|
|
@@ -8782,7 +8795,7 @@ var cancelSync = stepsOrder.reduce((acc, key7) => {
|
|
|
8782
8795
|
acc[key7] = (process2) => cancelFrame(process2);
|
|
8783
8796
|
return acc;
|
|
8784
8797
|
}, {});
|
|
8785
|
-
// https :https://app.framerstatic.com/framer.
|
|
8798
|
+
// https :https://app.framerstatic.com/framer.L736M3IJ.js
|
|
8786
8799
|
import { Component as Component2, } from 'react';
|
|
8787
8800
|
import React12 from 'react';
|
|
8788
8801
|
import { jsx as _jsx5, } from 'react/jsx-runtime';
|
|
@@ -8958,13 +8971,18 @@ import { jsx as jsx54, jsxs as jsxs18, } from 'react/jsx-runtime';
|
|
|
8958
8971
|
import { jsx as jsx55, } from 'react/jsx-runtime';
|
|
8959
8972
|
import { jsx as jsx56, } from 'react/jsx-runtime';
|
|
8960
8973
|
import { jsx as jsx57, } from 'react/jsx-runtime';
|
|
8961
|
-
import
|
|
8962
|
-
import { jsx as jsx58, jsxs as jsxs19, } from 'react/jsx-runtime';
|
|
8963
|
-
import { Children as Children32, cloneElement as cloneElement32, forwardRef as forwardRef52, isValidElement as isValidElement32, useContext as useContext162, useInsertionEffect as useInsertionEffect42, useRef as useRef19, } from 'react';
|
|
8964
|
-
import * as React86 from 'react';
|
|
8974
|
+
import { jsx as jsx58, } from 'react/jsx-runtime';
|
|
8965
8975
|
import { useRef as useRef18, } from 'react';
|
|
8966
8976
|
import { jsx as jsx59, } from 'react/jsx-runtime';
|
|
8977
|
+
import { useRef as useRef19, } from 'react';
|
|
8967
8978
|
import { jsx as jsx60, } from 'react/jsx-runtime';
|
|
8979
|
+
import React85 from 'react';
|
|
8980
|
+
import { jsx as jsx61, jsxs as jsxs19, } from 'react/jsx-runtime';
|
|
8981
|
+
import { Children as Children32, cloneElement as cloneElement32, forwardRef as forwardRef52, isValidElement as isValidElement32, useContext as useContext162, useInsertionEffect as useInsertionEffect42, useRef as useRef21, } from 'react';
|
|
8982
|
+
import * as React86 from 'react';
|
|
8983
|
+
import { useRef as useRef20, } from 'react';
|
|
8984
|
+
import { jsx as jsx62, } from 'react/jsx-runtime';
|
|
8985
|
+
import { jsx as jsx63, } from 'react/jsx-runtime';
|
|
8968
8986
|
import { useEffect as useEffect142, useState as useState22, } from 'react';
|
|
8969
8987
|
var require_hsluv = __commonJS({
|
|
8970
8988
|
'../../../node_modules/hsluv/hsluv.js'(exports, module) {
|
|
@@ -11787,6 +11805,9 @@ function Point(x, y) {
|
|
|
11787
11805
|
Point2.angle = (a, b) => {
|
|
11788
11806
|
return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;
|
|
11789
11807
|
};
|
|
11808
|
+
Point2.angleFromX = (a, b) => {
|
|
11809
|
+
return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;
|
|
11810
|
+
};
|
|
11790
11811
|
Point2.isEqual = (a, b) => {
|
|
11791
11812
|
return a.x === b.x && a.y === b.y;
|
|
11792
11813
|
};
|
|
@@ -11816,25 +11837,6 @@ function Point(x, y) {
|
|
|
11816
11837
|
};
|
|
11817
11838
|
}
|
|
11818
11839
|
Point2.center = center;
|
|
11819
|
-
function insidePoints(point2, points) {
|
|
11820
|
-
var _f, _j, _k, _l;
|
|
11821
|
-
var _a, _b, _c, _d;
|
|
11822
|
-
const x = point2.x;
|
|
11823
|
-
const y = point2.y;
|
|
11824
|
-
let isInside = false;
|
|
11825
|
-
for (let i = 0, j = points.length - 1; i < points.length; j = i++) {
|
|
11826
|
-
const xi = (_f = ((_a = points[i]) == null ? void 0 : _a.x)) !== null && _f !== void 0 ? _f : 0;
|
|
11827
|
-
const yi = (_j = ((_b = points[i]) == null ? void 0 : _b.y)) !== null && _j !== void 0 ? _j : 0;
|
|
11828
|
-
const xj = (_k = ((_c = points[j]) == null ? void 0 : _c.x)) !== null && _k !== void 0 ? _k : 0;
|
|
11829
|
-
const yj = (_l = ((_d = points[j]) == null ? void 0 : _d.y)) !== null && _l !== void 0 ? _l : 0;
|
|
11830
|
-
const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
|
|
11831
|
-
if (intersect) {
|
|
11832
|
-
isInside = !isInside;
|
|
11833
|
-
}
|
|
11834
|
-
}
|
|
11835
|
-
return isInside;
|
|
11836
|
-
}
|
|
11837
|
-
Point2.insidePoints = insidePoints;
|
|
11838
11840
|
})(Point || (Point = {}));
|
|
11839
11841
|
var BezierDefaults = {
|
|
11840
11842
|
curve: 'ease',
|
|
@@ -14465,15 +14467,18 @@ var ErrorBoundary2 = class extends Component3 {
|
|
|
14465
14467
|
__publicField(this, 'state', {});
|
|
14466
14468
|
}
|
|
14467
14469
|
componentDidCatch(error, info) {
|
|
14468
|
-
|
|
14470
|
+
var _a;
|
|
14471
|
+
let stack = (_a = info.componentStack) == null ? void 0 : _a.split('\n').filter((line) => line.length !== 0);
|
|
14469
14472
|
let currentIndex = 0;
|
|
14470
|
-
|
|
14471
|
-
|
|
14472
|
-
|
|
14473
|
+
if (stack) {
|
|
14474
|
+
for (const line of stack) {
|
|
14475
|
+
if (line.startsWith(` in ${this.constructor.name}`)) {
|
|
14476
|
+
break;
|
|
14477
|
+
}
|
|
14478
|
+
currentIndex++;
|
|
14473
14479
|
}
|
|
14474
|
-
currentIndex
|
|
14480
|
+
stack = stack.slice(0, currentIndex);
|
|
14475
14481
|
}
|
|
14476
|
-
stack = stack.slice(0, currentIndex);
|
|
14477
14482
|
this.setState({
|
|
14478
14483
|
lastError: {
|
|
14479
14484
|
error,
|
|
@@ -14829,13 +14834,18 @@ var Rect;
|
|
|
14829
14834
|
};
|
|
14830
14835
|
};
|
|
14831
14836
|
Rect2.boundingRectFromPoints = (ps) => {
|
|
14832
|
-
|
|
14833
|
-
|
|
14834
|
-
|
|
14835
|
-
|
|
14836
|
-
|
|
14837
|
-
|
|
14838
|
-
|
|
14837
|
+
let minX2 = Infinity;
|
|
14838
|
+
let maxX2 = -Infinity;
|
|
14839
|
+
let minY2 = Infinity;
|
|
14840
|
+
let maxY2 = -Infinity;
|
|
14841
|
+
for (let i = 0; i < ps.length; i++) {
|
|
14842
|
+
const point2 = ps[i];
|
|
14843
|
+
minX2 = Math.min(minX2, point2.x);
|
|
14844
|
+
maxX2 = Math.max(maxX2, point2.x);
|
|
14845
|
+
minY2 = Math.min(minY2, point2.y);
|
|
14846
|
+
maxY2 = Math.max(maxY2, point2.y);
|
|
14847
|
+
}
|
|
14848
|
+
return { x: minX2, y: minY2, width: maxX2 - minX2, height: maxY2 - minY2, };
|
|
14839
14849
|
};
|
|
14840
14850
|
Rect2.fromPoints = (ps) => {
|
|
14841
14851
|
const [tl, tr, _, bl,] = ps;
|
|
@@ -15672,6 +15682,8 @@ var ControlType = /* @__PURE__ */ ((ControlType2) => {
|
|
|
15672
15682
|
ControlType2['CustomCursor'] = 'customcursor';
|
|
15673
15683
|
ControlType2['Border'] = 'border';
|
|
15674
15684
|
ControlType2['Cursor'] = 'cursor';
|
|
15685
|
+
ControlType2['Padding'] = 'padding';
|
|
15686
|
+
ControlType2['BorderRadius'] = 'borderradius';
|
|
15675
15687
|
return ControlType2;
|
|
15676
15688
|
})(ControlType || {});
|
|
15677
15689
|
var isFlexboxGapSupportedCached;
|
|
@@ -16620,6 +16632,8 @@ function getControlDefaultValue(control) {
|
|
|
16620
16632
|
case 'date':
|
|
16621
16633
|
case 'link':
|
|
16622
16634
|
case 'boxshadow':
|
|
16635
|
+
case 'padding':
|
|
16636
|
+
case 'borderradius':
|
|
16623
16637
|
return isString22(control.defaultValue) ? control.defaultValue : void 0;
|
|
16624
16638
|
case 'boolean':
|
|
16625
16639
|
return isBoolean(control.defaultValue) ? control.defaultValue : void 0;
|
|
@@ -19447,7 +19461,7 @@ function setTranslateZHack(style, enabled) {
|
|
|
19447
19461
|
if (!useTranslateZHack || !onCanvas) {
|
|
19448
19462
|
return;
|
|
19449
19463
|
}
|
|
19450
|
-
const transform2 = style.transform || '';
|
|
19464
|
+
const transform2 = isString22(style.transform) ? style.transform || '' : '';
|
|
19451
19465
|
if (enabled) {
|
|
19452
19466
|
const hasTranslateZ = transform2.includes(translateZ);
|
|
19453
19467
|
if (!hasTranslateZ) {
|
|
@@ -26475,7 +26489,7 @@ function getTransition(value) {
|
|
|
26475
26489
|
}
|
|
26476
26490
|
return value == null ? void 0 : value.transition;
|
|
26477
26491
|
}
|
|
26478
|
-
function runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId) {
|
|
26492
|
+
function runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId, instant) {
|
|
26479
26493
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26480
26494
|
const transition = getTransition(target);
|
|
26481
26495
|
return Promise.all(effectValuesKeys.map((key7) => {
|
|
@@ -26502,8 +26516,12 @@ function runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId) {
|
|
|
26502
26516
|
elapsed: safeWindow.HandoffAppearAnimations(appearId, key7, motionValue2, frame),
|
|
26503
26517
|
}
|
|
26504
26518
|
: void 0;
|
|
26505
|
-
|
|
26506
|
-
|
|
26519
|
+
if (instant) {
|
|
26520
|
+
motionValue2.set(value);
|
|
26521
|
+
}
|
|
26522
|
+
else {
|
|
26523
|
+
animate(motionValue2, value, Object.assign(Object.assign(Object.assign(Object.assign({}, transition), { velocity: 0, elapsed: 0 }), handoff), { onComplete: () => resolve() }));
|
|
26524
|
+
}
|
|
26507
26525
|
});
|
|
26508
26526
|
}));
|
|
26509
26527
|
});
|
|
@@ -26513,21 +26531,14 @@ var presenceOptionsKeys = /* @__PURE__ */ new Set([
|
|
|
26513
26531
|
'presenceAnimate',
|
|
26514
26532
|
'presenceExit',
|
|
26515
26533
|
]);
|
|
26516
|
-
function getVisualElementBase(visualElement, style) {
|
|
26517
|
-
const ctx = visualElement.getVariantContext();
|
|
26518
|
-
const base = Object.assign({}, style);
|
|
26519
|
-
if (Array.isArray(ctx == null ? void 0 : ctx.animate)) {
|
|
26520
|
-
for (const variant of ctx.animate) {
|
|
26521
|
-
Object.assign(base, visualElement.getVariant(variant));
|
|
26522
|
-
}
|
|
26523
|
-
}
|
|
26524
|
-
return base;
|
|
26525
|
-
}
|
|
26526
26534
|
function usePresenceAnimation({ initial: motionInitial, animate: motionAnimate, exit: motionExit, presenceInitial, presenceAnimate, presenceExit, }, ref, enabled, style, appearId) {
|
|
26527
26535
|
const initial = presenceInitial !== null && presenceInitial !== void 0 ? presenceInitial : motionInitial;
|
|
26528
26536
|
const animateConfig = presenceAnimate !== null && presenceAnimate !== void 0 ? presenceAnimate : motionAnimate;
|
|
26529
26537
|
const exit = presenceExit !== null && presenceExit !== void 0 ? presenceExit : motionExit;
|
|
26530
26538
|
const hasMounted = useRef122(false);
|
|
26539
|
+
const lastAnimate = useRef122(animateConfig);
|
|
26540
|
+
const [isPresent2, safeToRemove,] = usePresence();
|
|
26541
|
+
const lastPresence = useRef122(false);
|
|
26531
26542
|
const effect = useConstant2(() => {
|
|
26532
26543
|
var _a;
|
|
26533
26544
|
const base = initial !== null && initial !== void 0 ? initial : style;
|
|
@@ -26544,45 +26555,54 @@ function usePresenceAnimation({ initial: motionInitial, animate: motionAnimate,
|
|
|
26544
26555
|
}
|
|
26545
26556
|
return { values: makeFXValues(defaults), };
|
|
26546
26557
|
});
|
|
26547
|
-
const [isPresent2, safeToRemove,] = usePresence();
|
|
26548
|
-
const shouldReduceMotion = useReducedMotionConfig();
|
|
26549
26558
|
useLayoutEffect22(() => {
|
|
26550
|
-
hasMounted.current
|
|
26551
|
-
if (!enabled) {
|
|
26552
|
-
safeToRemove == null ? void 0 : safeToRemove();
|
|
26553
|
-
return;
|
|
26554
|
-
}
|
|
26555
|
-
if (isPresent2) {
|
|
26556
|
-
if (initial && animateConfig) {
|
|
26557
|
-
runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId);
|
|
26558
|
-
}
|
|
26559
|
-
}
|
|
26560
|
-
else {
|
|
26561
|
-
if (exit) {
|
|
26562
|
-
runEffectAnimation(exit, effect, shouldReduceMotion, ref).then(() => safeToRemove());
|
|
26563
|
-
}
|
|
26564
|
-
else {
|
|
26565
|
-
safeToRemove();
|
|
26566
|
-
}
|
|
26567
|
-
}
|
|
26568
|
-
}, [isPresent2,]);
|
|
26569
|
-
useLayoutEffect22(() => {
|
|
26570
|
-
if (!hasMounted.current) {
|
|
26559
|
+
if (hasMounted.current && animateConfig) {
|
|
26571
26560
|
return;
|
|
26572
26561
|
}
|
|
26573
26562
|
const visualElement = visualElementStore.get(ref.current);
|
|
26574
26563
|
if (!visualElement) {
|
|
26575
26564
|
return;
|
|
26576
26565
|
}
|
|
26577
|
-
|
|
26566
|
+
hasMounted.current = true;
|
|
26578
26567
|
for (const key7 in effect.values) {
|
|
26579
26568
|
if (!isFXValuesKey(key7)) {
|
|
26580
26569
|
continue;
|
|
26581
26570
|
}
|
|
26582
|
-
const value =
|
|
26571
|
+
const value = style == null ? void 0 : style[key7];
|
|
26583
26572
|
visualElement.setBaseTarget(key7, isNumber2(value) ? value : defaultFXValues[key7]);
|
|
26584
26573
|
}
|
|
26585
|
-
}, [
|
|
26574
|
+
}, [animateConfig,]);
|
|
26575
|
+
const shouldReduceMotion = useReducedMotionConfig();
|
|
26576
|
+
useLayoutEffect22(() => {
|
|
26577
|
+
if (!enabled) {
|
|
26578
|
+
safeToRemove == null ? void 0 : safeToRemove();
|
|
26579
|
+
return;
|
|
26580
|
+
}
|
|
26581
|
+
if (isPresent2 !== lastPresence.current) {
|
|
26582
|
+
lastPresence.current = isPresent2;
|
|
26583
|
+
if (isPresent2) {
|
|
26584
|
+
if (initial && animateConfig) {
|
|
26585
|
+
runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId);
|
|
26586
|
+
}
|
|
26587
|
+
}
|
|
26588
|
+
else {
|
|
26589
|
+
if (exit) {
|
|
26590
|
+
runEffectAnimation(exit, effect, shouldReduceMotion, ref, appearId).then(() => safeToRemove());
|
|
26591
|
+
}
|
|
26592
|
+
else {
|
|
26593
|
+
safeToRemove();
|
|
26594
|
+
}
|
|
26595
|
+
}
|
|
26596
|
+
}
|
|
26597
|
+
else {
|
|
26598
|
+
const hasAnimateChanged = !isEqual(animateConfig, lastAnimate.current);
|
|
26599
|
+
if (!hasAnimateChanged || !animateConfig) {
|
|
26600
|
+
return;
|
|
26601
|
+
}
|
|
26602
|
+
lastAnimate.current = animateConfig;
|
|
26603
|
+
runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId, true);
|
|
26604
|
+
}
|
|
26605
|
+
});
|
|
26586
26606
|
return effect;
|
|
26587
26607
|
}
|
|
26588
26608
|
function calcOffsetTop(element, container) {
|
|
@@ -27585,6 +27605,179 @@ function useCustomCursors(webPageCursors) {
|
|
|
27585
27605
|
registerCursors(cursors);
|
|
27586
27606
|
}, [cursors, registerCursors,]);
|
|
27587
27607
|
}
|
|
27608
|
+
function degreesToRadians(degrees2) {
|
|
27609
|
+
return degrees2 * (Math.PI / 180);
|
|
27610
|
+
}
|
|
27611
|
+
var Line = /* @__PURE__ */ (() => {
|
|
27612
|
+
function Line2(a, b) {
|
|
27613
|
+
return { a, b, };
|
|
27614
|
+
}
|
|
27615
|
+
Line2.offset = (line, offset) => {
|
|
27616
|
+
const angle = Point.angleFromX(line.a, line.b);
|
|
27617
|
+
const rad = degreesToRadians(angle);
|
|
27618
|
+
const x = offset * Math.sin(rad);
|
|
27619
|
+
const y = offset * Math.cos(rad);
|
|
27620
|
+
return Line2({ x: line.a.x + x, y: line.a.y - y, }, {
|
|
27621
|
+
x: line.b.x + x,
|
|
27622
|
+
y: line.b.y - y,
|
|
27623
|
+
});
|
|
27624
|
+
};
|
|
27625
|
+
Line2.intersection = (lineA, lineB) => {
|
|
27626
|
+
const x1 = lineA.a.x;
|
|
27627
|
+
const y1 = lineA.a.y;
|
|
27628
|
+
const x2 = lineA.b.x;
|
|
27629
|
+
const y2 = lineA.b.y;
|
|
27630
|
+
const x3 = lineB.a.x;
|
|
27631
|
+
const y3 = lineB.a.y;
|
|
27632
|
+
const x4 = lineB.b.x;
|
|
27633
|
+
const y4 = lineB.b.y;
|
|
27634
|
+
const d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);
|
|
27635
|
+
if (d === 0) {
|
|
27636
|
+
return null;
|
|
27637
|
+
}
|
|
27638
|
+
const xi = ((x3 - x4) * (x1 * y2 - y1 * x2) - (x1 - x2) * (x3 * y4 - y3 * x4)) / d;
|
|
27639
|
+
const yi = ((y3 - y4) * (x1 * y2 - y1 * x2) - (y1 - y2) * (x3 * y4 - y3 * x4)) / d;
|
|
27640
|
+
return { x: xi, y: yi, };
|
|
27641
|
+
};
|
|
27642
|
+
Line2.intersectionAngle = (lineA, lineB) => {
|
|
27643
|
+
const deltaAX = lineA.b.x - lineA.a.x;
|
|
27644
|
+
const deltaAY = lineA.b.y - lineA.a.y;
|
|
27645
|
+
const deltaBX = lineB.b.x - lineB.a.x;
|
|
27646
|
+
const deltaBY = lineB.b.y - lineB.a.y;
|
|
27647
|
+
const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);
|
|
27648
|
+
return angle * (180 / Math.PI);
|
|
27649
|
+
};
|
|
27650
|
+
Line2.isOrthogonal = (line) => {
|
|
27651
|
+
return line.a.x === line.b.x || line.a.y === line.b.y;
|
|
27652
|
+
};
|
|
27653
|
+
Line2.perpendicular = (line, pointOnLine) => {
|
|
27654
|
+
const deltaX = line.a.x - line.b.x;
|
|
27655
|
+
const deltaY = line.a.y - line.b.y;
|
|
27656
|
+
const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);
|
|
27657
|
+
return Line2(pointB, pointOnLine);
|
|
27658
|
+
};
|
|
27659
|
+
Line2.projectPoint = (line, point2) => {
|
|
27660
|
+
const perp = Line2.perpendicular(line, point2);
|
|
27661
|
+
return Line2.intersection(line, perp);
|
|
27662
|
+
};
|
|
27663
|
+
Line2.pointAtPercentDistance = (line, distance2) => {
|
|
27664
|
+
const hypotenuse = Line2.distance(line);
|
|
27665
|
+
const r = distance2 * hypotenuse / hypotenuse;
|
|
27666
|
+
return {
|
|
27667
|
+
x: r * line.b.x + (1 - r) * line.a.x,
|
|
27668
|
+
y: r * line.b.y + (1 - r) * line.a.y,
|
|
27669
|
+
};
|
|
27670
|
+
};
|
|
27671
|
+
Line2.distance = (line) => {
|
|
27672
|
+
return Point.distance(line.a, line.b);
|
|
27673
|
+
};
|
|
27674
|
+
return Line2;
|
|
27675
|
+
})();
|
|
27676
|
+
var Polygon = {
|
|
27677
|
+
/**
|
|
27678
|
+
* Determine if the vertices are ordered clockwise or counter-clockwise. This works for simple
|
|
27679
|
+
* (non-self-intersecting) convex polygons. If the polygon is collapsed into a line (signedArea = 0), we consider it
|
|
27680
|
+
* clockwise for it works with how Framer draws the polygons.
|
|
27681
|
+
* See: https://paulbourke.net/geometry/polygonmesh/
|
|
27682
|
+
* @internal */
|
|
27683
|
+
isClockwise: (points) => {
|
|
27684
|
+
return Polygon.signedArea(points) <= 0;
|
|
27685
|
+
},
|
|
27686
|
+
/**
|
|
27687
|
+
* Calculate the signed area to determine if the vertices go clockwise or counter clockwise. We flip all the y
|
|
27688
|
+
* values because the y axis in our canvas coordinate is fipped.
|
|
27689
|
+
* See: https://mathworld.wolfram.com/PolygonArea.html
|
|
27690
|
+
* @internal */
|
|
27691
|
+
signedArea: (points) => {
|
|
27692
|
+
let sum = 0;
|
|
27693
|
+
const len = points.length;
|
|
27694
|
+
for (let i = 0; i < len; i++) {
|
|
27695
|
+
const pointA = points[i];
|
|
27696
|
+
const pointB = points[(i + 1) % len];
|
|
27697
|
+
if (!pointA || !pointB) {
|
|
27698
|
+
continue;
|
|
27699
|
+
}
|
|
27700
|
+
sum += pointA.x * -pointB.y - pointB.x * -pointA.y;
|
|
27701
|
+
}
|
|
27702
|
+
return 1 / 2 * sum;
|
|
27703
|
+
},
|
|
27704
|
+
/**
|
|
27705
|
+
* Determine if some Point lies inside the polygon formed by other Points.
|
|
27706
|
+
* The other points must be provided in a clockwise/counter clockwise order.
|
|
27707
|
+
*
|
|
27708
|
+
* Ray-casting algorithm based on
|
|
27709
|
+
* https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html
|
|
27710
|
+
*
|
|
27711
|
+
* @internal */
|
|
27712
|
+
containsPoint: (polygonPoints2, point2) => {
|
|
27713
|
+
var _f, _j, _k, _l;
|
|
27714
|
+
var _a, _b, _c, _d;
|
|
27715
|
+
const x = point2.x;
|
|
27716
|
+
const y = point2.y;
|
|
27717
|
+
let isInside = false;
|
|
27718
|
+
for (let i = 0, j = polygonPoints2.length - 1; i < polygonPoints2.length; j = i++) {
|
|
27719
|
+
const xi = (_f = ((_a = polygonPoints2[i]) == null ? void 0 : _a.x)) !== null && _f !== void 0 ? _f : 0;
|
|
27720
|
+
const yi = (_j = ((_b = polygonPoints2[i]) == null ? void 0 : _b.y)) !== null && _j !== void 0 ? _j : 0;
|
|
27721
|
+
const xj = (_k = ((_c = polygonPoints2[j]) == null ? void 0 : _c.x)) !== null && _k !== void 0 ? _k : 0;
|
|
27722
|
+
const yj = (_l = ((_d = polygonPoints2[j]) == null ? void 0 : _d.y)) !== null && _l !== void 0 ? _l : 0;
|
|
27723
|
+
const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
|
|
27724
|
+
if (intersect) {
|
|
27725
|
+
isInside = !isInside;
|
|
27726
|
+
}
|
|
27727
|
+
}
|
|
27728
|
+
return isInside;
|
|
27729
|
+
},
|
|
27730
|
+
/** @internal */
|
|
27731
|
+
intersect: (pointsA, pointsB) => {
|
|
27732
|
+
if (pointsA.length < 1 || pointsB.length < 1) {
|
|
27733
|
+
return false;
|
|
27734
|
+
}
|
|
27735
|
+
const boundingRectA = Rect.boundingRectFromPoints(pointsA);
|
|
27736
|
+
const boundingRectB = Rect.boundingRectFromPoints(pointsB);
|
|
27737
|
+
if (!Rect.intersects(boundingRectA, boundingRectB)) {
|
|
27738
|
+
return false;
|
|
27739
|
+
}
|
|
27740
|
+
const edgesA = [];
|
|
27741
|
+
const pointsALength = pointsA.length;
|
|
27742
|
+
pointsA.forEach((point2, index) => {
|
|
27743
|
+
const nextPoint = pointsA[(index + 1) % pointsALength];
|
|
27744
|
+
if (!nextPoint) {
|
|
27745
|
+
return;
|
|
27746
|
+
}
|
|
27747
|
+
edgesA.push(Line(point2, nextPoint));
|
|
27748
|
+
});
|
|
27749
|
+
const edgesB = [];
|
|
27750
|
+
const pointsBLength = pointsB.length;
|
|
27751
|
+
pointsB.forEach((point2, index) => {
|
|
27752
|
+
const nextPoint = pointsB[(index + 1) % pointsBLength];
|
|
27753
|
+
if (!nextPoint) {
|
|
27754
|
+
return;
|
|
27755
|
+
}
|
|
27756
|
+
edgesB.push(Line(point2, nextPoint));
|
|
27757
|
+
});
|
|
27758
|
+
for (const edgeA of edgesA) {
|
|
27759
|
+
for (const edgeB of edgesB) {
|
|
27760
|
+
const intersection2 = segmentsIntersect(edgeA, edgeB);
|
|
27761
|
+
if (intersection2) {
|
|
27762
|
+
return true;
|
|
27763
|
+
}
|
|
27764
|
+
}
|
|
27765
|
+
}
|
|
27766
|
+
if (Polygon.containsPoint(pointsB, pointsA[0])) {
|
|
27767
|
+
return true;
|
|
27768
|
+
}
|
|
27769
|
+
if (Polygon.containsPoint(pointsA, pointsB[0])) {
|
|
27770
|
+
return true;
|
|
27771
|
+
}
|
|
27772
|
+
return false;
|
|
27773
|
+
},
|
|
27774
|
+
};
|
|
27775
|
+
function segmentsIntersect(segmentA, segmentB) {
|
|
27776
|
+
const { a, b, } = segmentA;
|
|
27777
|
+
const { a: c, b: d, } = segmentB;
|
|
27778
|
+
return Polygon.isClockwise([a, c, d,]) !== Polygon.isClockwise([b, c, d,]) &&
|
|
27779
|
+
Polygon.isClockwise([a, b, c,]) !== Polygon.isClockwise([a, b, d,]);
|
|
27780
|
+
}
|
|
27588
27781
|
function invertPlacement(placement) {
|
|
27589
27782
|
switch (placement) {
|
|
27590
27783
|
case 'top':
|
|
@@ -27674,7 +27867,7 @@ function getSafePlacementFloatingPositionRect(anchor, element, placement, alignm
|
|
|
27674
27867
|
];
|
|
27675
27868
|
}
|
|
27676
27869
|
function preferredPoint(a, b, points) {
|
|
27677
|
-
if (
|
|
27870
|
+
if (Polygon.containsPoint([b, ...points,], a)) {
|
|
27678
27871
|
return b;
|
|
27679
27872
|
}
|
|
27680
27873
|
return a;
|
|
@@ -31684,6 +31877,10 @@ function useQueryData(query) {
|
|
|
31684
31877
|
result = useExecuteSelect(result, query.select);
|
|
31685
31878
|
return result;
|
|
31686
31879
|
}
|
|
31880
|
+
function useQueryCount(query) {
|
|
31881
|
+
const collection = useQueryData(query);
|
|
31882
|
+
return collection.length;
|
|
31883
|
+
}
|
|
31687
31884
|
function evaluateExpression(expression, context) {
|
|
31688
31885
|
switch (expression.type) {
|
|
31689
31886
|
case 'Identifier':
|
|
@@ -32233,15 +32430,18 @@ var DeprecatedComponentContainer = /* @__PURE__ */ (() => {
|
|
|
32233
32430
|
});
|
|
32234
32431
|
}
|
|
32235
32432
|
componentDidCatch(error, info) {
|
|
32236
|
-
|
|
32433
|
+
var _a2;
|
|
32434
|
+
let stack = (_a2 = info.componentStack) == null ? void 0 : _a2.split('\n').filter((line) => line.length !== 0);
|
|
32237
32435
|
let currentIndex = 0;
|
|
32238
|
-
|
|
32239
|
-
|
|
32240
|
-
|
|
32436
|
+
if (stack) {
|
|
32437
|
+
for (const line of stack) {
|
|
32438
|
+
if (line.startsWith(` in ${this.constructor.name}`)) {
|
|
32439
|
+
break;
|
|
32440
|
+
}
|
|
32441
|
+
currentIndex++;
|
|
32241
32442
|
}
|
|
32242
|
-
currentIndex
|
|
32443
|
+
stack = stack.slice(0, currentIndex);
|
|
32243
32444
|
}
|
|
32244
|
-
stack = stack.slice(0, currentIndex);
|
|
32245
32445
|
this.setState({
|
|
32246
32446
|
lastError: {
|
|
32247
32447
|
children: this.props.children,
|
|
@@ -32356,61 +32556,6 @@ function isPageOrScroll(identifier) {
|
|
|
32356
32556
|
}
|
|
32357
32557
|
return false;
|
|
32358
32558
|
}
|
|
32359
|
-
var Line = /* @__PURE__ */ (() => {
|
|
32360
|
-
function Line2(a, b) {
|
|
32361
|
-
return { a, b, };
|
|
32362
|
-
}
|
|
32363
|
-
Line2.intersection = (lineA, lineB) => {
|
|
32364
|
-
const x1 = lineA.a.x;
|
|
32365
|
-
const y1 = lineA.a.y;
|
|
32366
|
-
const x2 = lineA.b.x;
|
|
32367
|
-
const y2 = lineA.b.y;
|
|
32368
|
-
const x3 = lineB.a.x;
|
|
32369
|
-
const y3 = lineB.a.y;
|
|
32370
|
-
const x4 = lineB.b.x;
|
|
32371
|
-
const y4 = lineB.b.y;
|
|
32372
|
-
const d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);
|
|
32373
|
-
if (d === 0) {
|
|
32374
|
-
return null;
|
|
32375
|
-
}
|
|
32376
|
-
const xi = ((x3 - x4) * (x1 * y2 - y1 * x2) - (x1 - x2) * (x3 * y4 - y3 * x4)) / d;
|
|
32377
|
-
const yi = ((y3 - y4) * (x1 * y2 - y1 * x2) - (y1 - y2) * (x3 * y4 - y3 * x4)) / d;
|
|
32378
|
-
return { x: xi, y: yi, };
|
|
32379
|
-
};
|
|
32380
|
-
Line2.intersectionAngle = (lineA, lineB) => {
|
|
32381
|
-
const deltaAX = lineA.b.x - lineA.a.x;
|
|
32382
|
-
const deltaAY = lineA.b.y - lineA.a.y;
|
|
32383
|
-
const deltaBX = lineB.b.x - lineB.a.x;
|
|
32384
|
-
const deltaBY = lineB.b.y - lineB.a.y;
|
|
32385
|
-
const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);
|
|
32386
|
-
return angle * (180 / Math.PI);
|
|
32387
|
-
};
|
|
32388
|
-
Line2.isOrthogonal = (line) => {
|
|
32389
|
-
return line.a.x === line.b.x || line.a.y === line.b.y;
|
|
32390
|
-
};
|
|
32391
|
-
Line2.perpendicular = (line, pointOnLine) => {
|
|
32392
|
-
const deltaX = line.a.x - line.b.x;
|
|
32393
|
-
const deltaY = line.a.y - line.b.y;
|
|
32394
|
-
const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);
|
|
32395
|
-
return Line2(pointB, pointOnLine);
|
|
32396
|
-
};
|
|
32397
|
-
Line2.projectPoint = (line, point2) => {
|
|
32398
|
-
const perp = Line2.perpendicular(line, point2);
|
|
32399
|
-
return Line2.intersection(line, perp);
|
|
32400
|
-
};
|
|
32401
|
-
Line2.pointAtPercentDistance = (line, distance2) => {
|
|
32402
|
-
const hypotenuse = Line2.distance(line);
|
|
32403
|
-
const r = distance2 * hypotenuse / hypotenuse;
|
|
32404
|
-
return {
|
|
32405
|
-
x: r * line.b.x + (1 - r) * line.a.x,
|
|
32406
|
-
y: r * line.b.y + (1 - r) * line.a.y,
|
|
32407
|
-
};
|
|
32408
|
-
};
|
|
32409
|
-
Line2.distance = (line) => {
|
|
32410
|
-
return Point.distance(line.a, line.b);
|
|
32411
|
-
};
|
|
32412
|
-
return Line2;
|
|
32413
|
-
})();
|
|
32414
32559
|
function linearGradientLine(angle) {
|
|
32415
32560
|
var _a, _b;
|
|
32416
32561
|
const rad = angle * Math.PI / 180;
|
|
@@ -35519,6 +35664,45 @@ var localPackageFallbackIdentifier = '|local|';
|
|
|
35519
35664
|
function CustomProperties({ children, customProperties, }) {
|
|
35520
35665
|
return /* @__PURE__ */ jsx57('div', { style: customProperties, children, });
|
|
35521
35666
|
}
|
|
35667
|
+
var FormContainer = (props) => {
|
|
35668
|
+
return /* @__PURE__ */ jsx58(FrameWithMotion, Object.assign(Object.assign({}, props), { as: 'form' }));
|
|
35669
|
+
};
|
|
35670
|
+
var FormButton = (props) => {
|
|
35671
|
+
var _f;
|
|
35672
|
+
const { __fromCanvasComponent, style: baseStyle2, } = props;
|
|
35673
|
+
const layoutId = useLayoutId2(props);
|
|
35674
|
+
const ref = useRef18(null);
|
|
35675
|
+
const style = mergeWithDefaultStyle(baseStyle2 !== null && baseStyle2 !== void 0 ? baseStyle2 : {});
|
|
35676
|
+
const dataProps = {
|
|
35677
|
+
'data-layoutid': layoutId,
|
|
35678
|
+
};
|
|
35679
|
+
const isDisabled = Boolean(__fromCanvasComponent);
|
|
35680
|
+
useMeasureLayout(props, ref);
|
|
35681
|
+
return /* @__PURE__ */ jsx59(motion.input, Object.assign(Object.assign({ type: props.type, disabled: isDisabled }, dataProps), { layoutId,
|
|
35682
|
+
ref, style: Object.assign(Object.assign({}, baseStyle2), style), value: (_f = props.value) !== null && _f !== void 0 ? _f : 'Submit' }));
|
|
35683
|
+
};
|
|
35684
|
+
function mergeWithDefaultStyle(style) {
|
|
35685
|
+
return Object.assign({ display: 'block', padding: '12px', width: '100%', background: '#222', color: '#fff', borderRadius: '10px', border: '1px solid rgba(0,0,0,0.05)' }, style);
|
|
35686
|
+
}
|
|
35687
|
+
var FormPlainTextInput = (props) => {
|
|
35688
|
+
const { __fromCanvasComponent, } = props;
|
|
35689
|
+
const layoutId = useLayoutId2(props);
|
|
35690
|
+
const ref = useRef19(null);
|
|
35691
|
+
const dataProps = {
|
|
35692
|
+
'data-layoutid': layoutId,
|
|
35693
|
+
};
|
|
35694
|
+
const isDisabled = Boolean(__fromCanvasComponent);
|
|
35695
|
+
useMeasureLayout(props, ref);
|
|
35696
|
+
const baseStyle2 = {
|
|
35697
|
+
padding: '12px',
|
|
35698
|
+
width: '100%',
|
|
35699
|
+
background: '#f5f5f5',
|
|
35700
|
+
borderRadius: '10px',
|
|
35701
|
+
border: '1px solid rgba(0,0,0,0.05)',
|
|
35702
|
+
};
|
|
35703
|
+
return /* @__PURE__ */ jsx60(motion.input, Object.assign(Object.assign({ disabled: isDisabled }, dataProps), { layoutId,
|
|
35704
|
+
ref, style: Object.assign(Object.assign({}, baseStyle2), props.style), placeholder: props.placeholder }));
|
|
35705
|
+
};
|
|
35522
35706
|
var Image2 = /* @__PURE__ */ React85.forwardRef(function Image3(props, ref) {
|
|
35523
35707
|
const { background, children, alt } = props, rest = __rest(props, ["background", "children", "alt"]);
|
|
35524
35708
|
const style = Object.assign({}, rest.style);
|
|
@@ -35528,7 +35712,7 @@ var Image2 = /* @__PURE__ */ React85.forwardRef(function Image3(props, ref) {
|
|
|
35528
35712
|
const MotionComponent = htmlElementAsMotionComponent(props.as);
|
|
35529
35713
|
return /* @__PURE__ */ jsxs19(MotionComponent, Object.assign(Object.assign({}, rest), { style,
|
|
35530
35714
|
ref, children: [
|
|
35531
|
-
background && /* @__PURE__ */
|
|
35715
|
+
background && /* @__PURE__ */ jsx61(BackgroundImageComponent, { image: background, alt, }),
|
|
35532
35716
|
children,
|
|
35533
35717
|
] }));
|
|
35534
35718
|
});
|
|
@@ -35623,7 +35807,7 @@ var DeprecatedRichText = /* @__PURE__ */ React86.forwardRef(function Text3(props
|
|
|
35623
35807
|
const { id: id3, name, html, htmlFromDesign, text, textFromDesign, fonts = [], width, height, left, right, top, bottom, center, className, stylesPresetsClassName, visible = true, opacity, rotation = 0, verticalAlignment = 'top', isEditable = false, willChangeTransform, environment: environment2 = RenderTarget.current, withExternalLayout = false, positionSticky, positionStickyTop, positionStickyRight, positionStickyBottom, positionStickyLeft, __htmlStructure, __fromCanvasComponent = false, _forwardedOverrideId, _forwardedOverrides, _usesDOMRect, children } = props, rest = __rest(props, ["id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "willChangeTransform", "environment", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "children"]);
|
|
35624
35808
|
const parentSize = useParentSize();
|
|
35625
35809
|
const layoutId = useLayoutId2(props);
|
|
35626
|
-
const fallbackLayoutRef =
|
|
35810
|
+
const fallbackLayoutRef = useRef20(null);
|
|
35627
35811
|
const layoutRef = forwardedRef !== null && forwardedRef !== void 0 ? forwardedRef : fallbackLayoutRef;
|
|
35628
35812
|
const { navigate, getRoute, } = useRouter();
|
|
35629
35813
|
const currentRoute = useCurrentRoute();
|
|
@@ -35740,7 +35924,7 @@ var DeprecatedRichText = /* @__PURE__ */ React86.forwardRef(function Text3(props
|
|
|
35740
35924
|
forceLayerBackingWithCSSProperties(style);
|
|
35741
35925
|
}
|
|
35742
35926
|
Object.assign(style, props.style);
|
|
35743
|
-
return /* @__PURE__ */
|
|
35927
|
+
return /* @__PURE__ */ jsx62(motion.div, Object.assign(Object.assign({ id: id3, ref: layoutRef }, rest), { style,
|
|
35744
35928
|
layoutId, 'data-framer-name': name, 'data-framer-component-type': 'DeprecatedRichText', 'data-center': center, className: cx(className, stylesPresetsClassName, richTextWrapperClassName), transformTemplate: template, dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks, } }));
|
|
35745
35929
|
});
|
|
35746
35930
|
function convertVerticalAlignment2(verticalAlignment) {
|
|
@@ -35754,7 +35938,7 @@ function convertVerticalAlignment2(verticalAlignment) {
|
|
|
35754
35938
|
}
|
|
35755
35939
|
}
|
|
35756
35940
|
function useLoadFonts(fonts, fromCanvasComponent, containerRef) {
|
|
35757
|
-
const prevFontsRef =
|
|
35941
|
+
const prevFontsRef = useRef20([]);
|
|
35758
35942
|
if (!isShallowEqualArray(prevFontsRef.current, fonts)) {
|
|
35759
35943
|
prevFontsRef.current = fonts;
|
|
35760
35944
|
fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount, }) => {
|
|
@@ -35769,7 +35953,7 @@ function useLoadFonts(fonts, fromCanvasComponent, containerRef) {
|
|
|
35769
35953
|
}
|
|
35770
35954
|
var FitText = /* @__PURE__ */ forwardRef52((_f, ref) => {
|
|
35771
35955
|
var { viewBoxScale, viewBox, children } = _f, props = __rest(_f, ["viewBoxScale", "viewBox", "children"]);
|
|
35772
|
-
return /* @__PURE__ */
|
|
35956
|
+
return /* @__PURE__ */ jsx63(motion.svg, Object.assign(Object.assign({ ref }, props), { viewBox, children: /* @__PURE__ */ jsx63(motion.foreignObject, {
|
|
35773
35957
|
width: '100%',
|
|
35774
35958
|
height: '100%',
|
|
35775
35959
|
className: 'framer-fit-text',
|
|
@@ -35785,7 +35969,7 @@ var RichTextContainer = /* @__PURE__ */ forwardRef52((props, ref) => {
|
|
|
35785
35969
|
const isOnCanvas = useIsOnFramerCanvas();
|
|
35786
35970
|
const inCodeComponent = useContext162(ComponentContainerContext);
|
|
35787
35971
|
const layoutId = useLayoutId2(props);
|
|
35788
|
-
const fallbackRef =
|
|
35972
|
+
const fallbackRef = useRef21(null);
|
|
35789
35973
|
const containerRef = ref !== null && ref !== void 0 ? ref : fallbackRef;
|
|
35790
35974
|
useMeasureLayout(props, containerRef);
|
|
35791
35975
|
useLoadFonts(fonts, __fromCanvasComponent, containerRef);
|
|
@@ -35811,8 +35995,9 @@ var RichTextContainer = /* @__PURE__ */ forwardRef52((props, ref) => {
|
|
|
35811
35995
|
const template = hasTransformTemplate ? (_f = props.transformTemplate) !== null && _f !== void 0 ? _f : transformTemplate(center) : void 0;
|
|
35812
35996
|
if (!withExternalLayout) {
|
|
35813
35997
|
if (frame2 && restrictedRenderTarget && !isAutoSized2) {
|
|
35814
|
-
|
|
35815
|
-
containerStyle.
|
|
35998
|
+
containerStyle.x = frame2.x;
|
|
35999
|
+
containerStyle.y = frame2.y;
|
|
36000
|
+
containerStyle.rotate = Animatable.getNumber(rotation);
|
|
35816
36001
|
containerStyle.width = frame2.width;
|
|
35817
36002
|
containerStyle.minWidth = frame2.width;
|
|
35818
36003
|
containerStyle.height = frame2.height;
|
|
@@ -35853,7 +36038,7 @@ var RichTextContainer = /* @__PURE__ */ forwardRef52((props, ref) => {
|
|
|
35853
36038
|
const Component15 = htmlElementAsMotionComponent(props.as);
|
|
35854
36039
|
if (isString22(props.viewBox)) {
|
|
35855
36040
|
if (props.as !== void 0) {
|
|
35856
|
-
return /* @__PURE__ */
|
|
36041
|
+
return /* @__PURE__ */ jsx63(Component15, Object.assign(Object.assign({}, rest), { ref: containerRef, style: containerStyle, layoutId, transformTemplate: template, 'data-framer-name': name, 'data-framer-component-type': 'RichTextContainer', children: /* @__PURE__ */ jsx63(FitText, {
|
|
35857
36042
|
viewBox,
|
|
35858
36043
|
viewBoxScale,
|
|
35859
36044
|
style: { width: '100%', height: '100%', },
|
|
@@ -35861,12 +36046,12 @@ var RichTextContainer = /* @__PURE__ */ forwardRef52((props, ref) => {
|
|
|
35861
36046
|
}) }));
|
|
35862
36047
|
}
|
|
35863
36048
|
else {
|
|
35864
|
-
return /* @__PURE__ */
|
|
36049
|
+
return /* @__PURE__ */ jsx63(FitText, Object.assign(Object.assign({}, rest), { ref: containerRef, style: containerStyle, layoutId,
|
|
35865
36050
|
viewBox,
|
|
35866
36051
|
viewBoxScale, transformTemplate: template, 'data-framer-name': name, 'data-framer-component-type': 'RichTextContainer', children: children && styleRichTextChildren(children, stylesPresetsClassNames, plainText) }));
|
|
35867
36052
|
}
|
|
35868
36053
|
}
|
|
35869
|
-
return /* @__PURE__ */
|
|
36054
|
+
return /* @__PURE__ */ jsx63(Component15, Object.assign(Object.assign({}, rest), { ref: containerRef, style: containerStyle, layoutId, transformTemplate: template, 'data-framer-name': name, 'data-framer-component-type': 'RichTextContainer', children: children && styleRichTextChildren(children, stylesPresetsClassNames, plainText) }));
|
|
35870
36055
|
});
|
|
35871
36056
|
function styleRichTextChildren(element, stylesPresetsClassNames, plainText) {
|
|
35872
36057
|
let children = Children32.toArray(element.props.children);
|
|
@@ -35901,7 +36086,7 @@ var RichText = /* @__PURE__ */ forwardRef52((_f, ref) => {
|
|
|
35901
36086
|
// We need to use the original prop name.
|
|
35902
36087
|
[isString22(html) ? 'html' : 'htmlFromDesign']: content,
|
|
35903
36088
|
};
|
|
35904
|
-
return /* @__PURE__ */
|
|
36089
|
+
return /* @__PURE__ */ jsx63(DeprecatedRichText, Object.assign(Object.assign(Object.assign({}, props), contentProp), { ref }));
|
|
35905
36090
|
}
|
|
35906
36091
|
if (!props.stylesPresetsClassNames && isString22(props.stylesPresetsClassName)) {
|
|
35907
36092
|
const [h1, h2, h3, p, a,] = props.stylesPresetsClassName.split(' ');
|
|
@@ -35912,7 +36097,7 @@ var RichText = /* @__PURE__ */ forwardRef52((_f, ref) => {
|
|
|
35912
36097
|
props.stylesPresetsClassNames = { h1, h2, h3, p, a, };
|
|
35913
36098
|
}
|
|
35914
36099
|
}
|
|
35915
|
-
return /* @__PURE__ */
|
|
36100
|
+
return /* @__PURE__ */ jsx63(RichTextContainer, Object.assign(Object.assign({}, props), { ref, children: isValidElement32(content) ? content : void 0 }));
|
|
35916
36101
|
});
|
|
35917
36102
|
var key6 = 'calculatedPaths';
|
|
35918
36103
|
function withShape(target) {
|
|
@@ -36326,8 +36511,8 @@ var package_default = {
|
|
|
36326
36511
|
'@types/google.fonts': '1.0.3',
|
|
36327
36512
|
'@types/hsluv': 'https://github.com/framer/typed_hsluv#bump',
|
|
36328
36513
|
'@types/node': '^18.17.15',
|
|
36329
|
-
'@types/react': '^18.
|
|
36330
|
-
'@types/react-dom': '^18.
|
|
36514
|
+
'@types/react': '^18.2.67',
|
|
36515
|
+
'@types/react-dom': '^18.2.22',
|
|
36331
36516
|
'@types/yargs': '^17.0.19',
|
|
36332
36517
|
'@typescript-eslint/eslint-plugin': '^6.16.0',
|
|
36333
36518
|
'@typescript-eslint/parser': '^6.16.0',
|
|
@@ -36343,7 +36528,7 @@ var package_default = {
|
|
|
36343
36528
|
yargs: '^17.6.2',
|
|
36344
36529
|
},
|
|
36345
36530
|
peerDependencies: {
|
|
36346
|
-
'framer-motion': '11.0.
|
|
36531
|
+
'framer-motion': '11.0.11-sync.4',
|
|
36347
36532
|
react: '^18.2.0',
|
|
36348
36533
|
'react-dom': '^18.2.0',
|
|
36349
36534
|
},
|
|
@@ -36383,7 +36568,7 @@ MotionValue.prototype.addChild = function ({ transformer = (v) => v, }) {
|
|
|
36383
36568
|
if (false) {
|
|
36384
36569
|
MainLoop.start();
|
|
36385
36570
|
}
|
|
36386
|
-
export { _injectRuntime, addActionControls, addFonts, addPointerEvent, addPointerInfo, addPropertyControls, addScaleCorrector, AnchorLinkTarget, Animatable, animate2 as animate, AnimatePresence, AnimateSharedLayout, animateValue, animateVisualElement, animationControls, animations, annotateTypeOnStringify, anticipate, AnyInterpolation, AutomaticLayoutIds, BackgroundImage, backgroundImageFromProps, backIn, backInOut, backOut, BezierAnimator, BoxShadow, buildTransform, calcLength, calculateRect, callEach, cancelFrame, cancelSync, CanvasStore, checkTargetForNewValues, circIn, circInOut, circOut, clamp, collectVisualStyleFromProps, Color, color, ColorFormat, ColorMixModelType, combinedCSSRulesForPreview, complex, ComponentContainerContext, ComponentPresetsConsumer, ComponentPresetsProvider, ComponentViewportProvider, ConstraintMask, constraintsEnabled, ConstraintValues, Container, ControlType, ConvertColor, convertPresentationTree, convertPropsToDeviceOptions, createBox, createData, createDesignComponent, createDomMotionComponent, createFramerPageLink, createMotionComponent, createScopedAnimate, cssBackgroundSize, cubicBezier, CustomCursorHost, CustomProperties, cx, CycleVariantState, Data, DataContext, DataObserver, DataObserverContext, debounce, defaultDeviceProps, delay, DeprecatedComponentContainer, DeprecatedFrameWithEvents, DeprecatedLayoutGroupContext, DeprecatedLayoutGroupContext as LayoutGroupContext, Device, DeviceCodeComponent, devicePresets, DimensionType, disableInstantTransitions, dispatchKeyDownEvent, distance, distance2D, DOM, domAnimation, domMax, DragControls, Draggable, easeIn, easeInOut, easeOut, EmptyState, environment, ErrorPlaceholder, executeInRenderEnvironment, filterProps, finiteNumber, FlatTree, Floating, FontSourceNames, fontStore, forceLayerBackingWithCSSProperties, fraction, Frame, frame, frameData, frameFromElement, frameFromElements, FramerAnimation, framerAppearAnimationScriptKey, framerAppearEffects, framerAppearIdKey, framerAppearTransformTemplateToken, FramerEvent, FramerEventListener, FramerEventSession, FrameWithMotion, GamepadContext, GeneratedComponentContext, getComponentSize, getDevicePreset, getFonts, getFontsFromComponentPreset, getFontsFromSharedStyle, getMeasurableCodeComponentChildren, getMergedConstraintsProps, getPropertyControls, getWhereExpressionFromPathVariables, gradientForShape, Image2 as Image, imagePatternPropsForFill, imageUrlForAsset, inferInitialRouteFromPath, injectComponentCSSRules, installFlexboxGapWorkaroundIfNeeded, InternalID, interpolate, invariant, inView, isAnimatable2 as isAnimatable, isBrowser, isDesignDefinition, isDragActive, isEqual, isFiniteNumber, isFractionDimension, isFramerGamepadKeydownData, isFramerPageLink, isGapEnabled, isMotionComponent, isMotionValue2 as isMotionValue, isOfAnnotatedType, isOverride, isReactDefinition, isRelativeNumber, isShallowEqualArray, isStraightCurve, isValidMotionProp, Layer, LayoutGroup, LayoutIdContext, lazy, LazyMotion, LazyValue, LibraryFeaturesProvider, Line, LinearGradient, Link, loadFont, loadJSON, localPackageFallbackIdentifier, localShadowFrame, m, MainLoop, makePaddingString, makeUseVisualState, memoize2 as memoize, mirrorEasing, mix, modulate, motion, MotionConfig, MotionConfigContext, MotionContext, MotionGlobalConfig, MotionSetup, MotionValue, motionValue, NavigateTo, NavigationCallbackProvider, NavigationConsumer, NavigationTransitionType, NavigationWrapper as Navigation, NotFoundError, ObservableObject, optimizeAppear, optimizeAppearTransformTemplate, optimizedAppearDataAttribute, paddingFromProps, Page3 as Page, PageEffectsProvider, PageRoot, ParentSizeState, parseFramerPageLink, pathDefaults, PathSegment, PathVariablesContext, pipe, Point, PresenceContext, print, progress, PropertyOverrides, PropertyStore, propsForLink, px, QueryEngine, RadialGradient, Rect, removeHiddenBreakpointLayers, RenderNodeProvider, RenderTarget, Reorder, resolveLink, ResolveLinks, resolveMotionValue, resolvePageScope, reverseEasing, RichText, roundedNumber, roundedNumberString, roundWithOffset, Scroll, scroll, scrollInfo, setGlobalRenderEnvironment, Shadow, sharedSVGManager, shouldOpenLinkInNewTab, Size, spring, SpringAnimator, SSRVariants, Stack, stagger, startAnimation, startOptimizedAppearAnimation, steps, StyleSheetContext, SVG, SwitchLayoutGroupContext, sync, systemFontFamilyName, Text, throttle, toFlexDirection, toJustifyOrAlignment, toSVGPath, transform, transformString, transformTemplate, unwrapMotionComponent, useActiveTargetCallback, useActiveVariantCallback, useAddVariantProps, useAnimate, useAnimatedState, useAnimatedState as useDeprecatedAnimatedState, useAnimation, useAnimationControls, useAnimationFrame, useBreakpointVariants, useComponentViewport, useConstant2 as useConstant, useCurrentPathVariables, useCurrentRouteId, useCustomCursors, useCycle, useDataRecord, useDomEvent, useDragControls, useDynamicRefs, useElementScroll, useForceUpdate, useGamepad, useHotkey, useHydratedBreakpointVariants, useInitialRouteComponent, useInstantLayoutTransition, useInstantTransition, useInvertedScale, useInvertedScale as useDeprecatedInvertedScale, useInView, useIsInCurrentNavigationTarget, useIsomorphicLayoutEffect, useIsOnFramerCanvas, useIsPresent, useLocale, useLocaleCode, useLocaleInfo, useLocalizationInfo, useMeasureLayout, useMotionTemplate, useMotionValue, useMotionValueEvent, useNavigate, useNavigation, useObserveData, useOnAppear, useOnCurrentTargetChange, useOnVariantChange, useOverlayState, usePageEffects, usePresence, usePrototypeNavigate, useProvidedWindow, useQueryData, useReducedMotion, useReducedMotionConfig, useRenderEnvironment, useResetProjection, useRoute, useRouteAnchor, useRouteElementId, useRouteHandler, useRouter, useScroll, useSpring, useTime, useTransform, useUnmountEffect, useVariantState, useVelocity, useViewportScroll, useWillChange, ValueInterpolation, valueToDimensionType, VariantSelector, Vector, VectorGroup, version, VisualElement, visualElementStore, warning, WindowContext, withCSS, withFX, withGeneratedLayoutId, withMappedReactProps, withMeasuredSize, WithNavigator, withOpacity, WithOverride, withParallaxTransform, withPath, withShape, withStyleAppearEffect, withVariantAppearEffect, withVariantFX, wrap, };
|
|
36571
|
+
export { _injectRuntime, addActionControls, addFonts, addPointerEvent, addPointerInfo, addPropertyControls, addScaleCorrector, AnchorLinkTarget, Animatable, animate2 as animate, AnimatePresence, AnimateSharedLayout, animateValue, animateVisualElement, animationControls, animations, annotateTypeOnStringify, anticipate, AnyInterpolation, AutomaticLayoutIds, BackgroundImage, backgroundImageFromProps, backIn, backInOut, backOut, BezierAnimator, BoxShadow, buildTransform, calcLength, calculateRect, callEach, cancelFrame, cancelSync, CanvasStore, checkTargetForNewValues, circIn, circInOut, circOut, clamp, collectVisualStyleFromProps, Color, color, ColorFormat, ColorMixModelType, combinedCSSRulesForPreview, complex, ComponentContainerContext, ComponentPresetsConsumer, ComponentPresetsProvider, ComponentViewportProvider, ConstraintMask, constraintsEnabled, ConstraintValues, Container, ControlType, ConvertColor, convertPresentationTree, convertPropsToDeviceOptions, createBox, createData, createDesignComponent, createDomMotionComponent, createFramerPageLink, createMotionComponent, createScopedAnimate, cssBackgroundSize, cubicBezier, CustomCursorHost, CustomProperties, cx, CycleVariantState, Data, DataContext, DataObserver, DataObserverContext, debounce, defaultDeviceProps, degreesToRadians, delay, DeprecatedComponentContainer, DeprecatedFrameWithEvents, DeprecatedLayoutGroupContext, DeprecatedLayoutGroupContext as LayoutGroupContext, Device, DeviceCodeComponent, devicePresets, DimensionType, disableInstantTransitions, dispatchKeyDownEvent, distance, distance2D, DOM, domAnimation, domMax, DragControls, Draggable, easeIn, easeInOut, easeOut, EmptyState, environment, ErrorPlaceholder, executeInRenderEnvironment, filterProps, finiteNumber, FlatTree, Floating, FontSourceNames, fontStore, forceLayerBackingWithCSSProperties, FormButton, FormContainer, FormPlainTextInput, fraction, Frame, frame, frameData, frameFromElement, frameFromElements, FramerAnimation, framerAppearAnimationScriptKey, framerAppearEffects, framerAppearIdKey, framerAppearTransformTemplateToken, FramerEvent, FramerEventListener, FramerEventSession, FrameWithMotion, GamepadContext, GeneratedComponentContext, getComponentSize, getDevicePreset, getFonts, getFontsFromComponentPreset, getFontsFromSharedStyle, getMeasurableCodeComponentChildren, getMergedConstraintsProps, getPropertyControls, getWhereExpressionFromPathVariables, gradientForShape, Image2 as Image, imagePatternPropsForFill, imageUrlForAsset, inferInitialRouteFromPath, injectComponentCSSRules, installFlexboxGapWorkaroundIfNeeded, InternalID, interpolate, invariant, inView, isAnimatable2 as isAnimatable, isBrowser, isDesignDefinition, isDragActive, isEqual, isFiniteNumber, isFractionDimension, isFramerGamepadKeydownData, isFramerPageLink, isGapEnabled, isMotionComponent, isMotionValue2 as isMotionValue, isOfAnnotatedType, isOverride, isReactDefinition, isRelativeNumber, isShallowEqualArray, isStraightCurve, isValidMotionProp, Layer, LayoutGroup, LayoutIdContext, lazy, LazyMotion, LazyValue, LibraryFeaturesProvider, Line, LinearGradient, Link, loadFont, loadJSON, localPackageFallbackIdentifier, localShadowFrame, m, MainLoop, makePaddingString, makeUseVisualState, memoize2 as memoize, mirrorEasing, mix, modulate, motion, MotionConfig, MotionConfigContext, MotionContext, MotionGlobalConfig, MotionSetup, MotionValue, motionValue, NavigateTo, NavigationCallbackProvider, NavigationConsumer, NavigationTransitionType, NavigationWrapper as Navigation, NotFoundError, ObservableObject, optimizeAppear, optimizeAppearTransformTemplate, optimizedAppearDataAttribute, paddingFromProps, Page3 as Page, PageEffectsProvider, PageRoot, ParentSizeState, parseFramerPageLink, pathDefaults, PathSegment, PathVariablesContext, pipe, Point, Polygon, PresenceContext, print, progress, PropertyOverrides, PropertyStore, propsForLink, px, QueryEngine, RadialGradient, Rect, removeHiddenBreakpointLayers, RenderNodeProvider, RenderTarget, Reorder, resolveLink, ResolveLinks, resolveMotionValue, resolvePageScope, reverseEasing, RichText, roundedNumber, roundedNumberString, roundWithOffset, Scroll, scroll, scrollInfo, setGlobalRenderEnvironment, Shadow, sharedSVGManager, shouldOpenLinkInNewTab, Size, spring, SpringAnimator, SSRVariants, Stack, stagger, startAnimation, startOptimizedAppearAnimation, steps, StyleSheetContext, SVG, SwitchLayoutGroupContext, sync, systemFontFamilyName, Text, throttle, toFlexDirection, toJustifyOrAlignment, toSVGPath, transform, transformString, transformTemplate, unwrapMotionComponent, useActiveTargetCallback, useActiveVariantCallback, useAddVariantProps, useAnimate, useAnimatedState, useAnimatedState as useDeprecatedAnimatedState, useAnimation, useAnimationControls, useAnimationFrame, useBreakpointVariants, useComponentViewport, useConstant2 as useConstant, useCurrentPathVariables, useCurrentRouteId, useCustomCursors, useCycle, useDataRecord, useDomEvent, useDragControls, useDynamicRefs, useElementScroll, useForceUpdate, useGamepad, useHotkey, useHydratedBreakpointVariants, useInitialRouteComponent, useInstantLayoutTransition, useInstantTransition, useInvertedScale, useInvertedScale as useDeprecatedInvertedScale, useInView, useIsInCurrentNavigationTarget, useIsomorphicLayoutEffect, useIsOnFramerCanvas, useIsPresent, useLocale, useLocaleCode, useLocaleInfo, useLocalizationInfo, useMeasureLayout, useMotionTemplate, useMotionValue, useMotionValueEvent, useNavigate, useNavigation, useObserveData, useOnAppear, useOnCurrentTargetChange, useOnVariantChange, useOverlayState, usePageEffects, usePresence, usePrototypeNavigate, useProvidedWindow, useQueryCount, useQueryData, useReducedMotion, useReducedMotionConfig, useRenderEnvironment, useResetProjection, useRoute, useRouteAnchor, useRouteElementId, useRouteHandler, useRouter, useScroll, useSpring, useTime, useTransform, useUnmountEffect, useVariantState, useVelocity, useViewportScroll, useWillChange, ValueInterpolation, valueToDimensionType, VariantSelector, Vector, VectorGroup, version, VisualElement, visualElementStore, warning, WindowContext, withCSS, withFX, withGeneratedLayoutId, withMappedReactProps, withMeasuredSize, WithNavigator, withOpacity, WithOverride, withParallaxTransform, withPath, withShape, withStyleAppearEffect, withVariantAppearEffect, withVariantFX, wrap, };
|
|
36387
36572
|
/**
|
|
36388
36573
|
* @license Emotion v11.0.0
|
|
36389
36574
|
* MIT License
|