@makeswift/runtime 0.0.0-a8dd080 → 0.0.0-b87dd43
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/api.js +1 -0
- package/box-model.js +1 -0
- package/builder.js +1 -0
- package/components.js +1 -0
- package/dist/Page.cjs.js +215 -0
- package/dist/Page.cjs.js.map +1 -0
- package/dist/Page.es.js +209 -0
- package/dist/Page.es.js.map +1 -0
- package/dist/actions.cjs.js +121 -17
- package/dist/actions.cjs.js.map +1 -1
- package/dist/actions.es.js +106 -16
- package/dist/actions.es.js.map +1 -1
- package/dist/api.cjs.js +5 -0
- package/dist/api.cjs.js.map +1 -0
- package/dist/api.es.js +2 -0
- package/dist/api.es.js.map +1 -0
- package/dist/box-model.cjs.js +2 -2
- package/dist/box-model.es.js +1 -0
- package/dist/box-model.es.js.map +1 -1
- package/dist/box-models.cjs.js +28 -156
- package/dist/box-models.cjs.js.map +1 -1
- package/dist/box-models.es.js +31 -159
- package/dist/box-models.es.js.map +1 -1
- package/dist/builder.cjs.js +10 -0
- package/dist/builder.cjs.js.map +1 -0
- package/dist/builder.es.js +3 -0
- package/dist/builder.es.js.map +1 -0
- package/dist/components.cjs.js +71 -6900
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +32 -6866
- package/dist/components.es.js.map +1 -1
- package/dist/constants.cjs.js +241 -0
- package/dist/constants.cjs.js.map +1 -0
- package/dist/constants.es.js +240 -0
- package/dist/constants.es.js.map +1 -0
- package/dist/control-serialization.cjs.js +223 -0
- package/dist/control-serialization.cjs.js.map +1 -0
- package/dist/control-serialization.es.js +218 -0
- package/dist/control-serialization.es.js.map +1 -0
- package/dist/descriptors.cjs.js +223 -0
- package/dist/descriptors.cjs.js.map +1 -0
- package/dist/descriptors.es.js +188 -0
- package/dist/descriptors.es.js.map +1 -0
- package/dist/instances.cjs.js +106 -0
- package/dist/instances.cjs.js.map +1 -0
- package/dist/instances.es.js +103 -0
- package/dist/instances.es.js.map +1 -0
- package/dist/main.cjs.js +14 -2
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +5 -1
- package/dist/main.es.js.map +1 -1
- package/dist/next.cjs.js +190 -0
- package/dist/next.cjs.js.map +1 -0
- package/dist/next.es.js +180 -0
- package/dist/next.es.js.map +1 -0
- package/dist/prop-controllers.cjs.js +6 -175
- package/dist/prop-controllers.cjs.js.map +1 -1
- package/dist/prop-controllers.es.js +2 -173
- package/dist/prop-controllers.es.js.map +1 -1
- package/dist/react-builder-preview.cjs.js +274 -4130
- package/dist/react-builder-preview.cjs.js.map +1 -1
- package/dist/react-builder-preview.es.js +267 -4127
- package/dist/react-builder-preview.es.js.map +1 -1
- package/dist/react-page.cjs.js +262 -0
- package/dist/react-page.cjs.js.map +1 -0
- package/dist/react-page.es.js +241 -0
- package/dist/react-page.es.js.map +1 -0
- package/dist/react.cjs.js +34 -3
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.cjs2.js +7831 -687
- package/dist/react.cjs2.js.map +1 -1
- package/dist/react.es.js +30 -1
- package/dist/react.es.js.map +1 -1
- package/dist/react.es2.js +7752 -664
- package/dist/react.es2.js.map +1 -1
- package/dist/types/api/constants.d.ts +4 -0
- package/dist/types/api/constants.d.ts.map +1 -0
- package/dist/types/api/generated/graphql.d.ts +120 -0
- package/dist/types/api/generated/graphql.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +3 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/react.d.ts +27 -0
- package/dist/types/api/react.d.ts.map +1 -0
- package/dist/types/api/types.d.ts +4 -0
- package/dist/types/api/types.d.ts.map +1 -0
- package/dist/types/builder/index.d.ts +2 -0
- package/dist/types/builder/index.d.ts.map +1 -0
- package/dist/types/builder/serialization/control-serialization.d.ts +144 -0
- package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -0
- package/dist/types/builder/serialization/function-serialization.d.ts +12 -0
- package/dist/types/builder/serialization/function-serialization.d.ts.map +1 -0
- package/dist/types/builder/serialization/index.d.ts +3 -0
- package/dist/types/builder/serialization/index.d.ts.map +1 -0
- package/dist/types/components/{Box → builtin/Box}/Box.d.ts +10 -4
- package/dist/types/components/builtin/Box/Box.d.ts.map +1 -0
- package/dist/types/components/{Box → builtin/Box}/animations.d.ts +2 -2
- package/dist/types/components/builtin/Box/animations.d.ts.map +1 -0
- package/dist/types/components/{Box → builtin/Box}/components/Placeholder/index.d.ts +0 -0
- package/dist/types/components/builtin/Box/components/Placeholder/index.d.ts.map +1 -0
- package/dist/types/components/{Box → builtin/Box}/index.d.ts +1 -1
- package/dist/types/components/builtin/Box/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Button/Button.d.ts +118 -0
- package/dist/types/components/builtin/Button/Button.d.ts.map +1 -0
- package/dist/types/components/builtin/Button/index.d.ts +2 -0
- package/dist/types/components/builtin/Button/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Carousel/Carousel.d.ts +28 -0
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -0
- package/dist/types/components/builtin/Carousel/index.d.ts +2 -0
- package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Countdown/Countdown.d.ts +27 -0
- package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -0
- package/dist/types/components/builtin/Countdown/index.d.ts +2 -0
- package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Divider/Divider.d.ts +17 -0
- package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -0
- package/dist/types/components/builtin/Divider/index.d.ts +2 -0
- package/dist/types/components/builtin/Divider/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Embed/Embed.d.ts +14 -0
- package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -0
- package/dist/types/components/builtin/Embed/index.d.ts +2 -0
- package/dist/types/components/builtin/Embed/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/Form.d.ts +41 -0
- package/dist/types/components/builtin/Form/Form.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +15 -0
- package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts +15 -0
- package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts +14 -0
- package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/Label/index.d.ts +16 -0
- package/dist/types/components/builtin/Form/components/Field/components/Label/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts +10 -0
- package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/MultipleSelectTableField/index.d.ts +23 -0
- package/dist/types/components/builtin/Form/components/Field/components/MultipleSelectTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +3 -0
- package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts +17 -0
- package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnRadioButtonGroup/index.d.ts +23 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnRadioButtonGroup/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts +19 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/index.d.ts +24 -0
- package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts +13 -0
- package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/index.d.ts +19 -0
- package/dist/types/components/builtin/Form/components/Field/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Field/services/cssField.d.ts +11 -0
- package/dist/types/components/builtin/Form/components/Field/services/cssField.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts +9 -0
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/components/Spinner/index.d.ts +3 -0
- package/dist/types/components/builtin/Form/components/Spinner/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/context/FormContext.d.ts +32 -0
- package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/index.d.ts +2 -0
- package/dist/types/components/builtin/Form/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Image/Image.d.ts +29 -0
- package/dist/types/components/builtin/Image/Image.d.ts.map +1 -0
- package/dist/types/components/builtin/Image/index.d.ts +2 -0
- package/dist/types/components/builtin/Image/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/Navigation.d.ts +26 -0
- package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts +100 -0
- package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +8 -0
- package/dist/types/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts +101 -0
- package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts +13 -0
- package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/index.d.ts +2 -0
- package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Root/Root.d.ts +14 -0
- package/dist/types/components/builtin/Root/Root.d.ts.map +1 -0
- package/dist/types/components/{Root → builtin/Root}/components/Placeholder/index.d.ts +0 -0
- package/dist/types/components/builtin/Root/components/Placeholder/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Root/index.d.ts +2 -0
- package/dist/types/components/builtin/Root/index.d.ts.map +1 -0
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +21 -0
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -0
- package/dist/types/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +8 -0
- package/dist/types/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -0
- package/dist/types/components/builtin/SocialLinks/index.d.ts +2 -0
- package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -0
- package/dist/types/components/builtin/SocialLinks/options.d.ts +113 -0
- package/dist/types/components/builtin/SocialLinks/options.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/Text.d.ts +19 -0
- package/dist/types/components/builtin/Text/Text.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Block/index.d.ts +24 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Block/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Mark/hooks/useTypographyMark.d.ts +25 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Mark/hooks/useTypographyMark.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Mark/index.d.ts +13 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/components/Mark/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/index.d.ts +5 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/DeviceOverridesBlocks.d.ts +3 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/DeviceOverridesBlocks.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/DeviceOverridesMarks.d.ts +3 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/DeviceOverridesMarks.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/Inlines.d.ts +3 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/Inlines.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/Link.d.ts +3 -0
- package/dist/types/components/builtin/Text/components/RichTextEditor/plugins/Link.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/index.d.ts +2 -0
- package/dist/types/components/builtin/Text/index.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/Video.d.ts +15 -0
- package/dist/types/components/builtin/Video/Video.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/index.d.ts +2 -0
- package/dist/types/components/builtin/Video/index.d.ts.map +1 -0
- package/dist/types/components/builtin/index.d.ts +16 -0
- package/dist/types/components/builtin/index.d.ts.map +1 -0
- package/dist/types/components/hooks/index.d.ts +7 -0
- package/dist/types/components/hooks/index.d.ts.map +1 -1
- package/dist/types/components/hooks/useBackgrounds.d.ts +59 -0
- package/dist/types/components/hooks/useBackgrounds.d.ts.map +1 -0
- package/dist/types/components/hooks/useBorder.d.ts +19 -0
- package/dist/types/components/hooks/useBorder.d.ts.map +1 -0
- package/dist/types/components/hooks/useBoxShadow.d.ts +19 -0
- package/dist/types/components/hooks/useBoxShadow.d.ts.map +1 -0
- package/dist/types/components/hooks/useColor.d.ts +7 -0
- package/dist/types/components/hooks/useColor.d.ts.map +1 -0
- package/dist/types/components/hooks/useFile.d.ts +13 -0
- package/dist/types/components/hooks/useFile.d.ts.map +1 -0
- package/dist/types/components/hooks/usePage.d.ts +7 -0
- package/dist/types/components/hooks/usePage.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/hooks/useTableFormFieldRefs.d.ts +8 -0
- package/dist/types/components/hooks/useTableFormFieldRefs.d.ts.map +1 -0
- package/dist/types/components/hooks/useTypography.d.ts +24 -0
- package/dist/types/components/hooks/useTypography.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +4 -3
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/page/BodySnippet.d.ts +7 -0
- package/dist/types/components/page/BodySnippet.d.ts.map +1 -0
- package/dist/types/components/page/Page.d.ts +45 -0
- package/dist/types/components/page/Page.d.ts.map +1 -0
- package/dist/types/components/page/index.d.ts +2 -0
- package/dist/types/components/page/index.d.ts.map +1 -0
- package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +11 -0
- package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -0
- package/dist/types/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +8 -0
- package/dist/types/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -0
- package/dist/types/components/shared/BackgroundsContainer/components/Parallax/index.d.ts +11 -0
- package/dist/types/components/shared/BackgroundsContainer/components/Parallax/index.d.ts.map +1 -0
- package/dist/types/components/shared/BackgroundsContainer/index.d.ts +11 -0
- package/dist/types/components/shared/BackgroundsContainer/index.d.ts.map +1 -0
- package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts +7 -0
- package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts.map +1 -0
- package/dist/types/components/shared/FallbackComponent/index.d.ts +2 -0
- package/dist/types/components/shared/FallbackComponent/index.d.ts.map +1 -0
- package/dist/types/components/shared/GutterContainer/index.d.ts +8 -0
- package/dist/types/components/shared/GutterContainer/index.d.ts.map +1 -0
- package/dist/types/components/shared/Link/index.d.ts +9 -0
- package/dist/types/components/shared/Link/index.d.ts.map +1 -0
- package/dist/types/components/utils/colorToString.d.ts +3 -0
- package/dist/types/components/utils/colorToString.d.ts.map +1 -0
- package/dist/types/components/utils/cssMediaRules.d.ts +23 -1
- package/dist/types/components/utils/cssMediaRules.d.ts.map +1 -1
- package/dist/types/components/utils/devices.d.ts +1 -0
- package/dist/types/components/utils/devices.d.ts.map +1 -1
- package/dist/types/components/utils/isNonNullable.d.ts +2 -0
- package/dist/types/components/utils/isNonNullable.d.ts.map +1 -0
- package/dist/types/components/utils/placeholders.d.ts +17 -0
- package/dist/types/components/utils/placeholders.d.ts.map +1 -0
- package/dist/types/components/utils/queries.d.ts +8 -0
- package/dist/types/components/utils/queries.d.ts.map +1 -0
- package/dist/types/components/utils/types.d.ts +10 -0
- package/dist/types/components/utils/types.d.ts.map +1 -0
- package/dist/types/controls.d.ts +4 -0
- package/dist/types/controls.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/next.d.ts +22 -0
- package/dist/types/next.d.ts.map +1 -0
- package/dist/types/prop-controllers/descriptors.d.ts +69 -14
- package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
- package/dist/types/prop-controllers/index.d.ts +3 -1
- package/dist/types/prop-controllers/index.d.ts.map +1 -1
- package/dist/types/prop-controllers/instances.d.ts +101 -0
- package/dist/types/prop-controllers/instances.d.ts.map +1 -0
- package/dist/types/prop-controllers/introspection.d.ts +5 -0
- package/dist/types/prop-controllers/introspection.d.ts.map +1 -0
- package/dist/types/react.d.ts +1 -1
- package/dist/types/react.d.ts.map +1 -1
- package/dist/types/runtimes/react.d.ts +27 -12
- package/dist/types/runtimes/react.d.ts.map +1 -1
- package/dist/types/state/actions.d.ts +161 -13
- package/dist/types/state/actions.d.ts.map +1 -1
- package/dist/types/state/modules/box-models.d.ts +5 -5
- package/dist/types/state/modules/box-models.d.ts.map +1 -1
- package/dist/types/state/modules/prop-controller-handles.d.ts +16 -0
- package/dist/types/state/modules/prop-controller-handles.d.ts.map +1 -0
- package/dist/types/state/modules/prop-controllers.d.ts +1 -0
- package/dist/types/state/modules/prop-controllers.d.ts.map +1 -1
- package/dist/types/state/modules/read-only-documents.d.ts +8 -4
- package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
- package/dist/types/state/modules/read-write-documents.d.ts +1 -1
- package/dist/types/state/modules/read-write-documents.d.ts.map +1 -1
- package/dist/types/state/react-builder-preview.d.ts +16 -11
- package/dist/types/state/react-builder-preview.d.ts.map +1 -1
- package/dist/types/state/react-page.d.ts +8 -3
- package/dist/types/state/react-page.d.ts.map +1 -1
- package/dist/types/utils/clamp.d.ts +3 -0
- package/dist/types/utils/clamp.d.ts.map +1 -0
- package/dist/types/utils/coalesce.d.ts +3 -0
- package/dist/types/utils/coalesce.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +6 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/deepEqual.d.ts.map +1 -1
- package/dist/types/utils/intersection.d.ts +4 -0
- package/dist/types/utils/intersection.d.ts.map +1 -0
- package/dist/types/utils/keys.d.ts +5 -0
- package/dist/types/utils/keys.d.ts.map +1 -0
- package/dist/types/utils/shallowEqual.d.ts.map +1 -1
- package/dist/types/utils/shallowMerge.d.ts +2 -0
- package/dist/types/utils/shallowMerge.d.ts.map +1 -0
- package/next.js +1 -0
- package/package.json +73 -15
- package/prop-controllers.js +1 -0
- package/react.js +1 -0
- package/dist/types/components/Box/Box.d.ts.map +0 -1
- package/dist/types/components/Box/animations.d.ts.map +0 -1
- package/dist/types/components/Box/components/Placeholder/index.d.ts.map +0 -1
- package/dist/types/components/Box/index.d.ts.map +0 -1
- package/dist/types/components/Root/Root.d.ts +0 -11
- package/dist/types/components/Root/Root.d.ts.map +0 -1
- package/dist/types/components/Root/components/Placeholder/index.d.ts.map +0 -1
- package/dist/types/components/Root/index.d.ts +0 -2
- package/dist/types/components/Root/index.d.ts.map +0 -1
package/api.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/api.cjs')
|
package/box-model.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/box-model.cjs')
|
package/builder.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/builder.cjs')
|
package/components.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/components.cjs')
|
package/dist/Page.cjs.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
var React = require("react");
|
|
22
|
+
var parse = require("html-react-parser");
|
|
23
|
+
var Head = require("next/head");
|
|
24
|
+
var react = require("./react.cjs2.js");
|
|
25
|
+
var reactPage = require("./react-page.cjs.js");
|
|
26
|
+
var jsxRuntime = require("react/jsx-runtime");
|
|
27
|
+
function _interopDefaultLegacy(e) {
|
|
28
|
+
return e && typeof e === "object" && "default" in e ? e : { "default": e };
|
|
29
|
+
}
|
|
30
|
+
var parse__default = /* @__PURE__ */ _interopDefaultLegacy(parse);
|
|
31
|
+
var Head__default = /* @__PURE__ */ _interopDefaultLegacy(Head);
|
|
32
|
+
const SCRIPT_TAG = "script";
|
|
33
|
+
function BodySnippet({
|
|
34
|
+
code,
|
|
35
|
+
cleanup
|
|
36
|
+
}) {
|
|
37
|
+
React.useEffect(() => {
|
|
38
|
+
const container = document.createElement("div");
|
|
39
|
+
container.innerHTML = code;
|
|
40
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);
|
|
41
|
+
const scripts = [];
|
|
42
|
+
while (walker.nextNode()) {
|
|
43
|
+
if (walker.currentNode instanceof HTMLScriptElement)
|
|
44
|
+
scripts.push(walker.currentNode);
|
|
45
|
+
}
|
|
46
|
+
scripts.forEach((inlineScript) => {
|
|
47
|
+
var _a;
|
|
48
|
+
const executableScript = document.createElement(SCRIPT_TAG);
|
|
49
|
+
executableScript.textContent = inlineScript.textContent;
|
|
50
|
+
Array.from(inlineScript.attributes).forEach(({
|
|
51
|
+
name,
|
|
52
|
+
value
|
|
53
|
+
}) => {
|
|
54
|
+
executableScript.setAttribute(name, value);
|
|
55
|
+
});
|
|
56
|
+
(_a = inlineScript.parentNode) == null ? void 0 : _a.replaceChild(executableScript, inlineScript);
|
|
57
|
+
});
|
|
58
|
+
const nodes = Array.from(container.childNodes);
|
|
59
|
+
document.body.append(...nodes);
|
|
60
|
+
return () => {
|
|
61
|
+
nodes.forEach((node) => {
|
|
62
|
+
var _a;
|
|
63
|
+
(_a = node.parentNode) == null ? void 0 : _a.removeChild(node);
|
|
64
|
+
});
|
|
65
|
+
if (cleanup == null)
|
|
66
|
+
return;
|
|
67
|
+
const cleanUp = new Function(cleanup);
|
|
68
|
+
try {
|
|
69
|
+
cleanUp();
|
|
70
|
+
} catch {
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}, [code, cleanup]);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const defaultFavicon = {
|
|
77
|
+
mimetype: "image/png",
|
|
78
|
+
publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
|
|
79
|
+
};
|
|
80
|
+
const VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\-\d]*$/;
|
|
81
|
+
const VALID_HEAD_ELEMENT_TYPES = ["title", "base", "link", "style", "meta", "script", "noscript", "template"];
|
|
82
|
+
function snippetToElement(snippet) {
|
|
83
|
+
return React.Children.map(parse__default["default"](snippet.code), (element) => {
|
|
84
|
+
if (typeof element === "string")
|
|
85
|
+
return element;
|
|
86
|
+
if (!VALID_TAG_REGEX.test(element.type))
|
|
87
|
+
return null;
|
|
88
|
+
const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
|
|
89
|
+
return React.createElement(element.type, __spreadProps(__spreadValues({}, element.props), {
|
|
90
|
+
key
|
|
91
|
+
}));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function Page({
|
|
95
|
+
page,
|
|
96
|
+
preview = false
|
|
97
|
+
}) {
|
|
98
|
+
var _a;
|
|
99
|
+
console.log({
|
|
100
|
+
page
|
|
101
|
+
});
|
|
102
|
+
const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
|
|
103
|
+
const {
|
|
104
|
+
title,
|
|
105
|
+
description,
|
|
106
|
+
keywords,
|
|
107
|
+
socialImage
|
|
108
|
+
} = page.meta;
|
|
109
|
+
const fontFamilyParamValue = page.fonts.map(({
|
|
110
|
+
family,
|
|
111
|
+
variants
|
|
112
|
+
}) => {
|
|
113
|
+
return `${family.replace(/ /g, "+")}:${variants.join()}`;
|
|
114
|
+
}).join("|");
|
|
115
|
+
const snippets = React.useMemo(() => page.snippets.filter((snippet) => preview ? snippet.builderEnabled : snippet.liveEnabled), [page, preview]);
|
|
116
|
+
const headSnippets = React.useMemo(() => snippets.filter((snippet) => snippet.location === "HEAD"), [snippets]);
|
|
117
|
+
const previousHeadSnippets = React.useRef(null);
|
|
118
|
+
React.useEffect(() => {
|
|
119
|
+
var _a2;
|
|
120
|
+
const headSnippetsToCleanUp = ((_a2 = previousHeadSnippets.current) != null ? _a2 : []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
|
|
121
|
+
headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
|
|
122
|
+
if (snippetToCleanUp.cleanup == null)
|
|
123
|
+
return;
|
|
124
|
+
const cleanUp = new Function(snippetToCleanUp.cleanup);
|
|
125
|
+
try {
|
|
126
|
+
cleanUp();
|
|
127
|
+
} catch {
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
previousHeadSnippets.current = headSnippets;
|
|
131
|
+
}, [headSnippets]);
|
|
132
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
133
|
+
children: [/* @__PURE__ */ jsxRuntime.jsxs(Head__default["default"], {
|
|
134
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx("style", {
|
|
135
|
+
children: `
|
|
136
|
+
html {
|
|
137
|
+
font-family: sans-serif;
|
|
138
|
+
}
|
|
139
|
+
div#__next {
|
|
140
|
+
overflow: hidden;
|
|
141
|
+
}
|
|
142
|
+
`
|
|
143
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("link", {
|
|
144
|
+
rel: "icon",
|
|
145
|
+
type: favicon.mimetype,
|
|
146
|
+
href: favicon.publicUrl
|
|
147
|
+
}), title && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
148
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx("title", {
|
|
149
|
+
children: title
|
|
150
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
151
|
+
property: "og:title",
|
|
152
|
+
content: title
|
|
153
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
154
|
+
name: "twitter:title",
|
|
155
|
+
content: title
|
|
156
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
157
|
+
itemProp: "name",
|
|
158
|
+
content: title
|
|
159
|
+
})]
|
|
160
|
+
}), description && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
161
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
162
|
+
name: "description",
|
|
163
|
+
content: description
|
|
164
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
165
|
+
property: "og:description",
|
|
166
|
+
content: description
|
|
167
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
168
|
+
name: "twitter:description",
|
|
169
|
+
content: description
|
|
170
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
171
|
+
itemProp: "description",
|
|
172
|
+
content: description
|
|
173
|
+
})]
|
|
174
|
+
}), keywords && /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
175
|
+
name: "keywords",
|
|
176
|
+
content: keywords
|
|
177
|
+
}), socialImage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
178
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
179
|
+
property: "og:image",
|
|
180
|
+
content: socialImage.publicUrl
|
|
181
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
182
|
+
property: "og:image:type",
|
|
183
|
+
content: socialImage.publicUrl
|
|
184
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
185
|
+
name: "twitter:image",
|
|
186
|
+
content: socialImage.publicUrl
|
|
187
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
188
|
+
name: "twitter:card",
|
|
189
|
+
content: socialImage.publicUrl
|
|
190
|
+
}), /* @__PURE__ */ jsxRuntime.jsx("meta", {
|
|
191
|
+
itemProp: "image",
|
|
192
|
+
content: socialImage.publicUrl
|
|
193
|
+
})]
|
|
194
|
+
}), fontFamilyParamValue !== "" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
195
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("link", {
|
|
196
|
+
rel: "stylesheet",
|
|
197
|
+
href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
|
|
198
|
+
})
|
|
199
|
+
}), headSnippets.map(snippetToElement).map((children) => React.Children.map(children, (child) => {
|
|
200
|
+
if (typeof child === "string")
|
|
201
|
+
return child;
|
|
202
|
+
if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
|
|
203
|
+
return child;
|
|
204
|
+
return null;
|
|
205
|
+
}))]
|
|
206
|
+
}), /* @__PURE__ */ jsxRuntime.jsx(react.DocumentReference, {
|
|
207
|
+
documentReference: reactPage.createDocumentReference(page.id)
|
|
208
|
+
}), snippets.filter((snippet) => snippet.location === "BODY").map((snippet) => /* @__PURE__ */ jsxRuntime.jsx(BodySnippet, {
|
|
209
|
+
code: snippet.code,
|
|
210
|
+
cleanup: snippet.cleanup
|
|
211
|
+
}, snippet.id))]
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
exports.Page = Page;
|
|
215
|
+
//# sourceMappingURL=Page.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Page.cjs.js","sources":["../src/components/page/BodySnippet.tsx","../src/components/page/Page.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef } from 'react'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\n\nenum SnippetLocation {\n Body = 'BODY',\n Head = 'HEAD',\n}\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup?: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n name: string\n shouldAddToNewPages: boolean\n}\n\nexport type PageData = {\n id: string\n meta: {\n title?: string | null | undefined\n description?: string | null | undefined\n keywords?: string | null | undefined\n socialImage?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n favicon?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n }\n snippets: Snippet[]\n fonts: Array<{\n family: string\n variants: string[]\n }>\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\ntype Props = {\n page: PageData\n preview?: boolean\n}\n\nexport function Page({ page, preview = false }: Props): JSX.Element {\n console.log({ page })\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const fontFamilyParamValue = page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n const snippets = useMemo(\n () => page.snippets.filter(snippet => (preview ? snippet.builderEnabled : snippet.liveEnabled)),\n [page, preview],\n )\n const headSnippets = useMemo(\n () => snippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [snippets],\n )\n\n const previousHeadSnippets = useRef<PageData['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.publicUrl} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content={socialImage.publicUrl} />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {snippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","id","props","page","preview","console","log","favicon","meta","title","description","keywords","socialImage","fontFamilyParamValue","fonts","family","variants","replace","join","snippets","useMemo","filter","builderEnabled","liveEnabled","headSnippets","location","SnippetLocation","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","some","snippetToCleanUp","_Fragment","_jsxs","Head","_jsx","snippetToElement","children","child","includes","DocumentReference","createDocumentReference"],"mappings":"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"}
|
package/dist/Page.es.js
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
import { useEffect, useMemo, useRef, Children, createElement } from "react";
|
|
21
|
+
import parse from "html-react-parser";
|
|
22
|
+
import Head from "next/head";
|
|
23
|
+
import { D as DocumentReference } from "./react.es2.js";
|
|
24
|
+
import { a as createDocumentReference } from "./react-page.es.js";
|
|
25
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
26
|
+
const SCRIPT_TAG = "script";
|
|
27
|
+
function BodySnippet({
|
|
28
|
+
code,
|
|
29
|
+
cleanup
|
|
30
|
+
}) {
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const container = document.createElement("div");
|
|
33
|
+
container.innerHTML = code;
|
|
34
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);
|
|
35
|
+
const scripts = [];
|
|
36
|
+
while (walker.nextNode()) {
|
|
37
|
+
if (walker.currentNode instanceof HTMLScriptElement)
|
|
38
|
+
scripts.push(walker.currentNode);
|
|
39
|
+
}
|
|
40
|
+
scripts.forEach((inlineScript) => {
|
|
41
|
+
var _a;
|
|
42
|
+
const executableScript = document.createElement(SCRIPT_TAG);
|
|
43
|
+
executableScript.textContent = inlineScript.textContent;
|
|
44
|
+
Array.from(inlineScript.attributes).forEach(({
|
|
45
|
+
name,
|
|
46
|
+
value
|
|
47
|
+
}) => {
|
|
48
|
+
executableScript.setAttribute(name, value);
|
|
49
|
+
});
|
|
50
|
+
(_a = inlineScript.parentNode) == null ? void 0 : _a.replaceChild(executableScript, inlineScript);
|
|
51
|
+
});
|
|
52
|
+
const nodes = Array.from(container.childNodes);
|
|
53
|
+
document.body.append(...nodes);
|
|
54
|
+
return () => {
|
|
55
|
+
nodes.forEach((node) => {
|
|
56
|
+
var _a;
|
|
57
|
+
(_a = node.parentNode) == null ? void 0 : _a.removeChild(node);
|
|
58
|
+
});
|
|
59
|
+
if (cleanup == null)
|
|
60
|
+
return;
|
|
61
|
+
const cleanUp = new Function(cleanup);
|
|
62
|
+
try {
|
|
63
|
+
cleanUp();
|
|
64
|
+
} catch {
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}, [code, cleanup]);
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const defaultFavicon = {
|
|
71
|
+
mimetype: "image/png",
|
|
72
|
+
publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
|
|
73
|
+
};
|
|
74
|
+
const VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\-\d]*$/;
|
|
75
|
+
const VALID_HEAD_ELEMENT_TYPES = ["title", "base", "link", "style", "meta", "script", "noscript", "template"];
|
|
76
|
+
function snippetToElement(snippet) {
|
|
77
|
+
return Children.map(parse(snippet.code), (element) => {
|
|
78
|
+
if (typeof element === "string")
|
|
79
|
+
return element;
|
|
80
|
+
if (!VALID_TAG_REGEX.test(element.type))
|
|
81
|
+
return null;
|
|
82
|
+
const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
|
|
83
|
+
return createElement(element.type, __spreadProps(__spreadValues({}, element.props), {
|
|
84
|
+
key
|
|
85
|
+
}));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function Page({
|
|
89
|
+
page,
|
|
90
|
+
preview = false
|
|
91
|
+
}) {
|
|
92
|
+
var _a;
|
|
93
|
+
console.log({
|
|
94
|
+
page
|
|
95
|
+
});
|
|
96
|
+
const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
|
|
97
|
+
const {
|
|
98
|
+
title,
|
|
99
|
+
description,
|
|
100
|
+
keywords,
|
|
101
|
+
socialImage
|
|
102
|
+
} = page.meta;
|
|
103
|
+
const fontFamilyParamValue = page.fonts.map(({
|
|
104
|
+
family,
|
|
105
|
+
variants
|
|
106
|
+
}) => {
|
|
107
|
+
return `${family.replace(/ /g, "+")}:${variants.join()}`;
|
|
108
|
+
}).join("|");
|
|
109
|
+
const snippets = useMemo(() => page.snippets.filter((snippet) => preview ? snippet.builderEnabled : snippet.liveEnabled), [page, preview]);
|
|
110
|
+
const headSnippets = useMemo(() => snippets.filter((snippet) => snippet.location === "HEAD"), [snippets]);
|
|
111
|
+
const previousHeadSnippets = useRef(null);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
var _a2;
|
|
114
|
+
const headSnippetsToCleanUp = ((_a2 = previousHeadSnippets.current) != null ? _a2 : []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
|
|
115
|
+
headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
|
|
116
|
+
if (snippetToCleanUp.cleanup == null)
|
|
117
|
+
return;
|
|
118
|
+
const cleanUp = new Function(snippetToCleanUp.cleanup);
|
|
119
|
+
try {
|
|
120
|
+
cleanUp();
|
|
121
|
+
} catch {
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
previousHeadSnippets.current = headSnippets;
|
|
125
|
+
}, [headSnippets]);
|
|
126
|
+
return /* @__PURE__ */ jsxs(Fragment, {
|
|
127
|
+
children: [/* @__PURE__ */ jsxs(Head, {
|
|
128
|
+
children: [/* @__PURE__ */ jsx("style", {
|
|
129
|
+
children: `
|
|
130
|
+
html {
|
|
131
|
+
font-family: sans-serif;
|
|
132
|
+
}
|
|
133
|
+
div#__next {
|
|
134
|
+
overflow: hidden;
|
|
135
|
+
}
|
|
136
|
+
`
|
|
137
|
+
}), /* @__PURE__ */ jsx("link", {
|
|
138
|
+
rel: "icon",
|
|
139
|
+
type: favicon.mimetype,
|
|
140
|
+
href: favicon.publicUrl
|
|
141
|
+
}), title && /* @__PURE__ */ jsxs(Fragment, {
|
|
142
|
+
children: [/* @__PURE__ */ jsx("title", {
|
|
143
|
+
children: title
|
|
144
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
145
|
+
property: "og:title",
|
|
146
|
+
content: title
|
|
147
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
148
|
+
name: "twitter:title",
|
|
149
|
+
content: title
|
|
150
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
151
|
+
itemProp: "name",
|
|
152
|
+
content: title
|
|
153
|
+
})]
|
|
154
|
+
}), description && /* @__PURE__ */ jsxs(Fragment, {
|
|
155
|
+
children: [/* @__PURE__ */ jsx("meta", {
|
|
156
|
+
name: "description",
|
|
157
|
+
content: description
|
|
158
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
159
|
+
property: "og:description",
|
|
160
|
+
content: description
|
|
161
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
162
|
+
name: "twitter:description",
|
|
163
|
+
content: description
|
|
164
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
165
|
+
itemProp: "description",
|
|
166
|
+
content: description
|
|
167
|
+
})]
|
|
168
|
+
}), keywords && /* @__PURE__ */ jsx("meta", {
|
|
169
|
+
name: "keywords",
|
|
170
|
+
content: keywords
|
|
171
|
+
}), socialImage && /* @__PURE__ */ jsxs(Fragment, {
|
|
172
|
+
children: [/* @__PURE__ */ jsx("meta", {
|
|
173
|
+
property: "og:image",
|
|
174
|
+
content: socialImage.publicUrl
|
|
175
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
176
|
+
property: "og:image:type",
|
|
177
|
+
content: socialImage.publicUrl
|
|
178
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
179
|
+
name: "twitter:image",
|
|
180
|
+
content: socialImage.publicUrl
|
|
181
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
182
|
+
name: "twitter:card",
|
|
183
|
+
content: socialImage.publicUrl
|
|
184
|
+
}), /* @__PURE__ */ jsx("meta", {
|
|
185
|
+
itemProp: "image",
|
|
186
|
+
content: socialImage.publicUrl
|
|
187
|
+
})]
|
|
188
|
+
}), fontFamilyParamValue !== "" && /* @__PURE__ */ jsx(Fragment, {
|
|
189
|
+
children: /* @__PURE__ */ jsx("link", {
|
|
190
|
+
rel: "stylesheet",
|
|
191
|
+
href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
|
|
192
|
+
})
|
|
193
|
+
}), headSnippets.map(snippetToElement).map((children) => Children.map(children, (child) => {
|
|
194
|
+
if (typeof child === "string")
|
|
195
|
+
return child;
|
|
196
|
+
if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
|
|
197
|
+
return child;
|
|
198
|
+
return null;
|
|
199
|
+
}))]
|
|
200
|
+
}), /* @__PURE__ */ jsx(DocumentReference, {
|
|
201
|
+
documentReference: createDocumentReference(page.id)
|
|
202
|
+
}), snippets.filter((snippet) => snippet.location === "BODY").map((snippet) => /* @__PURE__ */ jsx(BodySnippet, {
|
|
203
|
+
code: snippet.code,
|
|
204
|
+
cleanup: snippet.cleanup
|
|
205
|
+
}, snippet.id))]
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
export { Page as P };
|
|
209
|
+
//# sourceMappingURL=Page.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Page.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/components/page/Page.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef } from 'react'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\n\nenum SnippetLocation {\n Body = 'BODY',\n Head = 'HEAD',\n}\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup?: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n name: string\n shouldAddToNewPages: boolean\n}\n\nexport type PageData = {\n id: string\n meta: {\n title?: string | null | undefined\n description?: string | null | undefined\n keywords?: string | null | undefined\n socialImage?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n favicon?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n }\n snippets: Snippet[]\n fonts: Array<{\n family: string\n variants: string[]\n }>\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\ntype Props = {\n page: PageData\n preview?: boolean\n}\n\nexport function Page({ page, preview = false }: Props): JSX.Element {\n console.log({ page })\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const fontFamilyParamValue = page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n const snippets = useMemo(\n () => page.snippets.filter(snippet => (preview ? snippet.builderEnabled : snippet.liveEnabled)),\n [page, preview],\n )\n const headSnippets = useMemo(\n () => snippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [snippets],\n )\n\n const previousHeadSnippets = useRef<PageData['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.publicUrl} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content={socialImage.publicUrl} />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {snippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","id","props","page","preview","console","log","favicon","meta","title","description","keywords","socialImage","fontFamilyParamValue","fonts","family","variants","replace","join","snippets","useMemo","filter","builderEnabled","liveEnabled","headSnippets","location","SnippetLocation","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","some","snippetToCleanUp","_Fragment","_jsxs","_jsx","snippetToElement","children","child","includes","createDocumentReference"],"mappings":"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"}
|