unframer 0.6.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/react.js ADDED
@@ -0,0 +1,157 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { combinedCSSRules } from '../framer-fixed/dist/framer.js';
4
+ import { useSyncExternalStore, } from 'react';
5
+ function getFonts(component) {
6
+ const fonts = component.fonts;
7
+ return fonts || [];
8
+ }
9
+ function classNames(...args) {
10
+ return args.filter(Boolean).join(' ');
11
+ }
12
+ const defaultBreakpoints = ['Desktop', 'Tablet', 'Mobile'];
13
+ let defaultMap = Object.fromEntries(defaultBreakpoints.map((x) => [x, x]));
14
+ function getClassMap(breakpoints) {
15
+ const classMap = {
16
+ Desktop: '',
17
+ Tablet: '',
18
+ Mobile: '',
19
+ };
20
+ if (breakpoints.length === 1) {
21
+ classMap[breakpoints[0]] = 'FramerDesktop FramerTablet FramerMobile';
22
+ }
23
+ else if (breakpoints.length === 2) {
24
+ if (breakpoints.includes('Desktop')) {
25
+ classMap.Desktop = 'Desktop';
26
+ classMap[breakpoints.find((b) => b !== 'Desktop')] =
27
+ 'FramerTablet FramerMobile';
28
+ }
29
+ else if (breakpoints.includes('Tablet')) {
30
+ classMap.Tablet = 'Tablet';
31
+ classMap[breakpoints.find((b) => b !== 'Tablet')] =
32
+ 'FramerDesktop FramerMobile';
33
+ }
34
+ else {
35
+ classMap.Mobile = 'Mobile';
36
+ classMap[breakpoints.find((b) => b !== 'Mobile')] =
37
+ 'FramerDesktop FramerTablet';
38
+ }
39
+ }
40
+ else if (breakpoints.length === 3) {
41
+ classMap.Desktop = 'FramerDesktop';
42
+ classMap.Tablet = 'FramerTablet';
43
+ classMap.Mobile = 'FramerMobile';
44
+ }
45
+ return classMap;
46
+ }
47
+ function deduplicateByKey(arr, key) {
48
+ let map = new Map();
49
+ for (let item of arr) {
50
+ let value = item[key(item)];
51
+ if (map.has(value)) {
52
+ continue;
53
+ }
54
+ map.set(value, item);
55
+ }
56
+ return Array.from(map.values());
57
+ }
58
+ export function getFontsStyles(Components) {
59
+ const allFonts = deduplicateByKey(Components.map(getFonts).flat(), (x) => x.url).filter((x) => x.url);
60
+ // console.log(JSON.stringify(fonts, null, 2))
61
+ let str = allFonts
62
+ .map((x) => {
63
+ let str = `@font-face { font-family: '${x.family}'; src: url(${x.url});`;
64
+ if (x.style) {
65
+ str += ` font-style: ${x.style};`;
66
+ }
67
+ if (x.weight) {
68
+ str += ` font-weight: ${x.weight};`;
69
+ }
70
+ str += ` }`;
71
+ return str;
72
+ })
73
+ .join('\n');
74
+ return str;
75
+ }
76
+ const breakpointSizes = {
77
+ Desktop: 1024,
78
+ Tablet: 768,
79
+ Mobile: 0,
80
+ };
81
+ function getBreakpointNameFromWindowWidth(windowWidth) {
82
+ return defaultBreakpoints.find((name) => windowWidth >= breakpointSizes[name]);
83
+ }
84
+ const breakpointsStyles = `
85
+
86
+ .FramerTablet,
87
+ .FramerMobile,
88
+ .FramerDesktop {
89
+ display: none;
90
+ }
91
+
92
+ @media (min-width: ${breakpointSizes.Desktop}px) {
93
+ .FramerDesktop {
94
+ display: contents;
95
+ }
96
+ }
97
+
98
+ @media (min-width: ${breakpointSizes.Tablet}px) and (max-width: ${breakpointSizes.Desktop}px) {
99
+ .FramerTablet {
100
+ display: contents;
101
+ }
102
+ }
103
+
104
+ @media (max-width: ${breakpointSizes.Tablet}px) {
105
+ .FramerMobile {
106
+ display: contents;
107
+ }
108
+ }
109
+
110
+ .contents {
111
+ display: contents;
112
+ }
113
+
114
+ `;
115
+ export function FramerStyles({ Components = [] }) {
116
+ return (_jsxs(_Fragment, { children: [_jsx("style", { dangerouslySetInnerHTML: { __html: getFontsStyles(Components) }, suppressHydrationWarning: true, hidden: true }), _jsx("style", { dangerouslySetInnerHTML: {
117
+ __html: combinedCSSRules.join('\n'),
118
+ }, suppressHydrationWarning: true, hidden: true }), _jsx("style", { dangerouslySetInnerHTML: { __html: breakpointsStyles }, suppressHydrationWarning: true, hidden: true })] }));
119
+ }
120
+ export function WithFramerBreakpoints({ Component, variants: breakpointsMap = defaultMap, ...rest }) {
121
+ const controls = Component['propertyControls'];
122
+ const variantControls = controls?.['variant'];
123
+ if (!variantControls) {
124
+ // @ts-expect-error
125
+ return _jsx(Component, { variant: undefined, ...rest });
126
+ }
127
+ const options = variantControls?.optionTitles;
128
+ const currentBreakpoint = useSyncExternalStore(onResize, () => {
129
+ // console.log('window.innerWidth', window.innerWidth)
130
+ const breakpoint = getBreakpointNameFromWindowWidth(window.innerWidth);
131
+ return breakpoint;
132
+ }, () => {
133
+ // on server
134
+ return '';
135
+ });
136
+ // console.log('currentBreakpoint', currentBreakpoint)
137
+ let parts = [];
138
+ for (let breakpointName of defaultBreakpoints) {
139
+ if (currentBreakpoint && currentBreakpoint !== breakpointName) {
140
+ continue;
141
+ }
142
+ let realVariant = breakpointsMap[breakpointName];
143
+ if (!realVariant) {
144
+ continue;
145
+ }
146
+ let mapped = defaultBreakpoints.filter((x) => breakpointsMap[x]);
147
+ let map = getClassMap(mapped)[breakpointName];
148
+ let className = classNames('', map);
149
+ parts.push(_jsx("div", { className: className, children: _jsx(Component, { ...rest, variant: realVariant }) }, breakpointName));
150
+ }
151
+ return parts;
152
+ }
153
+ const onResize = (callback) => {
154
+ window.addEventListener('resize', callback);
155
+ return () => window.removeEventListener('resize', callback);
156
+ };
157
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}