unframer 2.11.2 → 2.13.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.
Files changed (49) hide show
  1. package/dist/exporter.d.ts +3 -0
  2. package/dist/exporter.d.ts.map +1 -1
  3. package/dist/exporter.js +70 -32
  4. package/dist/exporter.js.map +1 -1
  5. package/dist/exporter.test.js +3 -0
  6. package/dist/exporter.test.js.map +1 -1
  7. package/dist/framer.d.ts.map +1 -1
  8. package/dist/framer.js +876 -507
  9. package/dist/framer.js.map +1 -1
  10. package/dist/index.d.ts +3 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +9 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/react.d.ts +16 -6
  15. package/dist/react.d.ts.map +1 -1
  16. package/dist/react.js +70 -3
  17. package/dist/react.js.map +1 -1
  18. package/dist/utils.d.ts +3 -2
  19. package/dist/utils.d.ts.map +1 -1
  20. package/dist/utils.js +27 -2
  21. package/dist/utils.js.map +1 -1
  22. package/esm/exporter.d.ts +3 -0
  23. package/esm/exporter.d.ts.map +1 -1
  24. package/esm/exporter.js +72 -35
  25. package/esm/exporter.js.map +1 -1
  26. package/esm/exporter.test.js +4 -1
  27. package/esm/exporter.test.js.map +1 -1
  28. package/esm/framer.d.ts.map +1 -1
  29. package/esm/framer.js +873 -507
  30. package/esm/framer.js.map +1 -1
  31. package/esm/index.d.ts +3 -1
  32. package/esm/index.d.ts.map +1 -1
  33. package/esm/index.js +3 -1
  34. package/esm/index.js.map +1 -1
  35. package/esm/react.d.ts +16 -6
  36. package/esm/react.d.ts.map +1 -1
  37. package/esm/react.js +69 -5
  38. package/esm/react.js.map +1 -1
  39. package/esm/utils.d.ts +3 -2
  40. package/esm/utils.d.ts.map +1 -1
  41. package/esm/utils.js +26 -2
  42. package/esm/utils.js.map +1 -1
  43. package/package.json +3 -4
  44. package/src/exporter.test.ts +6 -1
  45. package/src/exporter.ts +85 -42
  46. package/src/framer.js +925 -513
  47. package/src/index.ts +7 -1
  48. package/src/react.tsx +104 -16
  49. package/src/utils.ts +30 -3
package/esm/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './framer.js';
2
- export { FramerStyles, UnframerBreakpoint, WithFramerBreakpoints, ContextProviders, } from './react.js';
2
+ import { AdaptedLink as Link, ResolveLinksAdapted as ResolveLinks } from './react.js';
3
+ export { FramerStyles, UnframerBreakpoint, WithFramerBreakpoints, ContextProviders, AdaptedLink, } from './react.js';
4
+ export { Link, ResolveLinks };
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAE3B,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACnB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,EACH,WAAW,IAAI,IAAI,EACnB,mBAAmB,IAAI,YAAY,EACtC,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA"}
package/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './framer.js';
2
- export { FramerStyles, WithFramerBreakpoints, ContextProviders, } from './react.js';
2
+ import { AdaptedLink as Link, ResolveLinksAdapted as ResolveLinks, } from './react.js';
3
+ export { FramerStyles, WithFramerBreakpoints, ContextProviders, AdaptedLink, } from './react.js';
4
+ export { Link, ResolveLinks };
3
5
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAE3B,OAAO,EACH,YAAY,EAEZ,qBAAqB,EACrB,gBAAgB,GACnB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,OAAO,EACH,WAAW,IAAI,IAAI,EACnB,mBAAmB,IAAI,YAAY,GACtC,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,YAAY,EAEZ,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA"}
package/esm/react.d.ts CHANGED
@@ -7,7 +7,7 @@ export type UnframerBreakpoint = keyof typeof defaultBreakpointSizes;
7
7
  export declare function FramerStyles({ Components }: {
8
8
  Components?: any[] | undefined;
9
9
  }): any;
10
- export declare const WithFramerBreakpoints: import("react").ForwardRefExoticComponent<{
10
+ export declare const WithFramerBreakpoints: React.ForwardRefExoticComponent<{
11
11
  Component: ComponentType<{
12
12
  variant?: any;
13
13
  className?: string;
@@ -16,15 +16,25 @@ export declare const WithFramerBreakpoints: import("react").ForwardRefExoticComp
16
16
  } & Omit<{
17
17
  variant?: any;
18
18
  className?: string;
19
- }, "variant"> & import("react").RefAttributes<unknown>>;
20
- export declare function ContextProviders({ locale, children, framerSiteId, routes, routeId, pathVariables, collectionUtils, locales, }: {
19
+ }, "variant"> & React.RefAttributes<unknown>>;
20
+ import React from 'react';
21
+ export declare function ResolveLinksAdapted({ links, children }: {
22
+ links: any;
23
+ children: any;
24
+ }): any;
25
+ export declare function AdaptedLink({ href, nodeId, openInNewTab, smoothScroll, children, ...rest }: {
26
+ [x: string]: any;
27
+ href: any;
28
+ nodeId: any;
29
+ openInNewTab: any;
30
+ smoothScroll: any;
31
+ children: any;
32
+ }): import("react/jsx-runtime.js").JSX.Element;
33
+ export declare function ContextProviders({ locale, children, framerSiteId, routes, locales, }: {
21
34
  locale: any;
22
35
  children: any;
23
36
  framerSiteId: any;
24
37
  routes: any;
25
- routeId: any;
26
- pathVariables: any;
27
- collectionUtils: any;
28
38
  locales: any;
29
39
  }): import("react/jsx-runtime.js").JSX.Element;
30
40
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEH,aAAa,EAKhB,MAAM,OAAO,CAAA;AACd,OAAO,EAEH,sBAAsB,EAEzB,MAAM,UAAU,CAAA;AAWjB,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,sBAAsB,CAAA;AA8BpE;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAwB,EAAE;;CAAA,GAAG,GAAG,CAmD9D;AAED,eAAO,MAAM,qBAAqB;;kBACM,GAAG;oBAAc,MAAM;;;;cAAvB,GAAG;gBAAc,MAAM;uDAuF7D,CAAA;AAiCF,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,OAAO,EACP,aAAa,EACb,eAAe,EACf,OAAO,GACV;;;;;;;;;CAAA,8CAuBA"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEH,aAAa,EAKhB,MAAM,OAAO,CAAA;AACd,OAAO,EAEH,sBAAsB,EAEzB,MAAM,UAAU,CAAA;AAWjB,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,sBAAsB,CAAA;AA8BpE;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAwB,EAAE;;CAAA,GAAG,GAAG,CAmD9D;AAED,eAAO,MAAM,qBAAqB;;kBACM,GAAG;oBAAc,MAAM;;;;cAAvB,GAAG;gBAAc,MAAM;6CAuF7D,CAAA;AAoCF,OAAO,KAAK,MAAM,OAAO,CAAA;AA0BzB,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;;;CAAA,OAGtD;AAED,wBAAgB,WAAW,CAAC,EACxB,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,GAAG,IAAI,EACV;;;;;;;CAAA,8CAgCA;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,MAAM,EAEN,OAAO,GACV;;;;;;CAAA,8CAsCA"}
package/esm/react.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { combinedCSSRules } from './framer.js';
4
- import { forwardRef, useId, useSyncExternalStore, } from 'react';
4
+ import { forwardRef, useId, useMemo, useSyncExternalStore, } from 'react';
5
5
  import { breakpointsStyles, defaultBreakpointSizes, getFontsStyles, } from './css.js';
6
6
  function classNames(...args) {
7
7
  return args.filter(Boolean).join(' ');
@@ -118,9 +118,73 @@ FetchClientProvider,
118
118
  // @ts-ignore
119
119
  FormContext,
120
120
  // @ts-ignore
121
- Router, } from './framer.js';
122
- export function ContextProviders({ locale, children, framerSiteId, routes, routeId, pathVariables, collectionUtils, locales, }) {
123
- const localeId = locales?.find((l) => l.slug === locale || l.code === locale || l.id === locale)?.id;
124
- return (_jsx(FetchClientProvider, { children: _jsx(CustomCursorHost, { children: _jsx(FormContext.Provider, { value: framerSiteId, children: _jsx(Router, { initialRoute: routeId, initialPathVariables: pathVariables, initialLocaleId: localeId, enableImproveInpDuringHydration: true, routes: routes, collectionUtils: collectionUtils, locales: locales, children: children }) }) }) }));
121
+ LocaleInfoContext,
122
+ // @ts-ignore
123
+ FramerLink as Link, } from './framer.js';
124
+ import React from 'react';
125
+ const routesContext = React.createContext({});
126
+ function replacePathParams(path, params) {
127
+ const paramRegex = /:[a-zA-Z]+/g;
128
+ const matches = path.match(paramRegex);
129
+ // If there is only one match
130
+ if (matches?.length === 1) {
131
+ const paramValue = Object.values(params)[0];
132
+ let res = path.replace(paramRegex, paramValue);
133
+ // console.log({ matches, params, paramValue, res })
134
+ return res;
135
+ }
136
+ return path.replace(paramRegex, (match) => {
137
+ const param = match.slice(1); // Remove the : prefix
138
+ return params[param] || match; // Replace with param value or keep original if not found
139
+ });
140
+ }
141
+ export function ResolveLinksAdapted({ links, children }) {
142
+ // TODO add ref
143
+ return children(links.map((x) => x.href));
144
+ }
145
+ export function AdaptedLink({ href, nodeId, openInNewTab, smoothScroll, children, ...rest }) {
146
+ const onlyForFramer = { children, nodeId, openInNewTab, smoothScroll };
147
+ const routes = React.useContext(routesContext);
148
+ const webPageId = href?.webPageId;
149
+ const pathVariables = href?.pathVariables;
150
+ const route = routes?.[webPageId];
151
+ const target = openInNewTab ? '_blank' : undefined;
152
+ // console.log({ href, pathVariables, path: route?.path, ...rest })
153
+ if (href?.startsWith && href.startsWith('/')) {
154
+ return React.cloneElement(children, { ...rest, href, target });
155
+ }
156
+ if (!webPageId) {
157
+ return _jsx(Link, { href: href, ...rest, ...onlyForFramer });
158
+ }
159
+ if (!route || !route.path) {
160
+ return _jsx(Link, { href: href, ...rest, ...onlyForFramer });
161
+ }
162
+ let path = route.path;
163
+ if (pathVariables) {
164
+ path = replacePathParams(path, pathVariables);
165
+ }
166
+ if (path?.startsWith?.('/')) {
167
+ return React.cloneElement(children, {
168
+ ...rest,
169
+ href: path,
170
+ target,
171
+ });
172
+ }
173
+ return _jsx(Link, { href: path, ...rest, ...onlyForFramer });
174
+ }
175
+ export function ContextProviders({ locale, children, framerSiteId, routes,
176
+ // collectionUtils,
177
+ locales, }) {
178
+ const activeLocale = locales?.find((l) => l.slug === locale || l.code === locale || l.id === locale);
179
+ const localeInfo = useMemo(() => {
180
+ return {
181
+ activeLocale,
182
+ locales,
183
+ setLocale: async (localeOrLocaleId) => {
184
+ console.log('setLocale', localeOrLocaleId);
185
+ },
186
+ };
187
+ }, [activeLocale, locales]);
188
+ return (_jsx(FetchClientProvider, { children: _jsx(CustomCursorHost, { children: _jsx(FormContext.Provider, { value: framerSiteId, children: _jsx(LocaleInfoContext, { value: localeInfo, children: _jsx(routesContext.Provider, { value: routes, children: children }) }) }) }) }));
125
189
  }
126
190
  //# sourceMappingURL=react.js.map
package/esm/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
package/esm/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const spinner: any;
1
+ export declare const spinner: import("nanospinner").Spinner;
2
2
  export declare function terminalMarkdown(markdown: string): string | Promise<string>;
3
3
  export declare const logger: {
4
4
  debug: boolean;
@@ -6,6 +6,7 @@ export declare const logger: {
6
6
  green(...args: any[]): void;
7
7
  error(...args: any[]): void;
8
8
  };
9
- export declare function componentNameToPath(name: string): Promise<string>;
9
+ export declare function componentNameToPath(name: string): string;
10
10
  export declare function sleep(ms: number): Promise<unknown>;
11
+ export declare function kebabCase(str: string): string;
11
12
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,EAAqD,GAAG,CAAA;AAI5E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,4BAEhD;AAKD,eAAO,MAAM,MAAM;;;;;CAclB,CAAA;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,mBAOrD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,+BAAiD,CAAA;AAIrE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,4BAEhD;AAKD,eAAO,MAAM,MAAM;;;;;CAclB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,UAM/C;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B;AAUD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UAkBpC"}
package/esm/utils.js CHANGED
@@ -24,8 +24,7 @@ export const logger = {
24
24
  console.error([prefix, ...args].map((x) => pico.red(x)).join(' '));
25
25
  },
26
26
  };
27
- export async function componentNameToPath(name) {
28
- const { default: kebabCase } = await import('just-kebab-case');
27
+ export function componentNameToPath(name) {
29
28
  return name
30
29
  .split('/')
31
30
  .filter(Boolean)
@@ -35,4 +34,29 @@ export async function componentNameToPath(name) {
35
34
  export function sleep(ms) {
36
35
  return new Promise((resolve) => setTimeout(resolve, ms));
37
36
  }
37
+ // https://www.npmjs.com/package/just-kebab-case?activeTab=readme
38
+ // any combination of spaces and punctuation characters
39
+ // thanks to http://stackoverflow.com/a/25575009
40
+ var wordSeparators = /[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/;
41
+ var capital_plus_lower = /[A-ZÀ-Ý\u00C0-\u00D6\u00D9-\u00DD][a-zà-ÿ]/g;
42
+ var capitals = /[A-ZÀ-Ý\u00C0-\u00D6\u00D9-\u00DD]+/g;
43
+ export function kebabCase(str) {
44
+ // replace word starts with space + lower case equivalent for later parsing
45
+ // 1) treat cap + lower as start of new word
46
+ str = str.replace(capital_plus_lower, function (match) {
47
+ // match is one caps followed by one non-cap
48
+ return ' ' + (match[0].toLowerCase() || match[0]) + match[1];
49
+ });
50
+ // 2) treat all remaining capitals as words
51
+ str = str.replace(capitals, function (match) {
52
+ // match is a series of caps
53
+ return ' ' + match.toLowerCase();
54
+ });
55
+ return str
56
+ .trim()
57
+ .split(wordSeparators)
58
+ .join('-')
59
+ .replace(/^-/, '')
60
+ .replace(/-\s*$/, '');
61
+ }
38
62
  //# sourceMappingURL=utils.js.map
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,+BAA+B,CAAQ,CAAA;AAE5E,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAA;AAE5B,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;AAExD,MAAM,MAAM,GAAG,YAAY,CAAA;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,KAAK,EAAE,mBAAmB;IAC1B,GAAG,CAAC,GAAG,IAAI;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChB,OAAM;QACV,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;CACJ,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAClD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC9D,OAAO,IAAI;SACN,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unframer",
3
- "version": "2.11.2",
3
+ "version": "2.13.0",
4
4
  "description": "Import Framer components directly in your React app, type safe and customizable",
5
5
  "sideEffects": false,
6
6
  "repository": "https://github.com/remorses/unframer",
@@ -39,7 +39,7 @@
39
39
  "react-dom": "*"
40
40
  },
41
41
  "engines": {
42
- "node": ">=20.0.0"
42
+ "node": ">=22.0.0"
43
43
  },
44
44
  "dependencies": {
45
45
  "async-sema": "^3.1.1",
@@ -49,10 +49,9 @@
49
49
  "esbuild-plugins-node-modules-polyfill": "^1.6.8",
50
50
  "find-up": "^5.0.0",
51
51
  "json5": "^2.2.3",
52
- "just-kebab-case": "^4.2.0",
53
52
  "marked": "^15.0.3",
54
53
  "marked-terminal": "^7.2.1",
55
- "nanospinner": "^1.2.0",
54
+ "nanospinner": "^1.2.2",
56
55
  "picocolors": "^1.0.1",
57
56
  "real-framer-motion": "npm:framer-motion@11.2.10",
58
57
  "spiceflow": "^1.4.1",
@@ -1,6 +1,11 @@
1
1
  import { describe, test, expect } from 'vitest'
2
- import { propCamelCase } from './exporter'
2
+ import { checkUnframerVersion, propCamelCase } from './exporter'
3
3
  import { replaceWebPageIds } from './esbuild'
4
+ import path from 'path'
5
+
6
+ test('checkUnframerVersion', () => {
7
+ checkUnframerVersion({ cwd: process.cwd() })
8
+ })
4
9
 
5
10
  describe('replaceWebPageIds', () => {
6
11
  test('replaces webPageIds with paths', () => {
package/src/exporter.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { build, BuildResult, context } from 'esbuild'
2
+ import packageJson from '../package.json'
2
3
 
3
4
  import url from 'url'
4
5
  import { Config } from './cli'
@@ -8,7 +9,7 @@ import dprint from 'dprint-node'
8
9
 
9
10
  import { nodeModulesPolyfillPlugin } from 'esbuild-plugins-node-modules-polyfill'
10
11
 
11
- import { exec } from 'child_process'
12
+ import { exec, execSync } from 'child_process'
12
13
  import fs from 'fs'
13
14
  import path from 'path'
14
15
  import dedent from 'string-dedent'
@@ -31,7 +32,7 @@ import {
31
32
  PropertyControls,
32
33
  combinedCSSRules,
33
34
  } from './framer.js'
34
- import { logger, spinner, terminalMarkdown } from './utils.js'
35
+ import { kebabCase, logger, spinner, terminalMarkdown } from './utils.js'
35
36
 
36
37
  function validateUrl(url: string) {
37
38
  try {
@@ -68,6 +69,12 @@ export async function bundle({
68
69
 
69
70
  spinner.start()
70
71
 
72
+ const otherRoutes = Object.fromEntries(
73
+ (config.framerWebPages || []).map((page) => [
74
+ page.webPageId,
75
+ { path: page.path },
76
+ ]),
77
+ )
71
78
  const buildContext = await context({
72
79
  absWorkingDir: out,
73
80
  entryPoints: Object.keys(components).map((name) => {
@@ -121,20 +128,17 @@ export async function bundle({
121
128
  JSON.stringify(config.locales) || '[]'
122
129
  }
123
130
 
124
- Component.Responsive = ({ locale, ...props }) => {
131
+ Component.Responsive = ({ locale, ...rest }) => {
125
132
  return (
126
133
  <ContextProviders
127
134
  routeId="x"
128
- routes={{
129
- x: {
130
- elements: {},
131
- page: <WithFramerBreakpoints
135
+ routes={${JSON.stringify(
136
+ otherRoutes,
137
+ )}}
138
+ children={<WithFramerBreakpoints
132
139
  Component={Component}
133
- {...props}
134
- />,
135
- path: '/',
136
- },
137
- }}
140
+ {...rest}
141
+ />}
138
142
  framerSiteId={${JSON.stringify(
139
143
  config.fullFramerProjectId,
140
144
  )}}
@@ -148,13 +152,12 @@ export async function bundle({
148
152
  return (
149
153
  <ContextProviders
150
154
  routeId="x"
151
- routes={{
152
- x: {
153
- elements: {},
154
- page: <Component {...rest} />,
155
- path: '/',
156
- },
157
- }}
155
+ routes={${JSON.stringify(
156
+ otherRoutes,
157
+ null,
158
+ 2,
159
+ )}}
160
+ children={<Component {...rest} />}
158
161
  framerSiteId={${JSON.stringify(
159
162
  config.fullFramerProjectId,
160
163
  )}}
@@ -227,21 +230,21 @@ export async function bundle({
227
230
  `/* eslint-disable */\n` +
228
231
  doNotEditComment +
229
232
  formatted
230
- if (framerWebPages?.length) {
231
- codeNew = replaceWebPageIds({
232
- code: codeNew,
233
- elements: framerWebPages,
234
- })
235
- }
236
- const lines = findRelativeLinks(codeNew)
237
- if (lines.length) {
238
- spinner.error(
239
- `found broken links for ${path.relative(out, file.path)}`,
240
- )
241
- lines.forEach((line) => {
242
- logger.log(`${path.resolve(out, file.path)}:${line + 1}`)
243
- })
244
- }
233
+ // if (framerWebPages?.length) {
234
+ // codeNew = replaceWebPageIds({
235
+ // code: codeNew,
236
+ // elements: framerWebPages,
237
+ // })
238
+ // }
239
+ // const lines = findRelativeLinks(codeNew)
240
+ // if (lines.length) {
241
+ // spinner.error(
242
+ // `found broken links for ${path.relative(out, file.path)}`,
243
+ // )
244
+ // lines.forEach((line) => {
245
+ // logger.log(`${path.resolve(out, file.path)}:${line + 1}`)
246
+ // })
247
+ // }
245
248
 
246
249
  if (existing === codeNew) {
247
250
  continue
@@ -402,11 +405,15 @@ export async function bundle({
402
405
 
403
406
  // when user press ctrl+c dispose
404
407
  process.on('SIGINT', async () => {
408
+ spinner.stop()
409
+ console.log()
405
410
  await buildContext.cancel()
406
411
  buildContext.dispose()
407
412
  process.exit(0) // Ensure process exits
408
413
  })
409
414
  process.on('SIGABRT', async () => {
415
+ spinner.stop()
416
+ console.log()
410
417
  await buildContext.cancel()
411
418
  buildContext.dispose()
412
419
  process.exit(0) // Ensure process exits
@@ -529,6 +536,8 @@ export async function bundle({
529
536
 
530
537
  `),
531
538
  )
539
+ checkUnframerVersion({ cwd: out })
540
+ console.log()
532
541
  return { result, rebuild, buildContext }
533
542
 
534
543
  // // when user press ctrl+c dispose
@@ -578,6 +587,32 @@ export async function bundle({
578
587
  // return res
579
588
  }
580
589
 
590
+ export function checkUnframerVersion({ cwd }) {
591
+ const currentVersion = packageJson.version
592
+ try {
593
+ const code = `import('unframer/package.json', { with: { type: 'json' } }).then(pkg => console.log(pkg.version || pkg.default?.version));`
594
+
595
+ const command = [nodePath, '-e', JSON.stringify(code)].join(' ')
596
+ const installedVersion = execSync(command, {
597
+ stdio: ['pipe', 'pipe', 'pipe'],
598
+ cwd,
599
+ })
600
+ .toString()
601
+ .trim()
602
+
603
+ if (installedVersion !== currentVersion) {
604
+ spinner.error(
605
+ `Unframer version mismatch. Please run: npm update unframer@latest`,
606
+ )
607
+ }
608
+ } catch (e: any) {
609
+ // console.error(e.stderr.toString())
610
+ spinner.error(
611
+ 'Unframer is not installed in your project. Please run: npm install unframer',
612
+ )
613
+ }
614
+ }
615
+
581
616
  export function getDarkModeSelector(opts: {
582
617
  darkModeType?: 'class' | 'media'
583
618
  content: string
@@ -595,7 +630,6 @@ export function getDarkModeSelector(opts: {
595
630
  }
596
631
  return '.dark {\n' + content + '\n' + '}'
597
632
  }
598
-
599
633
  export function getStyleTokensCss(
600
634
  tokens: StyleToken[],
601
635
  darkModeType: 'class' | 'media' = 'class',
@@ -605,16 +639,25 @@ export function getStyleTokensCss(
605
639
  }
606
640
 
607
641
  const lightTokens = tokens
608
- .map(
609
- (token) =>
610
- ' --token-' + token.id + ': ' + token.lightColor + ';',
611
- )
642
+ .flatMap((token) => [
643
+ ' --token-' + token.id + ': ' + token.lightColor + ';',
644
+ ' --unframer-' +
645
+ kebabCase(token.name || token.id) +
646
+ ': ' +
647
+ token.lightColor +
648
+ ';',
649
+ ])
612
650
  .join('\n')
613
651
 
614
652
  const darkTokens = tokens
615
- .map(
616
- (token) => ' --token-' + token.id + ': ' + token.darkColor + ';',
617
- )
653
+ .flatMap((token) => [
654
+ ' --token-' + token.id + ': ' + token.darkColor + ';',
655
+ ' --unframer-' +
656
+ kebabCase(token.name || token.id) +
657
+ ': ' +
658
+ token.darkColor +
659
+ ';',
660
+ ])
618
661
  .join('\n')
619
662
 
620
663
  return (