@canvas-digital/blog-sdk 2.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/README.md +110 -0
- package/dist/BlogPlatform.d.ts +40 -0
- package/dist/BlogPlatform.d.ts.map +1 -0
- package/dist/BlogPlatform.js +38 -0
- package/dist/admin/components/BlogAdmin.d.ts +10 -0
- package/dist/admin/components/BlogAdmin.d.ts.map +1 -0
- package/dist/admin/components/BlogAdmin.js +36 -0
- package/dist/admin/components/CategoryManager.d.ts +5 -0
- package/dist/admin/components/CategoryManager.d.ts.map +1 -0
- package/dist/admin/components/CategoryManager.js +43 -0
- package/dist/admin/components/MediaManager.d.ts +7 -0
- package/dist/admin/components/MediaManager.d.ts.map +1 -0
- package/dist/admin/components/MediaManager.js +37 -0
- package/dist/admin/components/PostEditor.d.ts +7 -0
- package/dist/admin/components/PostEditor.d.ts.map +1 -0
- package/dist/admin/components/PostEditor.js +160 -0
- package/dist/admin/components/PostList.d.ts +8 -0
- package/dist/admin/components/PostList.d.ts.map +1 -0
- package/dist/admin/components/PostList.js +32 -0
- package/dist/admin/components/TagManager.d.ts +5 -0
- package/dist/admin/components/TagManager.d.ts.map +1 -0
- package/dist/admin/components/TagManager.js +41 -0
- package/dist/admin/components/editor/RichTextEditor.d.ts +8 -0
- package/dist/admin/components/editor/RichTextEditor.d.ts.map +1 -0
- package/dist/admin/components/editor/RichTextEditor.js +47 -0
- package/dist/admin/components/internal/States.d.ts +16 -0
- package/dist/admin/components/internal/States.d.ts.map +1 -0
- package/dist/admin/components/internal/States.js +15 -0
- package/dist/admin/hooks/useAsync.d.ts +23 -0
- package/dist/admin/hooks/useAsync.d.ts.map +1 -0
- package/dist/admin/hooks/useAsync.js +40 -0
- package/dist/admin/index.d.ts +10 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +9 -0
- package/dist/admin/theme.d.ts +6 -0
- package/dist/admin/theme.d.ts.map +1 -0
- package/dist/admin/theme.js +52 -0
- package/dist/admin/types.d.ts +27 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +1 -0
- package/dist/blog-client.iife.js +1 -0
- package/dist/client/admin-client.d.ts +33 -0
- package/dist/client/admin-client.d.ts.map +1 -0
- package/dist/client/admin-client.js +153 -0
- package/dist/client/errors.d.ts +14 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +26 -0
- package/dist/client/http.d.ts +12 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/http.js +135 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +6 -0
- package/dist/client/pagination.d.ts +4 -0
- package/dist/client/pagination.d.ts.map +1 -0
- package/dist/client/pagination.js +32 -0
- package/dist/client/public-client.d.ts +23 -0
- package/dist/client/public-client.d.ts.map +1 -0
- package/dist/client/public-client.js +94 -0
- package/dist/client/types.d.ts +115 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +1 -0
- package/dist/components/BlogUploader/BackButton.d.ts +5 -0
- package/dist/components/BlogUploader/BackButton.d.ts.map +1 -0
- package/dist/components/BlogUploader/BackButton.js +27 -0
- package/dist/components/BlogUploader/CommentSection.d.ts +12 -0
- package/dist/components/BlogUploader/CommentSection.d.ts.map +1 -0
- package/dist/components/BlogUploader/CommentSection.js +65 -0
- package/dist/components/BlogUploader/PostCard.d.ts +17 -0
- package/dist/components/BlogUploader/PostCard.d.ts.map +1 -0
- package/dist/components/BlogUploader/PostCard.js +42 -0
- package/dist/components/BlogUploader/PostFormatHero.d.ts +7 -0
- package/dist/components/BlogUploader/PostFormatHero.d.ts.map +1 -0
- package/dist/components/BlogUploader/PostFormatHero.js +47 -0
- package/dist/components/BlogUploader/ReadingProgress.d.ts +9 -0
- package/dist/components/BlogUploader/ReadingProgress.d.ts.map +1 -0
- package/dist/components/BlogUploader/ReadingProgress.js +28 -0
- package/dist/components/BlogUploader/RichText.d.ts +5 -0
- package/dist/components/BlogUploader/RichText.d.ts.map +1 -0
- package/dist/components/BlogUploader/RichText.js +59 -0
- package/dist/components/BlogUploader/ShareRow.d.ts +12 -0
- package/dist/components/BlogUploader/ShareRow.d.ts.map +1 -0
- package/dist/components/BlogUploader/ShareRow.js +13 -0
- package/dist/components/BlogUploader/ViewBeacon.d.ts +12 -0
- package/dist/components/BlogUploader/ViewBeacon.d.ts.map +1 -0
- package/dist/components/BlogUploader/ViewBeacon.js +37 -0
- package/dist/components/BlogUploader/dashboard/BrandSettings.d.ts +28 -0
- package/dist/components/BlogUploader/dashboard/BrandSettings.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/BrandSettings.js +60 -0
- package/dist/components/BlogUploader/dashboard/BrandSwitcher.d.ts +14 -0
- package/dist/components/BlogUploader/dashboard/BrandSwitcher.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/BrandSwitcher.js +25 -0
- package/dist/components/BlogUploader/dashboard/Chips.d.ts +15 -0
- package/dist/components/BlogUploader/dashboard/Chips.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/Chips.js +15 -0
- package/dist/components/BlogUploader/dashboard/CommentsManager.d.ts +19 -0
- package/dist/components/BlogUploader/dashboard/CommentsManager.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/CommentsManager.js +32 -0
- package/dist/components/BlogUploader/dashboard/LogOutButton.d.ts +4 -0
- package/dist/components/BlogUploader/dashboard/LogOutButton.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/LogOutButton.js +22 -0
- package/dist/components/BlogUploader/dashboard/MediaLibrary.d.ts +16 -0
- package/dist/components/BlogUploader/dashboard/MediaLibrary.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/MediaLibrary.js +124 -0
- package/dist/components/BlogUploader/dashboard/MediaPicker.d.ts +19 -0
- package/dist/components/BlogUploader/dashboard/MediaPicker.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/MediaPicker.js +99 -0
- package/dist/components/BlogUploader/dashboard/PostsTable.d.ts +46 -0
- package/dist/components/BlogUploader/dashboard/PostsTable.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/PostsTable.js +109 -0
- package/dist/components/BlogUploader/dashboard/Shell.d.ts +25 -0
- package/dist/components/BlogUploader/dashboard/Shell.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/Shell.js +128 -0
- package/dist/components/BlogUploader/dashboard/TermManager.d.ts +29 -0
- package/dist/components/BlogUploader/dashboard/TermManager.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/TermManager.js +96 -0
- package/dist/components/BlogUploader/dashboard/ToastProvider.d.ts +6 -0
- package/dist/components/BlogUploader/dashboard/ToastProvider.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/ToastProvider.js +5 -0
- package/dist/components/BlogUploader/dashboard/UsersManager.d.ts +32 -0
- package/dist/components/BlogUploader/dashboard/UsersManager.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/UsersManager.js +98 -0
- package/dist/components/BlogUploader/dashboard/charts.d.ts +22 -0
- package/dist/components/BlogUploader/dashboard/charts.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/charts.js +79 -0
- package/dist/components/BlogUploader/dashboard/editor/FormatContentPanel.d.ts +25 -0
- package/dist/components/BlogUploader/dashboard/editor/FormatContentPanel.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/FormatContentPanel.js +62 -0
- package/dist/components/BlogUploader/dashboard/editor/PostEditor.d.ts +95 -0
- package/dist/components/BlogUploader/dashboard/editor/PostEditor.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/PostEditor.js +649 -0
- package/dist/components/BlogUploader/dashboard/editor/RichTextEditor.d.ts +37 -0
- package/dist/components/BlogUploader/dashboard/editor/RichTextEditor.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/RichTextEditor.js +475 -0
- package/dist/components/BlogUploader/dashboard/editor/SeoAnalysisPanel.d.ts +11 -0
- package/dist/components/BlogUploader/dashboard/editor/SeoAnalysisPanel.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/SeoAnalysisPanel.js +31 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastCollapsible.d.ts +12 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastCollapsible.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastCollapsible.js +5 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInsightsPanel.d.ts +4 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInsightsPanel.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInsightsPanel.js +31 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInternalLinksPanel.d.ts +4 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInternalLinksPanel.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastInternalLinksPanel.js +35 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoAnalysisPanel.d.ts +11 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoAnalysisPanel.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoAnalysisPanel.js +23 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoMetabox.d.ts +50 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoMetabox.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSeoMetabox.js +101 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSnippetField.d.ts +22 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSnippetField.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/YoastSnippetField.js +51 -0
- package/dist/components/BlogUploader/dashboard/editor/load.d.ts +10 -0
- package/dist/components/BlogUploader/dashboard/editor/load.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/editor/load.js +141 -0
- package/dist/components/BlogUploader/dashboard/loadTerms.d.ts +13 -0
- package/dist/components/BlogUploader/dashboard/loadTerms.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/loadTerms.js +41 -0
- package/dist/components/BlogUploader/dashboard/seo/BrandSeoActions.d.ts +8 -0
- package/dist/components/BlogUploader/dashboard/seo/BrandSeoActions.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/BrandSeoActions.js +35 -0
- package/dist/components/BlogUploader/dashboard/seo/Ga4Settings.d.ts +9 -0
- package/dist/components/BlogUploader/dashboard/seo/Ga4Settings.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/Ga4Settings.js +40 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectAnalyticsDashboard.d.ts +5 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectAnalyticsDashboard.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectAnalyticsDashboard.js +29 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectDetail.d.ts +10 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectDetail.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectDetail.js +31 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectForm.d.ts +27 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectForm.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectForm.js +79 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectList.d.ts +20 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectList.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/RedirectList.js +33 -0
- package/dist/components/BlogUploader/dashboard/seo/RobotsEditor.d.ts +11 -0
- package/dist/components/BlogUploader/dashboard/seo/RobotsEditor.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/RobotsEditor.js +54 -0
- package/dist/components/BlogUploader/dashboard/seo/SearchConsoleSettings.d.ts +9 -0
- package/dist/components/BlogUploader/dashboard/seo/SearchConsoleSettings.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/SearchConsoleSettings.js +38 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandList.d.ts +28 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandList.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandList.js +29 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandLists.d.ts +17 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandLists.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/SeoBrandLists.js +8 -0
- package/dist/components/BlogUploader/dashboard/seo/shared.d.ts +18 -0
- package/dist/components/BlogUploader/dashboard/seo/shared.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/seo/shared.js +6 -0
- package/dist/components/BlogUploader/dashboard/tools/ExportTool.d.ts +8 -0
- package/dist/components/BlogUploader/dashboard/tools/ExportTool.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/tools/ExportTool.js +78 -0
- package/dist/components/BlogUploader/dashboard/tools/ImportTool.d.ts +7 -0
- package/dist/components/BlogUploader/dashboard/tools/ImportTool.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/tools/ImportTool.js +70 -0
- package/dist/components/BlogUploader/dashboard/upload.d.ts +47 -0
- package/dist/components/BlogUploader/dashboard/upload.d.ts.map +1 -0
- package/dist/components/BlogUploader/dashboard/upload.js +68 -0
- package/dist/components/BlogUploader/site/ArticleDetailHero.d.ts +27 -0
- package/dist/components/BlogUploader/site/ArticleDetailHero.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/ArticleDetailHero.js +13 -0
- package/dist/components/BlogUploader/site/ArticleRailDetails.d.ts +27 -0
- package/dist/components/BlogUploader/site/ArticleRailDetails.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/ArticleRailDetails.js +17 -0
- package/dist/components/BlogUploader/site/BlogIndexView.d.ts +28 -0
- package/dist/components/BlogUploader/site/BlogIndexView.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/BlogIndexView.js +34 -0
- package/dist/components/BlogUploader/site/BrandTableOfContents.d.ts +18 -0
- package/dist/components/BlogUploader/site/BrandTableOfContents.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/BrandTableOfContents.js +15 -0
- package/dist/components/BlogUploader/site/HeroFadeSlide.d.ts +11 -0
- package/dist/components/BlogUploader/site/HeroFadeSlide.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/HeroFadeSlide.js +3 -0
- package/dist/components/BlogUploader/site/HeroMediaVisual.d.ts +23 -0
- package/dist/components/BlogUploader/site/HeroMediaVisual.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/HeroMediaVisual.js +50 -0
- package/dist/components/BlogUploader/site/IndexFeedSection.d.ts +14 -0
- package/dist/components/BlogUploader/site/IndexFeedSection.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/IndexFeedSection.js +12 -0
- package/dist/components/BlogUploader/site/InfinitePostFeed.d.ts +23 -0
- package/dist/components/BlogUploader/site/InfinitePostFeed.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/InfinitePostFeed.js +152 -0
- package/dist/components/BlogUploader/site/SiteMediaHero.d.ts +12 -0
- package/dist/components/BlogUploader/site/SiteMediaHero.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/SiteMediaHero.js +80 -0
- package/dist/components/BlogUploader/site/SiteMotion.d.ts +12 -0
- package/dist/components/BlogUploader/site/SiteMotion.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/SiteMotion.js +27 -0
- package/dist/components/BlogUploader/site/SiteNavAuth.d.ts +8 -0
- package/dist/components/BlogUploader/site/SiteNavAuth.d.ts.map +1 -0
- package/dist/components/BlogUploader/site/SiteNavAuth.js +36 -0
- package/dist/components/admin/AdminPostDetail.d.ts +7 -0
- package/dist/components/admin/AdminPostDetail.d.ts.map +1 -0
- package/dist/components/admin/AdminPostDetail.js +105 -0
- package/dist/components/admin/BrandSettings.d.ts +11 -0
- package/dist/components/admin/BrandSettings.d.ts.map +1 -0
- package/dist/components/admin/BrandSettings.js +71 -0
- package/dist/components/admin/BrandSwitcher.d.ts +3 -0
- package/dist/components/admin/BrandSwitcher.d.ts.map +1 -0
- package/dist/components/admin/BrandSwitcher.js +12 -0
- package/dist/components/admin/CategoryManager.d.ts +2 -0
- package/dist/components/admin/CategoryManager.d.ts.map +1 -0
- package/dist/components/admin/CategoryManager.js +1 -0
- package/dist/components/admin/Chips.d.ts +15 -0
- package/dist/components/admin/Chips.d.ts.map +1 -0
- package/dist/components/admin/Chips.js +15 -0
- package/dist/components/admin/CommentsManager.d.ts +6 -0
- package/dist/components/admin/CommentsManager.d.ts.map +1 -0
- package/dist/components/admin/CommentsManager.js +30 -0
- package/dist/components/admin/Dashboard.d.ts +3 -0
- package/dist/components/admin/Dashboard.d.ts.map +1 -0
- package/dist/components/admin/Dashboard.js +34 -0
- package/dist/components/admin/MediaLibrary.d.ts +4 -0
- package/dist/components/admin/MediaLibrary.d.ts.map +1 -0
- package/dist/components/admin/MediaLibrary.js +119 -0
- package/dist/components/admin/MediaManager.d.ts +2 -0
- package/dist/components/admin/MediaManager.d.ts.map +1 -0
- package/dist/components/admin/MediaManager.js +1 -0
- package/dist/components/admin/MediaPicker.d.ts +10 -0
- package/dist/components/admin/MediaPicker.d.ts.map +1 -0
- package/dist/components/admin/MediaPicker.js +86 -0
- package/dist/components/admin/PostEditor.d.ts +2 -0
- package/dist/components/admin/PostEditor.d.ts.map +1 -0
- package/dist/components/admin/PostEditor.js +1 -0
- package/dist/components/admin/PostList.d.ts +13 -0
- package/dist/components/admin/PostList.d.ts.map +1 -0
- package/dist/components/admin/PostList.js +93 -0
- package/dist/components/admin/PostsTable.d.ts +15 -0
- package/dist/components/admin/PostsTable.d.ts.map +1 -0
- package/dist/components/admin/PostsTable.js +106 -0
- package/dist/components/admin/Shell.d.ts +18 -0
- package/dist/components/admin/Shell.d.ts.map +1 -0
- package/dist/components/admin/Shell.js +99 -0
- package/dist/components/admin/TagManager.d.ts +2 -0
- package/dist/components/admin/TagManager.d.ts.map +1 -0
- package/dist/components/admin/TagManager.js +1 -0
- package/dist/components/admin/TermManager.d.ts +9 -0
- package/dist/components/admin/TermManager.d.ts.map +1 -0
- package/dist/components/admin/TermManager.js +105 -0
- package/dist/components/admin/UsersManager.d.ts +5 -0
- package/dist/components/admin/UsersManager.d.ts.map +1 -0
- package/dist/components/admin/UsersManager.js +96 -0
- package/dist/components/admin/api/mappers.d.ts +37 -0
- package/dist/components/admin/api/mappers.d.ts.map +1 -0
- package/dist/components/admin/api/mappers.js +174 -0
- package/dist/components/admin/charts.d.ts +30 -0
- package/dist/components/admin/charts.d.ts.map +1 -0
- package/dist/components/admin/charts.js +79 -0
- package/dist/components/admin/editor/FormatContentPanel.d.ts +25 -0
- package/dist/components/admin/editor/FormatContentPanel.d.ts.map +1 -0
- package/dist/components/admin/editor/FormatContentPanel.js +62 -0
- package/dist/components/admin/editor/PostEditor.d.ts +5 -0
- package/dist/components/admin/editor/PostEditor.d.ts.map +1 -0
- package/dist/components/admin/editor/PostEditor.js +404 -0
- package/dist/components/admin/editor/RichTextEditor.d.ts +42 -0
- package/dist/components/admin/editor/RichTextEditor.d.ts.map +1 -0
- package/dist/components/admin/editor/RichTextEditor.js +475 -0
- package/dist/components/admin/editor/SeoAnalysisPanel.d.ts +11 -0
- package/dist/components/admin/editor/SeoAnalysisPanel.d.ts.map +1 -0
- package/dist/components/admin/editor/SeoAnalysisPanel.js +31 -0
- package/dist/components/admin/editor/YoastCollapsible.d.ts +12 -0
- package/dist/components/admin/editor/YoastCollapsible.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastCollapsible.js +5 -0
- package/dist/components/admin/editor/YoastInsightsPanel.d.ts +4 -0
- package/dist/components/admin/editor/YoastInsightsPanel.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastInsightsPanel.js +31 -0
- package/dist/components/admin/editor/YoastInternalLinksPanel.d.ts +4 -0
- package/dist/components/admin/editor/YoastInternalLinksPanel.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastInternalLinksPanel.js +35 -0
- package/dist/components/admin/editor/YoastSeoAnalysisPanel.d.ts +11 -0
- package/dist/components/admin/editor/YoastSeoAnalysisPanel.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastSeoAnalysisPanel.js +23 -0
- package/dist/components/admin/editor/YoastSeoMetabox.d.ts +54 -0
- package/dist/components/admin/editor/YoastSeoMetabox.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastSeoMetabox.js +101 -0
- package/dist/components/admin/editor/YoastSnippetField.d.ts +22 -0
- package/dist/components/admin/editor/YoastSnippetField.d.ts.map +1 -0
- package/dist/components/admin/editor/YoastSnippetField.js +51 -0
- package/dist/components/admin/editor/load.d.ts +10 -0
- package/dist/components/admin/editor/load.d.ts.map +1 -0
- package/dist/components/admin/editor/load.js +141 -0
- package/dist/components/admin/index.d.ts +28 -0
- package/dist/components/admin/index.d.ts.map +1 -0
- package/dist/components/admin/index.js +27 -0
- package/dist/components/admin/internal/States.d.ts +16 -0
- package/dist/components/admin/internal/States.d.ts.map +1 -0
- package/dist/components/admin/internal/States.js +15 -0
- package/dist/components/admin/lib/format.d.ts +7 -0
- package/dist/components/admin/lib/format.d.ts.map +1 -0
- package/dist/components/admin/lib/format.js +43 -0
- package/dist/components/admin/lib/publishing.d.ts +8 -0
- package/dist/components/admin/lib/publishing.d.ts.map +1 -0
- package/dist/components/admin/lib/publishing.js +10 -0
- package/dist/components/admin/lib/robots.d.ts +13 -0
- package/dist/components/admin/lib/robots.d.ts.map +1 -0
- package/dist/components/admin/lib/robots.js +22 -0
- package/dist/components/admin/mock/fixtures.d.ts +240 -0
- package/dist/components/admin/mock/fixtures.d.ts.map +1 -0
- package/dist/components/admin/mock/fixtures.js +546 -0
- package/dist/components/admin/mock/store.d.ts +139 -0
- package/dist/components/admin/mock/store.d.ts.map +1 -0
- package/dist/components/admin/mock/store.js +1067 -0
- package/dist/components/admin/seo/Ga4Settings.d.ts +34 -0
- package/dist/components/admin/seo/Ga4Settings.d.ts.map +1 -0
- package/dist/components/admin/seo/Ga4Settings.js +80 -0
- package/dist/components/admin/seo/RedirectAnalyticsDashboard.d.ts +5 -0
- package/dist/components/admin/seo/RedirectAnalyticsDashboard.d.ts.map +1 -0
- package/dist/components/admin/seo/RedirectAnalyticsDashboard.js +24 -0
- package/dist/components/admin/seo/RedirectDetail.d.ts +11 -0
- package/dist/components/admin/seo/RedirectDetail.d.ts.map +1 -0
- package/dist/components/admin/seo/RedirectDetail.js +30 -0
- package/dist/components/admin/seo/RedirectForm.d.ts +29 -0
- package/dist/components/admin/seo/RedirectForm.d.ts.map +1 -0
- package/dist/components/admin/seo/RedirectForm.js +89 -0
- package/dist/components/admin/seo/RedirectList.d.ts +10 -0
- package/dist/components/admin/seo/RedirectList.d.ts.map +1 -0
- package/dist/components/admin/seo/RedirectList.js +28 -0
- package/dist/components/admin/seo/RobotsEditor.d.ts +5 -0
- package/dist/components/admin/seo/RobotsEditor.d.ts.map +1 -0
- package/dist/components/admin/seo/RobotsEditor.js +50 -0
- package/dist/components/admin/seo/SearchConsoleSettings.d.ts +3 -0
- package/dist/components/admin/seo/SearchConsoleSettings.d.ts.map +1 -0
- package/dist/components/admin/seo/SearchConsoleSettings.js +1 -0
- package/dist/components/admin/seo/SeoBrandList.d.ts +3 -0
- package/dist/components/admin/seo/SeoBrandList.d.ts.map +1 -0
- package/dist/components/admin/seo/SeoBrandList.js +1 -0
- package/dist/components/admin/seo/shared.d.ts +17 -0
- package/dist/components/admin/seo/shared.d.ts.map +1 -0
- package/dist/components/admin/seo/shared.js +7 -0
- package/dist/components/admin/tools/ExportTool.d.ts +3 -0
- package/dist/components/admin/tools/ExportTool.d.ts.map +1 -0
- package/dist/components/admin/tools/ExportTool.js +1 -0
- package/dist/components/admin/tools/ImportTool.d.ts +3 -0
- package/dist/components/admin/tools/ImportTool.d.ts.map +1 -0
- package/dist/components/admin/tools/ImportTool.js +1 -0
- package/dist/components/admin/tools/ToolsHub.d.ts +10 -0
- package/dist/components/admin/tools/ToolsHub.d.ts.map +1 -0
- package/dist/components/admin/tools/ToolsHub.js +106 -0
- package/dist/components/admin/tools/index.d.ts +3 -0
- package/dist/components/admin/tools/index.d.ts.map +1 -0
- package/dist/components/admin/tools/index.js +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/user/BlogCard.d.ts +20 -0
- package/dist/components/user/BlogCard.d.ts.map +1 -0
- package/dist/components/user/BlogCard.js +22 -0
- package/dist/components/user/BlogCategories.d.ts +6 -0
- package/dist/components/user/BlogCategories.d.ts.map +1 -0
- package/dist/components/user/BlogCategories.js +11 -0
- package/dist/components/user/BlogDetail.d.ts +25 -0
- package/dist/components/user/BlogDetail.d.ts.map +1 -0
- package/dist/components/user/BlogDetail.js +90 -0
- package/dist/components/user/BlogList.d.ts +20 -0
- package/dist/components/user/BlogList.d.ts.map +1 -0
- package/dist/components/user/BlogList.js +56 -0
- package/dist/components/user/BlogSearch.d.ts +8 -0
- package/dist/components/user/BlogSearch.d.ts.map +1 -0
- package/dist/components/user/BlogSearch.js +19 -0
- package/dist/components/user/BlogTags.d.ts +6 -0
- package/dist/components/user/BlogTags.d.ts.map +1 -0
- package/dist/components/user/BlogTags.js +11 -0
- package/dist/components/user/FeaturedBlogs.d.ts +8 -0
- package/dist/components/user/FeaturedBlogs.d.ts.map +1 -0
- package/dist/components/user/FeaturedBlogs.js +12 -0
- package/dist/components/user/RelatedBlogs.d.ts +9 -0
- package/dist/components/user/RelatedBlogs.d.ts.map +1 -0
- package/dist/components/user/RelatedBlogs.js +12 -0
- package/dist/components/user/SiteMediaHero.d.ts +14 -0
- package/dist/components/user/SiteMediaHero.d.ts.map +1 -0
- package/dist/components/user/SiteMediaHero.js +43 -0
- package/dist/components/user/detail/ArticleDetailHero.d.ts +30 -0
- package/dist/components/user/detail/ArticleDetailHero.d.ts.map +1 -0
- package/dist/components/user/detail/ArticleDetailHero.js +29 -0
- package/dist/components/user/detail/ArticleRailDetails.d.ts +24 -0
- package/dist/components/user/detail/ArticleRailDetails.d.ts.map +1 -0
- package/dist/components/user/detail/ArticleRailDetails.js +12 -0
- package/dist/components/user/detail/BackButton.d.ts +7 -0
- package/dist/components/user/detail/BackButton.d.ts.map +1 -0
- package/dist/components/user/detail/BackButton.js +18 -0
- package/dist/components/user/detail/CommentSection.d.ts +28 -0
- package/dist/components/user/detail/CommentSection.d.ts.map +1 -0
- package/dist/components/user/detail/CommentSection.js +68 -0
- package/dist/components/user/detail/HeroFadeSlide.d.ts +12 -0
- package/dist/components/user/detail/HeroFadeSlide.d.ts.map +1 -0
- package/dist/components/user/detail/HeroFadeSlide.js +5 -0
- package/dist/components/user/detail/ReadingProgress.d.ts +2 -0
- package/dist/components/user/detail/ReadingProgress.d.ts.map +1 -0
- package/dist/components/user/detail/ReadingProgress.js +20 -0
- package/dist/components/user/detail/ShareRow.d.ts +7 -0
- package/dist/components/user/detail/ShareRow.d.ts.map +1 -0
- package/dist/components/user/detail/ShareRow.js +7 -0
- package/dist/components/user/detail/toc.d.ts +14 -0
- package/dist/components/user/detail/toc.d.ts.map +1 -0
- package/dist/components/user/detail/toc.js +106 -0
- package/dist/components/user/index.d.ts +14 -0
- package/dist/components/user/index.d.ts.map +1 -0
- package/dist/components/user/index.js +13 -0
- package/dist/components/user/internal/States.d.ts +18 -0
- package/dist/components/user/internal/States.d.ts.map +1 -0
- package/dist/components/user/internal/States.js +21 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useAsync.d.ts +23 -0
- package/dist/hooks/useAsync.d.ts.map +1 -0
- package/dist/hooks/useAsync.js +40 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/lib/access.d.ts +64 -0
- package/dist/lib/access.d.ts.map +1 -0
- package/dist/lib/access.js +127 -0
- package/dist/lib/canonical.d.ts +15 -0
- package/dist/lib/canonical.d.ts.map +1 -0
- package/dist/lib/canonical.js +34 -0
- package/dist/lib/comments.d.ts +9 -0
- package/dist/lib/comments.d.ts.map +1 -0
- package/dist/lib/comments.js +23 -0
- package/dist/lib/dashboard.d.ts +39 -0
- package/dist/lib/dashboard.d.ts.map +1 -0
- package/dist/lib/dashboard.js +157 -0
- package/dist/lib/data-transfer.d.ts +23 -0
- package/dist/lib/data-transfer.d.ts.map +1 -0
- package/dist/lib/data-transfer.js +436 -0
- package/dist/lib/default-author.d.ts +12 -0
- package/dist/lib/default-author.d.ts.map +1 -0
- package/dist/lib/default-author.js +57 -0
- package/dist/lib/format-media.d.ts +6 -0
- package/dist/lib/format-media.d.ts.map +1 -0
- package/dist/lib/format-media.js +18 -0
- package/dist/lib/format.d.ts +7 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +43 -0
- package/dist/lib/hero-post.d.ts +24 -0
- package/dist/lib/hero-post.d.ts.map +1 -0
- package/dist/lib/hero-post.js +95 -0
- package/dist/lib/lexical-build.d.ts +30 -0
- package/dist/lib/lexical-build.d.ts.map +1 -0
- package/dist/lib/lexical-build.js +57 -0
- package/dist/lib/lexical-doc.d.ts +88 -0
- package/dist/lib/lexical-doc.d.ts.map +1 -0
- package/dist/lib/lexical-doc.js +385 -0
- package/dist/lib/lexical-dom.d.ts +19 -0
- package/dist/lib/lexical-dom.d.ts.map +1 -0
- package/dist/lib/lexical-dom.js +181 -0
- package/dist/lib/lexical.d.ts +31 -0
- package/dist/lib/lexical.d.ts.map +1 -0
- package/dist/lib/lexical.js +59 -0
- package/dist/lib/post-categories.d.ts +11 -0
- package/dist/lib/post-categories.d.ts.map +1 -0
- package/dist/lib/post-categories.js +27 -0
- package/dist/lib/post-format.d.ts +39 -0
- package/dist/lib/post-format.d.ts.map +1 -0
- package/dist/lib/post-format.js +82 -0
- package/dist/lib/publishing.d.ts +3 -0
- package/dist/lib/publishing.d.ts.map +1 -0
- package/dist/lib/publishing.js +1 -0
- package/dist/lib/queries.d.ts +49 -0
- package/dist/lib/queries.d.ts.map +1 -0
- package/dist/lib/queries.js +340 -0
- package/dist/lib/redirect-analytics.d.ts +27 -0
- package/dist/lib/redirect-analytics.d.ts.map +1 -0
- package/dist/lib/redirect-analytics.js +147 -0
- package/dist/lib/redirects.d.ts +39 -0
- package/dist/lib/redirects.d.ts.map +1 -0
- package/dist/lib/redirects.js +96 -0
- package/dist/lib/revalidate.d.ts +30 -0
- package/dist/lib/revalidate.d.ts.map +1 -0
- package/dist/lib/revalidate.js +91 -0
- package/dist/lib/robots.d.ts +19 -0
- package/dist/lib/robots.d.ts.map +1 -0
- package/dist/lib/robots.js +38 -0
- package/dist/lib/seo-analysis.d.ts +28 -0
- package/dist/lib/seo-analysis.d.ts.map +1 -0
- package/dist/lib/seo-analysis.js +153 -0
- package/dist/lib/seo-limits.d.ts +19 -0
- package/dist/lib/seo-limits.d.ts.map +1 -0
- package/dist/lib/seo-limits.js +39 -0
- package/dist/lib/seo.d.ts +50 -0
- package/dist/lib/seo.d.ts.map +1 -0
- package/dist/lib/seo.js +238 -0
- package/dist/lib/slug.d.ts +3 -0
- package/dist/lib/slug.d.ts.map +1 -0
- package/dist/lib/slug.js +9 -0
- package/dist/lib/stats.d.ts +71 -0
- package/dist/lib/stats.d.ts.map +1 -0
- package/dist/lib/stats.js +207 -0
- package/dist/lib/tenant-host.d.ts +9 -0
- package/dist/lib/tenant-host.d.ts.map +1 -0
- package/dist/lib/tenant-host.js +15 -0
- package/dist/lib/tenant.d.ts +41 -0
- package/dist/lib/tenant.d.ts.map +1 -0
- package/dist/lib/tenant.js +140 -0
- package/dist/lib/toc.d.ts +16 -0
- package/dist/lib/toc.d.ts.map +1 -0
- package/dist/lib/toc.js +28 -0
- package/dist/lib/yoast-snippet.d.ts +25 -0
- package/dist/lib/yoast-snippet.d.ts.map +1 -0
- package/dist/lib/yoast-snippet.js +79 -0
- package/dist/pages/admin/BlogAdmin.d.ts +9 -0
- package/dist/pages/admin/BlogAdmin.d.ts.map +1 -0
- package/dist/pages/admin/BlogAdmin.js +234 -0
- package/dist/pages/admin/index.d.ts +2 -0
- package/dist/pages/admin/index.d.ts.map +1 -0
- package/dist/pages/admin/index.js +1 -0
- package/dist/pages/index.d.ts +3 -0
- package/dist/pages/index.d.ts.map +1 -0
- package/dist/pages/index.js +2 -0
- package/dist/pages/user/UserBlogPage.d.ts +10 -0
- package/dist/pages/user/UserBlogPage.d.ts.map +1 -0
- package/dist/pages/user/UserBlogPage.js +15 -0
- package/dist/pages/user/index.d.ts +2 -0
- package/dist/pages/user/index.d.ts.map +1 -0
- package/dist/pages/user/index.js +1 -0
- package/dist/services/admin-client.d.ts +33 -0
- package/dist/services/admin-client.d.ts.map +1 -0
- package/dist/services/admin-client.js +154 -0
- package/dist/services/admin-sdk-client.d.ts +285 -0
- package/dist/services/admin-sdk-client.d.ts.map +1 -0
- package/dist/services/admin-sdk-client.js +242 -0
- package/dist/services/errors.d.ts +14 -0
- package/dist/services/errors.d.ts.map +1 -0
- package/dist/services/errors.js +26 -0
- package/dist/services/http.d.ts +24 -0
- package/dist/services/http.d.ts.map +1 -0
- package/dist/services/http.js +159 -0
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/pagination.d.ts +4 -0
- package/dist/services/pagination.d.ts.map +1 -0
- package/dist/services/pagination.js +32 -0
- package/dist/services/public-client.d.ts +23 -0
- package/dist/services/public-client.d.ts.map +1 -0
- package/dist/services/public-client.js +94 -0
- package/dist/services/types.d.ts +124 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/types.js +1 -0
- package/dist/style.css +3105 -0
- package/dist/styles/adminTheme.d.ts +6 -0
- package/dist/styles/adminTheme.d.ts.map +1 -0
- package/dist/styles/adminTheme.js +52 -0
- package/dist/styles/index.d.ts +3 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +2 -0
- package/dist/styles/userTheme.d.ts +8 -0
- package/dist/styles/userTheme.d.ts.map +1 -0
- package/dist/styles/userTheme.js +60 -0
- package/dist/types/admin.d.ts +28 -0
- package/dist/types/admin.d.ts.map +1 -0
- package/dist/types/admin.js +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/user.d.ts +41 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +1 -0
- package/dist/user/components/BlogCard.d.ts +15 -0
- package/dist/user/components/BlogCard.d.ts.map +1 -0
- package/dist/user/components/BlogCard.js +31 -0
- package/dist/user/components/BlogCategories.d.ts +6 -0
- package/dist/user/components/BlogCategories.d.ts.map +1 -0
- package/dist/user/components/BlogCategories.js +11 -0
- package/dist/user/components/BlogDetail.d.ts +7 -0
- package/dist/user/components/BlogDetail.d.ts.map +1 -0
- package/dist/user/components/BlogDetail.js +19 -0
- package/dist/user/components/BlogList.d.ts +8 -0
- package/dist/user/components/BlogList.d.ts.map +1 -0
- package/dist/user/components/BlogList.js +18 -0
- package/dist/user/components/BlogSearch.d.ts +8 -0
- package/dist/user/components/BlogSearch.d.ts.map +1 -0
- package/dist/user/components/BlogSearch.js +19 -0
- package/dist/user/components/BlogTags.d.ts +6 -0
- package/dist/user/components/BlogTags.d.ts.map +1 -0
- package/dist/user/components/BlogTags.js +11 -0
- package/dist/user/components/FeaturedBlogs.d.ts +8 -0
- package/dist/user/components/FeaturedBlogs.d.ts.map +1 -0
- package/dist/user/components/FeaturedBlogs.js +12 -0
- package/dist/user/components/RelatedBlogs.d.ts +9 -0
- package/dist/user/components/RelatedBlogs.d.ts.map +1 -0
- package/dist/user/components/RelatedBlogs.js +12 -0
- package/dist/user/components/internal/States.d.ts +18 -0
- package/dist/user/components/internal/States.d.ts.map +1 -0
- package/dist/user/components/internal/States.js +16 -0
- package/dist/user/hooks/useAsync.d.ts +21 -0
- package/dist/user/hooks/useAsync.d.ts.map +1 -0
- package/dist/user/hooks/useAsync.js +40 -0
- package/dist/user/index.d.ts +11 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user/index.js +10 -0
- package/dist/user/sanitize.d.ts +2 -0
- package/dist/user/sanitize.d.ts.map +1 -0
- package/dist/user/sanitize.js +120 -0
- package/dist/user/theme.d.ts +8 -0
- package/dist/user/theme.d.ts.map +1 -0
- package/dist/user/theme.js +60 -0
- package/dist/user/types.d.ts +41 -0
- package/dist/user/types.d.ts.map +1 -0
- package/dist/user/types.js +1 -0
- package/dist/utils/env.d.ts +16 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +57 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/sanitize.d.ts +2 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +120 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexical-dom.d.ts","sourceRoot":"","sources":["../../app/lib/lexical-dom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAcL,KAAK,MAAM,EAEZ,MAAM,eAAe,CAAA;AAsJtB;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,WAAW,KAAG,MA0ChD,CAAA"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser side of the editor contract: the contenteditable DOM read back as a
|
|
3
|
+
* Lexical node tree.
|
|
4
|
+
*
|
|
5
|
+
* We walk the live DOM rather than serialising to an HTML string and parsing it
|
|
6
|
+
* again — there is no intermediate markup to get wrong, and anything the browser
|
|
7
|
+
* invented while the user typed (a stray <span style>, a pasted <font>) simply
|
|
8
|
+
* has no case here and disappears. The server re-validates the result anyway
|
|
9
|
+
* (see sanitizeLexical), so this file is a translator, not a security boundary.
|
|
10
|
+
*/
|
|
11
|
+
import { FMT, HEADING_TAGS, heading, horizontalRule, lineBreak, linkNode, list, listItem, paragraph, quote, text, uploadNode, } from './lexical-doc';
|
|
12
|
+
const FORMAT_BY_TAG = {
|
|
13
|
+
STRONG: FMT.bold,
|
|
14
|
+
B: FMT.bold,
|
|
15
|
+
EM: FMT.italic,
|
|
16
|
+
I: FMT.italic,
|
|
17
|
+
U: FMT.underline,
|
|
18
|
+
S: FMT.strikethrough,
|
|
19
|
+
STRIKE: FMT.strikethrough,
|
|
20
|
+
DEL: FMT.strikethrough,
|
|
21
|
+
CODE: FMT.code,
|
|
22
|
+
};
|
|
23
|
+
/** Browsers still emit inline styles for bold/italic in some paste paths. */
|
|
24
|
+
const formatFromStyle = (el) => {
|
|
25
|
+
let format = 0;
|
|
26
|
+
const weight = el.style.fontWeight;
|
|
27
|
+
if (weight === 'bold' || Number(weight) >= 600)
|
|
28
|
+
format |= FMT.bold;
|
|
29
|
+
if (el.style.fontStyle === 'italic')
|
|
30
|
+
format |= FMT.italic;
|
|
31
|
+
const decoration = el.style.textDecorationLine || el.style.textDecoration;
|
|
32
|
+
if (decoration.includes('underline'))
|
|
33
|
+
format |= FMT.underline;
|
|
34
|
+
if (decoration.includes('line-through'))
|
|
35
|
+
format |= FMT.strikethrough;
|
|
36
|
+
return format;
|
|
37
|
+
};
|
|
38
|
+
const collapse = (value) => value.replace(/[\t\n\r]+/g, ' ');
|
|
39
|
+
const inlineChildren = (parent, format) => {
|
|
40
|
+
const out = [];
|
|
41
|
+
parent.childNodes.forEach((node) => {
|
|
42
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
43
|
+
const value = collapse(node.textContent ?? '');
|
|
44
|
+
if (value)
|
|
45
|
+
out.push(text(value, format));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (node.nodeType !== Node.ELEMENT_NODE)
|
|
49
|
+
return;
|
|
50
|
+
const el = node;
|
|
51
|
+
if (el.tagName === 'BR') {
|
|
52
|
+
out.push(lineBreak());
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (el.tagName === 'A') {
|
|
56
|
+
const children = inlineChildren(el, format);
|
|
57
|
+
if (!children.length)
|
|
58
|
+
return;
|
|
59
|
+
const newTab = el.dataset.newTab === '1' || el.getAttribute('target') === '_blank';
|
|
60
|
+
const rel = newTab ? ['noopener', 'noreferrer'] : null;
|
|
61
|
+
if (el.dataset.linkType === 'internal' && el.dataset.docId) {
|
|
62
|
+
out.push(linkNode({
|
|
63
|
+
linkType: 'internal',
|
|
64
|
+
relationTo: el.dataset.docCollection === 'categories' ? 'categories' : 'posts',
|
|
65
|
+
value: el.dataset.docId,
|
|
66
|
+
newTab,
|
|
67
|
+
rel,
|
|
68
|
+
}, children));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const url = el.getAttribute('href') ?? '';
|
|
72
|
+
out.push(linkNode({ linkType: 'custom', url, newTab, rel }, children));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const next = format | (FORMAT_BY_TAG[el.tagName] ?? 0) | formatFromStyle(el);
|
|
76
|
+
out.push(...inlineChildren(el, next));
|
|
77
|
+
});
|
|
78
|
+
return out;
|
|
79
|
+
};
|
|
80
|
+
const listItemsFrom = (el) => {
|
|
81
|
+
const items = [];
|
|
82
|
+
Array.from(el.children).forEach((child) => {
|
|
83
|
+
if (child.tagName !== 'LI')
|
|
84
|
+
return;
|
|
85
|
+
const li = child;
|
|
86
|
+
// A nested list is a child of its item, which is how Lexical models depth.
|
|
87
|
+
const nested = Array.from(li.children).find((c) => c.tagName === 'UL' || c.tagName === 'OL');
|
|
88
|
+
const inline = inlineChildren(nested ? withoutNested(li, nested) : li, 0);
|
|
89
|
+
const children = [...inline];
|
|
90
|
+
if (nested) {
|
|
91
|
+
const sub = listItemsFrom(nested);
|
|
92
|
+
if (sub.length)
|
|
93
|
+
children.push(list(nested.tagName === 'OL' ? 'ol' : 'ul', sub));
|
|
94
|
+
}
|
|
95
|
+
if (children.length)
|
|
96
|
+
items.push(listItem(children, items.length + 1));
|
|
97
|
+
});
|
|
98
|
+
return items;
|
|
99
|
+
};
|
|
100
|
+
/** Clone the item without its nested list so the inline walk stops at the right place. */
|
|
101
|
+
const withoutNested = (li, nested) => {
|
|
102
|
+
const clone = li.cloneNode(true);
|
|
103
|
+
const index = Array.from(li.children).indexOf(nested);
|
|
104
|
+
const target = clone.children[index];
|
|
105
|
+
if (target)
|
|
106
|
+
target.remove();
|
|
107
|
+
return clone;
|
|
108
|
+
};
|
|
109
|
+
const blockFrom = (el) => {
|
|
110
|
+
const tag = el.tagName;
|
|
111
|
+
if (tag === 'HR')
|
|
112
|
+
return horizontalRule();
|
|
113
|
+
if (tag === 'FIGURE' && el.dataset.mediaId) {
|
|
114
|
+
return uploadNode(el.dataset.mediaId, el.dataset.nodeId || undefined);
|
|
115
|
+
}
|
|
116
|
+
if (HEADING_TAGS.includes(tag.toLowerCase())) {
|
|
117
|
+
const children = inlineChildren(el, 0);
|
|
118
|
+
return children.length ? heading(tag.toLowerCase(), children) : null;
|
|
119
|
+
}
|
|
120
|
+
// H1 is the article title; a pasted one becomes the next level down.
|
|
121
|
+
if (tag === 'H1') {
|
|
122
|
+
const children = inlineChildren(el, 0);
|
|
123
|
+
return children.length ? heading('h2', children) : null;
|
|
124
|
+
}
|
|
125
|
+
if (tag === 'BLOCKQUOTE') {
|
|
126
|
+
const children = inlineChildren(el, 0);
|
|
127
|
+
return children.length ? quote(children) : null;
|
|
128
|
+
}
|
|
129
|
+
if (tag === 'UL' || tag === 'OL') {
|
|
130
|
+
const items = listItemsFrom(el);
|
|
131
|
+
return items.length ? list(tag === 'OL' ? 'ol' : 'ul', items) : null;
|
|
132
|
+
}
|
|
133
|
+
const children = inlineChildren(el, 0);
|
|
134
|
+
return paragraph(children);
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Read the editing surface as a document.
|
|
138
|
+
*
|
|
139
|
+
* Loose text typed straight into the root (which browsers do on the first
|
|
140
|
+
* keystroke of an empty editor) is gathered into a paragraph rather than lost.
|
|
141
|
+
*/
|
|
142
|
+
export const domToLexical = (root) => {
|
|
143
|
+
const children = [];
|
|
144
|
+
let loose = [];
|
|
145
|
+
const flushLoose = () => {
|
|
146
|
+
if (!loose.length)
|
|
147
|
+
return;
|
|
148
|
+
const holder = document.createElement('div');
|
|
149
|
+
loose.forEach((n) => holder.appendChild(n.cloneNode(true)));
|
|
150
|
+
const inline = inlineChildren(holder, 0);
|
|
151
|
+
if (inline.length)
|
|
152
|
+
children.push(paragraph(inline));
|
|
153
|
+
loose = [];
|
|
154
|
+
};
|
|
155
|
+
root.childNodes.forEach((node) => {
|
|
156
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
157
|
+
if ((node.textContent ?? '').trim())
|
|
158
|
+
loose.push(node);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (node.nodeType !== Node.ELEMENT_NODE)
|
|
162
|
+
return;
|
|
163
|
+
const el = node;
|
|
164
|
+
const isInline = !!FORMAT_BY_TAG[el.tagName] || el.tagName === 'A' || el.tagName === 'SPAN' || el.tagName === 'BR';
|
|
165
|
+
if (isInline) {
|
|
166
|
+
loose.push(el);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
flushLoose();
|
|
170
|
+
const block = blockFrom(el);
|
|
171
|
+
if (block)
|
|
172
|
+
children.push(block);
|
|
173
|
+
});
|
|
174
|
+
flushLoose();
|
|
175
|
+
// An editor that is visually empty still needs one paragraph to type into.
|
|
176
|
+
if (!children.length)
|
|
177
|
+
children.push(paragraph([]));
|
|
178
|
+
return {
|
|
179
|
+
root: { type: 'root', children, direction: 'ltr', format: '', indent: 0, version: 1 },
|
|
180
|
+
};
|
|
181
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for walking Lexical's stored node tree.
|
|
3
|
+
*
|
|
4
|
+
* Content is persisted as structured JSON, never as an HTML blob. That is the
|
|
5
|
+
* property that removes stored XSS as a category: there is no point at which
|
|
6
|
+
* untrusted markup is handed to a renderer, because there is no markup.
|
|
7
|
+
*/
|
|
8
|
+
type LexicalNode = {
|
|
9
|
+
type?: string;
|
|
10
|
+
text?: string;
|
|
11
|
+
children?: LexicalNode[];
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
};
|
|
14
|
+
export type LexicalRoot = {
|
|
15
|
+
root?: LexicalNode;
|
|
16
|
+
} | null | undefined;
|
|
17
|
+
export declare const walk: (node: LexicalNode | undefined, visit: (n: LexicalNode) => void) => void;
|
|
18
|
+
export declare const extractPlainText: (content: LexicalRoot) => string;
|
|
19
|
+
export declare const wordCount: (content: LexicalRoot) => number;
|
|
20
|
+
/** 225 wpm is the usual editorial assumption for web prose. */
|
|
21
|
+
export declare const readingMinutes: (content: LexicalRoot) => number;
|
|
22
|
+
/**
|
|
23
|
+
* Every internal link stored in the document, as content ids.
|
|
24
|
+
*
|
|
25
|
+
* The link picker stores an id rather than a URL, so links resolve to the
|
|
26
|
+
* current path at render time and survive slug changes permanently. This is
|
|
27
|
+
* what the broken-link and orphan-post reports are built on.
|
|
28
|
+
*/
|
|
29
|
+
export declare const internalLinkIds: (content: LexicalRoot) => string[];
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=lexical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexical.d.ts","sourceRoot":"","sources":["../../app/lib/lexical.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAA;AAEnE,eAAO,MAAM,IAAI,GAAI,MAAM,WAAW,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,KAAG,IAMrF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,KAAG,MAOvD,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,WAAW,KAAG,MAGhD,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,KAAG,MACH,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,WAAW,KAAG,MAAM,EAiB5D,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for walking Lexical's stored node tree.
|
|
3
|
+
*
|
|
4
|
+
* Content is persisted as structured JSON, never as an HTML blob. That is the
|
|
5
|
+
* property that removes stored XSS as a category: there is no point at which
|
|
6
|
+
* untrusted markup is handed to a renderer, because there is no markup.
|
|
7
|
+
*/
|
|
8
|
+
export const walk = (node, visit) => {
|
|
9
|
+
if (!node)
|
|
10
|
+
return;
|
|
11
|
+
visit(node);
|
|
12
|
+
if (Array.isArray(node.children)) {
|
|
13
|
+
for (const child of node.children)
|
|
14
|
+
walk(child, visit);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export const extractPlainText = (content) => {
|
|
18
|
+
const parts = [];
|
|
19
|
+
walk(content?.root, (n) => {
|
|
20
|
+
if (typeof n.text === 'string' && n.text)
|
|
21
|
+
parts.push(n.text);
|
|
22
|
+
if (n.type === 'paragraph' || n.type === 'heading' || n.type === 'listitem')
|
|
23
|
+
parts.push('\n');
|
|
24
|
+
});
|
|
25
|
+
return parts.join(' ').replace(/\s+/g, ' ').trim();
|
|
26
|
+
};
|
|
27
|
+
export const wordCount = (content) => {
|
|
28
|
+
const text = extractPlainText(content);
|
|
29
|
+
return text ? text.split(/\s+/).length : 0;
|
|
30
|
+
};
|
|
31
|
+
/** 225 wpm is the usual editorial assumption for web prose. */
|
|
32
|
+
export const readingMinutes = (content) => Math.max(1, Math.round(wordCount(content) / 225));
|
|
33
|
+
/**
|
|
34
|
+
* Every internal link stored in the document, as content ids.
|
|
35
|
+
*
|
|
36
|
+
* The link picker stores an id rather than a URL, so links resolve to the
|
|
37
|
+
* current path at render time and survive slug changes permanently. This is
|
|
38
|
+
* what the broken-link and orphan-post reports are built on.
|
|
39
|
+
*/
|
|
40
|
+
export const internalLinkIds = (content) => {
|
|
41
|
+
const ids = [];
|
|
42
|
+
walk(content?.root, (n) => {
|
|
43
|
+
if (n.type !== 'link' && n.type !== 'autolink')
|
|
44
|
+
return;
|
|
45
|
+
const fields = n.fields;
|
|
46
|
+
if (!fields || fields.linkType !== 'internal')
|
|
47
|
+
return;
|
|
48
|
+
const doc = fields.doc;
|
|
49
|
+
const value = doc?.value;
|
|
50
|
+
const id = typeof value === 'string' || typeof value === 'number'
|
|
51
|
+
? String(value)
|
|
52
|
+
: value && typeof value === 'object' && 'id' in value
|
|
53
|
+
? String(value.id)
|
|
54
|
+
: null;
|
|
55
|
+
if (id)
|
|
56
|
+
ids.push(id);
|
|
57
|
+
});
|
|
58
|
+
return [...new Set(ids)];
|
|
59
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Category, Post } from '../payload-types';
|
|
2
|
+
/** Normalise legacy single values and hasMany arrays into a clean id list. */
|
|
3
|
+
export declare const asCategoryIds: (value: unknown) => string[];
|
|
4
|
+
export declare const asCategories: (value: unknown) => Category[];
|
|
5
|
+
export declare const primaryCategory: (post: Pick<Post, "category"> | {
|
|
6
|
+
category?: unknown;
|
|
7
|
+
}) => Category | null;
|
|
8
|
+
export declare const primaryCategoryName: (post: Pick<Post, "category"> | {
|
|
9
|
+
category?: unknown;
|
|
10
|
+
}) => string | null;
|
|
11
|
+
//# sourceMappingURL=post-categories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-categories.d.ts","sourceRoot":"","sources":["../../app/lib/post-categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,EAepD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,QAAQ,EAOrD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,QAAQ,GAAG,IAC3D,CAAA;AAExC,eAAO,MAAM,mBAAmB,GAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KACpD,MAAM,GAAG,IAA2C,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Normalise legacy single values and hasMany arrays into a clean id list. */
|
|
2
|
+
export const asCategoryIds = (value) => {
|
|
3
|
+
if (value == null)
|
|
4
|
+
return [];
|
|
5
|
+
const list = Array.isArray(value) ? value : [value];
|
|
6
|
+
const ids = [];
|
|
7
|
+
for (const item of list) {
|
|
8
|
+
if (typeof item === 'string' || typeof item === 'number') {
|
|
9
|
+
ids.push(String(item));
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
if (item && typeof item === 'object' && 'id' in item) {
|
|
13
|
+
const id = item.id;
|
|
14
|
+
if (typeof id === 'string' || typeof id === 'number')
|
|
15
|
+
ids.push(String(id));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return [...new Set(ids)];
|
|
19
|
+
};
|
|
20
|
+
export const asCategories = (value) => {
|
|
21
|
+
if (value == null)
|
|
22
|
+
return [];
|
|
23
|
+
const list = Array.isArray(value) ? value : [value];
|
|
24
|
+
return list.filter((item) => Boolean(item && typeof item === 'object' && 'id' in item && 'name' in item && 'slug' in item));
|
|
25
|
+
};
|
|
26
|
+
export const primaryCategory = (post) => asCategories(post.category)[0] ?? null;
|
|
27
|
+
export const primaryCategoryName = (post) => primaryCategory(post)?.name ?? null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress-style post formats — shared between the editor, publish gate and
|
|
3
|
+
* public article layout so each format has one definition of what it needs.
|
|
4
|
+
*/
|
|
5
|
+
export declare const POST_FORMATS: readonly ["standard", "video", "audio", "quote", "image", "gallery", "link"];
|
|
6
|
+
export type PostFormat = (typeof POST_FORMATS)[number];
|
|
7
|
+
export type FormatMeta = {
|
|
8
|
+
videoUrl: string;
|
|
9
|
+
audioUrl: string;
|
|
10
|
+
videoMediaId?: string | null;
|
|
11
|
+
audioMediaId?: string | null;
|
|
12
|
+
quoteText: string;
|
|
13
|
+
quoteSource: string;
|
|
14
|
+
linkUrl: string;
|
|
15
|
+
linkTitle: string;
|
|
16
|
+
galleryIds: string[];
|
|
17
|
+
};
|
|
18
|
+
export declare const emptyFormatMeta: () => FormatMeta;
|
|
19
|
+
export declare const FORMAT_LABELS: Record<PostFormat, string>;
|
|
20
|
+
export declare const FORMAT_HINTS: Record<PostFormat, string>;
|
|
21
|
+
type PublishInput = {
|
|
22
|
+
postFormat?: string | null;
|
|
23
|
+
featuredImage?: unknown;
|
|
24
|
+
category?: unknown;
|
|
25
|
+
authors?: unknown;
|
|
26
|
+
excerpt?: unknown;
|
|
27
|
+
seo?: {
|
|
28
|
+
metaDescription?: unknown;
|
|
29
|
+
} | null;
|
|
30
|
+
formatMeta?: Partial<FormatMeta> | null;
|
|
31
|
+
};
|
|
32
|
+
/** Format-specific soft hints — no longer hard publish requirements. */
|
|
33
|
+
export declare const formatPublishBlockers: (_post: PublishInput) => string[];
|
|
34
|
+
export declare const publishBlockersForPost: (post: PublishInput) => string[];
|
|
35
|
+
/** Resolve a watchable embed URL for common providers. */
|
|
36
|
+
export declare const videoEmbedSrc: (url: string) => string | null;
|
|
37
|
+
export declare const isAudioUrl: (url: string) => boolean;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=post-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-format.d.ts","sourceRoot":"","sources":["../../app/lib/post-format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,8EAQf,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,UAQjC,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQnD,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;CACxC,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,GAAI,OAAO,YAAY,KAAG,MAAM,EAAQ,CAAA;AAE1E,eAAO,MAAM,sBAAsB,GAAI,MAAM,YAAY,KAAG,MAAM,EAKjE,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IA0BpD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,OAIxC,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress-style post formats — shared between the editor, publish gate and
|
|
3
|
+
* public article layout so each format has one definition of what it needs.
|
|
4
|
+
*/
|
|
5
|
+
export const POST_FORMATS = [
|
|
6
|
+
'standard',
|
|
7
|
+
'video',
|
|
8
|
+
'audio',
|
|
9
|
+
'quote',
|
|
10
|
+
'image',
|
|
11
|
+
'gallery',
|
|
12
|
+
'link',
|
|
13
|
+
];
|
|
14
|
+
export const emptyFormatMeta = () => ({
|
|
15
|
+
videoUrl: '',
|
|
16
|
+
audioUrl: '',
|
|
17
|
+
quoteText: '',
|
|
18
|
+
quoteSource: '',
|
|
19
|
+
linkUrl: '',
|
|
20
|
+
linkTitle: '',
|
|
21
|
+
galleryIds: [],
|
|
22
|
+
});
|
|
23
|
+
export const FORMAT_LABELS = {
|
|
24
|
+
standard: 'Standard',
|
|
25
|
+
video: 'Video',
|
|
26
|
+
audio: 'Audio',
|
|
27
|
+
quote: 'Quote',
|
|
28
|
+
image: 'Image',
|
|
29
|
+
gallery: 'Gallery',
|
|
30
|
+
link: 'Link',
|
|
31
|
+
};
|
|
32
|
+
export const FORMAT_HINTS = {
|
|
33
|
+
standard: 'A classic article with a rich text body.',
|
|
34
|
+
video: 'Lead with an uploaded video file (MP4, WebM or MOV).',
|
|
35
|
+
audio: 'Lead with an uploaded audio clip (MP3, WAV, M4A or similar).',
|
|
36
|
+
quote: 'Highlight a pull quote with an optional attribution.',
|
|
37
|
+
image: 'Let a single photograph carry the story.',
|
|
38
|
+
gallery: 'Show a grid of images with optional supporting copy.',
|
|
39
|
+
link: 'Point readers to an external resource.',
|
|
40
|
+
};
|
|
41
|
+
/** Format-specific soft hints — no longer hard publish requirements. */
|
|
42
|
+
export const formatPublishBlockers = (_post) => [];
|
|
43
|
+
export const publishBlockersForPost = (post) => {
|
|
44
|
+
// Title is the only hard requirement (enforced in savePost / Posts collection).
|
|
45
|
+
// Category, authors, excerpt, featured media and format extras are optional.
|
|
46
|
+
void post;
|
|
47
|
+
return [];
|
|
48
|
+
};
|
|
49
|
+
/** Resolve a watchable embed URL for common providers. */
|
|
50
|
+
export const videoEmbedSrc = (url) => {
|
|
51
|
+
const raw = url.trim();
|
|
52
|
+
if (!raw)
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const u = new URL(raw);
|
|
56
|
+
const host = u.hostname.replace(/^www\./, '');
|
|
57
|
+
if (host === 'youtube.com' || host === 'm.youtube.com') {
|
|
58
|
+
const id = u.searchParams.get('v') || u.pathname.split('/').filter(Boolean).pop();
|
|
59
|
+
return id ? `https://www.youtube.com/embed/${id}` : null;
|
|
60
|
+
}
|
|
61
|
+
if (host === 'youtu.be') {
|
|
62
|
+
const id = u.pathname.replace('/', '');
|
|
63
|
+
return id ? `https://www.youtube.com/embed/${id}` : null;
|
|
64
|
+
}
|
|
65
|
+
if (host === 'vimeo.com') {
|
|
66
|
+
const id = u.pathname.split('/').filter(Boolean).pop();
|
|
67
|
+
return id ? `https://player.vimeo.com/video/${id}` : null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
if (/\.(mp4|webm|ogg)(\?|$)/i.test(raw))
|
|
74
|
+
return raw;
|
|
75
|
+
return null;
|
|
76
|
+
};
|
|
77
|
+
export const isAudioUrl = (url) => {
|
|
78
|
+
const raw = url.trim();
|
|
79
|
+
if (!raw)
|
|
80
|
+
return false;
|
|
81
|
+
return /\.(mp3|wav|ogg|m4a|aac)(\?|$)/i.test(raw) || raw.includes('soundcloud.com') || raw.includes('spotify.com');
|
|
82
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../app/lib/publishing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAAC;AAC/D,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,WAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function publishBlockers(post) { return []; }
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Post } from '../payload-types';
|
|
2
|
+
/**
|
|
3
|
+
* Read paths for the public renderer.
|
|
4
|
+
*
|
|
5
|
+
* Each query is wrapped in a cache entry tagged with the same tags the publish
|
|
6
|
+
* hook invalidates, so a publish evicts exactly the pages it affects and leaves
|
|
7
|
+
* everything else warm at the edge.
|
|
8
|
+
*
|
|
9
|
+
* These run through the Local API — an in-process function call, not an HTTP
|
|
10
|
+
* request — so there is no network hop between the renderer and the database.
|
|
11
|
+
*/
|
|
12
|
+
export declare const POSTS_PER_PAGE = 12;
|
|
13
|
+
export type PublicBrandOption = {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
slug: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const getPublicBrands: () => any;
|
|
19
|
+
/** Public listing used by /api/blogs — supports brand scope + search. */
|
|
20
|
+
export declare const findPublicPosts: (args: {
|
|
21
|
+
tenantId?: string | number | null;
|
|
22
|
+
page?: number;
|
|
23
|
+
categoryId?: string | number;
|
|
24
|
+
q?: string;
|
|
25
|
+
}) => Promise<any>;
|
|
26
|
+
export declare const getPublishedPosts: (tenantId: string | number, tenantSlug: string) => any;
|
|
27
|
+
/** Shared preview hosts (admin "All brands"): every published public post, same DATABASE_URI. */
|
|
28
|
+
export declare const getAllPublishedPosts: () => any;
|
|
29
|
+
export declare const getPostBySlug: (tenantId: string | number, tenantSlug: string) => any;
|
|
30
|
+
/**
|
|
31
|
+
* Uncached draft/live lookup for `/api/preview`. Must not use unstable_cache —
|
|
32
|
+
* editors need the exact document they just saved, including unpublished drafts.
|
|
33
|
+
*/
|
|
34
|
+
export declare const getPostBySlugPreview: (tenantId: string | number, slug: string) => Promise<Post | null>;
|
|
35
|
+
export declare const getCategoryBySlug: (tenantId: string | number, tenantSlug: string) => any;
|
|
36
|
+
export declare const getCategories: (tenantId: string | number, tenantSlug: string) => any;
|
|
37
|
+
export declare const getAllCategories: () => any;
|
|
38
|
+
/**
|
|
39
|
+
* Related posts, used for internal linking. Same category first, then most
|
|
40
|
+
* recent, always excluding the current post.
|
|
41
|
+
*/
|
|
42
|
+
export declare const getRelatedPosts: (tenantId: string | number, tenantSlug: string) => any;
|
|
43
|
+
/** Brand published posts for the article-side Table of Contents rail. */
|
|
44
|
+
export declare const getBrandTocPosts: (tenantId: string | number, tenantSlug: string) => any;
|
|
45
|
+
/** Every published post for the sitemap, id + slug + timestamps only. */
|
|
46
|
+
export declare const getSitemapEntries: (tenantId: string | number, tenantSlug: string) => any;
|
|
47
|
+
export declare const getAuthorBySlug: (tenantId: string | number, tenantSlug: string) => any;
|
|
48
|
+
export declare const getPostsByAuthor: (tenantId: string | number, tenantSlug: string) => any;
|
|
49
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../app/lib/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,IAAI,EAAU,MAAM,kBAAkB,CAAA;AAI9D;;;;;;;;;GASG;AAEH,eAAO,MAAM,cAAc,KAAK,CAAA;AA2BhC,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,eAAO,MAAM,eAAe,WAoBzB,CAAA;AAEH,yEAAyE;AACzE,eAAO,MAAM,eAAe,GAAU,MAAM;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAA;CACX,iBAYA,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QAkB5E,CAAA;AAEH,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,WAiB9B,CAAA;AAEH,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QA6BxE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,GAAG,MAAM,EACzB,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,GAAG,IAAI,CAcrB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QAkB5E,CAAA;AAEH,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QAiBxE,CAAA;AAEH,eAAO,MAAM,gBAAgB,WAgB1B,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QA0D1E,CAAA;AAEH,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QAoC3E,CAAA;AAEH,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QA0C5E,CAAA;AAEH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QAkB1E,CAAA;AAEH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,QA6B3E,CAAA"}
|