@wordpress/block-library 8.13.0 → 8.15.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/CHANGELOG.md +4 -0
- package/build/archives/index.js +5 -1
- package/build/archives/index.js.map +1 -1
- package/build/audio/index.js +5 -1
- package/build/audio/index.js.map +1 -1
- package/build/avatar/edit.js +1 -0
- package/build/avatar/edit.js.map +1 -1
- package/build/avatar/index.js +1 -1
- package/build/block/edit.js +1 -1
- package/build/block/edit.js.map +1 -1
- package/build/block/edit.native.js +6 -9
- package/build/block/edit.native.js.map +1 -1
- package/build/block/index.js +2 -1
- package/build/block/index.js.map +1 -1
- package/build/buttons/edit.js +7 -3
- package/build/buttons/edit.js.map +1 -1
- package/build/categories/index.js +5 -1
- package/build/categories/index.js.map +1 -1
- package/build/code/index.js +5 -1
- package/build/code/index.js.map +1 -1
- package/build/column/edit.native.js +1 -4
- package/build/column/edit.native.js.map +1 -1
- package/build/column/index.js +1 -0
- package/build/column/index.js.map +1 -1
- package/build/columns/edit.js +1 -0
- package/build/columns/edit.js.map +1 -1
- package/build/comment-author-avatar/edit.js +1 -0
- package/build/comment-author-avatar/edit.js.map +1 -1
- package/build/comments/index.js +1 -0
- package/build/comments/index.js.map +1 -1
- package/build/cover/deprecated.js +4 -2
- package/build/cover/deprecated.js.map +1 -1
- package/build/cover/edit/inspector-controls.js +2 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/index.js +1 -0
- package/build/cover/index.js.map +1 -1
- package/build/details/index.js +5 -1
- package/build/details/index.js.map +1 -1
- package/build/embed/embed-placeholder.native.js +37 -13
- package/build/embed/embed-placeholder.native.js.map +1 -1
- package/build/embed/util.js +9 -8
- package/build/embed/util.js.map +1 -1
- package/build/file/inspector.js +1 -0
- package/build/file/inspector.js.map +1 -1
- package/build/file/{interactivity.js → view-interactivity.js} +6 -2
- package/build/file/view-interactivity.js.map +1 -0
- package/build/footnotes/edit.js +20 -1
- package/build/footnotes/edit.js.map +1 -1
- package/build/footnotes/format.js +19 -16
- package/build/footnotes/format.js.map +1 -1
- package/build/footnotes/index.js +0 -1
- package/build/footnotes/index.js.map +1 -1
- package/build/gallery/edit.js +1 -1
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/index.js +3 -1
- package/build/gallery/index.js.map +1 -1
- package/build/group/index.js +1 -0
- package/build/group/index.js.map +1 -1
- package/build/heading/index.js +5 -1
- package/build/heading/index.js.map +1 -1
- package/build/heading/transforms.js +5 -1
- package/build/heading/transforms.js.map +1 -1
- package/build/image/deprecated.js +453 -175
- package/build/image/deprecated.js.map +1 -1
- package/build/image/edit.js +0 -4
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +96 -43
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +6 -0
- package/build/image/index.js.map +1 -1
- package/build/image/save.js +8 -1
- package/build/image/save.js.map +1 -1
- package/build/image/utils.js +18 -0
- package/build/image/utils.js.map +1 -1
- package/build/image/{interactivity.js → view-interactivity.js} +86 -44
- package/build/image/view-interactivity.js.map +1 -0
- package/build/index.js +12 -3
- package/build/index.js.map +1 -1
- package/build/latest-comments/edit.js +1 -0
- package/build/latest-comments/edit.js.map +1 -1
- package/build/latest-posts/edit.js +2 -0
- package/build/latest-posts/edit.js.map +1 -1
- package/build/list/edit.js +4 -4
- package/build/list/edit.js.map +1 -1
- package/build/list/index.js +5 -1
- package/build/list/index.js.map +1 -1
- package/build/list-item/utils.js +6 -1
- package/build/list-item/utils.js.map +1 -1
- package/build/media-text/index.js +1 -0
- package/build/media-text/index.js.map +1 -1
- package/build/media-text/media-container.native.js +2 -1
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/missing/edit.js +22 -8
- package/build/missing/edit.js.map +1 -1
- package/build/missing/edit.native.js +7 -5
- package/build/missing/edit.native.js.map +1 -1
- package/build/navigation/constants.js +10 -4
- package/build/navigation/constants.js.map +1 -1
- package/build/navigation/edit/index.js +17 -3
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +2 -2
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/menu-inspector-controls.js +0 -1
- package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +33 -45
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation/view-interactivity.js +185 -0
- package/build/navigation/view-interactivity.js.map +1 -0
- package/build/navigation-link/edit.js +12 -18
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/link-ui.js +12 -2
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/navigation-submenu/edit.js +2 -2
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +3 -3
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/page-list/edit.js +34 -39
- package/build/page-list/edit.js.map +1 -1
- package/build/page-list/use-convert-to-navigation-links.js +2 -15
- package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
- package/build/paragraph/index.js +1 -0
- package/build/paragraph/index.js.map +1 -1
- package/build/paragraph/transforms.js +1 -0
- package/build/paragraph/transforms.js.map +1 -1
- package/build/post-comments-form/index.js +1 -0
- package/build/post-comments-form/index.js.map +1 -1
- package/build/post-navigation-link/index.js +1 -0
- package/build/post-navigation-link/index.js.map +1 -1
- package/build/post-time-to-read/index.js +5 -1
- package/build/post-time-to-read/index.js.map +1 -1
- package/build/query-pagination/edit.js +1 -1
- package/build/query-pagination/edit.js.map +1 -1
- package/build/query-pagination-numbers/index.js +1 -1
- package/build/query-title/edit.js +43 -1
- package/build/query-title/edit.js.map +1 -1
- package/build/quote/index.js +1 -0
- package/build/quote/index.js.map +1 -1
- package/build/quote/transforms.js +8 -0
- package/build/quote/transforms.js.map +1 -1
- package/build/rss/edit.js +3 -0
- package/build/rss/edit.js.map +1 -1
- package/build/search/edit.js +4 -3
- package/build/search/edit.js.map +1 -1
- package/build/search/index.js +1 -0
- package/build/search/index.js.map +1 -1
- package/build/site-logo/edit.js +1 -0
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-logo/index.js +5 -1
- package/build/site-logo/index.js.map +1 -1
- package/build/site-tagline/icon.js +1 -1
- package/build/site-tagline/icon.js.map +1 -1
- package/build/site-tagline/index.js +5 -1
- package/build/site-tagline/index.js.map +1 -1
- package/build/site-title/index.js +5 -1
- package/build/site-title/index.js.map +1 -1
- package/build/social-links/index.js +3 -1
- package/build/social-links/index.js.map +1 -1
- package/build/table/index.js +5 -1
- package/build/table/index.js.map +1 -1
- package/build/tag-cloud/edit.js +1 -0
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/template-part/edit/index.js +1 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/term-description/index.js +1 -0
- package/build/term-description/index.js.map +1 -1
- package/build/text-columns/edit.js +1 -0
- package/build/text-columns/edit.js.map +1 -1
- package/build/verse/index.js +5 -1
- package/build/verse/index.js.map +1 -1
- package/build/video/deprecated.js +5 -1
- package/build/video/deprecated.js.map +1 -1
- package/build/video/index.js +5 -1
- package/build/video/index.js.map +1 -1
- package/build-module/archives/index.js +5 -1
- package/build-module/archives/index.js.map +1 -1
- package/build-module/audio/index.js +5 -1
- package/build-module/audio/index.js.map +1 -1
- package/build-module/avatar/edit.js +1 -0
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/avatar/index.js +1 -1
- package/build-module/block/edit.js +1 -1
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/edit.native.js +7 -9
- package/build-module/block/edit.native.js.map +1 -1
- package/build-module/block/index.js +2 -1
- package/build-module/block/index.js.map +1 -1
- package/build-module/buttons/edit.js +7 -3
- package/build-module/buttons/edit.js.map +1 -1
- package/build-module/categories/index.js +5 -1
- package/build-module/categories/index.js.map +1 -1
- package/build-module/code/index.js +5 -1
- package/build-module/code/index.js.map +1 -1
- package/build-module/column/edit.native.js +1 -4
- package/build-module/column/edit.native.js.map +1 -1
- package/build-module/column/index.js +1 -0
- package/build-module/column/index.js.map +1 -1
- package/build-module/columns/edit.js +1 -0
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/comment-author-avatar/edit.js +1 -0
- package/build-module/comment-author-avatar/edit.js.map +1 -1
- package/build-module/comments/index.js +1 -0
- package/build-module/comments/index.js.map +1 -1
- package/build-module/cover/deprecated.js +4 -2
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js +2 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/index.js +1 -0
- package/build-module/cover/index.js.map +1 -1
- package/build-module/details/index.js +5 -1
- package/build-module/details/index.js.map +1 -1
- package/build-module/embed/embed-placeholder.native.js +37 -14
- package/build-module/embed/embed-placeholder.native.js.map +1 -1
- package/build-module/embed/util.js +6 -6
- package/build-module/embed/util.js.map +1 -1
- package/build-module/file/inspector.js +1 -0
- package/build-module/file/inspector.js.map +1 -1
- package/build-module/file/{interactivity.js → view-interactivity.js} +6 -2
- package/build-module/file/view-interactivity.js.map +1 -0
- package/build-module/footnotes/edit.js +18 -2
- package/build-module/footnotes/edit.js.map +1 -1
- package/build-module/footnotes/format.js +19 -16
- package/build-module/footnotes/format.js.map +1 -1
- package/build-module/footnotes/index.js +0 -1
- package/build-module/footnotes/index.js.map +1 -1
- package/build-module/gallery/edit.js +1 -1
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/index.js +3 -1
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/group/index.js +1 -0
- package/build-module/group/index.js.map +1 -1
- package/build-module/heading/index.js +5 -1
- package/build-module/heading/index.js.map +1 -1
- package/build-module/heading/transforms.js +5 -1
- package/build-module/heading/transforms.js.map +1 -1
- package/build-module/image/deprecated.js +454 -176
- package/build-module/image/deprecated.js.map +1 -1
- package/build-module/image/edit.js +0 -4
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +96 -46
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +6 -0
- package/build-module/image/index.js.map +1 -1
- package/build-module/image/save.js +8 -1
- package/build-module/image/save.js.map +1 -1
- package/build-module/image/utils.js +16 -0
- package/build-module/image/utils.js.map +1 -1
- package/build-module/image/{interactivity.js → view-interactivity.js} +86 -44
- package/build-module/image/view-interactivity.js.map +1 -0
- package/build-module/index.js +12 -3
- package/build-module/index.js.map +1 -1
- package/build-module/latest-comments/edit.js +1 -0
- package/build-module/latest-comments/edit.js.map +1 -1
- package/build-module/latest-posts/edit.js +2 -0
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/list/edit.js +4 -4
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list/index.js +5 -1
- package/build-module/list/index.js.map +1 -1
- package/build-module/list-item/utils.js +6 -1
- package/build-module/list-item/utils.js.map +1 -1
- package/build-module/media-text/index.js +1 -0
- package/build-module/media-text/index.js.map +1 -1
- package/build-module/media-text/media-container.native.js +2 -1
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/missing/edit.js +22 -8
- package/build-module/missing/edit.js.map +1 -1
- package/build-module/missing/edit.native.js +8 -6
- package/build-module/missing/edit.native.js.map +1 -1
- package/build-module/navigation/constants.js +8 -3
- package/build-module/navigation/constants.js.map +1 -1
- package/build-module/navigation/edit/index.js +18 -4
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +2 -2
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/menu-inspector-controls.js +0 -1
- package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +35 -47
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation/view-interactivity.js +182 -0
- package/build-module/navigation/view-interactivity.js.map +1 -0
- package/build-module/navigation-link/edit.js +13 -19
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/link-ui.js +13 -3
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +2 -2
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +3 -3
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/page-list/edit.js +34 -39
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/page-list/use-convert-to-navigation-links.js +3 -16
- package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
- package/build-module/paragraph/index.js +1 -0
- package/build-module/paragraph/index.js.map +1 -1
- package/build-module/paragraph/transforms.js +1 -0
- package/build-module/paragraph/transforms.js.map +1 -1
- package/build-module/post-comments-form/index.js +1 -0
- package/build-module/post-comments-form/index.js.map +1 -1
- package/build-module/post-navigation-link/index.js +1 -0
- package/build-module/post-navigation-link/index.js.map +1 -1
- package/build-module/post-time-to-read/index.js +5 -1
- package/build-module/post-time-to-read/index.js.map +1 -1
- package/build-module/query-pagination/edit.js +1 -1
- package/build-module/query-pagination/edit.js.map +1 -1
- package/build-module/query-pagination-numbers/index.js +1 -1
- package/build-module/query-title/edit.js +44 -3
- package/build-module/query-title/edit.js.map +1 -1
- package/build-module/quote/index.js +1 -0
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/transforms.js +8 -0
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/rss/edit.js +3 -0
- package/build-module/rss/edit.js.map +1 -1
- package/build-module/search/edit.js +4 -3
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/index.js +1 -0
- package/build-module/search/index.js.map +1 -1
- package/build-module/site-logo/edit.js +1 -0
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-logo/index.js +5 -1
- package/build-module/site-logo/index.js.map +1 -1
- package/build-module/site-tagline/icon.js +1 -1
- package/build-module/site-tagline/icon.js.map +1 -1
- package/build-module/site-tagline/index.js +5 -1
- package/build-module/site-tagline/index.js.map +1 -1
- package/build-module/site-title/index.js +5 -1
- package/build-module/site-title/index.js.map +1 -1
- package/build-module/social-links/index.js +3 -1
- package/build-module/social-links/index.js.map +1 -1
- package/build-module/table/index.js +5 -1
- package/build-module/table/index.js.map +1 -1
- package/build-module/tag-cloud/edit.js +1 -0
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +1 -1
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/term-description/index.js +1 -0
- package/build-module/term-description/index.js.map +1 -1
- package/build-module/text-columns/edit.js +1 -0
- package/build-module/text-columns/edit.js.map +1 -1
- package/build-module/verse/index.js +5 -1
- package/build-module/verse/index.js.map +1 -1
- package/build-module/video/deprecated.js +5 -1
- package/build-module/video/deprecated.js.map +1 -1
- package/build-module/video/index.js +5 -1
- package/build-module/video/index.js.map +1 -1
- package/build-style/details/style-rtl.css +4 -2
- package/build-style/details/style.css +4 -2
- package/build-style/footnotes/style-rtl.css +4 -3
- package/build-style/footnotes/style.css +4 -3
- package/build-style/image/style-rtl.css +16 -2
- package/build-style/image/style.css +16 -2
- package/build-style/navigation/style-rtl.css +14 -2
- package/build-style/navigation/style.css +14 -2
- package/build-style/query-pagination/style-rtl.css +4 -2
- package/build-style/query-pagination/style.css +4 -2
- package/build-style/style-rtl.css +42 -11
- package/build-style/style.css +42 -11
- package/package.json +33 -37
- package/src/archives/block.json +5 -1
- package/src/audio/block.json +5 -1
- package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
- package/src/avatar/block.json +1 -1
- package/src/avatar/edit.js +1 -0
- package/src/block/block.json +2 -1
- package/src/block/edit.js +2 -2
- package/src/block/edit.native.js +8 -12
- package/src/block/editor.native.scss +2 -2
- package/src/block/test/edit.native.js +4 -4
- package/src/buttons/edit.js +4 -4
- package/src/categories/block.json +5 -1
- package/src/code/block.json +5 -1
- package/src/column/block.json +1 -0
- package/src/column/edit.native.js +4 -10
- package/src/column/editor.native.scss +0 -4
- package/src/columns/edit.js +1 -0
- package/src/comment-author-avatar/edit.js +1 -0
- package/src/comment-template/index.php +5 -2
- package/src/comments/block.json +1 -0
- package/src/cover/block.json +1 -0
- package/src/cover/deprecated.js +2 -0
- package/src/cover/edit/inspector-controls.js +1 -0
- package/src/details/block.json +5 -1
- package/src/embed/embed-placeholder.native.js +80 -47
- package/src/embed/styles.native.scss +54 -18
- package/src/embed/test/index.native.js +5 -5
- package/src/embed/util.js +4 -6
- package/src/file/index.php +4 -3
- package/src/file/inspector.js +1 -0
- package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
- package/src/file/{interactivity.js → view-interactivity.js} +4 -1
- package/src/footnotes/block.json +0 -1
- package/src/footnotes/edit.js +21 -2
- package/src/footnotes/format.js +22 -20
- package/src/footnotes/index.php +11 -9
- package/src/footnotes/style.scss +6 -3
- package/src/gallery/block.json +3 -1
- package/src/gallery/edit.js +1 -1
- package/src/gallery/test/index.native.js +17 -16
- package/src/group/block.json +1 -0
- package/src/heading/block.json +5 -1
- package/src/heading/test/index.native.js +18 -0
- package/src/home-link/index.php +15 -2
- package/src/image/block.json +6 -0
- package/src/image/deprecated.js +597 -320
- package/src/image/edit.js +0 -4
- package/src/image/image.js +131 -62
- package/src/image/index.php +47 -8
- package/src/image/save.js +9 -1
- package/src/image/style.scss +15 -2
- package/src/image/test/edit.native.js +1 -1
- package/src/image/utils.js +16 -0
- package/src/image/{interactivity.js → view-interactivity.js} +99 -50
- package/src/index.js +18 -1
- package/src/latest-comments/edit.js +1 -0
- package/src/latest-posts/edit.js +2 -0
- package/src/latest-posts/index.php +1 -1
- package/src/list/block.json +5 -1
- package/src/list/edit.js +6 -4
- package/src/list/test/edit.native.js +129 -33
- package/src/media-text/block.json +1 -0
- package/src/media-text/media-container.native.js +1 -0
- package/src/missing/edit.js +31 -11
- package/src/missing/edit.native.js +12 -10
- package/src/missing/style.native.scss +19 -12
- package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
- package/src/navigation/constants.js +12 -6
- package/src/navigation/edit/index.js +30 -3
- package/src/navigation/edit/inner-blocks.js +2 -2
- package/src/navigation/edit/menu-inspector-controls.js +0 -1
- package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
- package/src/navigation/index.php +43 -16
- package/src/navigation/style.scss +27 -8
- package/src/navigation/use-navigation-menu.js +39 -63
- package/src/navigation/view-interactivity.js +196 -0
- package/src/navigation-link/edit.js +61 -61
- package/src/navigation-link/link-ui.js +14 -2
- package/src/navigation-submenu/edit.js +2 -2
- package/src/navigation-submenu/index.php +2 -12
- package/src/page-list/convert-to-links-modal.js +3 -3
- package/src/page-list/edit.js +65 -62
- package/src/page-list/use-convert-to-navigation-links.js +3 -20
- package/src/paragraph/block.json +1 -0
- package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
- package/src/paragraph/test/edit.native.js +26 -0
- package/src/post-comments-form/block.json +1 -0
- package/src/post-navigation-link/block.json +1 -0
- package/src/post-template/index.php +4 -2
- package/src/post-time-to-read/block.json +5 -1
- package/src/post-title/index.php +6 -3
- package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
- package/src/query-pagination/edit.js +17 -14
- package/src/query-pagination-numbers/block.json +1 -1
- package/src/query-title/edit.js +48 -6
- package/src/quote/block.json +1 -0
- package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
- package/src/quote/test/transforms.native.js +5 -1
- package/src/quote/transforms.js +13 -0
- package/src/rss/edit.js +3 -0
- package/src/search/block.json +1 -0
- package/src/search/edit.js +4 -3
- package/src/search/index.php +22 -4
- package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
- package/src/site-logo/block.json +5 -1
- package/src/site-logo/edit.js +1 -0
- package/src/site-tagline/block.json +5 -1
- package/src/site-tagline/icon.js +1 -1
- package/src/site-title/block.json +5 -1
- package/src/social-links/block.json +3 -1
- package/src/table/block.json +5 -1
- package/src/tag-cloud/edit.js +1 -0
- package/src/template-part/edit/index.js +1 -1
- package/src/template-part/index.php +9 -15
- package/src/term-description/block.json +1 -0
- package/src/text-columns/edit.js +1 -0
- package/src/verse/block.json +5 -1
- package/src/video/block.json +5 -1
- package/build/file/interactivity.js.map +0 -1
- package/build/gallery/shared-icon.native.js +0 -38
- package/build/gallery/shared-icon.native.js.map +0 -1
- package/build/heading/heading-level-icon.js +0 -61
- package/build/heading/heading-level-icon.js.map +0 -1
- package/build/image/interactivity.js.map +0 -1
- package/build/navigation/interactivity.js +0 -167
- package/build/navigation/interactivity.js.map +0 -1
- package/build/utils/interactivity/constants.js +0 -9
- package/build/utils/interactivity/constants.js.map +0 -1
- package/build/utils/interactivity/directives.js +0 -222
- package/build/utils/interactivity/directives.js.map +0 -1
- package/build/utils/interactivity/hooks.js +0 -159
- package/build/utils/interactivity/hooks.js.map +0 -1
- package/build/utils/interactivity/hydration.js +0 -34
- package/build/utils/interactivity/hydration.js.map +0 -1
- package/build/utils/interactivity/index.js +0 -32
- package/build/utils/interactivity/index.js.map +0 -1
- package/build/utils/interactivity/portals.js +0 -108
- package/build/utils/interactivity/portals.js.map +0 -1
- package/build/utils/interactivity/store.js +0 -66
- package/build/utils/interactivity/store.js.map +0 -1
- package/build/utils/interactivity/utils.js +0 -87
- package/build/utils/interactivity/utils.js.map +0 -1
- package/build/utils/interactivity/vdom.js +0 -119
- package/build/utils/interactivity/vdom.js.map +0 -1
- package/build-module/file/interactivity.js.map +0 -1
- package/build-module/gallery/shared-icon.native.js +0 -24
- package/build-module/gallery/shared-icon.native.js.map +0 -1
- package/build-module/heading/heading-level-icon.js +0 -53
- package/build-module/heading/heading-level-icon.js.map +0 -1
- package/build-module/image/interactivity.js.map +0 -1
- package/build-module/navigation/interactivity.js +0 -164
- package/build-module/navigation/interactivity.js.map +0 -1
- package/build-module/utils/interactivity/constants.js +0 -2
- package/build-module/utils/interactivity/constants.js.map +0 -1
- package/build-module/utils/interactivity/directives.js +0 -209
- package/build-module/utils/interactivity/directives.js.map +0 -1
- package/build-module/utils/interactivity/hooks.js +0 -145
- package/build-module/utils/interactivity/hooks.js.map +0 -1
- package/build-module/utils/interactivity/hydration.js +0 -21
- package/build-module/utils/interactivity/hydration.js.map +0 -1
- package/build-module/utils/interactivity/index.js +0 -15
- package/build-module/utils/interactivity/index.js.map +0 -1
- package/build-module/utils/interactivity/portals.js +0 -100
- package/build-module/utils/interactivity/portals.js.map +0 -1
- package/build-module/utils/interactivity/store.js +0 -55
- package/build-module/utils/interactivity/store.js.map +0 -1
- package/build-module/utils/interactivity/utils.js +0 -75
- package/build-module/utils/interactivity/utils.js.map +0 -1
- package/build-module/utils/interactivity/vdom.js +0 -107
- package/build-module/utils/interactivity/vdom.js.map +0 -1
- package/src/gallery/shared-icon.native.js +0 -23
- package/src/heading/heading-level-icon.js +0 -48
- package/src/navigation/interactivity.js +0 -169
- package/src/utils/interactivity/constants.js +0 -1
- package/src/utils/interactivity/directives.js +0 -200
- package/src/utils/interactivity/hooks.js +0 -145
- package/src/utils/interactivity/hydration.js +0 -22
- package/src/utils/interactivity/index.js +0 -15
- package/src/utils/interactivity/portals.js +0 -98
- package/src/utils/interactivity/store.js +0 -45
- package/src/utils/interactivity/utils.js +0 -66
- package/src/utils/interactivity/vdom.js +0 -111
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _element = require("@wordpress/element");
|
|
9
|
-
|
|
10
|
-
var _hooks = require("preact/hooks");
|
|
11
|
-
|
|
12
|
-
var _deepsignal = require("deepsignal");
|
|
13
|
-
|
|
14
|
-
var _portals = require("./portals.js");
|
|
15
|
-
|
|
16
|
-
var _utils = require("./utils");
|
|
17
|
-
|
|
18
|
-
var _hooks2 = require("./hooks");
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* External dependencies
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Internal dependencies
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Internal dependencies
|
|
30
|
-
*/
|
|
31
|
-
const isObject = item => item && typeof item === 'object' && !Array.isArray(item);
|
|
32
|
-
|
|
33
|
-
const mergeDeepSignals = (target, source) => {
|
|
34
|
-
for (const k in source) {
|
|
35
|
-
if (typeof (0, _deepsignal.peek)(target, k) === 'undefined') {
|
|
36
|
-
target[`$${k}`] = source[`$${k}`];
|
|
37
|
-
} else if (isObject((0, _deepsignal.peek)(target, k)) && isObject((0, _deepsignal.peek)(source, k))) {
|
|
38
|
-
mergeDeepSignals(target[`$${k}`].peek(), source[`$${k}`].peek());
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
var _default = () => {
|
|
44
|
-
// data-wp-context
|
|
45
|
-
(0, _hooks2.directive)('context', ({
|
|
46
|
-
directives: {
|
|
47
|
-
context: {
|
|
48
|
-
default: context
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
props: {
|
|
52
|
-
children
|
|
53
|
-
},
|
|
54
|
-
context: inherited
|
|
55
|
-
}) => {
|
|
56
|
-
const {
|
|
57
|
-
Provider
|
|
58
|
-
} = inherited;
|
|
59
|
-
const inheritedValue = (0, _hooks.useContext)(inherited);
|
|
60
|
-
const value = (0, _hooks.useMemo)(() => {
|
|
61
|
-
const localValue = (0, _deepsignal.deepSignal)(context);
|
|
62
|
-
mergeDeepSignals(localValue, inheritedValue);
|
|
63
|
-
return localValue;
|
|
64
|
-
}, [context, inheritedValue]);
|
|
65
|
-
return (0, _element.createElement)(Provider, {
|
|
66
|
-
value: value
|
|
67
|
-
}, children);
|
|
68
|
-
}, {
|
|
69
|
-
priority: 5
|
|
70
|
-
}); // data-wp-body
|
|
71
|
-
|
|
72
|
-
(0, _hooks2.directive)('body', ({
|
|
73
|
-
props: {
|
|
74
|
-
children
|
|
75
|
-
},
|
|
76
|
-
context: inherited
|
|
77
|
-
}) => {
|
|
78
|
-
const {
|
|
79
|
-
Provider
|
|
80
|
-
} = inherited;
|
|
81
|
-
const inheritedValue = (0, _hooks.useContext)(inherited);
|
|
82
|
-
return (0, _portals.createPortal)((0, _element.createElement)(Provider, {
|
|
83
|
-
value: inheritedValue
|
|
84
|
-
}, children), document.body);
|
|
85
|
-
}); // data-wp-effect--[name]
|
|
86
|
-
|
|
87
|
-
(0, _hooks2.directive)('effect', ({
|
|
88
|
-
directives: {
|
|
89
|
-
effect
|
|
90
|
-
},
|
|
91
|
-
context,
|
|
92
|
-
evaluate
|
|
93
|
-
}) => {
|
|
94
|
-
const contextValue = (0, _hooks.useContext)(context);
|
|
95
|
-
Object.values(effect).forEach(path => {
|
|
96
|
-
(0, _utils.useSignalEffect)(() => {
|
|
97
|
-
return evaluate(path, {
|
|
98
|
-
context: contextValue
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
}); // data-wp-init--[name]
|
|
103
|
-
|
|
104
|
-
(0, _hooks2.directive)('init', ({
|
|
105
|
-
directives: {
|
|
106
|
-
init
|
|
107
|
-
},
|
|
108
|
-
context,
|
|
109
|
-
evaluate
|
|
110
|
-
}) => {
|
|
111
|
-
const contextValue = (0, _hooks.useContext)(context);
|
|
112
|
-
Object.values(init).forEach(path => {
|
|
113
|
-
(0, _hooks.useEffect)(() => {
|
|
114
|
-
return evaluate(path, {
|
|
115
|
-
context: contextValue
|
|
116
|
-
});
|
|
117
|
-
}, []);
|
|
118
|
-
});
|
|
119
|
-
}); // data-wp-on--[event]
|
|
120
|
-
|
|
121
|
-
(0, _hooks2.directive)('on', ({
|
|
122
|
-
directives: {
|
|
123
|
-
on
|
|
124
|
-
},
|
|
125
|
-
element,
|
|
126
|
-
evaluate,
|
|
127
|
-
context
|
|
128
|
-
}) => {
|
|
129
|
-
const contextValue = (0, _hooks.useContext)(context);
|
|
130
|
-
Object.entries(on).forEach(([name, path]) => {
|
|
131
|
-
element.props[`on${name}`] = event => {
|
|
132
|
-
evaluate(path, {
|
|
133
|
-
event,
|
|
134
|
-
context: contextValue
|
|
135
|
-
});
|
|
136
|
-
};
|
|
137
|
-
});
|
|
138
|
-
}); // data-wp-class--[classname]
|
|
139
|
-
|
|
140
|
-
(0, _hooks2.directive)('class', ({
|
|
141
|
-
directives: {
|
|
142
|
-
class: className
|
|
143
|
-
},
|
|
144
|
-
element,
|
|
145
|
-
evaluate,
|
|
146
|
-
context
|
|
147
|
-
}) => {
|
|
148
|
-
const contextValue = (0, _hooks.useContext)(context);
|
|
149
|
-
Object.keys(className).filter(n => n !== 'default').forEach(name => {
|
|
150
|
-
const result = evaluate(className[name], {
|
|
151
|
-
className: name,
|
|
152
|
-
context: contextValue
|
|
153
|
-
});
|
|
154
|
-
const currentClass = element.props.class || '';
|
|
155
|
-
const classFinder = new RegExp(`(^|\\s)${name}(\\s|$)`, 'g');
|
|
156
|
-
if (!result) element.props.class = currentClass.replace(classFinder, ' ').trim();else if (!classFinder.test(currentClass)) element.props.class = currentClass ? `${currentClass} ${name}` : name;
|
|
157
|
-
(0, _hooks.useEffect)(() => {
|
|
158
|
-
// This seems necessary because Preact doesn't change the class
|
|
159
|
-
// names on the hydration, so we have to do it manually. It doesn't
|
|
160
|
-
// need deps because it only needs to do it the first time.
|
|
161
|
-
if (!result) {
|
|
162
|
-
element.ref.current.classList.remove(name);
|
|
163
|
-
} else {
|
|
164
|
-
element.ref.current.classList.add(name);
|
|
165
|
-
}
|
|
166
|
-
}, []);
|
|
167
|
-
});
|
|
168
|
-
}); // data-wp-bind--[attribute]
|
|
169
|
-
|
|
170
|
-
(0, _hooks2.directive)('bind', ({
|
|
171
|
-
directives: {
|
|
172
|
-
bind
|
|
173
|
-
},
|
|
174
|
-
element,
|
|
175
|
-
context,
|
|
176
|
-
evaluate
|
|
177
|
-
}) => {
|
|
178
|
-
const contextValue = (0, _hooks.useContext)(context);
|
|
179
|
-
Object.entries(bind).filter(n => n !== 'default').forEach(([attribute, path]) => {
|
|
180
|
-
const result = evaluate(path, {
|
|
181
|
-
context: contextValue
|
|
182
|
-
});
|
|
183
|
-
element.props[attribute] = result; // This seems necessary because Preact doesn't change the attributes
|
|
184
|
-
// on the hydration, so we have to do it manually. It doesn't need
|
|
185
|
-
// deps because it only needs to do it the first time.
|
|
186
|
-
|
|
187
|
-
(0, _hooks.useEffect)(() => {
|
|
188
|
-
// aria- and data- attributes have no boolean representation.
|
|
189
|
-
// A `false` value is different from the attribute not being
|
|
190
|
-
// present, so we can't remove it.
|
|
191
|
-
// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136
|
|
192
|
-
if (result === false && attribute[4] !== '-') {
|
|
193
|
-
element.ref.current.removeAttribute(attribute);
|
|
194
|
-
} else {
|
|
195
|
-
element.ref.current.setAttribute(attribute, result === true && attribute[4] !== '-' ? '' : result);
|
|
196
|
-
}
|
|
197
|
-
}, []);
|
|
198
|
-
});
|
|
199
|
-
}); // data-wp-ignore
|
|
200
|
-
|
|
201
|
-
(0, _hooks2.directive)('ignore', ({
|
|
202
|
-
element: {
|
|
203
|
-
type: Type,
|
|
204
|
-
props: {
|
|
205
|
-
innerHTML,
|
|
206
|
-
...rest
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}) => {
|
|
210
|
-
// Preserve the initial inner HTML.
|
|
211
|
-
const cached = (0, _hooks.useMemo)(() => innerHTML, []);
|
|
212
|
-
return (0, _element.createElement)(Type, {
|
|
213
|
-
dangerouslySetInnerHTML: {
|
|
214
|
-
__html: cached
|
|
215
|
-
},
|
|
216
|
-
...rest
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
exports.default = _default;
|
|
222
|
-
//# sourceMappingURL=directives.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/directives.js"],"names":["isObject","item","Array","isArray","mergeDeepSignals","target","source","k","peek","directives","context","default","props","children","inherited","Provider","inheritedValue","value","localValue","priority","document","body","effect","evaluate","contextValue","Object","values","forEach","path","init","on","element","entries","name","event","class","className","keys","filter","n","result","currentClass","classFinder","RegExp","replace","trim","test","ref","current","classList","remove","add","bind","attribute","removeAttribute","setAttribute","type","Type","innerHTML","rest","cached","__html"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useContext, useMemo, useEffect } from 'preact/hooks';\nimport { deepSignal, peek } from 'deepsignal';\n/**\n * Internal dependencies\n */\nimport { createPortal } from './portals.js';\n\n/**\n * Internal dependencies\n */\nimport { useSignalEffect } from './utils';\nimport { directive } from './hooks';\n\nconst isObject = ( item ) =>\n\titem && typeof item === 'object' && ! Array.isArray( item );\n\nconst mergeDeepSignals = ( target, source ) => {\n\tfor ( const k in source ) {\n\t\tif ( typeof peek( target, k ) === 'undefined' ) {\n\t\t\ttarget[ `$${ k }` ] = source[ `$${ k }` ];\n\t\t} else if (\n\t\t\tisObject( peek( target, k ) ) &&\n\t\t\tisObject( peek( source, k ) )\n\t\t) {\n\t\t\tmergeDeepSignals(\n\t\t\t\ttarget[ `$${ k }` ].peek(),\n\t\t\t\tsource[ `$${ k }` ].peek()\n\t\t\t);\n\t\t}\n\t}\n};\n\nexport default () => {\n\t// data-wp-context\n\tdirective(\n\t\t'context',\n\t\t( {\n\t\t\tdirectives: {\n\t\t\t\tcontext: { default: context },\n\t\t\t},\n\t\t\tprops: { children },\n\t\t\tcontext: inherited,\n\t\t} ) => {\n\t\t\tconst { Provider } = inherited;\n\t\t\tconst inheritedValue = useContext( inherited );\n\t\t\tconst value = useMemo( () => {\n\t\t\t\tconst localValue = deepSignal( context );\n\t\t\t\tmergeDeepSignals( localValue, inheritedValue );\n\t\t\t\treturn localValue;\n\t\t\t}, [ context, inheritedValue ] );\n\n\t\t\treturn <Provider value={ value }>{ children }</Provider>;\n\t\t},\n\t\t{ priority: 5 }\n\t);\n\n\t// data-wp-body\n\tdirective( 'body', ( { props: { children }, context: inherited } ) => {\n\t\tconst { Provider } = inherited;\n\t\tconst inheritedValue = useContext( inherited );\n\t\treturn createPortal(\n\t\t\t<Provider value={ inheritedValue }>{ children }</Provider>,\n\t\t\tdocument.body\n\t\t);\n\t} );\n\n\t// data-wp-effect--[name]\n\tdirective( 'effect', ( { directives: { effect }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( effect ).forEach( ( path ) => {\n\t\t\tuseSignalEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t} );\n\t\t} );\n\t} );\n\n\t// data-wp-init--[name]\n\tdirective( 'init', ( { directives: { init }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( init ).forEach( ( path ) => {\n\t\t\tuseEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t}, [] );\n\t\t} );\n\t} );\n\n\t// data-wp-on--[event]\n\tdirective( 'on', ( { directives: { on }, element, evaluate, context } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.entries( on ).forEach( ( [ name, path ] ) => {\n\t\t\telement.props[ `on${ name }` ] = ( event ) => {\n\t\t\t\tevaluate( path, { event, context: contextValue } );\n\t\t\t};\n\t\t} );\n\t} );\n\n\t// data-wp-class--[classname]\n\tdirective(\n\t\t'class',\n\t\t( {\n\t\t\tdirectives: { class: className },\n\t\t\telement,\n\t\t\tevaluate,\n\t\t\tcontext,\n\t\t} ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.keys( className )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( name ) => {\n\t\t\t\t\tconst result = evaluate( className[ name ], {\n\t\t\t\t\t\tclassName: name,\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\tconst currentClass = element.props.class || '';\n\t\t\t\t\tconst classFinder = new RegExp(\n\t\t\t\t\t\t`(^|\\\\s)${ name }(\\\\s|$)`,\n\t\t\t\t\t\t'g'\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! result )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t.replace( classFinder, ' ' )\n\t\t\t\t\t\t\t.trim();\n\t\t\t\t\telse if ( ! classFinder.test( currentClass ) )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t? `${ currentClass } ${ name }`\n\t\t\t\t\t\t\t: name;\n\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// This seems necessary because Preact doesn't change the class\n\t\t\t\t\t\t// names on the hydration, so we have to do it manually. It doesn't\n\t\t\t\t\t\t// need deps because it only needs to do it the first time.\n\t\t\t\t\t\tif ( ! result ) {\n\t\t\t\t\t\t\telement.ref.current.classList.remove( name );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.classList.add( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-bind--[attribute]\n\tdirective(\n\t\t'bind',\n\t\t( { directives: { bind }, element, context, evaluate } ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.entries( bind )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( [ attribute, path ] ) => {\n\t\t\t\t\tconst result = evaluate( path, {\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\telement.props[ attribute ] = result;\n\n\t\t\t\t\t// This seems necessary because Preact doesn't change the attributes\n\t\t\t\t\t// on the hydration, so we have to do it manually. It doesn't need\n\t\t\t\t\t// deps because it only needs to do it the first time.\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// aria- and data- attributes have no boolean representation.\n\t\t\t\t\t\t// A `false` value is different from the attribute not being\n\t\t\t\t\t\t// present, so we can't remove it.\n\t\t\t\t\t\t// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136\n\t\t\t\t\t\tif ( result === false && attribute[ 4 ] !== '-' ) {\n\t\t\t\t\t\t\telement.ref.current.removeAttribute( attribute );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.setAttribute(\n\t\t\t\t\t\t\t\tattribute,\n\t\t\t\t\t\t\t\tresult === true && attribute[ 4 ] !== '-'\n\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t: result\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-ignore\n\tdirective(\n\t\t'ignore',\n\t\t( {\n\t\t\telement: {\n\t\t\t\ttype: Type,\n\t\t\t\tprops: { innerHTML, ...rest },\n\t\t\t},\n\t\t} ) => {\n\t\t\t// Preserve the initial inner HTML.\n\t\t\tconst cached = useMemo( () => innerHTML, [] );\n\t\t\treturn (\n\t\t\t\t<Type\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: cached } }\n\t\t\t\t\t{ ...rest }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t);\n};\n"]}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.directive = void 0;
|
|
7
|
-
|
|
8
|
-
var _element = require("@wordpress/element");
|
|
9
|
-
|
|
10
|
-
var _preact = require("preact");
|
|
11
|
-
|
|
12
|
-
var _hooks = require("preact/hooks");
|
|
13
|
-
|
|
14
|
-
var _store = require("./store");
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* External dependencies
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Internal dependencies
|
|
22
|
-
*/
|
|
23
|
-
// Main context.
|
|
24
|
-
const context = (0, _preact.createContext)({}); // WordPress Directives.
|
|
25
|
-
|
|
26
|
-
const directiveMap = {};
|
|
27
|
-
const directivePriorities = {};
|
|
28
|
-
|
|
29
|
-
const directive = (name, cb, {
|
|
30
|
-
priority = 10
|
|
31
|
-
} = {}) => {
|
|
32
|
-
directiveMap[name] = cb;
|
|
33
|
-
directivePriorities[name] = priority;
|
|
34
|
-
}; // Resolve the path to some property of the store object.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
exports.directive = directive;
|
|
38
|
-
|
|
39
|
-
const resolve = (path, ctx) => {
|
|
40
|
-
let current = { ..._store.rawStore,
|
|
41
|
-
context: ctx
|
|
42
|
-
};
|
|
43
|
-
path.split('.').forEach(p => current = current[p]);
|
|
44
|
-
return current;
|
|
45
|
-
}; // Generate the evaluate function.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const getEvaluate = ({
|
|
49
|
-
ref
|
|
50
|
-
} = {}) => (path, extraArgs = {}) => {
|
|
51
|
-
// If path starts with !, remove it and save a flag.
|
|
52
|
-
const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1));
|
|
53
|
-
const value = resolve(path, extraArgs.context);
|
|
54
|
-
const returnValue = typeof value === 'function' ? value({
|
|
55
|
-
ref: ref.current,
|
|
56
|
-
..._store.rawStore,
|
|
57
|
-
...extraArgs
|
|
58
|
-
}) : value;
|
|
59
|
-
return hasNegationOperator ? !returnValue : returnValue;
|
|
60
|
-
}; // Separate directives by priority. The resulting array contains objects
|
|
61
|
-
// of directives grouped by same priority, and sorted in ascending order.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const usePriorityLevels = directives => (0, _hooks.useMemo)(() => {
|
|
65
|
-
const byPriority = Object.entries(directives).reduce((acc, [name, values]) => {
|
|
66
|
-
const priority = directivePriorities[name];
|
|
67
|
-
if (!acc[priority]) acc[priority] = {};
|
|
68
|
-
acc[priority][name] = values;
|
|
69
|
-
return acc;
|
|
70
|
-
}, {});
|
|
71
|
-
return Object.entries(byPriority).sort(([p1], [p2]) => p1 - p2).map(([, obj]) => obj);
|
|
72
|
-
}, [directives]); // Directive wrapper.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const Directive = ({
|
|
76
|
-
type,
|
|
77
|
-
directives,
|
|
78
|
-
props: originalProps
|
|
79
|
-
}) => {
|
|
80
|
-
const ref = (0, _hooks.useRef)(null);
|
|
81
|
-
const element = (0, _preact.h)(type, { ...originalProps,
|
|
82
|
-
ref
|
|
83
|
-
});
|
|
84
|
-
const evaluate = (0, _hooks.useMemo)(() => getEvaluate({
|
|
85
|
-
ref
|
|
86
|
-
}), []); // Add wrappers recursively for each priority level.
|
|
87
|
-
|
|
88
|
-
const byPriorityLevel = usePriorityLevels(directives);
|
|
89
|
-
return (0, _element.createElement)(RecursivePriorityLevel, {
|
|
90
|
-
directives: byPriorityLevel,
|
|
91
|
-
element: element,
|
|
92
|
-
evaluate: evaluate,
|
|
93
|
-
originalProps: originalProps
|
|
94
|
-
});
|
|
95
|
-
}; // Priority level wrapper.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const RecursivePriorityLevel = ({
|
|
99
|
-
directives: [directives, ...rest],
|
|
100
|
-
element,
|
|
101
|
-
evaluate,
|
|
102
|
-
originalProps
|
|
103
|
-
}) => {
|
|
104
|
-
// This element needs to be a fresh copy so we are not modifying an already
|
|
105
|
-
// rendered element with Preact's internal properties initialized. This
|
|
106
|
-
// prevents an error with changes in `element.props.children` not being
|
|
107
|
-
// reflected in `element.__k`.
|
|
108
|
-
element = (0, _preact.cloneElement)(element); // Recursively render the wrapper for the next priority level.
|
|
109
|
-
//
|
|
110
|
-
// Note that, even though we're instantiating a vnode with a
|
|
111
|
-
// `RecursivePriorityLevel` here, its render function will not be executed
|
|
112
|
-
// just yet. Actually, it will be delayed until the current render function
|
|
113
|
-
// has finished. That ensures directives in the current priorty level have
|
|
114
|
-
// run (and thus modified the passed `element`) before the next level.
|
|
115
|
-
|
|
116
|
-
const children = rest.length > 0 ? (0, _element.createElement)(RecursivePriorityLevel, {
|
|
117
|
-
directives: rest,
|
|
118
|
-
element: element,
|
|
119
|
-
evaluate: evaluate,
|
|
120
|
-
originalProps: originalProps
|
|
121
|
-
}) : element;
|
|
122
|
-
const props = { ...originalProps,
|
|
123
|
-
children
|
|
124
|
-
};
|
|
125
|
-
const directiveArgs = {
|
|
126
|
-
directives,
|
|
127
|
-
props,
|
|
128
|
-
element,
|
|
129
|
-
context,
|
|
130
|
-
evaluate
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
for (const d in directives) {
|
|
134
|
-
const wrapper = directiveMap[d]?.(directiveArgs);
|
|
135
|
-
if (wrapper !== undefined) props.children = wrapper;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return props.children;
|
|
139
|
-
}; // Preact Options Hook called each time a vnode is created.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const old = _preact.options.vnode;
|
|
143
|
-
|
|
144
|
-
_preact.options.vnode = vnode => {
|
|
145
|
-
if (vnode.props.__directives) {
|
|
146
|
-
const props = vnode.props;
|
|
147
|
-
const directives = props.__directives;
|
|
148
|
-
delete props.__directives;
|
|
149
|
-
vnode.props = {
|
|
150
|
-
type: vnode.type,
|
|
151
|
-
directives,
|
|
152
|
-
props
|
|
153
|
-
};
|
|
154
|
-
vnode.type = Directive;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (old) old(vnode);
|
|
158
|
-
};
|
|
159
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hooks.js"],"names":["context","directiveMap","directivePriorities","directive","name","cb","priority","resolve","path","ctx","current","store","split","forEach","p","getEvaluate","ref","extraArgs","hasNegationOperator","slice","value","returnValue","usePriorityLevels","directives","byPriority","Object","entries","reduce","acc","values","sort","p1","p2","map","obj","Directive","type","props","originalProps","element","evaluate","byPriorityLevel","RecursivePriorityLevel","rest","children","length","directiveArgs","d","wrapper","undefined","old","options","vnode","__directives"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { h, options, createContext, cloneElement } from 'preact';\nimport { useRef, useMemo } from 'preact/hooks';\n/**\n * Internal dependencies\n */\nimport { rawStore as store } from './store';\n\n// Main context.\nconst context = createContext( {} );\n\n// WordPress Directives.\nconst directiveMap = {};\nconst directivePriorities = {};\nexport const directive = ( name, cb, { priority = 10 } = {} ) => {\n\tdirectiveMap[ name ] = cb;\n\tdirectivePriorities[ name ] = priority;\n};\n\n// Resolve the path to some property of the store object.\nconst resolve = ( path, ctx ) => {\n\tlet current = { ...store, context: ctx };\n\tpath.split( '.' ).forEach( ( p ) => ( current = current[ p ] ) );\n\treturn current;\n};\n\n// Generate the evaluate function.\nconst getEvaluate =\n\t( { ref } = {} ) =>\n\t( path, extraArgs = {} ) => {\n\t\t// If path starts with !, remove it and save a flag.\n\t\tconst hasNegationOperator =\n\t\t\tpath[ 0 ] === '!' && !! ( path = path.slice( 1 ) );\n\t\tconst value = resolve( path, extraArgs.context );\n\t\tconst returnValue =\n\t\t\ttypeof value === 'function'\n\t\t\t\t? value( {\n\t\t\t\t\t\tref: ref.current,\n\t\t\t\t\t\t...store,\n\t\t\t\t\t\t...extraArgs,\n\t\t\t\t } )\n\t\t\t\t: value;\n\t\treturn hasNegationOperator ? ! returnValue : returnValue;\n\t};\n\n// Separate directives by priority. The resulting array contains objects\n// of directives grouped by same priority, and sorted in ascending order.\nconst usePriorityLevels = ( directives ) =>\n\tuseMemo( () => {\n\t\tconst byPriority = Object.entries( directives ).reduce(\n\t\t\t( acc, [ name, values ] ) => {\n\t\t\t\tconst priority = directivePriorities[ name ];\n\t\t\t\tif ( ! acc[ priority ] ) acc[ priority ] = {};\n\t\t\t\tacc[ priority ][ name ] = values;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\treturn Object.entries( byPriority )\n\t\t\t.sort( ( [ p1 ], [ p2 ] ) => p1 - p2 )\n\t\t\t.map( ( [ , obj ] ) => obj );\n\t}, [ directives ] );\n\n// Directive wrapper.\nconst Directive = ( { type, directives, props: originalProps } ) => {\n\tconst ref = useRef( null );\n\tconst element = h( type, { ...originalProps, ref } );\n\tconst evaluate = useMemo( () => getEvaluate( { ref } ), [] );\n\n\t// Add wrappers recursively for each priority level.\n\tconst byPriorityLevel = usePriorityLevels( directives );\n\treturn (\n\t\t<RecursivePriorityLevel\n\t\t\tdirectives={ byPriorityLevel }\n\t\t\telement={ element }\n\t\t\tevaluate={ evaluate }\n\t\t\toriginalProps={ originalProps }\n\t\t/>\n\t);\n};\n\n// Priority level wrapper.\nconst RecursivePriorityLevel = ( {\n\tdirectives: [ directives, ...rest ],\n\telement,\n\tevaluate,\n\toriginalProps,\n} ) => {\n\t// This element needs to be a fresh copy so we are not modifying an already\n\t// rendered element with Preact's internal properties initialized. This\n\t// prevents an error with changes in `element.props.children` not being\n\t// reflected in `element.__k`.\n\telement = cloneElement( element );\n\n\t// Recursively render the wrapper for the next priority level.\n\t//\n\t// Note that, even though we're instantiating a vnode with a\n\t// `RecursivePriorityLevel` here, its render function will not be executed\n\t// just yet. Actually, it will be delayed until the current render function\n\t// has finished. That ensures directives in the current priorty level have\n\t// run (and thus modified the passed `element`) before the next level.\n\tconst children =\n\t\trest.length > 0 ? (\n\t\t\t<RecursivePriorityLevel\n\t\t\t\tdirectives={ rest }\n\t\t\t\telement={ element }\n\t\t\t\tevaluate={ evaluate }\n\t\t\t\toriginalProps={ originalProps }\n\t\t\t/>\n\t\t) : (\n\t\t\telement\n\t\t);\n\n\tconst props = { ...originalProps, children };\n\tconst directiveArgs = { directives, props, element, context, evaluate };\n\n\tfor ( const d in directives ) {\n\t\tconst wrapper = directiveMap[ d ]?.( directiveArgs );\n\t\tif ( wrapper !== undefined ) props.children = wrapper;\n\t}\n\n\treturn props.children;\n};\n\n// Preact Options Hook called each time a vnode is created.\nconst old = options.vnode;\noptions.vnode = ( vnode ) => {\n\tif ( vnode.props.__directives ) {\n\t\tconst props = vnode.props;\n\t\tconst directives = props.__directives;\n\t\tdelete props.__directives;\n\t\tvnode.props = {\n\t\t\ttype: vnode.type,\n\t\t\tdirectives,\n\t\t\tprops,\n\t\t};\n\t\tvnode.type = Directive;\n\t}\n\n\tif ( old ) old( vnode );\n};\n"]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.init = void 0;
|
|
7
|
-
|
|
8
|
-
var _preact = require("preact");
|
|
9
|
-
|
|
10
|
-
var _vdom = require("./vdom");
|
|
11
|
-
|
|
12
|
-
var _utils = require("./utils");
|
|
13
|
-
|
|
14
|
-
var _constants = require("./constants");
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* External dependencies
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Internal dependencies
|
|
22
|
-
*/
|
|
23
|
-
const init = async () => {
|
|
24
|
-
document.querySelectorAll(`[data-${_constants.directivePrefix}-interactive]`).forEach(node => {
|
|
25
|
-
if (!_vdom.hydratedIslands.has(node)) {
|
|
26
|
-
const fragment = (0, _utils.createRootFragment)(node.parentNode, node);
|
|
27
|
-
const vdom = (0, _vdom.toVdom)(node);
|
|
28
|
-
(0, _preact.hydrate)(vdom, fragment);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
exports.init = init;
|
|
34
|
-
//# sourceMappingURL=hydration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hydration.js"],"names":["init","document","querySelectorAll","directivePrefix","forEach","node","hydratedIslands","has","fragment","parentNode","vdom"],"mappings":";;;;;;;AAGA;;AAIA;;AACA;;AACA;;AATA;AACA;AACA;;AAEA;AACA;AACA;AAKO,MAAMA,IAAI,GAAG,YAAY;AAC/BC,EAAAA,QAAQ,CACNC,gBADF,CACqB,SAASC,0BAAiB,eAD/C,EAEEC,OAFF,CAEaC,IAAF,IAAY;AACrB,QAAK,CAAEC,sBAAgBC,GAAhB,CAAqBF,IAArB,CAAP,EAAqC;AACpC,YAAMG,QAAQ,GAAG,+BAAoBH,IAAI,CAACI,UAAzB,EAAqCJ,IAArC,CAAjB;AACA,YAAMK,IAAI,GAAG,kBAAQL,IAAR,CAAb;AACA,2BAASK,IAAT,EAAeF,QAAf;AACA;AACD,GARF;AASA,CAVM","sourcesContent":["/**\n * External dependencies\n */\nimport { hydrate } from 'preact';\n/**\n * Internal dependencies\n */\nimport { toVdom, hydratedIslands } from './vdom';\nimport { createRootFragment } from './utils';\nimport { directivePrefix } from './constants';\n\nexport const init = async () => {\n\tdocument\n\t\t.querySelectorAll( `[data-${ directivePrefix }-interactive]` )\n\t\t.forEach( ( node ) => {\n\t\t\tif ( ! hydratedIslands.has( node ) ) {\n\t\t\t\tconst fragment = createRootFragment( node.parentNode, node );\n\t\t\t\tconst vdom = toVdom( node );\n\t\t\t\thydrate( vdom, fragment );\n\t\t\t}\n\t\t} );\n};\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
Object.defineProperty(exports, "store", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () {
|
|
11
|
-
return _store.store;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
var _directives = _interopRequireDefault(require("./directives"));
|
|
16
|
-
|
|
17
|
-
var _hydration = require("./hydration");
|
|
18
|
-
|
|
19
|
-
var _store = require("./store");
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Internal dependencies
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Initialize the Interactivity API.
|
|
27
|
-
*/
|
|
28
|
-
(0, _directives.default)();
|
|
29
|
-
document.addEventListener('DOMContentLoaded', async () => {
|
|
30
|
-
await (0, _hydration.init)();
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/index.js"],"names":["document","addEventListener"],"mappings":";;;;;;;;;;;;;;AAGA;;AACA;;AACA;;AALA;AACA;AACA;;AAKA;AACA;AACA;AACA;AAEAA,QAAQ,CAACC,gBAAT,CAA2B,kBAA3B,EAA+C,YAAY;AAC1D,QAAM,sBAAN;AACA,CAFD","sourcesContent":["/**\n * Internal dependencies\n */\nimport registerDirectives from './directives';\nimport { init } from './hydration';\nexport { store } from './store';\n\n/**\n * Initialize the Interactivity API.\n */\nregisterDirectives();\n\ndocument.addEventListener( 'DOMContentLoaded', async () => {\n\tawait init();\n} );\n"]}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createPortal = createPortal;
|
|
7
|
-
|
|
8
|
-
var _preact = require("preact");
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* External dependencies
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @param {import('../../src/index').RenderableProps<{ context: any }>} props
|
|
16
|
-
*/
|
|
17
|
-
function ContextProvider(props) {
|
|
18
|
-
this.getChildContext = () => props.context;
|
|
19
|
-
|
|
20
|
-
return props.children;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Portal component
|
|
24
|
-
*
|
|
25
|
-
* @this {import('./internal').Component}
|
|
26
|
-
* @param {object | null | undefined} props
|
|
27
|
-
*
|
|
28
|
-
* TODO: use createRoot() instead of fake root
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
function Portal(props) {
|
|
33
|
-
const _this = this;
|
|
34
|
-
|
|
35
|
-
const container = props._container;
|
|
36
|
-
|
|
37
|
-
_this.componentWillUnmount = function () {
|
|
38
|
-
(0, _preact.render)(null, _this._temp);
|
|
39
|
-
_this._temp = null;
|
|
40
|
-
_this._container = null;
|
|
41
|
-
}; // When we change container we should clear our old container and
|
|
42
|
-
// indicate a new mount.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (_this._container && _this._container !== container) {
|
|
46
|
-
_this.componentWillUnmount();
|
|
47
|
-
} // When props.vnode is undefined/false/null we are dealing with some kind of
|
|
48
|
-
// conditional vnode. This should not trigger a render.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (props._vnode) {
|
|
52
|
-
if (!_this._temp) {
|
|
53
|
-
_this._container = container; // Create a fake DOM parent node that manages a subset of `container`'s children:
|
|
54
|
-
|
|
55
|
-
_this._temp = {
|
|
56
|
-
nodeType: 1,
|
|
57
|
-
parentNode: container,
|
|
58
|
-
childNodes: [],
|
|
59
|
-
|
|
60
|
-
appendChild(child) {
|
|
61
|
-
this.childNodes.push(child);
|
|
62
|
-
|
|
63
|
-
_this._container.appendChild(child);
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
insertBefore(child) {
|
|
67
|
-
this.childNodes.push(child);
|
|
68
|
-
|
|
69
|
-
_this._container.appendChild(child);
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
removeChild(child) {
|
|
73
|
-
this.childNodes.splice( // eslint-disable-next-line no-bitwise
|
|
74
|
-
this.childNodes.indexOf(child) >>> 1, 1);
|
|
75
|
-
|
|
76
|
-
_this._container.removeChild(child);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
};
|
|
80
|
-
} // Render our wrapping element into temp.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
(0, _preact.render)((0, _preact.createElement)(ContextProvider, {
|
|
84
|
-
context: _this.context
|
|
85
|
-
}, props._vnode), _this._temp);
|
|
86
|
-
} // When we come from a conditional render, on a mounted
|
|
87
|
-
// portal we should clear the DOM.
|
|
88
|
-
else if (_this._temp) {
|
|
89
|
-
_this.componentWillUnmount();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create a `Portal` to continue rendering the vnode tree at a different DOM node
|
|
94
|
-
*
|
|
95
|
-
* @param {import('./internal').VNode} vnode The vnode to render
|
|
96
|
-
* @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
function createPortal(vnode, container) {
|
|
101
|
-
const el = (0, _preact.createElement)(Portal, {
|
|
102
|
-
_vnode: vnode,
|
|
103
|
-
_container: container
|
|
104
|
-
});
|
|
105
|
-
el.containerInfo = container;
|
|
106
|
-
return el;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=portals.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/portals.js"],"names":["ContextProvider","props","getChildContext","context","children","Portal","_this","container","_container","componentWillUnmount","_temp","_vnode","nodeType","parentNode","childNodes","appendChild","child","push","insertBefore","removeChild","splice","indexOf","createPortal","vnode","el","containerInfo"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,eAAT,CAA0BC,KAA1B,EAAkC;AACjC,OAAKC,eAAL,GAAuB,MAAMD,KAAK,CAACE,OAAnC;;AACA,SAAOF,KAAK,CAACG,QAAb;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,MAAT,CAAiBJ,KAAjB,EAAyB;AACxB,QAAMK,KAAK,GAAG,IAAd;;AACA,QAAMC,SAAS,GAAGN,KAAK,CAACO,UAAxB;;AAEAF,EAAAA,KAAK,CAACG,oBAAN,GAA6B,YAAY;AACxC,wBAAQ,IAAR,EAAcH,KAAK,CAACI,KAApB;AACAJ,IAAAA,KAAK,CAACI,KAAN,GAAc,IAAd;AACAJ,IAAAA,KAAK,CAACE,UAAN,GAAmB,IAAnB;AACA,GAJD,CAJwB,CAUxB;AACA;;;AACA,MAAKF,KAAK,CAACE,UAAN,IAAoBF,KAAK,CAACE,UAAN,KAAqBD,SAA9C,EAA0D;AACzDD,IAAAA,KAAK,CAACG,oBAAN;AACA,GAduB,CAgBxB;AACA;;;AACA,MAAKR,KAAK,CAACU,MAAX,EAAoB;AACnB,QAAK,CAAEL,KAAK,CAACI,KAAb,EAAqB;AACpBJ,MAAAA,KAAK,CAACE,UAAN,GAAmBD,SAAnB,CADoB,CAGpB;;AACAD,MAAAA,KAAK,CAACI,KAAN,GAAc;AACbE,QAAAA,QAAQ,EAAE,CADG;AAEbC,QAAAA,UAAU,EAAEN,SAFC;AAGbO,QAAAA,UAAU,EAAE,EAHC;;AAIbC,QAAAA,WAAW,CAAEC,KAAF,EAAU;AACpB,eAAKF,UAAL,CAAgBG,IAAhB,CAAsBD,KAAtB;;AACAV,UAAAA,KAAK,CAACE,UAAN,CAAiBO,WAAjB,CAA8BC,KAA9B;AACA,SAPY;;AAQbE,QAAAA,YAAY,CAAEF,KAAF,EAAU;AACrB,eAAKF,UAAL,CAAgBG,IAAhB,CAAsBD,KAAtB;;AACAV,UAAAA,KAAK,CAACE,UAAN,CAAiBO,WAAjB,CAA8BC,KAA9B;AACA,SAXY;;AAYbG,QAAAA,WAAW,CAAEH,KAAF,EAAU;AACpB,eAAKF,UAAL,CAAgBM,MAAhB,EACC;AACA,eAAKN,UAAL,CAAgBO,OAAhB,CAAyBL,KAAzB,MAAqC,CAFtC,EAGC,CAHD;;AAKAV,UAAAA,KAAK,CAACE,UAAN,CAAiBW,WAAjB,CAA8BH,KAA9B;AACA;;AAnBY,OAAd;AAqBA,KA1BkB,CA4BnB;;;AACA,wBACC,2BACChB,eADD,EAEC;AAAEG,MAAAA,OAAO,EAAEG,KAAK,CAACH;AAAjB,KAFD,EAGCF,KAAK,CAACU,MAHP,CADD,EAMCL,KAAK,CAACI,KANP;AAQA,GArCD,CAsCA;AACA;AAvCA,OAwCK,IAAKJ,KAAK,CAACI,KAAX,EAAmB;AACvBJ,IAAAA,KAAK,CAACG,oBAAN;AACA;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASa,YAAT,CAAuBC,KAAvB,EAA8BhB,SAA9B,EAA0C;AAChD,QAAMiB,EAAE,GAAG,2BAAenB,MAAf,EAAuB;AACjCM,IAAAA,MAAM,EAAEY,KADyB;AAEjCf,IAAAA,UAAU,EAAED;AAFqB,GAAvB,CAAX;AAIAiB,EAAAA,EAAE,CAACC,aAAH,GAAmBlB,SAAnB;AACA,SAAOiB,EAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider( props ) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n *\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal( props ) {\n\tconst _this = this;\n\tconst container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender( null, _this._temp );\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif ( _this._container && _this._container !== container ) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif ( props._vnode ) {\n\t\tif ( ! _this._temp ) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild( child ) {\n\t\t\t\t\tthis.childNodes.push( child );\n\t\t\t\t\t_this._container.appendChild( child );\n\t\t\t\t},\n\t\t\t\tinsertBefore( child ) {\n\t\t\t\t\tthis.childNodes.push( child );\n\t\t\t\t\t_this._container.appendChild( child );\n\t\t\t\t},\n\t\t\t\tremoveChild( child ) {\n\t\t\t\t\tthis.childNodes.splice(\n\t\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\t\tthis.childNodes.indexOf( child ) >>> 1,\n\t\t\t\t\t\t1\n\t\t\t\t\t);\n\t\t\t\t\t_this._container.removeChild( child );\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(\n\t\t\t\tContextProvider,\n\t\t\t\t{ context: _this.context },\n\t\t\t\tprops._vnode\n\t\t\t),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if ( _this._temp ) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n *\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal( vnode, container ) {\n\tconst el = createElement( Portal, {\n\t\t_vnode: vnode,\n\t\t_container: container,\n\t} );\n\tel.containerInfo = container;\n\treturn el;\n}\n"]}
|