@wordpress/editor 14.13.0 → 14.13.1-next.cd6172eb0.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 (253) hide show
  1. package/README.md +8 -28
  2. package/build/bindings/post-meta.js +2 -3
  3. package/build/bindings/post-meta.js.map +1 -1
  4. package/build/components/autocompleters/user.js +1 -3
  5. package/build/components/autocompleters/user.js.map +1 -1
  6. package/build/components/collab-sidebar/constants.js +2 -1
  7. package/build/components/collab-sidebar/constants.js.map +1 -1
  8. package/build/components/collab-sidebar/index.js +108 -43
  9. package/build/components/collab-sidebar/index.js.map +1 -1
  10. package/build/components/collab-sidebar/utils.js +32 -0
  11. package/build/components/collab-sidebar/utils.js.map +1 -1
  12. package/build/components/entities-saved-states/index.js +6 -6
  13. package/build/components/entities-saved-states/index.js.map +1 -1
  14. package/build/components/header/index.js +5 -2
  15. package/build/components/header/index.js.map +1 -1
  16. package/build/components/index.js +10 -26
  17. package/build/components/index.js.map +1 -1
  18. package/build/components/post-actions/actions.js +29 -2
  19. package/build/components/post-actions/actions.js.map +1 -1
  20. package/build/components/post-actions/index.js +1 -1
  21. package/build/components/post-actions/index.js.map +1 -1
  22. package/build/components/post-actions/set-as-homepage.js +170 -0
  23. package/build/components/post-actions/set-as-homepage.js.map +1 -0
  24. package/build/components/post-author/constants.js +1 -1
  25. package/build/components/post-author/constants.js.map +1 -1
  26. package/build/components/post-author/hook.js +1 -0
  27. package/build/components/post-author/hook.js.map +1 -1
  28. package/build/components/post-fields/index.js +3 -3
  29. package/build/components/post-fields/index.js.map +1 -1
  30. package/build/components/post-publish-button/index.js +4 -2
  31. package/build/components/post-publish-button/index.js.map +1 -1
  32. package/build/components/post-publish-button/post-publish-button-or-toggle.js +32 -37
  33. package/build/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -1
  34. package/build/components/post-publish-panel/maybe-upload-media.js +0 -1
  35. package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  36. package/build/components/post-publish-panel/media-util.js +0 -1
  37. package/build/components/post-publish-panel/media-util.js.map +1 -1
  38. package/build/components/post-publish-panel/postpublish.js +103 -117
  39. package/build/components/post-publish-panel/postpublish.js.map +1 -1
  40. package/build/components/post-trash/check.js +4 -4
  41. package/build/components/post-trash/check.js.map +1 -1
  42. package/build/components/post-url/index.js +2 -1
  43. package/build/components/post-url/index.js.map +1 -1
  44. package/build/components/provider/index.js +9 -1
  45. package/build/components/provider/index.js.map +1 -1
  46. package/build/components/save-publish-panels/index.js +3 -1
  47. package/build/components/save-publish-panels/index.js.map +1 -1
  48. package/build/components/template-part-menu-items/convert-to-template-part.js +2 -3
  49. package/build/components/template-part-menu-items/convert-to-template-part.js.map +1 -1
  50. package/build/components/visual-editor/index.js +2 -1
  51. package/build/components/visual-editor/index.js.map +1 -1
  52. package/build/dataviews/store/private-actions.js +3 -8
  53. package/build/dataviews/store/private-actions.js.map +1 -1
  54. package/build/private-apis.js +2 -2
  55. package/build/private-apis.js.map +1 -1
  56. package/build/store/constants.js +0 -1
  57. package/build/store/constants.js.map +1 -1
  58. package/build/store/private-actions.js +0 -1
  59. package/build/store/private-actions.js.map +1 -1
  60. package/build/store/selectors.js +1 -1
  61. package/build/store/selectors.js.map +1 -1
  62. package/build-module/bindings/post-meta.js +2 -3
  63. package/build-module/bindings/post-meta.js.map +1 -1
  64. package/build-module/components/autocompleters/user.js +1 -3
  65. package/build-module/components/autocompleters/user.js.map +1 -1
  66. package/build-module/components/collab-sidebar/constants.js +1 -0
  67. package/build-module/components/collab-sidebar/constants.js.map +1 -1
  68. package/build-module/components/collab-sidebar/index.js +111 -46
  69. package/build-module/components/collab-sidebar/index.js.map +1 -1
  70. package/build-module/components/collab-sidebar/utils.js +31 -0
  71. package/build-module/components/collab-sidebar/utils.js.map +1 -1
  72. package/build-module/components/entities-saved-states/index.js +6 -6
  73. package/build-module/components/entities-saved-states/index.js.map +1 -1
  74. package/build-module/components/header/index.js +5 -2
  75. package/build-module/components/header/index.js.map +1 -1
  76. package/build-module/components/index.js +0 -2
  77. package/build-module/components/index.js.map +1 -1
  78. package/build-module/components/post-actions/actions.js +29 -2
  79. package/build-module/components/post-actions/actions.js.map +1 -1
  80. package/build-module/components/post-actions/index.js +1 -1
  81. package/build-module/components/post-actions/index.js.map +1 -1
  82. package/build-module/components/post-actions/set-as-homepage.js +162 -0
  83. package/build-module/components/post-actions/set-as-homepage.js.map +1 -0
  84. package/build-module/components/post-author/constants.js +1 -1
  85. package/build-module/components/post-author/constants.js.map +1 -1
  86. package/build-module/components/post-author/hook.js +1 -0
  87. package/build-module/components/post-author/hook.js.map +1 -1
  88. package/build-module/components/post-fields/index.js +3 -3
  89. package/build-module/components/post-fields/index.js.map +1 -1
  90. package/build-module/components/post-publish-button/index.js +4 -2
  91. package/build-module/components/post-publish-button/index.js.map +1 -1
  92. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js +34 -38
  93. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -1
  94. package/build-module/components/post-publish-panel/maybe-upload-media.js +0 -1
  95. package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  96. package/build-module/components/post-publish-panel/media-util.js +0 -1
  97. package/build-module/components/post-publish-panel/media-util.js.map +1 -1
  98. package/build-module/components/post-publish-panel/postpublish.js +104 -118
  99. package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
  100. package/build-module/components/post-trash/check.js +4 -4
  101. package/build-module/components/post-trash/check.js.map +1 -1
  102. package/build-module/components/post-url/index.js +2 -1
  103. package/build-module/components/post-url/index.js.map +1 -1
  104. package/build-module/components/provider/index.js +10 -2
  105. package/build-module/components/provider/index.js.map +1 -1
  106. package/build-module/components/save-publish-panels/index.js +3 -1
  107. package/build-module/components/save-publish-panels/index.js.map +1 -1
  108. package/build-module/components/template-part-menu-items/convert-to-template-part.js +1 -1
  109. package/build-module/components/template-part-menu-items/convert-to-template-part.js.map +1 -1
  110. package/build-module/components/visual-editor/index.js +2 -1
  111. package/build-module/components/visual-editor/index.js.map +1 -1
  112. package/build-module/dataviews/store/private-actions.js +4 -9
  113. package/build-module/dataviews/store/private-actions.js.map +1 -1
  114. package/build-module/private-apis.js +1 -1
  115. package/build-module/private-apis.js.map +1 -1
  116. package/build-module/store/constants.js +0 -1
  117. package/build-module/store/constants.js.map +1 -1
  118. package/build-module/store/private-actions.js +0 -1
  119. package/build-module/store/private-actions.js.map +1 -1
  120. package/build-module/store/selectors.js +1 -1
  121. package/build-module/store/selectors.js.map +1 -1
  122. package/build-style/style-rtl.css +31 -62
  123. package/build-style/style.css +31 -62
  124. package/build-types/bindings/post-meta.d.ts.map +1 -1
  125. package/build-types/components/autocompleters/user.d.ts +1 -3
  126. package/build-types/components/autocompleters/user.d.ts.map +1 -1
  127. package/build-types/components/collab-sidebar/constants.d.ts +1 -0
  128. package/build-types/components/collab-sidebar/constants.d.ts.map +1 -1
  129. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  130. package/build-types/components/collab-sidebar/utils.d.ts +10 -0
  131. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  132. package/build-types/components/entities-saved-states/index.d.ts +5 -5
  133. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  134. package/build-types/components/header/index.d.ts.map +1 -1
  135. package/build-types/components/index.d.ts +0 -2
  136. package/build-types/components/index.d.ts.map +1 -1
  137. package/build-types/components/post-actions/actions.d.ts +1 -1
  138. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  139. package/build-types/components/post-actions/set-as-homepage.d.ts +10 -0
  140. package/build-types/components/post-actions/set-as-homepage.d.ts.map +1 -0
  141. package/build-types/components/post-author/hook.d.ts.map +1 -1
  142. package/build-types/components/post-fields/index.d.ts +3 -1
  143. package/build-types/components/post-fields/index.d.ts.map +1 -1
  144. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  145. package/build-types/components/post-publish-button/post-publish-button-or-toggle.d.ts +1 -13
  146. package/build-types/components/post-publish-button/post-publish-button-or-toggle.d.ts.map +1 -1
  147. package/build-types/components/post-publish-panel/postpublish.d.ts +4 -2
  148. package/build-types/components/post-publish-panel/postpublish.d.ts.map +1 -1
  149. package/build-types/components/post-trash/check.d.ts +6 -6
  150. package/build-types/components/post-trash/check.d.ts.map +1 -1
  151. package/build-types/components/post-url/index.d.ts +5 -2
  152. package/build-types/components/post-url/index.d.ts.map +1 -1
  153. package/build-types/components/provider/index.d.ts.map +1 -1
  154. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  155. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  156. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  157. package/build-types/lock-unlock.d.ts +2 -2
  158. package/build-types/store/selectors.d.ts +1 -1
  159. package/build-types/store/selectors.d.ts.map +1 -1
  160. package/package.json +36 -36
  161. package/src/bindings/post-meta.js +2 -5
  162. package/src/components/autocompleters/user.js +1 -3
  163. package/src/components/collab-sidebar/constants.js +1 -0
  164. package/src/components/collab-sidebar/index.js +115 -47
  165. package/src/components/collab-sidebar/style.scss +13 -0
  166. package/src/components/collab-sidebar/utils.js +36 -0
  167. package/src/components/editor-interface/style.scss +2 -1
  168. package/src/components/entities-saved-states/index.js +6 -9
  169. package/src/components/header/index.js +17 -5
  170. package/src/components/header/style.scss +1 -1
  171. package/src/components/index.js +0 -2
  172. package/src/components/post-actions/actions.js +38 -2
  173. package/src/components/post-actions/index.js +1 -1
  174. package/src/components/post-actions/set-as-homepage.js +183 -0
  175. package/src/components/post-author/constants.js +1 -1
  176. package/src/components/post-author/hook.js +1 -0
  177. package/src/components/post-fields/index.ts +5 -3
  178. package/src/components/post-publish-button/index.js +2 -0
  179. package/src/components/post-publish-button/post-publish-button-or-toggle.js +38 -40
  180. package/src/components/post-publish-button/test/post-publish-button-or-toggle.js +24 -9
  181. package/src/components/post-publish-panel/postpublish.js +114 -124
  182. package/src/components/post-trash/check.js +4 -4
  183. package/src/components/post-url/index.js +2 -1
  184. package/src/components/provider/index.js +17 -3
  185. package/src/components/save-publish-panels/index.js +5 -1
  186. package/src/components/template-part-menu-items/convert-to-template-part.js +1 -1
  187. package/src/components/visual-editor/index.js +1 -0
  188. package/src/components/visual-editor/style.scss +29 -6
  189. package/src/dataviews/store/private-actions.ts +14 -13
  190. package/src/private-apis.js +1 -1
  191. package/src/store/selectors.js +1 -1
  192. package/src/style.scss +0 -2
  193. package/tsconfig.tsbuildinfo +1 -1
  194. package/build/components/create-template-part-modal/index.js +0 -170
  195. package/build/components/create-template-part-modal/index.js.map +0 -1
  196. package/build/components/create-template-part-modal/utils.js +0 -64
  197. package/build/components/create-template-part-modal/utils.js.map +0 -1
  198. package/build/components/post-slug/check.js +0 -29
  199. package/build/components/post-slug/check.js.map +0 -1
  200. package/build/components/post-slug/index.js +0 -79
  201. package/build/components/post-slug/index.js.map +0 -1
  202. package/build/components/post-slug/panel.js +0 -30
  203. package/build/components/post-slug/panel.js.map +0 -1
  204. package/build/dataviews/actions/duplicate-template-part.js +0 -67
  205. package/build/dataviews/actions/duplicate-template-part.js.map +0 -1
  206. package/build/dataviews/actions/utils.js +0 -58
  207. package/build/dataviews/actions/utils.js.map +0 -1
  208. package/build/dataviews/types.js +0 -6
  209. package/build/dataviews/types.js.map +0 -1
  210. package/build-module/components/create-template-part-modal/index.js +0 -162
  211. package/build-module/components/create-template-part-modal/index.js.map +0 -1
  212. package/build-module/components/create-template-part-modal/utils.js +0 -54
  213. package/build-module/components/create-template-part-modal/utils.js.map +0 -1
  214. package/build-module/components/post-slug/check.js +0 -23
  215. package/build-module/components/post-slug/check.js.map +0 -1
  216. package/build-module/components/post-slug/index.js +0 -71
  217. package/build-module/components/post-slug/index.js.map +0 -1
  218. package/build-module/components/post-slug/panel.js +0 -21
  219. package/build-module/components/post-slug/panel.js.map +0 -1
  220. package/build-module/dataviews/actions/duplicate-template-part.js +0 -58
  221. package/build-module/dataviews/actions/duplicate-template-part.js.map +0 -1
  222. package/build-module/dataviews/actions/utils.js +0 -47
  223. package/build-module/dataviews/actions/utils.js.map +0 -1
  224. package/build-module/dataviews/types.js +0 -2
  225. package/build-module/dataviews/types.js.map +0 -1
  226. package/build-types/components/create-template-part-modal/index.d.ts +0 -14
  227. package/build-types/components/create-template-part-modal/index.d.ts.map +0 -1
  228. package/build-types/components/create-template-part-modal/utils.d.ts +0 -4
  229. package/build-types/components/create-template-part-modal/utils.d.ts.map +0 -1
  230. package/build-types/components/post-slug/check.d.ts +0 -12
  231. package/build-types/components/post-slug/check.d.ts.map +0 -1
  232. package/build-types/components/post-slug/index.d.ts +0 -7
  233. package/build-types/components/post-slug/index.d.ts.map +0 -1
  234. package/build-types/components/post-slug/panel.d.ts +0 -3
  235. package/build-types/components/post-slug/panel.d.ts.map +0 -1
  236. package/build-types/dataviews/actions/duplicate-template-part.d.ts +0 -5
  237. package/build-types/dataviews/actions/duplicate-template-part.d.ts.map +0 -1
  238. package/build-types/dataviews/actions/utils.d.ts +0 -13
  239. package/build-types/dataviews/actions/utils.d.ts.map +0 -1
  240. package/build-types/dataviews/types.d.ts +0 -92
  241. package/build-types/dataviews/types.d.ts.map +0 -1
  242. package/src/components/create-template-part-modal/index.js +0 -210
  243. package/src/components/create-template-part-modal/style.scss +0 -63
  244. package/src/components/create-template-part-modal/test/utils.js +0 -60
  245. package/src/components/create-template-part-modal/utils.js +0 -67
  246. package/src/components/post-slug/check.js +0 -20
  247. package/src/components/post-slug/index.js +0 -73
  248. package/src/components/post-slug/panel.js +0 -22
  249. package/src/components/post-slug/style.scss +0 -5
  250. package/src/components/post-slug/test/index.js +0 -53
  251. package/src/dataviews/actions/duplicate-template-part.tsx +0 -70
  252. package/src/dataviews/actions/utils.ts +0 -64
  253. package/src/dataviews/types.ts +0 -85
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useEntityRecords","useDispatch","useSelect","unlock","store","editorStore","usePostFields","postType","registerPostTypeSchema","defaultFields","select","getEntityFields","records","authors","isResolving","isLoadingAuthors","per_page","fields","map","field","id","elements","name","value","label","isLoading"],"sources":["@wordpress/editor/src/components/post-fields/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport type { Field } from '@wordpress/dataviews';\nimport type { BasePostWithEmbeddedAuthor } from '@wordpress/fields';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\n\ninterface UsePostFieldsReturn {\n\tisLoading: boolean;\n\tfields: Field< BasePostWithEmbeddedAuthor >[];\n}\n\ninterface Author {\n\tid: number;\n\tname: string;\n}\n\nfunction usePostFields(): UsePostFieldsReturn {\n\tconst postType = 'page'; // TODO: this could be page or post (experimental).\n\n\tconst { registerPostTypeSchema } = unlock( useDispatch( editorStore ) );\n\tuseEffect( () => {\n\t\tregisterPostTypeSchema( postType );\n\t}, [ registerPostTypeSchema, postType ] );\n\n\tconst { defaultFields } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityFields } = unlock( select( editorStore ) );\n\t\t\treturn {\n\t\t\t\tdefaultFields: getEntityFields( 'postType', postType ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst { records: authors, isResolving: isLoadingAuthors } =\n\t\tuseEntityRecords< Author >( 'root', 'user', { per_page: -1 } );\n\n\tconst fields = useMemo(\n\t\t() =>\n\t\t\tdefaultFields.map(\n\t\t\t\t( field: Field< BasePostWithEmbeddedAuthor > ) => {\n\t\t\t\t\tif ( field.id === 'author' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\telements: authors?.map( ( { id, name } ) => ( {\n\t\t\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t\t} ) ),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn field;\n\t\t\t\t}\n\t\t\t) as Field< BasePostWithEmbeddedAuthor >[],\n\t\t[ authors, defaultFields ]\n\t);\n\n\treturn {\n\t\tisLoading: isLoadingAuthors,\n\t\tfields,\n\t};\n}\n\n/**\n * Hook to get the fields for a post (BasePost or BasePostWithEmbeddedAuthor).\n */\nexport default usePostFields;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,OAAO,QAAQ,oBAAoB;AACvD,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AAIxD;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,KAAK,IAAIC,WAAW,QAAQ,aAAa;AAYlD,SAASC,aAAaA,CAAA,EAAwB;EAC7C,MAAMC,QAAQ,GAAG,MAAM,CAAC,CAAC;;EAEzB,MAAM;IAAEC;EAAuB,CAAC,GAAGL,MAAM,CAAEF,WAAW,CAAEI,WAAY,CAAE,CAAC;EACvEP,SAAS,CAAE,MAAM;IAChBU,sBAAsB,CAAED,QAAS,CAAC;EACnC,CAAC,EAAE,CAAEC,sBAAsB,EAAED,QAAQ,CAAG,CAAC;EAEzC,MAAM;IAAEE;EAAc,CAAC,GAAGP,SAAS,CAChCQ,MAAM,IAAM;IACb,MAAM;MAAEC;IAAgB,CAAC,GAAGR,MAAM,CAAEO,MAAM,CAAEL,WAAY,CAAE,CAAC;IAC3D,OAAO;MACNI,aAAa,EAAEE,eAAe,CAAE,UAAU,EAAEJ,QAAS;IACtD,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EAED,MAAM;IAAEK,OAAO,EAAEC,OAAO;IAAEC,WAAW,EAAEC;EAAiB,CAAC,GACxDf,gBAAgB,CAAY,MAAM,EAAE,MAAM,EAAE;IAAEgB,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC;EAE/D,MAAMC,MAAM,GAAGlB,OAAO,CACrB,MACCU,aAAa,CAACS,GAAG,CACdC,KAA0C,IAAM;IACjD,IAAKA,KAAK,CAACC,EAAE,KAAK,QAAQ,EAAG;MAC5B,OAAO;QACN,GAAGD,KAAK;QACRE,QAAQ,EAAER,OAAO,EAAEK,GAAG,CAAE,CAAE;UAAEE,EAAE;UAAEE;QAAK,CAAC,MAAQ;UAC7CC,KAAK,EAAEH,EAAE;UACTI,KAAK,EAAEF;QACR,CAAC,CAAG;MACL,CAAC;IACF;IAEA,OAAOH,KAAK;EACb,CACD,CAA0C,EAC3C,CAAEN,OAAO,EAAEJ,aAAa,CACzB,CAAC;EAED,OAAO;IACNgB,SAAS,EAAEV,gBAAgB;IAC3BE;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA,eAAeX,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useMemo","useEntityRecords","useDispatch","useSelect","unlock","store","editorStore","usePostFields","postType","registerPostTypeSchema","defaultFields","select","getEntityFields","records","authors","isResolving","isLoadingAuthors","per_page","fields","map","field","id","elements","name","value","label","isLoading"],"sources":["@wordpress/editor/src/components/post-fields/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport type { Field } from '@wordpress/dataviews';\nimport type { BasePostWithEmbeddedAuthor } from '@wordpress/fields';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\n\ninterface UsePostFieldsReturn {\n\tisLoading: boolean;\n\tfields: Field< BasePostWithEmbeddedAuthor >[];\n}\n\ninterface Author {\n\tid: number;\n\tname: string;\n}\n\nfunction usePostFields( {\n\tpostType,\n}: {\n\tpostType: string;\n} ): UsePostFieldsReturn {\n\tconst { registerPostTypeSchema } = unlock( useDispatch( editorStore ) );\n\tuseEffect( () => {\n\t\tregisterPostTypeSchema( postType );\n\t}, [ registerPostTypeSchema, postType ] );\n\n\tconst { defaultFields } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityFields } = unlock( select( editorStore ) );\n\t\t\treturn {\n\t\t\t\tdefaultFields: getEntityFields( 'postType', postType ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst { records: authors, isResolving: isLoadingAuthors } =\n\t\tuseEntityRecords< Author >( 'root', 'user', { per_page: -1 } );\n\n\tconst fields = useMemo(\n\t\t() =>\n\t\t\tdefaultFields.map(\n\t\t\t\t( field: Field< BasePostWithEmbeddedAuthor > ) => {\n\t\t\t\t\tif ( field.id === 'author' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\telements: authors?.map( ( { id, name } ) => ( {\n\t\t\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t\t} ) ),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn field;\n\t\t\t\t}\n\t\t\t) as Field< BasePostWithEmbeddedAuthor >[],\n\t\t[ authors, defaultFields ]\n\t);\n\n\treturn {\n\t\tisLoading: isLoadingAuthors,\n\t\tfields,\n\t};\n}\n\n/**\n * Hook to get the fields for a post (BasePost or BasePostWithEmbeddedAuthor).\n */\nexport default usePostFields;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,OAAO,QAAQ,oBAAoB;AACvD,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AAIxD;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,KAAK,IAAIC,WAAW,QAAQ,aAAa;AAYlD,SAASC,aAAaA,CAAE;EACvBC;AAGD,CAAC,EAAwB;EACxB,MAAM;IAAEC;EAAuB,CAAC,GAAGL,MAAM,CAAEF,WAAW,CAAEI,WAAY,CAAE,CAAC;EACvEP,SAAS,CAAE,MAAM;IAChBU,sBAAsB,CAAED,QAAS,CAAC;EACnC,CAAC,EAAE,CAAEC,sBAAsB,EAAED,QAAQ,CAAG,CAAC;EAEzC,MAAM;IAAEE;EAAc,CAAC,GAAGP,SAAS,CAChCQ,MAAM,IAAM;IACb,MAAM;MAAEC;IAAgB,CAAC,GAAGR,MAAM,CAAEO,MAAM,CAAEL,WAAY,CAAE,CAAC;IAC3D,OAAO;MACNI,aAAa,EAAEE,eAAe,CAAE,UAAU,EAAEJ,QAAS;IACtD,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EAED,MAAM;IAAEK,OAAO,EAAEC,OAAO;IAAEC,WAAW,EAAEC;EAAiB,CAAC,GACxDf,gBAAgB,CAAY,MAAM,EAAE,MAAM,EAAE;IAAEgB,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC;EAE/D,MAAMC,MAAM,GAAGlB,OAAO,CACrB,MACCU,aAAa,CAACS,GAAG,CACdC,KAA0C,IAAM;IACjD,IAAKA,KAAK,CAACC,EAAE,KAAK,QAAQ,EAAG;MAC5B,OAAO;QACN,GAAGD,KAAK;QACRE,QAAQ,EAAER,OAAO,EAAEK,GAAG,CAAE,CAAE;UAAEE,EAAE;UAAEE;QAAK,CAAC,MAAQ;UAC7CC,KAAK,EAAEH,EAAE;UACTI,KAAK,EAAEF;QACR,CAAC,CAAG;MACL,CAAC;IACF;IAEA,OAAOH,KAAK;EACb,CACD,CAA0C,EAC3C,CAAEN,OAAO,EAAEJ,aAAa,CACzB,CAAC;EAED,OAAO;IACNgB,SAAS,EAAEV,gBAAgB;IAC3BE;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA,eAAeX,aAAa","ignoreList":[]}
@@ -127,7 +127,8 @@ export class PostPublishButton extends Component {
127
127
  className: 'editor-post-publish-button',
128
128
  isBusy: !isAutoSaving && isSaving,
129
129
  variant: 'primary',
130
- onClick: this.createOnClick(onClickButton)
130
+ onClick: this.createOnClick(onClickButton),
131
+ 'aria-haspopup': hasNonPostEntityChanges ? 'dialog' : undefined
131
132
  };
132
133
  const toggleProps = {
133
134
  'aria-disabled': isToggleDisabled,
@@ -136,7 +137,8 @@ export class PostPublishButton extends Component {
136
137
  isBusy: isSaving && isPublished,
137
138
  variant: 'primary',
138
139
  size: 'compact',
139
- onClick: this.createOnClick(onClickToggle)
140
+ onClick: this.createOnClick(onClickToggle),
141
+ 'aria-haspopup': hasNonPostEntityChanges ? 'dialog' : undefined
140
142
  };
141
143
  const componentProps = isToggle ? toggleProps : buttonProps;
142
144
  return /*#__PURE__*/_jsx(_Fragment, {
@@ -1 +1 @@
1
- {"version":3,"names":["Button","Component","withSelect","withDispatch","compose","PublishButtonLabel","store","editorStore","jsx","_jsx","Fragment","_Fragment","noop","PostPublishButton","constructor","props","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","callback","args","hasNonPostEntityChanges","setEntitiesSavedStatesCallback","setState","savedEntities","postType","postId","some","elt","kind","name","key","render","forceIsDirty","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","savePostStatus","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","postStatus","postStatusHasChanged","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","size","componentProps","children","select","_getCurrentPost$_link","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","getEditedPostAttribute","getPostEdits","_links","status","dispatch","editPost","savePost","undoIgnore"],"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nconst noop = () => {};\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates =\n\t\t\tthis.closeEntitiesSavedStates.bind( this );\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst { hasNonPostEntityChanges, setEntitiesSavedStatesCallback } =\n\t\t\t\tthis.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\tif ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsavedEntities.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tsavePostStatus,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tpostStatus,\n\t\t\tpostStatusHasChanged,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\t// If the new status has not changed explicitely, we derive it from\n\t\t// other factors, like having a publish action, etc.. We need to preserve\n\t\t// this because it affects when to show the pre and post publish panels.\n\t\t// If it has changed though explicitely, we need to respect that.\n\t\tlet publishStatus = 'publish';\n\t\tif ( postStatusHasChanged ) {\n\t\t\tpublishStatus = postStatus;\n\t\t} else if ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tsavePostStatus( publishStatus );\n\t\t};\n\n\t\t// Callback to open the publish panel.\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tsize: 'compact',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ `${ componentProps.className } editor-post-publish-button__button` }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<PublishButtonLabel />\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\n/**\n * Renders the publish button.\n */\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetPostEdits,\n\t\t} = select( editorStore );\n\t\treturn {\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisAutoSaving: isAutosavingPost(),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostStatus: getEditedPostAttribute( 'status' ),\n\t\t\tpostStatusHasChanged: getPostEdits()?.status,\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tsavePostStatus: ( status ) => {\n\t\t\t\teditPost( { status }, { undoIgnore: true } );\n\t\t\t\tsavePost();\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Button","Component","withSelect","withDispatch","compose","PublishButtonLabel","store","editorStore","jsx","_jsx","Fragment","_Fragment","noop","PostPublishButton","constructor","props","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","callback","args","hasNonPostEntityChanges","setEntitiesSavedStatesCallback","setState","savedEntities","postType","postId","some","elt","kind","name","key","render","forceIsDirty","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","savePostStatus","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","postStatus","postStatusHasChanged","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","undefined","toggleProps","size","componentProps","children","select","_getCurrentPost$_link","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","getEditedPostAttribute","getPostEdits","_links","status","dispatch","editPost","savePost","undoIgnore"],"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nconst noop = () => {};\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates =\n\t\t\tthis.closeEntitiesSavedStates.bind( this );\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst { hasNonPostEntityChanges, setEntitiesSavedStatesCallback } =\n\t\t\t\tthis.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\tif ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsavedEntities.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tsavePostStatus,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tpostStatus,\n\t\t\tpostStatusHasChanged,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\t// If the new status has not changed explicitely, we derive it from\n\t\t// other factors, like having a publish action, etc.. We need to preserve\n\t\t// this because it affects when to show the pre and post publish panels.\n\t\t// If it has changed though explicitely, we need to respect that.\n\t\tlet publishStatus = 'publish';\n\t\tif ( postStatusHasChanged ) {\n\t\t\tpublishStatus = postStatus;\n\t\t} else if ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tsavePostStatus( publishStatus );\n\t\t};\n\n\t\t// Callback to open the publish panel.\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t\t'aria-haspopup': hasNonPostEntityChanges ? 'dialog' : undefined,\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tsize: 'compact',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t\t'aria-haspopup': hasNonPostEntityChanges ? 'dialog' : undefined,\n\t\t};\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ `${ componentProps.className } editor-post-publish-button__button` }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<PublishButtonLabel />\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\n/**\n * Renders the publish button.\n */\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetPostEdits,\n\t\t} = select( editorStore );\n\t\treturn {\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisAutoSaving: isAutosavingPost(),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostStatus: getEditedPostAttribute( 'status' ),\n\t\t\tpostStatusHasChanged: getPostEdits()?.status,\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tsavePostStatus: ( status ) => {\n\t\t\t\teditPost( { status }, { undoIgnore: true } );\n\t\t\t\tsavePost();\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useViewportMatch, compose } from '@wordpress/compose';
5
- import { withDispatch, withSelect } from '@wordpress/data';
4
+ import { useViewportMatch } from '@wordpress/compose';
5
+ import { useDispatch, useSelect } from '@wordpress/data';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
@@ -10,24 +10,41 @@ import { withDispatch, withSelect } from '@wordpress/data';
10
10
  import PostPublishButton from './index';
11
11
  import { store as editorStore } from '../../store';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
- export function PostPublishButtonOrToggle({
13
+ const IS_TOGGLE = 'toggle';
14
+ const IS_BUTTON = 'button';
15
+ export default function PostPublishButtonOrToggle({
14
16
  forceIsDirty,
15
- hasPublishAction,
16
- isBeingScheduled,
17
- isPending,
18
- isPublished,
19
- isPublishSidebarEnabled,
20
- isPublishSidebarOpened,
21
- isScheduled,
22
- togglePublishSidebar,
23
- setEntitiesSavedStatesCallback,
24
- postStatusHasChanged,
25
- postStatus
17
+ setEntitiesSavedStatesCallback
26
18
  }) {
27
- const IS_TOGGLE = 'toggle';
28
- const IS_BUTTON = 'button';
29
- const isSmallerThanMediumViewport = useViewportMatch('medium', '<');
30
19
  let component;
20
+ const isSmallerThanMediumViewport = useViewportMatch('medium', '<');
21
+ const {
22
+ togglePublishSidebar
23
+ } = useDispatch(editorStore);
24
+ const {
25
+ hasPublishAction,
26
+ isBeingScheduled,
27
+ isPending,
28
+ isPublished,
29
+ isPublishSidebarEnabled,
30
+ isPublishSidebarOpened,
31
+ isScheduled,
32
+ postStatus,
33
+ postStatusHasChanged
34
+ } = useSelect(select => {
35
+ var _select$getCurrentPos;
36
+ return {
37
+ hasPublishAction: (_select$getCurrentPos = !!select(editorStore).getCurrentPost()?._links?.['wp:action-publish']) !== null && _select$getCurrentPos !== void 0 ? _select$getCurrentPos : false,
38
+ isBeingScheduled: select(editorStore).isEditedPostBeingScheduled(),
39
+ isPending: select(editorStore).isCurrentPostPending(),
40
+ isPublished: select(editorStore).isCurrentPostPublished(),
41
+ isPublishSidebarEnabled: select(editorStore).isPublishSidebarEnabled(),
42
+ isPublishSidebarOpened: select(editorStore).isPublishSidebarOpened(),
43
+ isScheduled: select(editorStore).isCurrentPostScheduled(),
44
+ postStatus: select(editorStore).getEditedPostAttribute('status'),
45
+ postStatusHasChanged: select(editorStore).getPostEdits()?.status
46
+ };
47
+ }, []);
31
48
 
32
49
  /**
33
50
  * Conditions to show a BUTTON (publish directly) or a TOGGLE (open publish sidebar):
@@ -67,25 +84,4 @@ export function PostPublishButtonOrToggle({
67
84
  setEntitiesSavedStatesCallback: setEntitiesSavedStatesCallback
68
85
  });
69
86
  }
70
- export default compose(withSelect(select => {
71
- var _select$getCurrentPos;
72
- return {
73
- hasPublishAction: (_select$getCurrentPos = select(editorStore).getCurrentPost()?._links?.['wp:action-publish']) !== null && _select$getCurrentPos !== void 0 ? _select$getCurrentPos : false,
74
- isBeingScheduled: select(editorStore).isEditedPostBeingScheduled(),
75
- isPending: select(editorStore).isCurrentPostPending(),
76
- isPublished: select(editorStore).isCurrentPostPublished(),
77
- isPublishSidebarEnabled: select(editorStore).isPublishSidebarEnabled(),
78
- isPublishSidebarOpened: select(editorStore).isPublishSidebarOpened(),
79
- isScheduled: select(editorStore).isCurrentPostScheduled(),
80
- postStatus: select(editorStore).getEditedPostAttribute('status'),
81
- postStatusHasChanged: select(editorStore).getPostEdits()?.status
82
- };
83
- }), withDispatch(dispatch => {
84
- const {
85
- togglePublishSidebar
86
- } = dispatch(editorStore);
87
- return {
88
- togglePublishSidebar
89
- };
90
- }))(PostPublishButtonOrToggle);
91
87
  //# sourceMappingURL=post-publish-button-or-toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useViewportMatch","compose","withDispatch","withSelect","PostPublishButton","store","editorStore","jsx","_jsx","PostPublishButtonOrToggle","forceIsDirty","hasPublishAction","isBeingScheduled","isPending","isPublished","isPublishSidebarEnabled","isPublishSidebarOpened","isScheduled","togglePublishSidebar","setEntitiesSavedStatesCallback","postStatusHasChanged","postStatus","IS_TOGGLE","IS_BUTTON","isSmallerThanMediumViewport","component","includes","isOpen","isToggle","onToggle","select","_select$getCurrentPos","getCurrentPost","_links","isEditedPostBeingScheduled","isCurrentPostPending","isCurrentPostPublished","isCurrentPostScheduled","getEditedPostAttribute","getPostEdits","status","dispatch"],"sources":["@wordpress/editor/src/components/post-publish-button/post-publish-button-or-toggle.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useViewportMatch, compose } from '@wordpress/compose';\nimport { withDispatch, withSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport PostPublishButton from './index';\nimport { store as editorStore } from '../../store';\n\nexport function PostPublishButtonOrToggle( {\n\tforceIsDirty,\n\thasPublishAction,\n\tisBeingScheduled,\n\tisPending,\n\tisPublished,\n\tisPublishSidebarEnabled,\n\tisPublishSidebarOpened,\n\tisScheduled,\n\ttogglePublishSidebar,\n\tsetEntitiesSavedStatesCallback,\n\tpostStatusHasChanged,\n\tpostStatus,\n} ) {\n\tconst IS_TOGGLE = 'toggle';\n\tconst IS_BUTTON = 'button';\n\tconst isSmallerThanMediumViewport = useViewportMatch( 'medium', '<' );\n\tlet component;\n\n\t/**\n\t * Conditions to show a BUTTON (publish directly) or a TOGGLE (open publish sidebar):\n\t *\n\t * 1) We want to show a BUTTON when the post status is at the _final stage_\n\t * for a particular role (see https://wordpress.org/documentation/article/post-status/):\n\t *\n\t * - is published\n\t * - post status has changed explicitely to something different than 'future' or 'publish'\n\t * - is scheduled to be published\n\t * - is pending and can't be published (but only for viewports >= medium).\n\t * \t Originally, we considered showing a button for pending posts that couldn't be published\n\t * \t (for example, for an author with the contributor role). Some languages can have\n\t * \t long translations for \"Submit for review\", so given the lack of UI real estate available\n\t * \t we decided to take into account the viewport in that case.\n\t * \t See: https://github.com/WordPress/gutenberg/issues/10475\n\t *\n\t * 2) Then, in small viewports, we'll show a TOGGLE.\n\t *\n\t * 3) Finally, we'll use the publish sidebar status to decide:\n\t *\n\t * - if it is enabled, we show a TOGGLE\n\t * - if it is disabled, we show a BUTTON\n\t */\n\tif (\n\t\tisPublished ||\n\t\t( postStatusHasChanged &&\n\t\t\t! [ 'future', 'publish' ].includes( postStatus ) ) ||\n\t\t( isScheduled && isBeingScheduled ) ||\n\t\t( isPending && ! hasPublishAction && ! isSmallerThanMediumViewport )\n\t) {\n\t\tcomponent = IS_BUTTON;\n\t} else if ( isSmallerThanMediumViewport || isPublishSidebarEnabled ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else {\n\t\tcomponent = IS_BUTTON;\n\t}\n\n\treturn (\n\t\t<PostPublishButton\n\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\tisOpen={ isPublishSidebarOpened }\n\t\t\tisToggle={ component === IS_TOGGLE }\n\t\t\tonToggle={ togglePublishSidebar }\n\t\t\tsetEntitiesSavedStatesCallback={ setEntitiesSavedStatesCallback }\n\t\t/>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select ) => ( {\n\t\thasPublishAction:\n\t\t\tselect( editorStore ).getCurrentPost()?._links?.[\n\t\t\t\t'wp:action-publish'\n\t\t\t] ?? false,\n\t\tisBeingScheduled: select( editorStore ).isEditedPostBeingScheduled(),\n\t\tisPending: select( editorStore ).isCurrentPostPending(),\n\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\tisPublishSidebarEnabled:\n\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\tisPublishSidebarOpened: select( editorStore ).isPublishSidebarOpened(),\n\t\tisScheduled: select( editorStore ).isCurrentPostScheduled(),\n\t\tpostStatus: select( editorStore ).getEditedPostAttribute( 'status' ),\n\t\tpostStatusHasChanged: select( editorStore ).getPostEdits()?.status,\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { togglePublishSidebar } = dispatch( editorStore );\n\t\treturn {\n\t\t\ttogglePublishSidebar,\n\t\t};\n\t} )\n)( PostPublishButtonOrToggle );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useViewportMatch","useDispatch","useSelect","PostPublishButton","store","editorStore","jsx","_jsx","IS_TOGGLE","IS_BUTTON","PostPublishButtonOrToggle","forceIsDirty","setEntitiesSavedStatesCallback","component","isSmallerThanMediumViewport","togglePublishSidebar","hasPublishAction","isBeingScheduled","isPending","isPublished","isPublishSidebarEnabled","isPublishSidebarOpened","isScheduled","postStatus","postStatusHasChanged","select","_select$getCurrentPos","getCurrentPost","_links","isEditedPostBeingScheduled","isCurrentPostPending","isCurrentPostPublished","isCurrentPostScheduled","getEditedPostAttribute","getPostEdits","status","includes","isOpen","isToggle","onToggle"],"sources":["@wordpress/editor/src/components/post-publish-button/post-publish-button-or-toggle.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport PostPublishButton from './index';\nimport { store as editorStore } from '../../store';\n\nconst IS_TOGGLE = 'toggle';\nconst IS_BUTTON = 'button';\n\nexport default function PostPublishButtonOrToggle( {\n\tforceIsDirty,\n\tsetEntitiesSavedStatesCallback,\n} ) {\n\tlet component;\n\tconst isSmallerThanMediumViewport = useViewportMatch( 'medium', '<' );\n\tconst { togglePublishSidebar } = useDispatch( editorStore );\n\tconst {\n\t\thasPublishAction,\n\t\tisBeingScheduled,\n\t\tisPending,\n\t\tisPublished,\n\t\tisPublishSidebarEnabled,\n\t\tisPublishSidebarOpened,\n\t\tisScheduled,\n\t\tpostStatus,\n\t\tpostStatusHasChanged,\n\t} = useSelect( ( select ) => {\n\t\treturn {\n\t\t\thasPublishAction:\n\t\t\t\t!! select( editorStore ).getCurrentPost()?._links?.[\n\t\t\t\t\t'wp:action-publish'\n\t\t\t\t] ?? false,\n\t\t\tisBeingScheduled:\n\t\t\t\tselect( editorStore ).isEditedPostBeingScheduled(),\n\t\t\tisPending: select( editorStore ).isCurrentPostPending(),\n\t\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\t\tisPublishSidebarEnabled:\n\t\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\t\tisPublishSidebarOpened:\n\t\t\t\tselect( editorStore ).isPublishSidebarOpened(),\n\t\t\tisScheduled: select( editorStore ).isCurrentPostScheduled(),\n\t\t\tpostStatus:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'status' ),\n\t\t\tpostStatusHasChanged: select( editorStore ).getPostEdits()?.status,\n\t\t};\n\t}, [] );\n\n\t/**\n\t * Conditions to show a BUTTON (publish directly) or a TOGGLE (open publish sidebar):\n\t *\n\t * 1) We want to show a BUTTON when the post status is at the _final stage_\n\t * for a particular role (see https://wordpress.org/documentation/article/post-status/):\n\t *\n\t * - is published\n\t * - post status has changed explicitely to something different than 'future' or 'publish'\n\t * - is scheduled to be published\n\t * - is pending and can't be published (but only for viewports >= medium).\n\t * \t Originally, we considered showing a button for pending posts that couldn't be published\n\t * \t (for example, for an author with the contributor role). Some languages can have\n\t * \t long translations for \"Submit for review\", so given the lack of UI real estate available\n\t * \t we decided to take into account the viewport in that case.\n\t * \t See: https://github.com/WordPress/gutenberg/issues/10475\n\t *\n\t * 2) Then, in small viewports, we'll show a TOGGLE.\n\t *\n\t * 3) Finally, we'll use the publish sidebar status to decide:\n\t *\n\t * - if it is enabled, we show a TOGGLE\n\t * - if it is disabled, we show a BUTTON\n\t */\n\tif (\n\t\tisPublished ||\n\t\t( postStatusHasChanged &&\n\t\t\t! [ 'future', 'publish' ].includes( postStatus ) ) ||\n\t\t( isScheduled && isBeingScheduled ) ||\n\t\t( isPending && ! hasPublishAction && ! isSmallerThanMediumViewport )\n\t) {\n\t\tcomponent = IS_BUTTON;\n\t} else if ( isSmallerThanMediumViewport || isPublishSidebarEnabled ) {\n\t\tcomponent = IS_TOGGLE;\n\t} else {\n\t\tcomponent = IS_BUTTON;\n\t}\n\n\treturn (\n\t\t<PostPublishButton\n\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\tisOpen={ isPublishSidebarOpened }\n\t\t\tisToggle={ component === IS_TOGGLE }\n\t\t\tonToggle={ togglePublishSidebar }\n\t\t\tsetEntitiesSavedStatesCallback={ setEntitiesSavedStatesCallback }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;;AAExD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,SAAS;AACvC,SAASC,KAAK,IAAIC,WAAW,QAAQ,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEnD,MAAMC,SAAS,GAAG,QAAQ;AAC1B,MAAMC,SAAS,GAAG,QAAQ;AAE1B,eAAe,SAASC,yBAAyBA,CAAE;EAClDC,YAAY;EACZC;AACD,CAAC,EAAG;EACH,IAAIC,SAAS;EACb,MAAMC,2BAA2B,GAAGd,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EACrE,MAAM;IAAEe;EAAqB,CAAC,GAAGd,WAAW,CAAEI,WAAY,CAAC;EAC3D,MAAM;IACLW,gBAAgB;IAChBC,gBAAgB;IAChBC,SAAS;IACTC,WAAW;IACXC,uBAAuB;IACvBC,sBAAsB;IACtBC,WAAW;IACXC,UAAU;IACVC;EACD,CAAC,GAAGtB,SAAS,CAAIuB,MAAM,IAAM;IAAA,IAAAC,qBAAA;IAC5B,OAAO;MACNV,gBAAgB,GAAAU,qBAAA,GACf,CAAC,CAAED,MAAM,CAAEpB,WAAY,CAAC,CAACsB,cAAc,CAAC,CAAC,EAAEC,MAAM,GAChD,mBAAmB,CACnB,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MACXT,gBAAgB,EACfQ,MAAM,CAAEpB,WAAY,CAAC,CAACwB,0BAA0B,CAAC,CAAC;MACnDX,SAAS,EAAEO,MAAM,CAAEpB,WAAY,CAAC,CAACyB,oBAAoB,CAAC,CAAC;MACvDX,WAAW,EAAEM,MAAM,CAAEpB,WAAY,CAAC,CAAC0B,sBAAsB,CAAC,CAAC;MAC3DX,uBAAuB,EACtBK,MAAM,CAAEpB,WAAY,CAAC,CAACe,uBAAuB,CAAC,CAAC;MAChDC,sBAAsB,EACrBI,MAAM,CAAEpB,WAAY,CAAC,CAACgB,sBAAsB,CAAC,CAAC;MAC/CC,WAAW,EAAEG,MAAM,CAAEpB,WAAY,CAAC,CAAC2B,sBAAsB,CAAC,CAAC;MAC3DT,UAAU,EACTE,MAAM,CAAEpB,WAAY,CAAC,CAAC4B,sBAAsB,CAAE,QAAS,CAAC;MACzDT,oBAAoB,EAAEC,MAAM,CAAEpB,WAAY,CAAC,CAAC6B,YAAY,CAAC,CAAC,EAAEC;IAC7D,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACC,IACChB,WAAW,IACTK,oBAAoB,IACrB,CAAE,CAAE,QAAQ,EAAE,SAAS,CAAE,CAACY,QAAQ,CAAEb,UAAW,CAAG,IACjDD,WAAW,IAAIL,gBAAkB,IACjCC,SAAS,IAAI,CAAEF,gBAAgB,IAAI,CAAEF,2BAA6B,EACnE;IACDD,SAAS,GAAGJ,SAAS;EACtB,CAAC,MAAM,IAAKK,2BAA2B,IAAIM,uBAAuB,EAAG;IACpEP,SAAS,GAAGL,SAAS;EACtB,CAAC,MAAM;IACNK,SAAS,GAAGJ,SAAS;EACtB;EAEA,oBACCF,IAAA,CAACJ,iBAAiB;IACjBQ,YAAY,EAAGA,YAAc;IAC7B0B,MAAM,EAAGhB,sBAAwB;IACjCiB,QAAQ,EAAGzB,SAAS,KAAKL,SAAW;IACpC+B,QAAQ,EAAGxB,oBAAsB;IACjCH,8BAA8B,EAAGA;EAAgC,CACjE,CAAC;AAEJ","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- /* wp:polyfill */
2
1
  /**
3
2
  * WordPress dependencies
4
3
  */
@@ -1 +1 @@
1
- {"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","size","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '32px',\n\t\t\t\theight: '32px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","size","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '32px',\n\t\t\t\theight: '32px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- /* wp:polyfill */
2
1
  /**
3
2
  * External dependencies
4
3
  */
@@ -1 +1 @@
1
- {"version":3,"names":["v4","uuid","getFilename","generateUniqueBasenames","urls","basenames","Set","Object","fromEntries","map","url","filename","basename","parts","split","length","pop","join","has","add","fetchMedia","entries","filePromise","window","fetch","includes","then","response","blob","File","type"],"sources":["@wordpress/editor/src/components/post-publish-panel/media-util.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { v4 as uuid } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { getFilename } from '@wordpress/url';\n\n/**\n * Generate a list of unique basenames given a list of URLs.\n *\n * We want all basenames to be unique, since sometimes the extension\n * doesn't reflect the mime type, and may end up getting changed by\n * the server, on upload.\n *\n * @param {string[]} urls The list of URLs\n * @return {Record< string, string >} A URL => basename record.\n */\nexport function generateUniqueBasenames( urls ) {\n\tconst basenames = new Set();\n\n\treturn Object.fromEntries(\n\t\turls.map( ( url ) => {\n\t\t\t// We prefer to match the remote filename, if possible.\n\t\t\tconst filename = getFilename( url );\n\t\t\tlet basename = '';\n\n\t\t\tif ( filename ) {\n\t\t\t\tconst parts = filename.split( '.' );\n\t\t\t\tif ( parts.length > 1 ) {\n\t\t\t\t\t// Assume the last part is the extension.\n\t\t\t\t\tparts.pop();\n\t\t\t\t}\n\t\t\t\tbasename = parts.join( '.' );\n\t\t\t}\n\n\t\t\tif ( ! basename ) {\n\t\t\t\t// It looks like we don't have a basename, so let's use a UUID.\n\t\t\t\tbasename = uuid();\n\t\t\t}\n\n\t\t\tif ( basenames.has( basename ) ) {\n\t\t\t\t// Append a UUID to deduplicate the basename.\n\t\t\t\t// The server will try to deduplicate on its own if we don't do this,\n\t\t\t\t// but it may run into a race condition\n\t\t\t\t// (see https://github.com/WordPress/gutenberg/issues/64899).\n\t\t\t\t// Deduplicating the filenames before uploading is safer.\n\t\t\t\tbasename = `${ basename }-${ uuid() }`;\n\t\t\t}\n\n\t\t\tbasenames.add( basename );\n\n\t\t\treturn [ url, basename ];\n\t\t} )\n\t);\n}\n\n/**\n * Fetch a list of URLs, turning those into promises for files with\n * unique filenames.\n *\n * @param {string[]} urls The list of URLs\n * @return {Record< string, Promise< File > >} A URL => File promise record.\n */\nexport function fetchMedia( urls ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( generateUniqueBasenames( urls ) ).map(\n\t\t\t( [ url, basename ] ) => {\n\t\t\t\tconst filePromise = window\n\t\t\t\t\t.fetch( url.includes( '?' ) ? url : url + '?' )\n\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\t\t// The server will reject the upload if it doesn't have an extension,\n\t\t\t\t\t\t// even though it'll rewrite the file name to match the mime type.\n\t\t\t\t\t\t// Here we provide it with a safe extension to get it past that check.\n\t\t\t\t\t\treturn new File( [ blob ], `${ basename }.png`, {\n\t\t\t\t\t\t\ttype: blob.type,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\treturn [ url, filePromise ];\n\t\t\t}\n\t\t)\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,IAAIC,IAAI,QAAQ,MAAM;;AAEjC;AACA;AACA;AACA,SAASC,WAAW,QAAQ,gBAAgB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAEC,IAAI,EAAG;EAC/C,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC;EAE3B,OAAOC,MAAM,CAACC,WAAW,CACxBJ,IAAI,CAACK,GAAG,CAAIC,GAAG,IAAM;IACpB;IACA,MAAMC,QAAQ,GAAGT,WAAW,CAAEQ,GAAI,CAAC;IACnC,IAAIE,QAAQ,GAAG,EAAE;IAEjB,IAAKD,QAAQ,EAAG;MACf,MAAME,KAAK,GAAGF,QAAQ,CAACG,KAAK,CAAE,GAAI,CAAC;MACnC,IAAKD,KAAK,CAACE,MAAM,GAAG,CAAC,EAAG;QACvB;QACAF,KAAK,CAACG,GAAG,CAAC,CAAC;MACZ;MACAJ,QAAQ,GAAGC,KAAK,CAACI,IAAI,CAAE,GAAI,CAAC;IAC7B;IAEA,IAAK,CAAEL,QAAQ,EAAG;MACjB;MACAA,QAAQ,GAAGX,IAAI,CAAC,CAAC;IAClB;IAEA,IAAKI,SAAS,CAACa,GAAG,CAAEN,QAAS,CAAC,EAAG;MAChC;MACA;MACA;MACA;MACA;MACAA,QAAQ,GAAG,GAAIA,QAAQ,IAAMX,IAAI,CAAC,CAAC,EAAG;IACvC;IAEAI,SAAS,CAACc,GAAG,CAAEP,QAAS,CAAC;IAEzB,OAAO,CAAEF,GAAG,EAAEE,QAAQ,CAAE;EACzB,CAAE,CACH,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,UAAUA,CAAEhB,IAAI,EAAG;EAClC,OAAOG,MAAM,CAACC,WAAW,CACxBD,MAAM,CAACc,OAAO,CAAElB,uBAAuB,CAAEC,IAAK,CAAE,CAAC,CAACK,GAAG,CACpD,CAAE,CAAEC,GAAG,EAAEE,QAAQ,CAAE,KAAM;IACxB,MAAMU,WAAW,GAAGC,MAAM,CACxBC,KAAK,CAAEd,GAAG,CAACe,QAAQ,CAAE,GAAI,CAAC,GAAGf,GAAG,GAAGA,GAAG,GAAG,GAAI,CAAC,CAC9CgB,IAAI,CAAIC,QAAQ,IAAMA,QAAQ,CAACC,IAAI,CAAC,CAAE,CAAC,CACvCF,IAAI,CAAIE,IAAI,IAAM;MAClB;MACA;MACA;MACA,OAAO,IAAIC,IAAI,CAAE,CAAED,IAAI,CAAE,EAAE,GAAIhB,QAAQ,MAAO,EAAE;QAC/CkB,IAAI,EAAEF,IAAI,CAACE;MACZ,CAAE,CAAC;IACJ,CAAE,CAAC;IAEJ,OAAO,CAAEpB,GAAG,EAAEY,WAAW,CAAE;EAC5B,CACD,CACD,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["v4","uuid","getFilename","generateUniqueBasenames","urls","basenames","Set","Object","fromEntries","map","url","filename","basename","parts","split","length","pop","join","has","add","fetchMedia","entries","filePromise","window","fetch","includes","then","response","blob","File","type"],"sources":["@wordpress/editor/src/components/post-publish-panel/media-util.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { v4 as uuid } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { getFilename } from '@wordpress/url';\n\n/**\n * Generate a list of unique basenames given a list of URLs.\n *\n * We want all basenames to be unique, since sometimes the extension\n * doesn't reflect the mime type, and may end up getting changed by\n * the server, on upload.\n *\n * @param {string[]} urls The list of URLs\n * @return {Record< string, string >} A URL => basename record.\n */\nexport function generateUniqueBasenames( urls ) {\n\tconst basenames = new Set();\n\n\treturn Object.fromEntries(\n\t\turls.map( ( url ) => {\n\t\t\t// We prefer to match the remote filename, if possible.\n\t\t\tconst filename = getFilename( url );\n\t\t\tlet basename = '';\n\n\t\t\tif ( filename ) {\n\t\t\t\tconst parts = filename.split( '.' );\n\t\t\t\tif ( parts.length > 1 ) {\n\t\t\t\t\t// Assume the last part is the extension.\n\t\t\t\t\tparts.pop();\n\t\t\t\t}\n\t\t\t\tbasename = parts.join( '.' );\n\t\t\t}\n\n\t\t\tif ( ! basename ) {\n\t\t\t\t// It looks like we don't have a basename, so let's use a UUID.\n\t\t\t\tbasename = uuid();\n\t\t\t}\n\n\t\t\tif ( basenames.has( basename ) ) {\n\t\t\t\t// Append a UUID to deduplicate the basename.\n\t\t\t\t// The server will try to deduplicate on its own if we don't do this,\n\t\t\t\t// but it may run into a race condition\n\t\t\t\t// (see https://github.com/WordPress/gutenberg/issues/64899).\n\t\t\t\t// Deduplicating the filenames before uploading is safer.\n\t\t\t\tbasename = `${ basename }-${ uuid() }`;\n\t\t\t}\n\n\t\t\tbasenames.add( basename );\n\n\t\t\treturn [ url, basename ];\n\t\t} )\n\t);\n}\n\n/**\n * Fetch a list of URLs, turning those into promises for files with\n * unique filenames.\n *\n * @param {string[]} urls The list of URLs\n * @return {Record< string, Promise< File > >} A URL => File promise record.\n */\nexport function fetchMedia( urls ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( generateUniqueBasenames( urls ) ).map(\n\t\t\t( [ url, basename ] ) => {\n\t\t\t\tconst filePromise = window\n\t\t\t\t\t.fetch( url.includes( '?' ) ? url : url + '?' )\n\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\t\t// The server will reject the upload if it doesn't have an extension,\n\t\t\t\t\t\t// even though it'll rewrite the file name to match the mime type.\n\t\t\t\t\t\t// Here we provide it with a safe extension to get it past that check.\n\t\t\t\t\t\treturn new File( [ blob ], `${ basename }.png`, {\n\t\t\t\t\t\t\ttype: blob.type,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\treturn [ url, filePromise ];\n\t\t\t}\n\t\t)\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,IAAIC,IAAI,QAAQ,MAAM;;AAEjC;AACA;AACA;AACA,SAASC,WAAW,QAAQ,gBAAgB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAEC,IAAI,EAAG;EAC/C,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC;EAE3B,OAAOC,MAAM,CAACC,WAAW,CACxBJ,IAAI,CAACK,GAAG,CAAIC,GAAG,IAAM;IACpB;IACA,MAAMC,QAAQ,GAAGT,WAAW,CAAEQ,GAAI,CAAC;IACnC,IAAIE,QAAQ,GAAG,EAAE;IAEjB,IAAKD,QAAQ,EAAG;MACf,MAAME,KAAK,GAAGF,QAAQ,CAACG,KAAK,CAAE,GAAI,CAAC;MACnC,IAAKD,KAAK,CAACE,MAAM,GAAG,CAAC,EAAG;QACvB;QACAF,KAAK,CAACG,GAAG,CAAC,CAAC;MACZ;MACAJ,QAAQ,GAAGC,KAAK,CAACI,IAAI,CAAE,GAAI,CAAC;IAC7B;IAEA,IAAK,CAAEL,QAAQ,EAAG;MACjB;MACAA,QAAQ,GAAGX,IAAI,CAAC,CAAC;IAClB;IAEA,IAAKI,SAAS,CAACa,GAAG,CAAEN,QAAS,CAAC,EAAG;MAChC;MACA;MACA;MACA;MACA;MACAA,QAAQ,GAAG,GAAIA,QAAQ,IAAMX,IAAI,CAAC,CAAC,EAAG;IACvC;IAEAI,SAAS,CAACc,GAAG,CAAEP,QAAS,CAAC;IAEzB,OAAO,CAAEF,GAAG,EAAEE,QAAQ,CAAE;EACzB,CAAE,CACH,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,UAAUA,CAAEhB,IAAI,EAAG;EAClC,OAAOG,MAAM,CAACC,WAAW,CACxBD,MAAM,CAACc,OAAO,CAAElB,uBAAuB,CAAEC,IAAK,CAAE,CAAC,CAACK,GAAG,CACpD,CAAE,CAAEC,GAAG,EAAEE,QAAQ,CAAE,KAAM;IACxB,MAAMU,WAAW,GAAGC,MAAM,CACxBC,KAAK,CAAEd,GAAG,CAACe,QAAQ,CAAE,GAAI,CAAC,GAAGf,GAAG,GAAGA,GAAG,GAAG,GAAI,CAAC,CAC9CgB,IAAI,CAAIC,QAAQ,IAAMA,QAAQ,CAACC,IAAI,CAAC,CAAE,CAAC,CACvCF,IAAI,CAAIE,IAAI,IAAM;MAClB;MACA;MACA;MACA,OAAO,IAAIC,IAAI,CAAE,CAAED,IAAI,CAAE,EAAE,GAAIhB,QAAQ,MAAO,EAAE;QAC/CkB,IAAI,EAAEF,IAAI,CAACE;MACZ,CAAE,CAAC;IACJ,CAAE,CAAC;IAEJ,OAAO,CAAEpB,GAAG,EAAEY,WAAW,CAAE;EAC5B,CACD,CACD,CAAC;AACF","ignoreList":[]}
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import { PanelBody, Button, TextControl } from '@wordpress/components';
5
5
  import { __, sprintf } from '@wordpress/i18n';
6
- import { Component, createRef } from '@wordpress/element';
7
- import { withSelect } from '@wordpress/data';
6
+ import { useCallback, useEffect, useState, useRef } from '@wordpress/element';
7
+ import { useSelect } from '@wordpress/data';
8
8
  import { addQueryArgs, safeDecodeURIComponent } from '@wordpress/url';
9
9
  import { decodeEntities } from '@wordpress/html-entities';
10
10
  import { useCopyToClipboard } from '@wordpress/compose';
@@ -40,132 +40,118 @@ const getFuturePostUrl = post => {
40
40
  return post.permalink_template;
41
41
  };
42
42
  function CopyButton({
43
- text,
44
- onCopy,
45
- children
43
+ text
46
44
  }) {
47
- const ref = useCopyToClipboard(text, onCopy);
45
+ const [showCopyConfirmation, setShowCopyConfirmation] = useState(false);
46
+ const timeoutIdRef = useRef();
47
+ const ref = useCopyToClipboard(text, () => {
48
+ setShowCopyConfirmation(true);
49
+ if (timeoutIdRef.current) {
50
+ clearTimeout(timeoutIdRef.current);
51
+ }
52
+ timeoutIdRef.current = setTimeout(() => {
53
+ setShowCopyConfirmation(false);
54
+ }, 4000);
55
+ });
56
+ useEffect(() => {
57
+ return () => {
58
+ if (timeoutIdRef.current) {
59
+ clearTimeout(timeoutIdRef.current);
60
+ }
61
+ };
62
+ }, []);
48
63
  return /*#__PURE__*/_jsx(Button, {
49
64
  __next40pxDefaultSize: true,
50
65
  variant: "secondary",
51
66
  ref: ref,
52
- children: children
67
+ children: showCopyConfirmation ? __('Copied!') : __('Copy')
53
68
  });
54
69
  }
55
- class PostPublishPanelPostpublish extends Component {
56
- constructor() {
57
- super(...arguments);
58
- this.state = {
59
- showCopyConfirmation: false
70
+ export default function PostPublishPanelPostpublish({
71
+ focusOnMount,
72
+ children
73
+ }) {
74
+ const {
75
+ post,
76
+ postType,
77
+ isScheduled
78
+ } = useSelect(select => {
79
+ const {
80
+ getEditedPostAttribute,
81
+ getCurrentPost,
82
+ isCurrentPostScheduled
83
+ } = select(editorStore);
84
+ const {
85
+ getPostType
86
+ } = select(coreStore);
87
+ return {
88
+ post: getCurrentPost(),
89
+ postType: getPostType(getEditedPostAttribute('type')),
90
+ isScheduled: isCurrentPostScheduled()
60
91
  };
61
- this.onCopy = this.onCopy.bind(this);
62
- this.onSelectInput = this.onSelectInput.bind(this);
63
- this.postLink = createRef();
64
- }
65
- componentDidMount() {
66
- if (this.props.focusOnMount) {
67
- this.postLink.current.focus();
92
+ }, []);
93
+ const postLabel = postType?.labels?.singular_name;
94
+ const viewPostLabel = postType?.labels?.view_item;
95
+ const addNewPostLabel = postType?.labels?.add_new_item;
96
+ const link = post.status === 'future' ? getFuturePostUrl(post) : post.link;
97
+ const addLink = addQueryArgs('post-new.php', {
98
+ post_type: post.type
99
+ });
100
+ const postLinkRef = useCallback(node => {
101
+ if (focusOnMount && node) {
102
+ node.focus();
68
103
  }
69
- }
70
- componentWillUnmount() {
71
- clearTimeout(this.dismissCopyConfirmation);
72
- }
73
- onCopy() {
74
- this.setState({
75
- showCopyConfirmation: true
76
- });
77
- clearTimeout(this.dismissCopyConfirmation);
78
- this.dismissCopyConfirmation = setTimeout(() => {
79
- this.setState({
80
- showCopyConfirmation: false
81
- });
82
- }, 4000);
83
- }
84
- onSelectInput(event) {
85
- event.target.select();
86
- }
87
- render() {
88
- const {
89
- children,
90
- isScheduled,
91
- post,
92
- postType
93
- } = this.props;
94
- const postLabel = postType?.labels?.singular_name;
95
- const viewPostLabel = postType?.labels?.view_item;
96
- const addNewPostLabel = postType?.labels?.add_new_item;
97
- const link = post.status === 'future' ? getFuturePostUrl(post) : post.link;
98
- const addLink = addQueryArgs('post-new.php', {
99
- post_type: post.type
100
- });
101
- const postPublishNonLinkHeader = isScheduled ? /*#__PURE__*/_jsxs(_Fragment, {
102
- children: [__('is now scheduled. It will go live on'), ' ', /*#__PURE__*/_jsx(PostScheduleLabel, {}), "."]
103
- }) : __('is now live.');
104
- return /*#__PURE__*/_jsxs("div", {
105
- className: "post-publish-panel__postpublish",
106
- children: [/*#__PURE__*/_jsxs(PanelBody, {
107
- className: "post-publish-panel__postpublish-header",
108
- children: [/*#__PURE__*/_jsx("a", {
109
- ref: this.postLink,
110
- href: link,
111
- children: decodeEntities(post.title) || __('(no title)')
112
- }), ' ', postPublishNonLinkHeader]
113
- }), /*#__PURE__*/_jsxs(PanelBody, {
114
- children: [/*#__PURE__*/_jsx("p", {
115
- className: "post-publish-panel__postpublish-subheader",
116
- children: /*#__PURE__*/_jsx("strong", {
117
- children: __('What’s next?')
104
+ }, [focusOnMount]);
105
+ const postPublishNonLinkHeader = isScheduled ? /*#__PURE__*/_jsxs(_Fragment, {
106
+ children: [__('is now scheduled. It will go live on'), ' ', /*#__PURE__*/_jsx(PostScheduleLabel, {}), "."]
107
+ }) : __('is now live.');
108
+ return /*#__PURE__*/_jsxs("div", {
109
+ className: "post-publish-panel__postpublish",
110
+ children: [/*#__PURE__*/_jsxs(PanelBody, {
111
+ className: "post-publish-panel__postpublish-header",
112
+ children: [/*#__PURE__*/_jsx("a", {
113
+ ref: postLinkRef,
114
+ href: link,
115
+ children: decodeEntities(post.title) || __('(no title)')
116
+ }), ' ', postPublishNonLinkHeader]
117
+ }), /*#__PURE__*/_jsxs(PanelBody, {
118
+ children: [/*#__PURE__*/_jsx("p", {
119
+ className: "post-publish-panel__postpublish-subheader",
120
+ children: /*#__PURE__*/_jsx("strong", {
121
+ children: __('What’s next?')
122
+ })
123
+ }), /*#__PURE__*/_jsxs("div", {
124
+ className: "post-publish-panel__postpublish-post-address-container",
125
+ children: [/*#__PURE__*/_jsx(TextControl, {
126
+ __next40pxDefaultSize: true,
127
+ __nextHasNoMarginBottom: true,
128
+ className: "post-publish-panel__postpublish-post-address",
129
+ readOnly: true,
130
+ label: sprintf(/* translators: %s: post type singular name */
131
+ __('%s address'), postLabel),
132
+ value: safeDecodeURIComponent(link),
133
+ onFocus: event => event.target.select()
134
+ }), /*#__PURE__*/_jsx("div", {
135
+ className: "post-publish-panel__postpublish-post-address__copy-button-wrap",
136
+ children: /*#__PURE__*/_jsx(CopyButton, {
137
+ text: link
118
138
  })
119
- }), /*#__PURE__*/_jsxs("div", {
120
- className: "post-publish-panel__postpublish-post-address-container",
121
- children: [/*#__PURE__*/_jsx(TextControl, {
122
- __next40pxDefaultSize: true,
123
- __nextHasNoMarginBottom: true,
124
- className: "post-publish-panel__postpublish-post-address",
125
- readOnly: true,
126
- label: sprintf(/* translators: %s: post type singular name */
127
- __('%s address'), postLabel),
128
- value: safeDecodeURIComponent(link),
129
- onFocus: this.onSelectInput
130
- }), /*#__PURE__*/_jsx("div", {
131
- className: "post-publish-panel__postpublish-post-address__copy-button-wrap",
132
- children: /*#__PURE__*/_jsx(CopyButton, {
133
- text: link,
134
- onCopy: this.onCopy,
135
- children: this.state.showCopyConfirmation ? __('Copied!') : __('Copy')
136
- })
137
- })]
138
- }), /*#__PURE__*/_jsxs("div", {
139
- className: "post-publish-panel__postpublish-buttons",
140
- children: [!isScheduled && /*#__PURE__*/_jsx(Button, {
141
- variant: "primary",
142
- href: link,
143
- __next40pxDefaultSize: true,
144
- children: viewPostLabel
145
- }), /*#__PURE__*/_jsx(Button, {
146
- variant: isScheduled ? 'primary' : 'secondary',
147
- __next40pxDefaultSize: true,
148
- href: addLink,
149
- children: addNewPostLabel
150
- })]
151
139
  })]
152
- }), children]
153
- });
154
- }
140
+ }), /*#__PURE__*/_jsxs("div", {
141
+ className: "post-publish-panel__postpublish-buttons",
142
+ children: [!isScheduled && /*#__PURE__*/_jsx(Button, {
143
+ variant: "primary",
144
+ href: link,
145
+ __next40pxDefaultSize: true,
146
+ children: viewPostLabel
147
+ }), /*#__PURE__*/_jsx(Button, {
148
+ variant: isScheduled ? 'primary' : 'secondary',
149
+ __next40pxDefaultSize: true,
150
+ href: addLink,
151
+ children: addNewPostLabel
152
+ })]
153
+ })]
154
+ }), children]
155
+ });
155
156
  }
156
- export default withSelect(select => {
157
- const {
158
- getEditedPostAttribute,
159
- getCurrentPost,
160
- isCurrentPostScheduled
161
- } = select(editorStore);
162
- const {
163
- getPostType
164
- } = select(coreStore);
165
- return {
166
- post: getCurrentPost(),
167
- postType: getPostType(getEditedPostAttribute('type')),
168
- isScheduled: isCurrentPostScheduled()
169
- };
170
- })(PostPublishPanelPostpublish);
171
157
  //# sourceMappingURL=postpublish.js.map