@wordpress/core-data 7.52.0 → 7.53.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 (473) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -0
  3. package/build/actions.cjs +18 -9
  4. package/build/actions.cjs.map +2 -2
  5. package/build/awareness/awareness-state.cjs.map +2 -2
  6. package/build/awareness/base-awareness.cjs.map +2 -2
  7. package/build/awareness/block-lookup.cjs.map +2 -2
  8. package/build/awareness/post-editor-awareness.cjs +7 -0
  9. package/build/awareness/post-editor-awareness.cjs.map +2 -2
  10. package/build/awareness/typed-awareness.cjs.map +2 -2
  11. package/build/awareness/types.cjs.map +1 -1
  12. package/build/awareness/utils.cjs.map +2 -2
  13. package/build/batch/create-batch.cjs.map +2 -2
  14. package/build/batch/default-processor.cjs.map +2 -2
  15. package/build/components/entities-saved-states/entity-record-item.cjs.map +2 -2
  16. package/build/components/entities-saved-states/entity-type-list.cjs.map +2 -2
  17. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs +4 -0
  18. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs.map +2 -2
  19. package/build/components/entities-saved-states/index.cjs.map +2 -2
  20. package/build/dynamic-entities.cjs.map +2 -2
  21. package/build/entities.cjs.map +2 -2
  22. package/build/entity-context.cjs.map +2 -2
  23. package/build/entity-provider.cjs.map +2 -2
  24. package/build/entity-types/attachment.cjs.map +1 -1
  25. package/build/entity-types/base.cjs.map +1 -1
  26. package/build/entity-types/comment.cjs.map +1 -1
  27. package/build/entity-types/font-collection.cjs.map +1 -1
  28. package/build/entity-types/font-family.cjs.map +1 -1
  29. package/build/entity-types/global-styles-revision.cjs.map +1 -1
  30. package/build/entity-types/helpers.cjs.map +1 -1
  31. package/build/entity-types/icon.cjs.map +1 -1
  32. package/build/entity-types/index.cjs.map +1 -1
  33. package/build/entity-types/menu-location.cjs.map +1 -1
  34. package/build/entity-types/nav-menu-item.cjs.map +1 -1
  35. package/build/entity-types/nav-menu.cjs.map +1 -1
  36. package/build/entity-types/page.cjs.map +1 -1
  37. package/build/entity-types/plugin.cjs.map +1 -1
  38. package/build/entity-types/post-revision.cjs.map +1 -1
  39. package/build/entity-types/post-status.cjs.map +1 -1
  40. package/build/entity-types/post.cjs.map +1 -1
  41. package/build/entity-types/settings.cjs.map +1 -1
  42. package/build/entity-types/sidebar.cjs.map +1 -1
  43. package/build/entity-types/taxonomy.cjs.map +1 -1
  44. package/build/entity-types/term.cjs.map +1 -1
  45. package/build/entity-types/theme.cjs.map +1 -1
  46. package/build/entity-types/type.cjs.map +1 -1
  47. package/build/entity-types/user.cjs.map +1 -1
  48. package/build/entity-types/widget-type.cjs.map +1 -1
  49. package/build/entity-types/widget.cjs.map +1 -1
  50. package/build/entity-types/wp-template-part.cjs.map +1 -1
  51. package/build/entity-types/wp-template.cjs.map +1 -1
  52. package/build/fetch/__experimental-fetch-link-suggestions.cjs.map +2 -2
  53. package/build/fetch/__experimental-fetch-url-data.cjs.map +2 -2
  54. package/build/fetch/index.cjs.map +2 -2
  55. package/build/footnotes/get-footnotes-order.cjs.map +2 -2
  56. package/build/footnotes/get-rich-text-values-cached.cjs.map +2 -2
  57. package/build/footnotes/index.cjs +12 -1
  58. package/build/footnotes/index.cjs.map +3 -3
  59. package/build/hooks/index.cjs.map +2 -2
  60. package/build/hooks/use-entity-block-editor.cjs.map +2 -2
  61. package/build/hooks/use-entity-id.cjs.map +2 -2
  62. package/build/hooks/use-entity-prop.cjs.map +2 -2
  63. package/build/hooks/use-entity-record.cjs.map +2 -2
  64. package/build/hooks/use-entity-records.cjs +2 -2
  65. package/build/hooks/use-entity-records.cjs.map +2 -2
  66. package/build/hooks/use-post-editor-awareness-state.cjs.map +2 -2
  67. package/build/hooks/use-query-select.cjs.map +2 -2
  68. package/build/hooks/use-resource-permissions.cjs.map +2 -2
  69. package/build/hooks/utils.cjs.map +2 -2
  70. package/build/index.cjs.map +2 -2
  71. package/build/lock-unlock.cjs.map +2 -2
  72. package/build/locks/actions.cjs.map +2 -2
  73. package/build/locks/engine.cjs.map +2 -2
  74. package/build/locks/reducer.cjs.map +2 -2
  75. package/build/locks/selectors.cjs.map +2 -2
  76. package/build/private-actions.cjs +54 -7
  77. package/build/private-actions.cjs.map +2 -2
  78. package/build/private-apis.cjs +3 -0
  79. package/build/private-apis.cjs.map +2 -2
  80. package/build/private-selectors.cjs +5 -0
  81. package/build/private-selectors.cjs.map +2 -2
  82. package/build/queried-data/get-query-parts.cjs.map +2 -2
  83. package/build/queried-data/reducer.cjs.map +2 -2
  84. package/build/queried-data/selectors.cjs.map +2 -2
  85. package/build/reducer.cjs.map +2 -2
  86. package/build/resolvers.cjs +21 -26
  87. package/build/resolvers.cjs.map +2 -2
  88. package/build/selectors.cjs.map +2 -2
  89. package/build/sync.cjs +26 -0
  90. package/build/sync.cjs.map +2 -2
  91. package/build/types.cjs.map +1 -1
  92. package/build/utils/block-selection-history.cjs.map +2 -2
  93. package/build/utils/clear-unchanged-edits.cjs.map +2 -2
  94. package/build/utils/conservative-map-item.cjs.map +2 -2
  95. package/build/utils/crdt-blocks.cjs.map +2 -2
  96. package/build/utils/crdt-selection.cjs.map +2 -2
  97. package/build/utils/crdt-text.cjs.map +2 -2
  98. package/build/utils/crdt-user-selections.cjs +43 -16
  99. package/build/utils/crdt-user-selections.cjs.map +3 -3
  100. package/build/utils/crdt-utils.cjs.map +2 -2
  101. package/build/utils/crdt.cjs.map +2 -2
  102. package/build/utils/get-template-info.cjs.map +2 -2
  103. package/build/utils/get-template-part-icon.cjs.map +2 -2
  104. package/build/utils/log-entity-deprecation.cjs.map +2 -2
  105. package/build/utils/save-crdt-doc.cjs.map +2 -2
  106. package/build-module/actions.mjs +19 -9
  107. package/build-module/actions.mjs.map +2 -2
  108. package/build-module/awareness/awareness-state.mjs.map +2 -2
  109. package/build-module/awareness/base-awareness.mjs.map +2 -2
  110. package/build-module/awareness/block-lookup.mjs.map +2 -2
  111. package/build-module/awareness/post-editor-awareness.mjs +7 -0
  112. package/build-module/awareness/post-editor-awareness.mjs.map +2 -2
  113. package/build-module/awareness/typed-awareness.mjs.map +2 -2
  114. package/build-module/awareness/utils.mjs.map +2 -2
  115. package/build-module/batch/create-batch.mjs.map +2 -2
  116. package/build-module/batch/default-processor.mjs.map +2 -2
  117. package/build-module/components/entities-saved-states/entity-record-item.mjs.map +2 -2
  118. package/build-module/components/entities-saved-states/entity-type-list.mjs.map +2 -2
  119. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs +4 -0
  120. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs.map +2 -2
  121. package/build-module/components/entities-saved-states/index.mjs.map +2 -2
  122. package/build-module/dynamic-entities.mjs.map +2 -2
  123. package/build-module/entities.mjs.map +2 -2
  124. package/build-module/entity-context.mjs.map +2 -2
  125. package/build-module/entity-provider.mjs.map +2 -2
  126. package/build-module/fetch/__experimental-fetch-link-suggestions.mjs.map +2 -2
  127. package/build-module/fetch/__experimental-fetch-url-data.mjs.map +2 -2
  128. package/build-module/fetch/index.mjs.map +2 -2
  129. package/build-module/footnotes/get-footnotes-order.mjs.map +2 -2
  130. package/build-module/footnotes/get-rich-text-values-cached.mjs.map +2 -2
  131. package/build-module/footnotes/index.mjs +12 -1
  132. package/build-module/footnotes/index.mjs.map +2 -2
  133. package/build-module/hooks/index.mjs.map +2 -2
  134. package/build-module/hooks/use-entity-block-editor.mjs.map +2 -2
  135. package/build-module/hooks/use-entity-id.mjs.map +2 -2
  136. package/build-module/hooks/use-entity-prop.mjs.map +2 -2
  137. package/build-module/hooks/use-entity-record.mjs.map +2 -2
  138. package/build-module/hooks/use-entity-records.mjs +2 -2
  139. package/build-module/hooks/use-entity-records.mjs.map +2 -2
  140. package/build-module/hooks/use-post-editor-awareness-state.mjs.map +2 -2
  141. package/build-module/hooks/use-query-select.mjs.map +2 -2
  142. package/build-module/hooks/use-resource-permissions.mjs.map +2 -2
  143. package/build-module/hooks/utils.mjs.map +2 -2
  144. package/build-module/index.mjs.map +2 -2
  145. package/build-module/lock-unlock.mjs.map +2 -2
  146. package/build-module/locks/actions.mjs.map +2 -2
  147. package/build-module/locks/engine.mjs.map +2 -2
  148. package/build-module/locks/reducer.mjs.map +2 -2
  149. package/build-module/locks/selectors.mjs.map +2 -2
  150. package/build-module/private-actions.mjs +54 -7
  151. package/build-module/private-actions.mjs.map +2 -2
  152. package/build-module/private-apis.mjs +9 -1
  153. package/build-module/private-apis.mjs.map +2 -2
  154. package/build-module/private-selectors.mjs +4 -0
  155. package/build-module/private-selectors.mjs.map +2 -2
  156. package/build-module/queried-data/get-query-parts.mjs.map +2 -2
  157. package/build-module/queried-data/reducer.mjs.map +2 -2
  158. package/build-module/queried-data/selectors.mjs.map +2 -2
  159. package/build-module/reducer.mjs.map +2 -2
  160. package/build-module/resolvers.mjs +21 -26
  161. package/build-module/resolvers.mjs.map +2 -2
  162. package/build-module/selectors.mjs.map +2 -2
  163. package/build-module/sync.mjs +23 -0
  164. package/build-module/sync.mjs.map +2 -2
  165. package/build-module/utils/block-selection-history.mjs.map +2 -2
  166. package/build-module/utils/clear-unchanged-edits.mjs.map +2 -2
  167. package/build-module/utils/conservative-map-item.mjs.map +2 -2
  168. package/build-module/utils/crdt-blocks.mjs.map +2 -2
  169. package/build-module/utils/crdt-selection.mjs.map +2 -2
  170. package/build-module/utils/crdt-text.mjs.map +2 -2
  171. package/build-module/utils/crdt-user-selections.mjs +43 -16
  172. package/build-module/utils/crdt-user-selections.mjs.map +3 -3
  173. package/build-module/utils/crdt-utils.mjs.map +2 -2
  174. package/build-module/utils/crdt.mjs.map +2 -2
  175. package/build-module/utils/get-template-info.mjs.map +2 -2
  176. package/build-module/utils/get-template-part-icon.mjs.map +2 -2
  177. package/build-module/utils/log-entity-deprecation.mjs.map +2 -2
  178. package/build-module/utils/save-crdt-doc.mjs.map +2 -2
  179. package/build-types/actions.d.ts +4 -0
  180. package/build-types/actions.d.ts.map +1 -1
  181. package/build-types/awareness/awareness-state.d.ts.map +1 -1
  182. package/build-types/awareness/base-awareness.d.ts +0 -3
  183. package/build-types/awareness/base-awareness.d.ts.map +1 -1
  184. package/build-types/awareness/block-lookup.d.ts +0 -3
  185. package/build-types/awareness/block-lookup.d.ts.map +1 -1
  186. package/build-types/awareness/post-editor-awareness.d.ts +0 -3
  187. package/build-types/awareness/post-editor-awareness.d.ts.map +1 -1
  188. package/build-types/awareness/typed-awareness.d.ts +0 -3
  189. package/build-types/awareness/typed-awareness.d.ts.map +1 -1
  190. package/build-types/awareness/types.d.ts +0 -6
  191. package/build-types/awareness/types.d.ts.map +1 -1
  192. package/build-types/awareness/utils.d.ts +0 -3
  193. package/build-types/awareness/utils.d.ts.map +1 -1
  194. package/build-types/batch/create-batch.d.ts.map +1 -1
  195. package/build-types/batch/default-processor.d.ts.map +1 -1
  196. package/build-types/components/entities-saved-states/entity-record-item.d.ts.map +1 -1
  197. package/build-types/components/entities-saved-states/entity-type-list.d.ts.map +1 -1
  198. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts.map +1 -1
  199. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  200. package/build-types/dynamic-entities.d.ts +0 -3
  201. package/build-types/dynamic-entities.d.ts.map +1 -1
  202. package/build-types/entities.d.ts.map +1 -1
  203. package/build-types/entity-context.d.ts.map +1 -1
  204. package/build-types/entity-provider.d.ts.map +1 -1
  205. package/build-types/entity-types/attachment.d.ts +0 -3
  206. package/build-types/entity-types/attachment.d.ts.map +1 -1
  207. package/build-types/entity-types/base.d.ts +0 -3
  208. package/build-types/entity-types/base.d.ts.map +1 -1
  209. package/build-types/entity-types/comment.d.ts +0 -3
  210. package/build-types/entity-types/comment.d.ts.map +1 -1
  211. package/build-types/entity-types/font-collection.d.ts +0 -3
  212. package/build-types/entity-types/font-collection.d.ts.map +1 -1
  213. package/build-types/entity-types/font-family.d.ts +0 -3
  214. package/build-types/entity-types/font-family.d.ts.map +1 -1
  215. package/build-types/entity-types/global-styles-revision.d.ts +0 -3
  216. package/build-types/entity-types/global-styles-revision.d.ts.map +1 -1
  217. package/build-types/entity-types/helpers.d.ts +0 -3
  218. package/build-types/entity-types/helpers.d.ts.map +1 -1
  219. package/build-types/entity-types/icon.d.ts +0 -3
  220. package/build-types/entity-types/icon.d.ts.map +1 -1
  221. package/build-types/entity-types/index.d.ts +0 -3
  222. package/build-types/entity-types/index.d.ts.map +1 -1
  223. package/build-types/entity-types/menu-location.d.ts +0 -3
  224. package/build-types/entity-types/menu-location.d.ts.map +1 -1
  225. package/build-types/entity-types/nav-menu-item.d.ts +0 -3
  226. package/build-types/entity-types/nav-menu-item.d.ts.map +1 -1
  227. package/build-types/entity-types/nav-menu.d.ts +0 -3
  228. package/build-types/entity-types/nav-menu.d.ts.map +1 -1
  229. package/build-types/entity-types/page.d.ts +0 -3
  230. package/build-types/entity-types/page.d.ts.map +1 -1
  231. package/build-types/entity-types/plugin.d.ts +0 -3
  232. package/build-types/entity-types/plugin.d.ts.map +1 -1
  233. package/build-types/entity-types/post-revision.d.ts +0 -3
  234. package/build-types/entity-types/post-revision.d.ts.map +1 -1
  235. package/build-types/entity-types/post-status.d.ts +0 -3
  236. package/build-types/entity-types/post-status.d.ts.map +1 -1
  237. package/build-types/entity-types/post.d.ts +0 -3
  238. package/build-types/entity-types/post.d.ts.map +1 -1
  239. package/build-types/entity-types/settings.d.ts +0 -3
  240. package/build-types/entity-types/settings.d.ts.map +1 -1
  241. package/build-types/entity-types/sidebar.d.ts +0 -3
  242. package/build-types/entity-types/sidebar.d.ts.map +1 -1
  243. package/build-types/entity-types/taxonomy.d.ts +0 -3
  244. package/build-types/entity-types/taxonomy.d.ts.map +1 -1
  245. package/build-types/entity-types/term.d.ts +0 -3
  246. package/build-types/entity-types/term.d.ts.map +1 -1
  247. package/build-types/entity-types/test/attachment.test.d.ts +0 -8
  248. package/build-types/entity-types/test/attachment.test.d.ts.map +1 -1
  249. package/build-types/entity-types/theme.d.ts +0 -3
  250. package/build-types/entity-types/theme.d.ts.map +1 -1
  251. package/build-types/entity-types/type.d.ts +0 -3
  252. package/build-types/entity-types/type.d.ts.map +1 -1
  253. package/build-types/entity-types/user.d.ts +0 -3
  254. package/build-types/entity-types/user.d.ts.map +1 -1
  255. package/build-types/entity-types/widget-type.d.ts +0 -3
  256. package/build-types/entity-types/widget-type.d.ts.map +1 -1
  257. package/build-types/entity-types/widget.d.ts +0 -3
  258. package/build-types/entity-types/widget.d.ts.map +1 -1
  259. package/build-types/entity-types/wp-template-part.d.ts +0 -3
  260. package/build-types/entity-types/wp-template-part.d.ts.map +1 -1
  261. package/build-types/entity-types/wp-template.d.ts +0 -3
  262. package/build-types/entity-types/wp-template.d.ts.map +1 -1
  263. package/build-types/fetch/__experimental-fetch-link-suggestions.d.ts.map +1 -1
  264. package/build-types/fetch/__experimental-fetch-url-data.d.ts.map +1 -1
  265. package/build-types/fetch/index.d.ts.map +1 -1
  266. package/build-types/footnotes/get-footnotes-order.d.ts.map +1 -1
  267. package/build-types/footnotes/get-rich-text-values-cached.d.ts.map +1 -1
  268. package/build-types/footnotes/index.d.ts.map +1 -1
  269. package/build-types/hooks/index.d.ts +0 -3
  270. package/build-types/hooks/index.d.ts.map +1 -1
  271. package/build-types/hooks/use-entity-block-editor.d.ts.map +1 -1
  272. package/build-types/hooks/use-entity-id.d.ts.map +1 -1
  273. package/build-types/hooks/use-entity-prop.d.ts.map +1 -1
  274. package/build-types/hooks/use-entity-record.d.ts.map +1 -1
  275. package/build-types/hooks/use-entity-records.d.ts.map +1 -1
  276. package/build-types/hooks/use-post-editor-awareness-state.d.ts.map +1 -1
  277. package/build-types/hooks/use-query-select.d.ts.map +1 -1
  278. package/build-types/hooks/use-resource-permissions.d.ts.map +1 -1
  279. package/build-types/hooks/utils.d.ts +0 -6
  280. package/build-types/hooks/utils.d.ts.map +1 -1
  281. package/build-types/index.d.ts +1 -0
  282. package/build-types/index.d.ts.map +1 -1
  283. package/build-types/lock-unlock.d.ts.map +1 -1
  284. package/build-types/locks/actions.d.ts.map +1 -1
  285. package/build-types/locks/engine.d.ts.map +1 -1
  286. package/build-types/locks/reducer.d.ts.map +1 -1
  287. package/build-types/locks/selectors.d.ts.map +1 -1
  288. package/build-types/private-actions.d.ts +1 -1
  289. package/build-types/private-actions.d.ts.map +1 -1
  290. package/build-types/private-apis.d.ts +4 -3
  291. package/build-types/private-apis.d.ts.map +1 -1
  292. package/build-types/private-selectors.d.ts +12 -3
  293. package/build-types/private-selectors.d.ts.map +1 -1
  294. package/build-types/queried-data/get-query-parts.d.ts.map +1 -1
  295. package/build-types/queried-data/reducer.d.ts.map +1 -1
  296. package/build-types/queried-data/selectors.d.ts.map +1 -1
  297. package/build-types/reducer.d.ts.map +1 -1
  298. package/build-types/resolvers.d.ts +1 -2
  299. package/build-types/resolvers.d.ts.map +1 -1
  300. package/build-types/selectors.d.ts.map +1 -1
  301. package/build-types/sync.d.ts +31 -3
  302. package/build-types/sync.d.ts.map +1 -1
  303. package/build-types/types.d.ts +9 -8
  304. package/build-types/types.d.ts.map +1 -1
  305. package/build-types/utils/block-selection-history.d.ts +0 -6
  306. package/build-types/utils/block-selection-history.d.ts.map +1 -1
  307. package/build-types/utils/clear-unchanged-edits.d.ts.map +1 -1
  308. package/build-types/utils/conservative-map-item.d.ts.map +1 -1
  309. package/build-types/utils/crdt-blocks.d.ts +0 -3
  310. package/build-types/utils/crdt-blocks.d.ts.map +1 -1
  311. package/build-types/utils/crdt-selection.d.ts +0 -3
  312. package/build-types/utils/crdt-selection.d.ts.map +1 -1
  313. package/build-types/utils/crdt-text.d.ts +0 -3
  314. package/build-types/utils/crdt-text.d.ts.map +1 -1
  315. package/build-types/utils/crdt-user-selections.d.ts.map +1 -1
  316. package/build-types/utils/crdt-utils.d.ts +0 -6
  317. package/build-types/utils/crdt-utils.d.ts.map +1 -1
  318. package/build-types/utils/crdt.d.ts.map +1 -1
  319. package/build-types/utils/get-template-info.d.ts.map +1 -1
  320. package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
  321. package/build-types/utils/log-entity-deprecation.d.ts.map +1 -1
  322. package/build-types/utils/save-crdt-doc.d.ts.map +1 -1
  323. package/package.json +24 -23
  324. package/src/actions.js +45 -29
  325. package/src/awareness/awareness-state.ts +0 -3
  326. package/src/awareness/base-awareness.ts +0 -8
  327. package/src/awareness/block-lookup.ts +1 -8
  328. package/src/awareness/post-editor-awareness.ts +13 -10
  329. package/src/awareness/test/awareness-state.ts +0 -11
  330. package/src/awareness/test/base-awareness.ts +0 -7
  331. package/src/awareness/test/block-lookup.ts +0 -8
  332. package/src/awareness/test/post-editor-awareness.ts +0 -7
  333. package/src/awareness/test/typed-awareness.ts +0 -11
  334. package/src/awareness/test/utils.ts +0 -3
  335. package/src/awareness/typed-awareness.ts +0 -7
  336. package/src/awareness/types.ts +0 -7
  337. package/src/awareness/utils.ts +0 -3
  338. package/src/batch/create-batch.js +0 -3
  339. package/src/batch/default-processor.js +0 -4
  340. package/src/batch/test/create-batch.js +0 -3
  341. package/src/batch/test/default-processor.js +0 -7
  342. package/src/components/entities-saved-states/entity-record-item.js +0 -7
  343. package/src/components/entities-saved-states/entity-type-list.js +0 -7
  344. package/src/components/entities-saved-states/hooks/use-is-dirty.js +4 -7
  345. package/src/components/entities-saved-states/index.js +0 -11
  346. package/src/components/entities-saved-states/test/use-is-dirty.js +70 -11
  347. package/src/dynamic-entities.ts +0 -3
  348. package/src/entities.js +0 -11
  349. package/src/entity-context.js +0 -3
  350. package/src/entity-provider.js +0 -7
  351. package/src/entity-types/attachment.ts +0 -4
  352. package/src/entity-types/base.ts +0 -3
  353. package/src/entity-types/comment.ts +0 -3
  354. package/src/entity-types/font-collection.ts +0 -3
  355. package/src/entity-types/font-family.ts +0 -3
  356. package/src/entity-types/global-styles-revision.ts +0 -4
  357. package/src/entity-types/helpers.ts +0 -3
  358. package/src/entity-types/icon.ts +0 -4
  359. package/src/entity-types/index.ts +0 -3
  360. package/src/entity-types/menu-location.ts +0 -4
  361. package/src/entity-types/nav-menu-item.ts +0 -4
  362. package/src/entity-types/nav-menu.ts +0 -4
  363. package/src/entity-types/page.ts +0 -4
  364. package/src/entity-types/plugin.ts +0 -4
  365. package/src/entity-types/post-revision.ts +0 -4
  366. package/src/entity-types/post-status.ts +0 -3
  367. package/src/entity-types/post.ts +0 -4
  368. package/src/entity-types/settings.ts +0 -4
  369. package/src/entity-types/sidebar.ts +0 -4
  370. package/src/entity-types/taxonomy.ts +0 -4
  371. package/src/entity-types/term.ts +0 -4
  372. package/src/entity-types/test/attachment.test.ts +0 -4
  373. package/src/entity-types/theme.ts +0 -4
  374. package/src/entity-types/type.ts +0 -4
  375. package/src/entity-types/user.ts +0 -4
  376. package/src/entity-types/widget-type.ts +0 -4
  377. package/src/entity-types/widget.ts +0 -4
  378. package/src/entity-types/wp-template-part.ts +0 -4
  379. package/src/entity-types/wp-template.ts +0 -4
  380. package/src/fetch/__experimental-fetch-link-suggestions.ts +0 -3
  381. package/src/fetch/__experimental-fetch-url-data.js +0 -3
  382. package/src/fetch/index.js +0 -7
  383. package/src/fetch/test/__experimental-fetch-link-suggestions.js +0 -3
  384. package/src/fetch/test/__experimental-fetch-url-data.js +1 -7
  385. package/src/footnotes/get-footnotes-order.js +0 -3
  386. package/src/footnotes/get-rich-text-values-cached.js +0 -7
  387. package/src/footnotes/index.js +21 -8
  388. package/src/footnotes/test/index.js +57 -0
  389. package/src/hooks/index.ts +0 -3
  390. package/src/hooks/test/use-entity-record.js +0 -12
  391. package/src/hooks/test/use-entity-records.js +0 -12
  392. package/src/hooks/test/use-post-editor-awareness-state.ts +0 -7
  393. package/src/hooks/test/use-query-select.js +0 -11
  394. package/src/hooks/test/use-resource-permissions.js +0 -12
  395. package/src/hooks/use-entity-block-editor.js +0 -7
  396. package/src/hooks/use-entity-id.js +0 -7
  397. package/src/hooks/use-entity-prop.js +0 -7
  398. package/src/hooks/use-entity-record.ts +0 -7
  399. package/src/hooks/use-entity-records.ts +2 -9
  400. package/src/hooks/use-post-editor-awareness-state.ts +0 -7
  401. package/src/hooks/use-query-select.ts +0 -7
  402. package/src/hooks/use-resource-permissions.ts +0 -7
  403. package/src/hooks/utils.ts +0 -7
  404. package/src/index.js +0 -7
  405. package/src/lock-unlock.ts +0 -3
  406. package/src/locks/actions.js +0 -3
  407. package/src/locks/engine.js +0 -3
  408. package/src/locks/reducer.js +0 -3
  409. package/src/locks/selectors.js +0 -3
  410. package/src/locks/test/engine.js +0 -3
  411. package/src/locks/test/reducer.js +0 -7
  412. package/src/locks/test/selectors.js +0 -7
  413. package/src/locks/test/utils.js +0 -7
  414. package/src/private-actions.js +63 -15
  415. package/src/private-apis.ts +9 -4
  416. package/src/private-selectors.ts +22 -7
  417. package/src/queried-data/get-query-parts.js +0 -7
  418. package/src/queried-data/reducer.js +0 -7
  419. package/src/queried-data/selectors.js +0 -7
  420. package/src/queried-data/test/actions.js +0 -3
  421. package/src/queried-data/test/get-query-parts.js +0 -3
  422. package/src/queried-data/test/reducer.js +0 -7
  423. package/src/queried-data/test/selectors.js +0 -3
  424. package/src/reducer.js +0 -11
  425. package/src/resolvers.js +23 -40
  426. package/src/selectors.ts +0 -7
  427. package/src/sync.ts +64 -7
  428. package/src/test/actions.js +256 -8
  429. package/src/test/deprecated-entity-logging.js +0 -7
  430. package/src/test/entities.js +0 -8
  431. package/src/test/entity-provider.js +0 -11
  432. package/src/test/private-actions.js +297 -7
  433. package/src/test/private-selectors.js +0 -3
  434. package/src/test/reducer.js +0 -7
  435. package/src/test/resolvers.js +0 -12
  436. package/src/test/rtc-rich-text-offset-space.test.js +0 -12
  437. package/src/test/selectors.js +0 -7
  438. package/src/test/store.js +8 -15
  439. package/src/types.ts +14 -12
  440. package/src/utils/block-selection-history.ts +0 -10
  441. package/src/utils/clear-unchanged-edits.ts +0 -3
  442. package/src/utils/conservative-map-item.js +0 -3
  443. package/src/utils/crdt-blocks.ts +0 -11
  444. package/src/utils/crdt-selection.ts +0 -7
  445. package/src/utils/crdt-text.ts +0 -3
  446. package/src/utils/crdt-user-selections.ts +85 -23
  447. package/src/utils/crdt-utils.ts +0 -7
  448. package/src/utils/crdt.ts +0 -11
  449. package/src/utils/get-template-info.js +0 -6
  450. package/src/utils/get-template-part-icon.js +0 -3
  451. package/src/utils/log-entity-deprecation.ts +0 -7
  452. package/src/utils/save-crdt-doc.js +0 -7
  453. package/src/utils/test/block-selection-history.test.ts +0 -7
  454. package/src/utils/test/clear-unchanged-edits.js +0 -3
  455. package/src/utils/test/conservative-map-item.js +0 -3
  456. package/src/utils/test/crdt-blocks.ts +0 -17
  457. package/src/utils/test/crdt-user-selections.ts +107 -30
  458. package/src/utils/test/crdt-utils.ts +0 -7
  459. package/src/utils/test/crdt.ts +0 -16
  460. package/src/utils/test/get-nested-value.js +0 -3
  461. package/src/utils/test/get-normalized-comma-separable.js +0 -3
  462. package/src/utils/test/get-template-info.js +0 -6
  463. package/src/utils/test/if-matching-action.js +0 -7
  464. package/src/utils/test/is-numeric-id.js +0 -3
  465. package/src/utils/test/log-entity-deprecation.js +0 -7
  466. package/src/utils/test/replace-action.js +0 -3
  467. package/src/utils/test/rtc-rich-text-cursor-scope.test.js +0 -14
  468. package/src/utils/test/rtc-rich-text-offset-space.test.js +0 -14
  469. package/src/utils/test/save-crdt-doc.js +0 -7
  470. package/src/utils/test/set-nested-value.js +0 -3
  471. package/src/utils/test/with-weak-map-cache.js +0 -3
  472. package/build-types/utils/on-sub-key.d.ts +0 -4
  473. package/build-types/utils/on-sub-key.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/use-resource-permissions.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport { store as coreStore } from '../';\nimport { Status } from './constants';\nimport useQuerySelect from './use-query-select';\n\ninterface GlobalResourcePermissionsResolution {\n\t/** Can the current user create new resources of this type? */\n\tcanCreate: boolean;\n}\ninterface SpecificResourcePermissionsResolution {\n\t/** Can the current user update resources of this type? */\n\tcanUpdate: boolean;\n\t/** Can the current user delete resources of this type? */\n\tcanDelete: boolean;\n}\ninterface ResolutionDetails {\n\t/** Resolution status */\n\tstatus: Status;\n\t/**\n\t * Is the data still being resolved?\n\t */\n\tisResolving: boolean;\n}\n\n/**\n * Is the data resolved by now?\n */\ntype HasResolved = boolean;\n\ntype ResourcePermissionsResolution< IdType > = [\n\tHasResolved,\n\tResolutionDetails &\n\t\tGlobalResourcePermissionsResolution &\n\t\t( IdType extends void ? SpecificResourcePermissionsResolution : {} ),\n];\n\ntype EntityResource = { kind: string; name: string; id?: string | number };\n\nfunction useResourcePermissions< IdType = void >(\n\tresource: string,\n\tid?: IdType\n): ResourcePermissionsResolution< IdType >;\n\nfunction useResourcePermissions< IdType = void >(\n\tresource: EntityResource,\n\tid?: never\n): ResourcePermissionsResolution< IdType >;\n\n/**\n * Resolves resource permissions.\n *\n * @since 6.1.0 Introduced in WordPress core.\n *\n * @param resource Entity resource to check. Accepts entity object `{ kind: 'postType', name: 'attachment', id: 1 }`\n * or REST base as a string - `media`.\n * @param id Optional ID of the resource to check, e.g. 10. Note: This argument is discouraged\n * when using an entity object as a resource to check permissions and will be ignored.\n *\n * @example\n * ```js\n * import { useResourcePermissions } from '@wordpress/core-data';\n *\n * function PagesList() {\n * const { canCreate, isResolving } = useResourcePermissions( { kind: 'postType', name: 'page' } );\n *\n * if ( isResolving ) {\n * return 'Loading ...';\n * }\n *\n * return (\n * <div>\n * {canCreate ? (<button>+ Create a new page</button>) : false}\n * // ...\n * </div>\n * );\n * }\n *\n * // Rendered in the application:\n * // <PagesList />\n * ```\n *\n * @example\n * ```js\n * import { useResourcePermissions } from '@wordpress/core-data';\n *\n * function Page({ pageId }) {\n * const {\n * canCreate,\n * canUpdate,\n * canDelete,\n * isResolving\n * } = useResourcePermissions( { kind: 'postType', name: 'page', id: pageId } );\n *\n * if ( isResolving ) {\n * return 'Loading ...';\n * }\n *\n * return (\n * <div>\n * {canCreate ? (<button>+ Create a new page</button>) : false}\n * {canUpdate ? (<button>Edit page</button>) : false}\n * {canDelete ? (<button>Delete page</button>) : false}\n * // ...\n * </div>\n * );\n * }\n *\n * // Rendered in the application:\n * // <Page pageId={ 15 } />\n * ```\n *\n * In the above example, when `PagesList` is rendered into an\n * application, the appropriate permissions and the resolution details will be retrieved from\n * the store state using `canUser()`, or resolved if missing.\n *\n * @return Entity records data.\n * @template IdType\n */\nfunction useResourcePermissions< IdType = void >(\n\tresource: string | EntityResource,\n\tid?: IdType\n): ResourcePermissionsResolution< IdType > {\n\t// Serialize `resource` to a string that can be safely used as a React dep.\n\t// We can't just pass `resource` as one of the deps, because if it is passed\n\t// as an object literal, then it will be a different object on each call even\n\t// if the values remain the same.\n\tconst isEntity = typeof resource === 'object';\n\tconst resourceAsString = isEntity ? JSON.stringify( resource ) : resource;\n\n\tif ( isEntity && typeof id !== 'undefined' ) {\n\t\twarning(\n\t\t\t`When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.`\n\t\t);\n\t}\n\n\treturn useQuerySelect(\n\t\t( resolve ) => {\n\t\t\tconst hasId = isEntity ? !! resource.id : !! id;\n\t\t\tconst { canUser } = resolve( coreStore );\n\t\t\tconst collectionResource = isEntity\n\t\t\t\t? { kind: resource.kind, name: resource.name }\n\t\t\t\t: resource;\n\t\t\tconst create = canUser( 'create', collectionResource );\n\n\t\t\tif ( ! hasId ) {\n\t\t\t\tconst read = canUser( 'read', collectionResource );\n\n\t\t\t\tconst isResolving = create.isResolving || read.isResolving;\n\t\t\t\tconst hasResolved = create.hasResolved && read.hasResolved;\n\t\t\t\tlet status = Status.Idle;\n\t\t\t\tif ( isResolving ) {\n\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\thasResolved,\n\t\t\t\t\tcanCreate: create.hasResolved && create.data,\n\t\t\t\t\tcanRead: read.hasResolved && read.data,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst read = canUser( 'read', resource, id );\n\t\t\tconst update = canUser( 'update', resource, id );\n\t\t\tconst _delete = canUser( 'delete', resource, id );\n\t\t\tconst isResolving =\n\t\t\t\tread.isResolving ||\n\t\t\t\tcreate.isResolving ||\n\t\t\t\tupdate.isResolving ||\n\t\t\t\t_delete.isResolving;\n\t\t\tconst hasResolved =\n\t\t\t\tread.hasResolved &&\n\t\t\t\tcreate.hasResolved &&\n\t\t\t\tupdate.hasResolved &&\n\t\t\t\t_delete.hasResolved;\n\n\t\t\tlet status = Status.Idle;\n\t\t\tif ( isResolving ) {\n\t\t\t\tstatus = Status.Resolving;\n\t\t\t} else if ( hasResolved ) {\n\t\t\t\tstatus = Status.Success;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus,\n\t\t\t\tisResolving,\n\t\t\t\thasResolved,\n\t\t\t\tcanRead: hasResolved && read.data,\n\t\t\t\tcanCreate: hasResolved && create.data,\n\t\t\t\tcanUpdate: hasResolved && update.data,\n\t\t\t\tcanDelete: hasResolved && _delete.data,\n\t\t\t};\n\t\t},\n\t\t[ resourceAsString, id ]\n\t);\n}\n\nexport default useResourcePermissions;\n\nexport function useDeprecatedResourcePermissions(\n\tresource: string,\n\tid?: unknown\n) {\n\tdeprecated( `wp.data.__experimentalUseResourcePermissions`, {\n\t\talternative: 'wp.data.useResourcePermissions',\n\t\tsince: '6.1',\n\t} );\n\treturn useResourcePermissions( resource, id );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAuB;AACvB,qBAAoB;AAKpB,eAAmC;AACnC,uBAAuB;AACvB,8BAA2B;AAmH3B,SAAS,uBACR,UACA,IAC0C;AAK1C,QAAM,WAAW,OAAO,aAAa;AACrC,QAAM,mBAAmB,WAAW,KAAK,UAAW,QAAS,IAAI;AAEjE,MAAK,YAAY,OAAO,OAAO,aAAc;AAC5C,uBAAAA;AAAA,MACC;AAAA,IACD;AAAA,EACD;AAEA,aAAO,wBAAAC;AAAA,IACN,CAAE,YAAa;AACd,YAAM,QAAQ,WAAW,CAAC,CAAE,SAAS,KAAK,CAAC,CAAE;AAC7C,YAAM,EAAE,QAAQ,IAAI,QAAS,SAAAC,KAAU;AACvC,YAAM,qBAAqB,WACxB,EAAE,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,IAC3C;AACH,YAAM,SAAS,QAAS,UAAU,kBAAmB;AAErD,UAAK,CAAE,OAAQ;AACd,cAAMC,QAAO,QAAS,QAAQ,kBAAmB;AAEjD,cAAMC,eAAc,OAAO,eAAeD,MAAK;AAC/C,cAAME,eAAc,OAAO,eAAeF,MAAK;AAC/C,YAAIG,UAAS,wBAAO;AACpB,YAAKF,cAAc;AAClB,UAAAE,UAAS,wBAAO;AAAA,QACjB,WAAYD,cAAc;AACzB,UAAAC,UAAS,wBAAO;AAAA,QACjB;AAEA,eAAO;AAAA,UACN,QAAAA;AAAA,UACA,aAAAF;AAAA,UACA,aAAAC;AAAA,UACA,WAAW,OAAO,eAAe,OAAO;AAAA,UACxC,SAASF,MAAK,eAAeA,MAAK;AAAA,QACnC;AAAA,MACD;AAEA,YAAM,OAAO,QAAS,QAAQ,UAAU,EAAG;AAC3C,YAAM,SAAS,QAAS,UAAU,UAAU,EAAG;AAC/C,YAAM,UAAU,QAAS,UAAU,UAAU,EAAG;AAChD,YAAM,cACL,KAAK,eACL,OAAO,eACP,OAAO,eACP,QAAQ;AACT,YAAM,cACL,KAAK,eACL,OAAO,eACP,OAAO,eACP,QAAQ;AAET,UAAI,SAAS,wBAAO;AACpB,UAAK,aAAc;AAClB,iBAAS,wBAAO;AAAA,MACjB,WAAY,aAAc;AACzB,iBAAS,wBAAO;AAAA,MACjB;AACA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,eAAe,KAAK;AAAA,QAC7B,WAAW,eAAe,OAAO;AAAA,QACjC,WAAW,eAAe,OAAO;AAAA,QACjC,WAAW,eAAe,QAAQ;AAAA,MACnC;AAAA,IACD;AAAA,IACA,CAAE,kBAAkB,EAAG;AAAA,EACxB;AACD;AAEA,IAAO,mCAAQ;AAER,SAAS,iCACf,UACA,IACC;AACD,wBAAAI,SAAY,gDAAgD;AAAA,IAC3D,aAAa;AAAA,IACb,OAAO;AAAA,EACR,CAAE;AACF,SAAO,uBAAwB,UAAU,EAAG;AAC7C;",
4
+ "sourcesContent": ["import deprecated from '@wordpress/deprecated';\nimport warning from '@wordpress/warning';\nimport { store as coreStore } from '../';\nimport { Status } from './constants';\nimport useQuerySelect from './use-query-select';\n\ninterface GlobalResourcePermissionsResolution {\n\t/** Can the current user create new resources of this type? */\n\tcanCreate: boolean;\n}\ninterface SpecificResourcePermissionsResolution {\n\t/** Can the current user update resources of this type? */\n\tcanUpdate: boolean;\n\t/** Can the current user delete resources of this type? */\n\tcanDelete: boolean;\n}\ninterface ResolutionDetails {\n\t/** Resolution status */\n\tstatus: Status;\n\t/**\n\t * Is the data still being resolved?\n\t */\n\tisResolving: boolean;\n}\n\n/**\n * Is the data resolved by now?\n */\ntype HasResolved = boolean;\n\ntype ResourcePermissionsResolution< IdType > = [\n\tHasResolved,\n\tResolutionDetails &\n\t\tGlobalResourcePermissionsResolution &\n\t\t( IdType extends void ? SpecificResourcePermissionsResolution : {} ),\n];\n\ntype EntityResource = { kind: string; name: string; id?: string | number };\n\nfunction useResourcePermissions< IdType = void >(\n\tresource: string,\n\tid?: IdType\n): ResourcePermissionsResolution< IdType >;\n\nfunction useResourcePermissions< IdType = void >(\n\tresource: EntityResource,\n\tid?: never\n): ResourcePermissionsResolution< IdType >;\n\n/**\n * Resolves resource permissions.\n *\n * @since 6.1.0 Introduced in WordPress core.\n *\n * @param resource Entity resource to check. Accepts entity object `{ kind: 'postType', name: 'attachment', id: 1 }`\n * or REST base as a string - `media`.\n * @param id Optional ID of the resource to check, e.g. 10. Note: This argument is discouraged\n * when using an entity object as a resource to check permissions and will be ignored.\n *\n * @example\n * ```js\n * import { useResourcePermissions } from '@wordpress/core-data';\n *\n * function PagesList() {\n * const { canCreate, isResolving } = useResourcePermissions( { kind: 'postType', name: 'page' } );\n *\n * if ( isResolving ) {\n * return 'Loading ...';\n * }\n *\n * return (\n * <div>\n * {canCreate ? (<button>+ Create a new page</button>) : false}\n * // ...\n * </div>\n * );\n * }\n *\n * // Rendered in the application:\n * // <PagesList />\n * ```\n *\n * @example\n * ```js\n * import { useResourcePermissions } from '@wordpress/core-data';\n *\n * function Page({ pageId }) {\n * const {\n * canCreate,\n * canUpdate,\n * canDelete,\n * isResolving\n * } = useResourcePermissions( { kind: 'postType', name: 'page', id: pageId } );\n *\n * if ( isResolving ) {\n * return 'Loading ...';\n * }\n *\n * return (\n * <div>\n * {canCreate ? (<button>+ Create a new page</button>) : false}\n * {canUpdate ? (<button>Edit page</button>) : false}\n * {canDelete ? (<button>Delete page</button>) : false}\n * // ...\n * </div>\n * );\n * }\n *\n * // Rendered in the application:\n * // <Page pageId={ 15 } />\n * ```\n *\n * In the above example, when `PagesList` is rendered into an\n * application, the appropriate permissions and the resolution details will be retrieved from\n * the store state using `canUser()`, or resolved if missing.\n *\n * @return Entity records data.\n * @template IdType\n */\nfunction useResourcePermissions< IdType = void >(\n\tresource: string | EntityResource,\n\tid?: IdType\n): ResourcePermissionsResolution< IdType > {\n\t// Serialize `resource` to a string that can be safely used as a React dep.\n\t// We can't just pass `resource` as one of the deps, because if it is passed\n\t// as an object literal, then it will be a different object on each call even\n\t// if the values remain the same.\n\tconst isEntity = typeof resource === 'object';\n\tconst resourceAsString = isEntity ? JSON.stringify( resource ) : resource;\n\n\tif ( isEntity && typeof id !== 'undefined' ) {\n\t\twarning(\n\t\t\t`When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.`\n\t\t);\n\t}\n\n\treturn useQuerySelect(\n\t\t( resolve ) => {\n\t\t\tconst hasId = isEntity ? !! resource.id : !! id;\n\t\t\tconst { canUser } = resolve( coreStore );\n\t\t\tconst collectionResource = isEntity\n\t\t\t\t? { kind: resource.kind, name: resource.name }\n\t\t\t\t: resource;\n\t\t\tconst create = canUser( 'create', collectionResource );\n\n\t\t\tif ( ! hasId ) {\n\t\t\t\tconst read = canUser( 'read', collectionResource );\n\n\t\t\t\tconst isResolving = create.isResolving || read.isResolving;\n\t\t\t\tconst hasResolved = create.hasResolved && read.hasResolved;\n\t\t\t\tlet status = Status.Idle;\n\t\t\t\tif ( isResolving ) {\n\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\thasResolved,\n\t\t\t\t\tcanCreate: create.hasResolved && create.data,\n\t\t\t\t\tcanRead: read.hasResolved && read.data,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst read = canUser( 'read', resource, id );\n\t\t\tconst update = canUser( 'update', resource, id );\n\t\t\tconst _delete = canUser( 'delete', resource, id );\n\t\t\tconst isResolving =\n\t\t\t\tread.isResolving ||\n\t\t\t\tcreate.isResolving ||\n\t\t\t\tupdate.isResolving ||\n\t\t\t\t_delete.isResolving;\n\t\t\tconst hasResolved =\n\t\t\t\tread.hasResolved &&\n\t\t\t\tcreate.hasResolved &&\n\t\t\t\tupdate.hasResolved &&\n\t\t\t\t_delete.hasResolved;\n\n\t\t\tlet status = Status.Idle;\n\t\t\tif ( isResolving ) {\n\t\t\t\tstatus = Status.Resolving;\n\t\t\t} else if ( hasResolved ) {\n\t\t\t\tstatus = Status.Success;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus,\n\t\t\t\tisResolving,\n\t\t\t\thasResolved,\n\t\t\t\tcanRead: hasResolved && read.data,\n\t\t\t\tcanCreate: hasResolved && create.data,\n\t\t\t\tcanUpdate: hasResolved && update.data,\n\t\t\t\tcanDelete: hasResolved && _delete.data,\n\t\t\t};\n\t\t},\n\t\t[ resourceAsString, id ]\n\t);\n}\n\nexport default useResourcePermissions;\n\nexport function useDeprecatedResourcePermissions(\n\tresource: string,\n\tid?: unknown\n) {\n\tdeprecated( `wp.data.__experimentalUseResourcePermissions`, {\n\t\talternative: 'wp.data.useResourcePermissions',\n\t\tsince: '6.1',\n\t} );\n\treturn useResourcePermissions( resource, id );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuB;AACvB,qBAAoB;AACpB,eAAmC;AACnC,uBAAuB;AACvB,8BAA2B;AAmH3B,SAAS,uBACR,UACA,IAC0C;AAK1C,QAAM,WAAW,OAAO,aAAa;AACrC,QAAM,mBAAmB,WAAW,KAAK,UAAW,QAAS,IAAI;AAEjE,MAAK,YAAY,OAAO,OAAO,aAAc;AAC5C,uBAAAA;AAAA,MACC;AAAA,IACD;AAAA,EACD;AAEA,aAAO,wBAAAC;AAAA,IACN,CAAE,YAAa;AACd,YAAM,QAAQ,WAAW,CAAC,CAAE,SAAS,KAAK,CAAC,CAAE;AAC7C,YAAM,EAAE,QAAQ,IAAI,QAAS,SAAAC,KAAU;AACvC,YAAM,qBAAqB,WACxB,EAAE,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,IAC3C;AACH,YAAM,SAAS,QAAS,UAAU,kBAAmB;AAErD,UAAK,CAAE,OAAQ;AACd,cAAMC,QAAO,QAAS,QAAQ,kBAAmB;AAEjD,cAAMC,eAAc,OAAO,eAAeD,MAAK;AAC/C,cAAME,eAAc,OAAO,eAAeF,MAAK;AAC/C,YAAIG,UAAS,wBAAO;AACpB,YAAKF,cAAc;AAClB,UAAAE,UAAS,wBAAO;AAAA,QACjB,WAAYD,cAAc;AACzB,UAAAC,UAAS,wBAAO;AAAA,QACjB;AAEA,eAAO;AAAA,UACN,QAAAA;AAAA,UACA,aAAAF;AAAA,UACA,aAAAC;AAAA,UACA,WAAW,OAAO,eAAe,OAAO;AAAA,UACxC,SAASF,MAAK,eAAeA,MAAK;AAAA,QACnC;AAAA,MACD;AAEA,YAAM,OAAO,QAAS,QAAQ,UAAU,EAAG;AAC3C,YAAM,SAAS,QAAS,UAAU,UAAU,EAAG;AAC/C,YAAM,UAAU,QAAS,UAAU,UAAU,EAAG;AAChD,YAAM,cACL,KAAK,eACL,OAAO,eACP,OAAO,eACP,QAAQ;AACT,YAAM,cACL,KAAK,eACL,OAAO,eACP,OAAO,eACP,QAAQ;AAET,UAAI,SAAS,wBAAO;AACpB,UAAK,aAAc;AAClB,iBAAS,wBAAO;AAAA,MACjB,WAAY,aAAc;AACzB,iBAAS,wBAAO;AAAA,MACjB;AACA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,eAAe,KAAK;AAAA,QAC7B,WAAW,eAAe,OAAO;AAAA,QACjC,WAAW,eAAe,OAAO;AAAA,QACjC,WAAW,eAAe,QAAQ;AAAA,MACnC;AAAA,IACD;AAAA,IACA,CAAE,kBAAkB,EAAG;AAAA,EACxB;AACD;AAEA,IAAO,mCAAQ;AAER,SAAS,iCACf,UACA,IACC;AACD,wBAAAI,SAAY,gDAAgD;AAAA,IAC3D,aAAa;AAAA,IACb,OAAO;AAAA,EACR,CAAE;AACF,SAAO,uBAAwB,UAAU,EAAG;AAC7C;",
6
6
  "names": ["warning", "useQuerySelect", "coreStore", "read", "isResolving", "hasResolved", "status", "deprecated"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/utils.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport type { ResolutionStatus } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { Status } from './constants';\n\n/**\n * Normalizes a resolution status from the store into the resolution info\n * shared by the entity record hooks and `useQuerySelect`.\n *\n * @param resolutionStatus Status returned by the `getResolutionState` selector.\n * @return Resolution info object.\n */\nexport function getResolutionStatus( resolutionStatus?: ResolutionStatus ) {\n\tlet status: Status;\n\tswitch ( resolutionStatus ) {\n\t\tcase 'resolving':\n\t\t\tstatus = Status.Resolving;\n\t\t\tbreak;\n\t\tcase 'finished':\n\t\t\tstatus = Status.Success;\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\tstatus = Status.Error;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tstatus = Status.Idle;\n\t}\n\n\treturn {\n\t\tstatus,\n\t\tisResolving: status === Status.Resolving,\n\t\thasStarted: status !== Status.Idle,\n\t\thasResolved: status === Status.Success || status === Status.Error,\n\t};\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,uBAAuB;AAShB,SAAS,oBAAqB,kBAAsC;AAC1E,MAAI;AACJ,UAAS,kBAAmB;AAAA,IAC3B,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD;AACC,eAAS,wBAAO;AAAA,EAClB;AAEA,SAAO;AAAA,IACN;AAAA,IACA,aAAa,WAAW,wBAAO;AAAA,IAC/B,YAAY,WAAW,wBAAO;AAAA,IAC9B,aAAa,WAAW,wBAAO,WAAW,WAAW,wBAAO;AAAA,EAC7D;AACD;",
4
+ "sourcesContent": ["import type { ResolutionStatus } from '@wordpress/data';\nimport { Status } from './constants';\n\n/**\n * Normalizes a resolution status from the store into the resolution info\n * shared by the entity record hooks and `useQuerySelect`.\n *\n * @param resolutionStatus Status returned by the `getResolutionState` selector.\n * @return Resolution info object.\n */\nexport function getResolutionStatus( resolutionStatus?: ResolutionStatus ) {\n\tlet status: Status;\n\tswitch ( resolutionStatus ) {\n\t\tcase 'resolving':\n\t\t\tstatus = Status.Resolving;\n\t\t\tbreak;\n\t\tcase 'finished':\n\t\t\tstatus = Status.Success;\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\tstatus = Status.Error;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tstatus = Status.Idle;\n\t}\n\n\treturn {\n\t\tstatus,\n\t\tisResolving: status === Status.Resolving,\n\t\thasStarted: status !== Status.Idle,\n\t\thasResolved: status === Status.Success || status === Status.Error,\n\t};\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAAuB;AAShB,SAAS,oBAAqB,kBAAsC;AAC1E,MAAI;AACJ,UAAS,kBAAmB;AAAA,IAC3B,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD,KAAK;AACJ,eAAS,wBAAO;AAChB;AAAA,IACD;AACC,eAAS,wBAAO;AAAA,EAClB;AAEA,SAAO;AAAA,IACN;AAAA,IACA,aAAa,WAAW,wBAAO;AAAA,IAC/B,YAAY,WAAW,wBAAO;AAAA,IAC9B,aAAa,WAAW,wBAAO,WAAW,WAAW,wBAAO;AAAA,EAC7D;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as privateSelectors from './private-selectors';\nimport * as actions from './actions';\nimport * as privateActions from './private-actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport {\n\trootEntitiesConfig,\n\tadditionalEntityConfigLoaders,\n\tgetMethodName,\n} from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { dynamicActions, dynamicSelectors } from './dynamic-entities';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\nconst entitiesConfig = [\n\t...rootEntitiesConfig,\n\t...additionalEntityConfigLoaders.filter( ( config ) => !! config.name ),\n];\n\nconst entitySelectors = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( state, key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn selectors.getEntityRecord( state, kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( state, query ) => {\n\t\t\tlogEntityDeprecation( kind, name, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn selectors.getEntityRecords( state, kind, name, query );\n\t\t};\n\t}\n\treturn result;\n}, {} );\n\nconst entityResolvers = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn resolvers.getEntityRecord( kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( ...args ) => {\n\t\t\tlogEntityDeprecation( kind, plural, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn resolvers.getEntityRecords( kind, name, ...args );\n\t\t};\n\t\tresult[ getEntityRecordsMethodName ].shouldInvalidate = ( action ) =>\n\t\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\t}\n\treturn result;\n}, {} );\n\nconst entityActions = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\n\tconst saveEntityRecordMethodName = getMethodName( kind, name, 'save' );\n\tresult[ saveEntityRecordMethodName ] = ( record, options ) => {\n\t\tlogEntityDeprecation( kind, name, saveEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'saveEntityRecord',\n\t\t} );\n\t\treturn actions.saveEntityRecord( kind, name, record, options );\n\t};\n\n\tconst deleteEntityRecordMethodName = getMethodName( kind, name, 'delete' );\n\tresult[ deleteEntityRecordMethodName ] = ( key, query, options ) => {\n\t\tlogEntityDeprecation( kind, name, deleteEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'deleteEntityRecord',\n\t\t} );\n\t\treturn actions.deleteEntityRecord( kind, name, key, query, options );\n\t};\n\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: {\n\t\t...dynamicActions,\n\t\t...actions,\n\t\t...entityActions,\n\t\t...createLocksActions(),\n\t},\n\tselectors: {\n\t\t...dynamicSelectors,\n\t\t...selectors,\n\t\t...entitySelectors,\n\t},\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nunlock( store ).registerPrivateSelectors( privateSelectors );\nunlock( store ).registerPrivateActions( privateActions );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './awareness/types';\nexport * from './fetch';\nexport * from './hooks';\nexport * from './private-apis';\nexport * from './types';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA2C;AAK3C,qBAAoB;AACpB,gBAA2B;AAC3B,uBAAkC;AAClC,cAAyB;AACzB,qBAAgC;AAChC,gBAA2B;AAC3B,qBAA+B;AAC/B,sBAIO;AACP,kBAA2B;AAC3B,yBAAuB;AACvB,8BAAiD;AACjD,oCAAiC;AAgHjC,6BAA0C;AAC1C,0BAAc,kCAxId;AAyIA,0BAAc,qCAzId;AA0IA,0BAAc,kCA1Id;AA2IA,0BAAc,8BA3Id;AA4IA,0BAAc,8BA5Id;AA6IA,0BAAc,+BA7Id;AA8IA,0BAAc,wBA9Id;AA6BA,IAAM,iBAAiB;AAAA,EACtB,GAAG;AAAA,EACH,GAAG,8CAA8B,OAAQ,CAAE,WAAY,CAAC,CAAE,OAAO,IAAK;AACvE;AAEA,IAAM,kBAAkB,eAAe,OAAQ,CAAE,QAAQ,WAAY;AACpE,QAAM,EAAE,MAAM,MAAM,OAAO,IAAI;AAE/B,QAAM,gCAA4B,+BAAe,MAAM,IAAK;AAC5D,SAAQ,yBAA0B,IAAI,CAAE,OAAO,KAAK,UAAW;AAC9D,sCAAAA,SAAsB,MAAM,MAAM,2BAA2B;AAAA,MAC5D,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,IAC1B,CAAE;AACF,WAAiB,0BAAiB,OAAO,MAAM,MAAM,KAAK,KAAM;AAAA,EACjE;AAEA,MAAK,QAAS;AACb,UAAM,iCAA6B,+BAAe,MAAM,QAAQ,KAAM;AACtE,WAAQ,0BAA2B,IAAI,CAAE,OAAO,UAAW;AAC1D,wCAAAA,SAAsB,MAAM,MAAM,4BAA4B;AAAA,QAC7D,qBAAqB;AAAA,QACrB,yBAAyB;AAAA,MAC1B,CAAE;AACF,aAAiB,2BAAkB,OAAO,MAAM,MAAM,KAAM;AAAA,IAC7D;AAAA,EACD;AACA,SAAO;AACR,GAAG,CAAC,CAAE;AAEN,IAAM,kBAAkB,eAAe,OAAQ,CAAE,QAAQ,WAAY;AACpE,QAAM,EAAE,MAAM,MAAM,OAAO,IAAI;AAC/B,QAAM,gCAA4B,+BAAe,MAAM,IAAK;AAC5D,SAAQ,yBAA0B,IAAI,CAAE,KAAK,UAAW;AACvD,sCAAAA,SAAsB,MAAM,MAAM,2BAA2B;AAAA,MAC5D,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,IAC1B,CAAE;AACF,WAAiB,0BAAiB,MAAM,MAAM,KAAK,KAAM;AAAA,EAC1D;AAEA,MAAK,QAAS;AACb,UAAM,iCAA6B,+BAAe,MAAM,QAAQ,KAAM;AACtE,WAAQ,0BAA2B,IAAI,IAAK,SAAU;AACrD,wCAAAA,SAAsB,MAAM,QAAQ,4BAA4B;AAAA,QAC/D,qBAAqB;AAAA,QACrB,yBAAyB;AAAA,MAC1B,CAAE;AACF,aAAiB,2BAAkB,MAAM,MAAM,GAAG,IAAK;AAAA,IACxD;AACA,WAAQ,0BAA2B,EAAE,mBAAmB,CAAE,WAC/C,2BAAiB,iBAAkB,QAAQ,MAAM,IAAK;AAAA,EAClE;AACA,SAAO;AACR,GAAG,CAAC,CAAE;AAEN,IAAM,gBAAgB,eAAe,OAAQ,CAAE,QAAQ,WAAY;AAClE,QAAM,EAAE,MAAM,KAAK,IAAI;AAEvB,QAAM,iCAA6B,+BAAe,MAAM,MAAM,MAAO;AACrE,SAAQ,0BAA2B,IAAI,CAAE,QAAQ,YAAa;AAC7D,sCAAAA,SAAsB,MAAM,MAAM,4BAA4B;AAAA,MAC7D,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,IAC1B,CAAE;AACF,WAAe,yBAAkB,MAAM,MAAM,QAAQ,OAAQ;AAAA,EAC9D;AAEA,QAAM,mCAA+B,+BAAe,MAAM,MAAM,QAAS;AACzE,SAAQ,4BAA6B,IAAI,CAAE,KAAK,OAAO,YAAa;AACnE,sCAAAA,SAAsB,MAAM,MAAM,8BAA8B;AAAA,MAC/D,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,IAC1B,CAAE;AACF,WAAe,2BAAoB,MAAM,MAAM,KAAK,OAAO,OAAQ;AAAA,EACpE;AAEA,SAAO;AACR,GAAG,CAAC,CAAE;AAEN,IAAM,cAAc,OAAQ;AAAA,EAC3B,wBAAAC;AAAA,EACA,SAAS;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAG,eAAAC,SAAmB;AAAA,EACvB;AAAA,EACA,WAAW;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAAA,EACA,WAAW,EAAE,GAAG,WAAW,GAAG,gBAAgB;AAC/C;AAOO,IAAM,YAAQ,8BAAkB,wBAAY,YAAY,CAAE;AAAA,IACjE,2BAAQ,KAAM,EAAE,yBAA0B,gBAAiB;AAAA,IAC3D,2BAAQ,KAAM,EAAE,uBAAwB,cAAe;AAAA,IACvD,sBAAU,KAAM;",
4
+ "sourcesContent": ["import { createReduxStore, register } from '@wordpress/data';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as privateSelectors from './private-selectors';\nimport * as actions from './actions';\nimport * as privateActions from './private-actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport {\n\trootEntitiesConfig,\n\tadditionalEntityConfigLoaders,\n\tgetMethodName,\n} from './entities';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { dynamicActions, dynamicSelectors } from './dynamic-entities';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\nconst entitiesConfig = [\n\t...rootEntitiesConfig,\n\t...additionalEntityConfigLoaders.filter( ( config ) => !! config.name ),\n];\n\nconst entitySelectors = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( state, key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn selectors.getEntityRecord( state, kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( state, query ) => {\n\t\t\tlogEntityDeprecation( kind, name, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn selectors.getEntityRecords( state, kind, name, query );\n\t\t};\n\t}\n\treturn result;\n}, {} );\n\nconst entityResolvers = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name, plural } = entity;\n\tconst getEntityRecordMethodName = getMethodName( kind, name );\n\tresult[ getEntityRecordMethodName ] = ( key, query ) => {\n\t\tlogEntityDeprecation( kind, name, getEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'getEntityRecord',\n\t\t} );\n\t\treturn resolvers.getEntityRecord( kind, name, key, query );\n\t};\n\n\tif ( plural ) {\n\t\tconst getEntityRecordsMethodName = getMethodName( kind, plural, 'get' );\n\t\tresult[ getEntityRecordsMethodName ] = ( ...args ) => {\n\t\t\tlogEntityDeprecation( kind, plural, getEntityRecordsMethodName, {\n\t\t\t\tisShorthandSelector: true,\n\t\t\t\talternativeFunctionName: 'getEntityRecords',\n\t\t\t} );\n\t\t\treturn resolvers.getEntityRecords( kind, name, ...args );\n\t\t};\n\t\tresult[ getEntityRecordsMethodName ].shouldInvalidate = ( action ) =>\n\t\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\t}\n\treturn result;\n}, {} );\n\nconst entityActions = entitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\n\tconst saveEntityRecordMethodName = getMethodName( kind, name, 'save' );\n\tresult[ saveEntityRecordMethodName ] = ( record, options ) => {\n\t\tlogEntityDeprecation( kind, name, saveEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'saveEntityRecord',\n\t\t} );\n\t\treturn actions.saveEntityRecord( kind, name, record, options );\n\t};\n\n\tconst deleteEntityRecordMethodName = getMethodName( kind, name, 'delete' );\n\tresult[ deleteEntityRecordMethodName ] = ( key, query, options ) => {\n\t\tlogEntityDeprecation( kind, name, deleteEntityRecordMethodName, {\n\t\t\tisShorthandSelector: true,\n\t\t\talternativeFunctionName: 'deleteEntityRecord',\n\t\t} );\n\t\treturn actions.deleteEntityRecord( kind, name, key, query, options );\n\t};\n\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: {\n\t\t...dynamicActions,\n\t\t...actions,\n\t\t...entityActions,\n\t\t...createLocksActions(),\n\t},\n\tselectors: {\n\t\t...dynamicSelectors,\n\t\t...selectors,\n\t\t...entitySelectors,\n\t},\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\nunlock( store ).registerPrivateSelectors( privateSelectors );\nunlock( store ).registerPrivateActions( privateActions );\nregister( store ); // Register store after unlocking private selectors to allow resolvers to use them.\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './awareness/types';\nexport * from './fetch';\nexport * from './hooks';\nexport * from './private-apis';\nexport * from './types';\n"],
5
+ "mappings": "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",
6
6
  "names": ["logEntityDeprecation", "reducer", "createLocksActions"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/lock-unlock.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/core-data'\n\t);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAAiE;AAE1D,IAAM,EAAE,MAAM,OAAO,QAC3B;AAAA,EACC;AAAA,EACA;AACD;",
4
+ "sourcesContent": ["import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/core-data'\n\t);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAiE;AAE1D,IAAM,EAAE,MAAM,OAAO,QAC3B;AAAA,EACC;AAAA,EACA;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/locks/actions.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport createLocks from './engine';\n\nexport default function createLocksActions() {\n\tconst locks = createLocks();\n\n\tfunction __unstableAcquireStoreLock( store, path, { exclusive } ) {\n\t\treturn () => locks.acquire( store, path, exclusive );\n\t}\n\n\tfunction __unstableReleaseStoreLock( lock ) {\n\t\treturn () => locks.release( lock );\n\t}\n\n\treturn { __unstableAcquireStoreLock, __unstableReleaseStoreLock };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAAwB;AAET,SAAR,qBAAsC;AAC5C,QAAM,YAAQ,cAAAA,SAAY;AAE1B,WAAS,2BAA4B,OAAO,MAAM,EAAE,UAAU,GAAI;AACjE,WAAO,MAAM,MAAM,QAAS,OAAO,MAAM,SAAU;AAAA,EACpD;AAEA,WAAS,2BAA4B,MAAO;AAC3C,WAAO,MAAM,MAAM,QAAS,IAAK;AAAA,EAClC;AAEA,SAAO,EAAE,4BAA4B,2BAA2B;AACjE;",
4
+ "sourcesContent": ["import createLocks from './engine';\n\nexport default function createLocksActions() {\n\tconst locks = createLocks();\n\n\tfunction __unstableAcquireStoreLock( store, path, { exclusive } ) {\n\t\treturn () => locks.acquire( store, path, exclusive );\n\t}\n\n\tfunction __unstableReleaseStoreLock( lock ) {\n\t\treturn () => locks.release( lock );\n\t}\n\n\treturn { __unstableAcquireStoreLock, __unstableReleaseStoreLock };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwB;AAET,SAAR,qBAAsC;AAC5C,QAAM,YAAQ,cAAAA,SAAY;AAE1B,WAAS,2BAA4B,OAAO,MAAM,EAAE,UAAU,GAAI;AACjE,WAAO,MAAM,MAAM,QAAS,OAAO,MAAM,SAAU;AAAA,EACpD;AAEA,WAAS,2BAA4B,MAAO;AAC3C,WAAO,MAAM,MAAM,QAAS,IAAK;AAAA,EAClC;AAEA,SAAO,EAAE,4BAA4B,2BAA2B;AACjE;",
6
6
  "names": ["createLocks"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/locks/engine.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport { isLockAvailable, getPendingLockRequests } from './selectors';\n\nexport default function createLocks() {\n\tlet state = reducer( undefined, { type: '@@INIT' } );\n\n\tfunction processPendingLockRequests() {\n\t\tfor ( const request of getPendingLockRequests( state ) ) {\n\t\t\tconst { store, path, exclusive, notifyAcquired } = request;\n\t\t\tif ( isLockAvailable( state, store, path, { exclusive } ) ) {\n\t\t\t\tconst lock = { store, path, exclusive };\n\t\t\t\tstate = reducer( state, {\n\t\t\t\t\ttype: 'GRANT_LOCK_REQUEST',\n\t\t\t\t\tlock,\n\t\t\t\t\trequest,\n\t\t\t\t} );\n\t\t\t\tnotifyAcquired( lock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction acquire( store, path, exclusive ) {\n\t\treturn new Promise( ( resolve ) => {\n\t\t\tstate = reducer( state, {\n\t\t\t\ttype: 'ENQUEUE_LOCK_REQUEST',\n\t\t\t\trequest: { store, path, exclusive, notifyAcquired: resolve },\n\t\t\t} );\n\t\t\tprocessPendingLockRequests();\n\t\t} );\n\t}\n\tfunction release( lock ) {\n\t\tstate = reducer( state, {\n\t\t\ttype: 'RELEASE_LOCK',\n\t\t\tlock,\n\t\t} );\n\t\tprocessPendingLockRequests();\n\t}\n\n\treturn { acquire, release };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAoB;AACpB,uBAAwD;AAEzC,SAAR,cAA+B;AACrC,MAAI,YAAQ,eAAAA,SAAS,QAAW,EAAE,MAAM,SAAS,CAAE;AAEnD,WAAS,6BAA6B;AACrC,eAAY,eAAW,yCAAwB,KAAM,GAAI;AACxD,YAAM,EAAE,OAAO,MAAM,WAAW,eAAe,IAAI;AACnD,cAAK,kCAAiB,OAAO,OAAO,MAAM,EAAE,UAAU,CAAE,GAAI;AAC3D,cAAM,OAAO,EAAE,OAAO,MAAM,UAAU;AACtC,oBAAQ,eAAAA,SAAS,OAAO;AAAA,UACvB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACD,CAAE;AACF,uBAAgB,IAAK;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AAEA,WAAS,QAAS,OAAO,MAAM,WAAY;AAC1C,WAAO,IAAI,QAAS,CAAE,YAAa;AAClC,kBAAQ,eAAAA,SAAS,OAAO;AAAA,QACvB,MAAM;AAAA,QACN,SAAS,EAAE,OAAO,MAAM,WAAW,gBAAgB,QAAQ;AAAA,MAC5D,CAAE;AACF,iCAA2B;AAAA,IAC5B,CAAE;AAAA,EACH;AACA,WAAS,QAAS,MAAO;AACxB,gBAAQ,eAAAA,SAAS,OAAO;AAAA,MACvB,MAAM;AAAA,MACN;AAAA,IACD,CAAE;AACF,+BAA2B;AAAA,EAC5B;AAEA,SAAO,EAAE,SAAS,QAAQ;AAC3B;",
4
+ "sourcesContent": ["import reducer from './reducer';\nimport { isLockAvailable, getPendingLockRequests } from './selectors';\n\nexport default function createLocks() {\n\tlet state = reducer( undefined, { type: '@@INIT' } );\n\n\tfunction processPendingLockRequests() {\n\t\tfor ( const request of getPendingLockRequests( state ) ) {\n\t\t\tconst { store, path, exclusive, notifyAcquired } = request;\n\t\t\tif ( isLockAvailable( state, store, path, { exclusive } ) ) {\n\t\t\t\tconst lock = { store, path, exclusive };\n\t\t\t\tstate = reducer( state, {\n\t\t\t\t\ttype: 'GRANT_LOCK_REQUEST',\n\t\t\t\t\tlock,\n\t\t\t\t\trequest,\n\t\t\t\t} );\n\t\t\t\tnotifyAcquired( lock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction acquire( store, path, exclusive ) {\n\t\treturn new Promise( ( resolve ) => {\n\t\t\tstate = reducer( state, {\n\t\t\t\ttype: 'ENQUEUE_LOCK_REQUEST',\n\t\t\t\trequest: { store, path, exclusive, notifyAcquired: resolve },\n\t\t\t} );\n\t\t\tprocessPendingLockRequests();\n\t\t} );\n\t}\n\tfunction release( lock ) {\n\t\tstate = reducer( state, {\n\t\t\ttype: 'RELEASE_LOCK',\n\t\t\tlock,\n\t\t} );\n\t\tprocessPendingLockRequests();\n\t}\n\n\treturn { acquire, release };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,uBAAwD;AAEzC,SAAR,cAA+B;AACrC,MAAI,YAAQ,eAAAA,SAAS,QAAW,EAAE,MAAM,SAAS,CAAE;AAEnD,WAAS,6BAA6B;AACrC,eAAY,eAAW,yCAAwB,KAAM,GAAI;AACxD,YAAM,EAAE,OAAO,MAAM,WAAW,eAAe,IAAI;AACnD,cAAK,kCAAiB,OAAO,OAAO,MAAM,EAAE,UAAU,CAAE,GAAI;AAC3D,cAAM,OAAO,EAAE,OAAO,MAAM,UAAU;AACtC,oBAAQ,eAAAA,SAAS,OAAO;AAAA,UACvB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACD,CAAE;AACF,uBAAgB,IAAK;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AAEA,WAAS,QAAS,OAAO,MAAM,WAAY;AAC1C,WAAO,IAAI,QAAS,CAAE,YAAa;AAClC,kBAAQ,eAAAA,SAAS,OAAO;AAAA,QACvB,MAAM;AAAA,QACN,SAAS,EAAE,OAAO,MAAM,WAAW,gBAAgB,QAAQ;AAAA,MAC5D,CAAE;AACF,iCAA2B;AAAA,IAC5B,CAAE;AAAA,EACH;AACA,WAAS,QAAS,MAAO;AACxB,gBAAQ,eAAAA,SAAS,OAAO;AAAA,MACvB,MAAM;AAAA,MACN;AAAA,IACD,CAAE;AACF,+BAA2B;AAAA,EAC5B;AAEA,SAAO,EAAE,SAAS,QAAQ;AAC3B;",
6
6
  "names": ["reducer"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/locks/reducer.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { getNode, deepCopyLocksTreePath } from './utils';\n\nconst DEFAULT_STATE = {\n\trequests: [],\n\ttree: {\n\t\tlocks: [],\n\t\tchildren: {},\n\t},\n};\n\n/**\n * Reducer returning locks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport default function locks( state = DEFAULT_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ENQUEUE_LOCK_REQUEST': {\n\t\t\tconst { request } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: [ request, ...state.requests ],\n\t\t\t};\n\t\t}\n\t\tcase 'GRANT_LOCK_REQUEST': {\n\t\t\tconst { lock, request } = action;\n\t\t\tconst { store, path } = request;\n\t\t\tconst storePath = [ store, ...path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = [ ...node.locks, lock ];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: state.requests.filter( ( r ) => r !== request ),\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t\tcase 'RELEASE_LOCK': {\n\t\t\tconst { lock } = action;\n\t\t\tconst storePath = [ lock.store, ...lock.path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = node.locks.filter( ( l ) => l !== lock );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA+C;AAE/C,IAAM,gBAAgB;AAAA,EACrB,UAAU,CAAC;AAAA,EACX,MAAM;AAAA,IACL,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,EACZ;AACD;AAUe,SAAR,MAAwB,QAAQ,eAAe,QAAS;AAC9D,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK,wBAAwB;AAC5B,YAAM,EAAE,QAAQ,IAAI;AACpB,aAAO;AAAA,QACN,GAAG;AAAA,QACH,UAAU,CAAE,SAAS,GAAG,MAAM,QAAS;AAAA,MACxC;AAAA,IACD;AAAA,IACA,KAAK,sBAAsB;AAC1B,YAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,YAAM,EAAE,OAAO,KAAK,IAAI;AACxB,YAAM,YAAY,CAAE,OAAO,GAAG,IAAK;AAEnC,YAAM,cAAU,oCAAuB,MAAM,MAAM,SAAU;AAC7D,YAAM,WAAO,sBAAS,SAAS,SAAU;AACzC,WAAK,QAAQ,CAAE,GAAG,KAAK,OAAO,IAAK;AAEnC,aAAO;AAAA,QACN,GAAG;AAAA,QACH,UAAU,MAAM,SAAS,OAAQ,CAAE,MAAO,MAAM,OAAQ;AAAA,QACxD,MAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,KAAK,gBAAgB;AACpB,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,YAAY,CAAE,KAAK,OAAO,GAAG,KAAK,IAAK;AAE7C,YAAM,cAAU,oCAAuB,MAAM,MAAM,SAAU;AAC7D,YAAM,WAAO,sBAAS,SAAS,SAAU;AACzC,WAAK,QAAQ,KAAK,MAAM,OAAQ,CAAE,MAAO,MAAM,IAAK;AAEpD,aAAO;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;",
4
+ "sourcesContent": ["import { getNode, deepCopyLocksTreePath } from './utils';\n\nconst DEFAULT_STATE = {\n\trequests: [],\n\ttree: {\n\t\tlocks: [],\n\t\tchildren: {},\n\t},\n};\n\n/**\n * Reducer returning locks.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport default function locks( state = DEFAULT_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ENQUEUE_LOCK_REQUEST': {\n\t\t\tconst { request } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: [ request, ...state.requests ],\n\t\t\t};\n\t\t}\n\t\tcase 'GRANT_LOCK_REQUEST': {\n\t\t\tconst { lock, request } = action;\n\t\t\tconst { store, path } = request;\n\t\t\tconst storePath = [ store, ...path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = [ ...node.locks, lock ];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trequests: state.requests.filter( ( r ) => r !== request ),\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t\tcase 'RELEASE_LOCK': {\n\t\t\tconst { lock } = action;\n\t\t\tconst storePath = [ lock.store, ...lock.path ];\n\n\t\t\tconst newTree = deepCopyLocksTreePath( state.tree, storePath );\n\t\t\tconst node = getNode( newTree, storePath );\n\t\t\tnode.locks = node.locks.filter( ( l ) => l !== lock );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttree: newTree,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+C;AAE/C,IAAM,gBAAgB;AAAA,EACrB,UAAU,CAAC;AAAA,EACX,MAAM;AAAA,IACL,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,EACZ;AACD;AAUe,SAAR,MAAwB,QAAQ,eAAe,QAAS;AAC9D,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK,wBAAwB;AAC5B,YAAM,EAAE,QAAQ,IAAI;AACpB,aAAO;AAAA,QACN,GAAG;AAAA,QACH,UAAU,CAAE,SAAS,GAAG,MAAM,QAAS;AAAA,MACxC;AAAA,IACD;AAAA,IACA,KAAK,sBAAsB;AAC1B,YAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,YAAM,EAAE,OAAO,KAAK,IAAI;AACxB,YAAM,YAAY,CAAE,OAAO,GAAG,IAAK;AAEnC,YAAM,cAAU,oCAAuB,MAAM,MAAM,SAAU;AAC7D,YAAM,WAAO,sBAAS,SAAS,SAAU;AACzC,WAAK,QAAQ,CAAE,GAAG,KAAK,OAAO,IAAK;AAEnC,aAAO;AAAA,QACN,GAAG;AAAA,QACH,UAAU,MAAM,SAAS,OAAQ,CAAE,MAAO,MAAM,OAAQ;AAAA,QACxD,MAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,KAAK,gBAAgB;AACpB,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,YAAY,CAAE,KAAK,OAAO,GAAG,KAAK,IAAK;AAE7C,YAAM,cAAU,oCAAuB,MAAM,MAAM,SAAU;AAC7D,YAAM,WAAO,sBAAS,SAAS,SAAU;AACzC,WAAK,QAAQ,KAAK,MAAM,OAAQ,CAAE,MAAO,MAAM,IAAK;AAEpD,aAAO;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/locks/selectors.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport {\n\titerateDescendants,\n\titeratePath,\n\thasConflictingLock,\n\tgetNode,\n} from './utils';\n\nexport function getPendingLockRequests( state ) {\n\treturn state.requests;\n}\n\nexport function isLockAvailable( state, store, path, { exclusive } ) {\n\tconst storePath = [ store, ...path ];\n\tconst locks = state.tree;\n\n\t// Validate all parents and the node itself\n\tfor ( const node of iteratePath( locks, storePath ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, node.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// iteratePath terminates early if path is unreachable, let's\n\t// re-fetch the node and check it exists in the tree.\n\tconst node = getNode( locks, storePath );\n\tif ( ! node ) {\n\t\treturn true;\n\t}\n\n\t// Validate all nested nodes\n\tfor ( const descendant of iterateDescendants( node ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, descendant.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAKO;AAEA,SAAS,uBAAwB,OAAQ;AAC/C,SAAO,MAAM;AACd;AAEO,SAAS,gBAAiB,OAAO,OAAO,MAAM,EAAE,UAAU,GAAI;AACpE,QAAM,YAAY,CAAE,OAAO,GAAG,IAAK;AACnC,QAAM,QAAQ,MAAM;AAGpB,aAAYA,aAAQ,0BAAa,OAAO,SAAU,GAAI;AACrD,YAAK,iCAAoB,EAAE,UAAU,GAAGA,MAAK,KAAM,GAAI;AACtD,aAAO;AAAA,IACR;AAAA,EACD;AAIA,QAAM,WAAO,sBAAS,OAAO,SAAU;AACvC,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAGA,aAAY,kBAAc,iCAAoB,IAAK,GAAI;AACtD,YAAK,iCAAoB,EAAE,UAAU,GAAG,WAAW,KAAM,GAAI;AAC5D,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;",
4
+ "sourcesContent": ["import {\n\titerateDescendants,\n\titeratePath,\n\thasConflictingLock,\n\tgetNode,\n} from './utils';\n\nexport function getPendingLockRequests( state ) {\n\treturn state.requests;\n}\n\nexport function isLockAvailable( state, store, path, { exclusive } ) {\n\tconst storePath = [ store, ...path ];\n\tconst locks = state.tree;\n\n\t// Validate all parents and the node itself\n\tfor ( const node of iteratePath( locks, storePath ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, node.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// iteratePath terminates early if path is unreachable, let's\n\t// re-fetch the node and check it exists in the tree.\n\tconst node = getNode( locks, storePath );\n\tif ( ! node ) {\n\t\treturn true;\n\t}\n\n\t// Validate all nested nodes\n\tfor ( const descendant of iterateDescendants( node ) ) {\n\t\tif ( hasConflictingLock( { exclusive }, descendant.locks ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKO;AAEA,SAAS,uBAAwB,OAAQ;AAC/C,SAAO,MAAM;AACd;AAEO,SAAS,gBAAiB,OAAO,OAAO,MAAM,EAAE,UAAU,GAAI;AACpE,QAAM,YAAY,CAAE,OAAO,GAAG,IAAK;AACnC,QAAM,QAAQ,MAAM;AAGpB,aAAYA,aAAQ,0BAAa,OAAO,SAAU,GAAI;AACrD,YAAK,iCAAoB,EAAE,UAAU,GAAGA,MAAK,KAAM,GAAI;AACtD,aAAO;AAAA,IACR;AAAA,EACD;AAIA,QAAM,WAAO,sBAAS,OAAO,SAAU;AACvC,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAGA,aAAY,kBAAc,iCAAoB,IAAK,GAAI;AACtD,YAAK,iCAAoB,EAAE,UAAU,GAAG,WAAW,KAAM,GAAI;AAC5D,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;",
6
6
  "names": ["node"]
7
7
  }
@@ -44,6 +44,7 @@ module.exports = __toCommonJS(private_actions_exports);
44
44
  var import_api_fetch = __toESM(require("@wordpress/api-fetch"));
45
45
  var import_notices = require("@wordpress/notices");
46
46
  var import_block_editor = require("@wordpress/block-editor");
47
+ var import_html_entities = require("@wordpress/html-entities");
47
48
  var import_i18n = require("@wordpress/i18n");
48
49
  var import_name = require("./name.cjs");
49
50
  var import_sync = require("./sync.cjs");
@@ -210,7 +211,9 @@ var saveDirtyEntities = ({
210
211
  });
211
212
  }
212
213
  pendingSavedRecords.push(
213
- registry.dispatch(import_name.STORE_NAME).saveEditedEntityRecord(kind, name, key)
214
+ registry.dispatch(import_name.STORE_NAME).saveEditedEntityRecord(kind, name, key, {
215
+ throwOnError: true
216
+ }).catch(ensureError)
214
217
  );
215
218
  }
216
219
  });
@@ -220,19 +223,34 @@ var saveDirtyEntities = ({
220
223
  "root",
221
224
  "site",
222
225
  void 0,
223
- siteItemsToSave
224
- )
226
+ siteItemsToSave,
227
+ {
228
+ throwOnError: true
229
+ }
230
+ ).catch(ensureError)
225
231
  );
226
232
  }
227
233
  registry.dispatch(import_block_editor.store).__unstableMarkLastChangeAsPersistent();
228
- Promise.all(pendingSavedRecords).then(async (values) => {
234
+ return Promise.all(pendingSavedRecords).then(async (values) => {
229
235
  if (onSave) {
230
236
  await onSave();
231
237
  }
232
238
  return values;
233
239
  }).then((values) => {
234
- if (values.some((value) => typeof value === "undefined")) {
235
- registry.dispatch(import_notices.store).createErrorNotice((0, import_i18n.__)("Saving failed."));
240
+ const errors = values.filter((v) => v instanceof Error);
241
+ if (errors.length) {
242
+ const firstMessage = errors.find(
243
+ (e) => e.message
244
+ )?.message;
245
+ registry.dispatch(import_notices.store).createErrorNotice(
246
+ (0, import_html_entities.decodeEntities)(
247
+ firstMessage || (0, import_i18n.__)("Saving failed.")
248
+ ),
249
+ {
250
+ type: "snackbar",
251
+ id: saveNoticeId
252
+ }
253
+ );
236
254
  } else {
237
255
  registry.dispatch(import_notices.store).createSuccessNotice(
238
256
  successNoticeContent || (0, import_i18n.__)("Site updated."),
@@ -251,9 +269,38 @@ var saveDirtyEntities = ({
251
269
  }
252
270
  }).catch(
253
271
  (error) => registry.dispatch(import_notices.store).createErrorNotice(
254
- `${(0, import_i18n.__)("Saving failed.")} ${error}`
272
+ (0, import_html_entities.decodeEntities)(
273
+ error?.message || (0, import_i18n.__)("Saving failed.")
274
+ ),
275
+ {
276
+ type: "snackbar",
277
+ id: saveNoticeId
278
+ }
255
279
  )
256
280
  );
281
+ function ensureError(error) {
282
+ if (error instanceof Error) {
283
+ return error;
284
+ }
285
+ let message;
286
+ if (!error) {
287
+ } else if (typeof error.message === "string") {
288
+ message = error.message;
289
+ } else if (typeof error === "string") {
290
+ message = error;
291
+ } else if (
292
+ // Only consider own method, lest we erroneously end up calling
293
+ // `Object#toString` at the end of the prototype chain, thereby
294
+ // returning `"[object Object]"`.
295
+ Object.hasOwn(error, "toString") && typeof error.toString === "function"
296
+ ) {
297
+ const result = error.toString();
298
+ if (typeof result === "string") {
299
+ message = result;
300
+ }
301
+ }
302
+ return new Error(message, { cause: error });
303
+ }
257
304
  };
258
305
  // Annotate the CommonJS export names for ESM import in node:
259
306
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/private-actions.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getSyncManager, hasSyncManager } from './sync';\n\n/**\n * Returns an action object used in signalling that the registered post meta\n * fields for a post type have been received.\n *\n * @param {string} postType Post type slug.\n * @param {Object} registeredPostMeta Registered post meta.\n *\n * @return {Object} Action object.\n */\nexport function receiveRegisteredPostMeta( postType, registeredPostMeta ) {\n\treturn {\n\t\ttype: 'RECEIVE_REGISTERED_POST_META',\n\t\tpostType,\n\t\tregisteredPostMeta,\n\t};\n}\n\n/**\n * @typedef {Object} Modifier\n * @property {string} [type] - The type of modifier.\n * @property {Object} [args] - The arguments of the modifier.\n */\n\n/**\n * @typedef {Object} Edits\n * @property {string} [src] - The URL of the media item.\n * @property {Modifier[]} [modifiers] - The modifiers to apply to the media item.\n */\n\n/**\n * Duplicates a media (attachment) entity record and, optionally, modifies it.\n *\n * @param {string} recordId Entity record ID.\n * @param {Edits} edits Edits to apply to the record.\n * @param {Object} options Options object.\n * @param {Function} options.__unstableFetch Custom fetch function.\n * @param {boolean} options.throwOnError Whether to throw an error if the request fails.\n *\n * @return {Promise} Promise resolving to the updated record.\n */\nexport const editMediaEntity =\n\t(\n\t\trecordId,\n\t\tedits = {},\n\t\t{ __unstableFetch = apiFetch, throwOnError = false } = {}\n\t) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tif ( ! recordId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = 'postType';\n\t\tconst name = 'attachment';\n\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.kind === kind && config.name === name\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, recordId ],\n\t\t\t{ exclusive: true }\n\t\t);\n\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t} );\n\n\t\t\ttry {\n\t\t\t\tconst path = `${ entityConfig.baseURL }/${ recordId }/edit`;\n\t\t\t\tconst newRecord = await __unstableFetch( {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( newRecord ) {\n\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnewRecord,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tupdatedRecord = newRecord;\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\terror = e;\n\t\t\t\thasError = true;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\terror,\n\t\t\t} );\n\n\t\t\tif ( hasError && throwOnError ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn updatedRecord;\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive editor settings.\n *\n * @param {Object} settings Editor settings object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorSettings( settings ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_SETTINGS',\n\t\tsettings,\n\t};\n}\n\n/**\n * Returns an action object used to receive editor assets.\n *\n * @param {Object} assets Editor assets object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorAssets( assets ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_ASSETS',\n\t\tassets,\n\t};\n}\n\n/**\n * Returns an action object used to set whether collaboration is supported.\n * When set to false, also disconnects all sync entities.\n *\n * @param {boolean} supported Whether collaboration is supported.\n *\n * @return {Object} Action object.\n */\nexport const setCollaborationSupported =\n\t( supported ) =>\n\t( { dispatch } ) => {\n\t\tdispatch( { type: 'SET_COLLABORATION_SUPPORTED', supported } );\n\t\tif ( ! supported && hasSyncManager() ) {\n\t\t\tgetSyncManager().unloadAll();\n\t\t\tdispatch.__unstableNotifySyncUndoManagerChange( {\n\t\t\t\thasUndo: false,\n\t\t\t\thasRedo: false,\n\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive view config.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object} config View config object.\n *\n * @return {Object} Action object.\n */\nexport function receiveViewConfig( kind, name, config ) {\n\treturn {\n\t\ttype: 'RECEIVE_VIEW_CONFIG',\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\n/**\n * Returns an action object used to notify core-data that the sync undo manager\n * state changed outside of the core-data reducer, e.g. The Yjs UndoManager\n * captured an undo level.\n *\n * @param {Object} state The sync undo stack state.\n * @param {boolean} state.hasRedo Whether there are changes to redo.\n * @param {boolean} state.hasUndo Whether there are changes to undo.\n *\n * @return {Object} Action object.\n */\nexport function __unstableNotifySyncUndoManagerChange( state ) {\n\treturn {\n\t\ttype: 'SYNC_UNDO_MANAGER_CHANGE',\n\t\t...state,\n\t};\n}\n\n/**\n * Returns an action object used to set the sync connection status for an entity or collection.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {number|string|null} key The entity key, or null for collections.\n * @param {Object|null} status The connection state object or null on unload.\n *\n * @return {Object} Action object.\n */\nexport function setSyncConnectionStatus( kind, name, key, status ) {\n\tif ( ! status ) {\n\t\treturn {\n\t\t\ttype: 'CLEAR_SYNC_CONNECTION_STATUS',\n\t\t\tkind,\n\t\t\tname,\n\t\t\tkey,\n\t\t};\n\t}\n\n\treturn {\n\t\ttype: 'SET_SYNC_CONNECTION_STATUS',\n\t\tkind,\n\t\tname,\n\t\tkey,\n\t\tstatus,\n\t};\n}\n\n/**\n * Save entity records marked as dirty.\n *\n * @param {Object} options Options for the action.\n * @param {Function} [options.onSave] Callback when saving happens.\n * @param {object[]} [options.dirtyEntityRecords] Array of dirty entities.\n * @param {object[]} [options.entitiesToSkip] Array of entities to skip saving.\n * @param {Function} [options.close] Callback when the actions is called. It should be consolidated with `onSave`.\n * @param {string} [options.successNoticeContent] Optional custom success notice content. Defaults to 'Site updated.'.\n */\nexport const saveDirtyEntities =\n\t( {\n\t\tonSave,\n\t\tdirtyEntityRecords = [],\n\t\tentitiesToSkip = [],\n\t\tclose,\n\t\tsuccessNoticeContent,\n\t} = {} ) =>\n\t( { registry } ) => {\n\t\tconst PUBLISH_ON_SAVE_ENTITIES = [\n\t\t\t{ kind: 'postType', name: 'wp_navigation' },\n\t\t];\n\t\tconst saveNoticeId = 'site-editor-save-success';\n\t\tconst homeUrl = registry\n\t\t\t.select( STORE_NAME )\n\t\t\t.getEntityRecord( 'root', '__unstableBase' )?.home;\n\t\tregistry.dispatch( noticesStore ).removeNotice( saveNoticeId );\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! entitiesToSkip.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tclose?.( entitiesToSave );\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t\t.editEntityRecord( kind, name, key, {\n\t\t\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t\t.saveEditedEntityRecord( kind, name, key )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t.__experimentalSaveSpecifiedEntityEdits(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'site',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tsiteItemsToSave\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.__unstableMarkLastChangeAsPersistent();\n\n\t\tPromise.all( pendingSavedRecords )\n\t\t\t.then( async ( values ) => {\n\t\t\t\tif ( onSave ) {\n\t\t\t\t\tawait onSave();\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t} )\n\t\t\t.then( ( values ) => {\n\t\t\t\tif (\n\t\t\t\t\tvalues.some( ( value ) => typeof value === 'undefined' )\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createErrorNotice( __( 'Saving failed.' ) );\n\t\t\t\t} else {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createSuccessNotice(\n\t\t\t\t\t\t\tsuccessNoticeContent || __( 'Site updated.' ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'View site' ),\n\t\t\t\t\t\t\t\t\t\turl: homeUrl,\n\t\t\t\t\t\t\t\t\t\topenInNewTab: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t`${ __( 'Saving failed.' ) } ${ error }`\n\t\t\t\t\t)\n\t\t\t);\n\t};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAqB;AACrB,qBAAsC;AACtC,0BAA0C;AAC1C,kBAAmB;AAKnB,kBAA2B;AAC3B,kBAA+C;AAWxC,SAAS,0BAA2B,UAAU,oBAAqB;AACzE,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAyBO,IAAM,kBACZ,CACC,UACA,QAAQ,CAAC,GACT,EAAE,kBAAkB,iBAAAA,SAAU,eAAe,MAAM,IAAI,CAAC,MAEzD,OAAQ,EAAE,UAAU,cAAc,MAAO;AACxC,MAAK,CAAE,UAAW;AACjB;AAAA,EACD;AAEA,QAAM,OAAO;AACb,QAAM,OAAO;AAEb,QAAM,UAAU,MAAM,cAAc,kBAAmB,IAAK;AAC5D,QAAM,eAAe,QAAQ;AAAA,IAC5B,CAAE,WAAY,OAAO,SAAS,QAAQ,OAAO,SAAS;AAAA,EACvD;AAEA,MAAK,CAAE,cAAe;AACrB;AAAA,EACD;AAEA,QAAM,OAAO,MAAM,SAAS;AAAA,IAC3B;AAAA,IACA,CAAE,YAAY,WAAW,MAAM,MAAM,QAAS;AAAA,IAC9C,EAAE,WAAW,KAAK;AAAA,EACnB;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW;AAEf,MAAI;AACH,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAI;AACH,YAAM,OAAO,GAAI,aAAa,OAAQ,IAAK,QAAS;AACpD,YAAM,YAAY,MAAM,gBAAiB;AAAA,QACxC;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,GAAG;AAAA,QACJ;AAAA,MACD,CAAE;AAEF,UAAK,WAAY;AAChB,iBAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,MACjB;AAAA,IACD,SAAU,GAAI;AACb,cAAQ;AACR,iBAAW;AAAA,IACZ;AAEA,aAAU;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,QAAK,YAAY,cAAe;AAC/B,YAAM;AAAA,IACP;AACA,WAAO;AAAA,EACR,UAAE;AACD,aAAS,2BAA4B,IAAK;AAAA,EAC3C;AACD;AASM,SAAS,sBAAuB,UAAW;AACjD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;AASO,SAAS,oBAAqB,QAAS;AAC7C,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;AAUO,IAAM,4BACZ,CAAE,cACF,CAAE,EAAE,SAAS,MAAO;AACnB,WAAU,EAAE,MAAM,+BAA+B,UAAU,CAAE;AAC7D,MAAK,CAAE,iBAAa,4BAAe,GAAI;AACtC,oCAAe,EAAE,UAAU;AAC3B,aAAS,sCAAuC;AAAA,MAC/C,SAAS;AAAA,MACT,SAAS;AAAA,IACV,CAAE;AAAA,EACH;AACD;AAWM,SAAS,kBAAmB,MAAM,MAAM,QAAS;AACvD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAaO,SAAS,sCAAuC,OAAQ;AAC9D,SAAO;AAAA,IACN,MAAM;AAAA,IACN,GAAG;AAAA,EACJ;AACD;AAYO,SAAS,wBAAyB,MAAM,MAAM,KAAK,QAAS;AAClE,MAAK,CAAE,QAAS;AACf,WAAO;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAYO,IAAM,oBACZ,CAAE;AAAA,EACD;AAAA,EACA,qBAAqB,CAAC;AAAA,EACtB,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA;AACD,IAAI,CAAC,MACL,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,2BAA2B;AAAA,IAChC,EAAE,MAAM,YAAY,MAAM,gBAAgB;AAAA,EAC3C;AACA,QAAM,eAAe;AACrB,QAAM,UAAU,SACd,OAAQ,sBAAW,EACnB,gBAAiB,QAAQ,gBAAiB,GAAG;AAC/C,WAAS,SAAU,eAAAC,KAAa,EAAE,aAAc,YAAa;AAC7D,QAAM,iBAAiB,mBAAmB;AAAA,IACzC,CAAE,EAAE,MAAM,MAAM,KAAK,SAAS,MAAO;AACpC,aAAO,CAAE,eAAe;AAAA,QACvB,CAAE,QACD,IAAI,SAAS,QACb,IAAI,SAAS,QACb,IAAI,QAAQ,OACZ,IAAI,aAAa;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AACA,UAAS,cAAe;AACxB,QAAM,kBAAkB,CAAC;AACzB,QAAM,sBAAsB,CAAC;AAC7B,iBAAe,QAAS,CAAE,EAAE,MAAM,MAAM,KAAK,SAAS,MAAO;AAC5D,QAAK,WAAW,QAAQ,WAAW,MAAO;AACzC,sBAAgB,KAAM,QAAS;AAAA,IAChC,OAAO;AACN,UACC,yBAAyB;AAAA,QACxB,CAAE,kBACD,cAAc,SAAS,QACvB,cAAc,SAAS;AAAA,MACzB,GACC;AACD,iBACE,SAAU,sBAAW,EACrB,iBAAkB,MAAM,MAAM,KAAK;AAAA,UACnC,QAAQ;AAAA,QACT,CAAE;AAAA,MACJ;AAEA,0BAAoB;AAAA,QACnB,SACE,SAAU,sBAAW,EACrB,uBAAwB,MAAM,MAAM,GAAI;AAAA,MAC3C;AAAA,IACD;AAAA,EACD,CAAE;AACF,MAAK,gBAAgB,QAAS;AAC7B,wBAAoB;AAAA,MACnB,SACE,SAAU,sBAAW,EACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACF;AAAA,EACD;AACA,WACE,SAAU,oBAAAC,KAAiB,EAC3B,qCAAqC;AAEvC,UAAQ,IAAK,mBAAoB,EAC/B,KAAM,OAAQ,WAAY;AAC1B,QAAK,QAAS;AACb,YAAM,OAAO;AAAA,IACd;AACA,WAAO;AAAA,EACR,CAAE,EACD,KAAM,CAAE,WAAY;AACpB,QACC,OAAO,KAAM,CAAE,UAAW,OAAO,UAAU,WAAY,GACtD;AACD,eACE,SAAU,eAAAD,KAAa,EACvB,sBAAmB,gBAAI,gBAAiB,CAAE;AAAA,IAC7C,OAAO;AACN,eACE,SAAU,eAAAA,KAAa,EACvB;AAAA,QACA,4BAAwB,gBAAI,eAAgB;AAAA,QAC5C;AAAA,UACC,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,SAAS;AAAA,YACR;AAAA,cACC,WAAO,gBAAI,WAAY;AAAA,cACvB,KAAK;AAAA,cACL,cAAc;AAAA,YACf;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACF;AAAA,EACD,CAAE,EACD;AAAA,IAAO,CAAE,UACT,SACE,SAAU,eAAAA,KAAa,EACvB;AAAA,MACA,OAAI,gBAAI,gBAAiB,CAAE,IAAK,KAAM;AAAA,IACvC;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import apiFetch from '@wordpress/api-fetch';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { STORE_NAME } from './name';\nimport { getSyncManager, hasSyncManager } from './sync';\n\n/**\n * Returns an action object used in signalling that the registered post meta\n * fields for a post type have been received.\n *\n * @param {string} postType Post type slug.\n * @param {Object} registeredPostMeta Registered post meta.\n *\n * @return {Object} Action object.\n */\nexport function receiveRegisteredPostMeta( postType, registeredPostMeta ) {\n\treturn {\n\t\ttype: 'RECEIVE_REGISTERED_POST_META',\n\t\tpostType,\n\t\tregisteredPostMeta,\n\t};\n}\n\n/**\n * @typedef {Object} Modifier\n * @property {string} [type] - The type of modifier.\n * @property {Object} [args] - The arguments of the modifier.\n */\n\n/**\n * @typedef {Object} Edits\n * @property {string} [src] - The URL of the media item.\n * @property {Modifier[]} [modifiers] - The modifiers to apply to the media item.\n */\n\n/**\n * Duplicates a media (attachment) entity record and, optionally, modifies it.\n *\n * @param {string} recordId Entity record ID.\n * @param {Edits} edits Edits to apply to the record.\n * @param {Object} options Options object.\n * @param {Function} options.__unstableFetch Custom fetch function.\n * @param {boolean} options.throwOnError Whether to throw an error if the request fails.\n *\n * @return {Promise} Promise resolving to the updated record.\n */\nexport const editMediaEntity =\n\t(\n\t\trecordId,\n\t\tedits = {},\n\t\t{ __unstableFetch = apiFetch, throwOnError = false } = {}\n\t) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tif ( ! recordId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = 'postType';\n\t\tconst name = 'attachment';\n\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.kind === kind && config.name === name\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, recordId ],\n\t\t\t{ exclusive: true }\n\t\t);\n\n\t\tlet updatedRecord;\n\t\tlet error;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_START',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t} );\n\n\t\t\ttry {\n\t\t\t\tconst path = `${ entityConfig.baseURL }/${ recordId }/edit`;\n\t\t\t\tconst newRecord = await __unstableFetch( {\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( newRecord ) {\n\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnewRecord,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tupdatedRecord = newRecord;\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\terror = e;\n\t\t\t\thasError = true;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SAVE_ENTITY_RECORD_FINISH',\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordId,\n\t\t\t\terror,\n\t\t\t} );\n\n\t\t\tif ( hasError && throwOnError ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn updatedRecord;\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive editor settings.\n *\n * @param {Object} settings Editor settings object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorSettings( settings ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_SETTINGS',\n\t\tsettings,\n\t};\n}\n\n/**\n * Returns an action object used to receive editor assets.\n *\n * @param {Object} assets Editor assets object.\n *\n * @return {Object} Action object.\n */\nexport function receiveEditorAssets( assets ) {\n\treturn {\n\t\ttype: 'RECEIVE_EDITOR_ASSETS',\n\t\tassets,\n\t};\n}\n\n/**\n * Returns an action object used to set whether collaboration is supported.\n * When set to false, also disconnects all sync entities.\n *\n * @param {boolean} supported Whether collaboration is supported.\n *\n * @return {Object} Action object.\n */\nexport const setCollaborationSupported =\n\t( supported ) =>\n\t( { dispatch } ) => {\n\t\tdispatch( { type: 'SET_COLLABORATION_SUPPORTED', supported } );\n\t\tif ( ! supported && hasSyncManager() ) {\n\t\t\tgetSyncManager().unloadAll();\n\t\t\tdispatch.__unstableNotifySyncUndoManagerChange( {\n\t\t\t\thasUndo: false,\n\t\t\t\thasRedo: false,\n\t\t\t} );\n\t\t}\n\t};\n\n/**\n * Returns an action object used to receive view config.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object} config View config object.\n *\n * @return {Object} Action object.\n */\nexport function receiveViewConfig( kind, name, config ) {\n\treturn {\n\t\ttype: 'RECEIVE_VIEW_CONFIG',\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\n/**\n * Returns an action object used to notify core-data that the sync undo manager\n * state changed outside of the core-data reducer, e.g. The Yjs UndoManager\n * captured an undo level.\n *\n * @param {Object} state The sync undo stack state.\n * @param {boolean} state.hasRedo Whether there are changes to redo.\n * @param {boolean} state.hasUndo Whether there are changes to undo.\n *\n * @return {Object} Action object.\n */\nexport function __unstableNotifySyncUndoManagerChange( state ) {\n\treturn {\n\t\ttype: 'SYNC_UNDO_MANAGER_CHANGE',\n\t\t...state,\n\t};\n}\n\n/**\n * Returns an action object used to set the sync connection status for an entity or collection.\n *\n * @param {string} kind Kind of the entity.\n * @param {string} name Name of the entity.\n * @param {number|string|null} key The entity key, or null for collections.\n * @param {Object|null} status The connection state object or null on unload.\n *\n * @return {Object} Action object.\n */\nexport function setSyncConnectionStatus( kind, name, key, status ) {\n\tif ( ! status ) {\n\t\treturn {\n\t\t\ttype: 'CLEAR_SYNC_CONNECTION_STATUS',\n\t\t\tkind,\n\t\t\tname,\n\t\t\tkey,\n\t\t};\n\t}\n\n\treturn {\n\t\ttype: 'SET_SYNC_CONNECTION_STATUS',\n\t\tkind,\n\t\tname,\n\t\tkey,\n\t\tstatus,\n\t};\n}\n\n/**\n * Save entity records marked as dirty.\n *\n * @param {Object} options Options for the action.\n * @param {Function} [options.onSave] Callback when saving happens.\n * @param {object[]} [options.dirtyEntityRecords] Array of dirty entities.\n * @param {object[]} [options.entitiesToSkip] Array of entities to skip saving.\n * @param {Function} [options.close] Callback when the actions is called. It should be consolidated with `onSave`.\n * @param {string} [options.successNoticeContent] Optional custom success notice content. Defaults to 'Site updated.'.\n */\nexport const saveDirtyEntities =\n\t( {\n\t\tonSave,\n\t\tdirtyEntityRecords = [],\n\t\tentitiesToSkip = [],\n\t\tclose,\n\t\tsuccessNoticeContent,\n\t} = {} ) =>\n\t( { registry } ) => {\n\t\tconst PUBLISH_ON_SAVE_ENTITIES = [\n\t\t\t{ kind: 'postType', name: 'wp_navigation' },\n\t\t];\n\t\tconst saveNoticeId = 'site-editor-save-success';\n\t\tconst homeUrl = registry\n\t\t\t.select( STORE_NAME )\n\t\t\t.getEntityRecord( 'root', '__unstableBase' )?.home;\n\t\tregistry.dispatch( noticesStore ).removeNotice( saveNoticeId );\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! entitiesToSkip.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tclose?.( entitiesToSave );\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t\t.editEntityRecord( kind, name, key, {\n\t\t\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t\t.saveEditedEntityRecord( kind, name, key, {\n\t\t\t\t\t\t\tthrowOnError: true,\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.catch( ensureError )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t.__experimentalSaveSpecifiedEntityEdits(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'site',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tsiteItemsToSave,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthrowOnError: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t\t.catch( ensureError )\n\t\t\t);\n\t\t}\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.__unstableMarkLastChangeAsPersistent();\n\n\t\treturn Promise.all( pendingSavedRecords )\n\t\t\t.then( async ( values ) => {\n\t\t\t\tif ( onSave ) {\n\t\t\t\t\tawait onSave();\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t} )\n\t\t\t.then( ( values ) => {\n\t\t\t\tconst errors = values.filter( ( v ) => v instanceof Error );\n\t\t\t\tif ( errors.length ) {\n\t\t\t\t\tconst firstMessage = errors.find(\n\t\t\t\t\t\t( e ) => e.message\n\t\t\t\t\t)?.message;\n\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t\tdecodeEntities(\n\t\t\t\t\t\t\t\tfirstMessage || __( 'Saving failed.' )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createSuccessNotice(\n\t\t\t\t\t\t\tsuccessNoticeContent || __( 'Site updated.' ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'View site' ),\n\t\t\t\t\t\t\t\t\t\turl: homeUrl,\n\t\t\t\t\t\t\t\t\t\topenInNewTab: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\tdecodeEntities(\n\t\t\t\t\t\t\terror?.message || __( 'Saving failed.' )\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t);\n\n\t\tfunction ensureError( error ) {\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\t// Expect certain errors to be plain objects with a `message`\n\t\t\t// property, such as those thrown by `apiFetch`. Otherwise, do our\n\t\t\t// best to infer a message via duck typing.\n\t\t\tlet message;\n\t\t\tif ( ! error ) {\n\t\t\t} else if ( typeof error.message === 'string' ) {\n\t\t\t\tmessage = error.message;\n\t\t\t} else if ( typeof error === 'string' ) {\n\t\t\t\tmessage = error;\n\t\t\t} else if (\n\t\t\t\t// Only consider own method, lest we erroneously end up calling\n\t\t\t\t// `Object#toString` at the end of the prototype chain, thereby\n\t\t\t\t// returning `\"[object Object]\"`.\n\t\t\t\tObject.hasOwn( error, 'toString' ) &&\n\t\t\t\ttypeof error.toString === 'function'\n\t\t\t) {\n\t\t\t\tconst result = error.toString();\n\t\t\t\tif ( typeof result === 'string' ) {\n\t\t\t\t\tmessage = result;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn new Error( message, { cause: error } );\n\t\t}\n\t};\n"],
5
+ "mappings": "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",
6
6
  "names": ["apiFetch", "noticesStore", "blockEditorStore"]
7
7
  }
@@ -51,6 +51,9 @@ var lockedApis = {
51
51
  useEntitiesSavedStatesIsDirty: import_use_is_dirty.useIsDirty,
52
52
  useEntityRecordsWithPermissions: import_use_entity_records.useEntityRecordsWithPermissions,
53
53
  RECEIVE_INTERMEDIATE_RESULTS: import_utils.RECEIVE_INTERMEDIATE_RESULTS,
54
+ CRDT_AUTOSAVE_SNAPSHOT_KEY: import_sync.CRDT_AUTOSAVE_SNAPSHOT_KEY,
55
+ entityContainsSnapshot: import_sync.entityContainsSnapshot,
56
+ getEntitySnapshot: import_sync.getEntitySnapshot,
54
57
  retrySyncConnection: import_sync.retrySyncConnection,
55
58
  useActiveCollaborators: import_use_post_editor_awareness_state.useActiveCollaborators,
56
59
  useResolvedSelection: import_use_post_editor_awareness_state.useResolvedSelection,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/private-apis.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { useEntityRecordsWithPermissions } from './hooks/use-entity-records';\nimport { RECEIVE_INTERMEDIATE_RESULTS } from './utils';\nimport {\n\tuseActiveCollaborators,\n\tuseResolvedSelection,\n\tuseOnCollaboratorJoin,\n\tuseOnCollaboratorLeave,\n\tuseOnPostSave,\n} from './hooks/use-post-editor-awareness-state';\nimport { getTemplateInfo } from './utils/get-template-info';\nimport { getTemplatePartIcon } from './utils/get-template-part-icon';\nimport {\n\tEntitiesSavedStatesExtensible,\n\tdefault as EntitiesSavedStates,\n} from './components/entities-saved-states';\nimport { useIsDirty as useEntitiesSavedStatesIsDirty } from './components/entities-saved-states/hooks/use-is-dirty';\nimport { lock } from './lock-unlock';\nimport { retrySyncConnection } from './sync';\nimport {\n\tSelectionType,\n\tSelectionDirection,\n} from './utils/crdt-user-selections';\n\nconst lockedApis = {\n\tEntitiesSavedStates,\n\tEntitiesSavedStatesExtensible,\n\tgetTemplateInfo,\n\tgetTemplatePartIcon,\n\tuseEntitiesSavedStatesIsDirty,\n\tuseEntityRecordsWithPermissions,\n\tRECEIVE_INTERMEDIATE_RESULTS,\n\tretrySyncConnection,\n\tuseActiveCollaborators,\n\tuseResolvedSelection,\n\tuseOnCollaboratorJoin,\n\tuseOnCollaboratorLeave,\n\tuseOnPostSave,\n\tSelectionType,\n\tSelectionDirection,\n};\n\nexport type CoreDataPrivateApis = typeof lockedApis;\n\nexport const privateApis = {};\nlock( privateApis, lockedApis );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,gCAAgD;AAChD,mBAA6C;AAC7C,6CAMO;AACP,+BAAgC;AAChC,oCAAoC;AACpC,mCAGO;AACP,0BAA4D;AAC5D,yBAAqB;AACrB,kBAAoC;AACpC,kCAGO;AAEP,IAAM,aAAa;AAAA,EAClB,kDAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAIO,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa,UAAW;",
4
+ "sourcesContent": ["import { useEntityRecordsWithPermissions } from './hooks/use-entity-records';\nimport { RECEIVE_INTERMEDIATE_RESULTS } from './utils';\nimport {\n\tuseActiveCollaborators,\n\tuseResolvedSelection,\n\tuseOnCollaboratorJoin,\n\tuseOnCollaboratorLeave,\n\tuseOnPostSave,\n} from './hooks/use-post-editor-awareness-state';\nimport { getTemplateInfo } from './utils/get-template-info';\nimport { getTemplatePartIcon } from './utils/get-template-part-icon';\nimport {\n\tEntitiesSavedStatesExtensible,\n\tdefault as EntitiesSavedStates,\n} from './components/entities-saved-states';\nimport { useIsDirty as useEntitiesSavedStatesIsDirty } from './components/entities-saved-states/hooks/use-is-dirty';\nimport { lock } from './lock-unlock';\nimport {\n\tCRDT_AUTOSAVE_SNAPSHOT_KEY,\n\tentityContainsSnapshot,\n\tgetEntitySnapshot,\n\tretrySyncConnection,\n} from './sync';\nimport {\n\tSelectionType,\n\tSelectionDirection,\n} from './utils/crdt-user-selections';\n\nconst lockedApis = {\n\tEntitiesSavedStates,\n\tEntitiesSavedStatesExtensible,\n\tgetTemplateInfo,\n\tgetTemplatePartIcon,\n\tuseEntitiesSavedStatesIsDirty,\n\tuseEntityRecordsWithPermissions,\n\tRECEIVE_INTERMEDIATE_RESULTS,\n\tCRDT_AUTOSAVE_SNAPSHOT_KEY,\n\tentityContainsSnapshot,\n\tgetEntitySnapshot,\n\tretrySyncConnection,\n\tuseActiveCollaborators,\n\tuseResolvedSelection,\n\tuseOnCollaboratorJoin,\n\tuseOnCollaboratorLeave,\n\tuseOnPostSave,\n\tSelectionType,\n\tSelectionDirection,\n};\n\nexport type CoreDataPrivateApis = typeof lockedApis;\n\nexport const privateApis = {};\nlock( privateApis, lockedApis );\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAgD;AAChD,mBAA6C;AAC7C,6CAMO;AACP,+BAAgC;AAChC,oCAAoC;AACpC,mCAGO;AACP,0BAA4D;AAC5D,yBAAqB;AACrB,kBAKO;AACP,kCAGO;AAEP,IAAM,aAAa;AAAA,EAClB,kDAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAIO,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa,UAAW;",
6
6
  "names": ["EntitiesSavedStates", "useEntitiesSavedStatesIsDirty"]
7
7
  }
@@ -35,6 +35,7 @@ __export(private_selectors_exports, {
35
35
  getEditorSettings: () => getEditorSettings,
36
36
  getEntityRecordPermissions: () => getEntityRecordPermissions,
37
37
  getEntityRecordsPermissions: () => getEntityRecordsPermissions,
38
+ getEntitySyncConnectionStatus: () => getEntitySyncConnectionStatus,
38
39
  getHomePage: () => getHomePage,
39
40
  getNavigationFallbackId: () => getNavigationFallbackId,
40
41
  getPostsPageId: () => getPostsPageId,
@@ -237,6 +238,9 @@ function getSyncConnectionStatus(state) {
237
238
  }
238
239
  return coalesced;
239
240
  }
241
+ function getEntitySyncConnectionStatus(state, kind, name, recordId) {
242
+ return state.syncConnectionStatuses?.[`${kind}/${name}:${recordId}`];
243
+ }
240
244
  // Annotate the CommonJS export names for ESM import in node:
241
245
  0 && (module.exports = {
242
246
  getBlockPatternsForPostType,
@@ -244,6 +248,7 @@ function getSyncConnectionStatus(state) {
244
248
  getEditorSettings,
245
249
  getEntityRecordPermissions,
246
250
  getEntityRecordsPermissions,
251
+ getEntitySyncConnectionStatus,
247
252
  getHomePage,
248
253
  getNavigationFallbackId,
249
254
  getPostsPageId,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/private-selectors.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport type { ConnectionStatus } from '@wordpress/sync';\n\n/**\n * Internal dependencies\n */\nimport { getDefaultTemplateId, getEntityRecord, type State } from './selectors';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { getSyncManager } from './sync';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\n\ntype EntityRecordKey = string | number;\n\nconst EMPTY_OBJECT = {};\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The undo manager.\n */\nexport function getUndoManager( state: State ) {\n\t// undoManager is undefined until the first sync-enabled entity is loaded.\n\treturn getSyncManager()?.undoManager ?? state.undoManager;\n}\n\n/**\n * Retrieve the fallback Navigation.\n *\n * @param state Data state.\n * @return The ID for the fallback Navigation post.\n */\nexport function getNavigationFallbackId(\n\tstate: State\n): EntityRecordKey | undefined {\n\treturn state.navigationFallbackId;\n}\n\nexport const getBlockPatternsForPostType = createRegistrySelector(\n\t( select: any ) =>\n\t\tcreateSelector(\n\t\t\t( state, postType ) =>\n\t\t\t\tselect( STORE_NAME )\n\t\t\t\t\t.getBlockPatterns()\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t( { postTypes } ) =>\n\t\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t),\n\t\t\t() => [ select( STORE_NAME ).getBlockPatterns() ]\n\t\t)\n);\n\n/**\n * Returns the entity records permissions for the given entity record ids.\n */\nexport const getEntityRecordsPermissions = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t(\n\t\t\tstate: State,\n\t\t\tkind: string,\n\t\t\tname: string,\n\t\t\tids: string | string[]\n\t\t) => {\n\t\t\tconst normalizedIds = Array.isArray( ids ) ? ids : [ ids ];\n\t\t\treturn normalizedIds.map( ( id ) => ( {\n\t\t\t\tdelete: select( STORE_NAME ).canUser( 'delete', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t\tupdate: select( STORE_NAME ).canUser( 'update', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\t},\n\t\t( state ) => [ state.userPermissions ]\n\t)\n);\n\n/**\n * Returns the entity record permissions for the given entity record id.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n * @param id Entity record id.\n *\n * @return The entity record permissions.\n */\nexport function getEntityRecordPermissions(\n\tstate: State,\n\tkind: string,\n\tname: string,\n\tid: string\n) {\n\tlogEntityDeprecation( kind, name, 'getEntityRecordPermissions' );\n\treturn getEntityRecordsPermissions( state, kind, name, id )[ 0 ];\n}\n\n/**\n * Returns the registered post meta fields for a given post type.\n *\n * @param state Data state.\n * @param postType Post type.\n *\n * @return Registered post meta fields.\n */\nexport function getRegisteredPostMeta( state: State, postType: string ) {\n\treturn state.registeredPostMeta?.[ postType ] ?? {};\n}\n\nfunction normalizePageId( value: number | string | undefined ): string | null {\n\tif ( ! value || ! [ 'number', 'string' ].includes( typeof value ) ) {\n\t\treturn null;\n\t}\n\n\t// We also need to check if it's not zero (`'0'`).\n\tif ( Number( value ) === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn value.toString();\n}\n\ninterface SiteData {\n\tshow_on_front?: string;\n\tpage_on_front?: string | number;\n\tpage_for_posts?: string | number;\n}\n\nexport const getHomePage = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t() => {\n\t\t\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'__unstableBase'\n\t\t\t) as SiteData | undefined;\n\t\t\t// Still resolving getEntityRecord.\n\t\t\tif ( ! siteData ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst homepageId =\n\t\t\t\tsiteData?.show_on_front === 'page'\n\t\t\t\t\t? normalizePageId( siteData.page_on_front )\n\t\t\t\t\t: null;\n\t\t\tif ( homepageId ) {\n\t\t\t\treturn { postType: 'page', postId: homepageId };\n\t\t\t}\n\t\t\tconst frontPageTemplateId = select(\n\t\t\t\tSTORE_NAME\n\t\t\t).getDefaultTemplateId( {\n\t\t\t\tslug: 'front-page',\n\t\t\t} );\n\t\t\tif ( frontPageTemplateId ) {\n\t\t\t\treturn {\n\t\t\t\t\tpostType: 'wp_template',\n\t\t\t\t\tpostId: frontPageTemplateId,\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Resolution is finished and no front-page template exists.\n\t\t\tif ( frontPageTemplateId === '' ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\t// Still resolving getDefaultTemplateId.\n\t\t\treturn null;\n\t\t},\n\t\t( state ) => [\n\t\t\t// Even though getDefaultTemplateId.shouldInvalidate returns true when root/site changes,\n\t\t\t// it doesn't seem to invalidate this cache, I'm not sure why.\n\t\t\tgetEntityRecord( state, 'root', 'site' ),\n\t\t\tgetEntityRecord( state, 'root', '__unstableBase' ),\n\t\t\tgetDefaultTemplateId( state, {\n\t\t\t\tslug: 'front-page',\n\t\t\t} ),\n\t\t]\n\t)\n);\n\nexport const getPostsPageId = createRegistrySelector( ( select ) => () => {\n\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t'root',\n\t\t'__unstableBase'\n\t) as SiteData | undefined;\n\treturn siteData?.show_on_front === 'page'\n\t\t? normalizePageId( siteData.page_for_posts )\n\t\t: null;\n} );\n\nexport const getTemplateId = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\tconst homepage = unlock( select( STORE_NAME ) ).getHomePage();\n\n\t\tif ( ! homepage ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For the front page, we always use the front page template if existing.\n\t\tif (\n\t\t\tpostType === 'page' &&\n\t\t\tpostType === homepage?.postType &&\n\t\t\tpostId.toString() === homepage?.postId\n\t\t) {\n\t\t\t// The /lookup endpoint cannot currently handle a lookup\n\t\t\t// when a page is set as the front page, so specifically in\n\t\t\t// that case, we want to check if there is a front page\n\t\t\t// template, and instead of falling back to the home\n\t\t\t// template, we want to fall back to the page template.\n\t\t\tconst templates = select( STORE_NAME ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t);\n\t\t\tif ( ! templates ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = templates.find( ( { slug } ) => slug === 'front-page' )\n\t\t\t\t?.id;\n\t\t\tif ( id ) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\t// If no front page template is found, continue with the\n\t\t\t// logic below (fetching the page template).\n\t\t}\n\n\t\tconst editedEntity = select( STORE_NAME ).getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\t\tif ( ! editedEntity ) {\n\t\t\treturn;\n\t\t}\n\t\tconst postsPageId = unlock( select( STORE_NAME ) ).getPostsPageId();\n\t\t// Check if the current page is the posts page.\n\t\tif ( postType === 'page' && postsPageId === postId.toString() ) {\n\t\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\t\tslug: 'home',\n\t\t\t} );\n\t\t}\n\t\t// First see if the post/page has an assigned template and fetch it.\n\t\tconst currentTemplateSlug = editedEntity.template;\n\t\tif ( currentTemplateSlug ) {\n\t\t\tconst currentTemplate = select( STORE_NAME )\n\t\t\t\t.getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\tper_page: -1,\n\t\t\t\t} )\n\t\t\t\t?.find( ( { slug } ) => slug === currentTemplateSlug );\n\t\t\tif ( currentTemplate ) {\n\t\t\t\treturn currentTemplate.id;\n\t\t\t}\n\t\t}\n\t\t// If no template is assigned, use the default template.\n\t\tlet slugToCheck;\n\t\t// In `draft` status we might not have a slug available, so we use the `single`\n\t\t// post type templates slug(ex page, single-post, single-product etc..).\n\t\t// Pages do not need the `single` prefix in the slug to be prioritized\n\t\t// through template hierarchy.\n\t\tif ( editedEntity.slug ) {\n\t\t\tslugToCheck =\n\t\t\t\tpostType === 'page'\n\t\t\t\t\t? `${ postType }-${ editedEntity.slug }`\n\t\t\t\t\t: `single-${ postType }-${ editedEntity.slug }`;\n\t\t} else {\n\t\t\tslugToCheck = postType === 'page' ? 'page' : `single-${ postType }`;\n\t\t}\n\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\tslug: slugToCheck,\n\t\t} );\n\t}\n);\n\n/**\n * Returns the editor settings.\n *\n * @param state Data state.\n * @return Editor settings object or null if not loaded.\n */\nexport function getEditorSettings(\n\tstate: State\n): Record< string, any > | null {\n\treturn state.editorSettings;\n}\n\n/**\n * Returns the editor assets.\n *\n * @param state Data state.\n * @return Editor assets object or null if not loaded.\n */\nexport function getEditorAssets( state: State ): Record< string, any > | null {\n\treturn state.editorAssets;\n}\n\n/**\n * Returns whether collaboration is supported.\n *\n * @param state Data state.\n * @return Whether collaboration is supported.\n */\nexport function isCollaborationSupported( state: State ): boolean {\n\treturn state.collaborationSupported;\n}\n\n/**\n * Returns the view configuration for the given entity type.\n *\n * An optional fourth argument (e.g. `{ fields }`) may be passed when selecting;\n * it is consumed by the `getViewConfig` resolver to request a subset of the\n * config via the REST API `_fields` parameter and does not affect what is read\n * here. Partial responses are merged in the reducer, so the returned object may\n * accumulate properties across requests for the same entity.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n *\n * @return The view configuration or undefined if not loaded.\n */\nexport function getViewConfig(\n\tstate: State,\n\tkind: string,\n\tname: string\n): Record< string, any > | undefined {\n\treturn (\n\t\tstate.viewConfigs?.[ `${ kind }/${ name }` ] ?? {\n\t\t\tdefault_view: undefined,\n\t\t\tdefault_layouts: undefined,\n\t\t\tview_list: undefined,\n\t\t\tform: undefined,\n\t\t}\n\t);\n}\n\n/**\n * Returns the current sync connection status across all entities. Prioritizes\n * disconnected states, then connecting, then connected.\n *\n * @param state Data state.\n *\n * @return The current sync connection state, prioritized by importance.\n */\nexport function getSyncConnectionStatus(\n\tstate: State\n): ConnectionStatus | undefined {\n\tif ( ! state.syncConnectionStatuses ) {\n\t\treturn undefined;\n\t}\n\n\tconst PRIORITIZED_STATUSES = [ 'disconnected', 'connecting', 'connected' ];\n\n\tlet coalesced: ConnectionStatus | undefined;\n\n\tfor ( const status of Object.values( state.syncConnectionStatuses ) ) {\n\t\tif (\n\t\t\t! coalesced ||\n\t\t\tPRIORITIZED_STATUSES.indexOf( status.status ) <\n\t\t\t\tPRIORITIZED_STATUSES.indexOf( coalesced.status )\n\t\t) {\n\t\t\tcoalesced = status;\n\t\t}\n\t}\n\n\treturn coalesced;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { createSelector, createRegistrySelector } from '@wordpress/data';\nimport type { ConnectionStatus } from '@wordpress/sync';\nimport { getDefaultTemplateId, getEntityRecord, type State } from './selectors';\nimport { STORE_NAME } from './name';\nimport { unlock } from './lock-unlock';\nimport { getSyncManager } from './sync';\nimport logEntityDeprecation from './utils/log-entity-deprecation';\n\ntype EntityRecordKey = string | number;\n\nconst EMPTY_OBJECT = {};\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param state State tree.\n *\n * @return The undo manager.\n */\nexport function getUndoManager( state: State ) {\n\t// undoManager is undefined until the first sync-enabled entity is loaded.\n\treturn getSyncManager()?.undoManager ?? state.undoManager;\n}\n\n/**\n * Retrieve the fallback Navigation.\n *\n * @param state Data state.\n * @return The ID for the fallback Navigation post.\n */\nexport function getNavigationFallbackId(\n\tstate: State\n): EntityRecordKey | undefined {\n\treturn state.navigationFallbackId;\n}\n\nexport const getBlockPatternsForPostType = createRegistrySelector(\n\t( select: any ) =>\n\t\tcreateSelector(\n\t\t\t( state, postType ) =>\n\t\t\t\tselect( STORE_NAME )\n\t\t\t\t\t.getBlockPatterns()\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t( { postTypes } ) =>\n\t\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t),\n\t\t\t() => [ select( STORE_NAME ).getBlockPatterns() ]\n\t\t)\n);\n\n/**\n * Returns the entity records permissions for the given entity record ids.\n */\nexport const getEntityRecordsPermissions = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t(\n\t\t\tstate: State,\n\t\t\tkind: string,\n\t\t\tname: string,\n\t\t\tids: string | string[]\n\t\t) => {\n\t\t\tconst normalizedIds = Array.isArray( ids ) ? ids : [ ids ];\n\t\t\treturn normalizedIds.map( ( id ) => ( {\n\t\t\t\tdelete: select( STORE_NAME ).canUser( 'delete', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t\tupdate: select( STORE_NAME ).canUser( 'update', {\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\t},\n\t\t( state ) => [ state.userPermissions ]\n\t)\n);\n\n/**\n * Returns the entity record permissions for the given entity record id.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n * @param id Entity record id.\n *\n * @return The entity record permissions.\n */\nexport function getEntityRecordPermissions(\n\tstate: State,\n\tkind: string,\n\tname: string,\n\tid: string\n) {\n\tlogEntityDeprecation( kind, name, 'getEntityRecordPermissions' );\n\treturn getEntityRecordsPermissions( state, kind, name, id )[ 0 ];\n}\n\n/**\n * Returns the registered post meta fields for a given post type.\n *\n * @param state Data state.\n * @param postType Post type.\n *\n * @return Registered post meta fields.\n */\nexport function getRegisteredPostMeta( state: State, postType: string ) {\n\treturn state.registeredPostMeta?.[ postType ] ?? {};\n}\n\nfunction normalizePageId( value: number | string | undefined ): string | null {\n\tif ( ! value || ! [ 'number', 'string' ].includes( typeof value ) ) {\n\t\treturn null;\n\t}\n\n\t// We also need to check if it's not zero (`'0'`).\n\tif ( Number( value ) === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn value.toString();\n}\n\ninterface SiteData {\n\tshow_on_front?: string;\n\tpage_on_front?: string | number;\n\tpage_for_posts?: string | number;\n}\n\nexport const getHomePage = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t() => {\n\t\t\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'__unstableBase'\n\t\t\t) as SiteData | undefined;\n\t\t\t// Still resolving getEntityRecord.\n\t\t\tif ( ! siteData ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst homepageId =\n\t\t\t\tsiteData?.show_on_front === 'page'\n\t\t\t\t\t? normalizePageId( siteData.page_on_front )\n\t\t\t\t\t: null;\n\t\t\tif ( homepageId ) {\n\t\t\t\treturn { postType: 'page', postId: homepageId };\n\t\t\t}\n\t\t\tconst frontPageTemplateId = select(\n\t\t\t\tSTORE_NAME\n\t\t\t).getDefaultTemplateId( {\n\t\t\t\tslug: 'front-page',\n\t\t\t} );\n\t\t\tif ( frontPageTemplateId ) {\n\t\t\t\treturn {\n\t\t\t\t\tpostType: 'wp_template',\n\t\t\t\t\tpostId: frontPageTemplateId,\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Resolution is finished and no front-page template exists.\n\t\t\tif ( frontPageTemplateId === '' ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\t// Still resolving getDefaultTemplateId.\n\t\t\treturn null;\n\t\t},\n\t\t( state ) => [\n\t\t\t// Even though getDefaultTemplateId.shouldInvalidate returns true when root/site changes,\n\t\t\t// it doesn't seem to invalidate this cache, I'm not sure why.\n\t\t\tgetEntityRecord( state, 'root', 'site' ),\n\t\t\tgetEntityRecord( state, 'root', '__unstableBase' ),\n\t\t\tgetDefaultTemplateId( state, {\n\t\t\t\tslug: 'front-page',\n\t\t\t} ),\n\t\t]\n\t)\n);\n\nexport const getPostsPageId = createRegistrySelector( ( select ) => () => {\n\tconst siteData = select( STORE_NAME ).getEntityRecord(\n\t\t'root',\n\t\t'__unstableBase'\n\t) as SiteData | undefined;\n\treturn siteData?.show_on_front === 'page'\n\t\t? normalizePageId( siteData.page_for_posts )\n\t\t: null;\n} );\n\nexport const getTemplateId = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\tconst homepage = unlock( select( STORE_NAME ) ).getHomePage();\n\n\t\tif ( ! homepage ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For the front page, we always use the front page template if existing.\n\t\tif (\n\t\t\tpostType === 'page' &&\n\t\t\tpostType === homepage?.postType &&\n\t\t\tpostId.toString() === homepage?.postId\n\t\t) {\n\t\t\t// The /lookup endpoint cannot currently handle a lookup\n\t\t\t// when a page is set as the front page, so specifically in\n\t\t\t// that case, we want to check if there is a front page\n\t\t\t// template, and instead of falling back to the home\n\t\t\t// template, we want to fall back to the page template.\n\t\t\tconst templates = select( STORE_NAME ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t);\n\t\t\tif ( ! templates ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = templates.find( ( { slug } ) => slug === 'front-page' )\n\t\t\t\t?.id;\n\t\t\tif ( id ) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\t// If no front page template is found, continue with the\n\t\t\t// logic below (fetching the page template).\n\t\t}\n\n\t\tconst editedEntity = select( STORE_NAME ).getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\t\tif ( ! editedEntity ) {\n\t\t\treturn;\n\t\t}\n\t\tconst postsPageId = unlock( select( STORE_NAME ) ).getPostsPageId();\n\t\t// Check if the current page is the posts page.\n\t\tif ( postType === 'page' && postsPageId === postId.toString() ) {\n\t\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\t\tslug: 'home',\n\t\t\t} );\n\t\t}\n\t\t// First see if the post/page has an assigned template and fetch it.\n\t\tconst currentTemplateSlug = editedEntity.template;\n\t\tif ( currentTemplateSlug ) {\n\t\t\tconst currentTemplate = select( STORE_NAME )\n\t\t\t\t.getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\tper_page: -1,\n\t\t\t\t} )\n\t\t\t\t?.find( ( { slug } ) => slug === currentTemplateSlug );\n\t\t\tif ( currentTemplate ) {\n\t\t\t\treturn currentTemplate.id;\n\t\t\t}\n\t\t}\n\t\t// If no template is assigned, use the default template.\n\t\tlet slugToCheck;\n\t\t// In `draft` status we might not have a slug available, so we use the `single`\n\t\t// post type templates slug(ex page, single-post, single-product etc..).\n\t\t// Pages do not need the `single` prefix in the slug to be prioritized\n\t\t// through template hierarchy.\n\t\tif ( editedEntity.slug ) {\n\t\t\tslugToCheck =\n\t\t\t\tpostType === 'page'\n\t\t\t\t\t? `${ postType }-${ editedEntity.slug }`\n\t\t\t\t\t: `single-${ postType }-${ editedEntity.slug }`;\n\t\t} else {\n\t\t\tslugToCheck = postType === 'page' ? 'page' : `single-${ postType }`;\n\t\t}\n\t\treturn select( STORE_NAME ).getDefaultTemplateId( {\n\t\t\tslug: slugToCheck,\n\t\t} );\n\t}\n);\n\n/**\n * Returns the editor settings.\n *\n * @param state Data state.\n * @return Editor settings object or null if not loaded.\n */\nexport function getEditorSettings(\n\tstate: State\n): Record< string, any > | null {\n\treturn state.editorSettings;\n}\n\n/**\n * Returns the editor assets.\n *\n * @param state Data state.\n * @return Editor assets object or null if not loaded.\n */\nexport function getEditorAssets( state: State ): Record< string, any > | null {\n\treturn state.editorAssets;\n}\n\n/**\n * Returns whether collaboration is supported.\n *\n * @param state Data state.\n * @return Whether collaboration is supported.\n */\nexport function isCollaborationSupported( state: State ): boolean {\n\treturn state.collaborationSupported;\n}\n\n/**\n * Returns the view configuration for the given entity type.\n *\n * An optional fourth argument (e.g. `{ fields }`) may be passed when selecting;\n * it is consumed by the `getViewConfig` resolver to request a subset of the\n * config via the REST API `_fields` parameter and does not affect what is read\n * here. Partial responses are merged in the reducer, so the returned object may\n * accumulate properties across requests for the same entity.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n *\n * @return The view configuration or undefined if not loaded.\n */\nexport function getViewConfig(\n\tstate: State,\n\tkind: string,\n\tname: string\n): Record< string, any > | undefined {\n\treturn (\n\t\tstate.viewConfigs?.[ `${ kind }/${ name }` ] ?? {\n\t\t\tdefault_view: undefined,\n\t\t\tdefault_layouts: undefined,\n\t\t\tview_list: undefined,\n\t\t\tform: undefined,\n\t\t}\n\t);\n}\n\n/**\n * Returns the current sync connection status across all entities. Prioritizes\n * disconnected states, then connecting, then connected.\n *\n * @param state Data state.\n *\n * @return The current sync connection state, prioritized by importance.\n */\nexport function getSyncConnectionStatus(\n\tstate: State\n): ConnectionStatus | undefined {\n\tif ( ! state.syncConnectionStatuses ) {\n\t\treturn undefined;\n\t}\n\n\tconst PRIORITIZED_STATUSES = [ 'disconnected', 'connecting', 'connected' ];\n\n\tlet coalesced: ConnectionStatus | undefined;\n\n\tfor ( const status of Object.values( state.syncConnectionStatuses ) ) {\n\t\tif (\n\t\t\t! coalesced ||\n\t\t\tPRIORITIZED_STATUSES.indexOf( status.status ) <\n\t\t\t\tPRIORITIZED_STATUSES.indexOf( coalesced.status )\n\t\t) {\n\t\t\tcoalesced = status;\n\t\t}\n\t}\n\n\treturn coalesced;\n}\n\n/**\n * Returns the sync connection status for a single entity, or undefined if\n * the entity is not being synced or no provider has reported a status yet.\n *\n * @param state Data state.\n * @param kind Entity kind.\n * @param name Entity name.\n * @param recordId Record ID.\n *\n * @return The sync connection status for the entity.\n */\nexport function getEntitySyncConnectionStatus(\n\tstate: State,\n\tkind: string,\n\tname: string,\n\trecordId: EntityRecordKey\n): ConnectionStatus | undefined {\n\treturn state.syncConnectionStatuses?.[\n\t\t`${ kind }/${ name }:${ recordId }`\n\t];\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["logEntityDeprecation"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/queried-data/get-query-parts.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { withWeakMapCache, getNormalizedCommaSeparable } from '../utils';\n\n/**\n * An object of properties describing a specific query.\n *\n * @typedef {Object} WPQueriedDataQueryParts\n *\n * @property {number} page The query page (1-based index, default 1).\n * @property {number} perPage Items per page for query (default 10).\n * @property {?number} offset Absolute item offset (default null).\n * @property {string} stableKey An encoded stable string of all non-pagination, non-fields query parameters.\n * @property {?(string[])} fields Target subset of fields to derive from item objects (default null).\n * @property {?(number[])} include Specific item IDs to include (default null).\n * @property {string} context Scope under which the request is made; determines returned fields in response.\n */\n\n/**\n * Given a query object, returns an object of parts, including pagination\n * details (`page` and `perPage`, or default values). All other properties are\n * encoded into a stable (idempotent) `stableKey` value.\n *\n * @param {Object} query Optional query object.\n *\n * @return {WPQueriedDataQueryParts} Query parts.\n */\nexport function getQueryParts( query ) {\n\t/**\n\t * @type {WPQueriedDataQueryParts}\n\t */\n\tconst parts = {\n\t\tstableKey: '',\n\t\tpage: 1,\n\t\tperPage: 10,\n\t\toffset: null,\n\t\tfields: null,\n\t\tinclude: null,\n\t\tcontext: 'default',\n\t};\n\n\t// Ensure stable key by sorting keys. Also more efficient for iterating.\n\tconst keys = Object.keys( query ).sort();\n\n\tfor ( let i = 0; i < keys.length; i++ ) {\n\t\tconst key = keys[ i ];\n\t\tlet value = query[ key ];\n\n\t\tswitch ( key ) {\n\t\t\tcase 'page':\n\t\t\t\tparts[ key ] = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'per_page':\n\t\t\t\tparts.perPage = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'offset': {\n\t\t\t\tconst numericOffset = Number( value );\n\t\t\t\tif ( Number.isFinite( numericOffset ) ) {\n\t\t\t\t\tparts.offset = numericOffset;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'context':\n\t\t\t\tparts.context = value;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// While in theory, we could exclude \"_fields\" from the stableKey\n\t\t\t\t// because two request with different fields have the same results\n\t\t\t\t// We're not able to ensure that because the server can decide to omit\n\t\t\t\t// fields from the response even if we explicitly asked for it.\n\t\t\t\t// Example: Asking for titles in posts without title support.\n\t\t\t\tif ( key === '_fields' ) {\n\t\t\t\t\tparts.fields = getNormalizedCommaSeparable( value ) ?? [];\n\t\t\t\t\t// Make sure to normalize value for `stableKey`\n\t\t\t\t\tvalue = parts.fields.join();\n\t\t\t\t}\n\n\t\t\t\t// Two requests with different include values cannot have same results.\n\t\t\t\tif ( key === 'include' ) {\n\t\t\t\t\tif ( typeof value === 'number' ) {\n\t\t\t\t\t\tvalue = value.toString();\n\t\t\t\t\t}\n\t\t\t\t\tparts.include = (\n\t\t\t\t\t\tgetNormalizedCommaSeparable( value ) ?? []\n\t\t\t\t\t).map( Number );\n\t\t\t\t\t// Normalize value for `stableKey`.\n\t\t\t\t\tvalue = parts.include.join();\n\t\t\t\t}\n\n\t\t\t\t// While it could be any deterministic string, for simplicity's\n\t\t\t\t// sake mimic querystring encoding for stable key.\n\t\t\t\t//\n\t\t\t\t// TODO: For consistency with PHP implementation, addQueryArgs\n\t\t\t\t// should accept a key value pair, which may optimize its\n\t\t\t\t// implementation for our use here, vs. iterating an object\n\t\t\t\t// with only a single key.\n\t\t\t\tparts.stableKey +=\n\t\t\t\t\t( parts.stableKey ? '&' : '' ) +\n\t\t\t\t\taddQueryArgs( '', { [ key ]: value } ).slice( 1 );\n\t\t}\n\t}\n\n\treturn parts;\n}\n\nexport default withWeakMapCache( getQueryParts );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA6B;AAK7B,mBAA8D;AAyBvD,SAAS,cAAe,OAAQ;AAItC,QAAM,QAAQ;AAAA,IACb,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,EACV;AAGA,QAAM,OAAO,OAAO,KAAM,KAAM,EAAE,KAAK;AAEvC,WAAU,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAM;AACvC,UAAM,MAAM,KAAM,CAAE;AACpB,QAAI,QAAQ,MAAO,GAAI;AAEvB,YAAS,KAAM;AAAA,MACd,KAAK;AACJ,cAAO,GAAI,IAAI,OAAQ,KAAM;AAC7B;AAAA,MAED,KAAK;AACJ,cAAM,UAAU,OAAQ,KAAM;AAC9B;AAAA,MAED,KAAK,UAAU;AACd,cAAM,gBAAgB,OAAQ,KAAM;AACpC,YAAK,OAAO,SAAU,aAAc,GAAI;AACvC,gBAAM,SAAS;AAAA,QAChB;AACA;AAAA,MACD;AAAA,MAEA,KAAK;AACJ,cAAM,UAAU;AAChB;AAAA,MAED;AAMC,YAAK,QAAQ,WAAY;AACxB,gBAAM,aAAS,0CAA6B,KAAM,KAAK,CAAC;AAExD,kBAAQ,MAAM,OAAO,KAAK;AAAA,QAC3B;AAGA,YAAK,QAAQ,WAAY;AACxB,cAAK,OAAO,UAAU,UAAW;AAChC,oBAAQ,MAAM,SAAS;AAAA,UACxB;AACA,gBAAM,eACL,0CAA6B,KAAM,KAAK,CAAC,GACxC,IAAK,MAAO;AAEd,kBAAQ,MAAM,QAAQ,KAAK;AAAA,QAC5B;AASA,cAAM,cACH,MAAM,YAAY,MAAM,UAC1B,yBAAc,IAAI,EAAE,CAAE,GAAI,GAAG,MAAM,CAAE,EAAE,MAAO,CAAE;AAAA,IACnD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,8BAAQ,+BAAkB,aAAc;",
4
+ "sourcesContent": ["import { addQueryArgs } from '@wordpress/url';\nimport { withWeakMapCache, getNormalizedCommaSeparable } from '../utils';\n\n/**\n * An object of properties describing a specific query.\n *\n * @typedef {Object} WPQueriedDataQueryParts\n *\n * @property {number} page The query page (1-based index, default 1).\n * @property {number} perPage Items per page for query (default 10).\n * @property {?number} offset Absolute item offset (default null).\n * @property {string} stableKey An encoded stable string of all non-pagination, non-fields query parameters.\n * @property {?(string[])} fields Target subset of fields to derive from item objects (default null).\n * @property {?(number[])} include Specific item IDs to include (default null).\n * @property {string} context Scope under which the request is made; determines returned fields in response.\n */\n\n/**\n * Given a query object, returns an object of parts, including pagination\n * details (`page` and `perPage`, or default values). All other properties are\n * encoded into a stable (idempotent) `stableKey` value.\n *\n * @param {Object} query Optional query object.\n *\n * @return {WPQueriedDataQueryParts} Query parts.\n */\nexport function getQueryParts( query ) {\n\t/**\n\t * @type {WPQueriedDataQueryParts}\n\t */\n\tconst parts = {\n\t\tstableKey: '',\n\t\tpage: 1,\n\t\tperPage: 10,\n\t\toffset: null,\n\t\tfields: null,\n\t\tinclude: null,\n\t\tcontext: 'default',\n\t};\n\n\t// Ensure stable key by sorting keys. Also more efficient for iterating.\n\tconst keys = Object.keys( query ).sort();\n\n\tfor ( let i = 0; i < keys.length; i++ ) {\n\t\tconst key = keys[ i ];\n\t\tlet value = query[ key ];\n\n\t\tswitch ( key ) {\n\t\t\tcase 'page':\n\t\t\t\tparts[ key ] = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'per_page':\n\t\t\t\tparts.perPage = Number( value );\n\t\t\t\tbreak;\n\n\t\t\tcase 'offset': {\n\t\t\t\tconst numericOffset = Number( value );\n\t\t\t\tif ( Number.isFinite( numericOffset ) ) {\n\t\t\t\t\tparts.offset = numericOffset;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'context':\n\t\t\t\tparts.context = value;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// While in theory, we could exclude \"_fields\" from the stableKey\n\t\t\t\t// because two request with different fields have the same results\n\t\t\t\t// We're not able to ensure that because the server can decide to omit\n\t\t\t\t// fields from the response even if we explicitly asked for it.\n\t\t\t\t// Example: Asking for titles in posts without title support.\n\t\t\t\tif ( key === '_fields' ) {\n\t\t\t\t\tparts.fields = getNormalizedCommaSeparable( value ) ?? [];\n\t\t\t\t\t// Make sure to normalize value for `stableKey`\n\t\t\t\t\tvalue = parts.fields.join();\n\t\t\t\t}\n\n\t\t\t\t// Two requests with different include values cannot have same results.\n\t\t\t\tif ( key === 'include' ) {\n\t\t\t\t\tif ( typeof value === 'number' ) {\n\t\t\t\t\t\tvalue = value.toString();\n\t\t\t\t\t}\n\t\t\t\t\tparts.include = (\n\t\t\t\t\t\tgetNormalizedCommaSeparable( value ) ?? []\n\t\t\t\t\t).map( Number );\n\t\t\t\t\t// Normalize value for `stableKey`.\n\t\t\t\t\tvalue = parts.include.join();\n\t\t\t\t}\n\n\t\t\t\t// While it could be any deterministic string, for simplicity's\n\t\t\t\t// sake mimic querystring encoding for stable key.\n\t\t\t\t//\n\t\t\t\t// TODO: For consistency with PHP implementation, addQueryArgs\n\t\t\t\t// should accept a key value pair, which may optimize its\n\t\t\t\t// implementation for our use here, vs. iterating an object\n\t\t\t\t// with only a single key.\n\t\t\t\tparts.stableKey +=\n\t\t\t\t\t( parts.stableKey ? '&' : '' ) +\n\t\t\t\t\taddQueryArgs( '', { [ key ]: value } ).slice( 1 );\n\t\t}\n\t}\n\n\treturn parts;\n}\n\nexport default withWeakMapCache( getQueryParts );\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA6B;AAC7B,mBAA8D;AAyBvD,SAAS,cAAe,OAAQ;AAItC,QAAM,QAAQ;AAAA,IACb,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,EACV;AAGA,QAAM,OAAO,OAAO,KAAM,KAAM,EAAE,KAAK;AAEvC,WAAU,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAM;AACvC,UAAM,MAAM,KAAM,CAAE;AACpB,QAAI,QAAQ,MAAO,GAAI;AAEvB,YAAS,KAAM;AAAA,MACd,KAAK;AACJ,cAAO,GAAI,IAAI,OAAQ,KAAM;AAC7B;AAAA,MAED,KAAK;AACJ,cAAM,UAAU,OAAQ,KAAM;AAC9B;AAAA,MAED,KAAK,UAAU;AACd,cAAM,gBAAgB,OAAQ,KAAM;AACpC,YAAK,OAAO,SAAU,aAAc,GAAI;AACvC,gBAAM,SAAS;AAAA,QAChB;AACA;AAAA,MACD;AAAA,MAEA,KAAK;AACJ,cAAM,UAAU;AAChB;AAAA,MAED;AAMC,YAAK,QAAQ,WAAY;AACxB,gBAAM,aAAS,0CAA6B,KAAM,KAAK,CAAC;AAExD,kBAAQ,MAAM,OAAO,KAAK;AAAA,QAC3B;AAGA,YAAK,QAAQ,WAAY;AACxB,cAAK,OAAO,UAAU,UAAW;AAChC,oBAAQ,MAAM,SAAS;AAAA,UACxB;AACA,gBAAM,eACL,0CAA6B,KAAM,KAAK,CAAC,GACxC,IAAK,MAAO;AAEd,kBAAQ,MAAM,QAAQ,KAAK;AAAA,QAC5B;AASA,cAAM,cACH,MAAM,YAAY,MAAM,UAC1B,yBAAc,IAAI,EAAE,CAAE,GAAI,GAAG,MAAM,CAAE,EAAE,MAAO,CAAE;AAAA,IACnD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,8BAAQ,+BAAkB,aAAc;",
6
6
  "names": []
7
7
  }