@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,98 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { createElement, render } from 'preact';
5
-
6
- /**
7
- * @param {import('../../src/index').RenderableProps<{ context: any }>} props
8
- */
9
- function ContextProvider( props ) {
10
- this.getChildContext = () => props.context;
11
- return props.children;
12
- }
13
-
14
- /**
15
- * Portal component
16
- *
17
- * @this {import('./internal').Component}
18
- * @param {object | null | undefined} props
19
- *
20
- * TODO: use createRoot() instead of fake root
21
- */
22
- function Portal( props ) {
23
- const _this = this;
24
- const container = props._container;
25
-
26
- _this.componentWillUnmount = function () {
27
- render( null, _this._temp );
28
- _this._temp = null;
29
- _this._container = null;
30
- };
31
-
32
- // When we change container we should clear our old container and
33
- // indicate a new mount.
34
- if ( _this._container && _this._container !== container ) {
35
- _this.componentWillUnmount();
36
- }
37
-
38
- // When props.vnode is undefined/false/null we are dealing with some kind of
39
- // conditional vnode. This should not trigger a render.
40
- if ( props._vnode ) {
41
- if ( ! _this._temp ) {
42
- _this._container = container;
43
-
44
- // Create a fake DOM parent node that manages a subset of `container`'s children:
45
- _this._temp = {
46
- nodeType: 1,
47
- parentNode: container,
48
- childNodes: [],
49
- appendChild( child ) {
50
- this.childNodes.push( child );
51
- _this._container.appendChild( child );
52
- },
53
- insertBefore( child ) {
54
- this.childNodes.push( child );
55
- _this._container.appendChild( child );
56
- },
57
- removeChild( child ) {
58
- this.childNodes.splice(
59
- // eslint-disable-next-line no-bitwise
60
- this.childNodes.indexOf( child ) >>> 1,
61
- 1
62
- );
63
- _this._container.removeChild( child );
64
- },
65
- };
66
- }
67
-
68
- // Render our wrapping element into temp.
69
- render(
70
- createElement(
71
- ContextProvider,
72
- { context: _this.context },
73
- props._vnode
74
- ),
75
- _this._temp
76
- );
77
- }
78
- // When we come from a conditional render, on a mounted
79
- // portal we should clear the DOM.
80
- else if ( _this._temp ) {
81
- _this.componentWillUnmount();
82
- }
83
- }
84
-
85
- /**
86
- * Create a `Portal` to continue rendering the vnode tree at a different DOM node
87
- *
88
- * @param {import('./internal').VNode} vnode The vnode to render
89
- * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.
90
- */
91
- export function createPortal( vnode, container ) {
92
- const el = createElement( Portal, {
93
- _vnode: vnode,
94
- _container: container,
95
- } );
96
- el.containerInfo = container;
97
- return el;
98
- }
@@ -1,45 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { deepSignal } from 'deepsignal';
5
-
6
- const isObject = ( item ) =>
7
- item && typeof item === 'object' && ! Array.isArray( item );
8
-
9
- const deepMerge = ( target, source ) => {
10
- if ( isObject( target ) && isObject( source ) ) {
11
- for ( const key in source ) {
12
- if ( isObject( source[ key ] ) ) {
13
- if ( ! target[ key ] ) Object.assign( target, { [ key ]: {} } );
14
- deepMerge( target[ key ], source[ key ] );
15
- } else {
16
- Object.assign( target, { [ key ]: source[ key ] } );
17
- }
18
- }
19
- }
20
- };
21
-
22
- const getSerializedState = () => {
23
- // TODO: change the store tag ID for a better one.
24
- const storeTag = document.querySelector(
25
- `script[type="application/json"]#store`
26
- );
27
- if ( ! storeTag ) return {};
28
- try {
29
- const { state } = JSON.parse( storeTag.textContent );
30
- if ( isObject( state ) ) return state;
31
- throw Error( 'Parsed state is not an object' );
32
- } catch ( e ) {
33
- // eslint-disable-next-line no-console
34
- console.log( e );
35
- }
36
- return {};
37
- };
38
-
39
- const rawState = getSerializedState();
40
- export const rawStore = { state: deepSignal( rawState ) };
41
-
42
- export const store = ( { state, ...block } ) => {
43
- deepMerge( rawStore, block );
44
- deepMerge( rawState, state );
45
- };
@@ -1,66 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { useRef, useEffect } from 'preact/hooks';
5
- import { effect } from '@preact/signals';
6
-
7
- function afterNextFrame( callback ) {
8
- const done = () => {
9
- window.cancelAnimationFrame( raf );
10
- setTimeout( callback );
11
- };
12
- const raf = window.requestAnimationFrame( done );
13
- }
14
-
15
- // Using the mangled properties:
16
- // this.c: this._callback
17
- // this.x: this._compute
18
- // https://github.com/preactjs/signals/blob/main/mangle.json
19
- function createFlusher( compute, notify ) {
20
- let flush;
21
- const dispose = effect( function () {
22
- flush = this.c.bind( this );
23
- this.x = compute;
24
- this.c = notify;
25
- return compute();
26
- } );
27
- return { flush, dispose };
28
- }
29
-
30
- // Version of `useSignalEffect` with a `useEffect`-like execution. This hook
31
- // implementation comes from this PR:
32
- // https://github.com/preactjs/signals/pull/290.
33
- //
34
- // We need to include it here in this repo until the mentioned PR is merged.
35
- export function useSignalEffect( cb ) {
36
- const callback = useRef( cb );
37
- callback.current = cb;
38
-
39
- useEffect( () => {
40
- const execute = () => callback.current();
41
- const notify = () => afterNextFrame( eff.flush );
42
- const eff = createFlusher( execute, notify );
43
- return eff.dispose;
44
- }, [] );
45
- }
46
-
47
- // For wrapperless hydration.
48
- // See https://gist.github.com/developit/f4c67a2ede71dc2fab7f357f39cff28c
49
- export const createRootFragment = ( parent, replaceNode ) => {
50
- replaceNode = [].concat( replaceNode );
51
- const s = replaceNode[ replaceNode.length - 1 ].nextSibling;
52
- function insert( c, r ) {
53
- parent.insertBefore( c, r || s );
54
- }
55
- return ( parent.__k = {
56
- nodeType: 1,
57
- parentNode: parent,
58
- firstChild: replaceNode[ 0 ],
59
- childNodes: replaceNode,
60
- insertBefore: insert,
61
- appendChild: insert,
62
- removeChild( c ) {
63
- parent.removeChild( c );
64
- },
65
- } );
66
- };
@@ -1,111 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { h } from 'preact';
5
- /**
6
- * Internal dependencies
7
- */
8
- import { directivePrefix as p } from './constants';
9
-
10
- const ignoreAttr = `data-${ p }-ignore`;
11
- const islandAttr = `data-${ p }-interactive`;
12
- const fullPrefix = `data-${ p }-`;
13
-
14
- // Regular expression for directive parsing.
15
- const directiveParser = new RegExp(
16
- `^data-${ p }-` + // ${p} must be a prefix string, like 'wp'.
17
- // Match alphanumeric characters including hyphen-separated
18
- // segments. It excludes underscore intentionally to prevent confusion.
19
- // E.g., "custom-directive".
20
- '([a-z0-9]+(?:-[a-z0-9]+)*)' +
21
- // (Optional) Match '--' followed by any alphanumeric charachters. It
22
- // excludes underscore intentionally to prevent confusion, but it can
23
- // contain multiple hyphens. E.g., "--custom-prefix--with-more-info".
24
- '(?:--([a-z0-9][a-z0-9-]+))?$',
25
- 'i' // Case insensitive.
26
- );
27
-
28
- export const hydratedIslands = new WeakSet();
29
-
30
- // Recursive function that transforms a DOM tree into vDOM.
31
- export function toVdom( root ) {
32
- const treeWalker = document.createTreeWalker(
33
- root,
34
- 205 // ELEMENT + TEXT + COMMENT + CDATA_SECTION + PROCESSING_INSTRUCTION
35
- );
36
-
37
- function walk( node ) {
38
- const { attributes, nodeType } = node;
39
-
40
- if ( nodeType === 3 ) return [ node.data ];
41
- if ( nodeType === 4 ) {
42
- const next = treeWalker.nextSibling();
43
- node.replaceWith( new window.Text( node.nodeValue ) );
44
- return [ node.nodeValue, next ];
45
- }
46
- if ( nodeType === 8 || nodeType === 7 ) {
47
- const next = treeWalker.nextSibling();
48
- node.remove();
49
- return [ null, next ];
50
- }
51
-
52
- const props = {};
53
- const children = [];
54
- const directives = {};
55
- let hasDirectives = false;
56
- let ignore = false;
57
- let island = false;
58
-
59
- for ( let i = 0; i < attributes.length; i++ ) {
60
- const n = attributes[ i ].name;
61
- if (
62
- n[ fullPrefix.length ] &&
63
- n.slice( 0, fullPrefix.length ) === fullPrefix
64
- ) {
65
- if ( n === ignoreAttr ) {
66
- ignore = true;
67
- } else if ( n === islandAttr ) {
68
- island = true;
69
- } else {
70
- hasDirectives = true;
71
- let val = attributes[ i ].value;
72
- try {
73
- val = JSON.parse( val );
74
- } catch ( e ) {}
75
- const [ , prefix, suffix ] = directiveParser.exec( n );
76
- directives[ prefix ] = directives[ prefix ] || {};
77
- directives[ prefix ][ suffix || 'default' ] = val;
78
- }
79
- } else if ( n === 'ref' ) {
80
- continue;
81
- }
82
- props[ n ] = attributes[ i ].value;
83
- }
84
-
85
- if ( ignore && ! island )
86
- return [
87
- h( node.localName, {
88
- ...props,
89
- innerHTML: node.innerHTML,
90
- __directives: { ignore: true },
91
- } ),
92
- ];
93
- if ( island ) hydratedIslands.add( node );
94
-
95
- if ( hasDirectives ) props.__directives = directives;
96
-
97
- let child = treeWalker.firstChild();
98
- if ( child ) {
99
- while ( child ) {
100
- const [ vnode, nextChild ] = walk( child );
101
- if ( vnode ) children.push( vnode );
102
- child = nextChild || treeWalker.nextSibling();
103
- }
104
- treeWalker.parentNode();
105
- }
106
-
107
- return [ h( node.localName, props, children ) ];
108
- }
109
-
110
- return walk( treeWalker.currentNode );
111
- }