@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/awareness/typed-awareness.ts"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport { Awareness } from '@wordpress/sync';\n\n/**\n * Internal dependencies\n */\nimport { getRecordValue } from './utils';\n\n/**\n * Extended Awareness class with typed state accessors.\n */\nexport class TypedAwareness< State extends object > extends Awareness {\n\t/**\n\t * Get the states from an awareness document.\n\t */\n\tpublic getStates(): Map< number, State > {\n\t\treturn super.getStates() as Map< number, State >;\n\t}\n\n\t/**\n\t * Get a local state field from an awareness document.\n\t * @param field\n\t */\n\tpublic getLocalStateField< FieldName extends keyof State >(\n\t\tfield: FieldName\n\t): State[ FieldName ] | null {\n\t\tconst state: State | null = this.getLocalState() as State | null;\n\t\treturn getRecordValue< State, FieldName >( state, field );\n\t}\n\n\t/**\n\t * Set a local state field on an awareness document.\n\t * @param field\n\t * @param value\n\t */\n\tpublic setLocalStateField< FieldName extends string & keyof State >(\n\t\tfield: FieldName,\n\t\tvalue: State[ FieldName ]\n\t): void {\n\t\tsuper.setLocalStateField( field, value );\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAK1B,mBAA+B;AAKxB,IAAM,iBAAN,cAAqD,sBAAU;AAAA;AAAA;AAAA;AAAA,EAI9D,YAAkC;AACxC,WAAO,MAAM,UAAU;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,mBACN,OAC4B;AAC5B,UAAM,QAAsB,KAAK,cAAc;AAC/C,eAAO,6BAAoC,OAAO,KAAM;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,mBACN,OACA,OACO;AACP,UAAM,mBAAoB,OAAO,KAAM;AAAA,EACxC;AACD;",
4
+ "sourcesContent": ["import { Awareness } from '@wordpress/sync';\nimport { getRecordValue } from './utils';\n\n/**\n * Extended Awareness class with typed state accessors.\n */\nexport class TypedAwareness< State extends object > extends Awareness {\n\t/**\n\t * Get the states from an awareness document.\n\t */\n\tpublic getStates(): Map< number, State > {\n\t\treturn super.getStates() as Map< number, State >;\n\t}\n\n\t/**\n\t * Get a local state field from an awareness document.\n\t * @param field\n\t */\n\tpublic getLocalStateField< FieldName extends keyof State >(\n\t\tfield: FieldName\n\t): State[ FieldName ] | null {\n\t\tconst state: State | null = this.getLocalState() as State | null;\n\t\treturn getRecordValue< State, FieldName >( state, field );\n\t}\n\n\t/**\n\t * Set a local state field on an awareness document.\n\t * @param field\n\t * @param value\n\t */\n\tpublic setLocalStateField< FieldName extends string & keyof State >(\n\t\tfield: FieldName,\n\t\tvalue: State[ FieldName ]\n\t): void {\n\t\tsuper.setLocalStateField( field, value );\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAC1B,mBAA+B;AAKxB,IAAM,iBAAN,cAAqD,sBAAU;AAAA;AAAA;AAAA;AAAA,EAI9D,YAAkC;AACxC,WAAO,MAAM,UAAU;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,mBACN,OAC4B;AAC5B,UAAM,QAAsB,KAAK,cAAc;AAC/C,eAAO,6BAAoC,OAAO,KAAM;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,mBACN,OACA,OACO;AACP,UAAM,mBAAoB,OAAO,KAAM;AAAA,EACxC;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/awareness/types.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport type { Y } from '@wordpress/sync';\n\n/**\n * Internal dependencies\n */\nimport type { SelectionState } from '../types';\nimport type { User } from '../entity-types';\n\nexport type CollaboratorInfo = Pick<\n\tUser< 'view' >,\n\t'id' | 'name' | 'slug' | 'avatar_urls'\n> & {\n\tbrowserType: string;\n\tenteredAt: number;\n};\n\n/**\n * This base state represents the presence of the collaborator. We expect it to be\n * extended to include additional state describing the collaborator's current activity.\n * This state must be serializable and compact.\n */\nexport interface BaseState {\n\tcollaboratorInfo: CollaboratorInfo;\n}\n\n/**\n * The editor state includes information about the collaborator's current selection.\n */\nexport interface EditorState {\n\tselection?: SelectionState;\n}\n\n/**\n * The post editor state extends the base state with information used to render\n * presence indicators in the post editor.\n */\nexport interface PostEditorState extends BaseState {\n\teditorState?: EditorState;\n}\n\n/**\n * An enhanced state includes additional metadata about the collaborator's connection.\n */\nexport type EnhancedState< State > = State & {\n\tclientId: number;\n\tisConnected: boolean;\n\tisMe: boolean;\n};\n\n/**\n * An enhanced post editor awareness state includes additional metadata about\n * the collaborator and their connection.\n */\nexport type PostEditorAwarenessState = EnhancedState< PostEditorState >;\n\n// WordPress collaborator info for debug export (subset of CollaboratorInfo)\nexport type DebugCollaboratorData = Pick< CollaboratorInfo, 'name' > & {\n\twpUserId: CollaboratorInfo[ 'id' ];\n};\n\nexport interface YDocDebugData {\n\tdoc: Record< string, unknown >;\n\tclients: Record< number, Array< SerializableYItem > >;\n\tcollaboratorMap: Record< string, DebugCollaboratorData >;\n}\n\n// Type for serializable left/right item references to avoid deep nesting\nexport type SerializableYItemRef = Pick<\n\tY.Item,\n\t'id' | 'length' | 'origin' | 'content'\n>;\n\n// Serializable Y.Item - only includes data properties with shallow left/right references\nexport type SerializableYItem = Pick<\n\tY.Item,\n\t| 'id'\n\t| 'length'\n\t| 'origin'\n\t| 'rightOrigin'\n\t| 'parent'\n\t| 'parentSub'\n\t| 'redone'\n\t| 'content'\n\t| 'info'\n> & {\n\tleft: SerializableYItemRef | null;\n\tright: SerializableYItemRef | null;\n};\n\nexport type EqualityFieldCheck< State, FieldName extends keyof State > = (\n\tvalue1?: State[ FieldName ],\n\tvalue2?: State[ FieldName ]\n) => boolean;\n\nexport interface PostSaveEvent {\n\tsavedAt: number;\n\tsavedByClientId: number;\n\tpostStatus: string | undefined;\n}\n"],
4
+ "sourcesContent": ["import type { Y } from '@wordpress/sync';\nimport type { SelectionState } from '../types';\nimport type { User } from '../entity-types';\n\nexport type CollaboratorInfo = Pick<\n\tUser< 'view' >,\n\t'id' | 'name' | 'slug' | 'avatar_urls'\n> & {\n\tbrowserType: string;\n\tenteredAt: number;\n};\n\n/**\n * This base state represents the presence of the collaborator. We expect it to be\n * extended to include additional state describing the collaborator's current activity.\n * This state must be serializable and compact.\n */\nexport interface BaseState {\n\tcollaboratorInfo: CollaboratorInfo;\n}\n\n/**\n * The editor state includes information about the collaborator's current selection.\n */\nexport interface EditorState {\n\tselection?: SelectionState;\n}\n\n/**\n * The post editor state extends the base state with information used to render\n * presence indicators in the post editor.\n */\nexport interface PostEditorState extends BaseState {\n\teditorState?: EditorState;\n}\n\n/**\n * An enhanced state includes additional metadata about the collaborator's connection.\n */\nexport type EnhancedState< State > = State & {\n\tclientId: number;\n\tisConnected: boolean;\n\tisMe: boolean;\n};\n\n/**\n * An enhanced post editor awareness state includes additional metadata about\n * the collaborator and their connection.\n */\nexport type PostEditorAwarenessState = EnhancedState< PostEditorState >;\n\n// WordPress collaborator info for debug export (subset of CollaboratorInfo)\nexport type DebugCollaboratorData = Pick< CollaboratorInfo, 'name' > & {\n\twpUserId: CollaboratorInfo[ 'id' ];\n};\n\nexport interface YDocDebugData {\n\tdoc: Record< string, unknown >;\n\tclients: Record< number, Array< SerializableYItem > >;\n\tcollaboratorMap: Record< string, DebugCollaboratorData >;\n}\n\n// Type for serializable left/right item references to avoid deep nesting\nexport type SerializableYItemRef = Pick<\n\tY.Item,\n\t'id' | 'length' | 'origin' | 'content'\n>;\n\n// Serializable Y.Item - only includes data properties with shallow left/right references\nexport type SerializableYItem = Pick<\n\tY.Item,\n\t| 'id'\n\t| 'length'\n\t| 'origin'\n\t| 'rightOrigin'\n\t| 'parent'\n\t| 'parentSub'\n\t| 'redone'\n\t| 'content'\n\t| 'info'\n> & {\n\tleft: SerializableYItemRef | null;\n\tright: SerializableYItemRef | null;\n};\n\nexport type EqualityFieldCheck< State, FieldName extends keyof State > = (\n\tvalue1?: State[ FieldName ],\n\tvalue2?: State[ FieldName ]\n) => boolean;\n\nexport interface PostSaveEvent {\n\tsavedAt: number;\n\tsavedByClientId: number;\n\tpostStatus: string | undefined;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/awareness/utils.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { User } from '../entity-types';\nimport type { CollaboratorInfo } from './types';\n\n/**\n * Get the browser name from the user agent.\n * @return The browser name.\n */\nfunction getBrowserName(): string {\n\tconst userAgent = window.navigator.userAgent;\n\tlet browserName = 'Unknown';\n\n\tif ( userAgent.includes( 'Firefox' ) ) {\n\t\tbrowserName = 'Firefox';\n\t} else if ( userAgent.includes( 'Edg' ) ) {\n\t\tbrowserName = 'Microsoft Edge';\n\t} else if (\n\t\tuserAgent.includes( 'Chrome' ) &&\n\t\t! userAgent.includes( 'Edg' )\n\t) {\n\t\tbrowserName = 'Chrome';\n\t} else if (\n\t\tuserAgent.includes( 'Safari' ) &&\n\t\t! userAgent.includes( 'Chrome' )\n\t) {\n\t\tbrowserName = 'Safari';\n\t} else if (\n\t\tuserAgent.includes( 'MSIE' ) ||\n\t\tuserAgent.includes( 'Trident' )\n\t) {\n\t\tbrowserName = 'Internet Explorer';\n\t} else if ( userAgent.includes( 'Opera' ) || userAgent.includes( 'OPR' ) ) {\n\t\tbrowserName = 'Opera';\n\t}\n\n\treturn browserName;\n}\n\nexport function areMapsEqual< Key, Value >(\n\tmap1: Map< Key, Value >,\n\tmap2: Map< Key, Value >,\n\tcomparatorFn: ( value1: Value, value2: Value ) => boolean\n): boolean {\n\tif ( map1.size !== map2.size ) {\n\t\treturn false;\n\t}\n\n\tfor ( const [ key, value1 ] of map1.entries() ) {\n\t\tif ( ! map2.has( key ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! comparatorFn( value1, map2.get( key )! ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Check if two collaborator infos are equal.\n *\n * @param collaboratorInfo1 - The first collaborator info.\n * @param collaboratorInfo2 - The second collaborator info.\n * @return True if the collaborator infos are equal, false otherwise.\n */\nexport function areCollaboratorInfosEqual(\n\tcollaboratorInfo1?: CollaboratorInfo,\n\tcollaboratorInfo2?: CollaboratorInfo\n): boolean {\n\tif ( ! collaboratorInfo1 || ! collaboratorInfo2 ) {\n\t\treturn collaboratorInfo1 === collaboratorInfo2;\n\t}\n\n\tif (\n\t\tObject.keys( collaboratorInfo1 ).length !==\n\t\tObject.keys( collaboratorInfo2 ).length\n\t) {\n\t\treturn false;\n\t}\n\n\treturn Object.entries( collaboratorInfo1 ).every( ( [ key, value ] ) => {\n\t\t// Update this function with any non-primitive fields added to CollaboratorInfo.\n\t\treturn value === collaboratorInfo2[ key as keyof CollaboratorInfo ];\n\t} );\n}\n\n/**\n * Generate a collaborator info object from a current collaborator.\n *\n * @param currentCollaborator - The current collaborator.\n * @return The collaborator info object.\n */\nexport function generateCollaboratorInfo(\n\tcurrentCollaborator: User< 'view' >\n): CollaboratorInfo {\n\t// eslint-disable-next-line camelcase\n\tconst { avatar_urls, id, name, slug } = currentCollaborator;\n\treturn {\n\t\tavatar_urls, // eslint-disable-line camelcase\n\t\tbrowserType: getBrowserName(),\n\t\tenteredAt: Date.now(),\n\t\tid,\n\t\tname,\n\t\tslug,\n\t};\n}\n\nexport function getRecordValue< RecordType, Key extends keyof RecordType >(\n\tobj: unknown,\n\tkey: Key\n): RecordType[ Key ] | null {\n\tif ( 'object' === typeof obj && null !== obj && key in obj ) {\n\t\treturn ( obj as RecordType )[ key ];\n\t}\n\n\treturn null;\n}\n\nexport function getTypedKeys< T extends object >( obj: T ): Array< keyof T > {\n\treturn Object.keys( obj ) as Array< keyof T >;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,SAAS,iBAAyB;AACjC,QAAM,YAAY,OAAO,UAAU;AACnC,MAAI,cAAc;AAElB,MAAK,UAAU,SAAU,SAAU,GAAI;AACtC,kBAAc;AAAA,EACf,WAAY,UAAU,SAAU,KAAM,GAAI;AACzC,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,QAAS,KAC7B,CAAE,UAAU,SAAU,KAAM,GAC3B;AACD,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,QAAS,KAC7B,CAAE,UAAU,SAAU,QAAS,GAC9B;AACD,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,MAAO,KAC3B,UAAU,SAAU,SAAU,GAC7B;AACD,kBAAc;AAAA,EACf,WAAY,UAAU,SAAU,OAAQ,KAAK,UAAU,SAAU,KAAM,GAAI;AAC1E,kBAAc;AAAA,EACf;AAEA,SAAO;AACR;AAEO,SAAS,aACf,MACA,MACA,cACU;AACV,MAAK,KAAK,SAAS,KAAK,MAAO;AAC9B,WAAO;AAAA,EACR;AAEA,aAAY,CAAE,KAAK,MAAO,KAAK,KAAK,QAAQ,GAAI;AAC/C,QAAK,CAAE,KAAK,IAAK,GAAI,GAAI;AACxB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,aAAc,QAAQ,KAAK,IAAK,GAAI,CAAG,GAAI;AACjD,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;AASO,SAAS,0BACf,mBACA,mBACU;AACV,MAAK,CAAE,qBAAqB,CAAE,mBAAoB;AACjD,WAAO,sBAAsB;AAAA,EAC9B;AAEA,MACC,OAAO,KAAM,iBAAkB,EAAE,WACjC,OAAO,KAAM,iBAAkB,EAAE,QAChC;AACD,WAAO;AAAA,EACR;AAEA,SAAO,OAAO,QAAS,iBAAkB,EAAE,MAAO,CAAE,CAAE,KAAK,KAAM,MAAO;AAEvE,WAAO,UAAU,kBAAmB,GAA8B;AAAA,EACnE,CAAE;AACH;AAQO,SAAS,yBACf,qBACmB;AAEnB,QAAM,EAAE,aAAa,IAAI,MAAM,KAAK,IAAI;AACxC,SAAO;AAAA,IACN;AAAA;AAAA,IACA,aAAa,eAAe;AAAA,IAC5B,WAAW,KAAK,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,eACf,KACA,KAC2B;AAC3B,MAAK,aAAa,OAAO,OAAO,SAAS,OAAO,OAAO,KAAM;AAC5D,WAAS,IAAqB,GAAI;AAAA,EACnC;AAEA,SAAO;AACR;AAEO,SAAS,aAAkC,KAA2B;AAC5E,SAAO,OAAO,KAAM,GAAI;AACzB;",
4
+ "sourcesContent": ["import type { User } from '../entity-types';\nimport type { CollaboratorInfo } from './types';\n\n/**\n * Get the browser name from the user agent.\n * @return The browser name.\n */\nfunction getBrowserName(): string {\n\tconst userAgent = window.navigator.userAgent;\n\tlet browserName = 'Unknown';\n\n\tif ( userAgent.includes( 'Firefox' ) ) {\n\t\tbrowserName = 'Firefox';\n\t} else if ( userAgent.includes( 'Edg' ) ) {\n\t\tbrowserName = 'Microsoft Edge';\n\t} else if (\n\t\tuserAgent.includes( 'Chrome' ) &&\n\t\t! userAgent.includes( 'Edg' )\n\t) {\n\t\tbrowserName = 'Chrome';\n\t} else if (\n\t\tuserAgent.includes( 'Safari' ) &&\n\t\t! userAgent.includes( 'Chrome' )\n\t) {\n\t\tbrowserName = 'Safari';\n\t} else if (\n\t\tuserAgent.includes( 'MSIE' ) ||\n\t\tuserAgent.includes( 'Trident' )\n\t) {\n\t\tbrowserName = 'Internet Explorer';\n\t} else if ( userAgent.includes( 'Opera' ) || userAgent.includes( 'OPR' ) ) {\n\t\tbrowserName = 'Opera';\n\t}\n\n\treturn browserName;\n}\n\nexport function areMapsEqual< Key, Value >(\n\tmap1: Map< Key, Value >,\n\tmap2: Map< Key, Value >,\n\tcomparatorFn: ( value1: Value, value2: Value ) => boolean\n): boolean {\n\tif ( map1.size !== map2.size ) {\n\t\treturn false;\n\t}\n\n\tfor ( const [ key, value1 ] of map1.entries() ) {\n\t\tif ( ! map2.has( key ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! comparatorFn( value1, map2.get( key )! ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Check if two collaborator infos are equal.\n *\n * @param collaboratorInfo1 - The first collaborator info.\n * @param collaboratorInfo2 - The second collaborator info.\n * @return True if the collaborator infos are equal, false otherwise.\n */\nexport function areCollaboratorInfosEqual(\n\tcollaboratorInfo1?: CollaboratorInfo,\n\tcollaboratorInfo2?: CollaboratorInfo\n): boolean {\n\tif ( ! collaboratorInfo1 || ! collaboratorInfo2 ) {\n\t\treturn collaboratorInfo1 === collaboratorInfo2;\n\t}\n\n\tif (\n\t\tObject.keys( collaboratorInfo1 ).length !==\n\t\tObject.keys( collaboratorInfo2 ).length\n\t) {\n\t\treturn false;\n\t}\n\n\treturn Object.entries( collaboratorInfo1 ).every( ( [ key, value ] ) => {\n\t\t// Update this function with any non-primitive fields added to CollaboratorInfo.\n\t\treturn value === collaboratorInfo2[ key as keyof CollaboratorInfo ];\n\t} );\n}\n\n/**\n * Generate a collaborator info object from a current collaborator.\n *\n * @param currentCollaborator - The current collaborator.\n * @return The collaborator info object.\n */\nexport function generateCollaboratorInfo(\n\tcurrentCollaborator: User< 'view' >\n): CollaboratorInfo {\n\t// eslint-disable-next-line camelcase\n\tconst { avatar_urls, id, name, slug } = currentCollaborator;\n\treturn {\n\t\tavatar_urls, // eslint-disable-line camelcase\n\t\tbrowserType: getBrowserName(),\n\t\tenteredAt: Date.now(),\n\t\tid,\n\t\tname,\n\t\tslug,\n\t};\n}\n\nexport function getRecordValue< RecordType, Key extends keyof RecordType >(\n\tobj: unknown,\n\tkey: Key\n): RecordType[ Key ] | null {\n\tif ( 'object' === typeof obj && null !== obj && key in obj ) {\n\t\treturn ( obj as RecordType )[ key ];\n\t}\n\n\treturn null;\n}\n\nexport function getTypedKeys< T extends object >( obj: T ): Array< keyof T > {\n\treturn Object.keys( obj ) as Array< keyof T >;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,iBAAyB;AACjC,QAAM,YAAY,OAAO,UAAU;AACnC,MAAI,cAAc;AAElB,MAAK,UAAU,SAAU,SAAU,GAAI;AACtC,kBAAc;AAAA,EACf,WAAY,UAAU,SAAU,KAAM,GAAI;AACzC,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,QAAS,KAC7B,CAAE,UAAU,SAAU,KAAM,GAC3B;AACD,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,QAAS,KAC7B,CAAE,UAAU,SAAU,QAAS,GAC9B;AACD,kBAAc;AAAA,EACf,WACC,UAAU,SAAU,MAAO,KAC3B,UAAU,SAAU,SAAU,GAC7B;AACD,kBAAc;AAAA,EACf,WAAY,UAAU,SAAU,OAAQ,KAAK,UAAU,SAAU,KAAM,GAAI;AAC1E,kBAAc;AAAA,EACf;AAEA,SAAO;AACR;AAEO,SAAS,aACf,MACA,MACA,cACU;AACV,MAAK,KAAK,SAAS,KAAK,MAAO;AAC9B,WAAO;AAAA,EACR;AAEA,aAAY,CAAE,KAAK,MAAO,KAAK,KAAK,QAAQ,GAAI;AAC/C,QAAK,CAAE,KAAK,IAAK,GAAI,GAAI;AACxB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,aAAc,QAAQ,KAAK,IAAK,GAAI,CAAG,GAAI;AACjD,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;AASO,SAAS,0BACf,mBACA,mBACU;AACV,MAAK,CAAE,qBAAqB,CAAE,mBAAoB;AACjD,WAAO,sBAAsB;AAAA,EAC9B;AAEA,MACC,OAAO,KAAM,iBAAkB,EAAE,WACjC,OAAO,KAAM,iBAAkB,EAAE,QAChC;AACD,WAAO;AAAA,EACR;AAEA,SAAO,OAAO,QAAS,iBAAkB,EAAE,MAAO,CAAE,CAAE,KAAK,KAAM,MAAO;AAEvE,WAAO,UAAU,kBAAmB,GAA8B;AAAA,EACnE,CAAE;AACH;AAQO,SAAS,yBACf,qBACmB;AAEnB,QAAM,EAAE,aAAa,IAAI,MAAM,KAAK,IAAI;AACxC,SAAO;AAAA,IACN;AAAA;AAAA,IACA,aAAa,eAAe;AAAA,IAC5B,WAAW,KAAK,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,eACf,KACA,KAC2B;AAC3B,MAAK,aAAa,OAAO,OAAO,SAAS,OAAO,OAAO,KAAM;AAC5D,WAAS,IAAqB,GAAI;AAAA,EACnC;AAEA,SAAO;AACR;AAEO,SAAS,aAAkC,KAA2B;AAC5E,SAAO,OAAO,KAAM,GAAI;AACzB;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/batch/create-batch.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport defaultProcessor from './default-processor';\n\n/**\n * Creates a batch, which can be used to combine multiple API requests into one\n * API request using the WordPress batch processing API (/v1/batch).\n *\n * ```\n * const batch = createBatch();\n * const dunePromise = batch.add( {\n * path: '/v1/books',\n * method: 'POST',\n * data: { title: 'Dune' }\n * } );\n * const lotrPromise = batch.add( {\n * path: '/v1/books',\n * method: 'POST',\n * data: { title: 'Lord of the Rings' }\n * } );\n * const isSuccess = await batch.run(); // Sends one POST to /v1/batch.\n * if ( isSuccess ) {\n * console.log(\n * 'Saved two books:',\n * await dunePromise,\n * await lotrPromise\n * );\n * }\n * ```\n *\n * @param {Function} [processor] Processor function. Can be used to replace the\n * default functionality which is to send an API\n * request to /v1/batch. Is given an array of\n * inputs and must return a promise that\n * resolves to an array of objects containing\n * either `output` or `error`.\n */\nexport default function createBatch( processor = defaultProcessor ) {\n\tlet lastId = 0;\n\t/** @type {Array<{ input: any; resolve: ( value: any ) => void; reject: ( error: any ) => void }>} */\n\tlet queue = [];\n\tconst pending = new ObservableSet();\n\n\treturn {\n\t\t/**\n\t\t * Adds an input to the batch and returns a promise that is resolved or\n\t\t * rejected when the input is processed by `batch.run()`.\n\t\t *\n\t\t * You may also pass a thunk which allows inputs to be added\n\t\t * asynchronously.\n\t\t *\n\t\t * ```\n\t\t * // Both are allowed:\n\t\t * batch.add( { path: '/v1/books', ... } );\n\t\t * batch.add( ( add ) => add( { path: '/v1/books', ... } ) );\n\t\t * ```\n\t\t *\n\t\t * If a thunk is passed, `batch.run()` will pause until either:\n\t\t *\n\t\t * - The thunk calls its `add` argument, or;\n\t\t * - The thunk returns a promise and that promise resolves, or;\n\t\t * - The thunk returns a non-promise.\n\t\t *\n\t\t * @param {any|Function} inputOrThunk Input to add or thunk to execute.\n\t\t *\n\t\t * @return {Promise|any} If given an input, returns a promise that\n\t\t * is resolved or rejected when the batch is\n\t\t * processed. If given a thunk, returns the return\n\t\t * value of that thunk.\n\t\t */\n\t\tadd( inputOrThunk ) {\n\t\t\tconst id = ++lastId;\n\t\t\tpending.add( id );\n\n\t\t\tconst add = ( input ) =>\n\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\tqueue.push( {\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tresolve,\n\t\t\t\t\t\treject,\n\t\t\t\t\t} );\n\t\t\t\t\tpending.delete( id );\n\t\t\t\t} );\n\n\t\t\tif ( typeof inputOrThunk === 'function' ) {\n\t\t\t\treturn Promise.resolve( inputOrThunk( add ) ).finally( () => {\n\t\t\t\t\tpending.delete( id );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn add( inputOrThunk );\n\t\t},\n\n\t\t/**\n\t\t * Runs the batch. This calls `batchProcessor` and resolves or rejects\n\t\t * all promises returned by `add()`.\n\t\t *\n\t\t * @return {Promise<boolean>} A promise that resolves to a boolean that is true\n\t\t * if the processor returned no errors.\n\t\t */\n\t\tasync run() {\n\t\t\tif ( pending.size ) {\n\t\t\t\tawait new Promise( ( resolve ) => {\n\t\t\t\t\tconst unsubscribe = pending.subscribe( () => {\n\t\t\t\t\t\tif ( ! pending.size ) {\n\t\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\t\tresolve( undefined );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tlet results;\n\n\t\t\ttry {\n\t\t\t\tresults = await processor(\n\t\t\t\t\tqueue.map( ( { input } ) => input )\n\t\t\t\t);\n\n\t\t\t\tif ( results.length !== queue.length ) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'run: Array returned by processor must be same size as input array.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tfor ( const { reject } of queue ) {\n\t\t\t\t\treject( error );\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tlet isSuccess = true;\n\n\t\t\tresults.forEach( ( result, key ) => {\n\t\t\t\tconst queueItem = queue[ key ];\n\n\t\t\t\tif ( result?.error ) {\n\t\t\t\t\tqueueItem?.reject( result.error );\n\t\t\t\t\tisSuccess = false;\n\t\t\t\t} else {\n\t\t\t\t\tqueueItem?.resolve( result?.output ?? result );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tqueue = [];\n\n\t\t\treturn isSuccess;\n\t\t},\n\t};\n}\n\nclass ObservableSet {\n\tconstructor( ...args ) {\n\t\tthis.set = new Set( ...args );\n\t\tthis.subscribers = new Set();\n\t}\n\n\tget size() {\n\t\treturn this.set.size;\n\t}\n\n\tadd( value ) {\n\t\tthis.set.add( value );\n\t\tthis.subscribers.forEach( ( subscriber ) => subscriber() );\n\t\treturn this;\n\t}\n\n\tdelete( value ) {\n\t\tconst isSuccess = this.set.delete( value );\n\t\tthis.subscribers.forEach( ( subscriber ) => subscriber() );\n\t\treturn isSuccess;\n\t}\n\n\tsubscribe( subscriber ) {\n\t\tthis.subscribers.add( subscriber );\n\t\treturn () => {\n\t\t\tthis.subscribers.delete( subscriber );\n\t\t};\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,+BAA6B;AAmCd,SAAR,YAA8B,YAAY,yBAAAA,SAAmB;AACnE,MAAI,SAAS;AAEb,MAAI,QAAQ,CAAC;AACb,QAAM,UAAU,IAAI,cAAc;AAElC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA2BN,IAAK,cAAe;AACnB,YAAM,KAAK,EAAE;AACb,cAAQ,IAAK,EAAG;AAEhB,YAAM,MAAM,CAAE,UACb,IAAI,QAAS,CAAE,SAAS,WAAY;AACnC,cAAM,KAAM;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAE;AACF,gBAAQ,OAAQ,EAAG;AAAA,MACpB,CAAE;AAEH,UAAK,OAAO,iBAAiB,YAAa;AACzC,eAAO,QAAQ,QAAS,aAAc,GAAI,CAAE,EAAE,QAAS,MAAM;AAC5D,kBAAQ,OAAQ,EAAG;AAAA,QACpB,CAAE;AAAA,MACH;AAEA,aAAO,IAAK,YAAa;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,MAAM;AACX,UAAK,QAAQ,MAAO;AACnB,cAAM,IAAI,QAAS,CAAE,YAAa;AACjC,gBAAM,cAAc,QAAQ,UAAW,MAAM;AAC5C,gBAAK,CAAE,QAAQ,MAAO;AACrB,0BAAY;AACZ,sBAAS,MAAU;AAAA,YACpB;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAEA,UAAI;AAEJ,UAAI;AACH,kBAAU,MAAM;AAAA,UACf,MAAM,IAAK,CAAE,EAAE,MAAM,MAAO,KAAM;AAAA,QACnC;AAEA,YAAK,QAAQ,WAAW,MAAM,QAAS;AACtC,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAAA,MACD,SAAU,OAAQ;AACjB,mBAAY,EAAE,OAAO,KAAK,OAAQ;AACjC,iBAAQ,KAAM;AAAA,QACf;AAEA,cAAM;AAAA,MACP;AAEA,UAAI,YAAY;AAEhB,cAAQ,QAAS,CAAE,QAAQ,QAAS;AACnC,cAAM,YAAY,MAAO,GAAI;AAE7B,YAAK,QAAQ,OAAQ;AACpB,qBAAW,OAAQ,OAAO,KAAM;AAChC,sBAAY;AAAA,QACb,OAAO;AACN,qBAAW,QAAS,QAAQ,UAAU,MAAO;AAAA,QAC9C;AAAA,MACD,CAAE;AAEF,cAAQ,CAAC;AAET,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEA,IAAM,gBAAN,MAAoB;AAAA,EACnB,eAAgB,MAAO;AACtB,SAAK,MAAM,IAAI,IAAK,GAAG,IAAK;AAC5B,SAAK,cAAc,oBAAI,IAAI;AAAA,EAC5B;AAAA,EAEA,IAAI,OAAO;AACV,WAAO,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,IAAK,OAAQ;AACZ,SAAK,IAAI,IAAK,KAAM;AACpB,SAAK,YAAY,QAAS,CAAE,eAAgB,WAAW,CAAE;AACzD,WAAO;AAAA,EACR;AAAA,EAEA,OAAQ,OAAQ;AACf,UAAM,YAAY,KAAK,IAAI,OAAQ,KAAM;AACzC,SAAK,YAAY,QAAS,CAAE,eAAgB,WAAW,CAAE;AACzD,WAAO;AAAA,EACR;AAAA,EAEA,UAAW,YAAa;AACvB,SAAK,YAAY,IAAK,UAAW;AACjC,WAAO,MAAM;AACZ,WAAK,YAAY,OAAQ,UAAW;AAAA,IACrC;AAAA,EACD;AACD;",
4
+ "sourcesContent": ["import defaultProcessor from './default-processor';\n\n/**\n * Creates a batch, which can be used to combine multiple API requests into one\n * API request using the WordPress batch processing API (/v1/batch).\n *\n * ```\n * const batch = createBatch();\n * const dunePromise = batch.add( {\n * path: '/v1/books',\n * method: 'POST',\n * data: { title: 'Dune' }\n * } );\n * const lotrPromise = batch.add( {\n * path: '/v1/books',\n * method: 'POST',\n * data: { title: 'Lord of the Rings' }\n * } );\n * const isSuccess = await batch.run(); // Sends one POST to /v1/batch.\n * if ( isSuccess ) {\n * console.log(\n * 'Saved two books:',\n * await dunePromise,\n * await lotrPromise\n * );\n * }\n * ```\n *\n * @param {Function} [processor] Processor function. Can be used to replace the\n * default functionality which is to send an API\n * request to /v1/batch. Is given an array of\n * inputs and must return a promise that\n * resolves to an array of objects containing\n * either `output` or `error`.\n */\nexport default function createBatch( processor = defaultProcessor ) {\n\tlet lastId = 0;\n\t/** @type {Array<{ input: any; resolve: ( value: any ) => void; reject: ( error: any ) => void }>} */\n\tlet queue = [];\n\tconst pending = new ObservableSet();\n\n\treturn {\n\t\t/**\n\t\t * Adds an input to the batch and returns a promise that is resolved or\n\t\t * rejected when the input is processed by `batch.run()`.\n\t\t *\n\t\t * You may also pass a thunk which allows inputs to be added\n\t\t * asynchronously.\n\t\t *\n\t\t * ```\n\t\t * // Both are allowed:\n\t\t * batch.add( { path: '/v1/books', ... } );\n\t\t * batch.add( ( add ) => add( { path: '/v1/books', ... } ) );\n\t\t * ```\n\t\t *\n\t\t * If a thunk is passed, `batch.run()` will pause until either:\n\t\t *\n\t\t * - The thunk calls its `add` argument, or;\n\t\t * - The thunk returns a promise and that promise resolves, or;\n\t\t * - The thunk returns a non-promise.\n\t\t *\n\t\t * @param {any|Function} inputOrThunk Input to add or thunk to execute.\n\t\t *\n\t\t * @return {Promise|any} If given an input, returns a promise that\n\t\t * is resolved or rejected when the batch is\n\t\t * processed. If given a thunk, returns the return\n\t\t * value of that thunk.\n\t\t */\n\t\tadd( inputOrThunk ) {\n\t\t\tconst id = ++lastId;\n\t\t\tpending.add( id );\n\n\t\t\tconst add = ( input ) =>\n\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\tqueue.push( {\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tresolve,\n\t\t\t\t\t\treject,\n\t\t\t\t\t} );\n\t\t\t\t\tpending.delete( id );\n\t\t\t\t} );\n\n\t\t\tif ( typeof inputOrThunk === 'function' ) {\n\t\t\t\treturn Promise.resolve( inputOrThunk( add ) ).finally( () => {\n\t\t\t\t\tpending.delete( id );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn add( inputOrThunk );\n\t\t},\n\n\t\t/**\n\t\t * Runs the batch. This calls `batchProcessor` and resolves or rejects\n\t\t * all promises returned by `add()`.\n\t\t *\n\t\t * @return {Promise<boolean>} A promise that resolves to a boolean that is true\n\t\t * if the processor returned no errors.\n\t\t */\n\t\tasync run() {\n\t\t\tif ( pending.size ) {\n\t\t\t\tawait new Promise( ( resolve ) => {\n\t\t\t\t\tconst unsubscribe = pending.subscribe( () => {\n\t\t\t\t\t\tif ( ! pending.size ) {\n\t\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\t\tresolve( undefined );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tlet results;\n\n\t\t\ttry {\n\t\t\t\tresults = await processor(\n\t\t\t\t\tqueue.map( ( { input } ) => input )\n\t\t\t\t);\n\n\t\t\t\tif ( results.length !== queue.length ) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'run: Array returned by processor must be same size as input array.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tfor ( const { reject } of queue ) {\n\t\t\t\t\treject( error );\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tlet isSuccess = true;\n\n\t\t\tresults.forEach( ( result, key ) => {\n\t\t\t\tconst queueItem = queue[ key ];\n\n\t\t\t\tif ( result?.error ) {\n\t\t\t\t\tqueueItem?.reject( result.error );\n\t\t\t\t\tisSuccess = false;\n\t\t\t\t} else {\n\t\t\t\t\tqueueItem?.resolve( result?.output ?? result );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tqueue = [];\n\n\t\t\treturn isSuccess;\n\t\t},\n\t};\n}\n\nclass ObservableSet {\n\tconstructor( ...args ) {\n\t\tthis.set = new Set( ...args );\n\t\tthis.subscribers = new Set();\n\t}\n\n\tget size() {\n\t\treturn this.set.size;\n\t}\n\n\tadd( value ) {\n\t\tthis.set.add( value );\n\t\tthis.subscribers.forEach( ( subscriber ) => subscriber() );\n\t\treturn this;\n\t}\n\n\tdelete( value ) {\n\t\tconst isSuccess = this.set.delete( value );\n\t\tthis.subscribers.forEach( ( subscriber ) => subscriber() );\n\t\treturn isSuccess;\n\t}\n\n\tsubscribe( subscriber ) {\n\t\tthis.subscribers.add( subscriber );\n\t\treturn () => {\n\t\t\tthis.subscribers.delete( subscriber );\n\t\t};\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAA6B;AAmCd,SAAR,YAA8B,YAAY,yBAAAA,SAAmB;AACnE,MAAI,SAAS;AAEb,MAAI,QAAQ,CAAC;AACb,QAAM,UAAU,IAAI,cAAc;AAElC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA2BN,IAAK,cAAe;AACnB,YAAM,KAAK,EAAE;AACb,cAAQ,IAAK,EAAG;AAEhB,YAAM,MAAM,CAAE,UACb,IAAI,QAAS,CAAE,SAAS,WAAY;AACnC,cAAM,KAAM;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAE;AACF,gBAAQ,OAAQ,EAAG;AAAA,MACpB,CAAE;AAEH,UAAK,OAAO,iBAAiB,YAAa;AACzC,eAAO,QAAQ,QAAS,aAAc,GAAI,CAAE,EAAE,QAAS,MAAM;AAC5D,kBAAQ,OAAQ,EAAG;AAAA,QACpB,CAAE;AAAA,MACH;AAEA,aAAO,IAAK,YAAa;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,MAAM;AACX,UAAK,QAAQ,MAAO;AACnB,cAAM,IAAI,QAAS,CAAE,YAAa;AACjC,gBAAM,cAAc,QAAQ,UAAW,MAAM;AAC5C,gBAAK,CAAE,QAAQ,MAAO;AACrB,0BAAY;AACZ,sBAAS,MAAU;AAAA,YACpB;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAEA,UAAI;AAEJ,UAAI;AACH,kBAAU,MAAM;AAAA,UACf,MAAM,IAAK,CAAE,EAAE,MAAM,MAAO,KAAM;AAAA,QACnC;AAEA,YAAK,QAAQ,WAAW,MAAM,QAAS;AACtC,gBAAM,IAAI;AAAA,YACT;AAAA,UACD;AAAA,QACD;AAAA,MACD,SAAU,OAAQ;AACjB,mBAAY,EAAE,OAAO,KAAK,OAAQ;AACjC,iBAAQ,KAAM;AAAA,QACf;AAEA,cAAM;AAAA,MACP;AAEA,UAAI,YAAY;AAEhB,cAAQ,QAAS,CAAE,QAAQ,QAAS;AACnC,cAAM,YAAY,MAAO,GAAI;AAE7B,YAAK,QAAQ,OAAQ;AACpB,qBAAW,OAAQ,OAAO,KAAM;AAChC,sBAAY;AAAA,QACb,OAAO;AACN,qBAAW,QAAS,QAAQ,UAAU,MAAO;AAAA,QAC9C;AAAA,MACD,CAAE;AAEF,cAAQ,CAAC;AAET,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEA,IAAM,gBAAN,MAAoB;AAAA,EACnB,eAAgB,MAAO;AACtB,SAAK,MAAM,IAAI,IAAK,GAAG,IAAK;AAC5B,SAAK,cAAc,oBAAI,IAAI;AAAA,EAC5B;AAAA,EAEA,IAAI,OAAO;AACV,WAAO,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,IAAK,OAAQ;AACZ,SAAK,IAAI,IAAK,KAAM;AACpB,SAAK,YAAY,QAAS,CAAE,eAAgB,WAAW,CAAE;AACzD,WAAO;AAAA,EACR;AAAA,EAEA,OAAQ,OAAQ;AACf,UAAM,YAAY,KAAK,IAAI,OAAQ,KAAM;AACzC,SAAK,YAAY,QAAS,CAAE,eAAgB,WAAW,CAAE;AACzD,WAAO;AAAA,EACR;AAAA,EAEA,UAAW,YAAa;AACvB,SAAK,YAAY,IAAK,UAAW;AACjC,WAAO,MAAM;AACZ,WAAK,YAAY,OAAQ,UAAW;AAAA,IACrC;AAAA,EACD;AACD;",
6
6
  "names": ["defaultProcessor"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/batch/default-processor.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Maximum number of requests to place in a single batch request. Obtained by\n * sending a preflight OPTIONS request to /batch/v1/.\n *\n * @type {number?}\n */\nlet maxItems = null;\n\nfunction chunk( arr, chunkSize ) {\n\tconst tmp = [ ...arr ];\n\tconst cache = [];\n\twhile ( tmp.length ) {\n\t\tcache.push( tmp.splice( 0, chunkSize ) );\n\t}\n\n\treturn cache;\n}\n\n/**\n * Default batch processor. Sends its input requests to /batch/v1.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was successful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tif ( maxItems === null ) {\n\t\tconst preflightResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'OPTIONS',\n\t\t} );\n\t\tmaxItems = preflightResponse.endpoints[ 0 ].args.requests.maxItems;\n\t}\n\n\tconst results = [];\n\n\t// @ts-ignore We would have crashed or never gotten to this point if we hadn't received the maxItems count.\n\tfor ( const batchRequests of chunk( requests, maxItems ) ) {\n\t\tconst batchResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tvalidation: 'require-all-validate',\n\t\t\t\trequests: batchRequests.map( ( request ) => ( {\n\t\t\t\t\tpath: request.path,\n\t\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\t\tmethod: request.method,\n\t\t\t\t\theaders: request.headers,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t} );\n\n\t\tlet batchResults;\n\n\t\tif ( batchResponse.failed ) {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => ( {\n\t\t\t\terror: response?.body,\n\t\t\t} ) );\n\t\t} else {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => {\n\t\t\t\tconst result = {};\n\t\t\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\t\t\tresult.output = response.body;\n\t\t\t\t} else {\n\t\t\t\t\tresult.error = response.body;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}\n\n\t\tresults.push( ...batchResults );\n\t}\n\n\treturn results;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAqB;AAQrB,IAAI,WAAW;AAEf,SAAS,MAAO,KAAK,WAAY;AAChC,QAAM,MAAM,CAAE,GAAG,GAAI;AACrB,QAAM,QAAQ,CAAC;AACf,SAAQ,IAAI,QAAS;AACpB,UAAM,KAAM,IAAI,OAAQ,GAAG,SAAU,CAAE;AAAA,EACxC;AAEA,SAAO;AACR;AAWA,eAAO,iBAAyC,UAAW;AAC1D,MAAK,aAAa,MAAO;AACxB,UAAM,oBAAoB,UAAM,iBAAAA,SAAU;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAE;AACF,eAAW,kBAAkB,UAAW,CAAE,EAAE,KAAK,SAAS;AAAA,EAC3D;AAEA,QAAM,UAAU,CAAC;AAGjB,aAAY,iBAAiB,MAAO,UAAU,QAAS,GAAI;AAC1D,UAAM,gBAAgB,UAAM,iBAAAA,SAAU;AAAA,MACrC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,YAAY;AAAA,QACZ,UAAU,cAAc,IAAK,CAAE,aAAe;AAAA,UAC7C,MAAM,QAAQ;AAAA,UACd,MAAM,QAAQ;AAAA;AAAA,UACd,QAAQ,QAAQ;AAAA,UAChB,SAAS,QAAQ;AAAA,QAClB,EAAI;AAAA,MACL;AAAA,IACD,CAAE;AAEF,QAAI;AAEJ,QAAK,cAAc,QAAS;AAC3B,qBAAe,cAAc,UAAU,IAAK,CAAE,cAAgB;AAAA,QAC7D,OAAO,UAAU;AAAA,MAClB,EAAI;AAAA,IACL,OAAO;AACN,qBAAe,cAAc,UAAU,IAAK,CAAE,aAAc;AAC3D,cAAM,SAAS,CAAC;AAChB,YAAK,SAAS,UAAU,OAAO,SAAS,SAAS,KAAM;AACtD,iBAAO,SAAS,SAAS;AAAA,QAC1B,OAAO;AACN,iBAAO,QAAQ,SAAS;AAAA,QACzB;AACA,eAAO;AAAA,MACR,CAAE;AAAA,IACH;AAEA,YAAQ,KAAM,GAAG,YAAa;AAAA,EAC/B;AAEA,SAAO;AACR;",
4
+ "sourcesContent": ["import apiFetch from '@wordpress/api-fetch';\n\n/**\n * Maximum number of requests to place in a single batch request. Obtained by\n * sending a preflight OPTIONS request to /batch/v1/.\n *\n * @type {number?}\n */\nlet maxItems = null;\n\nfunction chunk( arr, chunkSize ) {\n\tconst tmp = [ ...arr ];\n\tconst cache = [];\n\twhile ( tmp.length ) {\n\t\tcache.push( tmp.splice( 0, chunkSize ) );\n\t}\n\n\treturn cache;\n}\n\n/**\n * Default batch processor. Sends its input requests to /batch/v1.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was successful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tif ( maxItems === null ) {\n\t\tconst preflightResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'OPTIONS',\n\t\t} );\n\t\tmaxItems = preflightResponse.endpoints[ 0 ].args.requests.maxItems;\n\t}\n\n\tconst results = [];\n\n\tfor ( const batchRequests of chunk( requests, maxItems ) ) {\n\t\tconst batchResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tvalidation: 'require-all-validate',\n\t\t\t\trequests: batchRequests.map( ( request ) => ( {\n\t\t\t\t\tpath: request.path,\n\t\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\t\tmethod: request.method,\n\t\t\t\t\theaders: request.headers,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t} );\n\n\t\tlet batchResults;\n\n\t\tif ( batchResponse.failed ) {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => ( {\n\t\t\t\terror: response?.body,\n\t\t\t} ) );\n\t\t} else {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => {\n\t\t\t\tconst result = {};\n\t\t\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\t\t\tresult.output = response.body;\n\t\t\t\t} else {\n\t\t\t\t\tresult.error = response.body;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}\n\n\t\tresults.push( ...batchResults );\n\t}\n\n\treturn results;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AAQrB,IAAI,WAAW;AAEf,SAAS,MAAO,KAAK,WAAY;AAChC,QAAM,MAAM,CAAE,GAAG,GAAI;AACrB,QAAM,QAAQ,CAAC;AACf,SAAQ,IAAI,QAAS;AACpB,UAAM,KAAM,IAAI,OAAQ,GAAG,SAAU,CAAE;AAAA,EACxC;AAEA,SAAO;AACR;AAWA,eAAO,iBAAyC,UAAW;AAC1D,MAAK,aAAa,MAAO;AACxB,UAAM,oBAAoB,UAAM,iBAAAA,SAAU;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAE;AACF,eAAW,kBAAkB,UAAW,CAAE,EAAE,KAAK,SAAS;AAAA,EAC3D;AAEA,QAAM,UAAU,CAAC;AAEjB,aAAY,iBAAiB,MAAO,UAAU,QAAS,GAAI;AAC1D,UAAM,gBAAgB,UAAM,iBAAAA,SAAU;AAAA,MACrC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,YAAY;AAAA,QACZ,UAAU,cAAc,IAAK,CAAE,aAAe;AAAA,UAC7C,MAAM,QAAQ;AAAA,UACd,MAAM,QAAQ;AAAA;AAAA,UACd,QAAQ,QAAQ;AAAA,UAChB,SAAS,QAAQ;AAAA,QAClB,EAAI;AAAA,MACL;AAAA,IACD,CAAE;AAEF,QAAI;AAEJ,QAAK,cAAc,QAAS;AAC3B,qBAAe,cAAc,UAAU,IAAK,CAAE,cAAgB;AAAA,QAC7D,OAAO,UAAU;AAAA,MAClB,EAAI;AAAA,IACL,OAAO;AACN,qBAAe,cAAc,UAAU,IAAK,CAAE,aAAc;AAC3D,cAAM,SAAS,CAAC;AAChB,YAAK,SAAS,UAAU,OAAO,SAAS,SAAS,KAAM;AACtD,iBAAO,SAAS,SAAS;AAAA,QAC1B,OAAO;AACN,iBAAO,QAAQ,SAAS;AAAA,QACzB;AACA,eAAO;AAAA,MACR,CAAE;AAAA,IACH;AAEA,YAAQ,KAAM,GAAG,YAAa;AAAA,EAC/B;AAEA,SAAO;AACR;",
6
6
  "names": ["apiFetch"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/entities-saved-states/entity-record-item.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { CheckboxControl, PanelRow } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../../name';\nimport { getTemplateInfo } from '../../utils/get-template-info';\n\nexport default function EntityRecordItem( { record, checked, onChange } ) {\n\tconst { name, kind, title, key } = record;\n\n\t// Handle templates that might use default descriptive titles.\n\tconst { entityRecordTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( 'postType' !== kind || 'wp_template' !== name ) {\n\t\t\t\treturn {\n\t\t\t\t\tentityRecordTitle: title,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst template = select( STORE_NAME ).getEditedEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\t\tselect( STORE_NAME ).getCurrentTheme() ?? {};\n\n\t\t\treturn {\n\t\t\t\tentityRecordTitle: getTemplateInfo( {\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplateTypes,\n\t\t\t\t} ).title,\n\t\t\t};\n\t\t},\n\t\t[ name, kind, title, key ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<PanelRow>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tdecodeEntities( entityRecordTitle ) || __( 'Untitled' )\n\t\t\t\t\t}\n\t\t\t\t\tchecked={ checked }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tclassName=\"entities-saved-states__change-control\"\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA0C;AAC1C,kBAAmB;AACnB,kBAA0B;AAC1B,2BAA+B;AAK/B,kBAA2B;AAC3B,+BAAgC;AAkC9B;AAhCa,SAAR,iBAAmC,EAAE,QAAQ,SAAS,SAAS,GAAI;AACzE,QAAM,EAAE,MAAM,MAAM,OAAO,IAAI,IAAI;AAGnC,QAAM,EAAE,kBAAkB,QAAI;AAAA,IAC7B,CAAE,WAAY;AACb,UAAK,eAAe,QAAQ,kBAAkB,MAAO;AACpD,eAAO;AAAA,UACN,mBAAmB;AAAA,QACpB;AAAA,MACD;AAEA,YAAM,WAAW,OAAQ,sBAAW,EAAE;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,YAAM,EAAE,wBAAwB,gBAAgB,CAAC,EAAE,IAClD,OAAQ,sBAAW,EAAE,gBAAgB,KAAK,CAAC;AAE5C,aAAO;AAAA,QACN,uBAAmB,0CAAiB;AAAA,UACnC;AAAA,UACA;AAAA,QACD,CAAE,EAAE;AAAA,MACL;AAAA,IACD;AAAA,IACA,CAAE,MAAM,MAAM,OAAO,GAAI;AAAA,EAC1B;AAEA,SACC,2EACC,sDAAC,8BACA;AAAA,IAAC;AAAA;AAAA,MACA,WACC,qCAAgB,iBAAkB,SAAK,gBAAI,UAAW;AAAA,MAEvD;AAAA,MACA;AAAA,MACA,WAAU;AAAA;AAAA,EACX,GACD,GACD;AAEF;",
4
+ "sourcesContent": ["import { CheckboxControl, PanelRow } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { STORE_NAME } from '../../name';\nimport { getTemplateInfo } from '../../utils/get-template-info';\n\nexport default function EntityRecordItem( { record, checked, onChange } ) {\n\tconst { name, kind, title, key } = record;\n\n\t// Handle templates that might use default descriptive titles.\n\tconst { entityRecordTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( 'postType' !== kind || 'wp_template' !== name ) {\n\t\t\t\treturn {\n\t\t\t\t\tentityRecordTitle: title,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst template = select( STORE_NAME ).getEditedEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tkey\n\t\t\t);\n\n\t\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\t\tselect( STORE_NAME ).getCurrentTheme() ?? {};\n\n\t\t\treturn {\n\t\t\t\tentityRecordTitle: getTemplateInfo( {\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplateTypes,\n\t\t\t\t} ).title,\n\t\t\t};\n\t\t},\n\t\t[ name, kind, title, key ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<PanelRow>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tdecodeEntities( entityRecordTitle ) || __( 'Untitled' )\n\t\t\t\t\t}\n\t\t\t\t\tchecked={ checked }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tclassName=\"entities-saved-states__change-control\"\n\t\t\t\t/>\n\t\t\t</PanelRow>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0C;AAC1C,kBAAmB;AACnB,kBAA0B;AAC1B,2BAA+B;AAC/B,kBAA2B;AAC3B,+BAAgC;AAkC9B;AAhCa,SAAR,iBAAmC,EAAE,QAAQ,SAAS,SAAS,GAAI;AACzE,QAAM,EAAE,MAAM,MAAM,OAAO,IAAI,IAAI;AAGnC,QAAM,EAAE,kBAAkB,QAAI;AAAA,IAC7B,CAAE,WAAY;AACb,UAAK,eAAe,QAAQ,kBAAkB,MAAO;AACpD,eAAO;AAAA,UACN,mBAAmB;AAAA,QACpB;AAAA,MACD;AAEA,YAAM,WAAW,OAAQ,sBAAW,EAAE;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,YAAM,EAAE,wBAAwB,gBAAgB,CAAC,EAAE,IAClD,OAAQ,sBAAW,EAAE,gBAAgB,KAAK,CAAC;AAE5C,aAAO;AAAA,QACN,uBAAmB,0CAAiB;AAAA,UACnC;AAAA,UACA;AAAA,QACD,CAAE,EAAE;AAAA,MACL;AAAA,IACD;AAAA,IACA,CAAE,MAAM,MAAM,OAAO,GAAI;AAAA,EAC1B;AAEA,SACC,2EACC,sDAAC,8BACA;AAAA,IAAC;AAAA;AAAA,MACA,WACC,qCAAgB,iBAAkB,SAAK,gBAAI,UAAW;AAAA,MAEvD;AAAA,MACA;AAAA,MACA,WAAU;AAAA;AAAA,EACX,GACD,GACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/entities-saved-states/entity-type-list.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport { getGlobalStylesChanges } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport EntityRecordItem from './entity-record-item';\nimport { STORE_NAME } from '../../name';\n\nfunction getEntityDescription( entity, count ) {\n\tswitch ( entity ) {\n\t\tcase 'site':\n\t\t\treturn 1 === count\n\t\t\t\t? __( 'This change will affect your whole site.' )\n\t\t\t\t: __( 'These changes will affect your whole site.' );\n\t\tcase 'wp_template':\n\t\t\treturn __(\n\t\t\t\t'This change will affect other parts of your site that use this template.'\n\t\t\t);\n\t\tcase 'page':\n\t\tcase 'post':\n\t\t\treturn __( 'The following has been modified.' );\n\t}\n}\n\nfunction GlobalStylesDescription( { record } ) {\n\tconst { editedRecord, savedRecord } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getEntityRecord } =\n\t\t\t\tselect( STORE_NAME );\n\t\t\treturn {\n\t\t\t\teditedRecord: getEditedEntityRecord(\n\t\t\t\t\trecord.kind,\n\t\t\t\t\trecord.name,\n\t\t\t\t\trecord.key\n\t\t\t\t),\n\t\t\t\tsavedRecord: getEntityRecord(\n\t\t\t\t\trecord.kind,\n\t\t\t\t\trecord.name,\n\t\t\t\t\trecord.key\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ record.kind, record.name, record.key ]\n\t);\n\n\tconst globalStylesChanges = getGlobalStylesChanges(\n\t\teditedRecord,\n\t\tsavedRecord,\n\t\t{\n\t\t\tmaxResults: 10,\n\t\t}\n\t);\n\treturn globalStylesChanges.length ? (\n\t\t<ul className=\"entities-saved-states__changes\">\n\t\t\t{ globalStylesChanges.map( ( change ) => (\n\t\t\t\t<li key={ change }>{ change }</li>\n\t\t\t) ) }\n\t\t</ul>\n\t) : null;\n}\n\nfunction EntityDescription( { record, count } ) {\n\tif ( 'globalStyles' === record?.name ) {\n\t\treturn null;\n\t}\n\tconst description = getEntityDescription( record?.name, count );\n\treturn description ? <PanelRow>{ description }</PanelRow> : null;\n}\n\nexport default function EntityTypeList( {\n\tlist,\n\tunselectedEntities,\n\tsetUnselectedEntities,\n} ) {\n\tconst count = list.length;\n\tconst firstRecord = list[ 0 ];\n\tconst entityConfig = useSelect(\n\t\t( select ) =>\n\t\t\tselect( STORE_NAME ).getEntityConfig(\n\t\t\t\tfirstRecord.kind,\n\t\t\t\tfirstRecord.name\n\t\t\t),\n\t\t[ firstRecord.kind, firstRecord.name ]\n\t);\n\n\tlet entityLabel = entityConfig.label;\n\tif ( firstRecord?.name === 'wp_template_part' ) {\n\t\tentityLabel =\n\t\t\t1 === count ? __( 'Template Part' ) : __( 'Template Parts' );\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ entityLabel }\n\t\t\tinitialOpen\n\t\t\tclassName=\"entities-saved-states__panel-body\"\n\t\t>\n\t\t\t<EntityDescription record={ firstRecord } count={ count } />\n\t\t\t{ list.map( ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityRecordItem\n\t\t\t\t\t\tkey={ record.key || record.property }\n\t\t\t\t\t\trecord={ record }\n\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t! unselectedEntities.some(\n\t\t\t\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\t\t\t\telt.kind === record.kind &&\n\t\t\t\t\t\t\t\t\telt.name === record.name &&\n\t\t\t\t\t\t\t\t\telt.key === record.key &&\n\t\t\t\t\t\t\t\t\telt.property === record.property\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetUnselectedEntities( record, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ 'globalStyles' === firstRecord?.name && (\n\t\t\t\t<GlobalStylesDescription record={ firstRecord } />\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,kBAA0B;AAC1B,wBAAoC;AACpC,kCAAuC;AAKvC,gCAA6B;AAC7B,kBAA2B;AAiDvB;AA/CJ,SAAS,qBAAsB,QAAQ,OAAQ;AAC9C,UAAS,QAAS;AAAA,IACjB,KAAK;AACJ,aAAO,MAAM,YACV,gBAAI,0CAA2C,QAC/C,gBAAI,4CAA6C;AAAA,IACrD,KAAK;AACJ,iBAAO;AAAA,QACN;AAAA,MACD;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJ,iBAAO,gBAAI,kCAAmC;AAAA,EAChD;AACD;AAEA,SAAS,wBAAyB,EAAE,OAAO,GAAI;AAC9C,QAAM,EAAE,cAAc,YAAY,QAAI;AAAA,IACrC,CAAE,WAAY;AACb,YAAM,EAAE,uBAAuB,gBAAgB,IAC9C,OAAQ,sBAAW;AACpB,aAAO;AAAA,QACN,cAAc;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,QACA,aAAa;AAAA,UACZ,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,OAAO,MAAM,OAAO,MAAM,OAAO,GAAI;AAAA,EACxC;AAEA,QAAM,0BAAsB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,MACC,YAAY;AAAA,IACb;AAAA,EACD;AACA,SAAO,oBAAoB,SAC1B,4CAAC,QAAG,WAAU,kCACX,8BAAoB,IAAK,CAAE,WAC5B,4CAAC,QAAoB,oBAAX,MAAmB,CAC5B,GACH,IACG;AACL;AAEA,SAAS,kBAAmB,EAAE,QAAQ,MAAM,GAAI;AAC/C,MAAK,mBAAmB,QAAQ,MAAO;AACtC,WAAO;AAAA,EACR;AACA,QAAM,cAAc,qBAAsB,QAAQ,MAAM,KAAM;AAC9D,SAAO,cAAc,4CAAC,8BAAW,uBAAa,IAAc;AAC7D;AAEe,SAAR,eAAiC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,QAAQ,KAAK;AACnB,QAAM,cAAc,KAAM,CAAE;AAC5B,QAAM,mBAAe;AAAA,IACpB,CAAE,WACD,OAAQ,sBAAW,EAAE;AAAA,MACpB,YAAY;AAAA,MACZ,YAAY;AAAA,IACb;AAAA,IACD,CAAE,YAAY,MAAM,YAAY,IAAK;AAAA,EACtC;AAEA,MAAI,cAAc,aAAa;AAC/B,MAAK,aAAa,SAAS,oBAAqB;AAC/C,kBACC,MAAM,YAAQ,gBAAI,eAAgB,QAAI,gBAAI,gBAAiB;AAAA,EAC7D;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,aAAW;AAAA,MACX,WAAU;AAAA,MAEV;AAAA,oDAAC,qBAAkB,QAAS,aAAc,OAAgB;AAAA,QACxD,KAAK,IAAK,CAAE,WAAY;AACzB,iBACC;AAAA,YAAC,0BAAAA;AAAA,YAAA;AAAA,cAEA;AAAA,cACA,SACC,CAAE,mBAAmB;AAAA,gBACpB,CAAE,QACD,IAAI,SAAS,OAAO,QACpB,IAAI,SAAS,OAAO,QACpB,IAAI,QAAQ,OAAO,OACnB,IAAI,aAAa,OAAO;AAAA,cAC1B;AAAA,cAED,UAAW,CAAE,UACZ,sBAAuB,QAAQ,KAAM;AAAA;AAAA,YAZhC,OAAO,OAAO,OAAO;AAAA,UAc5B;AAAA,QAEF,CAAE;AAAA,QACA,mBAAmB,aAAa,QACjC,4CAAC,2BAAwB,QAAS,aAAc;AAAA;AAAA;AAAA,EAElD;AAEF;",
4
+ "sourcesContent": ["import { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport { getGlobalStylesChanges } from '@wordpress/global-styles-engine';\nimport EntityRecordItem from './entity-record-item';\nimport { STORE_NAME } from '../../name';\n\nfunction getEntityDescription( entity, count ) {\n\tswitch ( entity ) {\n\t\tcase 'site':\n\t\t\treturn 1 === count\n\t\t\t\t? __( 'This change will affect your whole site.' )\n\t\t\t\t: __( 'These changes will affect your whole site.' );\n\t\tcase 'wp_template':\n\t\t\treturn __(\n\t\t\t\t'This change will affect other parts of your site that use this template.'\n\t\t\t);\n\t\tcase 'page':\n\t\tcase 'post':\n\t\t\treturn __( 'The following has been modified.' );\n\t}\n}\n\nfunction GlobalStylesDescription( { record } ) {\n\tconst { editedRecord, savedRecord } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getEntityRecord } =\n\t\t\t\tselect( STORE_NAME );\n\t\t\treturn {\n\t\t\t\teditedRecord: getEditedEntityRecord(\n\t\t\t\t\trecord.kind,\n\t\t\t\t\trecord.name,\n\t\t\t\t\trecord.key\n\t\t\t\t),\n\t\t\t\tsavedRecord: getEntityRecord(\n\t\t\t\t\trecord.kind,\n\t\t\t\t\trecord.name,\n\t\t\t\t\trecord.key\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ record.kind, record.name, record.key ]\n\t);\n\n\tconst globalStylesChanges = getGlobalStylesChanges(\n\t\teditedRecord,\n\t\tsavedRecord,\n\t\t{\n\t\t\tmaxResults: 10,\n\t\t}\n\t);\n\treturn globalStylesChanges.length ? (\n\t\t<ul className=\"entities-saved-states__changes\">\n\t\t\t{ globalStylesChanges.map( ( change ) => (\n\t\t\t\t<li key={ change }>{ change }</li>\n\t\t\t) ) }\n\t\t</ul>\n\t) : null;\n}\n\nfunction EntityDescription( { record, count } ) {\n\tif ( 'globalStyles' === record?.name ) {\n\t\treturn null;\n\t}\n\tconst description = getEntityDescription( record?.name, count );\n\treturn description ? <PanelRow>{ description }</PanelRow> : null;\n}\n\nexport default function EntityTypeList( {\n\tlist,\n\tunselectedEntities,\n\tsetUnselectedEntities,\n} ) {\n\tconst count = list.length;\n\tconst firstRecord = list[ 0 ];\n\tconst entityConfig = useSelect(\n\t\t( select ) =>\n\t\t\tselect( STORE_NAME ).getEntityConfig(\n\t\t\t\tfirstRecord.kind,\n\t\t\t\tfirstRecord.name\n\t\t\t),\n\t\t[ firstRecord.kind, firstRecord.name ]\n\t);\n\n\tlet entityLabel = entityConfig.label;\n\tif ( firstRecord?.name === 'wp_template_part' ) {\n\t\tentityLabel =\n\t\t\t1 === count ? __( 'Template Part' ) : __( 'Template Parts' );\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ entityLabel }\n\t\t\tinitialOpen\n\t\t\tclassName=\"entities-saved-states__panel-body\"\n\t\t>\n\t\t\t<EntityDescription record={ firstRecord } count={ count } />\n\t\t\t{ list.map( ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityRecordItem\n\t\t\t\t\t\tkey={ record.key || record.property }\n\t\t\t\t\t\trecord={ record }\n\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t! unselectedEntities.some(\n\t\t\t\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\t\t\t\telt.kind === record.kind &&\n\t\t\t\t\t\t\t\t\telt.name === record.name &&\n\t\t\t\t\t\t\t\t\telt.key === record.key &&\n\t\t\t\t\t\t\t\t\telt.property === record.property\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetUnselectedEntities( record, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ 'globalStyles' === firstRecord?.name && (\n\t\t\t\t<GlobalStylesDescription record={ firstRecord } />\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAmB;AACnB,kBAA0B;AAC1B,wBAAoC;AACpC,kCAAuC;AACvC,gCAA6B;AAC7B,kBAA2B;AAiDvB;AA/CJ,SAAS,qBAAsB,QAAQ,OAAQ;AAC9C,UAAS,QAAS;AAAA,IACjB,KAAK;AACJ,aAAO,MAAM,YACV,gBAAI,0CAA2C,QAC/C,gBAAI,4CAA6C;AAAA,IACrD,KAAK;AACJ,iBAAO;AAAA,QACN;AAAA,MACD;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJ,iBAAO,gBAAI,kCAAmC;AAAA,EAChD;AACD;AAEA,SAAS,wBAAyB,EAAE,OAAO,GAAI;AAC9C,QAAM,EAAE,cAAc,YAAY,QAAI;AAAA,IACrC,CAAE,WAAY;AACb,YAAM,EAAE,uBAAuB,gBAAgB,IAC9C,OAAQ,sBAAW;AACpB,aAAO;AAAA,QACN,cAAc;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,QACA,aAAa;AAAA,UACZ,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,OAAO,MAAM,OAAO,MAAM,OAAO,GAAI;AAAA,EACxC;AAEA,QAAM,0BAAsB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,MACC,YAAY;AAAA,IACb;AAAA,EACD;AACA,SAAO,oBAAoB,SAC1B,4CAAC,QAAG,WAAU,kCACX,8BAAoB,IAAK,CAAE,WAC5B,4CAAC,QAAoB,oBAAX,MAAmB,CAC5B,GACH,IACG;AACL;AAEA,SAAS,kBAAmB,EAAE,QAAQ,MAAM,GAAI;AAC/C,MAAK,mBAAmB,QAAQ,MAAO;AACtC,WAAO;AAAA,EACR;AACA,QAAM,cAAc,qBAAsB,QAAQ,MAAM,KAAM;AAC9D,SAAO,cAAc,4CAAC,8BAAW,uBAAa,IAAc;AAC7D;AAEe,SAAR,eAAiC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,QAAQ,KAAK;AACnB,QAAM,cAAc,KAAM,CAAE;AAC5B,QAAM,mBAAe;AAAA,IACpB,CAAE,WACD,OAAQ,sBAAW,EAAE;AAAA,MACpB,YAAY;AAAA,MACZ,YAAY;AAAA,IACb;AAAA,IACD,CAAE,YAAY,MAAM,YAAY,IAAK;AAAA,EACtC;AAEA,MAAI,cAAc,aAAa;AAC/B,MAAK,aAAa,SAAS,oBAAqB;AAC/C,kBACC,MAAM,YAAQ,gBAAI,eAAgB,QAAI,gBAAI,gBAAiB;AAAA,EAC7D;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,aAAW;AAAA,MACX,WAAU;AAAA,MAEV;AAAA,oDAAC,qBAAkB,QAAS,aAAc,OAAgB;AAAA,QACxD,KAAK,IAAK,CAAE,WAAY;AACzB,iBACC;AAAA,YAAC,0BAAAA;AAAA,YAAA;AAAA,cAEA;AAAA,cACA,SACC,CAAE,mBAAmB;AAAA,gBACpB,CAAE,QACD,IAAI,SAAS,OAAO,QACpB,IAAI,SAAS,OAAO,QACpB,IAAI,QAAQ,OAAO,OACnB,IAAI,aAAa,OAAO;AAAA,cAC1B;AAAA,cAED,UAAW,CAAE,UACZ,sBAAuB,QAAQ,KAAM;AAAA;AAAA,YAZhC,OAAO,OAAO,OAAO;AAAA,UAc5B;AAAA,QAEF,CAAE;AAAA,QACA,mBAAmB,aAAa,QACjC,4CAAC,2BAAwB,QAAS,aAAc;AAAA;AAAA;AAAA,EAElD;AAEF;",
6
6
  "names": ["EntityRecordItem"]
7
7
  }
@@ -48,11 +48,15 @@ var useIsDirty = () => {
48
48
  );
49
49
  const siteEntityLabels = siteEntityConfig?.meta?.labels ?? {};
50
50
  const {
51
+ title: siteTitleEdit,
52
+ description: siteDescriptionEdit,
51
53
  site_logo: siteLogoEdit,
52
54
  site_icon: siteIconEdit,
53
55
  ...otherSiteEdits
54
56
  } = siteEdits ?? {};
55
57
  const orderedSiteProperties = [
58
+ siteTitleEdit !== void 0 && "title",
59
+ siteDescriptionEdit !== void 0 && "description",
56
60
  siteLogoEdit !== void 0 && "site_logo",
57
61
  siteIconEdit !== void 0 && "site_icon",
58
62
  ...Object.keys(otherSiteEdits)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/entities-saved-states/hooks/use-is-dirty.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../../../name';\n\n/**\n * Custom hook that determines if any entities are dirty (edited) and provides a way to manage selected/unselected entities.\n *\n * @return {Object} An object containing the following properties:\n * - dirtyEntityRecords: An array of dirty entity records.\n * - isDirty: A boolean indicating if there are any dirty entity records.\n * - setUnselectedEntities: A function to set the unselected entities.\n * - unselectedEntities: An array of unselected entities.\n */\nexport const useIsDirty = () => {\n\tconst { editedEntities, siteEdits, siteEntityConfig } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\t__experimentalGetDirtyEntityRecords,\n\t\t\t\tgetEntityRecordEdits,\n\t\t\t\tgetEntityConfig,\n\t\t\t} = select( STORE_NAME );\n\n\t\t\treturn {\n\t\t\t\teditedEntities: __experimentalGetDirtyEntityRecords(),\n\t\t\t\tsiteEdits: getEntityRecordEdits( 'root', 'site' ),\n\t\t\t\tsiteEntityConfig: getEntityConfig( 'root', 'site' ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst dirtyEntityRecords = useMemo( () => {\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst editedEntitiesWithoutSite = editedEntities.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEntityLabels = siteEntityConfig?.meta?.labels ?? {};\n\t\tconst {\n\t\t\tsite_logo: siteLogoEdit,\n\t\t\tsite_icon: siteIconEdit,\n\t\t\t...otherSiteEdits\n\t\t} = siteEdits ?? {};\n\t\tconst orderedSiteProperties = [\n\t\t\tsiteLogoEdit !== undefined && 'site_logo',\n\t\t\tsiteIconEdit !== undefined && 'site_icon',\n\t\t\t...Object.keys( otherSiteEdits ),\n\t\t].filter( Boolean );\n\t\tconst editedSiteEntities = orderedSiteProperties.map(\n\t\t\t( property ) => ( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: siteEntityLabels[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} )\n\t\t);\n\n\t\treturn [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];\n\t}, [ editedEntities, siteEdits, siteEntityConfig ] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\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} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,qBAAkC;AAKlC,kBAA2B;AAWpB,IAAM,aAAa,MAAM;AAC/B,QAAM,EAAE,gBAAgB,WAAW,iBAAiB,QAAI;AAAA,IACvD,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,sBAAW;AAEvB,aAAO;AAAA,QACN,gBAAgB,oCAAoC;AAAA,QACpD,WAAW,qBAAsB,QAAQ,MAAO;AAAA,QAChD,kBAAkB,gBAAiB,QAAQ,MAAO;AAAA,MACnD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AAEA,QAAM,yBAAqB,wBAAS,MAAM;AAEzC,UAAM,4BAA4B,eAAe;AAAA,MAChD,CAAE,WAAY,EAAI,OAAO,SAAS,UAAU,OAAO,SAAS;AAAA,IAC7D;AAEA,UAAM,mBAAmB,kBAAkB,MAAM,UAAU,CAAC;AAC5D,UAAM;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,GAAG;AAAA,IACJ,IAAI,aAAa,CAAC;AAClB,UAAM,wBAAwB;AAAA,MAC7B,iBAAiB,UAAa;AAAA,MAC9B,iBAAiB,UAAa;AAAA,MAC9B,GAAG,OAAO,KAAM,cAAe;AAAA,IAChC,EAAE,OAAQ,OAAQ;AAClB,UAAM,qBAAqB,sBAAsB;AAAA,MAChD,CAAE,cAAgB;AAAA,QACjB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,iBAAkB,QAAS,KAAK;AAAA,QACvC;AAAA,MACD;AAAA,IACD;AAEA,WAAO,CAAE,GAAG,2BAA2B,GAAG,kBAAmB;AAAA,EAC9D,GAAG,CAAE,gBAAgB,WAAW,gBAAiB,CAAE;AAGnD,QAAM,CAAE,oBAAoB,sBAAuB,QAAI,yBAAU,CAAC,CAAE;AAEpE,QAAM,wBAAwB,CAC7B,EAAE,MAAM,MAAM,KAAK,SAAS,GAC5B,YACI;AACJ,QAAK,SAAU;AACd;AAAA,QACC,mBAAmB;AAAA,UAClB,CAAE,QACD,IAAI,SAAS,QACb,IAAI,SAAS,QACb,IAAI,QAAQ,OACZ,IAAI,aAAa;AAAA,QACnB;AAAA,MACD;AAAA,IACD,OAAO;AACN,6BAAwB;AAAA,QACvB,GAAG;AAAA,QACH,EAAE,MAAM,MAAM,KAAK,SAAS;AAAA,MAC7B,CAAE;AAAA,IACH;AAAA,EACD;AAEA,QAAM,UAAU,mBAAmB,SAAS,mBAAmB,SAAS;AAExE,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;",
4
+ "sourcesContent": ["import { useSelect } from '@wordpress/data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { STORE_NAME } from '../../../name';\n\n/**\n * Custom hook that determines if any entities are dirty (edited) and provides a way to manage selected/unselected entities.\n *\n * @return {Object} An object containing the following properties:\n * - dirtyEntityRecords: An array of dirty entity records.\n * - isDirty: A boolean indicating if there are any dirty entity records.\n * - setUnselectedEntities: A function to set the unselected entities.\n * - unselectedEntities: An array of unselected entities.\n */\nexport const useIsDirty = () => {\n\tconst { editedEntities, siteEdits, siteEntityConfig } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\t__experimentalGetDirtyEntityRecords,\n\t\t\t\tgetEntityRecordEdits,\n\t\t\t\tgetEntityConfig,\n\t\t\t} = select( STORE_NAME );\n\n\t\t\treturn {\n\t\t\t\teditedEntities: __experimentalGetDirtyEntityRecords(),\n\t\t\t\tsiteEdits: getEntityRecordEdits( 'root', 'site' ),\n\t\t\t\tsiteEntityConfig: getEntityConfig( 'root', 'site' ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst dirtyEntityRecords = useMemo( () => {\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst editedEntitiesWithoutSite = editedEntities.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEntityLabels = siteEntityConfig?.meta?.labels ?? {};\n\t\tconst {\n\t\t\ttitle: siteTitleEdit,\n\t\t\tdescription: siteDescriptionEdit,\n\t\t\tsite_logo: siteLogoEdit,\n\t\t\tsite_icon: siteIconEdit,\n\t\t\t...otherSiteEdits\n\t\t} = siteEdits ?? {};\n\t\tconst orderedSiteProperties = [\n\t\t\tsiteTitleEdit !== undefined && 'title',\n\t\t\tsiteDescriptionEdit !== undefined && 'description',\n\t\t\tsiteLogoEdit !== undefined && 'site_logo',\n\t\t\tsiteIconEdit !== undefined && 'site_icon',\n\t\t\t...Object.keys( otherSiteEdits ),\n\t\t].filter( Boolean );\n\t\tconst editedSiteEntities = orderedSiteProperties.map(\n\t\t\t( property ) => ( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: siteEntityLabels[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} )\n\t\t);\n\n\t\treturn [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];\n\t}, [ editedEntities, siteEdits, siteEntityConfig ] );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\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} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst isDirty = dirtyEntityRecords.length - unselectedEntities.length > 0;\n\n\treturn {\n\t\tdirtyEntityRecords,\n\t\tisDirty,\n\t\tsetUnselectedEntities,\n\t\tunselectedEntities,\n\t};\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAC1B,qBAAkC;AAClC,kBAA2B;AAWpB,IAAM,aAAa,MAAM;AAC/B,QAAM,EAAE,gBAAgB,WAAW,iBAAiB,QAAI;AAAA,IACvD,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,sBAAW;AAEvB,aAAO;AAAA,QACN,gBAAgB,oCAAoC;AAAA,QACpD,WAAW,qBAAsB,QAAQ,MAAO;AAAA,QAChD,kBAAkB,gBAAiB,QAAQ,MAAO;AAAA,MACnD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AAEA,QAAM,yBAAqB,wBAAS,MAAM;AAEzC,UAAM,4BAA4B,eAAe;AAAA,MAChD,CAAE,WAAY,EAAI,OAAO,SAAS,UAAU,OAAO,SAAS;AAAA,IAC7D;AAEA,UAAM,mBAAmB,kBAAkB,MAAM,UAAU,CAAC;AAC5D,UAAM;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,MACX,GAAG;AAAA,IACJ,IAAI,aAAa,CAAC;AAClB,UAAM,wBAAwB;AAAA,MAC7B,kBAAkB,UAAa;AAAA,MAC/B,wBAAwB,UAAa;AAAA,MACrC,iBAAiB,UAAa;AAAA,MAC9B,iBAAiB,UAAa;AAAA,MAC9B,GAAG,OAAO,KAAM,cAAe;AAAA,IAChC,EAAE,OAAQ,OAAQ;AAClB,UAAM,qBAAqB,sBAAsB;AAAA,MAChD,CAAE,cAAgB;AAAA,QACjB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,iBAAkB,QAAS,KAAK;AAAA,QACvC;AAAA,MACD;AAAA,IACD;AAEA,WAAO,CAAE,GAAG,2BAA2B,GAAG,kBAAmB;AAAA,EAC9D,GAAG,CAAE,gBAAgB,WAAW,gBAAiB,CAAE;AAGnD,QAAM,CAAE,oBAAoB,sBAAuB,QAAI,yBAAU,CAAC,CAAE;AAEpE,QAAM,wBAAwB,CAC7B,EAAE,MAAM,MAAM,KAAK,SAAS,GAC5B,YACI;AACJ,QAAK,SAAU;AACd;AAAA,QACC,mBAAmB;AAAA,UAClB,CAAE,QACD,IAAI,SAAS,QACb,IAAI,SAAS,QACb,IAAI,QAAQ,OACZ,IAAI,aAAa;AAAA,QACnB;AAAA,MACD;AAAA,IACD,OAAO;AACN,6BAAwB;AAAA,QACvB,GAAG;AAAA,QACH,EAAE,MAAM,MAAM,KAAK,SAAS;AAAA,MAC7B,CAAE;AAAA,IACH;AAAA,EACD;AAEA,QAAM,UAAU,mBAAmB,SAAS,mBAAmB,SAAS;AAExE,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/entities-saved-states/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { unlock } from '../../lock-unlock';\nimport { STORE_NAME } from '../../name';\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {boolean=} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog,\n\tvariant,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\tvariant={ variant }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {boolean} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n * @param {string} props.successNoticeContent Optional custom success notice content.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = undefined,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n\tvariant = 'default',\n\tsuccessNoticeContent,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( STORE_NAME ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabelId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-label'\n\t);\n\tconst dialogDescriptionId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-description'\n\t);\n\n\tconst selectItemsToSaveDescription = !! dirtyEntityRecords.length\n\t\t? __( 'Select the items you want to save.' )\n\t\t: undefined;\n\n\tconst isInline = variant === 'inline';\n\n\tconst actionButtons = (\n\t\t<>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tvariant={ isInline ? 'tertiary' : 'secondary' }\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tonClick={ dismissPanel }\n\t\t\t>\n\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t</FlexItem>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tref={ saveButtonRef }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tonClick={ () =>\n\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\tonSave,\n\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\tclose,\n\t\t\t\t\t\tsuccessNoticeContent,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tclassName=\"entities-saved-states__save-button\"\n\t\t\t>\n\t\t\t\t{ saveLabel }\n\t\t\t</FlexItem>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ renderDialog ? saveDialogRef : undefined }\n\t\t\t{ ...( renderDialog && saveDialogProps ) }\n\t\t\tclassName={ clsx( 'entities-saved-states__panel', {\n\t\t\t\t'is-inline': isInline,\n\t\t\t} ) }\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabelId : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescriptionId : undefined }\n\t\t>\n\t\t\t{ ! isInline && (\n\t\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div className=\"entities-saved-states__text-prompt--header-wrapper\">\n\t\t\t\t\t<strong\n\t\t\t\t\t\tid={ renderDialog ? dialogLabelId : undefined }\n\t\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t\t<div id={ renderDialog ? dialogDescriptionId : undefined }>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t\t<p className=\"entities-saved-states__text-prompt--changes-count\">\n\t\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: selectItemsToSaveDescription }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ isInline && (\n\t\t\t\t<Flex\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\tclassName=\"entities-saved-states__panel-footer\"\n\t\t\t\t>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { unlock } from '../../lock-unlock';\nimport { STORE_NAME } from '../../name';\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {boolean=} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog,\n\tvariant,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\tvariant={ variant }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {boolean} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n * @param {string} props.successNoticeContent Optional custom success notice content.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = undefined,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n\tvariant = 'default',\n\tsuccessNoticeContent,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( STORE_NAME ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabelId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-label'\n\t);\n\tconst dialogDescriptionId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-description'\n\t);\n\n\tconst selectItemsToSaveDescription = !! dirtyEntityRecords.length\n\t\t? __( 'Select the items you want to save.' )\n\t\t: undefined;\n\n\tconst isInline = variant === 'inline';\n\n\tconst actionButtons = (\n\t\t<>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tvariant={ isInline ? 'tertiary' : 'secondary' }\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tonClick={ dismissPanel }\n\t\t\t>\n\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t</FlexItem>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tref={ saveButtonRef }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tonClick={ () =>\n\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\tonSave,\n\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\tclose,\n\t\t\t\t\t\tsuccessNoticeContent,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tclassName=\"entities-saved-states__save-button\"\n\t\t\t>\n\t\t\t\t{ saveLabel }\n\t\t\t</FlexItem>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ renderDialog ? saveDialogRef : undefined }\n\t\t\t{ ...( renderDialog && saveDialogProps ) }\n\t\t\tclassName={ clsx( 'entities-saved-states__panel', {\n\t\t\t\t'is-inline': isInline,\n\t\t\t} ) }\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabelId : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescriptionId : undefined }\n\t\t>\n\t\t\t{ ! isInline && (\n\t\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div className=\"entities-saved-states__text-prompt--header-wrapper\">\n\t\t\t\t\t<strong\n\t\t\t\t\t\tid={ renderDialog ? dialogLabelId : undefined }\n\t\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t\t<div id={ renderDialog ? dialogDescriptionId : undefined }>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t\t<p className=\"entities-saved-states__text-prompt--changes-count\">\n\t\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: selectItemsToSaveDescription }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ isInline && (\n\t\t\t\t<Flex\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\tclassName=\"entities-saved-states__panel-footer\"\n\t\t\t\t>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["useDialog", "clsx", "EntityTypeList"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/dynamic-entities.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { GetRecordsHttpQuery, State } from './selectors';\nimport type * as ET from './entity-types';\n\nexport type WPEntityTypes< C extends ET.Context = 'edit' > = {\n\tComment: ET.Comment< C >;\n\tGlobalStyles: ET.GlobalStylesRevision< C >;\n\tMedia: ET.Attachment< C >;\n\tMenu: ET.NavMenu< C >;\n\tMenuItem: ET.NavMenuItem< C >;\n\tMenuLocation: ET.MenuLocation< C >;\n\tPlugin: ET.Plugin< C >;\n\tPostType: ET.Type< C >;\n\tRevision: ET.PostRevision< C >;\n\tSidebar: ET.Sidebar< C >;\n\tSite: ET.Settings< C >;\n\tStatus: ET.PostStatusObject< C >;\n\tTaxonomy: ET.Taxonomy< C >;\n\tTerm: ET.Term< C >;\n\tTheme: ET.Theme< C >;\n\tUnstableBase: ET.UnstableBase< C >;\n\tUser: ET.User< C >;\n\tWidget: ET.Widget< C >;\n\tWidgetType: ET.WidgetType< C >;\n};\n\n/**\n * A simple utility that pluralizes a string.\n * Converts:\n * - \"post\" to \"posts\"\n * - \"taxonomy\" to \"taxonomies\"\n * - \"media\" to \"mediaItems\"\n * - \"status\" to \"statuses\"\n *\n * It does not pluralize \"GlobalStyles\" due to lack of clarity about it at time of writing.\n */\ntype PluralizeEntity< T extends string > = T extends 'GlobalStyles'\n\t? never\n\t: T extends 'Media'\n\t? 'MediaItems'\n\t: T extends 'Status'\n\t? 'Statuses'\n\t: T extends `${ infer U }y`\n\t? `${ U }ies`\n\t: `${ T }s`;\n\n/**\n * A simple utility that singularizes a string.\n *\n * Converts:\n * - \"posts\" to \"post\"\n * - \"taxonomies\" to \"taxonomy\"\n * - \"mediaItems\" to \"media\"\n * - \"statuses\" to \"status\"\n */\ntype SingularizeEntity< T extends string > = T extends 'MediaItems'\n\t? 'Media'\n\t: T extends 'Statuses'\n\t? 'Status'\n\t: T extends `${ infer U }ies`\n\t? `${ U }y`\n\t: T extends `${ infer U }s`\n\t? U\n\t: T;\n\nexport type SingularGetters = {\n\t[ Key in `get${ keyof WPEntityTypes }` ]: (\n\t\tstate: State,\n\t\tid: number | string,\n\t\tquery?: GetRecordsHttpQuery\n\t) => WPEntityTypes[ Key extends `get${ infer E }` ? E : never ] | undefined;\n};\n\nexport type PluralGetters = {\n\t[ Key in `get${ PluralizeEntity< keyof WPEntityTypes > }` ]: (\n\t\tstate: State,\n\t\tquery?: GetRecordsHttpQuery\n\t) => Array<\n\t\tWPEntityTypes[ Key extends `get${ infer E }`\n\t\t\t? SingularizeEntity< E >\n\t\t\t: never ]\n\t> | null;\n};\n\ntype ActionOptions = {\n\tthrowOnError?: boolean;\n};\n\ntype DeleteRecordsHttpQuery = Record< string, any >;\n\nexport type SaveActions = {\n\t[ Key in `save${ keyof WPEntityTypes }` ]: (\n\t\tdata: Partial<\n\t\t\tWPEntityTypes[ Key extends `save${ infer E }` ? E : never ]\n\t\t>,\n\t\toptions?: ActionOptions\n\t) => Promise< void >;\n};\n\nexport type DeleteActions = {\n\t[ Key in `delete${ keyof WPEntityTypes }` ]: (\n\t\tid: number | string,\n\t\tquery?: DeleteRecordsHttpQuery,\n\t\toptions?: ActionOptions\n\t) => Promise< void >;\n};\n\nexport let dynamicActions: SaveActions & DeleteActions;\n\nexport let dynamicSelectors: SingularGetters & PluralGetters;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6GO,IAAI;AAEJ,IAAI;",
4
+ "sourcesContent": ["import type { GetRecordsHttpQuery, State } from './selectors';\nimport type * as ET from './entity-types';\n\nexport type WPEntityTypes< C extends ET.Context = 'edit' > = {\n\tComment: ET.Comment< C >;\n\tGlobalStyles: ET.GlobalStylesRevision< C >;\n\tMedia: ET.Attachment< C >;\n\tMenu: ET.NavMenu< C >;\n\tMenuItem: ET.NavMenuItem< C >;\n\tMenuLocation: ET.MenuLocation< C >;\n\tPlugin: ET.Plugin< C >;\n\tPostType: ET.Type< C >;\n\tRevision: ET.PostRevision< C >;\n\tSidebar: ET.Sidebar< C >;\n\tSite: ET.Settings< C >;\n\tStatus: ET.PostStatusObject< C >;\n\tTaxonomy: ET.Taxonomy< C >;\n\tTerm: ET.Term< C >;\n\tTheme: ET.Theme< C >;\n\tUnstableBase: ET.UnstableBase< C >;\n\tUser: ET.User< C >;\n\tWidget: ET.Widget< C >;\n\tWidgetType: ET.WidgetType< C >;\n};\n\n/**\n * A simple utility that pluralizes a string.\n * Converts:\n * - \"post\" to \"posts\"\n * - \"taxonomy\" to \"taxonomies\"\n * - \"media\" to \"mediaItems\"\n * - \"status\" to \"statuses\"\n *\n * It does not pluralize \"GlobalStyles\" due to lack of clarity about it at time of writing.\n */\ntype PluralizeEntity< T extends string > = T extends 'GlobalStyles'\n\t? never\n\t: T extends 'Media'\n\t? 'MediaItems'\n\t: T extends 'Status'\n\t? 'Statuses'\n\t: T extends `${ infer U }y`\n\t? `${ U }ies`\n\t: `${ T }s`;\n\n/**\n * A simple utility that singularizes a string.\n *\n * Converts:\n * - \"posts\" to \"post\"\n * - \"taxonomies\" to \"taxonomy\"\n * - \"mediaItems\" to \"media\"\n * - \"statuses\" to \"status\"\n */\ntype SingularizeEntity< T extends string > = T extends 'MediaItems'\n\t? 'Media'\n\t: T extends 'Statuses'\n\t? 'Status'\n\t: T extends `${ infer U }ies`\n\t? `${ U }y`\n\t: T extends `${ infer U }s`\n\t? U\n\t: T;\n\nexport type SingularGetters = {\n\t[ Key in `get${ keyof WPEntityTypes }` ]: (\n\t\tstate: State,\n\t\tid: number | string,\n\t\tquery?: GetRecordsHttpQuery\n\t) => WPEntityTypes[ Key extends `get${ infer E }` ? E : never ] | undefined;\n};\n\nexport type PluralGetters = {\n\t[ Key in `get${ PluralizeEntity< keyof WPEntityTypes > }` ]: (\n\t\tstate: State,\n\t\tquery?: GetRecordsHttpQuery\n\t) => Array<\n\t\tWPEntityTypes[ Key extends `get${ infer E }`\n\t\t\t? SingularizeEntity< E >\n\t\t\t: never ]\n\t> | null;\n};\n\ntype ActionOptions = {\n\tthrowOnError?: boolean;\n};\n\ntype DeleteRecordsHttpQuery = Record< string, any >;\n\nexport type SaveActions = {\n\t[ Key in `save${ keyof WPEntityTypes }` ]: (\n\t\tdata: Partial<\n\t\t\tWPEntityTypes[ Key extends `save${ infer E }` ? E : never ]\n\t\t>,\n\t\toptions?: ActionOptions\n\t) => Promise< void >;\n};\n\nexport type DeleteActions = {\n\t[ Key in `delete${ keyof WPEntityTypes }` ]: (\n\t\tid: number | string,\n\t\tquery?: DeleteRecordsHttpQuery,\n\t\toptions?: ActionOptions\n\t) => Promise< void >;\n};\n\nexport let dynamicActions: SaveActions & DeleteActions;\n\nexport let dynamicSelectors: SingularGetters & PluralGetters;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0GO,IAAI;AAEJ,IAAI;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/entities.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __unstableSerializeAndClean, parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PostEditorAwareness } from './awareness/post-editor-awareness';\nimport { getSyncManager } from './sync';\nimport {\n\tapplyPostChangesToCRDTDoc,\n\tdefaultCollectionSyncConfig,\n\tdefaultSyncConfig,\n\tgetPostChangesFromCRDTDoc,\n\tPOST_META_KEY_FOR_CRDT_DOC_PERSISTENCE,\n} from './utils/crdt';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nconst blocksTransientEdits = {\n\tblocks: {\n\t\tread: ( record ) => parse( record.content?.raw ?? '' ),\n\t\twrite: ( record ) => ( {\n\t\t\tcontent: __unstableSerializeAndClean( record.blocks ),\n\t\t} ),\n\t},\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t// Please also change the preload path when changing this.\n\t\t\t// @see lib/compat/wordpress-7.1/preload.php\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'image_max_bit_depth',\n\t\t\t\t'image_sizes',\n\t\t\t\t'image_size_threshold',\n\t\t\t\t'image_strip_meta',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t\t'page_for_posts',\n\t\t\t\t'page_on_front',\n\t\t\t\t'show_on_front',\n\t\t\t].join( ',' ),\n\t\t},\n\t\t// The entity doesn't support selecting multiple records.\n\t\t// The property is maintained for backward compatibility.\n\t\tplural: '__unstableBases',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'postTypes',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tgetTitle: ( record ) => record?.name || record?.slug,\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t\tsupportsPagination: true,\n\t\tsyncConfig: defaultCollectionSyncConfig,\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different from name.\n\t\tgetTitle: () => __( 'Custom Styles' ),\n\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t`/wp/v2/global-styles/${ parentId }/revisions${\n\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t}`,\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'themes',\n\t\tkey: 'stylesheet',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'plugins',\n\t\tkey: 'plugin',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Status' ),\n\t\tname: 'status',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/statuses',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'statuses',\n\t\tkey: 'slug',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Registered Templates' ),\n\t\tname: 'registeredTemplate',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/registered-templates',\n\t\tkey: 'id',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Font Collections' ),\n\t\tname: 'fontCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/font-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'fontCollections',\n\t\tkey: 'slug',\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Icons' ),\n\t\tname: 'icon',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/icons',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'icons',\n\t\tkey: 'name',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Icon Collections' ),\n\t\tname: 'iconCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/icon-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'iconCollections',\n\t\tkey: 'slug',\n\t\tsupportsPagination: false,\n\t},\n];\n\nexport const deprecatedEntities = {\n\troot: {\n\t\tmedia: {\n\t\t\tsince: '6.9',\n\t\t\talternative: {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n\t{\n\t\tkind: 'root',\n\t\tname: 'site',\n\t\tplural: 'sites',\n\t\tloadEntities: loadSiteEntity,\n\t},\n];\n\n/**\n * Apply extra edits before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @param {string} name Post type name.\n * @param {boolean} isTemplate Whether the post type is a template.\n * @return {Promise< Object >} Updated edits.\n */\nexport const prePersistPostType = async (\n\tpersistedRecord,\n\tedits,\n\tname,\n\tisTemplate\n) => {\n\tconst newEdits = {};\n\n\tif ( ! isTemplate && persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\t// Add meta for the persisted CRDT document during real post saves so the\n\t// saved post and CRDT snapshot are committed in the same request. We don't\n\t// want a post save to fail but a CRDT update to succeed or vice versa.\n\t// CRDT repair uses /wp-sync/v1/save to avoid post-save side effects.\n\tif ( persistedRecord ) {\n\t\tconst objectType = `postType/${ name }`;\n\t\tconst objectId = persistedRecord.id;\n\t\tconst serializedDoc = await getSyncManager()?.createPersistedCRDTDoc(\n\t\t\tobjectType,\n\t\t\tobjectId\n\t\t);\n\n\t\tif ( serializedDoc ) {\n\t\t\tnewEdits.meta = {\n\t\t\t\t...edits.meta,\n\t\t\t\t[ POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE ]: serializedDoc,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypesPromise = apiFetch( { path: '/wp/v2/types?context=view' } );\n\tconst taxonomiesPromise = window._wpCollaborationEnabled\n\t\t? apiFetch( { path: '/wp/v2/taxonomies?context=view' } )\n\t\t: Promise.resolve( {} );\n\tconst [ postTypes, taxonomies ] = await Promise.all( [\n\t\tpostTypesPromise,\n\t\ttaxonomiesPromise,\n\t] );\n\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\n\t\tconst syncedProperties = new Set( [\n\t\t\t'author',\n\t\t\t'blocks',\n\t\t\t'content',\n\t\t\t'comment_status',\n\t\t\t'date',\n\t\t\t'excerpt',\n\t\t\t'featured_media',\n\t\t\t'format',\n\t\t\t'meta',\n\t\t\t'ping_status',\n\t\t\t'slug',\n\t\t\t'status',\n\t\t\t'sticky',\n\t\t\t'template',\n\t\t\t'title',\n\t\t\t...( postType.taxonomies\n\t\t\t\t?.map( ( taxonomy ) => taxonomies?.[ taxonomy ]?.rest_base )\n\t\t\t\t?.filter( Boolean ) ?? [] ),\n\t\t] );\n\n\t\tconst entity = {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\t...blocksTransientEdits,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: ( persistedRecord, edits ) =>\n\t\t\t\tprePersistPostType( persistedRecord, edits, name, isTemplate ),\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t\tsupportsPagination: true,\n\t\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t\t`/${ namespace }/${\n\t\t\t\t\tpostType.rest_base\n\t\t\t\t}/${ parentId }/revisions${\n\t\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t\t}`,\n\t\t\trevisionKey:\n\t\t\t\tisTemplate && ! window?.__experimentalTemplateActivate\n\t\t\t\t\t? 'wp_id'\n\t\t\t\t\t: DEFAULT_ENTITY_KEY,\n\t\t};\n\n\t\t/**\n\t\t * @type {import('@wordpress/sync').SyncConfig}\n\t\t */\n\t\tentity.syncConfig = {\n\t\t\t// Save a CRDT document with this entity\n\t\t\tsupportsPersistence: true,\n\n\t\t\t/**\n\t\t\t * Apply changes from the local editor to the local CRDT document so\n\t\t\t * that those changes can be synced to other peers (via the provider).\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t * @param {Partial< import('@wordpress/sync').ObjectData >} changes\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tapplyChangesToCRDTDoc: ( crdtDoc, changes ) =>\n\t\t\t\tapplyPostChangesToCRDTDoc( crdtDoc, changes, syncedProperties ),\n\n\t\t\t/**\n\t\t\t * Create the awareness instance for the entity's CRDT document.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} ydoc\n\t\t\t * @param {import('@wordpress/sync').ObjectID} objectId\n\t\t\t * @return {import('@wordpress/sync').Awareness} Awareness instance\n\t\t\t */\n\t\t\tcreateAwareness: ( ydoc, objectId ) => {\n\t\t\t\tconst kind = 'postType';\n\t\t\t\tconst id = parseInt( objectId, 10 );\n\t\t\t\treturn new PostEditorAwareness( ydoc, kind, name, id );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t * local editor state.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t * @param {import('@wordpress/sync').ObjectData} editedRecord\n\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t */\n\t\t\tgetChangesFromCRDTDoc: ( crdtDoc, editedRecord ) =>\n\t\t\t\tgetPostChangesFromCRDTDoc(\n\t\t\t\t\tcrdtDoc,\n\t\t\t\t\teditedRecord,\n\t\t\t\t\tsyncedProperties\n\t\t\t\t),\n\n\t\t\t/**\n\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t * local editor state.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').ObjectData} record\n\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t */\n\t\t\tgetPersistedCRDTDoc: ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\trecord?.meta?.[ POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE ] ||\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t},\n\t\t\tshouldSync: () =>\n\t\t\t\t! (\n\t\t\t\t\tArray.isArray( window._wpCollaborationDisabledPostTypes ) &&\n\t\t\t\t\twindow._wpCollaborationDisabledPostTypes.includes( name )\n\t\t\t\t),\n\t\t};\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\tconst entity = {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t\tgetTitle: ( record ) => record?.name,\n\t\t\tsupportsPagination: true,\n\t\t};\n\n\t\tentity.syncConfig = defaultSyncConfig;\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the Site entity.\n *\n * @return {Promise} Entity promise\n */\nasync function loadSiteEntity() {\n\tconst entity = {\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tbaseURL: '/wp/v2/settings',\n\t\tsupportsPagination: false,\n\t\tmeta: {},\n\t};\n\n\tconst site = await apiFetch( {\n\t\tpath: entity.baseURL,\n\t\tmethod: 'OPTIONS',\n\t} );\n\n\tconst labels = {};\n\tObject.entries( site?.schema?.properties ?? {} ).forEach(\n\t\t( [ key, value ] ) => {\n\t\t\t// Ignore properties `title` and `type` keys.\n\t\t\tif ( typeof value === 'object' && value.title ) {\n\t\t\t\tlabels[ key ] = value.title;\n\t\t\t}\n\t\t}\n\t);\n\n\treturn [ { ...entity, meta: { labels } } ];\n}\n\n/**\n * Returns the entity's getter method name given its kind and name or plural name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'themes', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name or plural name.\n * @param {string} prefix Function prefix.\n *\n * @return {string} Method name\n */\nexport const getMethodName = ( kind, name, prefix = 'get' ) => {\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst suffix = pascalCase( name );\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { capitalCase, pascalCase } from 'change-case';\nimport apiFetch from '@wordpress/api-fetch';\nimport { __unstableSerializeAndClean, parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { PostEditorAwareness } from './awareness/post-editor-awareness';\nimport { getSyncManager } from './sync';\nimport {\n\tapplyPostChangesToCRDTDoc,\n\tdefaultCollectionSyncConfig,\n\tdefaultSyncConfig,\n\tgetPostChangesFromCRDTDoc,\n\tPOST_META_KEY_FOR_CRDT_DOC_PERSISTENCE,\n} from './utils/crdt';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nconst blocksTransientEdits = {\n\tblocks: {\n\t\tread: ( record ) => parse( record.content?.raw ?? '' ),\n\t\twrite: ( record ) => ( {\n\t\t\tcontent: __unstableSerializeAndClean( record.blocks ),\n\t\t} ),\n\t},\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t// Please also change the preload path when changing this.\n\t\t\t// @see lib/compat/wordpress-7.1/preload.php\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'image_max_bit_depth',\n\t\t\t\t'image_sizes',\n\t\t\t\t'image_size_threshold',\n\t\t\t\t'image_strip_meta',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t\t'page_for_posts',\n\t\t\t\t'page_on_front',\n\t\t\t\t'show_on_front',\n\t\t\t].join( ',' ),\n\t\t},\n\t\t// The entity doesn't support selecting multiple records.\n\t\t// The property is maintained for backward compatibility.\n\t\tplural: '__unstableBases',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'postTypes',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tgetTitle: ( record ) => record?.name || record?.slug,\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t\tsupportsPagination: true,\n\t\tsyncConfig: defaultCollectionSyncConfig,\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different from name.\n\t\tgetTitle: () => __( 'Custom Styles' ),\n\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t`/wp/v2/global-styles/${ parentId }/revisions${\n\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t}`,\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'themes',\n\t\tkey: 'stylesheet',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'plugins',\n\t\tkey: 'plugin',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Status' ),\n\t\tname: 'status',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/statuses',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'statuses',\n\t\tkey: 'slug',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Registered Templates' ),\n\t\tname: 'registeredTemplate',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/registered-templates',\n\t\tkey: 'id',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Font Collections' ),\n\t\tname: 'fontCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/font-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'fontCollections',\n\t\tkey: 'slug',\n\t\tsupportsPagination: true,\n\t},\n\t{\n\t\tlabel: __( 'Icons' ),\n\t\tname: 'icon',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/icons',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'icons',\n\t\tkey: 'name',\n\t\tsupportsPagination: false,\n\t},\n\t{\n\t\tlabel: __( 'Icon Collections' ),\n\t\tname: 'iconCollection',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/icon-collections',\n\t\tbaseURLParams: { context: 'view' },\n\t\tplural: 'iconCollections',\n\t\tkey: 'slug',\n\t\tsupportsPagination: false,\n\t},\n];\n\nexport const deprecatedEntities = {\n\troot: {\n\t\tmedia: {\n\t\t\tsince: '6.9',\n\t\t\talternative: {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n\t{\n\t\tkind: 'root',\n\t\tname: 'site',\n\t\tplural: 'sites',\n\t\tloadEntities: loadSiteEntity,\n\t},\n];\n\n/**\n * Apply extra edits before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @param {string} name Post type name.\n * @param {boolean} isTemplate Whether the post type is a template.\n * @return {Promise< Object >} Updated edits.\n */\nexport const prePersistPostType = async (\n\tpersistedRecord,\n\tedits,\n\tname,\n\tisTemplate\n) => {\n\tconst newEdits = {};\n\n\tif ( ! isTemplate && persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\t// Add meta for the persisted CRDT document during real post saves so the\n\t// saved post and CRDT snapshot are committed in the same request. We don't\n\t// want a post save to fail but a CRDT update to succeed or vice versa.\n\t// CRDT repair uses /wp-sync/v1/save to avoid post-save side effects.\n\tif ( persistedRecord ) {\n\t\tconst objectType = `postType/${ name }`;\n\t\tconst objectId = persistedRecord.id;\n\t\tconst serializedDoc = await getSyncManager()?.createPersistedCRDTDoc(\n\t\t\tobjectType,\n\t\t\tobjectId\n\t\t);\n\n\t\tif ( serializedDoc ) {\n\t\t\tnewEdits.meta = {\n\t\t\t\t...edits.meta,\n\t\t\t\t[ POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE ]: serializedDoc,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypesPromise = apiFetch( { path: '/wp/v2/types?context=view' } );\n\tconst taxonomiesPromise = window._wpCollaborationEnabled\n\t\t? apiFetch( { path: '/wp/v2/taxonomies?context=view' } )\n\t\t: Promise.resolve( {} );\n\tconst [ postTypes, taxonomies ] = await Promise.all( [\n\t\tpostTypesPromise,\n\t\ttaxonomiesPromise,\n\t] );\n\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\n\t\tconst syncedProperties = new Set( [\n\t\t\t'author',\n\t\t\t'blocks',\n\t\t\t'content',\n\t\t\t'comment_status',\n\t\t\t'date',\n\t\t\t'excerpt',\n\t\t\t'featured_media',\n\t\t\t'format',\n\t\t\t'meta',\n\t\t\t'ping_status',\n\t\t\t'slug',\n\t\t\t'status',\n\t\t\t'sticky',\n\t\t\t'template',\n\t\t\t'title',\n\t\t\t...( postType.taxonomies\n\t\t\t\t?.map( ( taxonomy ) => taxonomies?.[ taxonomy ]?.rest_base )\n\t\t\t\t?.filter( Boolean ) ?? [] ),\n\t\t] );\n\n\t\tconst entity = {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\t...blocksTransientEdits,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: ( persistedRecord, edits ) =>\n\t\t\t\tprePersistPostType( persistedRecord, edits, name, isTemplate ),\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t\tsupportsPagination: true,\n\t\t\tgetRevisionsUrl: ( parentId, revisionId ) =>\n\t\t\t\t`/${ namespace }/${\n\t\t\t\t\tpostType.rest_base\n\t\t\t\t}/${ parentId }/revisions${\n\t\t\t\t\trevisionId ? '/' + revisionId : ''\n\t\t\t\t}`,\n\t\t\trevisionKey:\n\t\t\t\tisTemplate && ! window?.__experimentalTemplateActivate\n\t\t\t\t\t? 'wp_id'\n\t\t\t\t\t: DEFAULT_ENTITY_KEY,\n\t\t};\n\n\t\t/**\n\t\t * @type {import('@wordpress/sync').SyncConfig}\n\t\t */\n\t\tentity.syncConfig = {\n\t\t\t// Save a CRDT document with this entity\n\t\t\tsupportsPersistence: true,\n\n\t\t\t/**\n\t\t\t * Apply changes from the local editor to the local CRDT document so\n\t\t\t * that those changes can be synced to other peers (via the provider).\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t * @param {Partial< import('@wordpress/sync').ObjectData >} changes\n\t\t\t * @return {void}\n\t\t\t */\n\t\t\tapplyChangesToCRDTDoc: ( crdtDoc, changes ) =>\n\t\t\t\tapplyPostChangesToCRDTDoc( crdtDoc, changes, syncedProperties ),\n\n\t\t\t/**\n\t\t\t * Create the awareness instance for the entity's CRDT document.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} ydoc\n\t\t\t * @param {import('@wordpress/sync').ObjectID} objectId\n\t\t\t * @return {import('@wordpress/sync').Awareness} Awareness instance\n\t\t\t */\n\t\t\tcreateAwareness: ( ydoc, objectId ) => {\n\t\t\t\tconst kind = 'postType';\n\t\t\t\tconst id = parseInt( objectId, 10 );\n\t\t\t\treturn new PostEditorAwareness( ydoc, kind, name, id );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t * local editor state.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').CRDTDoc} crdtDoc\n\t\t\t * @param {import('@wordpress/sync').ObjectData} editedRecord\n\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t */\n\t\t\tgetChangesFromCRDTDoc: ( crdtDoc, editedRecord ) =>\n\t\t\t\tgetPostChangesFromCRDTDoc(\n\t\t\t\t\tcrdtDoc,\n\t\t\t\t\teditedRecord,\n\t\t\t\t\tsyncedProperties\n\t\t\t\t),\n\n\t\t\t/**\n\t\t\t * Extract changes from a CRDT document that can be used to update the\n\t\t\t * local editor state.\n\t\t\t *\n\t\t\t * @param {import('@wordpress/sync').ObjectData} record\n\t\t\t * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record\n\t\t\t */\n\t\t\tgetPersistedCRDTDoc: ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\trecord?.meta?.[ POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE ] ||\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t},\n\t\t\tshouldSync: () =>\n\t\t\t\t! (\n\t\t\t\t\tArray.isArray( window._wpCollaborationDisabledPostTypes ) &&\n\t\t\t\t\twindow._wpCollaborationDisabledPostTypes.includes( name )\n\t\t\t\t),\n\t\t};\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\tconst entity = {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t\tgetTitle: ( record ) => record?.name,\n\t\t\tsupportsPagination: true,\n\t\t};\n\n\t\tentity.syncConfig = defaultSyncConfig;\n\n\t\treturn entity;\n\t} );\n}\n\n/**\n * Returns the Site entity.\n *\n * @return {Promise} Entity promise\n */\nasync function loadSiteEntity() {\n\tconst entity = {\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tkey: false,\n\t\tbaseURL: '/wp/v2/settings',\n\t\tsupportsPagination: false,\n\t\tmeta: {},\n\t};\n\n\tconst site = await apiFetch( {\n\t\tpath: entity.baseURL,\n\t\tmethod: 'OPTIONS',\n\t} );\n\n\tconst labels = {};\n\tObject.entries( site?.schema?.properties ?? {} ).forEach(\n\t\t( [ key, value ] ) => {\n\t\t\t// Ignore properties `title` and `type` keys.\n\t\t\tif ( typeof value === 'object' && value.title ) {\n\t\t\t\tlabels[ key ] = value.title;\n\t\t\t}\n\t\t}\n\t);\n\n\treturn [ { ...entity, meta: { labels } } ];\n}\n\n/**\n * Returns the entity's getter method name given its kind and name or plural name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'themes', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name or plural name.\n * @param {string} prefix Function prefix.\n *\n * @return {string} Method name\n */\nexport const getMethodName = ( kind, name, prefix = 'get' ) => {\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst suffix = pascalCase( name );\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["apiFetch"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/entity-context.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\nexport const EntityContext = createContext( {} );\nEntityContext.displayName = 'EntityContext';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA8B;AAEvB,IAAM,oBAAgB,8BAAe,CAAC,CAAE;AAC/C,cAAc,cAAc;",
4
+ "sourcesContent": ["import { createContext } from '@wordpress/element';\n\nexport const EntityContext = createContext( {} );\nEntityContext.displayName = 'EntityContext';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA8B;AAEvB,IAAM,oBAAgB,8BAAe,CAAC,CAAE;AAC/C,cAAc,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/entity-provider.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { EntityContext } from './entity-context';\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {number} [props.revisionId] Optional revision ID. When set,\n * `useEntityProp` reads from the\n * revision record instead of the\n * current entity.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( {\n\tkind,\n\ttype: name,\n\tid,\n\trevisionId,\n\tchildren,\n} ) {\n\tconst parent = useContext( EntityContext );\n\tconst childContext = useMemo(\n\t\t() => ( {\n\t\t\t...parent,\n\t\t\t...( kind && {\n\t\t\t\t[ kind ]: {\n\t\t\t\t\t...parent?.[ kind ],\n\t\t\t\t\t[ name ]: id,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\t...( revisionId !== undefined && { revisionId } ),\n\t\t} ),\n\t\t[ parent, kind, name, id, revisionId ]\n\t);\n\treturn (\n\t\t<EntityContext.Provider value={ childContext }>\n\t\t\t{ children }\n\t\t</EntityContext.Provider>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAoC;AAKpC,4BAA8B;AAyC5B;AAtBa,SAAR,eAAiC;AAAA,EACvC;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,aAAS,2BAAY,mCAAc;AACzC,QAAM,mBAAe;AAAA,IACpB,OAAQ;AAAA,MACP,GAAG;AAAA,MACH,GAAK,QAAQ;AAAA,QACZ,CAAE,IAAK,GAAG;AAAA,UACT,GAAG,SAAU,IAAK;AAAA,UAClB,CAAE,IAAK,GAAG;AAAA,QACX;AAAA,MACD;AAAA,MACA,GAAK,eAAe,UAAa,EAAE,WAAW;AAAA,IAC/C;AAAA,IACA,CAAE,QAAQ,MAAM,MAAM,IAAI,UAAW;AAAA,EACtC;AACA,SACC,4CAAC,oCAAc,UAAd,EAAuB,OAAQ,cAC7B,UACH;AAEF;",
4
+ "sourcesContent": ["import { useContext, useMemo } from '@wordpress/element';\nimport { EntityContext } from './entity-context';\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {number} [props.revisionId] Optional revision ID. When set,\n * `useEntityProp` reads from the\n * revision record instead of the\n * current entity.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( {\n\tkind,\n\ttype: name,\n\tid,\n\trevisionId,\n\tchildren,\n} ) {\n\tconst parent = useContext( EntityContext );\n\tconst childContext = useMemo(\n\t\t() => ( {\n\t\t\t...parent,\n\t\t\t...( kind && {\n\t\t\t\t[ kind ]: {\n\t\t\t\t\t...parent?.[ kind ],\n\t\t\t\t\t[ name ]: id,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\t...( revisionId !== undefined && { revisionId } ),\n\t\t} ),\n\t\t[ parent, kind, name, id, revisionId ]\n\t);\n\treturn (\n\t\t<EntityContext.Provider value={ childContext }>\n\t\t\t{ children }\n\t\t</EntityContext.Provider>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoC;AACpC,4BAA8B;AAyC5B;AAtBa,SAAR,eAAiC;AAAA,EACvC;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,aAAS,2BAAY,mCAAc;AACzC,QAAM,mBAAe;AAAA,IACpB,OAAQ;AAAA,MACP,GAAG;AAAA,MACH,GAAK,QAAQ;AAAA,QACZ,CAAE,IAAK,GAAG;AAAA,UACT,GAAG,SAAU,IAAK;AAAA,UAClB,CAAE,IAAK,GAAG;AAAA,QACX;AAAA,MACD;AAAA,MACA,GAAK,eAAe,UAAa,EAAE,WAAW;AAAA,IAC/C;AAAA,IACA,CAAE,QAAQ,MAAM,MAAM,IAAI,UAAW;AAAA,EACtC;AACA,SACC,4CAAC,oCAAc,UAAd,EAAuB,OAAQ,cAC7B,UACH;AAEF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/entity-types/attachment.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tContext,\n\tContextualField,\n\tMediaType,\n\tPostStatus,\n\tRenderedText,\n\tOmitNevers,\n\tCommentingStatus,\n\tPingStatus,\n} from './helpers';\n\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\ninterface MediaDetails {\n\twidth?: number;\n\theight?: number;\n\tfile?: string;\n\tfilesize?: number;\n\tsizes: { [ key: string ]: Size };\n\timage_meta?: ImageMeta;\n\toriginal_image?: string;\n\t// Audio/video metadata\n\tbitrate?: number;\n\tmime_type?: string;\n\tlength?: number;\n\tlength_formatted?: string;\n\tfileformat?: string;\n\tdataformat?: string;\n\t// Audio-specific\n\tchannels?: number;\n\tsample_rate?: number;\n\tcodec?: string;\n\tencoder?: string;\n\tlossless?: boolean;\n\tencoder_options?: string;\n\tcompression_ratio?: number;\n\tchannelmode?: string;\n\tbitrate_mode?: string;\n\t// Video-specific\n\taudio?: {\n\t\tdataformat?: string;\n\t\tbitrate?: number;\n\t\tcodec?: string;\n\t\tsample_rate?: number;\n\t\tchannels?: number;\n\t\tbits_per_sample?: number;\n\t\tlossless?: boolean;\n\t\tchannelmode?: string;\n\t\tcompression_ratio?: number;\n\t};\n\tcreated_timestamp?: number;\n\t// Audio metadata fields\n\ttitle?: string;\n\tartist?: string;\n\ttrack_number?: string;\n\talbum?: string;\n\trecording_time?: string;\n\tgenre?: string;\n\tdate?: string;\n\tcomment?: string;\n\tband?: string;\n\tyear?: string;\n\timage?: {\n\t\tmime?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\t};\n}\ninterface ImageMeta {\n\taperture: string;\n\tcredit: string;\n\tcamera: string;\n\tcaption: string;\n\tcreated_timestamp: string;\n\tcopyright: string;\n\tfocal_length: string;\n\tiso: string;\n\tshutter_speed: string;\n\ttitle: string;\n\torientation: string;\n\tkeywords: any[];\n}\n\ninterface Size {\n\tfile: string;\n\twidth: number;\n\theight: number;\n\tfilesize?: number;\n\tmime_type: string;\n\tsource_url: string;\n\tuncropped?: boolean;\n}\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\texport interface Attachment< C extends Context > {\n\t\t\t/**\n\t\t\t * The date the post was published, in the site's timezone.\n\t\t\t */\n\t\t\tdate: string | null;\n\t\t\t/**\n\t\t\t * The date the post was published, as GMT.\n\t\t\t */\n\t\t\tdate_gmt: ContextualField< string | null, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * The globally unique identifier for the post.\n\t\t\t */\n\t\t\tguid: ContextualField< RenderedText< C >, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Unique identifier for the post.\n\t\t\t */\n\t\t\tid: number;\n\t\t\t/**\n\t\t\t * URL to the post.\n\t\t\t */\n\t\t\tlink: string;\n\t\t\t/**\n\t\t\t * The date the post was last modified, in the site's timezone.\n\t\t\t */\n\t\t\tmodified: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * The date the post was last modified, as GMT.\n\t\t\t */\n\t\t\tmodified_gmt: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * An alphanumeric identifier for the post unique to its type.\n\t\t\t */\n\t\t\tslug: string;\n\t\t\t/**\n\t\t\t * A named status for the post.\n\t\t\t */\n\t\t\tstatus: ContextualField< PostStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Type of post.\n\t\t\t */\n\t\t\ttype: string;\n\t\t\t/**\n\t\t\t * Permalink template for the post.\n\t\t\t */\n\t\t\tpermalink_template: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * Slug automatically generated from the post title.\n\t\t\t */\n\t\t\tgenerated_slug: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * The title for the post.\n\t\t\t */\n\t\t\ttitle: RenderedText< C >;\n\t\t\t/**\n\t\t\t * The ID for the author of the post.\n\t\t\t */\n\t\t\tauthor: number;\n\t\t\t/**\n\t\t\t * Whether or not comments are open on the post.\n\t\t\t */\n\t\t\tcomment_status: ContextualField<\n\t\t\t\tCommentingStatus,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * Whether or not the post can be pinged.\n\t\t\t */\n\t\t\tping_status: ContextualField< PingStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Meta fields.\n\t\t\t */\n\t\t\tmeta: ContextualField<\n\t\t\t\tRecord< string, unknown > | [],\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * The theme file to use to display the post.\n\t\t\t */\n\t\t\ttemplate: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Alternative text to display when attachment is not displayed.\n\t\t\t */\n\t\t\talt_text: string;\n\t\t\t/**\n\t\t\t * The attachment caption.\n\t\t\t */\n\t\t\tcaption: ContextualField< RenderedText< C >, 'edit', C >;\n\t\t\t/**\n\t\t\t * The attachment description.\n\t\t\t */\n\t\t\tdescription: ContextualField<\n\t\t\t\tRenderedText< C >,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * Attachment type.\n\t\t\t */\n\t\t\tmedia_type: MediaType;\n\t\t\t/**\n\t\t\t * The attachment MIME type.\n\t\t\t */\n\t\t\tmime_type: string;\n\t\t\t/**\n\t\t\t * Details about the media file, specific to its type.\n\t\t\t */\n\t\t\tmedia_details: MediaDetails;\n\t\t\t/**\n\t\t\t * The ID for the associated post of the attachment.\n\t\t\t */\n\t\t\tpost: ContextualField< number | null, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * URL to the original attachment file.\n\t\t\t */\n\t\t\tsource_url: string;\n\t\t\t/**\n\t\t\t * List of the missing image sizes of the attachment.\n\t\t\t */\n\t\t\tmissing_image_sizes: ContextualField< string[], 'edit', C >;\n\t\t\t/**\n\t\t\t * The ID of the featured media of the attachment.\n\t\t\t */\n\t\t\tfeatured_media: number;\n\t\t\t/**\n\t\t\t * An array of class names for the post.\n\t\t\t */\n\t\t\tclass_list: string[];\n\t\t\t/**\n\t\t\t * Links to related resources.\n\t\t\t */\n\t\t\t_links?: Record< string, unknown >;\n\t\t}\n\t}\n}\n\nexport type Attachment< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Attachment< C >\n>;\n"],
4
+ "sourcesContent": ["import type {\n\tContext,\n\tContextualField,\n\tMediaType,\n\tPostStatus,\n\tRenderedText,\n\tOmitNevers,\n\tCommentingStatus,\n\tPingStatus,\n} from './helpers';\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\ninterface MediaDetails {\n\twidth?: number;\n\theight?: number;\n\tfile?: string;\n\tfilesize?: number;\n\tsizes: { [ key: string ]: Size };\n\timage_meta?: ImageMeta;\n\toriginal_image?: string;\n\t// Audio/video metadata\n\tbitrate?: number;\n\tmime_type?: string;\n\tlength?: number;\n\tlength_formatted?: string;\n\tfileformat?: string;\n\tdataformat?: string;\n\t// Audio-specific\n\tchannels?: number;\n\tsample_rate?: number;\n\tcodec?: string;\n\tencoder?: string;\n\tlossless?: boolean;\n\tencoder_options?: string;\n\tcompression_ratio?: number;\n\tchannelmode?: string;\n\tbitrate_mode?: string;\n\t// Video-specific\n\taudio?: {\n\t\tdataformat?: string;\n\t\tbitrate?: number;\n\t\tcodec?: string;\n\t\tsample_rate?: number;\n\t\tchannels?: number;\n\t\tbits_per_sample?: number;\n\t\tlossless?: boolean;\n\t\tchannelmode?: string;\n\t\tcompression_ratio?: number;\n\t};\n\tcreated_timestamp?: number;\n\t// Audio metadata fields\n\ttitle?: string;\n\tartist?: string;\n\ttrack_number?: string;\n\talbum?: string;\n\trecording_time?: string;\n\tgenre?: string;\n\tdate?: string;\n\tcomment?: string;\n\tband?: string;\n\tyear?: string;\n\timage?: {\n\t\tmime?: string;\n\t\twidth?: number;\n\t\theight?: number;\n\t};\n}\ninterface ImageMeta {\n\taperture: string;\n\tcredit: string;\n\tcamera: string;\n\tcaption: string;\n\tcreated_timestamp: string;\n\tcopyright: string;\n\tfocal_length: string;\n\tiso: string;\n\tshutter_speed: string;\n\ttitle: string;\n\torientation: string;\n\tkeywords: any[];\n}\n\ninterface Size {\n\tfile: string;\n\twidth: number;\n\theight: number;\n\tfilesize?: number;\n\tmime_type: string;\n\tsource_url: string;\n\tuncropped?: boolean;\n}\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\texport interface Attachment< C extends Context > {\n\t\t\t/**\n\t\t\t * The date the post was published, in the site's timezone.\n\t\t\t */\n\t\t\tdate: string | null;\n\t\t\t/**\n\t\t\t * The date the post was published, as GMT.\n\t\t\t */\n\t\t\tdate_gmt: ContextualField< string | null, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * The globally unique identifier for the post.\n\t\t\t */\n\t\t\tguid: ContextualField< RenderedText< C >, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Unique identifier for the post.\n\t\t\t */\n\t\t\tid: number;\n\t\t\t/**\n\t\t\t * URL to the post.\n\t\t\t */\n\t\t\tlink: string;\n\t\t\t/**\n\t\t\t * The date the post was last modified, in the site's timezone.\n\t\t\t */\n\t\t\tmodified: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * The date the post was last modified, as GMT.\n\t\t\t */\n\t\t\tmodified_gmt: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * An alphanumeric identifier for the post unique to its type.\n\t\t\t */\n\t\t\tslug: string;\n\t\t\t/**\n\t\t\t * A named status for the post.\n\t\t\t */\n\t\t\tstatus: ContextualField< PostStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Type of post.\n\t\t\t */\n\t\t\ttype: string;\n\t\t\t/**\n\t\t\t * Permalink template for the post.\n\t\t\t */\n\t\t\tpermalink_template: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * Slug automatically generated from the post title.\n\t\t\t */\n\t\t\tgenerated_slug: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * The title for the post.\n\t\t\t */\n\t\t\ttitle: RenderedText< C >;\n\t\t\t/**\n\t\t\t * The ID for the author of the post.\n\t\t\t */\n\t\t\tauthor: number;\n\t\t\t/**\n\t\t\t * Whether or not comments are open on the post.\n\t\t\t */\n\t\t\tcomment_status: ContextualField<\n\t\t\t\tCommentingStatus,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * Whether or not the post can be pinged.\n\t\t\t */\n\t\t\tping_status: ContextualField< PingStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Meta fields.\n\t\t\t */\n\t\t\tmeta: ContextualField<\n\t\t\t\tRecord< string, unknown > | [],\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * The theme file to use to display the post.\n\t\t\t */\n\t\t\ttemplate: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Alternative text to display when attachment is not displayed.\n\t\t\t */\n\t\t\talt_text: string;\n\t\t\t/**\n\t\t\t * The attachment caption.\n\t\t\t */\n\t\t\tcaption: ContextualField< RenderedText< C >, 'edit', C >;\n\t\t\t/**\n\t\t\t * The attachment description.\n\t\t\t */\n\t\t\tdescription: ContextualField<\n\t\t\t\tRenderedText< C >,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t\t/**\n\t\t\t * Attachment type.\n\t\t\t */\n\t\t\tmedia_type: MediaType;\n\t\t\t/**\n\t\t\t * The attachment MIME type.\n\t\t\t */\n\t\t\tmime_type: string;\n\t\t\t/**\n\t\t\t * Details about the media file, specific to its type.\n\t\t\t */\n\t\t\tmedia_details: MediaDetails;\n\t\t\t/**\n\t\t\t * The ID for the associated post of the attachment.\n\t\t\t */\n\t\t\tpost: ContextualField< number | null, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * URL to the original attachment file.\n\t\t\t */\n\t\t\tsource_url: string;\n\t\t\t/**\n\t\t\t * List of the missing image sizes of the attachment.\n\t\t\t */\n\t\t\tmissing_image_sizes: ContextualField< string[], 'edit', C >;\n\t\t\t/**\n\t\t\t * The ID of the featured media of the attachment.\n\t\t\t */\n\t\t\tfeatured_media: number;\n\t\t\t/**\n\t\t\t * An array of class names for the post.\n\t\t\t */\n\t\t\tclass_list: string[];\n\t\t\t/**\n\t\t\t * Links to related resources.\n\t\t\t */\n\t\t\t_links?: Record< string, unknown >;\n\t\t}\n\t}\n}\n\nexport type Attachment< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Attachment< C >\n>;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/entity-types/base.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { Context, OmitNevers } from './helpers';\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\nexport type TemplatePartArea = {\n\tarea: string;\n\tlabel: string;\n\ticon: string;\n\tdescription: string;\n};\n\nexport type TemplateType = {\n\ttitle: string;\n\tdescription: string;\n\tslug: string;\n};\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n\t\texport interface Base< C extends Context > {\n\t\t\t/**\n\t\t\t * Site description.\n\t\t\t */\n\t\t\tdescription: string;\n\n\t\t\t/**\n\t\t\t * GMT offset for the site.\n\t\t\t */\n\t\t\tgmt_offset: string;\n\n\t\t\t/**\n\t\t\t * Home URL.\n\t\t\t */\n\t\t\thome: string;\n\n\t\t\t/**\n\t\t\t * Site title\n\t\t\t */\n\t\t\tname: string;\n\n\t\t\t/**\n\t\t\t * Site icon ID.\n\t\t\t */\n\t\t\tsite_icon?: number;\n\n\t\t\t/**\n\t\t\t * Site icon URL.\n\t\t\t */\n\t\t\tsite_icon_url: string;\n\n\t\t\t/**\n\t\t\t * Site logo ID.\n\t\t\t */\n\t\t\tsite_logo?: number;\n\n\t\t\t/**\n\t\t\t * Site timezone string.\n\t\t\t */\n\t\t\ttimezone_string: string;\n\n\t\t\t/**\n\t\t\t * Site URL.\n\t\t\t */\n\t\t\turl: string;\n\n\t\t\t/**\n\t\t\t * Page for posts.\n\t\t\t */\n\t\t\tpage_for_posts: number;\n\n\t\t\t/**\n\t\t\t * Page on front.\n\t\t\t */\n\t\t\tpage_on_front: number;\n\n\t\t\t/**\n\t\t\t * Show on front.\n\t\t\t */\n\t\t\tshow_on_front: string;\n\t\t}\n\t}\n}\n\nexport type Base< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Base< C >\n>;\n"],
4
+ "sourcesContent": ["import type { Context, OmitNevers } from './helpers';\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\nexport type TemplatePartArea = {\n\tarea: string;\n\tlabel: string;\n\ticon: string;\n\tdescription: string;\n};\n\nexport type TemplateType = {\n\ttitle: string;\n\tdescription: string;\n\tslug: string;\n};\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n\t\texport interface Base< C extends Context > {\n\t\t\t/**\n\t\t\t * Site description.\n\t\t\t */\n\t\t\tdescription: string;\n\n\t\t\t/**\n\t\t\t * GMT offset for the site.\n\t\t\t */\n\t\t\tgmt_offset: string;\n\n\t\t\t/**\n\t\t\t * Home URL.\n\t\t\t */\n\t\t\thome: string;\n\n\t\t\t/**\n\t\t\t * Site title\n\t\t\t */\n\t\t\tname: string;\n\n\t\t\t/**\n\t\t\t * Site icon ID.\n\t\t\t */\n\t\t\tsite_icon?: number;\n\n\t\t\t/**\n\t\t\t * Site icon URL.\n\t\t\t */\n\t\t\tsite_icon_url: string;\n\n\t\t\t/**\n\t\t\t * Site logo ID.\n\t\t\t */\n\t\t\tsite_logo?: number;\n\n\t\t\t/**\n\t\t\t * Site timezone string.\n\t\t\t */\n\t\t\ttimezone_string: string;\n\n\t\t\t/**\n\t\t\t * Site URL.\n\t\t\t */\n\t\t\turl: string;\n\n\t\t\t/**\n\t\t\t * Page for posts.\n\t\t\t */\n\t\t\tpage_for_posts: number;\n\n\t\t\t/**\n\t\t\t * Page on front.\n\t\t\t */\n\t\t\tpage_on_front: number;\n\n\t\t\t/**\n\t\t\t * Show on front.\n\t\t\t */\n\t\t\tshow_on_front: string;\n\t\t}\n\t}\n}\n\nexport type Base< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Base< C >\n>;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/entity-types/comment.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport type {\n\tAvatarUrls,\n\tContext,\n\tContextualField,\n\tOmitNevers,\n\tRenderedText,\n} from './helpers';\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\nexport type CommentStatus = 'hold' | 'approve' | 'spam' | 'trash' | '1' | '0';\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\texport interface Comment< C extends Context > {\n\t\t\t/**\n\t\t\t * Unique identifier for the comment.\n\t\t\t */\n\t\t\tid: number;\n\t\t\t/**\n\t\t\t * The ID of the user object, if author was a user.\n\t\t\t */\n\t\t\tauthor: number;\n\t\t\t/**\n\t\t\t * Email address for the comment author.\n\t\t\t */\n\t\t\tauthor_email: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * IP address for the comment author.\n\t\t\t */\n\t\t\tauthor_ip: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * Display name for the comment author.\n\t\t\t */\n\t\t\tauthor_name: string;\n\t\t\t/**\n\t\t\t * URL for the comment author.\n\t\t\t */\n\t\t\tauthor_url: string;\n\t\t\t/**\n\t\t\t * User agent for the comment author.\n\t\t\t */\n\t\t\tauthor_user_agent: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * The content for the comment.\n\t\t\t */\n\t\t\tcontent: RenderedText< C >;\n\t\t\t/**\n\t\t\t * The date the comment was published, in the site's timezone.\n\t\t\t */\n\t\t\tdate: string;\n\t\t\t/**\n\t\t\t * The date the comment was published, as GMT.\n\t\t\t */\n\t\t\tdate_gmt: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * URL to the comment.\n\t\t\t */\n\t\t\tlink: string;\n\t\t\t/**\n\t\t\t * The ID for the parent of the comment.\n\t\t\t */\n\t\t\tparent: number;\n\t\t\t/**\n\t\t\t * The ID of the associated post object.\n\t\t\t */\n\t\t\tpost: ContextualField< number, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * State of the comment.\n\t\t\t */\n\t\t\tstatus: ContextualField< CommentStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Type of the comment.\n\t\t\t */\n\t\t\ttype: string;\n\t\t\t/**\n\t\t\t * Avatar URLs for the comment author.\n\t\t\t */\n\t\t\tauthor_avatar_urls: AvatarUrls;\n\t\t\t/**\n\t\t\t * Meta fields.\n\t\t\t */\n\t\t\tmeta: ContextualField<\n\t\t\t\tRecord< string, unknown >,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t}\n\t}\n}\n\nexport type Comment< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Comment< C >\n>;\n"],
4
+ "sourcesContent": ["import type {\n\tAvatarUrls,\n\tContext,\n\tContextualField,\n\tOmitNevers,\n\tRenderedText,\n} from './helpers';\nimport type { BaseEntityRecords as _BaseEntityRecords } from './base-entity-records';\n\nexport type CommentStatus = 'hold' | 'approve' | 'spam' | 'trash' | '1' | '0';\n\ndeclare module './base-entity-records' {\n\texport namespace BaseEntityRecords {\n\t\texport interface Comment< C extends Context > {\n\t\t\t/**\n\t\t\t * Unique identifier for the comment.\n\t\t\t */\n\t\t\tid: number;\n\t\t\t/**\n\t\t\t * The ID of the user object, if author was a user.\n\t\t\t */\n\t\t\tauthor: number;\n\t\t\t/**\n\t\t\t * Email address for the comment author.\n\t\t\t */\n\t\t\tauthor_email: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * IP address for the comment author.\n\t\t\t */\n\t\t\tauthor_ip: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * Display name for the comment author.\n\t\t\t */\n\t\t\tauthor_name: string;\n\t\t\t/**\n\t\t\t * URL for the comment author.\n\t\t\t */\n\t\t\tauthor_url: string;\n\t\t\t/**\n\t\t\t * User agent for the comment author.\n\t\t\t */\n\t\t\tauthor_user_agent: ContextualField< string, 'edit', C >;\n\t\t\t/**\n\t\t\t * The content for the comment.\n\t\t\t */\n\t\t\tcontent: RenderedText< C >;\n\t\t\t/**\n\t\t\t * The date the comment was published, in the site's timezone.\n\t\t\t */\n\t\t\tdate: string;\n\t\t\t/**\n\t\t\t * The date the comment was published, as GMT.\n\t\t\t */\n\t\t\tdate_gmt: ContextualField< string, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * URL to the comment.\n\t\t\t */\n\t\t\tlink: string;\n\t\t\t/**\n\t\t\t * The ID for the parent of the comment.\n\t\t\t */\n\t\t\tparent: number;\n\t\t\t/**\n\t\t\t * The ID of the associated post object.\n\t\t\t */\n\t\t\tpost: ContextualField< number, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * State of the comment.\n\t\t\t */\n\t\t\tstatus: ContextualField< CommentStatus, 'view' | 'edit', C >;\n\t\t\t/**\n\t\t\t * Type of the comment.\n\t\t\t */\n\t\t\ttype: string;\n\t\t\t/**\n\t\t\t * Avatar URLs for the comment author.\n\t\t\t */\n\t\t\tauthor_avatar_urls: AvatarUrls;\n\t\t\t/**\n\t\t\t * Meta fields.\n\t\t\t */\n\t\t\tmeta: ContextualField<\n\t\t\t\tRecord< string, unknown >,\n\t\t\t\t'view' | 'edit',\n\t\t\t\tC\n\t\t\t>;\n\t\t}\n\t}\n}\n\nexport type Comment< C extends Context = 'edit' > = OmitNevers<\n\t_BaseEntityRecords.Comment< C >\n>;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }