@wordpress/block-library 8.13.0 → 8.14.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 +2 -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/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/buttons/edit.js +5 -1
- 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/index.js +1 -0
- package/build/column/index.js.map +1 -1
- package/build/comments/index.js +1 -0
- package/build/comments/index.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/util.js +9 -8
- package/build/embed/util.js.map +1 -1
- package/build/file/index.js +2 -1
- package/build/file/index.js.map +1 -1
- package/build/file/view.js +15 -1
- package/build/file/view.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/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/missing/edit.js +22 -8
- package/build/missing/edit.js.map +1 -1
- package/build/navigation/edit/index.js +1 -1
- package/build/navigation/edit/index.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/index.js +3 -2
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/view.js +174 -50
- package/build/navigation/view.js.map +1 -1
- package/build/navigation-link/edit.js +0 -11
- 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/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-numbers/index.js +1 -1
- package/build/quote/index.js +1 -0
- package/build/quote/index.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/term-description/index.js +1 -0
- package/build/term-description/index.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/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/buttons/edit.js +5 -1
- 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/index.js +1 -0
- package/build-module/column/index.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/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/util.js +6 -6
- package/build-module/embed/util.js.map +1 -1
- package/build-module/file/index.js +2 -1
- package/build-module/file/index.js.map +1 -1
- package/build-module/file/view.js +15 -2
- package/build-module/file/view.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/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/missing/edit.js +22 -8
- package/build-module/missing/edit.js.map +1 -1
- package/build-module/navigation/edit/index.js +1 -1
- package/build-module/navigation/edit/index.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/index.js +3 -2
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/view.js +173 -50
- package/build-module/navigation/view.js.map +1 -1
- package/build-module/navigation-link/edit.js +1 -12
- 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/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-numbers/index.js +1 -1
- package/build-module/quote/index.js +1 -0
- package/build-module/quote/index.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/term-description/index.js +1 -0
- package/build-module/term-description/index.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/footnotes/style-rtl.css +2 -2
- package/build-style/footnotes/style.css +2 -2
- package/build-style/image/style-rtl.css +16 -2
- package/build-style/image/style.css +16 -2
- package/build-style/style-rtl.css +18 -4
- package/build-style/style.css +18 -4
- package/package.json +33 -38
- package/src/archives/block.json +5 -1
- package/src/audio/block.json +5 -1
- package/src/avatar/block.json +1 -1
- package/src/block/edit.js +2 -2
- package/src/block/edit.native.js +8 -12
- package/src/block/test/edit.native.js +4 -4
- package/src/buttons/edit.js +2 -2
- package/src/categories/block.json +5 -1
- package/src/code/block.json +5 -1
- package/src/column/block.json +1 -0
- package/src/comments/block.json +1 -0
- package/src/cover/block.json +1 -0
- package/src/cover/edit/inspector-controls.js +1 -0
- package/src/details/block.json +5 -1
- package/src/embed/util.js +4 -6
- package/src/file/block.json +2 -1
- package/src/file/index.php +0 -17
- package/src/file/view.js +14 -5
- package/src/footnotes/index.php +11 -9
- package/src/footnotes/style.scss +2 -2
- package/src/gallery/block.json +3 -1
- 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/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/save.js +9 -1
- package/src/image/style.scss +15 -2
- 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-posts/index.php +1 -1
- package/src/list/block.json +5 -1
- package/src/media-text/block.json +1 -0
- package/src/missing/edit.js +31 -11
- package/src/navigation/block.json +3 -2
- package/src/navigation/edit/index.js +1 -2
- package/src/navigation/edit/menu-inspector-controls.js +0 -1
- package/src/navigation/index.php +39 -30
- package/src/navigation/view.js +189 -67
- package/src/navigation-link/edit.js +1 -15
- package/src/navigation-link/link-ui.js +14 -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/post-comments-form/block.json +1 -0
- package/src/post-navigation-link/block.json +1 -0
- package/src/post-time-to-read/block.json +5 -1
- package/src/query-pagination-numbers/block.json +1 -1
- package/src/quote/block.json +1 -0
- package/src/site-logo/block.json +5 -1
- 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/term-description/block.json +1 -0
- package/src/verse/block.json +5 -1
- package/src/video/block.json +5 -1
- package/build/file/interactivity.js +0 -19
- package/build/file/interactivity.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/navigation/view-modal.js +0 -64
- package/build/navigation/view-modal.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 +0 -15
- package/build-module/file/interactivity.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/navigation/view-modal.js +0 -58
- package/build-module/navigation/view-modal.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/file/interactivity.js +0 -15
- package/src/heading/heading-level-icon.js +0 -48
- package/src/navigation/interactivity.js +0 -169
- package/src/navigation/view-modal.js +0 -78
- 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,167 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interactivity = require("../utils/interactivity");
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Internal dependencies
|
|
7
|
-
*/
|
|
8
|
-
const focusableSelectors = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'];
|
|
9
|
-
|
|
10
|
-
const openMenu = ({
|
|
11
|
-
context,
|
|
12
|
-
ref
|
|
13
|
-
}, menuOpenedOn) => {
|
|
14
|
-
context.core.navigation.isMenuOpen[menuOpenedOn] = true;
|
|
15
|
-
context.core.navigation.previousFocus = ref;
|
|
16
|
-
|
|
17
|
-
if (context.core.navigation.overlay) {
|
|
18
|
-
// Add a `has-modal-open` class to the <html> root.
|
|
19
|
-
document.documentElement.classList.add('has-modal-open');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const closeMenu = ({
|
|
24
|
-
context,
|
|
25
|
-
selectors
|
|
26
|
-
}, menuClosedOn) => {
|
|
27
|
-
context.core.navigation.isMenuOpen[menuClosedOn] = false; // Check if the menu is still open or not.
|
|
28
|
-
|
|
29
|
-
if (!selectors.core.navigation.isMenuOpen({
|
|
30
|
-
context
|
|
31
|
-
})) {
|
|
32
|
-
if (context.core.navigation.modal.contains(window.document.activeElement)) {
|
|
33
|
-
context.core.navigation.previousFocus.focus();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
context.core.navigation.modal = null;
|
|
37
|
-
context.core.navigation.previousFocus = null;
|
|
38
|
-
|
|
39
|
-
if (context.core.navigation.overlay) {
|
|
40
|
-
document.documentElement.classList.remove('has-modal-open');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
(0, _interactivity.store)({
|
|
46
|
-
effects: {
|
|
47
|
-
core: {
|
|
48
|
-
navigation: {
|
|
49
|
-
initMenu: ({
|
|
50
|
-
context,
|
|
51
|
-
selectors,
|
|
52
|
-
ref
|
|
53
|
-
}) => {
|
|
54
|
-
if (selectors.core.navigation.isMenuOpen({
|
|
55
|
-
context
|
|
56
|
-
})) {
|
|
57
|
-
const focusableElements = ref.querySelectorAll(focusableSelectors);
|
|
58
|
-
context.core.navigation.modal = ref;
|
|
59
|
-
context.core.navigation.firstFocusableElement = focusableElements[0];
|
|
60
|
-
context.core.navigation.lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
focusFirstElement: ({
|
|
64
|
-
context,
|
|
65
|
-
selectors,
|
|
66
|
-
ref
|
|
67
|
-
}) => {
|
|
68
|
-
if (selectors.core.navigation.isMenuOpen({
|
|
69
|
-
context
|
|
70
|
-
})) {
|
|
71
|
-
ref.querySelector('.wp-block-navigation-item > *:first-child').focus();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
selectors: {
|
|
78
|
-
core: {
|
|
79
|
-
navigation: {
|
|
80
|
-
roleAttribute: ({
|
|
81
|
-
context,
|
|
82
|
-
selectors
|
|
83
|
-
}) => context.core.navigation.overlay && selectors.core.navigation.isMenuOpen({
|
|
84
|
-
context
|
|
85
|
-
}) ? 'dialog' : '',
|
|
86
|
-
isMenuOpen: ({
|
|
87
|
-
context
|
|
88
|
-
}) => // The menu is opened if either `click` or `hover` is true.
|
|
89
|
-
Object.values(context.core.navigation.isMenuOpen).filter(Boolean).length > 0
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
actions: {
|
|
94
|
-
core: {
|
|
95
|
-
navigation: {
|
|
96
|
-
openMenuOnHover(args) {
|
|
97
|
-
openMenu(args, 'hover');
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
closeMenuOnHover(args) {
|
|
101
|
-
closeMenu(args, 'hover');
|
|
102
|
-
},
|
|
103
|
-
|
|
104
|
-
openMenuOnClick(args) {
|
|
105
|
-
openMenu(args, 'click');
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
closeMenuOnClick(args) {
|
|
109
|
-
closeMenu(args, 'click');
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
toggleMenuOnClick: args => {
|
|
113
|
-
const {
|
|
114
|
-
context
|
|
115
|
-
} = args;
|
|
116
|
-
|
|
117
|
-
if (context.core.navigation.isMenuOpen.click) {
|
|
118
|
-
closeMenu(args, 'click');
|
|
119
|
-
} else {
|
|
120
|
-
openMenu(args, 'click');
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
handleMenuKeydown: args => {
|
|
124
|
-
const {
|
|
125
|
-
context,
|
|
126
|
-
event
|
|
127
|
-
} = args;
|
|
128
|
-
|
|
129
|
-
if (context.core.navigation.isMenuOpen.click) {
|
|
130
|
-
// If Escape close the menu
|
|
131
|
-
if (event?.key === 'Escape' || event?.keyCode === 27) {
|
|
132
|
-
closeMenu(args, 'click');
|
|
133
|
-
return;
|
|
134
|
-
} // Trap focus if it is an overlay (main menu)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (context.core.navigation.overlay && (event.key === 'Tab' || event.keyCode === 9)) {
|
|
138
|
-
// If shift + tab it change the direction
|
|
139
|
-
if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) {
|
|
140
|
-
event.preventDefault();
|
|
141
|
-
context.core.navigation.lastFocusableElement.focus();
|
|
142
|
-
} else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) {
|
|
143
|
-
event.preventDefault();
|
|
144
|
-
context.core.navigation.firstFocusableElement.focus();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
handleMenuFocusout: args => {
|
|
150
|
-
const {
|
|
151
|
-
context,
|
|
152
|
-
event
|
|
153
|
-
} = args; // If focus is outside modal, and in the document, close menu
|
|
154
|
-
// event.target === The element losing focus
|
|
155
|
-
// event.relatedTarget === The element receiving focus (if any)
|
|
156
|
-
// When focusout is outsite the document,
|
|
157
|
-
// `window.document.activeElement` doesn't change
|
|
158
|
-
|
|
159
|
-
if (context.core.navigation.isMenuOpen.click && !context.core.navigation.modal.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
|
|
160
|
-
closeMenu(args, 'click');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
//# sourceMappingURL=interactivity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation/interactivity.js"],"names":["focusableSelectors","openMenu","context","ref","menuOpenedOn","core","navigation","isMenuOpen","previousFocus","overlay","document","documentElement","classList","add","closeMenu","selectors","menuClosedOn","modal","contains","window","activeElement","focus","remove","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","args","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","toggleMenuOnClick","click","handleMenuKeydown","event","key","keyCode","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"mappings":"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","sourcesContent":["/**\n * Internal dependencies\n */\nimport { store } from '../utils/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'area[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'iframe',\n\t'object',\n\t'embed',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nconst openMenu = ( { context, ref }, menuOpenedOn ) => {\n\tcontext.core.navigation.isMenuOpen[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\n\tif ( context.core.navigation.overlay ) {\n\t\t// Add a `has-modal-open` class to the <html> root.\n\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t}\n};\n\nconst closeMenu = ( { context, selectors }, menuClosedOn ) => {\n\tcontext.core.navigation.isMenuOpen[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( { context } ) ) {\n\t\tif (\n\t\t\tcontext.core.navigation.modal.contains(\n\t\t\t\twindow.document.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcontext.core.navigation.previousFocus.focus();\n\t\t}\n\t\tcontext.core.navigation.modal = null;\n\t\tcontext.core.navigation.previousFocus = null;\n\t\tif ( context.core.navigation.overlay ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nstore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( { context, selectors, ref } ) => {\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( { context } ) ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( { context, selectors, ref } ) => {\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( { context } ) ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( { context, selectors } ) =>\n\t\t\t\t\tcontext.core.navigation.overlay &&\n\t\t\t\t\tselectors.core.navigation.isMenuOpen( { context } )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '',\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click` or `hover` is true.\n\t\t\t\t\tObject.values( context.core.navigation.isMenuOpen ).filter(\n\t\t\t\t\t\tBoolean\n\t\t\t\t\t).length > 0,\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( args ) {\n\t\t\t\t\topenMenu( args, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( args ) {\n\t\t\t\t\tcloseMenu( args, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( args ) {\n\t\t\t\t\topenMenu( args, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( args ) {\n\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( args ) => {\n\t\t\t\t\tconst { context } = args;\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen.click ) {\n\t\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenMenu( args, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( args ) => {\n\t\t\t\t\tconst { context, event } = args;\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen.click ) {\n\t\t\t\t\t\t// If Escape close the menu\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent?.key === 'Escape' ||\n\t\t\t\t\t\t\tevent?.keyCode === 27\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu)\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.overlay &&\n\t\t\t\t\t\t\t( event.key === 'Tab' || event.keyCode === 9 )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\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\t\thandleMenuFocusout: ( args ) => {\n\t\t\t\t\tconst { context, event } = args;\n\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t\t// `window.document.activeElement` doesn't change\n\t\t\t\t\tif (\n\t\t\t\t\t\tcontext.core.navigation.isMenuOpen.click &&\n\t\t\t\t\t\t! context.core.navigation.modal.contains(\n\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _micromodal = _interopRequireDefault(require("micromodal"));
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* External dependencies
|
|
9
|
-
*/
|
|
10
|
-
// Responsive navigation toggle.
|
|
11
|
-
function navigationToggleModal(modal) {
|
|
12
|
-
const dialogContainer = modal.querySelector(`.wp-block-navigation__responsive-dialog`);
|
|
13
|
-
const isHidden = 'true' === modal.getAttribute('aria-hidden');
|
|
14
|
-
modal.classList.toggle('has-modal-open', !isHidden);
|
|
15
|
-
dialogContainer.toggleAttribute('aria-modal', !isHidden);
|
|
16
|
-
|
|
17
|
-
if (isHidden) {
|
|
18
|
-
dialogContainer.removeAttribute('role');
|
|
19
|
-
dialogContainer.removeAttribute('aria-modal');
|
|
20
|
-
} else {
|
|
21
|
-
dialogContainer.setAttribute('role', 'dialog');
|
|
22
|
-
dialogContainer.setAttribute('aria-modal', 'true');
|
|
23
|
-
} // Add a class to indicate the modal is open.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const htmlElement = document.documentElement;
|
|
27
|
-
htmlElement.classList.toggle('has-modal-open');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function isLinkToAnchorOnCurrentPage(node) {
|
|
31
|
-
return node.hash && node.protocol === window.location.protocol && node.host === window.location.host && node.pathname === window.location.pathname && node.search === window.location.search;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
window.addEventListener('load', () => {
|
|
35
|
-
_micromodal.default.init({
|
|
36
|
-
onShow: navigationToggleModal,
|
|
37
|
-
onClose: navigationToggleModal,
|
|
38
|
-
openClass: 'is-menu-open'
|
|
39
|
-
}); // Close modal automatically on clicking anchor links inside modal.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const navigationLinks = document.querySelectorAll('.wp-block-navigation-item__content');
|
|
43
|
-
navigationLinks.forEach(function (link) {
|
|
44
|
-
// Ignore non-anchor links and anchor links which open on a new tab.
|
|
45
|
-
if (!isLinkToAnchorOnCurrentPage(link) || link.attributes?.target === '_blank') {
|
|
46
|
-
return;
|
|
47
|
-
} // Find the specific parent modal for this link
|
|
48
|
-
// since .close() won't work without an ID if there are
|
|
49
|
-
// multiple navigation menus in a post/page.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const modal = link.closest('.wp-block-navigation__responsive-container');
|
|
53
|
-
const modalId = modal?.getAttribute('id');
|
|
54
|
-
link.addEventListener('click', () => {
|
|
55
|
-
// check if modal exists and is open before trying to close it
|
|
56
|
-
// otherwise Micromodal will toggle the `has-modal-open` class
|
|
57
|
-
// on the html tag which prevents scrolling
|
|
58
|
-
if (modalId && modal.classList.contains('has-modal-open')) {
|
|
59
|
-
_micromodal.default.close(modalId);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=view-modal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/navigation/view-modal.js"],"names":["navigationToggleModal","modal","dialogContainer","querySelector","isHidden","getAttribute","classList","toggle","toggleAttribute","removeAttribute","setAttribute","htmlElement","document","documentElement","isLinkToAnchorOnCurrentPage","node","hash","protocol","window","location","host","pathname","search","addEventListener","MicroModal","init","onShow","onClose","openClass","navigationLinks","querySelectorAll","forEach","link","attributes","target","closest","modalId","contains","close"],"mappings":";;;;AAGA;;AAHA;AACA;AACA;AAGA;AACA,SAASA,qBAAT,CAAgCC,KAAhC,EAAwC;AACvC,QAAMC,eAAe,GAAGD,KAAK,CAACE,aAAN,CACtB,yCADsB,CAAxB;AAIA,QAAMC,QAAQ,GAAG,WAAWH,KAAK,CAACI,YAAN,CAAoB,aAApB,CAA5B;AAEAJ,EAAAA,KAAK,CAACK,SAAN,CAAgBC,MAAhB,CAAwB,gBAAxB,EAA0C,CAAEH,QAA5C;AACAF,EAAAA,eAAe,CAACM,eAAhB,CAAiC,YAAjC,EAA+C,CAAEJ,QAAjD;;AAEA,MAAKA,QAAL,EAAgB;AACfF,IAAAA,eAAe,CAACO,eAAhB,CAAiC,MAAjC;AACAP,IAAAA,eAAe,CAACO,eAAhB,CAAiC,YAAjC;AACA,GAHD,MAGO;AACNP,IAAAA,eAAe,CAACQ,YAAhB,CAA8B,MAA9B,EAAsC,QAAtC;AACAR,IAAAA,eAAe,CAACQ,YAAhB,CAA8B,YAA9B,EAA4C,MAA5C;AACA,GAhBsC,CAkBvC;;;AACA,QAAMC,WAAW,GAAGC,QAAQ,CAACC,eAA7B;AACAF,EAAAA,WAAW,CAACL,SAAZ,CAAsBC,MAAtB,CAA8B,gBAA9B;AACA;;AAED,SAASO,2BAAT,CAAsCC,IAAtC,EAA6C;AAC5C,SACCA,IAAI,CAACC,IAAL,IACAD,IAAI,CAACE,QAAL,KAAkBC,MAAM,CAACC,QAAP,CAAgBF,QADlC,IAEAF,IAAI,CAACK,IAAL,KAAcF,MAAM,CAACC,QAAP,CAAgBC,IAF9B,IAGAL,IAAI,CAACM,QAAL,KAAkBH,MAAM,CAACC,QAAP,CAAgBE,QAHlC,IAIAN,IAAI,CAACO,MAAL,KAAgBJ,MAAM,CAACC,QAAP,CAAgBG,MALjC;AAOA;;AAEDJ,MAAM,CAACK,gBAAP,CAAyB,MAAzB,EAAiC,MAAM;AACtCC,sBAAWC,IAAX,CAAiB;AAChBC,IAAAA,MAAM,EAAE1B,qBADQ;AAEhB2B,IAAAA,OAAO,EAAE3B,qBAFO;AAGhB4B,IAAAA,SAAS,EAAE;AAHK,GAAjB,EADsC,CAOtC;;;AACA,QAAMC,eAAe,GAAGjB,QAAQ,CAACkB,gBAAT,CACvB,oCADuB,CAAxB;AAIAD,EAAAA,eAAe,CAACE,OAAhB,CAAyB,UAAWC,IAAX,EAAkB;AAC1C;AACA,QACC,CAAElB,2BAA2B,CAAEkB,IAAF,CAA7B,IACAA,IAAI,CAACC,UAAL,EAAiBC,MAAjB,KAA4B,QAF7B,EAGE;AACD;AACA,KAPyC,CAS1C;AACA;AACA;;;AACA,UAAMjC,KAAK,GAAG+B,IAAI,CAACG,OAAL,CACb,4CADa,CAAd;AAGA,UAAMC,OAAO,GAAGnC,KAAK,EAAEI,YAAP,CAAqB,IAArB,CAAhB;AAEA2B,IAAAA,IAAI,CAACT,gBAAL,CAAuB,OAAvB,EAAgC,MAAM;AACrC;AACA;AACA;AACA,UAAKa,OAAO,IAAInC,KAAK,CAACK,SAAN,CAAgB+B,QAAhB,CAA0B,gBAA1B,CAAhB,EAA+D;AAC9Db,4BAAWc,KAAX,CAAkBF,OAAlB;AACA;AACD,KAPD;AAQA,GAzBD;AA0BA,CAtCD","sourcesContent":["/**\n * External dependencies\n */\nimport MicroModal from 'micromodal';\n\n// Responsive navigation toggle.\nfunction navigationToggleModal( modal ) {\n\tconst dialogContainer = modal.querySelector(\n\t\t`.wp-block-navigation__responsive-dialog`\n\t);\n\n\tconst isHidden = 'true' === modal.getAttribute( 'aria-hidden' );\n\n\tmodal.classList.toggle( 'has-modal-open', ! isHidden );\n\tdialogContainer.toggleAttribute( 'aria-modal', ! isHidden );\n\n\tif ( isHidden ) {\n\t\tdialogContainer.removeAttribute( 'role' );\n\t\tdialogContainer.removeAttribute( 'aria-modal' );\n\t} else {\n\t\tdialogContainer.setAttribute( 'role', 'dialog' );\n\t\tdialogContainer.setAttribute( 'aria-modal', 'true' );\n\t}\n\n\t// Add a class to indicate the modal is open.\n\tconst htmlElement = document.documentElement;\n\thtmlElement.classList.toggle( 'has-modal-open' );\n}\n\nfunction isLinkToAnchorOnCurrentPage( node ) {\n\treturn (\n\t\tnode.hash &&\n\t\tnode.protocol === window.location.protocol &&\n\t\tnode.host === window.location.host &&\n\t\tnode.pathname === window.location.pathname &&\n\t\tnode.search === window.location.search\n\t);\n}\n\nwindow.addEventListener( 'load', () => {\n\tMicroModal.init( {\n\t\tonShow: navigationToggleModal,\n\t\tonClose: navigationToggleModal,\n\t\topenClass: 'is-menu-open',\n\t} );\n\n\t// Close modal automatically on clicking anchor links inside modal.\n\tconst navigationLinks = document.querySelectorAll(\n\t\t'.wp-block-navigation-item__content'\n\t);\n\n\tnavigationLinks.forEach( function ( link ) {\n\t\t// Ignore non-anchor links and anchor links which open on a new tab.\n\t\tif (\n\t\t\t! isLinkToAnchorOnCurrentPage( link ) ||\n\t\t\tlink.attributes?.target === '_blank'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the specific parent modal for this link\n\t\t// since .close() won't work without an ID if there are\n\t\t// multiple navigation menus in a post/page.\n\t\tconst modal = link.closest(\n\t\t\t'.wp-block-navigation__responsive-container'\n\t\t);\n\t\tconst modalId = modal?.getAttribute( 'id' );\n\n\t\tlink.addEventListener( 'click', () => {\n\t\t\t// check if modal exists and is open before trying to close it\n\t\t\t// otherwise Micromodal will toggle the `has-modal-open` class\n\t\t\t// on the html tag which prevents scrolling\n\t\t\tif ( modalId && modal.classList.contains( 'has-modal-open' ) ) {\n\t\t\t\tMicroModal.close( modalId );\n\t\t\t}\n\t\t} );\n\t} );\n} );\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/constants.js"],"names":["directivePrefix"],"mappings":";;;;;;AAAO,MAAMA,eAAe,GAAG,IAAxB","sourcesContent":["export const directivePrefix = 'wp';\n"]}
|
|
@@ -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"]}
|