@xiwebdesign/xicms-core 6.4.7 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SiteChrome.d.ts +12 -0
- package/dist/SiteChrome.js +24 -0
- package/dist/SiteChrome.js.map +1 -0
- package/dist/XiCMSProvider.d.ts +16 -8
- package/dist/XiCMSProvider.js +83 -58
- package/dist/XiCMSProvider.js.map +1 -1
- package/dist/admin/AdminApp.d.ts +1 -1
- package/dist/admin/AdminApp.js +79 -35
- package/dist/admin/AdminApp.js.map +1 -1
- package/dist/admin/AdminHelp.d.ts +8 -1
- package/dist/admin/AdminHelp.js +2 -2
- package/dist/admin/AdminHelp.js.map +1 -1
- package/dist/admin/NewsEditor.js +9 -9
- package/dist/admin/SuperadminPanel.js +5 -5
- package/dist/admin/blockEditors/GenericEditor.d.ts +2 -2
- package/dist/admin/blockEditors/GenericEditor.js +12 -11
- package/dist/admin/blockEditors/GenericEditor.js.map +1 -1
- package/dist/admin/blockEditors/StyleEditor.d.ts +1 -1
- package/dist/admin/blockEditors/StyleEditor.js +2 -2
- package/dist/admin/blockEditors/SymbolRefEditor.d.ts +1 -1
- package/dist/admin/blockEditors/SymbolRefEditor.js +5 -5
- package/dist/admin/blockEditors/index.d.ts +1 -1
- package/dist/admin/blockEditors/index.js +10 -10
- package/dist/admin/customBlocks/CustomBlocksPanel.js +7 -7
- package/dist/admin/editors/RichTextEditor.js +8 -7
- package/dist/admin/editors/RichTextEditor.js.map +1 -1
- package/dist/admin/editors/fontSizeExtension.js +1 -1
- package/dist/admin/editors/fontSizeExtension.js.map +1 -1
- package/dist/admin/forms/FormsPanel.js +9 -9
- package/dist/admin/index.d.ts +16 -16
- package/dist/admin/index.js +16 -16
- package/dist/admin/lib/mediaUsage.js +1 -1
- package/dist/admin/lib/pagesClient.d.ts +1 -1
- package/dist/admin/lib/pagesClient.js +11 -7
- package/dist/admin/lib/pagesClient.js.map +1 -1
- package/dist/admin/lib/sanitizeDraft.d.ts +9 -0
- package/dist/admin/lib/sanitizeDraft.js +28 -0
- package/dist/admin/lib/sanitizeDraft.js.map +1 -0
- package/dist/admin/lib/symbolsClient.d.ts +1 -1
- package/dist/admin/lib/symbolsClient.js +3 -3
- package/dist/admin/lib/upload.js +3 -3
- package/dist/admin/lib/useNestedDialog.d.ts +15 -0
- package/dist/admin/lib/useNestedDialog.js +23 -0
- package/dist/admin/lib/useNestedDialog.js.map +1 -0
- package/dist/admin/lib/zodFields.d.ts +4 -18
- package/dist/admin/lib/zodFields.js +54 -35
- package/dist/admin/lib/zodFields.js.map +1 -1
- package/dist/admin/media/MediaManager.js +7 -7
- package/dist/admin/media/MediaPicker.js +7 -7
- package/dist/admin/media/MediaPicker.js.map +1 -1
- package/dist/admin/pages/PageEditor.d.ts +1 -1
- package/dist/admin/pages/PageEditor.js +13 -13
- package/dist/admin/pages/PagesPanel.js +30 -30
- package/dist/admin/pages/PagesPanel.js.map +1 -1
- package/dist/admin/panelRegistry.js +7 -7
- package/dist/admin/patterns/PatternInserter.d.ts +1 -1
- package/dist/admin/patterns/PatternInserter.js +5 -5
- package/dist/admin/patterns/PatternInserter.js.map +1 -1
- package/dist/admin/settings/MailSettings.js +5 -5
- package/dist/admin/settings/MailTemplates.d.ts +1 -1
- package/dist/admin/settings/MailTemplates.js +5 -5
- package/dist/admin/settings/SettingsPanel.js +20 -20
- package/dist/admin/settings/SettingsPanel.js.map +1 -1
- package/dist/admin/settings/SnapshotsCard.js +5 -5
- package/dist/admin/settings/moduleSettingsForm.d.ts +1 -1
- package/dist/admin/settings/moduleSettingsForm.js +4 -4
- package/dist/admin/settings/moduleSettingsForm.js.map +1 -1
- package/dist/admin/shop/CategoriesTab.js +8 -8
- package/dist/admin/shop/ConnectionsTab.js +3 -3
- package/dist/admin/shop/DiscountsTab.js +8 -8
- package/dist/admin/shop/OrdersTab.js +10 -10
- package/dist/admin/shop/OrdersTab.js.map +1 -1
- package/dist/admin/shop/ProductsTab.js +10 -10
- package/dist/admin/shop/ShopPanel.js +9 -9
- package/dist/admin/shop/ShopSettingsTab.js +4 -4
- package/dist/admin/shop/index.d.ts +2 -2
- package/dist/admin/shop/index.js +2 -2
- package/dist/admin/shop/lib.js +2 -2
- package/dist/admin/stats/StatsPanel.js +2 -2
- package/dist/admin/ui/ArrayEditor.js +1 -1
- package/dist/admin/ui/PanelIcon.d.ts +3 -0
- package/dist/admin/ui/PanelIcon.js +34 -0
- package/dist/admin/ui/PanelIcon.js.map +1 -0
- package/dist/admin/ui/dialog.d.ts +21 -6
- package/dist/admin/ui/dialog.js +55 -34
- package/dist/admin/ui/dialog.js.map +1 -1
- package/dist/admin/ui/index.d.ts +7 -7
- package/dist/admin/ui/index.js +7 -7
- package/dist/admin/ui/primitives.js +1 -1
- package/dist/admin/ui/tabs.js +1 -1
- package/dist/admin/visual/TranslationPanel.d.ts +1 -1
- package/dist/admin/visual/TranslationPanel.js +3 -3
- package/dist/admin/visual/VisualEditor.js +47 -25
- package/dist/admin/visual/VisualEditor.js.map +1 -1
- package/dist/admin.css +2 -1
- package/dist/agentFiles/catalog.d.ts +2 -2
- package/dist/agentFiles/catalog.js +6 -5
- package/dist/agentFiles/catalog.js.map +1 -1
- package/dist/agentFiles/files.d.ts +5 -5
- package/dist/agentFiles/files.js +17 -17
- package/dist/agentFiles/files.js.map +1 -1
- package/dist/all.d.ts +4 -4
- package/dist/all.js +6 -6
- package/dist/auth/AuthProvider.d.ts +2 -2
- package/dist/auth/AuthProvider.js +51 -28
- package/dist/auth/AuthProvider.js.map +1 -1
- package/dist/auth/LoginForm.js +1 -1
- package/dist/auth/roles.js +4 -1
- package/dist/auth/roles.js.map +1 -1
- package/dist/blocks/BlockRenderer.d.ts +1 -1
- package/dist/blocks/BlockRenderer.js +3 -3
- package/dist/blocks/blockStyle.d.ts +1 -1
- package/dist/blocks/builtins/Accordion.d.ts +1 -1
- package/dist/blocks/builtins/Accordion.js +13 -6
- package/dist/blocks/builtins/Accordion.js.map +1 -1
- package/dist/blocks/builtins/Agenda.d.ts +1 -1
- package/dist/blocks/builtins/Agenda.js +5 -5
- package/dist/blocks/builtins/Banner.d.ts +1 -1
- package/dist/blocks/builtins/Banner.js +2 -2
- package/dist/blocks/builtins/BeforeAfter.d.ts +1 -1
- package/dist/blocks/builtins/BeforeAfter.js +4 -4
- package/dist/blocks/builtins/BeforeAfter.js.map +1 -1
- package/dist/blocks/builtins/Booking.d.ts +1 -1
- package/dist/blocks/builtins/Booking.js +5 -5
- package/dist/blocks/builtins/Breadcrumbs.d.ts +1 -1
- package/dist/blocks/builtins/Breadcrumbs.js +3 -3
- package/dist/blocks/builtins/Cards.d.ts +1 -1
- package/dist/blocks/builtins/Cards.js +5 -5
- package/dist/blocks/builtins/Cards.js.map +1 -1
- package/dist/blocks/builtins/Columns.d.ts +1 -1
- package/dist/blocks/builtins/Columns.js +4 -4
- package/dist/blocks/builtins/Contact.d.ts +3 -3
- package/dist/blocks/builtins/Contact.js +4 -4
- package/dist/blocks/builtins/Countdown.d.ts +1 -1
- package/dist/blocks/builtins/Countdown.js +4 -4
- package/dist/blocks/builtins/Countdown.js.map +1 -1
- package/dist/blocks/builtins/Cta.d.ts +1 -1
- package/dist/blocks/builtins/Cta.js +3 -3
- package/dist/blocks/builtins/Downloads.d.ts +1 -1
- package/dist/blocks/builtins/Downloads.js +4 -4
- package/dist/blocks/builtins/Elements.d.ts +3 -3
- package/dist/blocks/builtins/Elements.js +3 -3
- package/dist/blocks/builtins/Embed.d.ts +1 -1
- package/dist/blocks/builtins/Embed.js +3 -3
- package/dist/blocks/builtins/Faq.d.ts +1 -1
- package/dist/blocks/builtins/Faq.js +14 -6
- package/dist/blocks/builtins/Faq.js.map +1 -1
- package/dist/blocks/builtins/FormBlock.d.ts +1 -1
- package/dist/blocks/builtins/FormBlock.js +28 -18
- package/dist/blocks/builtins/FormBlock.js.map +1 -1
- package/dist/blocks/builtins/Gallery.d.ts +2 -2
- package/dist/blocks/builtins/Gallery.js +5 -5
- package/dist/blocks/builtins/Hero.d.ts +1 -1
- package/dist/blocks/builtins/Hero.js +4 -4
- package/dist/blocks/builtins/ImageBlock.d.ts +1 -1
- package/dist/blocks/builtins/ImageBlock.js +3 -3
- package/dist/blocks/builtins/Jobs.d.ts +2 -2
- package/dist/blocks/builtins/Jobs.js +5 -5
- package/dist/blocks/builtins/Layout.d.ts +2 -2
- package/dist/blocks/builtins/Layout.js +4 -4
- package/dist/blocks/builtins/MapBlock.d.ts +1 -1
- package/dist/blocks/builtins/MapBlock.js +3 -3
- package/dist/blocks/builtins/NewsListBlock.d.ts +1 -1
- package/dist/blocks/builtins/NewsListBlock.js +4 -4
- package/dist/blocks/builtins/Newsletter.d.ts +1 -1
- package/dist/blocks/builtins/Newsletter.js +7 -7
- package/dist/blocks/builtins/Newsletter.js.map +1 -1
- package/dist/blocks/builtins/OpenNowBadge.d.ts +1 -1
- package/dist/blocks/builtins/OpenNowBadge.js +8 -3
- package/dist/blocks/builtins/OpenNowBadge.js.map +1 -1
- package/dist/blocks/builtins/OpeningHours.d.ts +1 -1
- package/dist/blocks/builtins/OpeningHours.js +6 -6
- package/dist/blocks/builtins/PdfBlock.d.ts +1 -1
- package/dist/blocks/builtins/PdfBlock.js +3 -3
- package/dist/blocks/builtins/Portfolio.d.ts +1 -1
- package/dist/blocks/builtins/Portfolio.js +5 -5
- package/dist/blocks/builtins/Pricing.d.ts +2 -2
- package/dist/blocks/builtins/Pricing.js +5 -5
- package/dist/blocks/builtins/Pricing.js.map +1 -1
- package/dist/blocks/builtins/RichTextBlock.d.ts +1 -1
- package/dist/blocks/builtins/RichTextBlock.js +2 -2
- package/dist/blocks/builtins/RichTextBlock.js.map +1 -1
- package/dist/blocks/builtins/Search.d.ts +1 -1
- package/dist/blocks/builtins/Search.js +9 -7
- package/dist/blocks/builtins/Search.js.map +1 -1
- package/dist/blocks/builtins/Sections.d.ts +4 -4
- package/dist/blocks/builtins/Sections.js +4 -4
- package/dist/blocks/builtins/Slider.d.ts +1 -1
- package/dist/blocks/builtins/Slider.js +3 -3
- package/dist/blocks/builtins/Spacer.d.ts +1 -1
- package/dist/blocks/builtins/Spacer.js +2 -2
- package/dist/blocks/builtins/SymbolRef.d.ts +1 -1
- package/dist/blocks/builtins/SymbolRef.js +31 -17
- package/dist/blocks/builtins/SymbolRef.js.map +1 -1
- package/dist/blocks/builtins/Team.d.ts +1 -1
- package/dist/blocks/builtins/Team.js +4 -4
- package/dist/blocks/builtins/Testimonials.d.ts +2 -2
- package/dist/blocks/builtins/Testimonials.js +4 -4
- package/dist/blocks/builtins/Video.d.ts +2 -2
- package/dist/blocks/builtins/Video.js +4 -4
- package/dist/blocks/builtins/Video.js.map +1 -1
- package/dist/blocks/builtins/WhatsappChat.d.ts +1 -1
- package/dist/blocks/builtins/WhatsappChat.js +2 -2
- package/dist/blocks/builtins/Widgets.d.ts +12 -12
- package/dist/blocks/builtins/Widgets.js +19 -19
- package/dist/blocks/builtins/Widgets.js.map +1 -1
- package/dist/blocks/builtins/consentEmbed.js +2 -2
- package/dist/blocks/builtins/index.d.ts +40 -40
- package/dist/blocks/builtins/index.js +40 -40
- package/dist/blocks/builtins/lib/submitForm.js +5 -3
- package/dist/blocks/builtins/lib/submitForm.js.map +1 -1
- package/dist/blocks/context.d.ts +1 -1
- package/dist/blocks/customTemplate/definition.d.ts +3 -3
- package/dist/blocks/customTemplate/definition.js +6 -6
- package/dist/blocks/customTemplate/definition.js.map +1 -1
- package/dist/blocks/customTemplate/interpret.js +1 -1
- package/dist/blocks/index.d.ts +5 -5
- package/dist/blocks/index.js +5 -5
- package/dist/blocks/registry.d.ts +17 -7
- package/dist/blocks/registry.js +2 -1
- package/dist/blocks/registry.js.map +1 -1
- package/dist/components/EditBar.js +3 -3
- package/dist/components/FeedbackWidget.js +4 -4
- package/dist/components/News.d.ts +1 -1
- package/dist/components/News.js +50 -37
- package/dist/components/News.js.map +1 -1
- package/dist/components/PageView.js +11 -8
- package/dist/components/PageView.js.map +1 -1
- package/dist/components/ResponsiveImage.d.ts +1 -1
- package/dist/components/site/SiteFooter.d.ts +1 -1
- package/dist/components/site/SiteFooter.js +2 -2
- package/dist/config.d.ts +1 -1
- package/dist/demo/DemoStudio.js +3 -3
- package/dist/demo/demoStore.d.ts +3 -3
- package/dist/demo/index.d.ts +2 -2
- package/dist/demo/index.js +2 -2
- package/dist/editor/EditorProvider.js +1 -1
- package/dist/firebase/admin.d.ts +0 -2
- package/dist/firebase/admin.js +0 -6
- package/dist/firebase/admin.js.map +1 -1
- package/dist/firebase/appcheck.d.ts +1 -1
- package/dist/firebase/appcheck.js +5 -3
- package/dist/firebase/appcheck.js.map +1 -1
- package/dist/firebase/client.d.ts +2 -1
- package/dist/firebase/client.js +2 -14
- package/dist/firebase/client.js.map +1 -1
- package/dist/firebase/config.d.ts +31 -0
- package/dist/firebase/config.js +39 -0
- package/dist/firebase/config.js.map +1 -0
- package/dist/firebase/feedback.js +5 -3
- package/dist/firebase/feedback.js.map +1 -1
- package/dist/i18n/overlay.d.ts +2 -2
- package/dist/i18n/overlay.js +6 -4
- package/dist/i18n/overlay.js.map +1 -1
- package/dist/index.d.ts +45 -44
- package/dist/index.js +35 -33
- package/dist/index.js.map +1 -1
- package/dist/lock/DemoLock.js +1 -1
- package/dist/modules/builtins.d.ts +1 -1
- package/dist/modules/builtins.js +53 -55
- package/dist/modules/builtins.js.map +1 -1
- package/dist/modules/consent/ConsentBanner.js +1 -1
- package/dist/modules/consent/useConsent.js +1 -1
- package/dist/modules/context.d.ts +1 -1
- package/dist/modules/contract.d.ts +1 -1
- package/dist/modules/defineModule.d.ts +1 -1
- package/dist/modules/index.d.ts +9 -9
- package/dist/modules/index.js +8 -8
- package/dist/modules/overrides.d.ts +1 -1
- package/dist/modules/registry.d.ts +2 -7
- package/dist/modules/registry.js +2 -1
- package/dist/modules/registry.js.map +1 -1
- package/dist/modules/shop/blocks/Cart.d.ts +1 -1
- package/dist/modules/shop/blocks/Cart.js +6 -6
- package/dist/modules/shop/blocks/Checkout.d.ts +1 -1
- package/dist/modules/shop/blocks/Checkout.js +6 -6
- package/dist/modules/shop/blocks/Donation.d.ts +1 -1
- package/dist/modules/shop/blocks/Donation.js +5 -5
- package/dist/modules/shop/blocks/OrderStatus.d.ts +1 -1
- package/dist/modules/shop/blocks/OrderStatus.js +5 -5
- package/dist/modules/shop/blocks/ProductDetail.d.ts +1 -1
- package/dist/modules/shop/blocks/ProductDetail.js +8 -8
- package/dist/modules/shop/blocks/ProductGrid.d.ts +3 -3
- package/dist/modules/shop/blocks/ProductGrid.js +7 -7
- package/dist/modules/shop/blocks/ShopCategories.d.ts +1 -1
- package/dist/modules/shop/blocks/ShopCategories.js +6 -6
- package/dist/modules/shop/index.d.ts +5 -5
- package/dist/modules/shop/index.js +5 -5
- package/dist/modules/shop/lib.d.ts +2 -2
- package/dist/modules/shop/lib.js +18 -13
- package/dist/modules/shop/lib.js.map +1 -1
- package/dist/modules/shop/module.d.ts +1 -1
- package/dist/modules/shop/module.js +9 -9
- package/dist/modules/shop/settings.d.ts +18 -50
- package/dist/modules/shop/settings.js +16 -16
- package/dist/modules/shop/settings.js.map +1 -1
- package/dist/modules/shop/strings.js +1 -1
- package/dist/modules/shop/types.d.ts +1 -1
- package/dist/modules/types.d.ts +2 -2
- package/dist/patterns/builtins.d.ts +1 -1
- package/dist/patterns/builtins.js +1 -1
- package/dist/patterns/index.d.ts +2 -2
- package/dist/patterns/index.js +2 -2
- package/dist/render/PageRenderer.d.ts +2 -2
- package/dist/render/PageRenderer.js +1 -1
- package/dist/render/PublishedPage.d.ts +1 -1
- package/dist/render/PublishedPage.js +2 -2
- package/dist/schema/blocks.d.ts +6793 -15095
- package/dist/schema/blocks.js +335 -355
- package/dist/schema/blocks.js.map +1 -1
- package/dist/schema/customBlocks.d.ts +10 -29
- package/dist/schema/customBlocks.js +14 -13
- package/dist/schema/customBlocks.js.map +1 -1
- package/dist/schema/fields.d.ts +10 -16
- package/dist/schema/fields.js +37 -37
- package/dist/schema/fields.js.map +1 -1
- package/dist/schema/forms.d.ts +62 -111
- package/dist/schema/forms.js +17 -17
- package/dist/schema/forms.js.map +1 -1
- package/dist/schema/index.d.ts +7 -7
- package/dist/schema/index.js +7 -7
- package/dist/schema/mail.d.ts +39 -87
- package/dist/schema/mail.js +4 -4
- package/dist/schema/mail.js.map +1 -1
- package/dist/schema/pages.d.ts +152 -674
- package/dist/schema/pages.js +26 -15
- package/dist/schema/pages.js.map +1 -1
- package/dist/schema/seo.d.ts +9 -27
- package/dist/schema/seo.js +7 -7
- package/dist/schema/seo.js.map +1 -1
- package/dist/schema/settings.d.ts +218 -1074
- package/dist/schema/settings.js +55 -55
- package/dist/schema/settings.js.map +1 -1
- package/dist/schema/shop.d.ts +470 -1214
- package/dist/schema/shop.js +124 -124
- package/dist/schema/shop.js.map +1 -1
- package/dist/schema/siteConfig.d.ts +73 -597
- package/dist/schema/siteConfig.js +17 -17
- package/dist/schema/siteConfig.js.map +1 -1
- package/dist/schema/symbols.d.ts +34 -191
- package/dist/schema/symbols.js +8 -8
- package/dist/schema/symbols.js.map +1 -1
- package/dist/server/auth.d.ts +17 -0
- package/dist/server/auth.js +11 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/bundle.d.ts +15 -6
- package/dist/server/bundle.js +5 -1
- package/dist/server/bundle.js.map +1 -1
- package/dist/server/draft.d.ts +16 -0
- package/dist/server/draft.js +12 -0
- package/dist/server/draft.js.map +1 -0
- package/dist/server/env.js +8 -8
- package/dist/server/env.js.map +1 -1
- package/dist/server/index.d.ts +10 -8
- package/dist/server/index.js +12 -9
- package/dist/server/index.js.map +1 -1
- package/dist/server/pages.d.ts +14 -7
- package/dist/server/pages.js +183 -17
- package/dist/server/pages.js.map +1 -1
- package/dist/server/revalidate.d.ts +6 -0
- package/dist/server/revalidate.js +40 -0
- package/dist/server/revalidate.js.map +1 -0
- package/dist/server/seo.d.ts +3 -3
- package/dist/server/seo.js +1 -1
- package/dist/server/shop.d.ts +3 -3
- package/dist/server/shop.js +6 -3
- package/dist/server/shop.js.map +1 -1
- package/dist/settings/useSiteSettings.d.ts +2 -2
- package/dist/settings/useSiteSettings.js +48 -28
- package/dist/settings/useSiteSettings.js.map +1 -1
- package/dist/styles.css +4 -1
- package/dist/theme/presets.d.ts +1 -1
- package/package.json +35 -34
package/dist/admin/ui/dialog.js
CHANGED
|
@@ -1,44 +1,65 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import {
|
|
4
|
+
cloneElement,
|
|
5
|
+
createContext,
|
|
6
|
+
isValidElement,
|
|
7
|
+
useContext,
|
|
8
|
+
useState
|
|
9
|
+
} from "react";
|
|
10
|
+
import { Dialog as AstryxDialog, DialogHeader } from "@astryxdesign/core/Dialog";
|
|
11
|
+
import { cn } from "./cn.js";
|
|
12
|
+
const Ctx = createContext(null);
|
|
13
|
+
const useDialog = () => {
|
|
14
|
+
const ctx = useContext(Ctx);
|
|
15
|
+
if (!ctx) throw new Error("Dialog-onderdelen horen binnen <Dialog> te staan.");
|
|
16
|
+
return ctx;
|
|
17
|
+
};
|
|
18
|
+
function withClick(children, action) {
|
|
19
|
+
if (!isValidElement(children)) return children;
|
|
20
|
+
const el = children;
|
|
21
|
+
return cloneElement(el, {
|
|
22
|
+
onClick: (e) => {
|
|
23
|
+
el.props.onClick?.(e);
|
|
24
|
+
action();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function Dialog({
|
|
29
|
+
open: controlled,
|
|
30
|
+
onOpenChange,
|
|
31
|
+
children
|
|
32
|
+
}) {
|
|
33
|
+
const [uncontrolled, setUncontrolled] = useState(false);
|
|
34
|
+
const open = controlled ?? uncontrolled;
|
|
35
|
+
const setOpen = (v) => {
|
|
36
|
+
if (controlled === void 0) setUncontrolled(v);
|
|
37
|
+
onOpenChange?.(v);
|
|
38
|
+
};
|
|
39
|
+
return /* @__PURE__ */ jsx(Ctx.Provider, { value: { open, setOpen }, children });
|
|
40
|
+
}
|
|
41
|
+
function DialogTrigger({ children }) {
|
|
42
|
+
const { setOpen } = useDialog();
|
|
43
|
+
return /* @__PURE__ */ jsx(Fragment, { children: withClick(children, () => setOpen(true)) });
|
|
44
|
+
}
|
|
45
|
+
function DialogClose({ children }) {
|
|
46
|
+
const { setOpen } = useDialog();
|
|
47
|
+
return /* @__PURE__ */ jsx(Fragment, { children: withClick(children, () => setOpen(false)) });
|
|
48
|
+
}
|
|
8
49
|
function DialogContent({
|
|
9
|
-
className,
|
|
10
|
-
children,
|
|
11
50
|
title,
|
|
12
|
-
|
|
51
|
+
width = "min(92vw, 32rem)",
|
|
52
|
+
className,
|
|
53
|
+
children
|
|
13
54
|
}) {
|
|
14
|
-
const
|
|
15
|
-
return /* @__PURE__ */ jsxs(
|
|
16
|
-
/* @__PURE__ */ jsx(
|
|
17
|
-
|
|
18
|
-
DialogPrimitive.Content,
|
|
19
|
-
{
|
|
20
|
-
style: {
|
|
21
|
-
position: "fixed",
|
|
22
|
-
left: "50%",
|
|
23
|
-
top: "50%",
|
|
24
|
-
transform: "translate(-50%, -50%)",
|
|
25
|
-
width: "min(92vw, 32rem)",
|
|
26
|
-
maxHeight: "85vh",
|
|
27
|
-
overflowY: "auto",
|
|
28
|
-
zIndex: 10011
|
|
29
|
-
},
|
|
30
|
-
className: cn("rounded-xl bg-white p-5 shadow-xl focus:outline-none", className),
|
|
31
|
-
...props,
|
|
32
|
-
children: [
|
|
33
|
-
/* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "mb-3 text-lg font-semibold", children: title }),
|
|
34
|
-
children
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
)
|
|
55
|
+
const { open, setOpen } = useDialog();
|
|
56
|
+
return /* @__PURE__ */ jsxs(AstryxDialog, { isOpen: open, onOpenChange: setOpen, width, purpose: "form", className, children: [
|
|
57
|
+
/* @__PURE__ */ jsx(DialogHeader, { title }),
|
|
58
|
+
children
|
|
38
59
|
] });
|
|
39
60
|
}
|
|
40
61
|
function DialogDescription({ className, ...props }) {
|
|
41
|
-
return /* @__PURE__ */ jsx(
|
|
62
|
+
return /* @__PURE__ */ jsx("p", { className: cn("text-sm text-slate-600", className), ...props });
|
|
42
63
|
}
|
|
43
64
|
function DialogFooter({ className, ...props }) {
|
|
44
65
|
return /* @__PURE__ */ jsx("div", { className: cn("mt-5 flex items-center justify-end gap-2", className), ...props });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/admin/ui/dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/ui/dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n cloneElement,\n createContext,\n isValidElement,\n useContext,\n useState,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { Dialog as AstryxDialog, DialogHeader } from \"@astryxdesign/core/Dialog\";\nimport { cn } from \"./cn\";\n\n/**\n * Dialogen op Astryx in plaats van Radix.\n *\n * De aanroep-API blijft ongewijzigd (Dialog/DialogTrigger/DialogContent/DialogClose), zodat de\n * mediakiezer, de bevestiging, de patroonkiezer en de factuurweergave hetzelfde blijven lezen.\n *\n * Waarom dit een vereenvoudiging is: Astryx rendert een NATIEVE `<dialog>` en opent hem met\n * `showModal()`. Daarmee staat hij in de top layer van de browser, boven alles — inclusief de\n * editor-overlay. De hele reeks workarounds die het Radix-pad nodig had, vervalt:\n *\n * - portalen ín `.xicms-ve`/`.xicms-admin` omdat Radix anders buiten de gescopete admin-CSS\n * landde en volledig ongestyled rendeerde;\n * - `z-index: 10010/10011` om boven die overlay te komen;\n * - inline centreren omdat `-translate-x-1/2` in de gescopete Tailwind-context niet aansloeg,\n * waardoor de dialoog op smalle schermen rechts buiten beeld liep.\n *\n * Astryx regelt bovendien zelf scroll-lock, focus-insluiting én focusherstel naar het element dat\n * de dialoog opende, en stemt zijn Escape-afhandeling af op een actieve focus trap.\n */\ninterface DialogCtx {\n open: boolean;\n setOpen: (v: boolean) => void;\n}\nconst Ctx = createContext<DialogCtx | null>(null);\nconst useDialog = (): DialogCtx => {\n const ctx = useContext(Ctx);\n if (!ctx) throw new Error(\"Dialog-onderdelen horen binnen <Dialog> te staan.\");\n return ctx;\n};\n\n/** Kloont het kind en hangt er een klik-actie aan (het `asChild`-patroon van de vorige API). */\nfunction withClick(children: ReactNode, action: () => void): ReactNode {\n if (!isValidElement(children)) return children;\n const el = children as ReactElement<{ onClick?: (e: MouseEvent) => void }>;\n return cloneElement(el, {\n onClick: (e: MouseEvent) => {\n el.props.onClick?.(e);\n action();\n },\n });\n}\n\nexport function Dialog({\n open: controlled,\n onOpenChange,\n children,\n}: {\n open?: boolean;\n onOpenChange?: (v: boolean) => void;\n children: ReactNode;\n}) {\n const [uncontrolled, setUncontrolled] = useState(false);\n const open = controlled ?? uncontrolled;\n const setOpen = (v: boolean) => {\n if (controlled === undefined) setUncontrolled(v);\n onOpenChange?.(v);\n };\n return <Ctx.Provider value={{ open, setOpen }}>{children}</Ctx.Provider>;\n}\n\n/** `asChild` blijft geaccepteerd voor een ongewijzigde aanroep-API; het kind wordt altijd gekloond. */\nexport function DialogTrigger({ children }: { children: ReactNode; asChild?: boolean }) {\n const { setOpen } = useDialog();\n return <>{withClick(children, () => setOpen(true))}</>;\n}\n\nexport function DialogClose({ children }: { children: ReactNode; asChild?: boolean }) {\n const { setOpen } = useDialog();\n return <>{withClick(children, () => setOpen(false))}</>;\n}\n\nexport function DialogContent({\n title,\n width = \"min(92vw, 32rem)\",\n className,\n children,\n}: {\n title: string;\n /** Breedte van de dialoog. Verving de `max-w-*`-klassen: Astryx zet de breedte inline. */\n width?: number | string;\n className?: string;\n children: ReactNode;\n}) {\n const { open, setOpen } = useDialog();\n return (\n <AstryxDialog isOpen={open} onOpenChange={setOpen} width={width} purpose=\"form\" className={className}>\n <DialogHeader title={title} />\n {children}\n </AstryxDialog>\n );\n}\n\nexport function DialogDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return <p className={cn(\"text-sm text-slate-600\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"mt-5 flex items-center justify-end gap-2\", className)} {...props} />;\n}\n"],"mappings":";AAwES,SAMA,UANA,KA4BL,YA5BK;AAtET;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,UAAU,cAAc,oBAAoB;AACrD,SAAS,UAAU;AAyBnB,MAAM,MAAM,cAAgC,IAAI;AAChD,MAAM,YAAY,MAAiB;AACjC,QAAM,MAAM,WAAW,GAAG;AAC1B,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mDAAmD;AAC7E,SAAO;AACT;AAGA,SAAS,UAAU,UAAqB,QAA+B;AACrE,MAAI,CAAC,eAAe,QAAQ,EAAG,QAAO;AACtC,QAAM,KAAK;AACX,SAAO,aAAa,IAAI;AAAA,IACtB,SAAS,CAAC,MAAkB;AAC1B,SAAG,MAAM,UAAU,CAAC;AACpB,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAEO,SAAS,OAAO;AAAA,EACrB,MAAM;AAAA,EACN;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,QAAM,OAAO,cAAc;AAC3B,QAAM,UAAU,CAAC,MAAe;AAC9B,QAAI,eAAe,OAAW,iBAAgB,CAAC;AAC/C,mBAAe,CAAC;AAAA,EAClB;AACA,SAAO,oBAAC,IAAI,UAAJ,EAAa,OAAO,EAAE,MAAM,QAAQ,GAAI,UAAS;AAC3D;AAGO,SAAS,cAAc,EAAE,SAAS,GAA+C;AACtF,QAAM,EAAE,QAAQ,IAAI,UAAU;AAC9B,SAAO,gCAAG,oBAAU,UAAU,MAAM,QAAQ,IAAI,CAAC,GAAE;AACrD;AAEO,SAAS,YAAY,EAAE,SAAS,GAA+C;AACpF,QAAM,EAAE,QAAQ,IAAI,UAAU;AAC9B,SAAO,gCAAG,oBAAU,UAAU,MAAM,QAAQ,KAAK,CAAC,GAAE;AACtD;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GAMG;AACD,QAAM,EAAE,MAAM,QAAQ,IAAI,UAAU;AACpC,SACE,qBAAC,gBAAa,QAAQ,MAAM,cAAc,SAAS,OAAc,SAAQ,QAAO,WAC9E;AAAA,wBAAC,gBAAa,OAAc;AAAA,IAC3B;AAAA,KACH;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAA8B;AACpF,SAAO,oBAAC,OAAE,WAAW,GAAG,0BAA0B,SAAS,GAAI,GAAG,OAAO;AAC3E;AAEO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjF,SAAO,oBAAC,SAAI,WAAW,GAAG,4CAA4C,SAAS,GAAI,GAAG,OAAO;AAC/F;","names":[]}
|
package/dist/admin/ui/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { cn } from "./cn";
|
|
2
|
-
export { Button, Input, Textarea, Field, Card, Badge } from "./primitives";
|
|
3
|
-
export { ToastProvider, useToast } from "./toast";
|
|
4
|
-
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs";
|
|
5
|
-
export { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog";
|
|
6
|
-
export { Select } from "./select";
|
|
7
|
-
export { Switch } from "./switch";
|
|
1
|
+
export { cn } from "./cn.js";
|
|
2
|
+
export { Button, Input, Textarea, Field, Card, Badge } from "./primitives.js";
|
|
3
|
+
export { ToastProvider, useToast } from "./toast.js";
|
|
4
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs.js";
|
|
5
|
+
export { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog.js";
|
|
6
|
+
export { Select } from "./select.js";
|
|
7
|
+
export { Switch } from "./switch.js";
|
package/dist/admin/ui/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { cn } from "./cn";
|
|
2
|
-
import { Button, Input, Textarea, Field, Card, Badge } from "./primitives";
|
|
3
|
-
import { ToastProvider, useToast } from "./toast";
|
|
4
|
-
import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs";
|
|
5
|
-
import { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog";
|
|
6
|
-
import { Select } from "./select";
|
|
7
|
-
import { Switch } from "./switch";
|
|
1
|
+
import { cn } from "./cn.js";
|
|
2
|
+
import { Button, Input, Textarea, Field, Card, Badge } from "./primitives.js";
|
|
3
|
+
import { ToastProvider, useToast } from "./toast.js";
|
|
4
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs.js";
|
|
5
|
+
import { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog.js";
|
|
6
|
+
import { Select } from "./select.js";
|
|
7
|
+
import { Switch } from "./switch.js";
|
|
8
8
|
export {
|
|
9
9
|
Badge,
|
|
10
10
|
Button,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { forwardRef } from "react";
|
|
4
|
-
import { cn } from "./cn";
|
|
4
|
+
import { cn } from "./cn.js";
|
|
5
5
|
import { TextInput } from "@astryxdesign/core/TextInput";
|
|
6
6
|
import { NumberInput } from "@astryxdesign/core/NumberInput";
|
|
7
7
|
import { TextArea } from "@astryxdesign/core/TextArea";
|
package/dist/admin/ui/tabs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
4
|
-
import { cn } from "./cn";
|
|
4
|
+
import { cn } from "./cn.js";
|
|
5
5
|
const Tabs = TabsPrimitive.Root;
|
|
6
6
|
function TabsList({ className, ...props }) {
|
|
7
7
|
return /* @__PURE__ */ jsx(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BlockRegistry } from "../../blocks/registry";
|
|
1
|
+
import type { BlockRegistry } from "../../blocks/registry.js";
|
|
2
2
|
export declare function TranslationPanel({ block, siteId, registry, locale, overlay, onTranslate, }: {
|
|
3
3
|
block: Record<string, unknown> & {
|
|
4
4
|
_key: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
|
-
import { introspectToFields } from "../lib/zodFields";
|
|
5
|
-
import { RichTextEditor } from "../editors/RichTextEditor";
|
|
6
|
-
import { Field as FieldRow, Input, Textarea } from "../ui/primitives";
|
|
4
|
+
import { introspectToFields } from "../lib/zodFields.js";
|
|
5
|
+
import { RichTextEditor } from "../editors/RichTextEditor.js";
|
|
6
|
+
import { Field as FieldRow, Input, Textarea } from "../ui/primitives.js";
|
|
7
7
|
function collectEntries(fields, value, prefix = "", labelPrefix = "") {
|
|
8
8
|
const out = [];
|
|
9
9
|
for (const f of fields) {
|
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import "@xiwebdesign/xicms-core/admin.css";
|
|
4
4
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
-
import { useSiteConfig } from "../../config";
|
|
6
|
-
import { useRegistry } from "../../blocks/context";
|
|
7
|
-
import { introspectToFields } from "../lib/zodFields";
|
|
8
|
-
import { BlockErrorBoundary } from "../../blocks/BlockErrorBoundary";
|
|
9
|
-
import { InlineImageEditProvider } from "../../media/ImageContext";
|
|
10
|
-
import { MediaPickerDialog } from "../media/MediaPicker";
|
|
5
|
+
import { useSiteConfig } from "../../config.js";
|
|
6
|
+
import { useRegistry } from "../../blocks/context.js";
|
|
7
|
+
import { introspectToFields } from "../lib/zodFields.js";
|
|
8
|
+
import { BlockErrorBoundary } from "../../blocks/BlockErrorBoundary.js";
|
|
9
|
+
import { InlineImageEditProvider } from "../../media/ImageContext.js";
|
|
10
|
+
import { MediaPickerDialog } from "../media/MediaPicker.js";
|
|
11
11
|
import { EmptyState } from "@astryxdesign/core/EmptyState";
|
|
12
|
-
import {
|
|
12
|
+
import { useFocusTrap, useScrollLock } from "@astryxdesign/core/hooks";
|
|
13
|
+
import { useNestedDialogOpen } from "../lib/useNestedDialog.js";
|
|
14
|
+
import { useThemeVars } from "../../XiCMSProvider.js";
|
|
15
|
+
import { buildBlockAddOptions } from "../../blocks/registry.js";
|
|
16
|
+
import { safeParse } from "zod/v4/core";
|
|
13
17
|
import DOMPurify from "dompurify";
|
|
14
|
-
import { createPage, getDraftByPath, saveDraft, publishPage, subscribeDraft, subscribeVersions, restoreVersion } from "../lib/pagesClient";
|
|
15
|
-
import { isDemoActive } from "../../demo/demoStore";
|
|
16
|
-
import { builtinBlockEditors, GenericEditor } from "../blockEditors";
|
|
17
|
-
import { StyleEditor } from "../blockEditors/StyleEditor";
|
|
18
|
-
import { siteLocales, parseLocaleSlugs, localizeBlocks } from "../../i18n/overlay";
|
|
19
|
-
import { TranslationPanel } from "./TranslationPanel";
|
|
20
|
-
import { reorderBlocks } from "./reorder";
|
|
21
|
-
import { PatternInserter } from "../patterns/PatternInserter";
|
|
22
|
-
import { Button, Field, Input, Textarea } from "../ui/primitives";
|
|
23
|
-
import { Select } from "../ui/select";
|
|
24
|
-
import { ToastProvider, useToast } from "../ui/toast";
|
|
25
|
-
import { ConfirmHost, useConfirm } from "../ui/ConfirmDialog";
|
|
18
|
+
import { createPage, getDraftByPath, saveDraft, publishPage, subscribeDraft, subscribeVersions, restoreVersion } from "../lib/pagesClient.js";
|
|
19
|
+
import { isDemoActive } from "../../demo/demoStore.js";
|
|
20
|
+
import { builtinBlockEditors, GenericEditor } from "../blockEditors/index.js";
|
|
21
|
+
import { StyleEditor } from "../blockEditors/StyleEditor.js";
|
|
22
|
+
import { siteLocales, parseLocaleSlugs, localizeBlocks } from "../../i18n/overlay.js";
|
|
23
|
+
import { TranslationPanel } from "./TranslationPanel.js";
|
|
24
|
+
import { reorderBlocks } from "./reorder.js";
|
|
25
|
+
import { PatternInserter } from "../patterns/PatternInserter.js";
|
|
26
|
+
import { Button, Field, Input, Textarea } from "../ui/primitives.js";
|
|
27
|
+
import { Select } from "../ui/select.js";
|
|
28
|
+
import { ToastProvider, useToast } from "../ui/toast.js";
|
|
29
|
+
import { ConfirmHost, useConfirm } from "../ui/ConfirmDialog.js";
|
|
26
30
|
const GLOBAL_INLINE = [
|
|
31
|
+
// `field: "html"` is de AANNAME, geen wet: een element mag met `data-xicms-edit` zeggen welk veld
|
|
32
|
+
// het werkelijk toont, en dat wint (zie de bind hieronder). Zonder die voorrang schreef élk
|
|
33
|
+
// `.xicms-richtext`-element naar een veld dat letterlijk "html" heet — waar de FAQ zijn antwoord
|
|
34
|
+
// in `items[].aHtml` bewaart en het accordeon in `items[].bodyHtml`. Inline bewerken van een
|
|
35
|
+
// FAQ-antwoord landde daardoor op een niet-bestaand veld: de wijziging verdween stil en het blok
|
|
36
|
+
// hield een zwerfveld over.
|
|
27
37
|
{ selector: ".xicms-richtext", field: "html", html: true },
|
|
28
38
|
{ selector: "[data-xicms-edit]", field: "", html: false, fromData: true }
|
|
29
39
|
];
|
|
@@ -90,6 +100,15 @@ function VisualEditorInner({ onClose }) {
|
|
|
90
100
|
const firstSave = useRef(true);
|
|
91
101
|
const canvasRef = useRef(null);
|
|
92
102
|
const [conflict, setConflict] = useState(false);
|
|
103
|
+
const { vars: themeVars, darkAuto } = useThemeVars();
|
|
104
|
+
const nestedDialogOpen = useNestedDialogOpen();
|
|
105
|
+
const { containerRef, focusFirst } = useFocusTrap({ isActive: !nestedDialogOpen });
|
|
106
|
+
useScrollLock(true);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
const opener = document.activeElement;
|
|
109
|
+
focusFirst();
|
|
110
|
+
return () => opener?.focus?.();
|
|
111
|
+
}, [focusFirst]);
|
|
93
112
|
const [dragIndex, setDragIndex] = useState(null);
|
|
94
113
|
const [dropIndex, setDropIndex] = useState(null);
|
|
95
114
|
const draggingRef = useRef(false);
|
|
@@ -323,7 +342,10 @@ function VisualEditorInner({ onClose }) {
|
|
|
323
342
|
const apply = () => {
|
|
324
343
|
for (const m of specs) {
|
|
325
344
|
host.querySelectorAll(m.selector).forEach(
|
|
326
|
-
(el) =>
|
|
345
|
+
(el) => (
|
|
346
|
+
// Een expliciete `data-xicms-edit` wint altijd; anders het veld van de matcher.
|
|
347
|
+
bind(el, el.dataset.xicmsEdit ?? m.field, !!m.html)
|
|
348
|
+
)
|
|
327
349
|
);
|
|
328
350
|
}
|
|
329
351
|
};
|
|
@@ -382,7 +404,7 @@ function VisualEditorInner({ onClose }) {
|
|
|
382
404
|
if (e.key === "Escape") {
|
|
383
405
|
const t2 = e.target;
|
|
384
406
|
const inField2 = !!t2 && (t2.isContentEditable || t2.tagName === "INPUT" || t2.tagName === "TEXTAREA" || t2.tagName === "SELECT");
|
|
385
|
-
const dialogOpen = document.querySelector('[role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]');
|
|
407
|
+
const dialogOpen = document.querySelector('dialog[open], [role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]');
|
|
386
408
|
if (!inField2 && !dialogOpen) handleClose();
|
|
387
409
|
return;
|
|
388
410
|
}
|
|
@@ -436,7 +458,7 @@ function VisualEditorInner({ onClose }) {
|
|
|
436
458
|
confirmLabel: "Loskoppelen"
|
|
437
459
|
});
|
|
438
460
|
if (!ok) return;
|
|
439
|
-
const { getSymbolOnce } = await import("../lib/symbolsClient");
|
|
461
|
+
const { getSymbolOnce } = await import("../lib/symbolsClient.js");
|
|
440
462
|
const sym = await getSymbolOnce(siteId, blk.symbolId);
|
|
441
463
|
if (!sym) {
|
|
442
464
|
toast({ title: "Symbool niet gevonden", tone: "error" });
|
|
@@ -509,7 +531,7 @@ function VisualEditorInner({ onClose }) {
|
|
|
509
531
|
}
|
|
510
532
|
setConflict(false);
|
|
511
533
|
}, [siteId, path, mutateDraft]);
|
|
512
|
-
return /* @__PURE__ */ jsxs("div", { className: "xicms-ve__shell", role: "dialog", "aria-modal": "true", "aria-label": `Pagina bewerken: ${path}`, children: [
|
|
534
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: "xicms-ve__shell", role: "dialog", "aria-modal": "true", "aria-label": `Pagina bewerken: ${path}`, children: [
|
|
513
535
|
/* @__PURE__ */ jsxs("header", { className: "xicms-ve__bar", children: [
|
|
514
536
|
/* @__PURE__ */ jsxs("strong", { className: "xicms-ve__title", children: [
|
|
515
537
|
"Bewerken \xB7 ",
|
|
@@ -542,7 +564,7 @@ function VisualEditorInner({ onClose }) {
|
|
|
542
564
|
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: () => setConflict(false), children: "Mijn versie behouden" })
|
|
543
565
|
] }),
|
|
544
566
|
/* @__PURE__ */ jsxs("div", { className: "xicms-ve__body", children: [
|
|
545
|
-
/* @__PURE__ */ jsxs("main", { className: "xicms-ve__canvas", children: [
|
|
567
|
+
/* @__PURE__ */ jsxs("main", { className: "xicms-ve__canvas xicms-root", "data-dark": darkAuto ? "auto" : void 0, style: themeVars, children: [
|
|
546
568
|
status === "loading" && /* @__PURE__ */ jsx("p", { className: "xicms-ve__hint", children: "Laden\u2026" }),
|
|
547
569
|
status === "none" && /* @__PURE__ */ jsxs("div", { className: "xicms-ve__empty", children: [
|
|
548
570
|
/* @__PURE__ */ jsx(
|
|
@@ -561,7 +583,7 @@ function VisualEditorInner({ onClose }) {
|
|
|
561
583
|
const def = registry.get(b._type);
|
|
562
584
|
const Render = def?.Render;
|
|
563
585
|
const safe = (() => {
|
|
564
|
-
const parsed = def?.schema
|
|
586
|
+
const parsed = def?.schema ? safeParse(def.schema, b) : void 0;
|
|
565
587
|
return parsed?.success ? parsed.data : b;
|
|
566
588
|
})();
|
|
567
589
|
const dropClass = dropIndex === i ? " is-drop-before" : dropIndex === i + 1 ? " is-drop-after" : "";
|