@makeswift/runtime 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/Box.cjs.js +1 -0
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +1 -0
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -1
  6. package/dist/Button.es.js +2 -2
  7. package/dist/Carousel.cjs.js +1 -1
  8. package/dist/Carousel.es.js +2 -2
  9. package/dist/Countdown.cjs.js +1 -0
  10. package/dist/Countdown.cjs.js.map +1 -1
  11. package/dist/Countdown.es.js +2 -1
  12. package/dist/Countdown.es.js.map +1 -1
  13. package/dist/Divider.cjs.js +1 -0
  14. package/dist/Divider.cjs.js.map +1 -1
  15. package/dist/Divider.es.js +2 -1
  16. package/dist/Divider.es.js.map +1 -1
  17. package/dist/Embed.cjs.js +1 -0
  18. package/dist/Embed.cjs.js.map +1 -1
  19. package/dist/Embed.es.js +2 -1
  20. package/dist/Embed.es.js.map +1 -1
  21. package/dist/Form.cjs.js +1 -1
  22. package/dist/Form.es.js +2 -2
  23. package/dist/Image.cjs2.js +1 -1
  24. package/dist/Image.es2.js +2 -2
  25. package/dist/Navigation.cjs.js +1 -1
  26. package/dist/Navigation.es.js +2 -2
  27. package/dist/Root.cjs.js +1 -0
  28. package/dist/Root.cjs.js.map +1 -1
  29. package/dist/Root.es.js +1 -0
  30. package/dist/Root.es.js.map +1 -1
  31. package/dist/SocialLinks.es.js +1 -1
  32. package/dist/Text.cjs.js +1 -1
  33. package/dist/Text.es.js +2 -2
  34. package/dist/Video.cjs.js +1 -0
  35. package/dist/Video.cjs.js.map +1 -1
  36. package/dist/Video.es.js +1 -0
  37. package/dist/Video.es.js.map +1 -1
  38. package/dist/components.cjs.js +4 -4
  39. package/dist/components.es.js +4 -4
  40. package/dist/controls.cjs.js +2 -0
  41. package/dist/controls.cjs.js.map +1 -1
  42. package/dist/controls.es.js +1 -1
  43. package/dist/cssMediaRules.es.js +1 -1
  44. package/dist/descriptors.cjs.js.map +1 -1
  45. package/dist/descriptors.es.js.map +1 -1
  46. package/dist/index.cjs.js +85 -1
  47. package/dist/index.cjs.js.map +1 -1
  48. package/dist/index.cjs3.js +1 -12
  49. package/dist/index.cjs3.js.map +1 -1
  50. package/dist/index.es.js +86 -3
  51. package/dist/index.es.js.map +1 -1
  52. package/dist/index.es2.js +1 -1
  53. package/dist/index.es3.js +2 -12
  54. package/dist/index.es3.js.map +1 -1
  55. package/dist/next.cjs.js +1 -0
  56. package/dist/next.cjs.js.map +1 -1
  57. package/dist/next.es.js +1 -0
  58. package/dist/next.es.js.map +1 -1
  59. package/dist/react-builder-preview.cjs.js +1 -0
  60. package/dist/react-builder-preview.cjs.js.map +1 -1
  61. package/dist/react-builder-preview.es.js +1 -0
  62. package/dist/react-builder-preview.es.js.map +1 -1
  63. package/dist/react.cjs.js +1 -0
  64. package/dist/react.cjs.js.map +1 -1
  65. package/dist/react.es.js +1 -0
  66. package/dist/react.es.js.map +1 -1
  67. package/dist/text-input.cjs.js +6 -0
  68. package/dist/text-input.cjs.js.map +1 -1
  69. package/dist/text-input.es.js +5 -1
  70. package/dist/text-input.es.js.map +1 -1
  71. package/dist/types/controls/control.d.ts +3 -2
  72. package/dist/types/controls/control.d.ts.map +1 -1
  73. package/dist/types/controls/index.d.ts +1 -0
  74. package/dist/types/controls/index.d.ts.map +1 -1
  75. package/dist/types/controls/link.d.ts +50 -0
  76. package/dist/types/controls/link.d.ts.map +1 -0
  77. package/dist/types/prop-controllers/descriptors.d.ts +4 -3
  78. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  79. package/dist/types/runtimes/react/controls/control.d.ts +3 -2
  80. package/dist/types/runtimes/react/controls/control.d.ts.map +1 -1
  81. package/dist/types/runtimes/react/controls/link.d.ts +11 -0
  82. package/dist/types/runtimes/react/controls/link.d.ts.map +1 -0
  83. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  84. package/dist/useBoxShadow.es.js +1 -1
  85. package/dist/useMediaQuery.es.js +1 -1
  86. package/package.json +1 -1
@@ -40,16 +40,6 @@ function _interopDefaultLegacy(e) {
40
40
  }
41
41
  var scrollIntoView__default = /* @__PURE__ */ _interopDefaultLegacy(scrollIntoView);
42
42
  var NextLink__default = /* @__PURE__ */ _interopDefaultLegacy(NextLink);
43
- function usePage(pageId) {
44
- const { error, data = {} } = next.useQuery(next.PAGE_PATHNAMES_BY_ID, {
45
- skip: pageId == null,
46
- variables: { ids: [pageId] }
47
- });
48
- if (pageId == null || error != null)
49
- return null;
50
- const { pagePathnamesById: [page] = [] } = data;
51
- return page;
52
- }
53
43
  const Link = React.forwardRef(function Link2(_a, ref) {
54
44
  var _b = _a, {
55
45
  link,
@@ -60,7 +50,7 @@ const Link = React.forwardRef(function Link2(_a, ref) {
60
50
  "onClick"
61
51
  ]);
62
52
  var _a2;
63
- const page = usePage(link && link.type === "OPEN_PAGE" ? link.payload.pageId : null);
53
+ const page = next.usePage(link && link.type === "OPEN_PAGE" ? link.payload.pageId : null);
64
54
  const elementKey = (link == null ? void 0 : link.type) === "SCROLL_TO_ELEMENT" ? (_a2 = link.payload.elementIdConfig) == null ? void 0 : _a2.elementKey : null;
65
55
  const elementId = next.useElementId(elementKey);
66
56
  let href = "#";
@@ -137,5 +127,4 @@ const Link = React.forwardRef(function Link2(_a, ref) {
137
127
  });
138
128
  });
139
129
  exports.Link = Link;
140
- exports.usePage = usePage;
141
130
  //# sourceMappingURL=index.cjs3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs3.js","sources":["../src/components/hooks/usePage.ts","../src/components/shared/Link/index.tsx"],"sourcesContent":["import { useQuery } from '../../api/react'\nimport { PAGE_PATHNAMES_BY_ID } from '../utils/queries'\n\ntype Page = {\n id: string\n pathname: string\n}\n\nexport function usePage(pageId: string | null | undefined): Page | null | undefined {\n const { error, data = {} } = useQuery(PAGE_PATHNAMES_BY_ID, {\n skip: pageId == null,\n variables: { ids: [pageId] },\n })\n\n if (pageId == null || error != null) return null\n\n const { pagePathnamesById: [page] = [] } = data\n\n return page\n}\n","import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { usePage } from '../../hooks'\nimport { useElementId } from '../../../runtimes/react'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const page = usePage(link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n return (\n <NextLink href={href}>\n {/* eslint-disable-next-line */}\n <a {...restOfProps} ref={ref} target={target} onClick={handleClick} />\n </NextLink>\n )\n})\n"],"names":["useQuery","PAGE_PATHNAMES_BY_ID","Link","forwardRef","ref","link","onClick","restOfProps","page","usePage","type","payload","pageId","elementKey","elementIdConfig","elementId","useElementId","href","target","block","pathname","openInNewTab","url","to","subject","body","phoneNumber","RangeError","handleClick","event","defaultPrevented","currentTarget","isContentEditable","preventDefault","hash","URL","error","view","scrollIntoView","document","querySelector","behavior","location","history","pushState","NextLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,iBAAiB,QAA4D;AAClF,QAAM,EAAE,OAAO,OAAO,CAAC,MAAMA,KAAAA,SAASC,KAAAA,sBAAsB;AAAA,IAC1D,MAAM,UAAU;AAAA,IAChB,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE;AAAA,EAAA,CAC5B;AAEG,MAAA,UAAU,QAAQ,SAAS;AAAa,WAAA;AAE5C,QAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAO,MAAA;AAEpC,SAAA;AACT;ACJaC,MAAAA,OAAOC,MAAAA,WAAqC,eACvD,IACAC,KACA;AAFA,eAAEC;AAAAA;AAAAA,IAAMC,UAAU,MAAM;AAAA,IAAE;AAAA,MAA1B,IAA+BC,wBAA/B,IAA+BA;AAAAA,IAA7BF;AAAAA,IAAMC;AAAAA;;AAGFE,QAAAA,OAAOC,QAAQJ,QAAQA,KAAKK,SAAS,cAAcL,KAAKM,QAAQC,SAAS,IAA3D;AACpB,QAAMC,aACJR,8BAAMK,UAAS,sBAAsBL,YAAKM,QAAQG,oBAAbT,oBAA8BQ,aAAa;AAC5EE,QAAAA,YAAYC,kBAAaH,UAAD;AAE1BI,MAAAA,OAAO;AACPC,MAAAA;AACAC,MAAAA;AAEJ,MAAId,MAAM;AACAA,YAAAA,KAAKK;AAAAA,WACN,aAAa;AACZF,YAAAA;AAAMS,iBAAQ,IAAGT,KAAKY;AAEjBf,iBAAAA,KAAKM,QAAQU,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,YAAY;AACfJ,eAAOZ,KAAKM,QAAQW;AAEXjB,iBAAAA,KAAKM,QAAQU,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,cAAc;AACX,cAAA;AAAA,UAAEE;AAAAA,UAAIC,UAAU;AAAA,UAAIC,OAAO;AAAA,YAAOpB,KAAKM;AAE7C,YAAIY,MAAM;AAAc,iBAAA,UAASA,cAAcC,gBAAgBC;AAE/D;AAAA,MACD;AAAA,WAEI,cAAc;AACT,eAAA,OAAMpB,KAAKM,QAAQe;AAE3B;AAAA,MACD;AAAA,WAEI,qBAAqB;AACxBT,eAAQ,IAAGF,gCAAa;AACxBI,gBAAQd,KAAKM,QAAQQ;AAErB;AAAA,MACD;AAAA;AAGO,cAAA,IAAIQ,WAAY,sBAAsBtB,KAAaK,QAAnD;AAAA;AAAA,EAEX;AAEQkB,uBAAYC,OAAsC;AACzDvB,YAAQuB,KAAD;AAEHA,QAAAA,MAAMC;AAAkB;AAOxBD,QAAAA,MAAME,cAAcC;AAAmB,aAAOH,MAAMI;AAEpD5B,QAAAA,QAAQA,KAAKK,SAAS,qBAAqB;AACzCwB,UAAAA;AAEA,UAAA;AACFA,eAAO,IAAIC,IAAK,0BAAyBlB,MAAlC,EAA0CiB;AAAAA,eAC1CE;AACCA,gBAAAA,MAAO,+BAA8BnB,QAAQmB,KAArD;AAAA,MACD;AAEGnB,UAAAA,QAAQ,QAAQA,SAASiB,MAAM;AACjCL,cAAMI,eAAN;AACMI,cAAAA,OAAOR,MAAMQ;AAEnBC,gCAAAA,WAAeD,KAAKE,SAASC,cAAcN,IAA5B,GAAoC;AAAA,UACjDO,UAAU;AAAA,UACVtB;AAAAA,QAAAA,CAFY;AAKVkB,YAAAA,KAAKK,SAASR,SAASA;AAAMG,eAAKM,QAAQC,UAAU,IAAI,IAAIV,IAA/B;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAED,wCACGW,kBAAAA,YAAD;AAAA,IAAU;AAAA,IAAV,+EAEStC;MAAa;AAAA,MAAU;AAAA,MAAgB,SAASqB;AAAAA,IAAAA,EAAvD;AAAA,EAAA,CAHJ;AAMD,CAlG6B;;;"}
1
+ {"version":3,"file":"index.cjs3.js","sources":["../src/components/shared/Link/index.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { usePage } from '../../hooks'\nimport { useElementId } from '../../../runtimes/react'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const page = usePage(link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n return (\n <NextLink href={href}>\n {/* eslint-disable-next-line */}\n <a {...restOfProps} ref={ref} target={target} onClick={handleClick} />\n </NextLink>\n )\n})\n"],"names":["Link","forwardRef","ref","link","onClick","restOfProps","page","usePage","type","payload","pageId","elementKey","elementIdConfig","elementId","useElementId","href","target","block","pathname","openInNewTab","url","to","subject","body","phoneNumber","RangeError","handleClick","event","defaultPrevented","currentTarget","isContentEditable","preventDefault","hash","URL","error","view","scrollIntoView","document","querySelector","behavior","location","history","pushState","NextLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeaA,MAAAA,OAAOC,MAAAA,WAAqC,eACvD,IACAC,KACA;AAFA,eAAEC;AAAAA;AAAAA,IAAMC,UAAU,MAAM;AAAA,IAAE;AAAA,MAA1B,IAA+BC,wBAA/B,IAA+BA;AAAAA,IAA7BF;AAAAA,IAAMC;AAAAA;;AAGFE,QAAAA,OAAOC,KAAAA,QAAQJ,QAAQA,KAAKK,SAAS,cAAcL,KAAKM,QAAQC,SAAS,IAA3D;AACpB,QAAMC,aACJR,8BAAMK,UAAS,sBAAsBL,YAAKM,QAAQG,oBAAbT,oBAA8BQ,aAAa;AAC5EE,QAAAA,YAAYC,kBAAaH,UAAD;AAE1BI,MAAAA,OAAO;AACPC,MAAAA;AACAC,MAAAA;AAEJ,MAAId,MAAM;AACAA,YAAAA,KAAKK;AAAAA,WACN,aAAa;AACZF,YAAAA;AAAMS,iBAAQ,IAAGT,KAAKY;AAEjBf,iBAAAA,KAAKM,QAAQU,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,YAAY;AACfJ,eAAOZ,KAAKM,QAAQW;AAEXjB,iBAAAA,KAAKM,QAAQU,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,cAAc;AACX,cAAA;AAAA,UAAEE;AAAAA,UAAIC,UAAU;AAAA,UAAIC,OAAO;AAAA,YAAOpB,KAAKM;AAE7C,YAAIY,MAAM;AAAc,iBAAA,UAASA,cAAcC,gBAAgBC;AAE/D;AAAA,MACD;AAAA,WAEI,cAAc;AACT,eAAA,OAAMpB,KAAKM,QAAQe;AAE3B;AAAA,MACD;AAAA,WAEI,qBAAqB;AACxBT,eAAQ,IAAGF,gCAAa;AACxBI,gBAAQd,KAAKM,QAAQQ;AAErB;AAAA,MACD;AAAA;AAGO,cAAA,IAAIQ,WAAY,sBAAsBtB,KAAaK,QAAnD;AAAA;AAAA,EAEX;AAEQkB,uBAAYC,OAAsC;AACzDvB,YAAQuB,KAAD;AAEHA,QAAAA,MAAMC;AAAkB;AAOxBD,QAAAA,MAAME,cAAcC;AAAmB,aAAOH,MAAMI;AAEpD5B,QAAAA,QAAQA,KAAKK,SAAS,qBAAqB;AACzCwB,UAAAA;AAEA,UAAA;AACFA,eAAO,IAAIC,IAAK,0BAAyBlB,MAAlC,EAA0CiB;AAAAA,eAC1CE;AACCA,gBAAAA,MAAO,+BAA8BnB,QAAQmB,KAArD;AAAA,MACD;AAEGnB,UAAAA,QAAQ,QAAQA,SAASiB,MAAM;AACjCL,cAAMI,eAAN;AACMI,cAAAA,OAAOR,MAAMQ;AAEnBC,gCAAAA,WAAeD,KAAKE,SAASC,cAAcN,IAA5B,GAAoC;AAAA,UACjDO,UAAU;AAAA,UACVtB;AAAAA,QAAAA,CAFY;AAKVkB,YAAAA,KAAKK,SAASR,SAASA;AAAMG,eAAKM,QAAQC,UAAU,IAAI,IAAIV,IAA/B;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAED,wCACGW,kBAAAA,YAAD;AAAA,IAAU;AAAA,IAAV,+EAEStC;MAAa;AAAA,MAAU;AAAA,MAAgB,SAASqB;AAAAA,IAAAA,EAAvD;AAAA,EAAA,CAHJ;AAMD,CAlG6B;;"}
package/dist/index.es.js CHANGED
@@ -36,7 +36,7 @@ var __publicField = (obj, key, value) => {
36
36
  };
37
37
  var _e;
38
38
  import * as React from "react";
39
- import { createContext, useContext, useEffect, useState, useMemo, useRef, Children, createElement, forwardRef, useLayoutEffect, Component, memo, useImperativeHandle } from "react";
39
+ import { createContext, useContext, useEffect, useState, useMemo, useRef, Children, createElement, forwardRef, useLayoutEffect, useCallback, Component, memo, useImperativeHandle } from "react";
40
40
  import { useSyncExternalStoreWithSelector } from "use-sync-external-store/shim/with-selector";
41
41
  import { g as getPropControllerDescriptors, i as isElementReference, a as getElementSwatchIds, b as getFileIds, d as getTypographyIds, e as getTableIds, f as getPageIds, h as getElementChildren, j as createDocumentReference, k as getComponentPropControllerDescriptors, l as configureStore, m as getDocument, n as getElementId, o as getIsInBuilder, p as getReactComponent, c as createDocument } from "./react-page.es.js";
42
42
  import { f as registerComponentHandleEffect, g as mountComponentEffect, h as registerComponentEffect, j as registerReactComponentEffect, k as registerDocumentEffect } from "./actions.es.js";
@@ -51,12 +51,13 @@ import { BatchHttpLink } from "@apollo/client/link/batch-http";
51
51
  import { P as PagePathnameSliceFragmentDoc } from "./graphql.es.js";
52
52
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
53
53
  import { T as Types, E as ElementID, B as Backgrounds, W as Width, R as ResponsiveIconRadioGroup, M as Margin, P as Padding, a as Border, b as BorderRadius, S as Shadows, G as GapY, c as GapX, e as ResponsiveSelect, f as ResponsiveNumber, C as Checkbox, g as Grid, h as TextInput, L as Link, i as ResponsiveColor, j as TextStyle, I as Images, N as Number, D as Date$1, F as Font, k as ResponsiveLength, l as TextArea, m as Table, n as TableFormFields, o as Image, p as ResponsiveOpacity, q as NavigationLinks, r as SocialLinks, s as RichText, V as Video, t as WidthControlValueFormats } from "./descriptors.es.js";
54
- import { S as SelectControlType, T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
54
+ import { L as LinkControlType, S as SelectControlType, T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
55
55
  import { C as ColorControlType } from "./color.es.js";
56
56
  import { S as ShapeControlType, L as ListControlType, C as ComboboxControlType } from "./shape.es.js";
57
57
  import { a as ImageControlValueFormat, I as ImageControlType } from "./image.es.js";
58
58
  import { a as StyleControlProperty, S as StyleControlType } from "./style.es.js";
59
59
  import ColorHelper from "color";
60
+ import scrollIntoView from "scroll-into-view-if-needed";
60
61
  import { findDOMNode } from "react-dom";
61
62
  import parse from "html-react-parser";
62
63
  import Head from "next/head";
@@ -2131,6 +2132,16 @@ function useFile(fileId) {
2131
2132
  }
2132
2133
  const isSSR = typeof window === "undefined" || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
2133
2134
  const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;
2135
+ function usePage(pageId) {
2136
+ const { error, data = {} } = useQuery(PAGE_PATHNAMES_BY_ID, {
2137
+ skip: pageId == null,
2138
+ variables: { ids: [pageId] }
2139
+ });
2140
+ if (pageId == null || error != null)
2141
+ return null;
2142
+ const { pagePathnamesById: [page] = [] } = data;
2143
+ return page;
2144
+ }
2134
2145
  function responsiveStyle(responsiveValues, join$1, strategy) {
2135
2146
  return join(responsiveValues, join$1, strategy).reduce((acc, { deviceId, value }) => {
2136
2147
  const device = getDevice(deviceId);
@@ -2541,6 +2552,71 @@ function useImageControlValue(data, definition) {
2541
2552
  dimensions: { width: file.dimensions.width, height: file.dimensions.height }
2542
2553
  };
2543
2554
  }
2555
+ function useLinkControlValue(link, _definition) {
2556
+ var _a;
2557
+ const page = usePage(link && link.type === "OPEN_PAGE" ? link.payload.pageId : null);
2558
+ const elementKey = (link == null ? void 0 : link.type) === "SCROLL_TO_ELEMENT" ? (_a = link.payload.elementIdConfig) == null ? void 0 : _a.elementKey : null;
2559
+ const elementId = useElementId(elementKey);
2560
+ let href = "#";
2561
+ let target;
2562
+ let block;
2563
+ if (link) {
2564
+ switch (link.type) {
2565
+ case "OPEN_PAGE": {
2566
+ if (page)
2567
+ href = `/${page.pathname}`;
2568
+ target = link.payload.openInNewTab ? "_blank" : "_self";
2569
+ break;
2570
+ }
2571
+ case "OPEN_URL": {
2572
+ href = link.payload.url;
2573
+ target = link.payload.openInNewTab ? "_blank" : "_self";
2574
+ break;
2575
+ }
2576
+ case "SEND_EMAIL": {
2577
+ const { to, subject = "", body = "" } = link.payload;
2578
+ if (to != null)
2579
+ href = `mailto:${to}?subject=${subject}&body=${body}`;
2580
+ break;
2581
+ }
2582
+ case "CALL_PHONE": {
2583
+ href = `tel:${link.payload.phoneNumber}`;
2584
+ break;
2585
+ }
2586
+ case "SCROLL_TO_ELEMENT": {
2587
+ href = `#${elementId != null ? elementId : ""}`;
2588
+ block = link.payload.block;
2589
+ break;
2590
+ }
2591
+ default:
2592
+ throw new RangeError(`Invalid link type "${link.type}."`);
2593
+ }
2594
+ }
2595
+ const handleClick = useCallback((event) => {
2596
+ if (event.defaultPrevented)
2597
+ return;
2598
+ if (link && link.type === "SCROLL_TO_ELEMENT") {
2599
+ let hash;
2600
+ try {
2601
+ hash = new URL(`http://www.example.com/${href}`).hash;
2602
+ } catch (error) {
2603
+ console.error(`Link received invalid href: ${href}`, error);
2604
+ }
2605
+ if (href != null && href === hash) {
2606
+ event.preventDefault();
2607
+ const view = event.view;
2608
+ scrollIntoView(view.document.querySelector(hash), {
2609
+ behavior: "smooth",
2610
+ block
2611
+ });
2612
+ if (view.location.hash !== hash)
2613
+ view.history.pushState({}, "", hash);
2614
+ }
2615
+ }
2616
+ }, [link, href, block]);
2617
+ const res = useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick]);
2618
+ return res;
2619
+ }
2544
2620
  function ListControlValue({
2545
2621
  definition,
2546
2622
  data,
@@ -2625,6 +2701,12 @@ function ControlValue({
2625
2701
  parameters: [data, definition],
2626
2702
  children: (value) => children(value)
2627
2703
  }, definition.type);
2704
+ case LinkControlType:
2705
+ return /* @__PURE__ */ jsx(RenderHook, {
2706
+ hook: useLinkControlValue,
2707
+ parameters: [data, definition],
2708
+ children: (value) => children(value)
2709
+ }, definition.type);
2628
2710
  case ComboboxControlType:
2629
2711
  return /* @__PURE__ */ jsx(RenderHook, {
2630
2712
  hook: useComboboxControlValue,
@@ -2675,6 +2757,7 @@ function PropsValue({
2675
2757
  case ComboboxControlType:
2676
2758
  case ShapeControlType:
2677
2759
  case ListControlType:
2760
+ case LinkControlType:
2678
2761
  return /* @__PURE__ */ jsx(ControlValue, {
2679
2762
  definition: descriptor,
2680
2763
  data: props[propName],
@@ -2996,5 +3079,5 @@ const DocumentReference = memo(forwardRef(function DocumentReference2({
2996
3079
  document: document2
2997
3080
  });
2998
3081
  }));
2999
- export { Alignments as A, TYPOGRAPHIES_BY_ID as B, Contrasts as C, DocumentReference as D, Element as E, SWATCHES_BY_ID as F, shallowMergeFallbacks as G, join as H, getDevice as I, getDeviceMediaQuery as J, isNonNullable as K, FILES_BY_ID as L, PAGE_PATHNAMES_BY_ID as M, useElementId as N, deepEqual as O, PageProvider as P, MakeswiftClient as Q, RuntimeProvider as R, SITE_FONTS_QUERY as S, TABLE_BY_ID as T, Document$1 as U, getServerSideProps as V, getStaticProps as W, getStaticPaths as X, Page as Y, forwardNextDynamicRef as Z, ReactRuntime as a, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useResponsiveColor as k, useFile as l, PAGE_SNIPPETS_QUERY as m, Page$1 as n, colorToString as o, useIsomorphicLayoutEffect as p, Shapes as q, responsiveWidth as r, Sizes as s, useFormContext as t, useIsInBuilder as u, useQuery as v, useMutation as w, Provider as x, DEVICES as y, findDeviceOverride as z };
3082
+ export { Alignments as A, findDeviceOverride as B, Contrasts as C, DocumentReference as D, Element as E, TYPOGRAPHIES_BY_ID as F, SWATCHES_BY_ID as G, shallowMergeFallbacks as H, join as I, getDevice as J, getDeviceMediaQuery as K, isNonNullable as L, FILES_BY_ID as M, useElementId as N, deepEqual as O, PageProvider as P, MakeswiftClient as Q, RuntimeProvider as R, SITE_FONTS_QUERY as S, TABLE_BY_ID as T, Document$1 as U, getServerSideProps as V, getStaticProps as W, getStaticPaths as X, Page as Y, forwardNextDynamicRef as Z, ReactRuntime as a, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useResponsiveColor as k, useFile as l, usePage as m, PAGE_SNIPPETS_QUERY as n, Page$1 as o, colorToString as p, useIsomorphicLayoutEffect as q, responsiveWidth as r, Shapes as s, Sizes as t, useIsInBuilder as u, useFormContext as v, useQuery as w, useMutation as x, Provider as y, DEVICES as z };
3000
3083
  //# sourceMappingURL=index.es.js.map