@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.
Files changed (366) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/archives/index.js +5 -1
  3. package/build/archives/index.js.map +1 -1
  4. package/build/audio/index.js +5 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/avatar/index.js +1 -1
  7. package/build/block/edit.js +1 -1
  8. package/build/block/edit.js.map +1 -1
  9. package/build/block/edit.native.js +6 -9
  10. package/build/block/edit.native.js.map +1 -1
  11. package/build/buttons/edit.js +5 -1
  12. package/build/buttons/edit.js.map +1 -1
  13. package/build/categories/index.js +5 -1
  14. package/build/categories/index.js.map +1 -1
  15. package/build/code/index.js +5 -1
  16. package/build/code/index.js.map +1 -1
  17. package/build/column/index.js +1 -0
  18. package/build/column/index.js.map +1 -1
  19. package/build/comments/index.js +1 -0
  20. package/build/comments/index.js.map +1 -1
  21. package/build/cover/edit/inspector-controls.js +2 -1
  22. package/build/cover/edit/inspector-controls.js.map +1 -1
  23. package/build/cover/index.js +1 -0
  24. package/build/cover/index.js.map +1 -1
  25. package/build/details/index.js +5 -1
  26. package/build/details/index.js.map +1 -1
  27. package/build/embed/util.js +9 -8
  28. package/build/embed/util.js.map +1 -1
  29. package/build/file/index.js +2 -1
  30. package/build/file/index.js.map +1 -1
  31. package/build/file/view.js +15 -1
  32. package/build/file/view.js.map +1 -1
  33. package/build/gallery/index.js +3 -1
  34. package/build/gallery/index.js.map +1 -1
  35. package/build/group/index.js +1 -0
  36. package/build/group/index.js.map +1 -1
  37. package/build/heading/index.js +5 -1
  38. package/build/heading/index.js.map +1 -1
  39. package/build/heading/transforms.js +5 -1
  40. package/build/heading/transforms.js.map +1 -1
  41. package/build/image/deprecated.js +453 -175
  42. package/build/image/deprecated.js.map +1 -1
  43. package/build/image/edit.js +0 -4
  44. package/build/image/edit.js.map +1 -1
  45. package/build/image/image.js +96 -43
  46. package/build/image/image.js.map +1 -1
  47. package/build/image/index.js +6 -0
  48. package/build/image/index.js.map +1 -1
  49. package/build/image/save.js +8 -1
  50. package/build/image/save.js.map +1 -1
  51. package/build/image/utils.js +18 -0
  52. package/build/image/utils.js.map +1 -1
  53. package/build/image/{interactivity.js → view-interactivity.js} +86 -44
  54. package/build/image/view-interactivity.js.map +1 -0
  55. package/build/index.js +12 -3
  56. package/build/index.js.map +1 -1
  57. package/build/list/index.js +5 -1
  58. package/build/list/index.js.map +1 -1
  59. package/build/list-item/utils.js +6 -1
  60. package/build/list-item/utils.js.map +1 -1
  61. package/build/media-text/index.js +1 -0
  62. package/build/media-text/index.js.map +1 -1
  63. package/build/missing/edit.js +22 -8
  64. package/build/missing/edit.js.map +1 -1
  65. package/build/navigation/edit/index.js +1 -1
  66. package/build/navigation/edit/index.js.map +1 -1
  67. package/build/navigation/edit/menu-inspector-controls.js +0 -1
  68. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  69. package/build/navigation/index.js +3 -2
  70. package/build/navigation/index.js.map +1 -1
  71. package/build/navigation/view.js +174 -50
  72. package/build/navigation/view.js.map +1 -1
  73. package/build/navigation-link/edit.js +0 -11
  74. package/build/navigation-link/edit.js.map +1 -1
  75. package/build/navigation-link/link-ui.js +12 -2
  76. package/build/navigation-link/link-ui.js.map +1 -1
  77. package/build/page-list/convert-to-links-modal.js +3 -3
  78. package/build/page-list/convert-to-links-modal.js.map +1 -1
  79. package/build/page-list/edit.js +34 -39
  80. package/build/page-list/edit.js.map +1 -1
  81. package/build/page-list/use-convert-to-navigation-links.js +2 -15
  82. package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
  83. package/build/paragraph/index.js +1 -0
  84. package/build/paragraph/index.js.map +1 -1
  85. package/build/paragraph/transforms.js +1 -0
  86. package/build/paragraph/transforms.js.map +1 -1
  87. package/build/post-comments-form/index.js +1 -0
  88. package/build/post-comments-form/index.js.map +1 -1
  89. package/build/post-navigation-link/index.js +1 -0
  90. package/build/post-navigation-link/index.js.map +1 -1
  91. package/build/post-time-to-read/index.js +5 -1
  92. package/build/post-time-to-read/index.js.map +1 -1
  93. package/build/query-pagination-numbers/index.js +1 -1
  94. package/build/quote/index.js +1 -0
  95. package/build/quote/index.js.map +1 -1
  96. package/build/site-logo/index.js +5 -1
  97. package/build/site-logo/index.js.map +1 -1
  98. package/build/site-tagline/icon.js +1 -1
  99. package/build/site-tagline/icon.js.map +1 -1
  100. package/build/site-tagline/index.js +5 -1
  101. package/build/site-tagline/index.js.map +1 -1
  102. package/build/site-title/index.js +5 -1
  103. package/build/site-title/index.js.map +1 -1
  104. package/build/social-links/index.js +3 -1
  105. package/build/social-links/index.js.map +1 -1
  106. package/build/table/index.js +5 -1
  107. package/build/table/index.js.map +1 -1
  108. package/build/term-description/index.js +1 -0
  109. package/build/term-description/index.js.map +1 -1
  110. package/build/verse/index.js +5 -1
  111. package/build/verse/index.js.map +1 -1
  112. package/build/video/deprecated.js +5 -1
  113. package/build/video/deprecated.js.map +1 -1
  114. package/build/video/index.js +5 -1
  115. package/build/video/index.js.map +1 -1
  116. package/build-module/archives/index.js +5 -1
  117. package/build-module/archives/index.js.map +1 -1
  118. package/build-module/audio/index.js +5 -1
  119. package/build-module/audio/index.js.map +1 -1
  120. package/build-module/avatar/index.js +1 -1
  121. package/build-module/block/edit.js +1 -1
  122. package/build-module/block/edit.js.map +1 -1
  123. package/build-module/block/edit.native.js +7 -9
  124. package/build-module/block/edit.native.js.map +1 -1
  125. package/build-module/buttons/edit.js +5 -1
  126. package/build-module/buttons/edit.js.map +1 -1
  127. package/build-module/categories/index.js +5 -1
  128. package/build-module/categories/index.js.map +1 -1
  129. package/build-module/code/index.js +5 -1
  130. package/build-module/code/index.js.map +1 -1
  131. package/build-module/column/index.js +1 -0
  132. package/build-module/column/index.js.map +1 -1
  133. package/build-module/comments/index.js +1 -0
  134. package/build-module/comments/index.js.map +1 -1
  135. package/build-module/cover/edit/inspector-controls.js +2 -1
  136. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  137. package/build-module/cover/index.js +1 -0
  138. package/build-module/cover/index.js.map +1 -1
  139. package/build-module/details/index.js +5 -1
  140. package/build-module/details/index.js.map +1 -1
  141. package/build-module/embed/util.js +6 -6
  142. package/build-module/embed/util.js.map +1 -1
  143. package/build-module/file/index.js +2 -1
  144. package/build-module/file/index.js.map +1 -1
  145. package/build-module/file/view.js +15 -2
  146. package/build-module/file/view.js.map +1 -1
  147. package/build-module/gallery/index.js +3 -1
  148. package/build-module/gallery/index.js.map +1 -1
  149. package/build-module/group/index.js +1 -0
  150. package/build-module/group/index.js.map +1 -1
  151. package/build-module/heading/index.js +5 -1
  152. package/build-module/heading/index.js.map +1 -1
  153. package/build-module/heading/transforms.js +5 -1
  154. package/build-module/heading/transforms.js.map +1 -1
  155. package/build-module/image/deprecated.js +454 -176
  156. package/build-module/image/deprecated.js.map +1 -1
  157. package/build-module/image/edit.js +0 -4
  158. package/build-module/image/edit.js.map +1 -1
  159. package/build-module/image/image.js +96 -46
  160. package/build-module/image/image.js.map +1 -1
  161. package/build-module/image/index.js +6 -0
  162. package/build-module/image/index.js.map +1 -1
  163. package/build-module/image/save.js +8 -1
  164. package/build-module/image/save.js.map +1 -1
  165. package/build-module/image/utils.js +16 -0
  166. package/build-module/image/utils.js.map +1 -1
  167. package/build-module/image/{interactivity.js → view-interactivity.js} +86 -44
  168. package/build-module/image/view-interactivity.js.map +1 -0
  169. package/build-module/index.js +12 -3
  170. package/build-module/index.js.map +1 -1
  171. package/build-module/list/index.js +5 -1
  172. package/build-module/list/index.js.map +1 -1
  173. package/build-module/list-item/utils.js +6 -1
  174. package/build-module/list-item/utils.js.map +1 -1
  175. package/build-module/media-text/index.js +1 -0
  176. package/build-module/media-text/index.js.map +1 -1
  177. package/build-module/missing/edit.js +22 -8
  178. package/build-module/missing/edit.js.map +1 -1
  179. package/build-module/navigation/edit/index.js +1 -1
  180. package/build-module/navigation/edit/index.js.map +1 -1
  181. package/build-module/navigation/edit/menu-inspector-controls.js +0 -1
  182. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  183. package/build-module/navigation/index.js +3 -2
  184. package/build-module/navigation/index.js.map +1 -1
  185. package/build-module/navigation/view.js +173 -50
  186. package/build-module/navigation/view.js.map +1 -1
  187. package/build-module/navigation-link/edit.js +1 -12
  188. package/build-module/navigation-link/edit.js.map +1 -1
  189. package/build-module/navigation-link/link-ui.js +13 -3
  190. package/build-module/navigation-link/link-ui.js.map +1 -1
  191. package/build-module/page-list/convert-to-links-modal.js +3 -3
  192. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  193. package/build-module/page-list/edit.js +34 -39
  194. package/build-module/page-list/edit.js.map +1 -1
  195. package/build-module/page-list/use-convert-to-navigation-links.js +3 -16
  196. package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
  197. package/build-module/paragraph/index.js +1 -0
  198. package/build-module/paragraph/index.js.map +1 -1
  199. package/build-module/paragraph/transforms.js +1 -0
  200. package/build-module/paragraph/transforms.js.map +1 -1
  201. package/build-module/post-comments-form/index.js +1 -0
  202. package/build-module/post-comments-form/index.js.map +1 -1
  203. package/build-module/post-navigation-link/index.js +1 -0
  204. package/build-module/post-navigation-link/index.js.map +1 -1
  205. package/build-module/post-time-to-read/index.js +5 -1
  206. package/build-module/post-time-to-read/index.js.map +1 -1
  207. package/build-module/query-pagination-numbers/index.js +1 -1
  208. package/build-module/quote/index.js +1 -0
  209. package/build-module/quote/index.js.map +1 -1
  210. package/build-module/site-logo/index.js +5 -1
  211. package/build-module/site-logo/index.js.map +1 -1
  212. package/build-module/site-tagline/icon.js +1 -1
  213. package/build-module/site-tagline/icon.js.map +1 -1
  214. package/build-module/site-tagline/index.js +5 -1
  215. package/build-module/site-tagline/index.js.map +1 -1
  216. package/build-module/site-title/index.js +5 -1
  217. package/build-module/site-title/index.js.map +1 -1
  218. package/build-module/social-links/index.js +3 -1
  219. package/build-module/social-links/index.js.map +1 -1
  220. package/build-module/table/index.js +5 -1
  221. package/build-module/table/index.js.map +1 -1
  222. package/build-module/term-description/index.js +1 -0
  223. package/build-module/term-description/index.js.map +1 -1
  224. package/build-module/verse/index.js +5 -1
  225. package/build-module/verse/index.js.map +1 -1
  226. package/build-module/video/deprecated.js +5 -1
  227. package/build-module/video/deprecated.js.map +1 -1
  228. package/build-module/video/index.js +5 -1
  229. package/build-module/video/index.js.map +1 -1
  230. package/build-style/footnotes/style-rtl.css +2 -2
  231. package/build-style/footnotes/style.css +2 -2
  232. package/build-style/image/style-rtl.css +16 -2
  233. package/build-style/image/style.css +16 -2
  234. package/build-style/style-rtl.css +18 -4
  235. package/build-style/style.css +18 -4
  236. package/package.json +33 -38
  237. package/src/archives/block.json +5 -1
  238. package/src/audio/block.json +5 -1
  239. package/src/avatar/block.json +1 -1
  240. package/src/block/edit.js +2 -2
  241. package/src/block/edit.native.js +8 -12
  242. package/src/block/test/edit.native.js +4 -4
  243. package/src/buttons/edit.js +2 -2
  244. package/src/categories/block.json +5 -1
  245. package/src/code/block.json +5 -1
  246. package/src/column/block.json +1 -0
  247. package/src/comments/block.json +1 -0
  248. package/src/cover/block.json +1 -0
  249. package/src/cover/edit/inspector-controls.js +1 -0
  250. package/src/details/block.json +5 -1
  251. package/src/embed/util.js +4 -6
  252. package/src/file/block.json +2 -1
  253. package/src/file/index.php +0 -17
  254. package/src/file/view.js +14 -5
  255. package/src/footnotes/index.php +11 -9
  256. package/src/footnotes/style.scss +2 -2
  257. package/src/gallery/block.json +3 -1
  258. package/src/group/block.json +1 -0
  259. package/src/heading/block.json +5 -1
  260. package/src/heading/test/index.native.js +18 -0
  261. package/src/image/block.json +6 -0
  262. package/src/image/deprecated.js +597 -320
  263. package/src/image/edit.js +0 -4
  264. package/src/image/image.js +131 -62
  265. package/src/image/save.js +9 -1
  266. package/src/image/style.scss +15 -2
  267. package/src/image/utils.js +16 -0
  268. package/src/image/{interactivity.js → view-interactivity.js} +99 -50
  269. package/src/index.js +18 -1
  270. package/src/latest-posts/index.php +1 -1
  271. package/src/list/block.json +5 -1
  272. package/src/media-text/block.json +1 -0
  273. package/src/missing/edit.js +31 -11
  274. package/src/navigation/block.json +3 -2
  275. package/src/navigation/edit/index.js +1 -2
  276. package/src/navigation/edit/menu-inspector-controls.js +0 -1
  277. package/src/navigation/index.php +39 -30
  278. package/src/navigation/view.js +189 -67
  279. package/src/navigation-link/edit.js +1 -15
  280. package/src/navigation-link/link-ui.js +14 -2
  281. package/src/navigation-submenu/index.php +2 -12
  282. package/src/page-list/convert-to-links-modal.js +3 -3
  283. package/src/page-list/edit.js +65 -62
  284. package/src/page-list/use-convert-to-navigation-links.js +3 -20
  285. package/src/paragraph/block.json +1 -0
  286. package/src/post-comments-form/block.json +1 -0
  287. package/src/post-navigation-link/block.json +1 -0
  288. package/src/post-time-to-read/block.json +5 -1
  289. package/src/query-pagination-numbers/block.json +1 -1
  290. package/src/quote/block.json +1 -0
  291. package/src/site-logo/block.json +5 -1
  292. package/src/site-tagline/block.json +5 -1
  293. package/src/site-tagline/icon.js +1 -1
  294. package/src/site-title/block.json +5 -1
  295. package/src/social-links/block.json +3 -1
  296. package/src/table/block.json +5 -1
  297. package/src/term-description/block.json +1 -0
  298. package/src/verse/block.json +5 -1
  299. package/src/video/block.json +5 -1
  300. package/build/file/interactivity.js +0 -19
  301. package/build/file/interactivity.js.map +0 -1
  302. package/build/heading/heading-level-icon.js +0 -61
  303. package/build/heading/heading-level-icon.js.map +0 -1
  304. package/build/image/interactivity.js.map +0 -1
  305. package/build/navigation/interactivity.js +0 -167
  306. package/build/navigation/interactivity.js.map +0 -1
  307. package/build/navigation/view-modal.js +0 -64
  308. package/build/navigation/view-modal.js.map +0 -1
  309. package/build/utils/interactivity/constants.js +0 -9
  310. package/build/utils/interactivity/constants.js.map +0 -1
  311. package/build/utils/interactivity/directives.js +0 -222
  312. package/build/utils/interactivity/directives.js.map +0 -1
  313. package/build/utils/interactivity/hooks.js +0 -159
  314. package/build/utils/interactivity/hooks.js.map +0 -1
  315. package/build/utils/interactivity/hydration.js +0 -34
  316. package/build/utils/interactivity/hydration.js.map +0 -1
  317. package/build/utils/interactivity/index.js +0 -32
  318. package/build/utils/interactivity/index.js.map +0 -1
  319. package/build/utils/interactivity/portals.js +0 -108
  320. package/build/utils/interactivity/portals.js.map +0 -1
  321. package/build/utils/interactivity/store.js +0 -66
  322. package/build/utils/interactivity/store.js.map +0 -1
  323. package/build/utils/interactivity/utils.js +0 -87
  324. package/build/utils/interactivity/utils.js.map +0 -1
  325. package/build/utils/interactivity/vdom.js +0 -119
  326. package/build/utils/interactivity/vdom.js.map +0 -1
  327. package/build-module/file/interactivity.js +0 -15
  328. package/build-module/file/interactivity.js.map +0 -1
  329. package/build-module/heading/heading-level-icon.js +0 -53
  330. package/build-module/heading/heading-level-icon.js.map +0 -1
  331. package/build-module/image/interactivity.js.map +0 -1
  332. package/build-module/navigation/interactivity.js +0 -164
  333. package/build-module/navigation/interactivity.js.map +0 -1
  334. package/build-module/navigation/view-modal.js +0 -58
  335. package/build-module/navigation/view-modal.js.map +0 -1
  336. package/build-module/utils/interactivity/constants.js +0 -2
  337. package/build-module/utils/interactivity/constants.js.map +0 -1
  338. package/build-module/utils/interactivity/directives.js +0 -209
  339. package/build-module/utils/interactivity/directives.js.map +0 -1
  340. package/build-module/utils/interactivity/hooks.js +0 -145
  341. package/build-module/utils/interactivity/hooks.js.map +0 -1
  342. package/build-module/utils/interactivity/hydration.js +0 -21
  343. package/build-module/utils/interactivity/hydration.js.map +0 -1
  344. package/build-module/utils/interactivity/index.js +0 -15
  345. package/build-module/utils/interactivity/index.js.map +0 -1
  346. package/build-module/utils/interactivity/portals.js +0 -100
  347. package/build-module/utils/interactivity/portals.js.map +0 -1
  348. package/build-module/utils/interactivity/store.js +0 -55
  349. package/build-module/utils/interactivity/store.js.map +0 -1
  350. package/build-module/utils/interactivity/utils.js +0 -75
  351. package/build-module/utils/interactivity/utils.js.map +0 -1
  352. package/build-module/utils/interactivity/vdom.js +0 -107
  353. package/build-module/utils/interactivity/vdom.js.map +0 -1
  354. package/src/file/interactivity.js +0 -15
  355. package/src/heading/heading-level-icon.js +0 -48
  356. package/src/navigation/interactivity.js +0 -169
  357. package/src/navigation/view-modal.js +0 -78
  358. package/src/utils/interactivity/constants.js +0 -1
  359. package/src/utils/interactivity/directives.js +0 -200
  360. package/src/utils/interactivity/hooks.js +0 -145
  361. package/src/utils/interactivity/hydration.js +0 -22
  362. package/src/utils/interactivity/index.js +0 -15
  363. package/src/utils/interactivity/portals.js +0 -98
  364. package/src/utils/interactivity/store.js +0 -45
  365. package/src/utils/interactivity/utils.js +0 -66
  366. 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,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.directivePrefix = void 0;
7
- const directivePrefix = 'wp';
8
- exports.directivePrefix = directivePrefix;
9
- //# sourceMappingURL=constants.js.map
@@ -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"]}