@makeswift/runtime 0.1.2 → 0.1.5
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/Box.cjs.js +1 -0
- package/dist/Box.cjs.js.map +1 -1
- package/dist/Box.es.js +1 -0
- package/dist/Box.es.js.map +1 -1
- package/dist/Box2.cjs.js +54 -0
- package/dist/Box2.cjs.js.map +1 -0
- package/dist/Box2.es.js +52 -0
- package/dist/Box2.es.js.map +1 -0
- package/dist/Button.cjs.js +1 -1
- package/dist/Button.es.js +2 -2
- package/dist/Carousel.cjs.js +1 -1
- package/dist/Carousel.es.js +2 -2
- package/dist/Countdown.cjs.js +1 -0
- package/dist/Countdown.cjs.js.map +1 -1
- package/dist/Countdown.es.js +2 -1
- package/dist/Countdown.es.js.map +1 -1
- package/dist/Divider.cjs.js +1 -0
- package/dist/Divider.cjs.js.map +1 -1
- package/dist/Divider.es.js +2 -1
- package/dist/Divider.es.js.map +1 -1
- package/dist/Embed.cjs.js +1 -0
- package/dist/Embed.cjs.js.map +1 -1
- package/dist/Embed.es.js +2 -1
- package/dist/Embed.es.js.map +1 -1
- package/dist/Form.cjs.js +1 -1
- package/dist/Form.es.js +2 -2
- package/dist/Image.cjs2.js +1 -1
- package/dist/Image.es2.js +2 -2
- package/dist/Navigation.cjs.js +1 -1
- package/dist/Navigation.es.js +2 -2
- package/dist/Root.cjs.js +1 -0
- package/dist/Root.cjs.js.map +1 -1
- package/dist/Root.es.js +1 -0
- package/dist/Root.es.js.map +1 -1
- package/dist/SocialLinks.es.js +1 -1
- package/dist/Text.cjs.js +1 -1
- package/dist/Text.es.js +2 -2
- package/dist/Video.cjs.js +1 -0
- package/dist/Video.cjs.js.map +1 -1
- package/dist/Video.es.js +1 -0
- package/dist/Video.es.js.map +1 -1
- package/dist/components.cjs.js +4 -4
- package/dist/components.es.js +4 -4
- package/dist/controls.cjs.js +2 -0
- package/dist/controls.cjs.js.map +1 -1
- package/dist/controls.es.js +1 -1
- package/dist/cssMediaRules.es.js +1 -1
- package/dist/descriptors.cjs.js.map +1 -1
- package/dist/descriptors.es.js.map +1 -1
- package/dist/grid-item.cjs.js +594 -0
- package/dist/grid-item.cjs.js.map +1 -0
- package/dist/grid-item.es.js +585 -0
- package/dist/grid-item.es.js.map +1 -0
- package/dist/index.cjs.js +128 -10
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs3.js +1 -12
- package/dist/index.cjs3.js.map +1 -1
- package/dist/index.es.js +129 -12
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +1 -1
- package/dist/index.es3.js +2 -12
- package/dist/index.es3.js.map +1 -1
- package/dist/next.cjs.js +1 -0
- package/dist/next.cjs.js.map +1 -1
- package/dist/next.es.js +1 -0
- package/dist/next.es.js.map +1 -1
- package/dist/react-builder-preview.cjs.js +1 -0
- package/dist/react-builder-preview.cjs.js.map +1 -1
- package/dist/react-builder-preview.es.js +1 -0
- package/dist/react-builder-preview.es.js.map +1 -1
- package/dist/react.cjs.js +1 -0
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.es.js +1 -0
- package/dist/react.es.js.map +1 -1
- package/dist/slot.cjs.js +130 -0
- package/dist/slot.cjs.js.map +1 -0
- package/dist/slot.es.js +123 -0
- package/dist/slot.es.js.map +1 -0
- package/dist/text-input.cjs.js +6 -0
- package/dist/text-input.cjs.js.map +1 -1
- package/dist/text-input.es.js +5 -1
- package/dist/text-input.es.js.map +1 -1
- package/dist/types/api/react.d.ts.map +1 -1
- package/dist/types/components/builtin/Box/Box2.d.ts +8 -0
- package/dist/types/components/builtin/Box/Box2.d.ts.map +1 -0
- package/dist/types/components/experimental/box-placeholder.d.ts +2 -0
- package/dist/types/components/experimental/box-placeholder.d.ts.map +1 -0
- package/dist/types/components/experimental/box.d.ts +9 -0
- package/dist/types/components/experimental/box.d.ts.map +1 -0
- package/dist/types/components/experimental/index.d.ts +2 -0
- package/dist/types/components/experimental/index.d.ts.map +1 -0
- package/dist/types/components/hooks/useTable.d.ts +66 -0
- package/dist/types/components/hooks/useTable.d.ts.map +1 -0
- package/dist/types/components/shared/grid-item.d.ts +17 -0
- package/dist/types/components/shared/grid-item.d.ts.map +1 -0
- package/dist/types/controls/control.d.ts +3 -2
- package/dist/types/controls/control.d.ts.map +1 -1
- package/dist/types/controls/index.d.ts +1 -0
- package/dist/types/controls/index.d.ts.map +1 -1
- package/dist/types/controls/link.d.ts +50 -0
- package/dist/types/controls/link.d.ts.map +1 -0
- package/dist/types/controls/slot.d.ts +42 -0
- package/dist/types/controls/slot.d.ts.map +1 -0
- package/dist/types/css/border-radius.d.ts +20 -0
- package/dist/types/css/border-radius.d.ts.map +1 -0
- package/dist/types/css/border.d.ts +31 -0
- package/dist/types/css/border.d.ts.map +1 -0
- package/dist/types/css/box-shadow.d.ts +19 -0
- package/dist/types/css/box-shadow.d.ts.map +1 -0
- package/dist/types/css/color.d.ts +5 -0
- package/dist/types/css/color.d.ts.map +1 -0
- package/dist/types/css/length-percentage.d.ts +10 -0
- package/dist/types/css/length-percentage.d.ts.map +1 -0
- package/dist/types/css/length.d.ts +14 -0
- package/dist/types/css/length.d.ts.map +1 -0
- package/dist/types/css/margin.d.ts +20 -0
- package/dist/types/css/margin.d.ts.map +1 -0
- package/dist/types/css/padding.d.ts +20 -0
- package/dist/types/css/padding.d.ts.map +1 -0
- package/dist/types/next.d.ts.map +1 -1
- package/dist/types/prop-controllers/descriptors.d.ts +4 -3
- package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
- package/dist/types/runtimes/react/controls/control.d.ts +3 -2
- package/dist/types/runtimes/react/controls/control.d.ts.map +1 -1
- package/dist/types/runtimes/react/controls/link.d.ts +11 -0
- package/dist/types/runtimes/react/controls/link.d.ts.map +1 -0
- package/dist/types/runtimes/react/controls/slot.d.ts +26 -0
- package/dist/types/runtimes/react/controls/slot.d.ts.map +1 -0
- package/dist/types/runtimes/react/controls.d.ts.map +1 -1
- package/dist/types/runtimes/react/use-style.d.ts +3 -0
- package/dist/types/runtimes/react/use-style.d.ts.map +1 -0
- package/dist/types/use-global-style.d.ts +3 -0
- package/dist/types/use-global-style.d.ts.map +1 -0
- package/dist/types/use-grid-item-style.d.ts +1 -0
- package/dist/types/use-grid-item-style.d.ts.map +1 -0
- package/dist/types/use-style.d.ts +3 -0
- package/dist/types/use-style.d.ts.map +1 -0
- package/dist/useBoxShadow.es.js +1 -1
- package/dist/useMediaQuery.es.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -57,6 +57,7 @@ var shape = require("./shape.cjs.js");
|
|
|
57
57
|
var image = require("./image.cjs.js");
|
|
58
58
|
var style = require("./style.cjs.js");
|
|
59
59
|
var ColorHelper = require("color");
|
|
60
|
+
var scrollIntoView = require("scroll-into-view-if-needed");
|
|
60
61
|
var reactDom = require("react-dom");
|
|
61
62
|
var parse = require("html-react-parser");
|
|
62
63
|
var Head = require("next/head");
|
|
@@ -91,6 +92,7 @@ var NextDocument__default = /* @__PURE__ */ _interopDefaultLegacy(NextDocument);
|
|
|
91
92
|
var styled__default = /* @__PURE__ */ _interopDefaultLegacy(styled);
|
|
92
93
|
var createEmotionServer__default = /* @__PURE__ */ _interopDefaultLegacy(createEmotionServer);
|
|
93
94
|
var ColorHelper__default = /* @__PURE__ */ _interopDefaultLegacy(ColorHelper);
|
|
95
|
+
var scrollIntoView__default = /* @__PURE__ */ _interopDefaultLegacy(scrollIntoView);
|
|
94
96
|
var parse__default = /* @__PURE__ */ _interopDefaultLegacy(parse);
|
|
95
97
|
var Head__default = /* @__PURE__ */ _interopDefaultLegacy(Head);
|
|
96
98
|
var uuid__default = /* @__PURE__ */ _interopDefaultLegacy(uuid);
|
|
@@ -480,6 +482,8 @@ class MakeswiftClient {
|
|
|
480
482
|
variables: introspectionData
|
|
481
483
|
});
|
|
482
484
|
res.data.pagePathnamesById.forEach((pagePathnameSlice) => {
|
|
485
|
+
if (pagePathnameSlice == null)
|
|
486
|
+
return;
|
|
483
487
|
const id = Buffer.from(`Page:${pagePathnameSlice.id}`).toString("base64");
|
|
484
488
|
this.apolloClient.cache.writeFragment({
|
|
485
489
|
fragment: graphql.PagePathnameSliceFragmentDoc,
|
|
@@ -869,29 +873,57 @@ class Document$1 extends NextDocument__default["default"] {
|
|
|
869
873
|
}
|
|
870
874
|
}
|
|
871
875
|
const REVALIDATE_SECONDS = 1;
|
|
876
|
+
function getApiOrigin() {
|
|
877
|
+
var _a;
|
|
878
|
+
const apiOriginString = (_a = process["env"].MAKESWIFT_API_HOST) != null ? _a : "https://api.makeswift.com";
|
|
879
|
+
try {
|
|
880
|
+
const url = new URL(apiOriginString);
|
|
881
|
+
return url.origin;
|
|
882
|
+
} catch (error) {
|
|
883
|
+
const errorMessage = `"MAKESWIFT_API_HOST" environment variable must be a valid URL. Expected something like "https://api.makeswift.com" but instead received "${apiOriginString}".`;
|
|
884
|
+
throw new Error(errorMessage);
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
const uuidRegExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/;
|
|
888
|
+
function getApiKey() {
|
|
889
|
+
const apiKey = process["env"].MAKESWIFT_SITE_API_KEY;
|
|
890
|
+
if (apiKey == null) {
|
|
891
|
+
const errorMessage = '"MAKESWIFT_SITE_API_KEY" environment variable must be set. Please add your site API key to your `.env.local` file. More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables';
|
|
892
|
+
throw new Error(errorMessage);
|
|
893
|
+
}
|
|
894
|
+
if (!uuidRegExp.test(apiKey)) {
|
|
895
|
+
const errorMEssage = `Invalid Makeswift site API key "${apiKey}". Please check your \`.env.local\` file for the "MAKESWIFT_SITE_API_KEY" environment variable. More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables`;
|
|
896
|
+
throw new Error(errorMEssage);
|
|
897
|
+
}
|
|
898
|
+
return apiKey;
|
|
899
|
+
}
|
|
872
900
|
async function getServerSideProps({
|
|
873
901
|
query: {
|
|
874
902
|
pageId
|
|
875
903
|
}
|
|
876
904
|
}) {
|
|
877
|
-
const url = `${
|
|
905
|
+
const url = `${getApiOrigin()}/v0/preview-page-data?id=${pageId}`;
|
|
878
906
|
const res = await fetch(url, {
|
|
879
907
|
headers: {
|
|
880
|
-
"x-api-key":
|
|
908
|
+
"x-api-key": getApiKey()
|
|
881
909
|
}
|
|
882
910
|
});
|
|
883
|
-
if (res.status
|
|
911
|
+
if (res.status === 404) {
|
|
884
912
|
console.error(await res.json());
|
|
885
913
|
return {
|
|
886
914
|
notFound: true
|
|
887
915
|
};
|
|
888
916
|
}
|
|
917
|
+
if (!res.ok) {
|
|
918
|
+
const json = await res.json();
|
|
919
|
+
throw new Error(json.message);
|
|
920
|
+
}
|
|
889
921
|
const page = await res.json();
|
|
890
922
|
if (page == null)
|
|
891
923
|
return {
|
|
892
924
|
notFound: true
|
|
893
925
|
};
|
|
894
|
-
const makeswiftApiEndpoint = `${
|
|
926
|
+
const makeswiftApiEndpoint = `${getApiOrigin()}/graphql`;
|
|
895
927
|
const client2 = new MakeswiftClient({
|
|
896
928
|
uri: makeswiftApiEndpoint
|
|
897
929
|
});
|
|
@@ -917,26 +949,30 @@ async function getStaticProps({
|
|
|
917
949
|
const {
|
|
918
950
|
path = []
|
|
919
951
|
} = params;
|
|
920
|
-
const url = `${
|
|
952
|
+
const url = `${getApiOrigin()}/v0/live-page-data?path=${path.join("/")}`;
|
|
921
953
|
const res = await fetch(url, {
|
|
922
954
|
headers: {
|
|
923
|
-
"x-api-key":
|
|
955
|
+
"x-api-key": getApiKey()
|
|
924
956
|
}
|
|
925
957
|
});
|
|
926
|
-
if (res.status
|
|
958
|
+
if (res.status === 404) {
|
|
927
959
|
console.error(await res.json());
|
|
928
960
|
return {
|
|
929
961
|
notFound: true,
|
|
930
962
|
revalidate: REVALIDATE_SECONDS
|
|
931
963
|
};
|
|
932
964
|
}
|
|
965
|
+
if (!res.ok) {
|
|
966
|
+
const json = await res.json();
|
|
967
|
+
throw new Error(json.message);
|
|
968
|
+
}
|
|
933
969
|
const page = await res.json();
|
|
934
970
|
if (page == null)
|
|
935
971
|
return {
|
|
936
972
|
notFound: true,
|
|
937
973
|
revalidate: REVALIDATE_SECONDS
|
|
938
974
|
};
|
|
939
|
-
const makeswiftApiEndpoint = `${
|
|
975
|
+
const makeswiftApiEndpoint = `${getApiOrigin()}/graphql`;
|
|
940
976
|
const client2 = new MakeswiftClient({
|
|
941
977
|
uri: makeswiftApiEndpoint
|
|
942
978
|
});
|
|
@@ -2158,6 +2194,16 @@ function useFile(fileId) {
|
|
|
2158
2194
|
}
|
|
2159
2195
|
const isSSR = typeof window === "undefined" || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
|
|
2160
2196
|
const useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;
|
|
2197
|
+
function usePage(pageId) {
|
|
2198
|
+
const { error, data = {} } = useQuery(PAGE_PATHNAMES_BY_ID, {
|
|
2199
|
+
skip: pageId == null,
|
|
2200
|
+
variables: { ids: [pageId] }
|
|
2201
|
+
});
|
|
2202
|
+
if (pageId == null || error != null)
|
|
2203
|
+
return null;
|
|
2204
|
+
const { pagePathnamesById: [page] = [] } = data;
|
|
2205
|
+
return page;
|
|
2206
|
+
}
|
|
2161
2207
|
function responsiveStyle(responsiveValues, join$1, strategy) {
|
|
2162
2208
|
return join(responsiveValues, join$1, strategy).reduce((acc, { deviceId, value }) => {
|
|
2163
2209
|
const device = getDevice(deviceId);
|
|
@@ -2568,6 +2614,71 @@ function useImageControlValue(data, definition) {
|
|
|
2568
2614
|
dimensions: { width: file.dimensions.width, height: file.dimensions.height }
|
|
2569
2615
|
};
|
|
2570
2616
|
}
|
|
2617
|
+
function useLinkControlValue(link, _definition) {
|
|
2618
|
+
var _a;
|
|
2619
|
+
const page = usePage(link && link.type === "OPEN_PAGE" ? link.payload.pageId : null);
|
|
2620
|
+
const elementKey = (link == null ? void 0 : link.type) === "SCROLL_TO_ELEMENT" ? (_a = link.payload.elementIdConfig) == null ? void 0 : _a.elementKey : null;
|
|
2621
|
+
const elementId = useElementId(elementKey);
|
|
2622
|
+
let href = "#";
|
|
2623
|
+
let target;
|
|
2624
|
+
let block;
|
|
2625
|
+
if (link) {
|
|
2626
|
+
switch (link.type) {
|
|
2627
|
+
case "OPEN_PAGE": {
|
|
2628
|
+
if (page)
|
|
2629
|
+
href = `/${page.pathname}`;
|
|
2630
|
+
target = link.payload.openInNewTab ? "_blank" : "_self";
|
|
2631
|
+
break;
|
|
2632
|
+
}
|
|
2633
|
+
case "OPEN_URL": {
|
|
2634
|
+
href = link.payload.url;
|
|
2635
|
+
target = link.payload.openInNewTab ? "_blank" : "_self";
|
|
2636
|
+
break;
|
|
2637
|
+
}
|
|
2638
|
+
case "SEND_EMAIL": {
|
|
2639
|
+
const { to, subject = "", body = "" } = link.payload;
|
|
2640
|
+
if (to != null)
|
|
2641
|
+
href = `mailto:${to}?subject=${subject}&body=${body}`;
|
|
2642
|
+
break;
|
|
2643
|
+
}
|
|
2644
|
+
case "CALL_PHONE": {
|
|
2645
|
+
href = `tel:${link.payload.phoneNumber}`;
|
|
2646
|
+
break;
|
|
2647
|
+
}
|
|
2648
|
+
case "SCROLL_TO_ELEMENT": {
|
|
2649
|
+
href = `#${elementId != null ? elementId : ""}`;
|
|
2650
|
+
block = link.payload.block;
|
|
2651
|
+
break;
|
|
2652
|
+
}
|
|
2653
|
+
default:
|
|
2654
|
+
throw new RangeError(`Invalid link type "${link.type}."`);
|
|
2655
|
+
}
|
|
2656
|
+
}
|
|
2657
|
+
const handleClick = React.useCallback((event) => {
|
|
2658
|
+
if (event.defaultPrevented)
|
|
2659
|
+
return;
|
|
2660
|
+
if (link && link.type === "SCROLL_TO_ELEMENT") {
|
|
2661
|
+
let hash;
|
|
2662
|
+
try {
|
|
2663
|
+
hash = new URL(`http://www.example.com/${href}`).hash;
|
|
2664
|
+
} catch (error) {
|
|
2665
|
+
console.error(`Link received invalid href: ${href}`, error);
|
|
2666
|
+
}
|
|
2667
|
+
if (href != null && href === hash) {
|
|
2668
|
+
event.preventDefault();
|
|
2669
|
+
const view = event.view;
|
|
2670
|
+
scrollIntoView__default["default"](view.document.querySelector(hash), {
|
|
2671
|
+
behavior: "smooth",
|
|
2672
|
+
block
|
|
2673
|
+
});
|
|
2674
|
+
if (view.location.hash !== hash)
|
|
2675
|
+
view.history.pushState({}, "", hash);
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
}, [link, href, block]);
|
|
2679
|
+
const res = React.useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick]);
|
|
2680
|
+
return res;
|
|
2681
|
+
}
|
|
2571
2682
|
function ListControlValue({
|
|
2572
2683
|
definition,
|
|
2573
2684
|
data,
|
|
@@ -2652,6 +2763,12 @@ function ControlValue({
|
|
|
2652
2763
|
parameters: [data, definition],
|
|
2653
2764
|
children: (value) => children(value)
|
|
2654
2765
|
}, definition.type);
|
|
2766
|
+
case textInput.LinkControlType:
|
|
2767
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
|
|
2768
|
+
hook: useLinkControlValue,
|
|
2769
|
+
parameters: [data, definition],
|
|
2770
|
+
children: (value) => children(value)
|
|
2771
|
+
}, definition.type);
|
|
2655
2772
|
case shape.ComboboxControlType:
|
|
2656
2773
|
return /* @__PURE__ */ jsxRuntime.jsx(RenderHook, {
|
|
2657
2774
|
hook: useComboboxControlValue,
|
|
@@ -2702,6 +2819,7 @@ function PropsValue({
|
|
|
2702
2819
|
case shape.ComboboxControlType:
|
|
2703
2820
|
case shape.ShapeControlType:
|
|
2704
2821
|
case shape.ListControlType:
|
|
2822
|
+
case textInput.LinkControlType:
|
|
2705
2823
|
return /* @__PURE__ */ jsxRuntime.jsx(ControlValue, {
|
|
2706
2824
|
definition: descriptor,
|
|
2707
2825
|
data: props[propName],
|
|
@@ -2919,7 +3037,7 @@ const ElementData = React.memo(React.forwardRef(function ElementData2({
|
|
|
2919
3037
|
suppressRefWarning(`\`ForwardRef(${ElementData2.name})\``);
|
|
2920
3038
|
if (Component == null) {
|
|
2921
3039
|
return /* @__PURE__ */ jsxRuntime.jsx(FallbackComponent, {
|
|
2922
|
-
ref,
|
|
3040
|
+
ref: setHandle,
|
|
2923
3041
|
text: "Component not found"
|
|
2924
3042
|
});
|
|
2925
3043
|
}
|
|
@@ -3040,7 +3158,6 @@ exports.DocumentReference = DocumentReference;
|
|
|
3040
3158
|
exports.Element = Element;
|
|
3041
3159
|
exports.FILES_BY_ID = FILES_BY_ID;
|
|
3042
3160
|
exports.MakeswiftClient = MakeswiftClient;
|
|
3043
|
-
exports.PAGE_PATHNAMES_BY_ID = PAGE_PATHNAMES_BY_ID;
|
|
3044
3161
|
exports.PAGE_SNIPPETS_QUERY = PAGE_SNIPPETS_QUERY;
|
|
3045
3162
|
exports.Page = Page$1;
|
|
3046
3163
|
exports.Page$1 = Page;
|
|
@@ -3074,6 +3191,7 @@ exports.useFormContext = useFormContext;
|
|
|
3074
3191
|
exports.useIsInBuilder = useIsInBuilder;
|
|
3075
3192
|
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
|
|
3076
3193
|
exports.useMutation = useMutation;
|
|
3194
|
+
exports.usePage = usePage;
|
|
3077
3195
|
exports.usePageId = usePageId;
|
|
3078
3196
|
exports.useQuery = useQuery;
|
|
3079
3197
|
exports.useResponsiveColor = useResponsiveColor;
|