@xiwebdesign/xicms-core 7.31.0 → 8.16.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/XiCMSProvider.js +23 -7
- package/dist/XiCMSProvider.js.map +1 -1
- package/dist/admin/AdminApp.js +175 -93
- package/dist/admin/AdminApp.js.map +1 -1
- package/dist/admin/AdminHelp.d.ts +1 -1
- package/dist/admin/AdminHelp.js +44 -36
- package/dist/admin/AdminHelp.js.map +1 -1
- package/dist/admin/CoreVersion.d.ts +6 -3
- package/dist/admin/CoreVersion.js +60 -24
- package/dist/admin/CoreVersion.js.map +1 -1
- package/dist/admin/NewsEditor.d.ts +7 -0
- package/dist/admin/NewsEditor.js +117 -75
- package/dist/admin/NewsEditor.js.map +1 -1
- package/dist/admin/SuperadminPanel.js +1 -1
- package/dist/admin/SuperadminPanel.js.map +1 -1
- package/dist/admin/ZoekPalet.d.ts +15 -0
- package/dist/admin/ZoekPalet.js +123 -0
- package/dist/admin/ZoekPalet.js.map +1 -0
- package/dist/admin/blockEditors/GenericEditor.js +36 -18
- package/dist/admin/blockEditors/GenericEditor.js.map +1 -1
- package/dist/admin/blockEditors/StyleEditor.js +37 -3
- package/dist/admin/blockEditors/StyleEditor.js.map +1 -1
- package/dist/admin/blockEditors/SymbolRefEditor.js +44 -2
- package/dist/admin/blockEditors/SymbolRefEditor.js.map +1 -1
- package/dist/admin/blockEditors/index.js +154 -73
- package/dist/admin/blockEditors/index.js.map +1 -1
- package/dist/admin/customBlocks/CustomBlocksPanel.js +18 -7
- package/dist/admin/customBlocks/CustomBlocksPanel.js.map +1 -1
- package/dist/admin/dashboard/DashboardPanel.js +26 -16
- package/dist/admin/dashboard/DashboardPanel.js.map +1 -1
- package/dist/admin/editors/RichTextEditor.d.ts +4 -3
- package/dist/admin/editors/RichTextEditor.js +19 -60
- package/dist/admin/editors/RichTextEditor.js.map +1 -1
- package/dist/admin/editors/fontSizeExtension.js +7 -1
- package/dist/admin/editors/fontSizeExtension.js.map +1 -1
- package/dist/admin/editors/slashMenu.d.ts +18 -0
- package/dist/admin/editors/slashMenu.js +34 -0
- package/dist/admin/editors/slashMenu.js.map +1 -0
- package/dist/admin/editors/useRijkeTekst.d.ts +48 -0
- package/dist/admin/editors/useRijkeTekst.js +310 -0
- package/dist/admin/editors/useRijkeTekst.js.map +1 -0
- package/dist/admin/forms/FormsPanel.d.ts +11 -2
- package/dist/admin/forms/FormsPanel.js +218 -65
- package/dist/admin/forms/FormsPanel.js.map +1 -1
- package/dist/admin/lib/blokInfo.d.ts +17 -0
- package/dist/admin/lib/blokInfo.js +80 -0
- package/dist/admin/lib/blokInfo.js.map +1 -0
- package/dist/admin/lib/foutNaarMens.d.ts +1 -0
- package/dist/admin/lib/foutNaarMens.js +22 -0
- package/dist/admin/lib/foutNaarMens.js.map +1 -0
- package/dist/admin/lib/gewisteVelden.d.ts +13 -0
- package/dist/admin/lib/gewisteVelden.js +31 -0
- package/dist/admin/lib/gewisteVelden.js.map +1 -0
- package/dist/admin/lib/heroHulp.d.ts +11 -0
- package/dist/admin/lib/heroHulp.js +18 -0
- package/dist/admin/lib/heroHulp.js.map +1 -0
- package/dist/admin/lib/kleur.js +2 -3
- package/dist/admin/lib/kleur.js.map +1 -1
- package/dist/admin/lib/leesbaarheid.d.ts +34 -0
- package/dist/admin/lib/leesbaarheid.js +82 -0
- package/dist/admin/lib/leesbaarheid.js.map +1 -0
- package/dist/admin/lib/lengteAdvies.d.ts +1 -0
- package/dist/admin/lib/lengteAdvies.js +16 -0
- package/dist/admin/lib/lengteAdvies.js.map +1 -0
- package/dist/admin/lib/mediaLijst.d.ts +26 -0
- package/dist/admin/lib/mediaLijst.js +42 -0
- package/dist/admin/lib/mediaLijst.js.map +1 -0
- package/dist/admin/lib/mediaUsage.d.ts +12 -1
- package/dist/admin/lib/mediaUsage.js +43 -33
- package/dist/admin/lib/mediaUsage.js.map +1 -1
- package/dist/admin/lib/menuHulp.d.ts +16 -0
- package/dist/admin/lib/menuHulp.js +41 -0
- package/dist/admin/lib/menuHulp.js.map +1 -0
- package/dist/admin/lib/onopgeslagen.d.ts +10 -0
- package/dist/admin/lib/onopgeslagen.js +35 -0
- package/dist/admin/lib/onopgeslagen.js.map +1 -0
- package/dist/admin/lib/pagesClient.d.ts +55 -2
- package/dist/admin/lib/pagesClient.js +126 -28
- package/dist/admin/lib/pagesClient.js.map +1 -1
- package/dist/admin/lib/paginaGebruik.d.ts +56 -0
- package/dist/admin/lib/paginaGebruik.js +109 -0
- package/dist/admin/lib/paginaGebruik.js.map +1 -0
- package/dist/admin/lib/publicatieCheck.d.ts +25 -0
- package/dist/admin/lib/publicatieCheck.js +114 -0
- package/dist/admin/lib/publicatieCheck.js.map +1 -0
- package/dist/admin/lib/scrollNaarDetail.d.ts +6 -0
- package/dist/admin/lib/scrollNaarDetail.js +20 -0
- package/dist/admin/lib/scrollNaarDetail.js.map +1 -0
- package/dist/admin/lib/symbolsClient.d.ts +10 -0
- package/dist/admin/lib/symbolsClient.js +14 -1
- package/dist/admin/lib/symbolsClient.js.map +1 -1
- package/dist/admin/lib/tekstVeld.d.ts +8 -0
- package/dist/admin/lib/tekstVeld.js +10 -0
- package/dist/admin/lib/tekstVeld.js.map +1 -0
- package/dist/admin/lib/useIsSuperadmin.d.ts +2 -0
- package/dist/admin/lib/useIsSuperadmin.js +13 -0
- package/dist/admin/lib/useIsSuperadmin.js.map +1 -0
- package/dist/admin/lib/veldTaal.d.ts +14 -0
- package/dist/admin/lib/veldTaal.js +248 -0
- package/dist/admin/lib/veldTaal.js.map +1 -0
- package/dist/admin/lib/versieVergelijk.d.ts +17 -0
- package/dist/admin/lib/versieVergelijk.js +24 -0
- package/dist/admin/lib/versieVergelijk.js.map +1 -0
- package/dist/admin/lib/zodFields.js +22 -4
- package/dist/admin/lib/zodFields.js.map +1 -1
- package/dist/admin/lib/zodFout.d.ts +9 -0
- package/dist/admin/lib/zodFout.js +63 -0
- package/dist/admin/lib/zodFout.js.map +1 -0
- package/dist/admin/media/MediaManager.js +162 -32
- package/dist/admin/media/MediaManager.js.map +1 -1
- package/dist/admin/media/MediaPicker.d.ts +3 -0
- package/dist/admin/media/MediaPicker.js +84 -31
- package/dist/admin/media/MediaPicker.js.map +1 -1
- package/dist/admin/menu/MenuPanel.js +144 -83
- package/dist/admin/menu/MenuPanel.js.map +1 -1
- package/dist/admin/navContext.d.ts +3 -0
- package/dist/admin/navContext.js +13 -1
- package/dist/admin/navContext.js.map +1 -1
- package/dist/admin/pages/PageEditor.js +146 -30
- package/dist/admin/pages/PageEditor.js.map +1 -1
- package/dist/admin/pages/PagesPanel.js +215 -61
- package/dist/admin/pages/PagesPanel.js.map +1 -1
- package/dist/admin/pages/StarterKiezer.d.ts +12 -0
- package/dist/admin/pages/StarterKiezer.js +113 -0
- package/dist/admin/pages/StarterKiezer.js.map +1 -0
- package/dist/admin/panelRegistry.d.ts +1 -1
- package/dist/admin/panelRegistry.js +2 -1
- package/dist/admin/panelRegistry.js.map +1 -1
- package/dist/admin/patterns/PatternInserter.js +1 -1
- package/dist/admin/patterns/PatternInserter.js.map +1 -1
- package/dist/admin/settings/BedrijfInstellingen.d.ts +20 -0
- package/dist/admin/settings/BedrijfInstellingen.js +159 -0
- package/dist/admin/settings/BedrijfInstellingen.js.map +1 -0
- package/dist/admin/settings/MailTemplates.js +5 -4
- package/dist/admin/settings/MailTemplates.js.map +1 -1
- package/dist/admin/settings/SettingsPanel.js +120 -78
- package/dist/admin/settings/SettingsPanel.js.map +1 -1
- package/dist/admin/settings/SnapshotsCard.js +4 -4
- package/dist/admin/settings/SnapshotsCard.js.map +1 -1
- package/dist/admin/settings/VorigeTerugzetten.d.ts +15 -0
- package/dist/admin/settings/VorigeTerugzetten.js +89 -0
- package/dist/admin/settings/VorigeTerugzetten.js.map +1 -0
- package/dist/admin/shop/CategoriesTab.js +6 -4
- package/dist/admin/shop/CategoriesTab.js.map +1 -1
- package/dist/admin/shop/DiscountsTab.js +4 -2
- package/dist/admin/shop/DiscountsTab.js.map +1 -1
- package/dist/admin/shop/OrdersTab.js +57 -19
- package/dist/admin/shop/OrdersTab.js.map +1 -1
- package/dist/admin/shop/ProductPaneel.js +2 -1
- package/dist/admin/shop/ProductPaneel.js.map +1 -1
- package/dist/admin/shop/ProductsTab.js +40 -19
- package/dist/admin/shop/ProductsTab.js.map +1 -1
- package/dist/admin/shop/ShopPanel.js +13 -1
- package/dist/admin/shop/ShopPanel.js.map +1 -1
- package/dist/admin/shop/ShopSettingsTab.js +56 -17
- package/dist/admin/shop/ShopSettingsTab.js.map +1 -1
- package/dist/admin/shop/productClient.js +7 -3
- package/dist/admin/shop/productClient.js.map +1 -1
- package/dist/admin/stats/NietGevonden.d.ts +10 -0
- package/dist/admin/stats/NietGevonden.js +78 -0
- package/dist/admin/stats/NietGevonden.js.map +1 -0
- package/dist/admin/stats/StatsPanel.js +6 -1
- package/dist/admin/stats/StatsPanel.js.map +1 -1
- package/dist/admin/stats/lib.d.ts +2 -0
- package/dist/admin/stats/lib.js.map +1 -1
- package/dist/admin/ui/ConfirmDialog.js +10 -1
- package/dist/admin/ui/ConfirmDialog.js.map +1 -1
- package/dist/admin/ui/Icon.d.ts +34 -0
- package/dist/admin/ui/Icon.js +44 -0
- package/dist/admin/ui/Icon.js.map +1 -0
- package/dist/admin/ui/ImageField.d.ts +15 -0
- package/dist/admin/ui/ImageField.js +67 -0
- package/dist/admin/ui/ImageField.js.map +1 -0
- package/dist/admin/ui/KleurVeld.d.ts +25 -0
- package/dist/admin/ui/KleurVeld.js +76 -0
- package/dist/admin/ui/KleurVeld.js.map +1 -0
- package/dist/admin/ui/LaadStaat.d.ts +21 -0
- package/dist/admin/ui/LaadStaat.js +43 -0
- package/dist/admin/ui/LaadStaat.js.map +1 -0
- package/dist/admin/ui/LeesbaarheidPaneel.d.ts +10 -0
- package/dist/admin/ui/LeesbaarheidPaneel.js +68 -0
- package/dist/admin/ui/LeesbaarheidPaneel.js.map +1 -0
- package/dist/admin/ui/LinkDialog.d.ts +22 -0
- package/dist/admin/ui/LinkDialog.js +131 -0
- package/dist/admin/ui/LinkDialog.js.map +1 -0
- package/dist/admin/ui/LinkVeld.d.ts +14 -0
- package/dist/admin/ui/LinkVeld.js +49 -0
- package/dist/admin/ui/LinkVeld.js.map +1 -0
- package/dist/admin/ui/PreviewLinkResultaat.d.ts +14 -0
- package/dist/admin/ui/PreviewLinkResultaat.js +52 -0
- package/dist/admin/ui/PreviewLinkResultaat.js.map +1 -0
- package/dist/admin/ui/charts.js +5 -5
- package/dist/admin/ui/charts.js.map +1 -1
- package/dist/admin/ui/primitives.d.ts +16 -6
- package/dist/admin/ui/primitives.js +98 -26
- package/dist/admin/ui/primitives.js.map +1 -1
- package/dist/admin/ui/select.js +5 -2
- package/dist/admin/ui/select.js.map +1 -1
- package/dist/admin/ui/switch.d.ts +3 -1
- package/dist/admin/ui/switch.js +6 -3
- package/dist/admin/ui/switch.js.map +1 -1
- package/dist/admin/ui/toast.d.ts +2 -1
- package/dist/admin/ui/toast.js +17 -11
- package/dist/admin/ui/toast.js.map +1 -1
- package/dist/admin/visual/BlokKiezer.d.ts +34 -0
- package/dist/admin/visual/BlokKiezer.js +225 -0
- package/dist/admin/visual/BlokKiezer.js.map +1 -0
- package/dist/admin/visual/InlineGereedschap.d.ts +52 -0
- package/dist/admin/visual/InlineGereedschap.js +356 -0
- package/dist/admin/visual/InlineGereedschap.js.map +1 -0
- package/dist/admin/visual/InlineRijkeTekst.d.ts +23 -0
- package/dist/admin/visual/InlineRijkeTekst.js +152 -0
- package/dist/admin/visual/InlineRijkeTekst.js.map +1 -0
- package/dist/admin/visual/VisualEditor.js +273 -125
- package/dist/admin/visual/VisualEditor.js.map +1 -1
- package/dist/admin.css +1 -1
- package/dist/auth/AuthProvider.js +1 -0
- package/dist/auth/AuthProvider.js.map +1 -1
- package/dist/bedrijf/bedrijf.d.ts +44 -0
- package/dist/bedrijf/bedrijf.js +125 -0
- package/dist/bedrijf/bedrijf.js.map +1 -0
- package/dist/blocks/BlockRenderer.js +11 -1
- package/dist/blocks/BlockRenderer.js.map +1 -1
- package/dist/blocks/blockStyle.d.ts +7 -0
- package/dist/blocks/blockStyle.js +16 -3
- package/dist/blocks/blockStyle.js.map +1 -1
- package/dist/blocks/builtinSchemas.js +6 -0
- package/dist/blocks/builtinSchemas.js.map +1 -1
- package/dist/blocks/builtins/AgendaRender.d.ts +22 -0
- package/dist/blocks/builtins/AgendaRender.js +69 -9
- package/dist/blocks/builtins/AgendaRender.js.map +1 -1
- package/dist/blocks/builtins/Availability.d.ts +1 -0
- package/dist/blocks/builtins/Availability.js +23 -0
- package/dist/blocks/builtins/Availability.js.map +1 -0
- package/dist/blocks/builtins/AvailabilityRender.d.ts +12 -0
- package/dist/blocks/builtins/AvailabilityRender.js +105 -0
- package/dist/blocks/builtins/AvailabilityRender.js.map +1 -0
- package/dist/blocks/builtins/BeforeAfterRender.js +4 -3
- package/dist/blocks/builtins/BeforeAfterRender.js.map +1 -1
- package/dist/blocks/builtins/Booking.js +1 -1
- package/dist/blocks/builtins/Booking.js.map +1 -1
- package/dist/blocks/builtins/BreadcrumbsRender.d.ts +4 -3
- package/dist/blocks/builtins/BreadcrumbsRender.js +14 -8
- package/dist/blocks/builtins/BreadcrumbsRender.js.map +1 -1
- package/dist/blocks/builtins/ColumnsRender.d.ts +1 -1
- package/dist/blocks/builtins/ColumnsRender.js +3 -1
- package/dist/blocks/builtins/ColumnsRender.js.map +1 -1
- package/dist/blocks/builtins/Contact.js +1 -1
- package/dist/blocks/builtins/Contact.js.map +1 -1
- package/dist/blocks/builtins/ContactRender.d.ts +1 -1
- package/dist/blocks/builtins/ContactRender.js +37 -8
- package/dist/blocks/builtins/ContactRender.js.map +1 -1
- package/dist/blocks/builtins/Cta.js +1 -1
- package/dist/blocks/builtins/Cta.js.map +1 -1
- package/dist/blocks/builtins/CtaRender.d.ts +1 -1
- package/dist/blocks/builtins/CtaRender.js +5 -4
- package/dist/blocks/builtins/CtaRender.js.map +1 -1
- package/dist/blocks/builtins/Embed.js +1 -1
- package/dist/blocks/builtins/Embed.js.map +1 -1
- package/dist/blocks/builtins/FormBlock.js +1 -0
- package/dist/blocks/builtins/FormBlock.js.map +1 -1
- package/dist/blocks/builtins/FormBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/FormBlockRender.js +88 -16
- package/dist/blocks/builtins/FormBlockRender.js.map +1 -1
- package/dist/blocks/builtins/GalleryRender.js +3 -2
- package/dist/blocks/builtins/GalleryRender.js.map +1 -1
- package/dist/blocks/builtins/Hero.js +1 -1
- package/dist/blocks/builtins/Hero.js.map +1 -1
- package/dist/blocks/builtins/HeroRender.js +7 -3
- package/dist/blocks/builtins/HeroRender.js.map +1 -1
- package/dist/blocks/builtins/OpenNowBadge.d.ts +4 -2
- package/dist/blocks/builtins/OpenNowBadge.js +6 -6
- package/dist/blocks/builtins/OpenNowBadge.js.map +1 -1
- package/dist/blocks/builtins/OpeningHoursRender.d.ts +8 -2
- package/dist/blocks/builtins/OpeningHoursRender.js +27 -6
- package/dist/blocks/builtins/OpeningHoursRender.js.map +1 -1
- package/dist/blocks/builtins/PriceList.d.ts +1 -0
- package/dist/blocks/builtins/PriceList.js +25 -0
- package/dist/blocks/builtins/PriceList.js.map +1 -0
- package/dist/blocks/builtins/PriceListRender.d.ts +17 -0
- package/dist/blocks/builtins/PriceListRender.js +87 -0
- package/dist/blocks/builtins/PriceListRender.js.map +1 -0
- package/dist/blocks/builtins/RichTextBlockRender.js +6 -1
- package/dist/blocks/builtins/RichTextBlockRender.js.map +1 -1
- package/dist/blocks/builtins/SectionHeading.d.ts +1 -0
- package/dist/blocks/builtins/SectionHeading.js +14 -0
- package/dist/blocks/builtins/SectionHeading.js.map +1 -0
- package/dist/blocks/builtins/SectionHeadingRender.d.ts +7 -0
- package/dist/blocks/builtins/SectionHeadingRender.js +14 -0
- package/dist/blocks/builtins/SectionHeadingRender.js.map +1 -0
- package/dist/blocks/builtins/SliderRender.js +3 -2
- package/dist/blocks/builtins/SliderRender.js.map +1 -1
- package/dist/blocks/builtins/SymbolRef.js +1 -1
- package/dist/blocks/builtins/SymbolRef.js.map +1 -1
- package/dist/blocks/builtins/TeamRender.js +6 -1
- package/dist/blocks/builtins/TeamRender.js.map +1 -1
- package/dist/blocks/builtins/Testimonials.js +3 -1
- package/dist/blocks/builtins/Testimonials.js.map +1 -1
- package/dist/blocks/builtins/TestimonialsRender.js +4 -0
- package/dist/blocks/builtins/TestimonialsRender.js.map +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.d.ts +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.js +3 -1
- package/dist/blocks/builtins/WhatsappChatRender.js.map +1 -1
- package/dist/blocks/builtins/Widgets.js +2 -2
- package/dist/blocks/builtins/Widgets.js.map +1 -1
- package/dist/blocks/builtins/WidgetsRender.js +3 -1
- package/dist/blocks/builtins/WidgetsRender.js.map +1 -1
- package/dist/blocks/builtins/consentEmbed.js +26 -9
- package/dist/blocks/builtins/consentEmbed.js.map +1 -1
- package/dist/blocks/builtins/index.d.ts +3 -0
- package/dist/blocks/builtins/index.js +6 -0
- package/dist/blocks/builtins/index.js.map +1 -1
- package/dist/blocks/builtins/lib/autoComplete.d.ts +7 -0
- package/dist/blocks/builtins/lib/autoComplete.js +20 -0
- package/dist/blocks/builtins/lib/autoComplete.js.map +1 -0
- package/dist/blocks/builtins/lib/bookingUrl.d.ts +2 -2
- package/dist/blocks/builtins/lib/bookingUrl.js +1 -1
- package/dist/blocks/builtins/lib/bookingUrl.js.map +1 -1
- package/dist/blocks/builtins/lib/ical.d.ts +24 -0
- package/dist/blocks/builtins/lib/ical.js +82 -0
- package/dist/blocks/builtins/lib/ical.js.map +1 -0
- package/dist/blocks/builtins/lib/vandaag.d.ts +8 -0
- package/dist/blocks/builtins/lib/vandaag.js +22 -0
- package/dist/blocks/builtins/lib/vandaag.js.map +1 -0
- package/dist/blocks/registry.d.ts +6 -0
- package/dist/blocks/registry.js.map +1 -1
- package/dist/blocks/ui/index.js +1 -0
- package/dist/blocks/ui/index.js.map +1 -1
- package/dist/components/EditBar.js +2 -4
- package/dist/components/EditBar.js.map +1 -1
- package/dist/components/News.js +26 -18
- package/dist/components/News.js.map +1 -1
- package/dist/components/PageView.d.ts +7 -1
- package/dist/components/PageView.js +17 -0
- package/dist/components/PageView.js.map +1 -1
- package/dist/components/ResponsiveImage.js +18 -20
- package/dist/components/ResponsiveImage.js.map +1 -1
- package/dist/components/onderOffset.d.ts +13 -0
- package/dist/components/onderOffset.js +74 -0
- package/dist/components/onderOffset.js.map +1 -0
- package/dist/components/site/Bedrijfsnummers.d.ts +9 -0
- package/dist/components/site/Bedrijfsnummers.js +12 -0
- package/dist/components/site/Bedrijfsnummers.js.map +1 -0
- package/dist/components/site/SiteFooter.d.ts +6 -1
- package/dist/components/site/SiteFooter.js +62 -9
- package/dist/components/site/SiteFooter.js.map +1 -1
- package/dist/components/site/SiteHeader.d.ts +15 -0
- package/dist/components/site/SiteHeader.js +70 -0
- package/dist/components/site/SiteHeader.js.map +1 -0
- package/dist/components/site/SiteNav.d.ts +2 -0
- package/dist/components/site/SiteNav.js +29 -5
- package/dist/components/site/SiteNav.js.map +1 -1
- package/dist/demo/DemoStudio.js +2 -2
- package/dist/demo/DemoStudio.js.map +1 -1
- package/dist/demo/demoStore.d.ts +13 -0
- package/dist/demo/demoStore.js +36 -0
- package/dist/demo/demoStore.js.map +1 -1
- package/dist/editor/EditorProvider.js +15 -4
- package/dist/editor/EditorProvider.js.map +1 -1
- package/dist/firebase/functionsClient.js +5 -1
- package/dist/firebase/functionsClient.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/media/ImageContext.d.ts +17 -0
- package/dist/media/ImageContext.js +65 -20
- package/dist/media/ImageContext.js.map +1 -1
- package/dist/media/altInHtml.d.ts +9 -0
- package/dist/media/altInHtml.js +17 -0
- package/dist/media/altInHtml.js.map +1 -0
- package/dist/media/srcset.d.ts +12 -0
- package/dist/media/srcset.js +13 -0
- package/dist/media/srcset.js.map +1 -0
- package/dist/modules/builtins.d.ts +1 -0
- package/dist/modules/builtins.js +22 -9
- package/dist/modules/builtins.js.map +1 -1
- package/dist/modules/consent/ConsentBanner.d.ts +5 -0
- package/dist/modules/consent/ConsentBanner.js +8 -7
- package/dist/modules/consent/ConsentBanner.js.map +1 -1
- package/dist/modules/consent/standaard.d.ts +12 -0
- package/dist/modules/consent/standaard.js +10 -0
- package/dist/modules/consent/standaard.js.map +1 -0
- package/dist/modules/consent/useConsent.d.ts +4 -0
- package/dist/modules/consent/useConsent.js +30 -1
- package/dist/modules/consent/useConsent.js.map +1 -1
- package/dist/modules/shop/blocks/Cart.js +5 -3
- package/dist/modules/shop/blocks/Cart.js.map +1 -1
- package/dist/modules/shop/blocks/Checkout.js +56 -35
- package/dist/modules/shop/blocks/Checkout.js.map +1 -1
- package/dist/modules/shop/blocks/Donation.js +4 -4
- package/dist/modules/shop/blocks/Donation.js.map +1 -1
- package/dist/modules/shop/blocks/ProductDetail.js +19 -3
- package/dist/modules/shop/blocks/ProductDetail.js.map +1 -1
- package/dist/modules/shop/blocks/ProductGrid.d.ts +3 -1
- package/dist/modules/shop/blocks/ProductGrid.js +8 -4
- package/dist/modules/shop/blocks/ProductGrid.js.map +1 -1
- package/dist/modules/shop/blocks/ShopCategories.js +4 -3
- package/dist/modules/shop/blocks/ShopCategories.js.map +1 -1
- package/dist/modules/shop/lib.d.ts +4 -0
- package/dist/modules/shop/lib.js +14 -0
- package/dist/modules/shop/lib.js.map +1 -1
- package/dist/modules/shop/settings.d.ts +3 -0
- package/dist/modules/shop/settings.js +14 -0
- package/dist/modules/shop/settings.js.map +1 -1
- package/dist/modules/shop/strings.d.ts +4 -0
- package/dist/modules/shop/strings.js +8 -0
- package/dist/modules/shop/strings.js.map +1 -1
- package/dist/next/envCheck.d.ts +42 -0
- package/dist/next/envCheck.js +106 -0
- package/dist/next/envCheck.js.map +1 -0
- package/dist/next/index.cjs +185 -2
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.js +8 -1
- package/dist/next/index.js.map +1 -1
- package/dist/next/securityHeaders.d.ts +36 -0
- package/dist/next/securityHeaders.js +74 -0
- package/dist/next/securityHeaders.js.map +1 -0
- package/dist/patterns/builtins.d.ts +7 -0
- package/dist/patterns/builtins.js +138 -3
- package/dist/patterns/builtins.js.map +1 -1
- package/dist/releaseNotes.js +148 -0
- package/dist/releaseNotes.js.map +1 -1
- package/dist/render/PublishedPage.d.ts +2 -1
- package/dist/render/PublishedPage.js +10 -4
- package/dist/render/PublishedPage.js.map +1 -1
- package/dist/schema/blocks.d.ts +473 -0
- package/dist/schema/blocks.js +105 -5
- package/dist/schema/blocks.js.map +1 -1
- package/dist/schema/business.d.ts +118 -0
- package/dist/schema/business.js +75 -0
- package/dist/schema/business.js.map +1 -0
- package/dist/schema/fields.d.ts +2 -1
- package/dist/schema/fields.js.map +1 -1
- package/dist/schema/forms.d.ts +18 -0
- package/dist/schema/forms.js +18 -3
- package/dist/schema/forms.js.map +1 -1
- package/dist/schema/mail.d.ts +10 -0
- package/dist/schema/mail.js +7 -0
- package/dist/schema/mail.js.map +1 -1
- package/dist/schema/settings.d.ts +103 -0
- package/dist/schema/settings.js +24 -3
- package/dist/schema/settings.js.map +1 -1
- package/dist/schema/shop.d.ts +2 -0
- package/dist/schema/shop.js +4 -0
- package/dist/schema/shop.js.map +1 -1
- package/dist/schema/shopGeld.d.ts +1 -0
- package/dist/schema/shopGeld.js +1 -0
- package/dist/schema/shopGeld.js.map +1 -1
- package/dist/schema/siteConfig.d.ts +69 -1
- package/dist/schema/siteConfig.js +7 -2
- package/dist/schema/siteConfig.js.map +1 -1
- package/dist/server/blockData.d.ts +1 -1
- package/dist/server/blockData.js +74 -18
- package/dist/server/blockData.js.map +1 -1
- package/dist/server/cspRapport.d.ts +20 -0
- package/dist/server/cspRapport.js +56 -0
- package/dist/server/cspRapport.js.map +1 -0
- package/dist/server/fonts.d.ts +3 -0
- package/dist/server/fonts.js +39 -0
- package/dist/server/fonts.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/sanitize.js +2 -0
- package/dist/server/sanitize.js.map +1 -1
- package/dist/settings/useSiteSettings.js +4 -1
- package/dist/settings/useSiteSettings.js.map +1 -1
- package/dist/starters/starters.d.ts +69 -0
- package/dist/starters/starters.js +171 -0
- package/dist/starters/starters.js.map +1 -0
- package/dist/styles.css +1181 -212
- package/dist/theme/color.d.ts +10 -0
- package/dist/theme/color.js +17 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/fontFallback.d.ts +23 -0
- package/dist/theme/fontFallback.js +58 -0
- package/dist/theme/fontFallback.js.map +1 -0
- package/dist/theme/fonts.d.ts +11 -0
- package/dist/theme/fonts.js +16 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/version.js +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { Dialog, DialogContent } from "../ui/dialog.js";
|
|
5
|
+
import { Button } from "../ui/primitives.js";
|
|
6
|
+
import { useRegistry } from "../../blocks/context.js";
|
|
7
|
+
import { builtinPatterns, collectPatternTypes, instantiatePattern } from "../../patterns/index.js";
|
|
8
|
+
import { GROEPEN, blokInfo } from "../lib/blokInfo.js";
|
|
9
|
+
function BlokKiezer({
|
|
10
|
+
open,
|
|
11
|
+
onOpenChange,
|
|
12
|
+
onBlok,
|
|
13
|
+
onSectie,
|
|
14
|
+
patterns = builtinPatterns
|
|
15
|
+
}) {
|
|
16
|
+
const registry = useRegistry();
|
|
17
|
+
const [zoek, setZoek] = useState("");
|
|
18
|
+
const [tab, setTab] = useState("blokken");
|
|
19
|
+
const zoekRef = useRef(null);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!open) return;
|
|
22
|
+
setZoek("");
|
|
23
|
+
setTab("blokken");
|
|
24
|
+
const t = setTimeout(() => zoekRef.current?.focus(), 50);
|
|
25
|
+
return () => clearTimeout(t);
|
|
26
|
+
}, [open]);
|
|
27
|
+
const perGroep = useMemo(() => {
|
|
28
|
+
const q = zoek.trim().toLowerCase();
|
|
29
|
+
const m = /* @__PURE__ */ new Map();
|
|
30
|
+
for (const def of registry.values()) {
|
|
31
|
+
const info = blokInfo(def.type, def.category);
|
|
32
|
+
const item = { type: def.type, label: def.label, icon: def.icon, uitleg: info.uitleg };
|
|
33
|
+
if (q && !`${item.label} ${item.uitleg ?? ""}`.toLowerCase().includes(q)) continue;
|
|
34
|
+
m.set(info.groep, [...m.get(info.groep) ?? [], item]);
|
|
35
|
+
}
|
|
36
|
+
return GROEPEN.map((g) => ({ ...g, items: m.get(g.id) ?? [] })).filter((g) => g.items.length > 0);
|
|
37
|
+
}, [registry, zoek]);
|
|
38
|
+
const secties = useMemo(() => {
|
|
39
|
+
const q = zoek.trim().toLowerCase();
|
|
40
|
+
return patterns.filter((p) => collectPatternTypes(p).every((t) => registry.get(t))).filter((p) => !q || `${p.label} ${p.description ?? ""} ${p.category}`.toLowerCase().includes(q));
|
|
41
|
+
}, [patterns, registry, zoek]);
|
|
42
|
+
if (!open) return null;
|
|
43
|
+
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { title: "Toevoegen", width: "min(94vw, 46rem)", children: /* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
45
|
+
/* @__PURE__ */ jsx("div", { role: "tablist", "aria-label": "Wat toevoegen", className: "inline-flex rounded-lg bg-slate-100 p-0.5", children: ["blokken", "secties"].map((t) => /* @__PURE__ */ jsx(
|
|
46
|
+
"button",
|
|
47
|
+
{
|
|
48
|
+
type: "button",
|
|
49
|
+
role: "tab",
|
|
50
|
+
"aria-selected": tab === t,
|
|
51
|
+
onClick: () => setTab(t),
|
|
52
|
+
className: "xicms-admin-btn rounded-md px-3 py-1.5 text-sm font-medium text-slate-600 aria-[selected=true]:bg-white aria-[selected=true]:text-slate-900 aria-[selected=true]:shadow-sm",
|
|
53
|
+
children: t === "blokken" ? "Losse blokken" : "Kant-en-klare secties"
|
|
54
|
+
},
|
|
55
|
+
t
|
|
56
|
+
)) }),
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
"input",
|
|
59
|
+
{
|
|
60
|
+
ref: zoekRef,
|
|
61
|
+
type: "search",
|
|
62
|
+
value: zoek,
|
|
63
|
+
onChange: (e) => setZoek(e.target.value),
|
|
64
|
+
placeholder: "Zoek, bv. foto, prijzen, team\u2026",
|
|
65
|
+
"aria-label": "Zoek een blok",
|
|
66
|
+
className: "min-w-0 flex-1 rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm"
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] }),
|
|
70
|
+
/* @__PURE__ */ jsxs("div", { className: "grid max-h-[60vh] gap-4 overflow-y-auto pr-1", children: [
|
|
71
|
+
tab === "blokken" && (perGroep.length === 0 ? /* @__PURE__ */ jsxs("p", { className: "py-6 text-center text-sm text-slate-500", children: [
|
|
72
|
+
"Niets gevonden voor \u201C",
|
|
73
|
+
zoek,
|
|
74
|
+
"\u201D."
|
|
75
|
+
] }) : perGroep.map((g) => /* @__PURE__ */ jsxs("section", { children: [
|
|
76
|
+
/* @__PURE__ */ jsx("h4", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-slate-500", children: g.label }),
|
|
77
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-1.5 sm:grid-cols-2", children: g.items.map((b) => /* @__PURE__ */ jsxs(
|
|
78
|
+
"button",
|
|
79
|
+
{
|
|
80
|
+
type: "button",
|
|
81
|
+
onClick: () => {
|
|
82
|
+
onBlok(b.type);
|
|
83
|
+
onOpenChange(false);
|
|
84
|
+
},
|
|
85
|
+
className: "xicms-admin-btn flex items-start gap-3 rounded-lg border border-slate-200 bg-white p-2.5 text-left hover:border-slate-400 hover:bg-slate-50",
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ jsx("span", { className: "grid h-9 w-9 shrink-0 place-items-center rounded-md bg-slate-100 text-lg", "aria-hidden": true, children: b.icon ?? "\u25AB" }),
|
|
88
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
|
|
89
|
+
/* @__PURE__ */ jsx("span", { className: "block text-sm font-medium text-slate-900", children: b.label }),
|
|
90
|
+
b.uitleg && /* @__PURE__ */ jsx("span", { className: "block text-xs leading-snug text-slate-500", children: b.uitleg })
|
|
91
|
+
] })
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
b.type
|
|
95
|
+
)) })
|
|
96
|
+
] }, g.id))),
|
|
97
|
+
tab === "secties" && (secties.length === 0 ? /* @__PURE__ */ jsx("p", { className: "py-6 text-center text-sm text-slate-500", children: "Geen secties gevonden." }) : /* @__PURE__ */ jsx("div", { className: "grid gap-1.5 sm:grid-cols-2", children: secties.map((p) => /* @__PURE__ */ jsxs(
|
|
98
|
+
"button",
|
|
99
|
+
{
|
|
100
|
+
type: "button",
|
|
101
|
+
onClick: () => {
|
|
102
|
+
onSectie(instantiatePattern(p));
|
|
103
|
+
onOpenChange(false);
|
|
104
|
+
},
|
|
105
|
+
className: "xicms-admin-btn rounded-lg border border-slate-200 bg-white p-2.5 text-left hover:border-slate-400 hover:bg-slate-50",
|
|
106
|
+
children: [
|
|
107
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center justify-between gap-2", children: [
|
|
108
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-slate-900", children: p.label }),
|
|
109
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm opacity-70", "aria-hidden": true, children: p.blocks.slice(0, 5).map((b, i) => /* @__PURE__ */ jsx("span", { children: registry.get(b._type)?.icon ?? "\u{1F9E9}" }, i)) })
|
|
110
|
+
] }),
|
|
111
|
+
/* @__PURE__ */ jsx("span", { className: "block text-xs text-slate-500", children: p.description ?? p.category })
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
p.id
|
|
115
|
+
)) }))
|
|
116
|
+
] }),
|
|
117
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: () => onOpenChange(false), children: "Sluiten" }) })
|
|
118
|
+
] }) }) });
|
|
119
|
+
}
|
|
120
|
+
function TussenPlus({ sleutels, onKies }) {
|
|
121
|
+
const [plek, setPlek] = useState(null);
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
const set = new Set(sleutels);
|
|
124
|
+
const meet = (el) => {
|
|
125
|
+
let r = el.getBoundingClientRect();
|
|
126
|
+
if (r.width === 0 && r.height === 0) {
|
|
127
|
+
const kids = Array.from(el.children).map((k) => k.getBoundingClientRect()).filter((k) => k.width || k.height);
|
|
128
|
+
if (!kids.length) return null;
|
|
129
|
+
const left = Math.min(...kids.map((k) => k.left));
|
|
130
|
+
const right = Math.max(...kids.map((k) => k.right));
|
|
131
|
+
const bottom = Math.max(...kids.map((k) => k.bottom));
|
|
132
|
+
r = { left, right, bottom, width: right - left };
|
|
133
|
+
}
|
|
134
|
+
return { top: r.bottom, left: r.left + r.width / 2 };
|
|
135
|
+
};
|
|
136
|
+
const opOver = (e) => {
|
|
137
|
+
const doel = e.target;
|
|
138
|
+
if (doel?.closest?.(".xicms-ve-tussenplus")) return;
|
|
139
|
+
let blok = doel?.closest?.("[data-xicms-block]") ?? null;
|
|
140
|
+
while (blok && !set.has(blok.dataset.xicmsBlock ?? "")) blok = blok.parentElement?.closest("[data-xicms-block]") ?? null;
|
|
141
|
+
if (!blok) return setPlek(null);
|
|
142
|
+
const p = meet(blok);
|
|
143
|
+
if (!p || p.top > window.innerHeight - 70) return setPlek(null);
|
|
144
|
+
const key = blok.dataset.xicmsBlock;
|
|
145
|
+
setPlek((v) => v && v.key === key && v.top === p.top ? v : { key, ...p });
|
|
146
|
+
};
|
|
147
|
+
const opScroll = () => setPlek(null);
|
|
148
|
+
document.addEventListener("mouseover", opOver, true);
|
|
149
|
+
window.addEventListener("scroll", opScroll, { capture: true, passive: true });
|
|
150
|
+
return () => {
|
|
151
|
+
document.removeEventListener("mouseover", opOver, true);
|
|
152
|
+
window.removeEventListener("scroll", opScroll, { capture: true });
|
|
153
|
+
};
|
|
154
|
+
}, [sleutels]);
|
|
155
|
+
if (!plek) return null;
|
|
156
|
+
return /* @__PURE__ */ jsx(
|
|
157
|
+
"button",
|
|
158
|
+
{
|
|
159
|
+
type: "button",
|
|
160
|
+
className: "xicms-ve-tussenplus",
|
|
161
|
+
style: { top: plek.top, left: plek.left },
|
|
162
|
+
title: "Hier een blok of sectie toevoegen",
|
|
163
|
+
"aria-label": "Hier een blok of sectie toevoegen",
|
|
164
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
165
|
+
onClick: () => onKies(plek.key),
|
|
166
|
+
children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "+" })
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
function omtrek(el) {
|
|
171
|
+
let r = el.getBoundingClientRect();
|
|
172
|
+
if (r.width === 0 && r.height === 0) {
|
|
173
|
+
const kids = Array.from(el.children).map((k) => k.getBoundingClientRect()).filter((k) => k.width || k.height);
|
|
174
|
+
if (!kids.length) return null;
|
|
175
|
+
const left = Math.min(...kids.map((k) => k.left));
|
|
176
|
+
const top = Math.min(...kids.map((k) => k.top));
|
|
177
|
+
r = { left, top, width: Math.max(...kids.map((k) => k.right)) - left, height: Math.max(...kids.map((k) => k.bottom)) - top };
|
|
178
|
+
}
|
|
179
|
+
return { top: r.top, left: r.left, width: r.width, height: r.height };
|
|
180
|
+
}
|
|
181
|
+
function BlokKader({ sleutels, gekozen, labelVoor }) {
|
|
182
|
+
const [aangewezen, setAangewezen] = useState(null);
|
|
183
|
+
const [, setTik] = useState(0);
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
const set = new Set(sleutels);
|
|
186
|
+
const opOver = (e) => {
|
|
187
|
+
const doel = e.target;
|
|
188
|
+
if (doel?.closest?.("[data-xicms-tooling], .xicms-ve-snel, .xicms-ve-item, .xicms-ve-blokknoppen, .xicms-ve-pencil, .xicms-ve-tussenplus")) return;
|
|
189
|
+
let blok = doel?.closest?.("[data-xicms-block]") ?? null;
|
|
190
|
+
while (blok && !set.has(blok.dataset.xicmsBlock ?? "")) blok = blok.parentElement?.closest("[data-xicms-block]") ?? null;
|
|
191
|
+
setAangewezen(blok?.dataset.xicmsBlock ?? null);
|
|
192
|
+
};
|
|
193
|
+
let frame = 0;
|
|
194
|
+
const her = () => {
|
|
195
|
+
cancelAnimationFrame(frame);
|
|
196
|
+
frame = requestAnimationFrame(() => setTik((n) => n + 1));
|
|
197
|
+
};
|
|
198
|
+
document.addEventListener("mouseover", opOver, true);
|
|
199
|
+
window.addEventListener("scroll", her, { capture: true, passive: true });
|
|
200
|
+
window.addEventListener("resize", her);
|
|
201
|
+
return () => {
|
|
202
|
+
cancelAnimationFrame(frame);
|
|
203
|
+
document.removeEventListener("mouseover", opOver, true);
|
|
204
|
+
window.removeEventListener("scroll", her, { capture: true });
|
|
205
|
+
window.removeEventListener("resize", her);
|
|
206
|
+
};
|
|
207
|
+
}, [sleutels]);
|
|
208
|
+
const teken = (key, soort) => {
|
|
209
|
+
if (!key) return null;
|
|
210
|
+
const el = document.querySelector(`[data-xicms-block="${CSS.escape(key)}"]`);
|
|
211
|
+
const r = el ? omtrek(el) : null;
|
|
212
|
+
if (!r) return null;
|
|
213
|
+
return /* @__PURE__ */ jsx("div", { className: `xicms-ve-kader is-${soort}`, style: { top: r.top, left: r.left, width: r.width, height: r.height }, "aria-hidden": true, children: soort === "aangewezen" && /* @__PURE__ */ jsx("span", { className: "xicms-ve-kader__naam", children: labelVoor(key) }) });
|
|
214
|
+
};
|
|
215
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
216
|
+
aangewezen !== gekozen && teken(aangewezen, "aangewezen"),
|
|
217
|
+
teken(gekozen, "gekozen")
|
|
218
|
+
] });
|
|
219
|
+
}
|
|
220
|
+
export {
|
|
221
|
+
BlokKader,
|
|
222
|
+
BlokKiezer,
|
|
223
|
+
TussenPlus
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=BlokKiezer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/visual/BlokKiezer.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Dialog, DialogContent } from \"../ui/dialog\";\nimport { Button } from \"../ui/primitives\";\nimport { useRegistry } from \"../../blocks/context\";\nimport { builtinPatterns, collectPatternTypes, instantiatePattern, type Pattern } from \"../../patterns\";\nimport { GROEPEN, blokInfo, type BlokGroep } from \"../lib/blokInfo\";\n\n/**\n * De blokkiezer (8.11): wat wil je hier toevoegen?\n *\n * Verving een platte keuzelijst van zo'n zestig namen. Nu: een zoekveld, groepen (\"Over je bedrijf\",\n * \"Contact en afspraken\"), per blok één zin uitleg, en een tweede tabblad met kant-en-klare secties\n * (de patronen) — die zaten achter een aparte knop in de zijbalk. Opent vanaf de \"+\" tussen twee\n * blokken op de pagina én vanuit de zijbalk.\n */\nexport function BlokKiezer({\n open,\n onOpenChange,\n onBlok,\n onSectie,\n patterns = builtinPatterns,\n}: {\n open: boolean;\n onOpenChange: (v: boolean) => void;\n onBlok: (type: string) => void;\n onSectie: (blocks: Array<Record<string, unknown>>) => void;\n patterns?: Pattern[];\n}) {\n const registry = useRegistry();\n const [zoek, setZoek] = useState(\"\");\n const [tab, setTab] = useState<\"blokken\" | \"secties\">(\"blokken\");\n const zoekRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n if (!open) return;\n setZoek(\"\");\n setTab(\"blokken\");\n const t = setTimeout(() => zoekRef.current?.focus(), 50);\n return () => clearTimeout(t);\n }, [open]);\n\n const perGroep = useMemo(() => {\n const q = zoek.trim().toLowerCase();\n const m = new Map<BlokGroep, { type: string; label: string; icon?: string; uitleg?: string }[]>();\n for (const def of registry.values()) {\n const info = blokInfo(def.type, def.category);\n const item = { type: def.type, label: def.label, icon: def.icon, uitleg: info.uitleg };\n if (q && !`${item.label} ${item.uitleg ?? \"\"}`.toLowerCase().includes(q)) continue;\n m.set(info.groep, [...(m.get(info.groep) ?? []), item]);\n }\n return GROEPEN.map((g) => ({ ...g, items: m.get(g.id) ?? [] })).filter((g) => g.items.length > 0);\n }, [registry, zoek]);\n\n const secties = useMemo(() => {\n const q = zoek.trim().toLowerCase();\n return patterns\n .filter((p) => collectPatternTypes(p).every((t) => registry.get(t)))\n .filter((p) => !q || `${p.label} ${p.description ?? \"\"} ${p.category}`.toLowerCase().includes(q));\n }, [patterns, registry, zoek]);\n\n if (!open) return null;\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent title=\"Toevoegen\" width=\"min(94vw, 46rem)\">\n <div className=\"grid gap-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <div role=\"tablist\" aria-label=\"Wat toevoegen\" className=\"inline-flex rounded-lg bg-slate-100 p-0.5\">\n {([\"blokken\", \"secties\"] as const).map((t) => (\n <button\n key={t}\n type=\"button\"\n role=\"tab\"\n aria-selected={tab === t}\n onClick={() => setTab(t)}\n className=\"xicms-admin-btn rounded-md px-3 py-1.5 text-sm font-medium text-slate-600 aria-[selected=true]:bg-white aria-[selected=true]:text-slate-900 aria-[selected=true]:shadow-sm\"\n >\n {t === \"blokken\" ? \"Losse blokken\" : \"Kant-en-klare secties\"}\n </button>\n ))}\n </div>\n <input\n ref={zoekRef}\n type=\"search\"\n value={zoek}\n onChange={(e) => setZoek(e.target.value)}\n placeholder=\"Zoek, bv. foto, prijzen, team…\"\n aria-label=\"Zoek een blok\"\n className=\"min-w-0 flex-1 rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm\"\n />\n </div>\n\n <div className=\"grid max-h-[60vh] gap-4 overflow-y-auto pr-1\">\n {tab === \"blokken\" &&\n (perGroep.length === 0 ? (\n <p className=\"py-6 text-center text-sm text-slate-500\">Niets gevonden voor “{zoek}”.</p>\n ) : (\n perGroep.map((g) => (\n <section key={g.id}>\n <h4 className=\"mb-1.5 text-xs font-semibold uppercase tracking-wide text-slate-500\">{g.label}</h4>\n <div className=\"grid gap-1.5 sm:grid-cols-2\">\n {g.items.map((b) => (\n <button\n key={b.type}\n type=\"button\"\n onClick={() => {\n onBlok(b.type);\n onOpenChange(false);\n }}\n className=\"xicms-admin-btn flex items-start gap-3 rounded-lg border border-slate-200 bg-white p-2.5 text-left hover:border-slate-400 hover:bg-slate-50\"\n >\n <span className=\"grid h-9 w-9 shrink-0 place-items-center rounded-md bg-slate-100 text-lg\" aria-hidden>\n {b.icon ?? \"▫\"}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block text-sm font-medium text-slate-900\">{b.label}</span>\n {b.uitleg && <span className=\"block text-xs leading-snug text-slate-500\">{b.uitleg}</span>}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))\n ))}\n {tab === \"secties\" &&\n (secties.length === 0 ? (\n <p className=\"py-6 text-center text-sm text-slate-500\">Geen secties gevonden.</p>\n ) : (\n <div className=\"grid gap-1.5 sm:grid-cols-2\">\n {secties.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => {\n onSectie(instantiatePattern(p));\n onOpenChange(false);\n }}\n className=\"xicms-admin-btn rounded-lg border border-slate-200 bg-white p-2.5 text-left hover:border-slate-400 hover:bg-slate-50\"\n >\n <span className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-medium text-slate-900\">{p.label}</span>\n <span className=\"shrink-0 text-sm opacity-70\" aria-hidden>\n {p.blocks.slice(0, 5).map((b, i) => (\n <span key={i}>{registry.get(b._type)?.icon ?? \"🧩\"}</span>\n ))}\n </span>\n </span>\n <span className=\"block text-xs text-slate-500\">{p.description ?? p.category}</span>\n </button>\n ))}\n </div>\n ))}\n </div>\n <div className=\"flex justify-end\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => onOpenChange(false)}>\n Sluiten\n </Button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\n/**\n * Een \"+\" op de naad onder het blok waar je muis is: hier iets invoegen. Alleen voor blokken op het\n * hoogste niveau van de pagina (`sleutels`), niet voor blokken in kolommen of tabbladen.\n */\nexport function TussenPlus({ sleutels, onKies }: { sleutels: string[]; onKies: (na: string) => void }) {\n const [plek, setPlek] = useState<{ key: string; top: number; left: number } | null>(null);\n useEffect(() => {\n const set = new Set(sleutels);\n const meet = (el: HTMLElement) => {\n let r = el.getBoundingClientRect();\n if (r.width === 0 && r.height === 0) {\n const kids = Array.from(el.children).map((k) => k.getBoundingClientRect()).filter((k) => k.width || k.height);\n if (!kids.length) return null;\n const left = Math.min(...kids.map((k) => k.left));\n const right = Math.max(...kids.map((k) => k.right));\n const bottom = Math.max(...kids.map((k) => k.bottom));\n r = { left, right, bottom, width: right - left } as DOMRect;\n }\n return { top: r.bottom, left: r.left + r.width / 2 };\n };\n const opOver = (e: MouseEvent) => {\n const doel = e.target as HTMLElement | null;\n if (doel?.closest?.(\".xicms-ve-tussenplus\")) return;\n let blok = doel?.closest?.<HTMLElement>(\"[data-xicms-block]\") ?? null;\n // Het buitenste blok: in kolommen staan blokken in blokken.\n while (blok && !set.has(blok.dataset.xicmsBlock ?? \"\")) blok = blok.parentElement?.closest<HTMLElement>(\"[data-xicms-block]\") ?? null;\n if (!blok) return setPlek(null);\n const p = meet(blok);\n if (!p || p.top > window.innerHeight - 70) return setPlek(null);\n const key = blok.dataset.xicmsBlock!;\n setPlek((v) => (v && v.key === key && v.top === p.top ? v : { key, ...p }));\n };\n const opScroll = () => setPlek(null);\n document.addEventListener(\"mouseover\", opOver, true);\n window.addEventListener(\"scroll\", opScroll, { capture: true, passive: true });\n return () => {\n document.removeEventListener(\"mouseover\", opOver, true);\n window.removeEventListener(\"scroll\", opScroll, { capture: true });\n };\n }, [sleutels]);\n if (!plek) return null;\n return (\n <button\n type=\"button\"\n className=\"xicms-ve-tussenplus\"\n style={{ top: plek.top, left: plek.left }}\n title=\"Hier een blok of sectie toevoegen\"\n aria-label=\"Hier een blok of sectie toevoegen\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => onKies(plek.key)}\n >\n <span aria-hidden>+</span>\n </button>\n );\n}\n\nfunction omtrek(el: HTMLElement): { top: number; left: number; width: number; height: number } | null {\n let r = el.getBoundingClientRect();\n if (r.width === 0 && r.height === 0) {\n const kids = Array.from(el.children).map((k) => k.getBoundingClientRect()).filter((k) => k.width || k.height);\n if (!kids.length) return null;\n const left = Math.min(...kids.map((k) => k.left));\n const top = Math.min(...kids.map((k) => k.top));\n r = { left, top, width: Math.max(...kids.map((k) => k.right)) - left, height: Math.max(...kids.map((k) => k.bottom)) - top } as DOMRect;\n }\n return { top: r.top, left: r.left, width: r.width, height: r.height };\n}\n\n/**\n * Kaders (8.11): een stippellijn met de naam rond het blok onder je muis, een doorgetrokken lijn\n * rond het blok dat je bewerkt. Zonder kader was niet te zien waar een blok begon en eindigde — de\n * CSS ervoor bestond nog uit de tijd van het canvas, maar niets gebruikte hem.\n */\nexport function BlokKader({ sleutels, gekozen, labelVoor }: { sleutels: string[]; gekozen: string | null; labelVoor: (key: string) => string }) {\n const [aangewezen, setAangewezen] = useState<string | null>(null);\n const [, setTik] = useState(0);\n useEffect(() => {\n const set = new Set(sleutels);\n const opOver = (e: MouseEvent) => {\n const doel = e.target as HTMLElement | null;\n if (doel?.closest?.(\"[data-xicms-tooling], .xicms-ve-snel, .xicms-ve-item, .xicms-ve-blokknoppen, .xicms-ve-pencil, .xicms-ve-tussenplus\")) return;\n let blok = doel?.closest?.<HTMLElement>(\"[data-xicms-block]\") ?? null;\n while (blok && !set.has(blok.dataset.xicmsBlock ?? \"\")) blok = blok.parentElement?.closest<HTMLElement>(\"[data-xicms-block]\") ?? null;\n setAangewezen(blok?.dataset.xicmsBlock ?? null);\n };\n let frame = 0;\n const her = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(() => setTik((n) => n + 1));\n };\n document.addEventListener(\"mouseover\", opOver, true);\n window.addEventListener(\"scroll\", her, { capture: true, passive: true });\n window.addEventListener(\"resize\", her);\n return () => {\n cancelAnimationFrame(frame);\n document.removeEventListener(\"mouseover\", opOver, true);\n window.removeEventListener(\"scroll\", her, { capture: true });\n window.removeEventListener(\"resize\", her);\n };\n }, [sleutels]);\n const teken = (key: string | null, soort: \"aangewezen\" | \"gekozen\") => {\n if (!key) return null;\n const el = document.querySelector<HTMLElement>(`[data-xicms-block=\"${CSS.escape(key)}\"]`);\n const r = el ? omtrek(el) : null;\n if (!r) return null;\n return (\n <div className={`xicms-ve-kader is-${soort}`} style={{ top: r.top, left: r.left, width: r.width, height: r.height }} aria-hidden>\n {soort === \"aangewezen\" && <span className=\"xicms-ve-kader__naam\">{labelVoor(key)}</span>}\n </div>\n );\n };\n return (\n <>\n {aangewezen !== gekozen && teken(aangewezen, \"aangewezen\")}\n {teken(gekozen, \"gekozen\")}\n </>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { BlockDefinition } from "../../blocks/registry.js";
|
|
2
|
+
import type { Field } from "../../schema/fields.js";
|
|
3
|
+
/**
|
|
4
|
+
* Bewerken op de pagina, voorbij de tekst (8.11): het POTLOOD.
|
|
5
|
+
*
|
|
6
|
+
* De wens: potlood = op de pagina zelf bewerken, tandwiel = de zijbalk. Tot nu toe deed het potlood
|
|
7
|
+
* alleen tekst; voor al het andere moest je toch naar de zijbalk — een kaart toevoegen, een knop
|
|
8
|
+
* naar een andere pagina laten wijzen, van drie naar vier kolommen. Dit gereedschap verschijnt bij
|
|
9
|
+
* het geselecteerde blok en doet precies dat, op de plek zelf:
|
|
10
|
+
*
|
|
11
|
+
* - **Lijsten** (kaarten, teamleden, reviews, stappen …): bij het onderdeel onder je muis ↑ ↓ ⧉ 🗑,
|
|
12
|
+
* en onder de lijst "+ Kaart". De onderdelen worden gevonden via de veldhaken die de blokken al
|
|
13
|
+
* zetten (`data-xicms-edit="items.2.title"`) — geen wijziging aan een Render nodig, ook niet aan
|
|
14
|
+
* maatwerkblokken.
|
|
15
|
+
* - **Links**: wie een knoptekst aanwijst of bewerkt, krijgt eronder "🔗 Contact" — klik, en kies
|
|
16
|
+
* een pagina of adres.
|
|
17
|
+
* - **Snelle keuzes**: de paar keuzes die het uiterlijk van het blok bepalen (kolommen, stijl,
|
|
18
|
+
* uitlijning), als een balkje boven het blok. Alles daarbuiten blijft in de zijbalk.
|
|
19
|
+
*/
|
|
20
|
+
type Blok = Record<string, unknown> & {
|
|
21
|
+
_key: string;
|
|
22
|
+
_type: string;
|
|
23
|
+
};
|
|
24
|
+
export interface LijstItem {
|
|
25
|
+
lijst: string;
|
|
26
|
+
index: number;
|
|
27
|
+
el: HTMLElement;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Vind de onderdelen van de lijsten in een blok, via de veldhaken. Per onderdeel: de laagste
|
|
31
|
+
* voorouder die al zijn velden bevat, en dan zo ver omhoog als kan zonder een ánder onderdeel van
|
|
32
|
+
* dezelfde lijst te raken — dat is de kaart, de rij, het teamlid.
|
|
33
|
+
*/
|
|
34
|
+
export declare function vindLijstItems(host: HTMLElement): LijstItem[];
|
|
35
|
+
/** "sections.0.items" → "sections.items": de vorm waarop lijst- en onderdeelnamen per blok staan. */
|
|
36
|
+
export declare function lijstVorm(lijst: string): string;
|
|
37
|
+
/** Bij een knoptekst-veld: welk veld bevat de link? `null` = geen link bij dit veld. */
|
|
38
|
+
export declare function linkVeldVoor(veld: string, blok: Record<string, unknown>): string | null;
|
|
39
|
+
/** De snelle keuzes van een blok: keuzelijsten, kleine getallen en schakelaars die het uiterlijk bepalen. */
|
|
40
|
+
export declare function snelleKeuzes(velden: Field[]): Field[];
|
|
41
|
+
export declare function InlineGereedschap({ blok, def, siteId, onWijzig, onInstellingen, onStartVeld, onVerwijderd, }: {
|
|
42
|
+
blok: Blok;
|
|
43
|
+
def: BlockDefinition | undefined;
|
|
44
|
+
siteId: string;
|
|
45
|
+
/** Nieuwe versie van het blok (één ongedaan-maak-stap). */
|
|
46
|
+
onWijzig: (volgend: Blok) => void;
|
|
47
|
+
onInstellingen: () => void;
|
|
48
|
+
/** Zet het bewerken van een veld aan (na het toevoegen van een onderdeel). */
|
|
49
|
+
onStartVeld: (veld: string) => void;
|
|
50
|
+
onVerwijderd: (wat: string) => void;
|
|
51
|
+
}): import("react").JSX.Element;
|
|
52
|
+
export {};
|