@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,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useRef, useEffect } from 'preact/hooks';
|
|
5
|
-
import { effect } from '@preact/signals';
|
|
6
|
-
|
|
7
|
-
function afterNextFrame(callback) {
|
|
8
|
-
const done = () => {
|
|
9
|
-
window.cancelAnimationFrame(raf);
|
|
10
|
-
setTimeout(callback);
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const raf = window.requestAnimationFrame(done);
|
|
14
|
-
} // Using the mangled properties:
|
|
15
|
-
// this.c: this._callback
|
|
16
|
-
// this.x: this._compute
|
|
17
|
-
// https://github.com/preactjs/signals/blob/main/mangle.json
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
function createFlusher(compute, notify) {
|
|
21
|
-
let flush;
|
|
22
|
-
const dispose = effect(function () {
|
|
23
|
-
flush = this.c.bind(this);
|
|
24
|
-
this.x = compute;
|
|
25
|
-
this.c = notify;
|
|
26
|
-
return compute();
|
|
27
|
-
});
|
|
28
|
-
return {
|
|
29
|
-
flush,
|
|
30
|
-
dispose
|
|
31
|
-
};
|
|
32
|
-
} // Version of `useSignalEffect` with a `useEffect`-like execution. This hook
|
|
33
|
-
// implementation comes from this PR:
|
|
34
|
-
// https://github.com/preactjs/signals/pull/290.
|
|
35
|
-
//
|
|
36
|
-
// We need to include it here in this repo until the mentioned PR is merged.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
export function useSignalEffect(cb) {
|
|
40
|
-
const callback = useRef(cb);
|
|
41
|
-
callback.current = cb;
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
const execute = () => callback.current();
|
|
44
|
-
|
|
45
|
-
const notify = () => afterNextFrame(eff.flush);
|
|
46
|
-
|
|
47
|
-
const eff = createFlusher(execute, notify);
|
|
48
|
-
return eff.dispose;
|
|
49
|
-
}, []);
|
|
50
|
-
} // For wrapperless hydration.
|
|
51
|
-
// See https://gist.github.com/developit/f4c67a2ede71dc2fab7f357f39cff28c
|
|
52
|
-
|
|
53
|
-
export const createRootFragment = (parent, replaceNode) => {
|
|
54
|
-
replaceNode = [].concat(replaceNode);
|
|
55
|
-
const s = replaceNode[replaceNode.length - 1].nextSibling;
|
|
56
|
-
|
|
57
|
-
function insert(c, r) {
|
|
58
|
-
parent.insertBefore(c, r || s);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return parent.__k = {
|
|
62
|
-
nodeType: 1,
|
|
63
|
-
parentNode: parent,
|
|
64
|
-
firstChild: replaceNode[0],
|
|
65
|
-
childNodes: replaceNode,
|
|
66
|
-
insertBefore: insert,
|
|
67
|
-
appendChild: insert,
|
|
68
|
-
|
|
69
|
-
removeChild(c) {
|
|
70
|
-
parent.removeChild(c);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/utils.js"],"names":["useRef","useEffect","effect","afterNextFrame","callback","done","window","cancelAnimationFrame","raf","setTimeout","requestAnimationFrame","createFlusher","compute","notify","flush","dispose","c","bind","x","useSignalEffect","cb","current","execute","eff","createRootFragment","parent","replaceNode","concat","s","length","nextSibling","insert","r","insertBefore","__k","nodeType","parentNode","firstChild","childNodes","appendChild","removeChild"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,SAAjB,QAAkC,cAAlC;AACA,SAASC,MAAT,QAAuB,iBAAvB;;AAEA,SAASC,cAAT,CAAyBC,QAAzB,EAAoC;AACnC,QAAMC,IAAI,GAAG,MAAM;AAClBC,IAAAA,MAAM,CAACC,oBAAP,CAA6BC,GAA7B;AACAC,IAAAA,UAAU,CAAEL,QAAF,CAAV;AACA,GAHD;;AAIA,QAAMI,GAAG,GAAGF,MAAM,CAACI,qBAAP,CAA8BL,IAA9B,CAAZ;AACA,C,CAED;AACA;AACA;AACA;;;AACA,SAASM,aAAT,CAAwBC,OAAxB,EAAiCC,MAAjC,EAA0C;AACzC,MAAIC,KAAJ;AACA,QAAMC,OAAO,GAAGb,MAAM,CAAE,YAAY;AACnCY,IAAAA,KAAK,GAAG,KAAKE,CAAL,CAAOC,IAAP,CAAa,IAAb,CAAR;AACA,SAAKC,CAAL,GAASN,OAAT;AACA,SAAKI,CAAL,GAASH,MAAT;AACA,WAAOD,OAAO,EAAd;AACA,GALqB,CAAtB;AAMA,SAAO;AAAEE,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAP;AACA,C,CAED;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASI,eAAT,CAA0BC,EAA1B,EAA+B;AACrC,QAAMhB,QAAQ,GAAGJ,MAAM,CAAEoB,EAAF,CAAvB;AACAhB,EAAAA,QAAQ,CAACiB,OAAT,GAAmBD,EAAnB;AAEAnB,EAAAA,SAAS,CAAE,MAAM;AAChB,UAAMqB,OAAO,GAAG,MAAMlB,QAAQ,CAACiB,OAAT,EAAtB;;AACA,UAAMR,MAAM,GAAG,MAAMV,cAAc,CAAEoB,GAAG,CAACT,KAAN,CAAnC;;AACA,UAAMS,GAAG,GAAGZ,aAAa,CAAEW,OAAF,EAAWT,MAAX,CAAzB;AACA,WAAOU,GAAG,CAACR,OAAX;AACA,GALQ,EAKN,EALM,CAAT;AAMA,C,CAED;AACA;;AACA,OAAO,MAAMS,kBAAkB,GAAG,CAAEC,MAAF,EAAUC,WAAV,KAA2B;AAC5DA,EAAAA,WAAW,GAAG,GAAGC,MAAH,CAAWD,WAAX,CAAd;AACA,QAAME,CAAC,GAAGF,WAAW,CAAEA,WAAW,CAACG,MAAZ,GAAqB,CAAvB,CAAX,CAAsCC,WAAhD;;AACA,WAASC,MAAT,CAAiBf,CAAjB,EAAoBgB,CAApB,EAAwB;AACvBP,IAAAA,MAAM,CAACQ,YAAP,CAAqBjB,CAArB,EAAwBgB,CAAC,IAAIJ,CAA7B;AACA;;AACD,SAASH,MAAM,CAACS,GAAP,GAAa;AACrBC,IAAAA,QAAQ,EAAE,CADW;AAErBC,IAAAA,UAAU,EAAEX,MAFS;AAGrBY,IAAAA,UAAU,EAAEX,WAAW,CAAE,CAAF,CAHF;AAIrBY,IAAAA,UAAU,EAAEZ,WAJS;AAKrBO,IAAAA,YAAY,EAAEF,MALO;AAMrBQ,IAAAA,WAAW,EAAER,MANQ;;AAOrBS,IAAAA,WAAW,CAAExB,CAAF,EAAM;AAChBS,MAAAA,MAAM,CAACe,WAAP,CAAoBxB,CAApB;AACA;;AAToB,GAAtB;AAWA,CAjBM","sourcesContent":["/**\n * External dependencies\n */\nimport { useRef, useEffect } from 'preact/hooks';\nimport { effect } from '@preact/signals';\n\nfunction afterNextFrame( callback ) {\n\tconst done = () => {\n\t\twindow.cancelAnimationFrame( raf );\n\t\tsetTimeout( callback );\n\t};\n\tconst raf = window.requestAnimationFrame( done );\n}\n\n// Using the mangled properties:\n// this.c: this._callback\n// this.x: this._compute\n// https://github.com/preactjs/signals/blob/main/mangle.json\nfunction createFlusher( compute, notify ) {\n\tlet flush;\n\tconst dispose = effect( function () {\n\t\tflush = this.c.bind( this );\n\t\tthis.x = compute;\n\t\tthis.c = notify;\n\t\treturn compute();\n\t} );\n\treturn { flush, dispose };\n}\n\n// Version of `useSignalEffect` with a `useEffect`-like execution. This hook\n// implementation comes from this PR:\n// https://github.com/preactjs/signals/pull/290.\n//\n// We need to include it here in this repo until the mentioned PR is merged.\nexport function useSignalEffect( cb ) {\n\tconst callback = useRef( cb );\n\tcallback.current = cb;\n\n\tuseEffect( () => {\n\t\tconst execute = () => callback.current();\n\t\tconst notify = () => afterNextFrame( eff.flush );\n\t\tconst eff = createFlusher( execute, notify );\n\t\treturn eff.dispose;\n\t}, [] );\n}\n\n// For wrapperless hydration.\n// See https://gist.github.com/developit/f4c67a2ede71dc2fab7f357f39cff28c\nexport const createRootFragment = ( parent, replaceNode ) => {\n\treplaceNode = [].concat( replaceNode );\n\tconst s = replaceNode[ replaceNode.length - 1 ].nextSibling;\n\tfunction insert( c, r ) {\n\t\tparent.insertBefore( c, r || s );\n\t}\n\treturn ( parent.__k = {\n\t\tnodeType: 1,\n\t\tparentNode: parent,\n\t\tfirstChild: replaceNode[ 0 ],\n\t\tchildNodes: replaceNode,\n\t\tinsertBefore: insert,\n\t\tappendChild: insert,\n\t\tremoveChild( c ) {\n\t\t\tparent.removeChild( c );\n\t\t},\n\t} );\n};\n"]}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { h } from 'preact';
|
|
5
|
-
/**
|
|
6
|
-
* Internal dependencies
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { directivePrefix as p } from './constants';
|
|
10
|
-
const ignoreAttr = `data-${p}-ignore`;
|
|
11
|
-
const islandAttr = `data-${p}-interactive`;
|
|
12
|
-
const fullPrefix = `data-${p}-`; // Regular expression for directive parsing.
|
|
13
|
-
|
|
14
|
-
const directiveParser = new RegExp(`^data-${p}-` + // ${p} must be a prefix string, like 'wp'.
|
|
15
|
-
// Match alphanumeric characters including hyphen-separated
|
|
16
|
-
// segments. It excludes underscore intentionally to prevent confusion.
|
|
17
|
-
// E.g., "custom-directive".
|
|
18
|
-
'([a-z0-9]+(?:-[a-z0-9]+)*)' + // (Optional) Match '--' followed by any alphanumeric charachters. It
|
|
19
|
-
// excludes underscore intentionally to prevent confusion, but it can
|
|
20
|
-
// contain multiple hyphens. E.g., "--custom-prefix--with-more-info".
|
|
21
|
-
'(?:--([a-z0-9][a-z0-9-]+))?$', 'i' // Case insensitive.
|
|
22
|
-
);
|
|
23
|
-
export const hydratedIslands = new WeakSet(); // Recursive function that transforms a DOM tree into vDOM.
|
|
24
|
-
|
|
25
|
-
export function toVdom(root) {
|
|
26
|
-
const treeWalker = document.createTreeWalker(root, 205 // ELEMENT + TEXT + COMMENT + CDATA_SECTION + PROCESSING_INSTRUCTION
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
function walk(node) {
|
|
30
|
-
const {
|
|
31
|
-
attributes,
|
|
32
|
-
nodeType
|
|
33
|
-
} = node;
|
|
34
|
-
if (nodeType === 3) return [node.data];
|
|
35
|
-
|
|
36
|
-
if (nodeType === 4) {
|
|
37
|
-
const next = treeWalker.nextSibling();
|
|
38
|
-
node.replaceWith(new window.Text(node.nodeValue));
|
|
39
|
-
return [node.nodeValue, next];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (nodeType === 8 || nodeType === 7) {
|
|
43
|
-
const next = treeWalker.nextSibling();
|
|
44
|
-
node.remove();
|
|
45
|
-
return [null, next];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const props = {};
|
|
49
|
-
const children = [];
|
|
50
|
-
const directives = {};
|
|
51
|
-
let hasDirectives = false;
|
|
52
|
-
let ignore = false;
|
|
53
|
-
let island = false;
|
|
54
|
-
|
|
55
|
-
for (let i = 0; i < attributes.length; i++) {
|
|
56
|
-
const n = attributes[i].name;
|
|
57
|
-
|
|
58
|
-
if (n[fullPrefix.length] && n.slice(0, fullPrefix.length) === fullPrefix) {
|
|
59
|
-
if (n === ignoreAttr) {
|
|
60
|
-
ignore = true;
|
|
61
|
-
} else if (n === islandAttr) {
|
|
62
|
-
island = true;
|
|
63
|
-
} else {
|
|
64
|
-
hasDirectives = true;
|
|
65
|
-
let val = attributes[i].value;
|
|
66
|
-
|
|
67
|
-
try {
|
|
68
|
-
val = JSON.parse(val);
|
|
69
|
-
} catch (e) {}
|
|
70
|
-
|
|
71
|
-
const [, prefix, suffix] = directiveParser.exec(n);
|
|
72
|
-
directives[prefix] = directives[prefix] || {};
|
|
73
|
-
directives[prefix][suffix || 'default'] = val;
|
|
74
|
-
}
|
|
75
|
-
} else if (n === 'ref') {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
props[n] = attributes[i].value;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (ignore && !island) return [h(node.localName, { ...props,
|
|
83
|
-
innerHTML: node.innerHTML,
|
|
84
|
-
__directives: {
|
|
85
|
-
ignore: true
|
|
86
|
-
}
|
|
87
|
-
})];
|
|
88
|
-
if (island) hydratedIslands.add(node);
|
|
89
|
-
if (hasDirectives) props.__directives = directives;
|
|
90
|
-
let child = treeWalker.firstChild();
|
|
91
|
-
|
|
92
|
-
if (child) {
|
|
93
|
-
while (child) {
|
|
94
|
-
const [vnode, nextChild] = walk(child);
|
|
95
|
-
if (vnode) children.push(vnode);
|
|
96
|
-
child = nextChild || treeWalker.nextSibling();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
treeWalker.parentNode();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return [h(node.localName, props, children)];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return walk(treeWalker.currentNode);
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=vdom.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/vdom.js"],"names":["h","directivePrefix","p","ignoreAttr","islandAttr","fullPrefix","directiveParser","RegExp","hydratedIslands","WeakSet","toVdom","root","treeWalker","document","createTreeWalker","walk","node","attributes","nodeType","data","next","nextSibling","replaceWith","window","Text","nodeValue","remove","props","children","directives","hasDirectives","ignore","island","i","length","n","name","slice","val","value","JSON","parse","e","prefix","suffix","exec","localName","innerHTML","__directives","add","child","firstChild","vnode","nextChild","push","parentNode","currentNode"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { h } from 'preact';\n/**\n * Internal dependencies\n */\nimport { directivePrefix as p } from './constants';\n\nconst ignoreAttr = `data-${ p }-ignore`;\nconst islandAttr = `data-${ p }-interactive`;\nconst fullPrefix = `data-${ p }-`;\n\n// Regular expression for directive parsing.\nconst directiveParser = new RegExp(\n\t`^data-${ p }-` + // ${p} must be a prefix string, like 'wp'.\n\t\t// Match alphanumeric characters including hyphen-separated\n\t\t// segments. It excludes underscore intentionally to prevent confusion.\n\t\t// E.g., \"custom-directive\".\n\t\t'([a-z0-9]+(?:-[a-z0-9]+)*)' +\n\t\t// (Optional) Match '--' followed by any alphanumeric charachters. It\n\t\t// excludes underscore intentionally to prevent confusion, but it can\n\t\t// contain multiple hyphens. E.g., \"--custom-prefix--with-more-info\".\n\t\t'(?:--([a-z0-9][a-z0-9-]+))?$',\n\t'i' // Case insensitive.\n);\n\nexport const hydratedIslands = new WeakSet();\n\n// Recursive function that transforms a DOM tree into vDOM.\nexport function toVdom( root ) {\n\tconst treeWalker = document.createTreeWalker(\n\t\troot,\n\t\t205 // ELEMENT + TEXT + COMMENT + CDATA_SECTION + PROCESSING_INSTRUCTION\n\t);\n\n\tfunction walk( node ) {\n\t\tconst { attributes, nodeType } = node;\n\n\t\tif ( nodeType === 3 ) return [ node.data ];\n\t\tif ( nodeType === 4 ) {\n\t\t\tconst next = treeWalker.nextSibling();\n\t\t\tnode.replaceWith( new window.Text( node.nodeValue ) );\n\t\t\treturn [ node.nodeValue, next ];\n\t\t}\n\t\tif ( nodeType === 8 || nodeType === 7 ) {\n\t\t\tconst next = treeWalker.nextSibling();\n\t\t\tnode.remove();\n\t\t\treturn [ null, next ];\n\t\t}\n\n\t\tconst props = {};\n\t\tconst children = [];\n\t\tconst directives = {};\n\t\tlet hasDirectives = false;\n\t\tlet ignore = false;\n\t\tlet island = false;\n\n\t\tfor ( let i = 0; i < attributes.length; i++ ) {\n\t\t\tconst n = attributes[ i ].name;\n\t\t\tif (\n\t\t\t\tn[ fullPrefix.length ] &&\n\t\t\t\tn.slice( 0, fullPrefix.length ) === fullPrefix\n\t\t\t) {\n\t\t\t\tif ( n === ignoreAttr ) {\n\t\t\t\t\tignore = true;\n\t\t\t\t} else if ( n === islandAttr ) {\n\t\t\t\t\tisland = true;\n\t\t\t\t} else {\n\t\t\t\t\thasDirectives = true;\n\t\t\t\t\tlet val = attributes[ i ].value;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tval = JSON.parse( val );\n\t\t\t\t\t} catch ( e ) {}\n\t\t\t\t\tconst [ , prefix, suffix ] = directiveParser.exec( n );\n\t\t\t\t\tdirectives[ prefix ] = directives[ prefix ] || {};\n\t\t\t\t\tdirectives[ prefix ][ suffix || 'default' ] = val;\n\t\t\t\t}\n\t\t\t} else if ( n === 'ref' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprops[ n ] = attributes[ i ].value;\n\t\t}\n\n\t\tif ( ignore && ! island )\n\t\t\treturn [\n\t\t\t\th( node.localName, {\n\t\t\t\t\t...props,\n\t\t\t\t\tinnerHTML: node.innerHTML,\n\t\t\t\t\t__directives: { ignore: true },\n\t\t\t\t} ),\n\t\t\t];\n\t\tif ( island ) hydratedIslands.add( node );\n\n\t\tif ( hasDirectives ) props.__directives = directives;\n\n\t\tlet child = treeWalker.firstChild();\n\t\tif ( child ) {\n\t\t\twhile ( child ) {\n\t\t\t\tconst [ vnode, nextChild ] = walk( child );\n\t\t\t\tif ( vnode ) children.push( vnode );\n\t\t\t\tchild = nextChild || treeWalker.nextSibling();\n\t\t\t}\n\t\t\ttreeWalker.parentNode();\n\t\t}\n\n\t\treturn [ h( node.localName, props, children ) ];\n\t}\n\n\treturn walk( treeWalker.currentNode );\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Icon } from '@wordpress/components';
|
|
5
|
-
import { withPreferredColorScheme } from '@wordpress/compose';
|
|
6
|
-
import { gallery as icon } from '@wordpress/icons';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Internal dependencies
|
|
10
|
-
*/
|
|
11
|
-
import styles from './styles.scss';
|
|
12
|
-
|
|
13
|
-
const IconWithColorScheme = withPreferredColorScheme(
|
|
14
|
-
( { getStylesFromColorScheme } ) => {
|
|
15
|
-
const colorSchemeStyles = getStylesFromColorScheme(
|
|
16
|
-
styles.icon,
|
|
17
|
-
styles.iconDark
|
|
18
|
-
);
|
|
19
|
-
return <Icon icon={ icon } { ...colorSchemeStyles } />;
|
|
20
|
-
}
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
export const sharedIcon = <IconWithColorScheme />;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Path, SVG } from '@wordpress/components';
|
|
5
|
-
|
|
6
|
-
/** @typedef {import('@wordpress/element').WPComponent} WPComponent */
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* HeadingLevelIcon props.
|
|
10
|
-
*
|
|
11
|
-
* @typedef WPHeadingLevelIconProps
|
|
12
|
-
*
|
|
13
|
-
* @property {number} level The heading level to show an icon for.
|
|
14
|
-
* @property {?boolean} isPressed Whether or not the icon should appear pressed; default: false.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Heading level icon.
|
|
19
|
-
*
|
|
20
|
-
* @param {WPHeadingLevelIconProps} props Component props.
|
|
21
|
-
*
|
|
22
|
-
* @return {?WPComponent} The icon.
|
|
23
|
-
*/
|
|
24
|
-
export default function HeadingLevelIcon( { level, isPressed = false } ) {
|
|
25
|
-
const levelToPath = {
|
|
26
|
-
1: 'M9 5h2v10H9v-4H5v4H3V5h2v4h4V5zm6.6 0c-.6.9-1.5 1.7-2.6 2v1h2v7h2V5h-1.4z',
|
|
27
|
-
2: 'M7 5h2v10H7v-4H3v4H1V5h2v4h4V5zm8 8c.5-.4.6-.6 1.1-1.1.4-.4.8-.8 1.2-1.3.3-.4.6-.8.9-1.3.2-.4.3-.8.3-1.3 0-.4-.1-.9-.3-1.3-.2-.4-.4-.7-.8-1-.3-.3-.7-.5-1.2-.6-.5-.2-1-.2-1.5-.2-.4 0-.7 0-1.1.1-.3.1-.7.2-1 .3-.3.1-.6.3-.9.5-.3.2-.6.4-.8.7l1.2 1.2c.3-.3.6-.5 1-.7.4-.2.7-.3 1.2-.3s.9.1 1.3.4c.3.3.5.7.5 1.1 0 .4-.1.8-.4 1.1-.3.5-.6.9-1 1.2-.4.4-1 .9-1.6 1.4-.6.5-1.4 1.1-2.2 1.6V15h8v-2H15z',
|
|
28
|
-
3: 'M12.1 12.2c.4.3.8.5 1.2.7.4.2.9.3 1.4.3.5 0 1-.1 1.4-.3.3-.1.5-.5.5-.8 0-.2 0-.4-.1-.6-.1-.2-.3-.3-.5-.4-.3-.1-.7-.2-1-.3-.5-.1-1-.1-1.5-.1V9.1c.7.1 1.5-.1 2.2-.4.4-.2.6-.5.6-.9 0-.3-.1-.6-.4-.8-.3-.2-.7-.3-1.1-.3-.4 0-.8.1-1.1.3-.4.2-.7.4-1.1.6l-1.2-1.4c.5-.4 1.1-.7 1.6-.9.5-.2 1.2-.3 1.8-.3.5 0 1 .1 1.6.2.4.1.8.3 1.2.5.3.2.6.5.8.8.2.3.3.7.3 1.1 0 .5-.2.9-.5 1.3-.4.4-.9.7-1.5.9v.1c.6.1 1.2.4 1.6.8.4.4.7.9.7 1.5 0 .4-.1.8-.3 1.2-.2.4-.5.7-.9.9-.4.3-.9.4-1.3.5-.5.1-1 .2-1.6.2-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1l1.1-1.4zM7 9H3V5H1v10h2v-4h4v4h2V5H7v4z',
|
|
29
|
-
4: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm10-2h-1v2h-2v-2h-5v-2l4-6h3v6h1v2zm-3-2V7l-2.8 4H16z',
|
|
30
|
-
5: 'M12.1 12.2c.4.3.7.5 1.1.7.4.2.9.3 1.3.3.5 0 1-.1 1.4-.4.4-.3.6-.7.6-1.1 0-.4-.2-.9-.6-1.1-.4-.3-.9-.4-1.4-.4H14c-.1 0-.3 0-.4.1l-.4.1-.5.2-1-.6.3-5h6.4v1.9h-4.3L14 8.8c.2-.1.5-.1.7-.2.2 0 .5-.1.7-.1.5 0 .9.1 1.4.2.4.1.8.3 1.1.6.3.2.6.6.8.9.2.4.3.9.3 1.4 0 .5-.1 1-.3 1.4-.2.4-.5.8-.9 1.1-.4.3-.8.5-1.3.7-.5.2-1 .3-1.5.3-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1-.1-.1 1-1.5 1-1.5zM9 15H7v-4H3v4H1V5h2v4h4V5h2v10z',
|
|
31
|
-
6: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm8.6-7.5c-.2-.2-.5-.4-.8-.5-.6-.2-1.3-.2-1.9 0-.3.1-.6.3-.8.5l-.6.9c-.2.5-.2.9-.2 1.4.4-.3.8-.6 1.2-.8.4-.2.8-.3 1.3-.3.4 0 .8 0 1.2.2.4.1.7.3 1 .6.3.3.5.6.7.9.2.4.3.8.3 1.3s-.1.9-.3 1.4c-.2.4-.5.7-.8 1-.4.3-.8.5-1.2.6-1 .3-2 .3-3 0-.5-.2-1-.5-1.4-.9-.4-.4-.8-.9-1-1.5-.2-.6-.3-1.3-.3-2.1s.1-1.6.4-2.3c.2-.6.6-1.2 1-1.6.4-.4.9-.7 1.4-.9.6-.3 1.1-.4 1.7-.4.7 0 1.4.1 2 .3.5.2 1 .5 1.4.8 0 .1-1.3 1.4-1.3 1.4zm-2.4 5.8c.2 0 .4 0 .6-.1.2 0 .4-.1.5-.2.1-.1.3-.3.4-.5.1-.2.1-.5.1-.7 0-.4-.1-.8-.4-1.1-.3-.2-.7-.3-1.1-.3-.3 0-.7.1-1 .2-.4.2-.7.4-1 .7 0 .3.1.7.3 1 .1.2.3.4.4.6.2.1.3.3.5.3.2.1.5.2.7.1z',
|
|
32
|
-
};
|
|
33
|
-
if ( ! levelToPath.hasOwnProperty( level ) ) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<SVG
|
|
39
|
-
width="24"
|
|
40
|
-
height="24"
|
|
41
|
-
viewBox="0 0 20 20"
|
|
42
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
43
|
-
isPressed={ isPressed }
|
|
44
|
-
>
|
|
45
|
-
<Path d={ levelToPath[ level ] } />
|
|
46
|
-
</SVG>
|
|
47
|
-
);
|
|
48
|
-
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { store } from '../utils/interactivity';
|
|
5
|
-
|
|
6
|
-
const focusableSelectors = [
|
|
7
|
-
'a[href]',
|
|
8
|
-
'area[href]',
|
|
9
|
-
'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',
|
|
10
|
-
'select:not([disabled]):not([aria-hidden])',
|
|
11
|
-
'textarea:not([disabled]):not([aria-hidden])',
|
|
12
|
-
'button:not([disabled]):not([aria-hidden])',
|
|
13
|
-
'iframe',
|
|
14
|
-
'object',
|
|
15
|
-
'embed',
|
|
16
|
-
'[contenteditable]',
|
|
17
|
-
'[tabindex]:not([tabindex^="-"])',
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
const openMenu = ( { context, ref }, menuOpenedOn ) => {
|
|
21
|
-
context.core.navigation.isMenuOpen[ menuOpenedOn ] = true;
|
|
22
|
-
context.core.navigation.previousFocus = ref;
|
|
23
|
-
if ( context.core.navigation.overlay ) {
|
|
24
|
-
// Add a `has-modal-open` class to the <html> root.
|
|
25
|
-
document.documentElement.classList.add( 'has-modal-open' );
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const closeMenu = ( { context, selectors }, menuClosedOn ) => {
|
|
30
|
-
context.core.navigation.isMenuOpen[ menuClosedOn ] = false;
|
|
31
|
-
// Check if the menu is still open or not.
|
|
32
|
-
if ( ! selectors.core.navigation.isMenuOpen( { context } ) ) {
|
|
33
|
-
if (
|
|
34
|
-
context.core.navigation.modal.contains(
|
|
35
|
-
window.document.activeElement
|
|
36
|
-
)
|
|
37
|
-
) {
|
|
38
|
-
context.core.navigation.previousFocus.focus();
|
|
39
|
-
}
|
|
40
|
-
context.core.navigation.modal = null;
|
|
41
|
-
context.core.navigation.previousFocus = null;
|
|
42
|
-
if ( context.core.navigation.overlay ) {
|
|
43
|
-
document.documentElement.classList.remove( 'has-modal-open' );
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
store( {
|
|
49
|
-
effects: {
|
|
50
|
-
core: {
|
|
51
|
-
navigation: {
|
|
52
|
-
initMenu: ( { context, selectors, ref } ) => {
|
|
53
|
-
if ( selectors.core.navigation.isMenuOpen( { context } ) ) {
|
|
54
|
-
const focusableElements =
|
|
55
|
-
ref.querySelectorAll( focusableSelectors );
|
|
56
|
-
context.core.navigation.modal = ref;
|
|
57
|
-
context.core.navigation.firstFocusableElement =
|
|
58
|
-
focusableElements[ 0 ];
|
|
59
|
-
context.core.navigation.lastFocusableElement =
|
|
60
|
-
focusableElements[ focusableElements.length - 1 ];
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
focusFirstElement: ( { context, selectors, ref } ) => {
|
|
64
|
-
if ( selectors.core.navigation.isMenuOpen( { context } ) ) {
|
|
65
|
-
ref.querySelector(
|
|
66
|
-
'.wp-block-navigation-item > *:first-child'
|
|
67
|
-
).focus();
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
selectors: {
|
|
74
|
-
core: {
|
|
75
|
-
navigation: {
|
|
76
|
-
roleAttribute: ( { context, selectors } ) =>
|
|
77
|
-
context.core.navigation.overlay &&
|
|
78
|
-
selectors.core.navigation.isMenuOpen( { context } )
|
|
79
|
-
? 'dialog'
|
|
80
|
-
: '',
|
|
81
|
-
isMenuOpen: ( { context } ) =>
|
|
82
|
-
// The menu is opened if either `click` or `hover` is true.
|
|
83
|
-
Object.values( context.core.navigation.isMenuOpen ).filter(
|
|
84
|
-
Boolean
|
|
85
|
-
).length > 0,
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
actions: {
|
|
90
|
-
core: {
|
|
91
|
-
navigation: {
|
|
92
|
-
openMenuOnHover( args ) {
|
|
93
|
-
openMenu( args, 'hover' );
|
|
94
|
-
},
|
|
95
|
-
closeMenuOnHover( args ) {
|
|
96
|
-
closeMenu( args, 'hover' );
|
|
97
|
-
},
|
|
98
|
-
openMenuOnClick( args ) {
|
|
99
|
-
openMenu( args, 'click' );
|
|
100
|
-
},
|
|
101
|
-
closeMenuOnClick( args ) {
|
|
102
|
-
closeMenu( args, 'click' );
|
|
103
|
-
},
|
|
104
|
-
toggleMenuOnClick: ( args ) => {
|
|
105
|
-
const { context } = args;
|
|
106
|
-
if ( context.core.navigation.isMenuOpen.click ) {
|
|
107
|
-
closeMenu( args, 'click' );
|
|
108
|
-
} else {
|
|
109
|
-
openMenu( args, 'click' );
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
handleMenuKeydown: ( args ) => {
|
|
113
|
-
const { context, event } = args;
|
|
114
|
-
if ( context.core.navigation.isMenuOpen.click ) {
|
|
115
|
-
// If Escape close the menu
|
|
116
|
-
if (
|
|
117
|
-
event?.key === 'Escape' ||
|
|
118
|
-
event?.keyCode === 27
|
|
119
|
-
) {
|
|
120
|
-
closeMenu( args, 'click' );
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Trap focus if it is an overlay (main menu)
|
|
125
|
-
if (
|
|
126
|
-
context.core.navigation.overlay &&
|
|
127
|
-
( event.key === 'Tab' || event.keyCode === 9 )
|
|
128
|
-
) {
|
|
129
|
-
// If shift + tab it change the direction
|
|
130
|
-
if (
|
|
131
|
-
event.shiftKey &&
|
|
132
|
-
window.document.activeElement ===
|
|
133
|
-
context.core.navigation
|
|
134
|
-
.firstFocusableElement
|
|
135
|
-
) {
|
|
136
|
-
event.preventDefault();
|
|
137
|
-
context.core.navigation.lastFocusableElement.focus();
|
|
138
|
-
} else if (
|
|
139
|
-
! event.shiftKey &&
|
|
140
|
-
window.document.activeElement ===
|
|
141
|
-
context.core.navigation.lastFocusableElement
|
|
142
|
-
) {
|
|
143
|
-
event.preventDefault();
|
|
144
|
-
context.core.navigation.firstFocusableElement.focus();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
handleMenuFocusout: ( args ) => {
|
|
150
|
-
const { context, event } = args;
|
|
151
|
-
// If focus is outside modal, and in the document, close menu
|
|
152
|
-
// event.target === The element losing focus
|
|
153
|
-
// event.relatedTarget === The element receiving focus (if any)
|
|
154
|
-
// When focusout is outsite the document,
|
|
155
|
-
// `window.document.activeElement` doesn't change
|
|
156
|
-
if (
|
|
157
|
-
context.core.navigation.isMenuOpen.click &&
|
|
158
|
-
! context.core.navigation.modal.contains(
|
|
159
|
-
event.relatedTarget
|
|
160
|
-
) &&
|
|
161
|
-
event.target !== window.document.activeElement
|
|
162
|
-
) {
|
|
163
|
-
closeMenu( args, 'click' );
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
} );
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const directivePrefix = 'wp';
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useContext, useMemo, useEffect } from 'preact/hooks';
|
|
5
|
-
import { deepSignal, peek } from 'deepsignal';
|
|
6
|
-
/**
|
|
7
|
-
* Internal dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { createPortal } from './portals.js';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Internal dependencies
|
|
13
|
-
*/
|
|
14
|
-
import { useSignalEffect } from './utils';
|
|
15
|
-
import { directive } from './hooks';
|
|
16
|
-
|
|
17
|
-
const isObject = ( item ) =>
|
|
18
|
-
item && typeof item === 'object' && ! Array.isArray( item );
|
|
19
|
-
|
|
20
|
-
const mergeDeepSignals = ( target, source ) => {
|
|
21
|
-
for ( const k in source ) {
|
|
22
|
-
if ( typeof peek( target, k ) === 'undefined' ) {
|
|
23
|
-
target[ `$${ k }` ] = source[ `$${ k }` ];
|
|
24
|
-
} else if (
|
|
25
|
-
isObject( peek( target, k ) ) &&
|
|
26
|
-
isObject( peek( source, k ) )
|
|
27
|
-
) {
|
|
28
|
-
mergeDeepSignals(
|
|
29
|
-
target[ `$${ k }` ].peek(),
|
|
30
|
-
source[ `$${ k }` ].peek()
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default () => {
|
|
37
|
-
// data-wp-context
|
|
38
|
-
directive(
|
|
39
|
-
'context',
|
|
40
|
-
( {
|
|
41
|
-
directives: {
|
|
42
|
-
context: { default: context },
|
|
43
|
-
},
|
|
44
|
-
props: { children },
|
|
45
|
-
context: inherited,
|
|
46
|
-
} ) => {
|
|
47
|
-
const { Provider } = inherited;
|
|
48
|
-
const inheritedValue = useContext( inherited );
|
|
49
|
-
const value = useMemo( () => {
|
|
50
|
-
const localValue = deepSignal( context );
|
|
51
|
-
mergeDeepSignals( localValue, inheritedValue );
|
|
52
|
-
return localValue;
|
|
53
|
-
}, [ context, inheritedValue ] );
|
|
54
|
-
|
|
55
|
-
return <Provider value={ value }>{ children }</Provider>;
|
|
56
|
-
},
|
|
57
|
-
{ priority: 5 }
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
// data-wp-body
|
|
61
|
-
directive( 'body', ( { props: { children }, context: inherited } ) => {
|
|
62
|
-
const { Provider } = inherited;
|
|
63
|
-
const inheritedValue = useContext( inherited );
|
|
64
|
-
return createPortal(
|
|
65
|
-
<Provider value={ inheritedValue }>{ children }</Provider>,
|
|
66
|
-
document.body
|
|
67
|
-
);
|
|
68
|
-
} );
|
|
69
|
-
|
|
70
|
-
// data-wp-effect--[name]
|
|
71
|
-
directive( 'effect', ( { directives: { effect }, context, evaluate } ) => {
|
|
72
|
-
const contextValue = useContext( context );
|
|
73
|
-
Object.values( effect ).forEach( ( path ) => {
|
|
74
|
-
useSignalEffect( () => {
|
|
75
|
-
return evaluate( path, { context: contextValue } );
|
|
76
|
-
} );
|
|
77
|
-
} );
|
|
78
|
-
} );
|
|
79
|
-
|
|
80
|
-
// data-wp-init--[name]
|
|
81
|
-
directive( 'init', ( { directives: { init }, context, evaluate } ) => {
|
|
82
|
-
const contextValue = useContext( context );
|
|
83
|
-
Object.values( init ).forEach( ( path ) => {
|
|
84
|
-
useEffect( () => {
|
|
85
|
-
return evaluate( path, { context: contextValue } );
|
|
86
|
-
}, [] );
|
|
87
|
-
} );
|
|
88
|
-
} );
|
|
89
|
-
|
|
90
|
-
// data-wp-on--[event]
|
|
91
|
-
directive( 'on', ( { directives: { on }, element, evaluate, context } ) => {
|
|
92
|
-
const contextValue = useContext( context );
|
|
93
|
-
Object.entries( on ).forEach( ( [ name, path ] ) => {
|
|
94
|
-
element.props[ `on${ name }` ] = ( event ) => {
|
|
95
|
-
evaluate( path, { event, context: contextValue } );
|
|
96
|
-
};
|
|
97
|
-
} );
|
|
98
|
-
} );
|
|
99
|
-
|
|
100
|
-
// data-wp-class--[classname]
|
|
101
|
-
directive(
|
|
102
|
-
'class',
|
|
103
|
-
( {
|
|
104
|
-
directives: { class: className },
|
|
105
|
-
element,
|
|
106
|
-
evaluate,
|
|
107
|
-
context,
|
|
108
|
-
} ) => {
|
|
109
|
-
const contextValue = useContext( context );
|
|
110
|
-
Object.keys( className )
|
|
111
|
-
.filter( ( n ) => n !== 'default' )
|
|
112
|
-
.forEach( ( name ) => {
|
|
113
|
-
const result = evaluate( className[ name ], {
|
|
114
|
-
className: name,
|
|
115
|
-
context: contextValue,
|
|
116
|
-
} );
|
|
117
|
-
const currentClass = element.props.class || '';
|
|
118
|
-
const classFinder = new RegExp(
|
|
119
|
-
`(^|\\s)${ name }(\\s|$)`,
|
|
120
|
-
'g'
|
|
121
|
-
);
|
|
122
|
-
if ( ! result )
|
|
123
|
-
element.props.class = currentClass
|
|
124
|
-
.replace( classFinder, ' ' )
|
|
125
|
-
.trim();
|
|
126
|
-
else if ( ! classFinder.test( currentClass ) )
|
|
127
|
-
element.props.class = currentClass
|
|
128
|
-
? `${ currentClass } ${ name }`
|
|
129
|
-
: name;
|
|
130
|
-
|
|
131
|
-
useEffect( () => {
|
|
132
|
-
// This seems necessary because Preact doesn't change the class
|
|
133
|
-
// names on the hydration, so we have to do it manually. It doesn't
|
|
134
|
-
// need deps because it only needs to do it the first time.
|
|
135
|
-
if ( ! result ) {
|
|
136
|
-
element.ref.current.classList.remove( name );
|
|
137
|
-
} else {
|
|
138
|
-
element.ref.current.classList.add( name );
|
|
139
|
-
}
|
|
140
|
-
}, [] );
|
|
141
|
-
} );
|
|
142
|
-
}
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
// data-wp-bind--[attribute]
|
|
146
|
-
directive(
|
|
147
|
-
'bind',
|
|
148
|
-
( { directives: { bind }, element, context, evaluate } ) => {
|
|
149
|
-
const contextValue = useContext( context );
|
|
150
|
-
Object.entries( bind )
|
|
151
|
-
.filter( ( n ) => n !== 'default' )
|
|
152
|
-
.forEach( ( [ attribute, path ] ) => {
|
|
153
|
-
const result = evaluate( path, {
|
|
154
|
-
context: contextValue,
|
|
155
|
-
} );
|
|
156
|
-
element.props[ attribute ] = result;
|
|
157
|
-
|
|
158
|
-
// This seems necessary because Preact doesn't change the attributes
|
|
159
|
-
// on the hydration, so we have to do it manually. It doesn't need
|
|
160
|
-
// deps because it only needs to do it the first time.
|
|
161
|
-
useEffect( () => {
|
|
162
|
-
// aria- and data- attributes have no boolean representation.
|
|
163
|
-
// A `false` value is different from the attribute not being
|
|
164
|
-
// present, so we can't remove it.
|
|
165
|
-
// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136
|
|
166
|
-
if ( result === false && attribute[ 4 ] !== '-' ) {
|
|
167
|
-
element.ref.current.removeAttribute( attribute );
|
|
168
|
-
} else {
|
|
169
|
-
element.ref.current.setAttribute(
|
|
170
|
-
attribute,
|
|
171
|
-
result === true && attribute[ 4 ] !== '-'
|
|
172
|
-
? ''
|
|
173
|
-
: result
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
}, [] );
|
|
177
|
-
} );
|
|
178
|
-
}
|
|
179
|
-
);
|
|
180
|
-
|
|
181
|
-
// data-wp-ignore
|
|
182
|
-
directive(
|
|
183
|
-
'ignore',
|
|
184
|
-
( {
|
|
185
|
-
element: {
|
|
186
|
-
type: Type,
|
|
187
|
-
props: { innerHTML, ...rest },
|
|
188
|
-
},
|
|
189
|
-
} ) => {
|
|
190
|
-
// Preserve the initial inner HTML.
|
|
191
|
-
const cached = useMemo( () => innerHTML, [] );
|
|
192
|
-
return (
|
|
193
|
-
<Type
|
|
194
|
-
dangerouslySetInnerHTML={ { __html: cached } }
|
|
195
|
-
{ ...rest }
|
|
196
|
-
/>
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
);
|
|
200
|
-
};
|