@wordpress/block-editor 14.10.1 → 14.12.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 (295) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/build/components/background-image-control/index.js +0 -1
  3. package/build/components/background-image-control/index.js.map +1 -1
  4. package/build/components/block-actions/index.js +0 -3
  5. package/build/components/block-actions/index.js.map +1 -1
  6. package/build/components/block-inspector/index.js +6 -11
  7. package/build/components/block-inspector/index.js.map +1 -1
  8. package/build/components/block-list/use-block-props/use-focus-handler.js +1 -1
  9. package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  10. package/build/components/block-rename/modal.js +36 -11
  11. package/build/components/block-rename/modal.js.map +1 -1
  12. package/build/components/block-rename/rename-control.js +2 -43
  13. package/build/components/block-rename/rename-control.js.map +1 -1
  14. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -3
  15. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  16. package/build/components/block-styles/preview.native.js +1 -1
  17. package/build/components/block-styles/preview.native.js.map +1 -1
  18. package/build/components/block-switcher/block-transformations-menu.js +7 -7
  19. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  20. package/build/components/block-switcher/block-variation-transformations.js +2 -2
  21. package/build/components/block-switcher/block-variation-transformations.js.map +1 -1
  22. package/build/components/block-switcher/index.js +1 -1
  23. package/build/components/block-switcher/index.js.map +1 -1
  24. package/build/components/block-switcher/use-transformed-patterns.js +1 -1
  25. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  26. package/build/components/block-toolbar/index.native.js +2 -2
  27. package/build/components/block-toolbar/index.native.js.map +1 -1
  28. package/build/components/date-format-picker/index.js +1 -1
  29. package/build/components/date-format-picker/index.js.map +1 -1
  30. package/build/components/global-styles/filters-panel.js +2 -2
  31. package/build/components/global-styles/filters-panel.js.map +1 -1
  32. package/build/components/global-styles/image-settings-panel.js +2 -2
  33. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  34. package/build/components/global-styles/use-global-styles-output.js +3 -3
  35. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  36. package/build/components/grid/grid-visualizer.js +11 -19
  37. package/build/components/grid/grid-visualizer.js.map +1 -1
  38. package/build/components/grid/utils.js +6 -4
  39. package/build/components/grid/utils.js.map +1 -1
  40. package/build/components/iframe/get-compatibility-styles.js +1 -1
  41. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  42. package/build/components/iframe/index.js +1 -1
  43. package/build/components/iframe/index.js.map +1 -1
  44. package/build/components/image-size-control/index.js +2 -1
  45. package/build/components/image-size-control/index.js.map +1 -1
  46. package/build/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  47. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  48. package/build/components/inserter/menu.js +13 -2
  49. package/build/components/inserter/menu.js.map +1 -1
  50. package/build/components/inserter/reusable-blocks-tab.native.js +1 -1
  51. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  52. package/build/components/inspector-controls-tabs/position-controls-panel.js +49 -21
  53. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  54. package/build/components/line-height-control/index.native.js +1 -1
  55. package/build/components/line-height-control/index.native.js.map +1 -1
  56. package/build/components/link-control/index.js +1 -1
  57. package/build/components/link-control/index.js.map +1 -1
  58. package/build/components/link-control/use-search-handler.js +1 -1
  59. package/build/components/link-control/use-search-handler.js.map +1 -1
  60. package/build/components/list-view/block-select-button.js +5 -2
  61. package/build/components/list-view/block-select-button.js.map +1 -1
  62. package/build/components/media-placeholder/index.js +1 -0
  63. package/build/components/media-placeholder/index.js.map +1 -1
  64. package/build/components/observe-typing/index.js +1 -1
  65. package/build/components/observe-typing/index.js.map +1 -1
  66. package/build/components/provider/index.js +0 -2
  67. package/build/components/provider/index.js.map +1 -1
  68. package/build/components/provider/use-block-sync.js +2 -2
  69. package/build/components/provider/use-block-sync.js.map +1 -1
  70. package/build/components/rich-text/event-listeners/input-rules.js +3 -3
  71. package/build/components/rich-text/event-listeners/input-rules.js.map +1 -1
  72. package/build/components/rich-text/native/use-format-types.js +1 -1
  73. package/build/components/rich-text/native/use-format-types.js.map +1 -1
  74. package/build/components/rich-text/use-format-types.js +1 -1
  75. package/build/components/rich-text/use-format-types.js.map +1 -1
  76. package/build/components/spacing-sizes-control/index.js +44 -2
  77. package/build/components/spacing-sizes-control/index.js.map +1 -1
  78. package/build/components/spacing-sizes-control/linked-button.js +6 -9
  79. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  80. package/build/components/spacing-sizes-control/utils.js +0 -108
  81. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  82. package/build/components/tabbed-sidebar/index.js +39 -0
  83. package/build/components/tabbed-sidebar/index.js.map +1 -1
  84. package/build/components/typewriter/index.js +1 -1
  85. package/build/components/typewriter/index.js.map +1 -1
  86. package/build/components/url-popover/image-url-input-ui.js +3 -3
  87. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  88. package/build/components/use-block-commands/index.js +1 -1
  89. package/build/components/use-block-commands/index.js.map +1 -1
  90. package/build/components/use-moving-animation/index.js +1 -1
  91. package/build/components/use-moving-animation/index.js.map +1 -1
  92. package/build/hooks/contrast-checker.js +41 -22
  93. package/build/hooks/contrast-checker.js.map +1 -1
  94. package/build/hooks/custom-class-name.js +2 -1
  95. package/build/hooks/custom-class-name.js.map +1 -1
  96. package/build/store/actions.js +1 -1
  97. package/build/store/actions.js.map +1 -1
  98. package/build/store/selectors.js +18 -7
  99. package/build/store/selectors.js.map +1 -1
  100. package/build/utils/transform-styles/index.js +1 -1
  101. package/build/utils/transform-styles/index.js.map +1 -1
  102. package/build/utils/use-notify-copy.js +19 -11
  103. package/build/utils/use-notify-copy.js.map +1 -1
  104. package/build-module/components/background-image-control/index.js +0 -1
  105. package/build-module/components/background-image-control/index.js.map +1 -1
  106. package/build-module/components/block-actions/index.js +0 -3
  107. package/build-module/components/block-actions/index.js.map +1 -1
  108. package/build-module/components/block-inspector/index.js +6 -11
  109. package/build-module/components/block-inspector/index.js.map +1 -1
  110. package/build-module/components/block-list/use-block-props/use-focus-handler.js +1 -1
  111. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  112. package/build-module/components/block-rename/modal.js +36 -11
  113. package/build-module/components/block-rename/modal.js.map +1 -1
  114. package/build-module/components/block-rename/rename-control.js +2 -43
  115. package/build-module/components/block-rename/rename-control.js.map +1 -1
  116. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -3
  117. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  118. package/build-module/components/block-styles/preview.native.js +1 -1
  119. package/build-module/components/block-styles/preview.native.js.map +1 -1
  120. package/build-module/components/block-switcher/block-transformations-menu.js +7 -7
  121. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  122. package/build-module/components/block-switcher/block-variation-transformations.js +2 -2
  123. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
  124. package/build-module/components/block-switcher/index.js +1 -1
  125. package/build-module/components/block-switcher/index.js.map +1 -1
  126. package/build-module/components/block-switcher/use-transformed-patterns.js +1 -1
  127. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  128. package/build-module/components/block-toolbar/index.native.js +2 -2
  129. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  130. package/build-module/components/date-format-picker/index.js +1 -1
  131. package/build-module/components/date-format-picker/index.js.map +1 -1
  132. package/build-module/components/global-styles/filters-panel.js +2 -2
  133. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  134. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  135. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  136. package/build-module/components/global-styles/use-global-styles-output.js +3 -3
  137. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  138. package/build-module/components/grid/grid-visualizer.js +11 -19
  139. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  140. package/build-module/components/grid/utils.js +6 -4
  141. package/build-module/components/grid/utils.js.map +1 -1
  142. package/build-module/components/iframe/get-compatibility-styles.js +1 -1
  143. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  144. package/build-module/components/iframe/index.js +1 -1
  145. package/build-module/components/iframe/index.js.map +1 -1
  146. package/build-module/components/image-size-control/index.js +3 -2
  147. package/build-module/components/image-size-control/index.js.map +1 -1
  148. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  149. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  150. package/build-module/components/inserter/menu.js +13 -2
  151. package/build-module/components/inserter/menu.js.map +1 -1
  152. package/build-module/components/inserter/reusable-blocks-tab.native.js +1 -1
  153. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  154. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +51 -23
  155. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  156. package/build-module/components/line-height-control/index.native.js +1 -1
  157. package/build-module/components/line-height-control/index.native.js.map +1 -1
  158. package/build-module/components/link-control/index.js +1 -1
  159. package/build-module/components/link-control/index.js.map +1 -1
  160. package/build-module/components/link-control/use-search-handler.js +1 -1
  161. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  162. package/build-module/components/list-view/block-select-button.js +6 -3
  163. package/build-module/components/list-view/block-select-button.js.map +1 -1
  164. package/build-module/components/media-placeholder/index.js +1 -0
  165. package/build-module/components/media-placeholder/index.js.map +1 -1
  166. package/build-module/components/observe-typing/index.js +1 -1
  167. package/build-module/components/observe-typing/index.js.map +1 -1
  168. package/build-module/components/provider/index.js +0 -1
  169. package/build-module/components/provider/index.js.map +1 -1
  170. package/build-module/components/provider/use-block-sync.js +2 -2
  171. package/build-module/components/provider/use-block-sync.js.map +1 -1
  172. package/build-module/components/rich-text/event-listeners/input-rules.js +3 -3
  173. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -1
  174. package/build-module/components/rich-text/native/use-format-types.js +1 -1
  175. package/build-module/components/rich-text/native/use-format-types.js.map +1 -1
  176. package/build-module/components/rich-text/use-format-types.js +1 -1
  177. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  178. package/build-module/components/spacing-sizes-control/index.js +45 -1
  179. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  180. package/build-module/components/spacing-sizes-control/linked-button.js +7 -10
  181. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  182. package/build-module/components/spacing-sizes-control/utils.js +0 -104
  183. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  184. package/build-module/components/tabbed-sidebar/index.js +39 -0
  185. package/build-module/components/tabbed-sidebar/index.js.map +1 -1
  186. package/build-module/components/typewriter/index.js +1 -1
  187. package/build-module/components/typewriter/index.js.map +1 -1
  188. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  189. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  190. package/build-module/components/use-block-commands/index.js +1 -1
  191. package/build-module/components/use-block-commands/index.js.map +1 -1
  192. package/build-module/components/use-moving-animation/index.js +1 -1
  193. package/build-module/components/use-moving-animation/index.js.map +1 -1
  194. package/build-module/hooks/contrast-checker.js +42 -23
  195. package/build-module/hooks/contrast-checker.js.map +1 -1
  196. package/build-module/hooks/custom-class-name.js +2 -1
  197. package/build-module/hooks/custom-class-name.js.map +1 -1
  198. package/build-module/store/actions.js +1 -1
  199. package/build-module/store/actions.js.map +1 -1
  200. package/build-module/store/selectors.js +18 -7
  201. package/build-module/store/selectors.js.map +1 -1
  202. package/build-module/utils/transform-styles/index.js +1 -1
  203. package/build-module/utils/transform-styles/index.js.map +1 -1
  204. package/build-module/utils/use-notify-copy.js +19 -11
  205. package/build-module/utils/use-notify-copy.js.map +1 -1
  206. package/build-style/content-rtl.css +0 -9
  207. package/build-style/content.css +0 -9
  208. package/build-style/style-rtl.css +19 -21
  209. package/build-style/style.css +19 -21
  210. package/package.json +34 -33
  211. package/src/components/background-image-control/index.js +0 -1
  212. package/src/components/block-actions/index.js +0 -3
  213. package/src/components/block-icon/content.scss +1 -1
  214. package/src/components/{block-card → block-icon}/stories/index.story.js +16 -26
  215. package/src/components/block-icon/style.scss +1 -1
  216. package/src/components/block-inspector/index.js +7 -10
  217. package/src/components/block-list/use-block-props/use-focus-handler.js +1 -1
  218. package/src/components/block-preview/style.scss +1 -1
  219. package/src/components/block-rename/modal.js +40 -12
  220. package/src/components/block-rename/rename-control.js +1 -53
  221. package/src/components/block-settings-menu/block-settings-dropdown.js +16 -2
  222. package/src/components/block-styles/preview.native.js +1 -1
  223. package/src/components/block-switcher/block-transformations-menu.js +9 -9
  224. package/src/components/block-switcher/block-variation-transformations.js +2 -2
  225. package/src/components/block-switcher/index.js +1 -1
  226. package/src/components/block-switcher/use-transformed-patterns.js +1 -1
  227. package/src/components/block-toolbar/index.native.js +2 -2
  228. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  229. package/src/components/colors-gradients/style.scss +1 -0
  230. package/src/components/colors-gradients/test/control.js +2 -2
  231. package/src/components/date-format-picker/index.js +1 -1
  232. package/src/components/duotone-control/style.scss +2 -2
  233. package/src/components/global-styles/filters-panel.js +4 -2
  234. package/src/components/global-styles/image-settings-panel.js +2 -2
  235. package/src/components/global-styles/test/typography-utils.js +1 -1
  236. package/src/components/global-styles/use-global-styles-output.js +3 -3
  237. package/src/components/grid/grid-visualizer.js +10 -21
  238. package/src/components/grid/style.scss +1 -0
  239. package/src/components/grid/utils.js +6 -4
  240. package/src/components/iframe/get-compatibility-styles.js +1 -1
  241. package/src/components/iframe/index.js +1 -1
  242. package/src/components/image-size-control/index.js +6 -2
  243. package/src/components/inner-blocks/README.md +1 -1
  244. package/src/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  245. package/src/components/inserter/menu.js +11 -9
  246. package/src/components/inserter/reusable-blocks-tab.native.js +1 -1
  247. package/src/components/inspector-controls-tabs/position-controls-panel.js +62 -27
  248. package/src/components/line-height-control/index.native.js +1 -1
  249. package/src/components/link-control/README.md +2 -2
  250. package/src/components/link-control/index.js +1 -1
  251. package/src/components/link-control/test/index.js +3 -3
  252. package/src/components/link-control/use-search-handler.js +1 -1
  253. package/src/components/list-view/README.md +1 -1
  254. package/src/components/list-view/block-select-button.js +5 -5
  255. package/src/components/list-view/style.scss +3 -7
  256. package/src/components/media-placeholder/content.scss +0 -8
  257. package/src/components/media-placeholder/index.js +1 -0
  258. package/src/components/media-placeholder/style.scss +7 -0
  259. package/src/components/observe-typing/index.js +1 -1
  260. package/src/components/provider/index.js +0 -1
  261. package/src/components/provider/use-block-sync.js +2 -2
  262. package/src/components/resolution-tool/stories/index.story.js +52 -2
  263. package/src/components/rich-text/README.md +1 -1
  264. package/src/components/rich-text/event-listeners/input-rules.js +3 -3
  265. package/src/components/rich-text/native/use-format-types.js +1 -1
  266. package/src/components/rich-text/use-format-types.js +1 -1
  267. package/src/components/spacing-sizes-control/README.md +93 -0
  268. package/src/components/spacing-sizes-control/index.js +44 -1
  269. package/src/components/spacing-sizes-control/linked-button.js +8 -10
  270. package/src/components/spacing-sizes-control/test/utils.js +0 -151
  271. package/src/components/spacing-sizes-control/utils.js +0 -106
  272. package/src/components/tabbed-sidebar/README.md +24 -13
  273. package/src/components/tabbed-sidebar/index.js +38 -0
  274. package/src/components/tabbed-sidebar/stories/index.story.js +104 -0
  275. package/src/components/typewriter/index.js +1 -1
  276. package/src/components/unit-control/README.md +1 -1
  277. package/src/components/unit-control/stories/index.story.js +124 -0
  278. package/src/components/url-popover/image-url-input-ui.js +3 -3
  279. package/src/components/use-block-commands/index.js +1 -1
  280. package/src/components/use-moving-animation/index.js +1 -1
  281. package/src/components/use-settings/README.md +1 -1
  282. package/src/components/warning/content.scss +1 -1
  283. package/src/components/writing-flow/test/index.js +1 -1
  284. package/src/hooks/color.scss +0 -7
  285. package/src/hooks/contrast-checker.js +64 -30
  286. package/src/hooks/custom-class-name.js +2 -1
  287. package/src/store/actions.js +1 -1
  288. package/src/store/selectors.js +20 -12
  289. package/src/store/test/private-selectors.js +1 -1
  290. package/src/store/test/selectors.js +3 -3
  291. package/src/style.scss +1 -0
  292. package/src/utils/test/sorting.js +1 -1
  293. package/src/utils/transform-styles/index.js +1 -1
  294. package/src/utils/use-notify-copy.js +51 -43
  295. package/tsconfig.json +1 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_element","_dom","_components","_icons","_index","_interopRequireDefault","_jsxRuntime","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","useState","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","useRef","wrapperRef","useEffect","current","nextFocusTarget","focus","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","__","icon","image","page","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","jsxs","__experimentalVStack","spacing","children","jsx","ToggleControl","__nextHasNoMarginBottom","label","onChange","checked","TextControl","__next40pxDefaultSize","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","Icon","fullscreen","Button","linkOff","onClick","size","default","LinkEditor","onChangeInputValue","onSubmit","Fragment","LinkViewer","onEditLinkClick","ToolbarButton","linkIcon","ref","isActive","anchor","onClose","renderSettings","additionalControls","NavigableMenu","map","link","MenuItem","iconPosition","info","offset","exports","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Expand on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable expand on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Expand on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AASA,IAAAI,MAAA,GAAAJ,OAAA;AAYA,IAAAK,MAAA,GAAAC,sBAAA,CAAAN,OAAA;AAAiC,IAAAO,WAAA,GAAAP,OAAA;AA3BjC;AACA;AACA;;AAsBA;AACA;AACA;;AAGA,MAAMQ,qBAAqB,GAAG,MAAM;AACpC,MAAMC,uBAAuB,GAAG,QAAQ;AACxC,MAAMC,sBAAsB,GAAG,OAAO;AACtC,MAAMC,2BAA2B,GAAG,YAAY;AAChD,MAAMC,WAAW,GAAG,CAAE,YAAY,EAAE,UAAU,CAAE;AAEhD,MAAMC,eAAe,GAAGA,CAAE;EACzBC,eAAe;EACfC,WAAW;EACXC,GAAG;EACHC,SAAS,GAAG,OAAO;EACnBC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,GAAG;EACHC,mBAAmB;EACnBC,eAAe;EACfC,aAAa;EACbC;AACD,CAAC,KAAM;EACN,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAC/C;EACA;EACA,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAF,iBAAQ,EAAE,IAAK,CAAC;EAC5D,MAAMG,UAAU,GAAGA,CAAA,KAAM;IACxBJ,SAAS,CAAE,IAAK,CAAC;EAClB,CAAC;EAED,MAAM,CAAEK,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAL,iBAAQ,EAAE,KAAM,CAAC;EAC7D,MAAM,CAAEM,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAP,iBAAQ,EAAE,IAAK,CAAC;EAElD,MAAMQ,eAAe,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EACtC,MAAMC,UAAU,GAAG,IAAAD,eAAM,EAAC,CAAC;EAE3B,IAAAE,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAED,UAAU,CAACE,OAAO,EAAG;MAC3B;IACD;IACA,MAAMC,eAAe,GACpBC,UAAK,CAACC,SAAS,CAACC,IAAI,CAAEN,UAAU,CAACE,OAAQ,CAAC,CAAE,CAAC,CAAE,IAC/CF,UAAU,CAACE,OAAO;IACnBC,eAAe,CAACC,KAAK,CAAC,CAAC;EACxB,CAAC,EAAE,CAAEV,aAAa,EAAEjB,GAAG,EAAEQ,eAAe,CAAG,CAAC;EAE5C,MAAMsB,aAAa,GAAGA,CAAA,KAAM;IAC3B,IACChC,eAAe,KAAKJ,sBAAsB,IAC1CI,eAAe,KAAKH,2BAA2B,EAC9C;MACDyB,WAAW,CAAE,EAAG,CAAC;IAClB;IACAF,gBAAgB,CAAE,IAAK,CAAC;EACzB,CAAC;EAED,MAAMa,YAAY,GAAGA,CAAA,KAAM;IAC1Bb,gBAAgB,CAAE,KAAM,CAAC;EAC1B,CAAC;EAED,MAAMc,WAAW,GAAGA,CAAA,KAAM;IACzBZ,WAAW,CAAE,IAAK,CAAC;IACnBW,YAAY,CAAC,CAAC;IACdnB,SAAS,CAAE,KAAM,CAAC;EACnB,CAAC;EAED,MAAMqB,4BAA4B,GAAKC,KAAK,IAAM;IACjD,MAAMC,aAAa,GAAGD,KAAK,GAAG,QAAQ,GAAGE,SAAS;IAElD,IAAIC,UAAU;IACd,IAAKF,aAAa,EAAG;MACpB,MAAMG,IAAI,GAAG,CAAEhC,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EAAGiC,KAAK,CAAE,GAAI,CAAC;MACvC3C,WAAW,CAAC4C,OAAO,CAAIC,MAAM,IAAM;QAClC,IAAK,CAAEH,IAAI,CAACI,QAAQ,CAAED,MAAO,CAAC,EAAG;UAChCH,IAAI,CAACK,IAAI,CAAEF,MAAO,CAAC;QACpB;MACD,CAAE,CAAC;MACHJ,UAAU,GAAGC,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;IAC9B,CAAC,MAAM;MACN,MAAMN,IAAI,GAAG,CAAEhC,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EACtBiC,KAAK,CAAE,GAAI,CAAC,CACZM,MAAM,CACJJ,MAAM,IAAM7C,WAAW,CAAC8C,QAAQ,CAAED,MAAO,CAAC,KAAK,KAClD,CAAC;MACFJ,UAAU,GAAGC,IAAI,CAACQ,MAAM,GAAGR,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC,GAAGR,SAAS;IACxD;IAEA,OAAO;MACNhC,UAAU,EAAE+B,aAAa;MACzB7B,GAAG,EAAE+B;IACN,CAAC;EACF,CAAC;EAED,MAAMU,cAAc,GAAGA,CAAA,KAAM;IAC5B,OAASC,KAAK,IAAM;MACnB;MACA;MACA;MACA;MACA,MAAMC,mBAAmB,GAAG5B,eAAe,CAACI,OAAO;MACnD,IACCwB,mBAAmB,IACnBA,mBAAmB,CAACC,QAAQ,CAAEF,KAAK,CAACG,MAAO,CAAC,EAC3C;QACD;MACD;MACAvC,SAAS,CAAE,KAAM,CAAC;MAClBQ,WAAW,CAAE,IAAK,CAAC;MACnBW,YAAY,CAAC,CAAC;IACf,CAAC;EACF,CAAC;EAED,MAAMqB,kBAAkB,GAAGA,CAAA,KAAM;IAChC,OAASJ,KAAK,IAAM;MACnB,IAAK7B,QAAQ,EAAG;QACf;QACA;QACA,MAAMkC,mBAAmB,GACxBC,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACvD,GAAG,KAAKmB,QACxC,CAAC,EAAErB,eAAe,IAAIL,uBAAuB;QAE9CM,WAAW,CAAE;UACZyD,IAAI,EAAErC,QAAQ;UACdrB,eAAe,EAAEuD,mBAAmB;UACpCI,QAAQ,EAAE;YAAEC,OAAO,EAAE;UAAM;QAC5B,CAAE,CAAC;MACJ;MACA3B,YAAY,CAAC,CAAC;MACdX,WAAW,CAAE,IAAK,CAAC;MACnB4B,KAAK,CAACW,cAAc,CAAC,CAAC;IACvB,CAAC;EACF,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1B7D,WAAW,CAAE;MACZD,eAAe,EAAEN,qBAAqB;MACtCgE,IAAI,EAAE;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMF,mBAAmB,GAAGA,CAAA,KAAM;IACjC,MAAMO,gBAAgB,GAAG,CACxB;MACC/D,eAAe,EAAEJ,sBAAsB;MACvCoE,KAAK,EAAE,IAAAC,QAAE,EAAE,oBAAqB,CAAC;MACjC/D,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGC,QAAQ,GAAGkC,SAAS;MACjD4B,IAAI,EAAEC;IACP,CAAC,CACD;IACD,IAAKhE,SAAS,KAAK,OAAO,IAAIE,SAAS,EAAG;MACzC0D,gBAAgB,CAAClB,IAAI,CAAE;QACtB7C,eAAe,EAAEH,2BAA2B;QAC5CmE,KAAK,EAAE,IAAAC,QAAE,EAAE,yBAA0B,CAAC;QACtC/D,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGE,SAAS,GAAGiC,SAAS;QAClD4B,IAAI,EAAEE;MACP,CAAE,CAAC;IACJ;IACA,OAAOL,gBAAgB;EACxB,CAAC;EAED,MAAMM,SAAS,GAAKjC,KAAK,IAAM;IAC9B,MAAM2B,gBAAgB,GAAGP,mBAAmB,CAAC,CAAC;IAC9C,IAAIc,oBAAoB;IACxB,IAAK,CAAElC,KAAK,EAAG;MACdkC,oBAAoB,GAAG5E,qBAAqB;IAC7C,CAAC,MAAM;MACN4E,oBAAoB,GAAG,CACtBP,gBAAgB,CAAChC,IAAI,CAAI0B,WAAW,IAAM;QACzC,OAAOA,WAAW,CAACvD,GAAG,KAAKkC,KAAK;MACjC,CAAE,CAAC,IAAI;QAAEpC,eAAe,EAAEL;MAAwB,CAAC,EAClDK,eAAe;IAClB;IACAC,WAAW,CAAE;MACZD,eAAe,EAAEsE,oBAAoB;MACrCZ,IAAI,EAAEtB;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMmC,WAAW,GAAKnC,KAAK,IAAM;IAChC,MAAMoC,iBAAiB,GAAGrC,4BAA4B,CAAEC,KAAM,CAAC;IAC/DnC,WAAW,CAAEuE,iBAAkB,CAAC;EACjC,CAAC;EAED,MAAMC,YAAY,GAAKrC,KAAK,IAAM;IACjCnC,WAAW,CAAE;MAAEO,GAAG,EAAE4B;IAAM,CAAE,CAAC;EAC9B,CAAC;EAED,MAAMsC,cAAc,GAAKtC,KAAK,IAAM;IACnCnC,WAAW,CAAE;MAAEM,SAAS,EAAE6B;IAAM,CAAE,CAAC;EACpC,CAAC;EAED,MAAMuC,eAAe,gBACpB,IAAAlF,WAAA,CAAAmF,IAAA,EAACvF,WAAA,CAAAwF,oBAAM;IAACC,OAAO,EAAC,GAAG;IAAAC,QAAA,gBAClB,IAAAtF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA4F,aAAa;MACbC,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,iBAAkB,CAAG;MACjCmB,QAAQ,EAAGb,WAAa;MACxBc,OAAO,EAAG/E,UAAU,KAAK;IAAU,CACnC,CAAC,eACF,IAAAb,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiG,WAAW;MACXC,qBAAqB;MACrBL,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,UAAW,CAAG;MAC1B7B,KAAK,EAAG5B,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAI;MACnB4E,QAAQ,EAAGX;IAAc,CACzB,CAAC,eACF,IAAAhF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiG,WAAW;MACXC,qBAAqB;MACrBL,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,gBAAiB,CAAG;MAChC7B,KAAK,EAAG7B,SAAS,IAAI,EAAI;MACzB6E,QAAQ,EAAGV;IAAgB,CAC3B,CAAC;EAAA,CACK,CACR;EAED,MAAMc,eAAe,GAAGnE,QAAQ,KAAK,IAAI,GAAGA,QAAQ,GAAGnB,GAAG;EAC1D,MAAMuF,iBAAiB,GACtB,CAAE/E,eAAe,IAAMA,eAAe,IAAI,CAAED,mBAAqB;EAClE,MAAMiF,cAAc,GAAG,CAAEF,eAAe,IAAIC,iBAAiB;EAE7D,MAAME,QAAQ,GAAG,CAChBnC,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACzD,eAAe,KAAKA,eACpD,CAAC,IAAI,CAAC,CAAC,EACNgE,KAAK;EAEP,MAAM4B,eAAe,GAAGA,CAAA,KAAM;IAC7B,IACClF,eAAe,IACfD,mBAAmB,IACnB,CAAEP,GAAG,IACL,CAAEiB,aAAa,EACd;MACD,oBACC,IAAA1B,WAAA,CAAAmF,IAAA;QAAKiB,SAAS,EAAC,2CAA2C;QAAAd,QAAA,gBACzD,IAAAtF,WAAA,CAAAuF,GAAA,EAAC1F,MAAA,CAAAwG,IAAI;UAAC5B,IAAI,EAAG6B;QAAY,CAAE,CAAC,eAC5B,IAAAtG,WAAA,CAAAmF,IAAA;UAAKiB,SAAS,EAAC,MAAM;UAAAd,QAAA,gBACpB,IAAAtF,WAAA,CAAAuF,GAAA;YAAAD,QAAA,EAAK,IAAAd,QAAE,EAAE,iBAAkB;UAAC,CAAK,CAAC,eAClC,IAAAxE,WAAA,CAAAuF,GAAA;YAAGa,SAAS,EAAC,aAAa;YAAAd,QAAA,EACvB,IAAAd,QAAE,EAAE,yCAA0C;UAAC,CAC/C,CAAC;QAAA,CACA,CAAC,eACN,IAAAxE,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA2G,MAAM;UACN9B,IAAI,EAAG+B,cAAS;UAChBd,KAAK,EAAG,IAAAlB,QAAE,EAAE,yBAA0B,CAAG;UACzCiC,OAAO,EAAGA,CAAA,KAAM;YACfvF,aAAa,GAAI,KAAM,CAAC;UACzB,CAAG;UACHwF,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACE,CAAC;IAER,CAAC,MAAM,IAAK,CAAEjG,GAAG,IAAIiB,aAAa,EAAG;MACpC,oBACC,IAAA1B,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU,CAACC,UAAU;QACrBR,SAAS,EAAC,qDAAqD;QAC/DzD,KAAK,EAAGoD,eAAiB;QACzBc,kBAAkB,EAAGhF,WAAa;QAClCiF,QAAQ,EAAGjD,kBAAkB,CAAC,CAAG;QACjC/B,eAAe,EAAGA;MAAiB,CACnC,CAAC;IAEJ,CAAC,MAAM,IAAKrB,GAAG,IAAI,CAAEiB,aAAa,EAAG;MACpC,oBACC,IAAA1B,WAAA,CAAAmF,IAAA,EAAAnF,WAAA,CAAA+G,QAAA;QAAAzB,QAAA,gBACC,IAAAtF,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU,CAACK,UAAU;UACrBZ,SAAS,EAAC,qDAAqD;UAC/D3F,GAAG,EAAGA,GAAK;UACXwG,eAAe,EAAG1E,aAAe;UACjC2D,QAAQ,EAAGA;QAAU,CACrB,CAAC,eACF,IAAAlG,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA2G,MAAM;UACN9B,IAAI,EAAG+B,cAAS;UAChBd,KAAK,EAAG,IAAAlB,QAAE,EAAE,aAAc,CAAG;UAC7BiC,OAAO,EAAGA,CAAA,KAAM;YACfpC,YAAY,CAAC,CAAC;YACdlD,aAAa,GAAG,CAAC;UAClB,CAAG;UACHuF,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACD,CAAC;IAEL;EACD,CAAC;EAED,oBACC,IAAA1G,WAAA,CAAAmF,IAAA,EAAAnF,WAAA,CAAA+G,QAAA;IAAAzB,QAAA,gBACC,IAAAtF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAsH,aAAa;MACbzC,IAAI,EAAG0C,WAAU;MACjBf,SAAS,EAAC,6BAA6B;MACvCV,KAAK,EAAG,IAAAlB,QAAE,EAAE,MAAO,CAAG;MACtB,iBAAgBpD,MAAQ;MACxBqF,OAAO,EAAGhF,UAAY;MACtB2F,GAAG,EAAG5F,gBAAkB;MACxB6F,QAAQ,EACP,CAAC,CAAE5G,GAAG,IAAMQ,eAAe,IAAID;IAC/B,CACD,CAAC,EACAI,MAAM,iBACP,IAAApB,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU;MACVS,GAAG,EAAGpF,UAAY;MAClBsF,MAAM,EAAG/F,aAAe;MACxBiC,cAAc,EAAGA,cAAc,CAAC,CAAG;MACnC+D,OAAO,EAAG9E,WAAa;MACvB+E,cAAc,EACbxB,iBAAiB,GAAG,MAAMd,eAAe,GAAG,IAC5C;MACDuC,kBAAkB,EACjBxB,cAAc,iBACb,IAAAjG,WAAA,CAAAmF,IAAA,EAACvF,WAAA,CAAA8H,aAAa;QAAApC,QAAA,GACXvB,mBAAmB,CAAC,CAAC,CAAC4D,GAAG,CAAIC,IAAI,iBAClC,IAAA5H,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiI,QAAQ;UAERpD,IAAI,EAAGmD,IAAI,CAACnD,IAAM;UAClBqD,YAAY,EAAC,MAAM;UACnBrB,OAAO,EAAGA,CAAA,KAAM;YACf5E,WAAW,CAAE,IAAK,CAAC;YACnB+C,SAAS,CAAEgD,IAAI,CAACnH,GAAI,CAAC;YACrB+B,YAAY,CAAC,CAAC;UACf,CAAG;UAAA8C,QAAA,EAEDsC,IAAI,CAACrD;QAAK,GATNqD,IAAI,CAACrH,eAUF,CACT,CAAC,EACDS,mBAAmB,iBACpB,IAAAhB,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiI,QAAQ;UAERzB,SAAS,EAAC,2CAA2C;UACrD3B,IAAI,EAAG6B,iBAAY;UACnByB,IAAI,EAAG,IAAAvD,QAAE,EACR,yCACD,CAAG;UACHsD,YAAY,EAAC,MAAM;UACnBrB,OAAO,EAAGA,CAAA,KAAM;YACf5E,WAAW,CAAE,IAAK,CAAC;YACnBrB,WAAW,CAAE;cACZD,eAAe,EACdN,qBAAqB;cACtBgE,IAAI,EAAE;YACP,CAAE,CAAC;YACH/C,aAAa,GAAI,IAAK,CAAC;YACvBsB,YAAY,CAAC,CAAC;UACf,CAAG;UAAA8C,QAAA,EAED,IAAAd,QAAE,EAAE,iBAAkB;QAAC,GAlBrB,iBAmBK,CACV;MAAA,CACa,CAEhB;MACDwD,MAAM,EAAG,EAAI;MAAA1C,QAAA,EAEXa,eAAe,CAAC;IAAC,CACR,CACZ;EAAA,CACA,CAAC;AAEL,CAAC;AAAC8B,OAAA,CAAAC,6BAAA,GAAA5H,eAAA","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_element","_dom","_components","_icons","_index","_interopRequireDefault","_jsxRuntime","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","useState","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","useRef","wrapperRef","useEffect","current","nextFocusTarget","focus","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","__","icon","image","page","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","jsxs","__experimentalVStack","spacing","children","jsx","ToggleControl","__nextHasNoMarginBottom","label","onChange","checked","TextControl","__next40pxDefaultSize","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","Icon","fullscreen","Button","linkOff","onClick","size","default","LinkEditor","onChangeInputValue","onSubmit","Fragment","LinkViewer","onEditLinkClick","ToolbarButton","linkIcon","ref","isActive","anchor","onClose","renderSettings","additionalControls","NavigableMenu","map","link","MenuItem","iconPosition","info","offset","exports","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Enlarge on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable enlarge on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Enlarge on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AASA,IAAAI,MAAA,GAAAJ,OAAA;AAYA,IAAAK,MAAA,GAAAC,sBAAA,CAAAN,OAAA;AAAiC,IAAAO,WAAA,GAAAP,OAAA;AA3BjC;AACA;AACA;;AAsBA;AACA;AACA;;AAGA,MAAMQ,qBAAqB,GAAG,MAAM;AACpC,MAAMC,uBAAuB,GAAG,QAAQ;AACxC,MAAMC,sBAAsB,GAAG,OAAO;AACtC,MAAMC,2BAA2B,GAAG,YAAY;AAChD,MAAMC,WAAW,GAAG,CAAE,YAAY,EAAE,UAAU,CAAE;AAEhD,MAAMC,eAAe,GAAGA,CAAE;EACzBC,eAAe;EACfC,WAAW;EACXC,GAAG;EACHC,SAAS,GAAG,OAAO;EACnBC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,GAAG;EACHC,mBAAmB;EACnBC,eAAe;EACfC,aAAa;EACbC;AACD,CAAC,KAAM;EACN,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAC/C;EACA;EACA,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAF,iBAAQ,EAAE,IAAK,CAAC;EAC5D,MAAMG,UAAU,GAAGA,CAAA,KAAM;IACxBJ,SAAS,CAAE,IAAK,CAAC;EAClB,CAAC;EAED,MAAM,CAAEK,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAL,iBAAQ,EAAE,KAAM,CAAC;EAC7D,MAAM,CAAEM,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAP,iBAAQ,EAAE,IAAK,CAAC;EAElD,MAAMQ,eAAe,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EACtC,MAAMC,UAAU,GAAG,IAAAD,eAAM,EAAC,CAAC;EAE3B,IAAAE,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAED,UAAU,CAACE,OAAO,EAAG;MAC3B;IACD;IACA,MAAMC,eAAe,GACpBC,UAAK,CAACC,SAAS,CAACC,IAAI,CAAEN,UAAU,CAACE,OAAQ,CAAC,CAAE,CAAC,CAAE,IAC/CF,UAAU,CAACE,OAAO;IACnBC,eAAe,CAACC,KAAK,CAAC,CAAC;EACxB,CAAC,EAAE,CAAEV,aAAa,EAAEjB,GAAG,EAAEQ,eAAe,CAAG,CAAC;EAE5C,MAAMsB,aAAa,GAAGA,CAAA,KAAM;IAC3B,IACChC,eAAe,KAAKJ,sBAAsB,IAC1CI,eAAe,KAAKH,2BAA2B,EAC9C;MACDyB,WAAW,CAAE,EAAG,CAAC;IAClB;IACAF,gBAAgB,CAAE,IAAK,CAAC;EACzB,CAAC;EAED,MAAMa,YAAY,GAAGA,CAAA,KAAM;IAC1Bb,gBAAgB,CAAE,KAAM,CAAC;EAC1B,CAAC;EAED,MAAMc,WAAW,GAAGA,CAAA,KAAM;IACzBZ,WAAW,CAAE,IAAK,CAAC;IACnBW,YAAY,CAAC,CAAC;IACdnB,SAAS,CAAE,KAAM,CAAC;EACnB,CAAC;EAED,MAAMqB,4BAA4B,GAAKC,KAAK,IAAM;IACjD,MAAMC,aAAa,GAAGD,KAAK,GAAG,QAAQ,GAAGE,SAAS;IAElD,IAAIC,UAAU;IACd,IAAKF,aAAa,EAAG;MACpB,MAAMG,IAAI,GAAG,CAAEhC,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EAAGiC,KAAK,CAAE,GAAI,CAAC;MACvC3C,WAAW,CAAC4C,OAAO,CAAIC,MAAM,IAAM;QAClC,IAAK,CAAEH,IAAI,CAACI,QAAQ,CAAED,MAAO,CAAC,EAAG;UAChCH,IAAI,CAACK,IAAI,CAAEF,MAAO,CAAC;QACpB;MACD,CAAE,CAAC;MACHJ,UAAU,GAAGC,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;IAC9B,CAAC,MAAM;MACN,MAAMN,IAAI,GAAG,CAAEhC,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EACtBiC,KAAK,CAAE,GAAI,CAAC,CACZM,MAAM,CACJJ,MAAM,IAAM7C,WAAW,CAAC8C,QAAQ,CAAED,MAAO,CAAC,KAAK,KAClD,CAAC;MACFJ,UAAU,GAAGC,IAAI,CAACQ,MAAM,GAAGR,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC,GAAGR,SAAS;IACxD;IAEA,OAAO;MACNhC,UAAU,EAAE+B,aAAa;MACzB7B,GAAG,EAAE+B;IACN,CAAC;EACF,CAAC;EAED,MAAMU,cAAc,GAAGA,CAAA,KAAM;IAC5B,OAASC,KAAK,IAAM;MACnB;MACA;MACA;MACA;MACA,MAAMC,mBAAmB,GAAG5B,eAAe,CAACI,OAAO;MACnD,IACCwB,mBAAmB,IACnBA,mBAAmB,CAACC,QAAQ,CAAEF,KAAK,CAACG,MAAO,CAAC,EAC3C;QACD;MACD;MACAvC,SAAS,CAAE,KAAM,CAAC;MAClBQ,WAAW,CAAE,IAAK,CAAC;MACnBW,YAAY,CAAC,CAAC;IACf,CAAC;EACF,CAAC;EAED,MAAMqB,kBAAkB,GAAGA,CAAA,KAAM;IAChC,OAASJ,KAAK,IAAM;MACnB,IAAK7B,QAAQ,EAAG;QACf;QACA;QACA,MAAMkC,mBAAmB,GACxBC,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACvD,GAAG,KAAKmB,QACxC,CAAC,EAAErB,eAAe,IAAIL,uBAAuB;QAE9CM,WAAW,CAAE;UACZyD,IAAI,EAAErC,QAAQ;UACdrB,eAAe,EAAEuD,mBAAmB;UACpCI,QAAQ,EAAE;YAAEC,OAAO,EAAE;UAAM;QAC5B,CAAE,CAAC;MACJ;MACA3B,YAAY,CAAC,CAAC;MACdX,WAAW,CAAE,IAAK,CAAC;MACnB4B,KAAK,CAACW,cAAc,CAAC,CAAC;IACvB,CAAC;EACF,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1B7D,WAAW,CAAE;MACZD,eAAe,EAAEN,qBAAqB;MACtCgE,IAAI,EAAE;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMF,mBAAmB,GAAGA,CAAA,KAAM;IACjC,MAAMO,gBAAgB,GAAG,CACxB;MACC/D,eAAe,EAAEJ,sBAAsB;MACvCoE,KAAK,EAAE,IAAAC,QAAE,EAAE,oBAAqB,CAAC;MACjC/D,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGC,QAAQ,GAAGkC,SAAS;MACjD4B,IAAI,EAAEC;IACP,CAAC,CACD;IACD,IAAKhE,SAAS,KAAK,OAAO,IAAIE,SAAS,EAAG;MACzC0D,gBAAgB,CAAClB,IAAI,CAAE;QACtB7C,eAAe,EAAEH,2BAA2B;QAC5CmE,KAAK,EAAE,IAAAC,QAAE,EAAE,yBAA0B,CAAC;QACtC/D,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGE,SAAS,GAAGiC,SAAS;QAClD4B,IAAI,EAAEE;MACP,CAAE,CAAC;IACJ;IACA,OAAOL,gBAAgB;EACxB,CAAC;EAED,MAAMM,SAAS,GAAKjC,KAAK,IAAM;IAC9B,MAAM2B,gBAAgB,GAAGP,mBAAmB,CAAC,CAAC;IAC9C,IAAIc,oBAAoB;IACxB,IAAK,CAAElC,KAAK,EAAG;MACdkC,oBAAoB,GAAG5E,qBAAqB;IAC7C,CAAC,MAAM;MACN4E,oBAAoB,GAAG,CACtBP,gBAAgB,CAAChC,IAAI,CAAI0B,WAAW,IAAM;QACzC,OAAOA,WAAW,CAACvD,GAAG,KAAKkC,KAAK;MACjC,CAAE,CAAC,IAAI;QAAEpC,eAAe,EAAEL;MAAwB,CAAC,EAClDK,eAAe;IAClB;IACAC,WAAW,CAAE;MACZD,eAAe,EAAEsE,oBAAoB;MACrCZ,IAAI,EAAEtB;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMmC,WAAW,GAAKnC,KAAK,IAAM;IAChC,MAAMoC,iBAAiB,GAAGrC,4BAA4B,CAAEC,KAAM,CAAC;IAC/DnC,WAAW,CAAEuE,iBAAkB,CAAC;EACjC,CAAC;EAED,MAAMC,YAAY,GAAKrC,KAAK,IAAM;IACjCnC,WAAW,CAAE;MAAEO,GAAG,EAAE4B;IAAM,CAAE,CAAC;EAC9B,CAAC;EAED,MAAMsC,cAAc,GAAKtC,KAAK,IAAM;IACnCnC,WAAW,CAAE;MAAEM,SAAS,EAAE6B;IAAM,CAAE,CAAC;EACpC,CAAC;EAED,MAAMuC,eAAe,gBACpB,IAAAlF,WAAA,CAAAmF,IAAA,EAACvF,WAAA,CAAAwF,oBAAM;IAACC,OAAO,EAAC,GAAG;IAAAC,QAAA,gBAClB,IAAAtF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA4F,aAAa;MACbC,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,iBAAkB,CAAG;MACjCmB,QAAQ,EAAGb,WAAa;MACxBc,OAAO,EAAG/E,UAAU,KAAK;IAAU,CACnC,CAAC,eACF,IAAAb,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiG,WAAW;MACXC,qBAAqB;MACrBL,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,UAAW,CAAG;MAC1B7B,KAAK,EAAG5B,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAI;MACnB4E,QAAQ,EAAGX;IAAc,CACzB,CAAC,eACF,IAAAhF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiG,WAAW;MACXC,qBAAqB;MACrBL,uBAAuB;MACvBC,KAAK,EAAG,IAAAlB,QAAE,EAAE,gBAAiB,CAAG;MAChC7B,KAAK,EAAG7B,SAAS,IAAI,EAAI;MACzB6E,QAAQ,EAAGV;IAAgB,CAC3B,CAAC;EAAA,CACK,CACR;EAED,MAAMc,eAAe,GAAGnE,QAAQ,KAAK,IAAI,GAAGA,QAAQ,GAAGnB,GAAG;EAC1D,MAAMuF,iBAAiB,GACtB,CAAE/E,eAAe,IAAMA,eAAe,IAAI,CAAED,mBAAqB;EAClE,MAAMiF,cAAc,GAAG,CAAEF,eAAe,IAAIC,iBAAiB;EAE7D,MAAME,QAAQ,GAAG,CAChBnC,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACzD,eAAe,KAAKA,eACpD,CAAC,IAAI,CAAC,CAAC,EACNgE,KAAK;EAEP,MAAM4B,eAAe,GAAGA,CAAA,KAAM;IAC7B,IACClF,eAAe,IACfD,mBAAmB,IACnB,CAAEP,GAAG,IACL,CAAEiB,aAAa,EACd;MACD,oBACC,IAAA1B,WAAA,CAAAmF,IAAA;QAAKiB,SAAS,EAAC,2CAA2C;QAAAd,QAAA,gBACzD,IAAAtF,WAAA,CAAAuF,GAAA,EAAC1F,MAAA,CAAAwG,IAAI;UAAC5B,IAAI,EAAG6B;QAAY,CAAE,CAAC,eAC5B,IAAAtG,WAAA,CAAAmF,IAAA;UAAKiB,SAAS,EAAC,MAAM;UAAAd,QAAA,gBACpB,IAAAtF,WAAA,CAAAuF,GAAA;YAAAD,QAAA,EAAK,IAAAd,QAAE,EAAE,kBAAmB;UAAC,CAAK,CAAC,eACnC,IAAAxE,WAAA,CAAAuF,GAAA;YAAGa,SAAS,EAAC,aAAa;YAAAd,QAAA,EACvB,IAAAd,QAAE,EAAE,yCAA0C;UAAC,CAC/C,CAAC;QAAA,CACA,CAAC,eACN,IAAAxE,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA2G,MAAM;UACN9B,IAAI,EAAG+B,cAAS;UAChBd,KAAK,EAAG,IAAAlB,QAAE,EAAE,0BAA2B,CAAG;UAC1CiC,OAAO,EAAGA,CAAA,KAAM;YACfvF,aAAa,GAAI,KAAM,CAAC;UACzB,CAAG;UACHwF,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACE,CAAC;IAER,CAAC,MAAM,IAAK,CAAEjG,GAAG,IAAIiB,aAAa,EAAG;MACpC,oBACC,IAAA1B,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU,CAACC,UAAU;QACrBR,SAAS,EAAC,qDAAqD;QAC/DzD,KAAK,EAAGoD,eAAiB;QACzBc,kBAAkB,EAAGhF,WAAa;QAClCiF,QAAQ,EAAGjD,kBAAkB,CAAC,CAAG;QACjC/B,eAAe,EAAGA;MAAiB,CACnC,CAAC;IAEJ,CAAC,MAAM,IAAKrB,GAAG,IAAI,CAAEiB,aAAa,EAAG;MACpC,oBACC,IAAA1B,WAAA,CAAAmF,IAAA,EAAAnF,WAAA,CAAA+G,QAAA;QAAAzB,QAAA,gBACC,IAAAtF,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU,CAACK,UAAU;UACrBZ,SAAS,EAAC,qDAAqD;UAC/D3F,GAAG,EAAGA,GAAK;UACXwG,eAAe,EAAG1E,aAAe;UACjC2D,QAAQ,EAAGA;QAAU,CACrB,CAAC,eACF,IAAAlG,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAA2G,MAAM;UACN9B,IAAI,EAAG+B,cAAS;UAChBd,KAAK,EAAG,IAAAlB,QAAE,EAAE,aAAc,CAAG;UAC7BiC,OAAO,EAAGA,CAAA,KAAM;YACfpC,YAAY,CAAC,CAAC;YACdlD,aAAa,GAAG,CAAC;UAClB,CAAG;UACHuF,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACD,CAAC;IAEL;EACD,CAAC;EAED,oBACC,IAAA1G,WAAA,CAAAmF,IAAA,EAAAnF,WAAA,CAAA+G,QAAA;IAAAzB,QAAA,gBACC,IAAAtF,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAsH,aAAa;MACbzC,IAAI,EAAG0C,WAAU;MACjBf,SAAS,EAAC,6BAA6B;MACvCV,KAAK,EAAG,IAAAlB,QAAE,EAAE,MAAO,CAAG;MACtB,iBAAgBpD,MAAQ;MACxBqF,OAAO,EAAGhF,UAAY;MACtB2F,GAAG,EAAG5F,gBAAkB;MACxB6F,QAAQ,EACP,CAAC,CAAE5G,GAAG,IAAMQ,eAAe,IAAID;IAC/B,CACD,CAAC,EACAI,MAAM,iBACP,IAAApB,WAAA,CAAAuF,GAAA,EAACzF,MAAA,CAAA6G,OAAU;MACVS,GAAG,EAAGpF,UAAY;MAClBsF,MAAM,EAAG/F,aAAe;MACxBiC,cAAc,EAAGA,cAAc,CAAC,CAAG;MACnC+D,OAAO,EAAG9E,WAAa;MACvB+E,cAAc,EACbxB,iBAAiB,GAAG,MAAMd,eAAe,GAAG,IAC5C;MACDuC,kBAAkB,EACjBxB,cAAc,iBACb,IAAAjG,WAAA,CAAAmF,IAAA,EAACvF,WAAA,CAAA8H,aAAa;QAAApC,QAAA,GACXvB,mBAAmB,CAAC,CAAC,CAAC4D,GAAG,CAAIC,IAAI,iBAClC,IAAA5H,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiI,QAAQ;UAERpD,IAAI,EAAGmD,IAAI,CAACnD,IAAM;UAClBqD,YAAY,EAAC,MAAM;UACnBrB,OAAO,EAAGA,CAAA,KAAM;YACf5E,WAAW,CAAE,IAAK,CAAC;YACnB+C,SAAS,CAAEgD,IAAI,CAACnH,GAAI,CAAC;YACrB+B,YAAY,CAAC,CAAC;UACf,CAAG;UAAA8C,QAAA,EAEDsC,IAAI,CAACrD;QAAK,GATNqD,IAAI,CAACrH,eAUF,CACT,CAAC,EACDS,mBAAmB,iBACpB,IAAAhB,WAAA,CAAAuF,GAAA,EAAC3F,WAAA,CAAAiI,QAAQ;UAERzB,SAAS,EAAC,2CAA2C;UACrD3B,IAAI,EAAG6B,iBAAY;UACnByB,IAAI,EAAG,IAAAvD,QAAE,EACR,yCACD,CAAG;UACHsD,YAAY,EAAC,MAAM;UACnBrB,OAAO,EAAGA,CAAA,KAAM;YACf5E,WAAW,CAAE,IAAK,CAAC;YACnBrB,WAAW,CAAE;cACZD,eAAe,EACdN,qBAAqB;cACtBgE,IAAI,EAAE;YACP,CAAE,CAAC;YACH/C,aAAa,GAAI,IAAK,CAAC;YACvBsB,YAAY,CAAC,CAAC;UACf,CAAG;UAAA8C,QAAA,EAED,IAAAd,QAAE,EAAE,kBAAmB;QAAC,GAlBtB,iBAmBK,CACV;MAAA,CACa,CAEhB;MACDwD,MAAM,EAAG,EAAI;MAAA1C,QAAA,EAEXa,eAAe,CAAC;IAAC,CACR,CACZ;EAAA,CACA,CAAC;AAEL,CAAC;AAAC8B,OAAA,CAAAC,6BAAA,GAAA5H,eAAA","ignoreList":[]}
@@ -75,7 +75,7 @@ const getTransformCommands = () => function useTransformCommands() {
75
75
  }
76
76
  }
77
77
 
78
- // Simple block tranformation based on the `Block Transforms` API.
78
+ // Simple block transformation based on the `Block Transforms` API.
79
79
  function onBlockTransform(name) {
80
80
  const newBlocks = (0, _blocks.switchToBlockType)(blocks, name);
81
81
  replaceBlocks(clientIds, newBlocks);
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_blocks","_data","_commands","_icons","_blockIcon","_interopRequireDefault","_store","_jsxRuntime","getTransformCommands","useTransformCommands","replaceBlocks","multiSelect","useDispatch","blockEditorStore","blocks","clientIds","canRemove","possibleBlockTransformations","invalidSelection","useSelect","select","getBlockRootClientId","getBlockTransformItems","getSelectedBlockClientIds","getBlocksByClientId","canRemoveBlocks","selectedBlockClientIds","selectedBlocks","filter","block","length","rootClientId","isLoading","commands","isTemplate","isTemplatePart","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","switchToBlockType","hasPossibleBlockTransformations","map","transformation","title","icon","replace","label","sprintf","__","jsx","default","callback","close","getQuickActionsCommands","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","blocksStore","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","hasBlockSupport","push","copy","Array","isArray","add","group","ungroup","remove","command","useBlockCommands","useCommandLoader","hook","context","exports"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nconst getTransformCommands = () =>\n\tfunction useTransformCommands() {\n\t\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\t\tconst {\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcanRemove,\n\t\t\tpossibleBlockTransformations,\n\t\t\tinvalidSelection,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlocks = getBlocksByClientId(\n\t\t\t\tselectedBlockClientIds\n\t\t\t);\n\n\t\t\t// selectedBlocks can have `null`s when something tries to call `selectBlock` with an inexistent clientId.\n\t\t\t// These nulls will cause fatal errors down the line.\n\t\t\t// In order to prevent discrepancies between selectedBlockClientIds and selectedBlocks, we effectively treat the entire selection as invalid.\n\t\t\t// @see https://github.com/WordPress/gutenberg/pull/59410#issuecomment-2006304536\n\t\t\tif ( selectedBlocks.filter( ( block ) => ! block ).length > 0 ) {\n\t\t\t\treturn {\n\t\t\t\t\tinvalidSelection: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tselectedBlockClientIds[ 0 ]\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tblocks: selectedBlocks,\n\t\t\t\tclientIds: selectedBlockClientIds,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tselectedBlocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( selectedBlockClientIds ),\n\t\t\t\tinvalidSelection: false,\n\t\t\t};\n\t\t}, [] );\n\n\t\tif ( invalidSelection ) {\n\t\t\treturn {\n\t\t\t\tisLoading: false,\n\t\t\t\tcommands: [],\n\t\t\t};\n\t\t}\n\t\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\t\tmultiSelect(\n\t\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Simple block tranformation based on the `Block Transforms` API.\n\t\tfunction onBlockTransform( name ) {\n\t\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t\tselectForMultipleBlocks( newBlocks );\n\t\t}\n\n\t\t/**\n\t\t * The `isTemplate` check is a stopgap solution here.\n\t\t * Ideally, the Transforms API should handle this\n\t\t * by allowing to exclude blocks from wildcard transformations.\n\t\t */\n\t\tconst hasPossibleBlockTransformations =\n\t\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\t\tif (\n\t\t\t! clientIds ||\n\t\t\tclientIds.length < 1 ||\n\t\t\t! hasPossibleBlockTransformations\n\t\t) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst commands = possibleBlockTransformations.map(\n\t\t\t( transformation ) => {\n\t\t\t\tconst { name, title, icon } = transformation;\n\t\t\t\treturn {\n\t\t\t\t\tname:\n\t\t\t\t\t\t'core/block-editor/transform-to-' +\n\t\t\t\t\t\tname.replace( '/', '-' ),\n\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tclose();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t);\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getQuickActionsCommands = () =>\n\tfunction useQuickActionsCommands() {\n\t\tconst { clientIds, isUngroupable, isGroupable } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t\tisUngroupable: _isUngroupable,\n\t\t\t\t\tisGroupable: _isGroupable,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\t\treturn {\n\t\t\t\t\tclientIds: selectedBlockClientIds,\n\t\t\t\t\tisUngroupable: _isUngroupable(),\n\t\t\t\t\tisGroupable: _isGroupable(),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[]\n\t\t);\n\t\tconst {\n\t\t\tcanInsertBlockType,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlocksByClientId,\n\t\t\tcanRemoveBlocks,\n\t\t} = useSelect( blockEditorStore );\n\t\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\t\tuseSelect( blocksStore );\n\n\t\tconst blocks = getBlocksByClientId( clientIds );\n\n\t\tconst {\n\t\t\tremoveBlocks,\n\t\t\treplaceBlocks,\n\t\t\tduplicateBlocks,\n\t\t\tinsertAfterBlock,\n\t\t\tinsertBeforeBlock,\n\t\t} = useDispatch( blockEditorStore );\n\n\t\tconst onGroup = () => {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t};\n\t\tconst onUngroup = () => {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t};\n\n\t\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\t\tgetDefaultBlockName(),\n\t\t\trootClientId\n\t\t);\n\t\tconst canDuplicate = blocks.every( ( block ) => {\n\t\t\treturn (\n\t\t\t\t!! block &&\n\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t\t);\n\t\t} );\n\t\tconst canRemove = canRemoveBlocks( clientIds );\n\n\t\tconst commands = [];\n\n\t\tif ( canDuplicate ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'duplicate',\n\t\t\t\tlabel: __( 'Duplicate' ),\n\t\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\t\ticon: copy,\n\t\t\t} );\n\t\t}\n\n\t\tif ( canInsertDefaultBlock ) {\n\t\t\tcommands.push(\n\t\t\t\t{\n\t\t\t\t\tname: 'add-before',\n\t\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t\t: clientId;\n\t\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t\t},\n\t\t\t\t\ticon: add,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'add-after',\n\t\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t\t: clientId;\n\t\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t\t},\n\t\t\t\t\ticon: add,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif ( isGroupable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'Group',\n\t\t\t\tlabel: __( 'Group' ),\n\t\t\t\tcallback: onGroup,\n\t\t\t\ticon: group,\n\t\t\t} );\n\t\t}\n\n\t\tif ( isUngroupable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'ungroup',\n\t\t\t\tlabel: __( 'Ungroup' ),\n\t\t\t\tcallback: onUngroup,\n\t\t\t\ticon: ungroup,\n\t\t\t} );\n\t\t}\n\n\t\tif ( canRemove ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'remove',\n\t\t\t\tlabel: __( 'Delete' ),\n\t\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\t\ticon: remove,\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t\t...command,\n\t\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tcommand.callback();\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} ) ),\n\t\t};\n\t};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: getTransformCommands(),\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: getQuickActionsCommands(),\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_blocks","_data","_commands","_icons","_blockIcon","_interopRequireDefault","_store","_jsxRuntime","getTransformCommands","useTransformCommands","replaceBlocks","multiSelect","useDispatch","blockEditorStore","blocks","clientIds","canRemove","possibleBlockTransformations","invalidSelection","useSelect","select","getBlockRootClientId","getBlockTransformItems","getSelectedBlockClientIds","getBlocksByClientId","canRemoveBlocks","selectedBlockClientIds","selectedBlocks","filter","block","length","rootClientId","isLoading","commands","isTemplate","isTemplatePart","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","switchToBlockType","hasPossibleBlockTransformations","map","transformation","title","icon","replace","label","sprintf","__","jsx","default","callback","close","getQuickActionsCommands","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","blocksStore","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","hasBlockSupport","push","copy","Array","isArray","add","group","ungroup","remove","command","useBlockCommands","useCommandLoader","hook","context","exports"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nconst getTransformCommands = () =>\n\tfunction useTransformCommands() {\n\t\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\t\tconst {\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcanRemove,\n\t\t\tpossibleBlockTransformations,\n\t\t\tinvalidSelection,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlocks = getBlocksByClientId(\n\t\t\t\tselectedBlockClientIds\n\t\t\t);\n\n\t\t\t// selectedBlocks can have `null`s when something tries to call `selectBlock` with an inexistent clientId.\n\t\t\t// These nulls will cause fatal errors down the line.\n\t\t\t// In order to prevent discrepancies between selectedBlockClientIds and selectedBlocks, we effectively treat the entire selection as invalid.\n\t\t\t// @see https://github.com/WordPress/gutenberg/pull/59410#issuecomment-2006304536\n\t\t\tif ( selectedBlocks.filter( ( block ) => ! block ).length > 0 ) {\n\t\t\t\treturn {\n\t\t\t\t\tinvalidSelection: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tselectedBlockClientIds[ 0 ]\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tblocks: selectedBlocks,\n\t\t\t\tclientIds: selectedBlockClientIds,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tselectedBlocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( selectedBlockClientIds ),\n\t\t\t\tinvalidSelection: false,\n\t\t\t};\n\t\t}, [] );\n\n\t\tif ( invalidSelection ) {\n\t\t\treturn {\n\t\t\t\tisLoading: false,\n\t\t\t\tcommands: [],\n\t\t\t};\n\t\t}\n\t\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\t\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\t\tmultiSelect(\n\t\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Simple block transformation based on the `Block Transforms` API.\n\t\tfunction onBlockTransform( name ) {\n\t\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t\tselectForMultipleBlocks( newBlocks );\n\t\t}\n\n\t\t/**\n\t\t * The `isTemplate` check is a stopgap solution here.\n\t\t * Ideally, the Transforms API should handle this\n\t\t * by allowing to exclude blocks from wildcard transformations.\n\t\t */\n\t\tconst hasPossibleBlockTransformations =\n\t\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\t\tif (\n\t\t\t! clientIds ||\n\t\t\tclientIds.length < 1 ||\n\t\t\t! hasPossibleBlockTransformations\n\t\t) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst commands = possibleBlockTransformations.map(\n\t\t\t( transformation ) => {\n\t\t\t\tconst { name, title, icon } = transformation;\n\t\t\t\treturn {\n\t\t\t\t\tname:\n\t\t\t\t\t\t'core/block-editor/transform-to-' +\n\t\t\t\t\t\tname.replace( '/', '-' ),\n\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tclose();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t);\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getQuickActionsCommands = () =>\n\tfunction useQuickActionsCommands() {\n\t\tconst { clientIds, isUngroupable, isGroupable } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t\tisUngroupable: _isUngroupable,\n\t\t\t\t\tisGroupable: _isGroupable,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\t\treturn {\n\t\t\t\t\tclientIds: selectedBlockClientIds,\n\t\t\t\t\tisUngroupable: _isUngroupable(),\n\t\t\t\t\tisGroupable: _isGroupable(),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[]\n\t\t);\n\t\tconst {\n\t\t\tcanInsertBlockType,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlocksByClientId,\n\t\t\tcanRemoveBlocks,\n\t\t} = useSelect( blockEditorStore );\n\t\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\t\tuseSelect( blocksStore );\n\n\t\tconst blocks = getBlocksByClientId( clientIds );\n\n\t\tconst {\n\t\t\tremoveBlocks,\n\t\t\treplaceBlocks,\n\t\t\tduplicateBlocks,\n\t\t\tinsertAfterBlock,\n\t\t\tinsertBeforeBlock,\n\t\t} = useDispatch( blockEditorStore );\n\n\t\tconst onGroup = () => {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t};\n\t\tconst onUngroup = () => {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t};\n\n\t\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\t\tgetDefaultBlockName(),\n\t\t\trootClientId\n\t\t);\n\t\tconst canDuplicate = blocks.every( ( block ) => {\n\t\t\treturn (\n\t\t\t\t!! block &&\n\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t\t);\n\t\t} );\n\t\tconst canRemove = canRemoveBlocks( clientIds );\n\n\t\tconst commands = [];\n\n\t\tif ( canDuplicate ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'duplicate',\n\t\t\t\tlabel: __( 'Duplicate' ),\n\t\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\t\ticon: copy,\n\t\t\t} );\n\t\t}\n\n\t\tif ( canInsertDefaultBlock ) {\n\t\t\tcommands.push(\n\t\t\t\t{\n\t\t\t\t\tname: 'add-before',\n\t\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t\t: clientId;\n\t\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t\t},\n\t\t\t\t\ticon: add,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'add-after',\n\t\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t\t: clientId;\n\t\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t\t},\n\t\t\t\t\ticon: add,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif ( isGroupable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'Group',\n\t\t\t\tlabel: __( 'Group' ),\n\t\t\t\tcallback: onGroup,\n\t\t\t\ticon: group,\n\t\t\t} );\n\t\t}\n\n\t\tif ( isUngroupable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'ungroup',\n\t\t\t\tlabel: __( 'Ungroup' ),\n\t\t\t\tcallback: onUngroup,\n\t\t\t\ticon: ungroup,\n\t\t\t} );\n\t\t}\n\n\t\tif ( canRemove ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'remove',\n\t\t\t\tlabel: __( 'Delete' ),\n\t\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\t\ticon: remove,\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t\t...command,\n\t\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tcommand.callback();\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} ) ),\n\t\t};\n\t};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: getTransformCommands(),\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: getQuickActionsCommands(),\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -98,7 +98,7 @@ function useMovingAnimation({
98
98
  // motion, if the user is typing (insertion by Enter), or if the block
99
99
  // count exceeds the threshold (insertion caused all the blocks that
100
100
  // follow to animate).
101
- // To do: consider enableing the _moving_ animation even for large
101
+ // To do: consider enabling the _moving_ animation even for large
102
102
  // posts, while only disabling the _insertion_ animation?
103
103
  const disableAnimation = window.matchMedia('(prefers-reduced-motion: reduce)').matches || isTyping() || getGlobalBlockCount() > BLOCK_ANIMATION_THRESHOLD;
104
104
  if (disableAnimation) {
@@ -1 +1 @@
1
- {"version":3,"names":["_web","require","_element","_dom","_data","_store","BLOCK_ANIMATION_THRESHOLD","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","triggerAnimationOnChange","clientId","ref","useRef","isTyping","getGlobalBlockCount","isBlockSelected","isFirstMultiSelectedBlock","isBlockMultiSelected","isAncestorMultiSelected","isDraggingBlocks","useSelect","blockEditorStore","previous","prevRect","useMemo","current","getBoundingClientRect","useLayoutEffect","scrollContainer","getScrollContainer","isSelected","adjustScrolling","isDragging","preserveScrollPosition","blockRect","diff","scrollTop","disableAnimation","window","matchMedia","matches","isPartOfSelection","zIndex","controller","Controller","x","y","config","mass","tension","friction","onChange","value","Math","round","finishedMoving","style","transformOrigin","transform","undefined","destination","start","from","stop","set","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Controller } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * If the block count exceeds the threshold, we disable the reordering animation\n * to avoid laginess.\n */\nconst BLOCK_ANIMATION_THRESHOLD = 200;\n\nfunction getAbsolutePosition( element ) {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n}\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n * @param {string} $1.clientId\n */\nfunction useMovingAnimation( { triggerAnimationOnChange, clientId } ) {\n\tconst ref = useRef();\n\tconst {\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t\tisDraggingBlocks,\n\t} = useSelect( blockEditorStore );\n\n\t// Whenever the trigger changes, we need to take a snapshot of the current\n\t// position of the block to use it as a destination point for the animation.\n\tconst { previous, prevRect } = useMemo(\n\t\t() => ( {\n\t\t\tprevious: ref.current && getAbsolutePosition( ref.current ),\n\t\t\tprevRect: ref.current && ref.current.getBoundingClientRect(),\n\t\t} ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous || ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\t\tconst isSelected = isBlockSelected( clientId );\n\t\tconst adjustScrolling =\n\t\t\tisSelected || isFirstMultiSelectedBlock( clientId );\n\t\tconst isDragging = isDraggingBlocks();\n\n\t\tfunction preserveScrollPosition() {\n\t\t\t// The user already scrolled when dragging blocks.\n\t\t\tif ( isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( adjustScrolling && prevRect ) {\n\t\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\t\tif ( diff ) {\n\t\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We disable the animation if the user has a preference for reduced\n\t\t// motion, if the user is typing (insertion by Enter), or if the block\n\t\t// count exceeds the threshold (insertion caused all the blocks that\n\t\t// follow to animate).\n\t\t// To do: consider enableing the _moving_ animation even for large\n\t\t// posts, while only disabling the _insertion_ animation?\n\t\tconst disableAnimation =\n\t\t\twindow.matchMedia( '(prefers-reduced-motion: reduce)' ).matches ||\n\t\t\tisTyping() ||\n\t\t\tgetGlobalBlockCount() > BLOCK_ANIMATION_THRESHOLD;\n\n\t\tif ( disableAnimation ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPartOfSelection =\n\t\t\tisSelected ||\n\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\tisAncestorMultiSelected( clientId );\n\n\t\t// The user already dragged the blocks to the new position, so don't\n\t\t// animate the dragged blocks.\n\t\tif ( isPartOfSelection && isDragging ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure the other blocks move under the selected block(s).\n\t\tconst zIndex = isPartOfSelection ? '1' : '';\n\n\t\tconst controller = new Controller( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\t\tonChange( { value } ) {\n\t\t\t\tif ( ! ref.current ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet { x, y } = value;\n\t\t\t\tx = Math.round( x );\n\t\t\t\ty = Math.round( y );\n\t\t\t\tconst finishedMoving = x === 0 && y === 0;\n\t\t\t\tref.current.style.transformOrigin = 'center center';\n\t\t\t\tref.current.style.transform = finishedMoving\n\t\t\t\t\t? null // Set to `null` to explicitly remove the transform.\n\t\t\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\t\t\tref.current.style.zIndex = zIndex;\n\t\t\t\tpreserveScrollPosition();\n\t\t\t},\n\t\t} );\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\tconst x = Math.round( previous.left - destination.left );\n\t\tconst y = Math.round( previous.top - destination.top );\n\n\t\tcontroller.start( { x: 0, y: 0, from: { x, y } } );\n\n\t\treturn () => {\n\t\t\tcontroller.stop();\n\t\t\tcontroller.set( { x: 0, y: 0 } );\n\t\t};\n\t}, [\n\t\tprevious,\n\t\tprevRect,\n\t\tclientId,\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t\tisDraggingBlocks,\n\t] );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_web","require","_element","_dom","_data","_store","BLOCK_ANIMATION_THRESHOLD","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","triggerAnimationOnChange","clientId","ref","useRef","isTyping","getGlobalBlockCount","isBlockSelected","isFirstMultiSelectedBlock","isBlockMultiSelected","isAncestorMultiSelected","isDraggingBlocks","useSelect","blockEditorStore","previous","prevRect","useMemo","current","getBoundingClientRect","useLayoutEffect","scrollContainer","getScrollContainer","isSelected","adjustScrolling","isDragging","preserveScrollPosition","blockRect","diff","scrollTop","disableAnimation","window","matchMedia","matches","isPartOfSelection","zIndex","controller","Controller","x","y","config","mass","tension","friction","onChange","value","Math","round","finishedMoving","style","transformOrigin","transform","undefined","destination","start","from","stop","set","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Controller } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * If the block count exceeds the threshold, we disable the reordering animation\n * to avoid laginess.\n */\nconst BLOCK_ANIMATION_THRESHOLD = 200;\n\nfunction getAbsolutePosition( element ) {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n}\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n * @param {string} $1.clientId\n */\nfunction useMovingAnimation( { triggerAnimationOnChange, clientId } ) {\n\tconst ref = useRef();\n\tconst {\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t\tisDraggingBlocks,\n\t} = useSelect( blockEditorStore );\n\n\t// Whenever the trigger changes, we need to take a snapshot of the current\n\t// position of the block to use it as a destination point for the animation.\n\tconst { previous, prevRect } = useMemo(\n\t\t() => ( {\n\t\t\tprevious: ref.current && getAbsolutePosition( ref.current ),\n\t\t\tprevRect: ref.current && ref.current.getBoundingClientRect(),\n\t\t} ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous || ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\t\tconst isSelected = isBlockSelected( clientId );\n\t\tconst adjustScrolling =\n\t\t\tisSelected || isFirstMultiSelectedBlock( clientId );\n\t\tconst isDragging = isDraggingBlocks();\n\n\t\tfunction preserveScrollPosition() {\n\t\t\t// The user already scrolled when dragging blocks.\n\t\t\tif ( isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( adjustScrolling && prevRect ) {\n\t\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\t\tif ( diff ) {\n\t\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We disable the animation if the user has a preference for reduced\n\t\t// motion, if the user is typing (insertion by Enter), or if the block\n\t\t// count exceeds the threshold (insertion caused all the blocks that\n\t\t// follow to animate).\n\t\t// To do: consider enabling the _moving_ animation even for large\n\t\t// posts, while only disabling the _insertion_ animation?\n\t\tconst disableAnimation =\n\t\t\twindow.matchMedia( '(prefers-reduced-motion: reduce)' ).matches ||\n\t\t\tisTyping() ||\n\t\t\tgetGlobalBlockCount() > BLOCK_ANIMATION_THRESHOLD;\n\n\t\tif ( disableAnimation ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPartOfSelection =\n\t\t\tisSelected ||\n\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\tisAncestorMultiSelected( clientId );\n\n\t\t// The user already dragged the blocks to the new position, so don't\n\t\t// animate the dragged blocks.\n\t\tif ( isPartOfSelection && isDragging ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure the other blocks move under the selected block(s).\n\t\tconst zIndex = isPartOfSelection ? '1' : '';\n\n\t\tconst controller = new Controller( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\t\tonChange( { value } ) {\n\t\t\t\tif ( ! ref.current ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet { x, y } = value;\n\t\t\t\tx = Math.round( x );\n\t\t\t\ty = Math.round( y );\n\t\t\t\tconst finishedMoving = x === 0 && y === 0;\n\t\t\t\tref.current.style.transformOrigin = 'center center';\n\t\t\t\tref.current.style.transform = finishedMoving\n\t\t\t\t\t? null // Set to `null` to explicitly remove the transform.\n\t\t\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\t\t\tref.current.style.zIndex = zIndex;\n\t\t\t\tpreserveScrollPosition();\n\t\t\t},\n\t\t} );\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\tconst x = Math.round( previous.left - destination.left );\n\t\tconst y = Math.round( previous.top - destination.top );\n\n\t\tcontroller.start( { x: 0, y: 0, from: { x, y } } );\n\n\t\treturn () => {\n\t\t\tcontroller.stop();\n\t\t\tcontroller.set( { x: 0, y: 0 } );\n\t\t};\n\t}, [\n\t\tprevious,\n\t\tprevRect,\n\t\tclientId,\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t\tisDraggingBlocks,\n\t] );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ /* wp:polyfill */
1
2
  "use strict";
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -17,41 +18,59 @@ var _jsxRuntime = require("react/jsx-runtime");
17
18
  * Internal dependencies
18
19
  */
19
20
 
20
- function getComputedStyle(node) {
21
- return node.ownerDocument.defaultView.getComputedStyle(node);
21
+ function getComputedValue(node, property) {
22
+ return node.ownerDocument.defaultView.getComputedStyle(node).getPropertyValue(property);
23
+ }
24
+ function getBlockElementColors(blockEl) {
25
+ if (!blockEl) {
26
+ return {};
27
+ }
28
+ const firstLinkElement = blockEl.querySelector('a');
29
+ const linkColor = !!firstLinkElement?.innerText ? getComputedValue(firstLinkElement, 'color') : undefined;
30
+ const textColor = getComputedValue(blockEl, 'color');
31
+ let backgroundColorNode = blockEl;
32
+ let backgroundColor = getComputedValue(backgroundColorNode, 'background-color');
33
+ while (backgroundColor === 'rgba(0, 0, 0, 0)' && backgroundColorNode.parentNode && backgroundColorNode.parentNode.nodeType === backgroundColorNode.parentNode.ELEMENT_NODE) {
34
+ backgroundColorNode = backgroundColorNode.parentNode;
35
+ backgroundColor = getComputedValue(backgroundColorNode, 'background-color');
36
+ }
37
+ return {
38
+ textColor,
39
+ backgroundColor,
40
+ linkColor
41
+ };
42
+ }
43
+ function reducer(prevColors, newColors) {
44
+ const hasChanged = Object.keys(newColors).some(key => prevColors[key] !== newColors[key]);
45
+
46
+ // Do not re-render if the colors have not changed.
47
+ return hasChanged ? newColors : prevColors;
22
48
  }
23
49
  function BlockColorContrastChecker({
24
50
  clientId
25
51
  }) {
26
- const [detectedBackgroundColor, setDetectedBackgroundColor] = (0, _element.useState)();
27
- const [detectedColor, setDetectedColor] = (0, _element.useState)();
28
- const [detectedLinkColor, setDetectedLinkColor] = (0, _element.useState)();
29
52
  const blockEl = (0, _useBlockRefs.useBlockElement)(clientId);
53
+ const [colors, setColors] = (0, _element.useReducer)(reducer, {});
30
54
 
31
55
  // There are so many things that can change the color of a block
32
56
  // So we perform this check on every render.
33
- (0, _element.useEffect)(() => {
57
+ (0, _element.useLayoutEffect)(() => {
34
58
  if (!blockEl) {
35
59
  return;
36
60
  }
37
- setDetectedColor(getComputedStyle(blockEl).color);
38
- const firstLinkElement = blockEl.querySelector('a');
39
- if (firstLinkElement && !!firstLinkElement.innerText) {
40
- setDetectedLinkColor(getComputedStyle(firstLinkElement).color);
61
+ function updateColors() {
62
+ setColors(getBlockElementColors(blockEl));
41
63
  }
42
- let backgroundColorNode = blockEl;
43
- let backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;
44
- while (backgroundColor === 'rgba(0, 0, 0, 0)' && backgroundColorNode.parentNode && backgroundColorNode.parentNode.nodeType === backgroundColorNode.parentNode.ELEMENT_NODE) {
45
- backgroundColorNode = backgroundColorNode.parentNode;
46
- backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;
47
- }
48
- setDetectedBackgroundColor(backgroundColor);
49
- }, [blockEl]);
64
+
65
+ // Combine `useLayoutEffect` and two rAF calls to ensure that values are read
66
+ // after the current paint but before the next paint.
67
+ window.requestAnimationFrame(() => window.requestAnimationFrame(updateColors));
68
+ });
50
69
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_contrastChecker.default, {
51
- backgroundColor: detectedBackgroundColor,
52
- textColor: detectedColor,
53
- enableAlphaChecker: true,
54
- linkColor: detectedLinkColor
70
+ backgroundColor: colors.backgroundColor,
71
+ textColor: colors.textColor,
72
+ linkColor: colors.linkColor,
73
+ enableAlphaChecker: true
55
74
  });
56
75
  }
57
76
  //# sourceMappingURL=contrast-checker.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_contrastChecker","_interopRequireDefault","_useBlockRefs","_jsxRuntime","getComputedStyle","node","ownerDocument","defaultView","BlockColorContrastChecker","clientId","detectedBackgroundColor","setDetectedBackgroundColor","useState","detectedColor","setDetectedColor","detectedLinkColor","setDetectedLinkColor","blockEl","useBlockElement","useEffect","color","firstLinkElement","querySelector","innerText","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","jsx","default","textColor","enableAlphaChecker","linkColor"],"sources":["@wordpress/block-editor/src/hooks/contrast-checker.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ContrastChecker from '../components/contrast-checker';\nimport { useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport default function BlockColorContrastChecker( { clientId } ) {\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst [ detectedLinkColor, setDetectedLinkColor ] = useState();\n\tconst blockEl = useBlockElement( clientId );\n\n\t// There are so many things that can change the color of a block\n\t// So we perform this check on every render.\n\tuseEffect( () => {\n\t\tif ( ! blockEl ) {\n\t\t\treturn;\n\t\t}\n\t\tsetDetectedColor( getComputedStyle( blockEl ).color );\n\n\t\tconst firstLinkElement = blockEl.querySelector( 'a' );\n\t\tif ( firstLinkElement && !! firstLinkElement.innerText ) {\n\t\t\tsetDetectedLinkColor( getComputedStyle( firstLinkElement ).color );\n\t\t}\n\n\t\tlet backgroundColorNode = blockEl;\n\t\tlet backgroundColor =\n\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\twhile (\n\t\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\t\tbackgroundColorNode.parentNode &&\n\t\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t\t) {\n\t\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\t\tbackgroundColor =\n\t\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\t}\n\n\t\tsetDetectedBackgroundColor( backgroundColor );\n\t}, [ blockEl ] );\n\n\treturn (\n\t\t<ContrastChecker\n\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\ttextColor={ detectedColor }\n\t\t\tenableAlphaChecker\n\t\t\tlinkColor={ detectedLinkColor }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAA0F,IAAAI,WAAA,GAAAJ,OAAA;AAT1F;AACA;AACA;;AAGA;AACA;AACA;;AAIA,SAASK,gBAAgBA,CAAEC,IAAI,EAAG;EACjC,OAAOA,IAAI,CAACC,aAAa,CAACC,WAAW,CAACH,gBAAgB,CAAEC,IAAK,CAAC;AAC/D;AAEe,SAASG,yBAAyBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACjE,MAAM,CAAEC,uBAAuB,EAAEC,0BAA0B,CAAE,GAAG,IAAAC,iBAAQ,EAAC,CAAC;EAC1E,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAF,iBAAQ,EAAC,CAAC;EACtD,MAAM,CAAEG,iBAAiB,EAAEC,oBAAoB,CAAE,GAAG,IAAAJ,iBAAQ,EAAC,CAAC;EAC9D,MAAMK,OAAO,GAAG,IAAAC,6BAAe,EAAET,QAAS,CAAC;;EAE3C;EACA;EACA,IAAAU,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAEF,OAAO,EAAG;MAChB;IACD;IACAH,gBAAgB,CAAEV,gBAAgB,CAAEa,OAAQ,CAAC,CAACG,KAAM,CAAC;IAErD,MAAMC,gBAAgB,GAAGJ,OAAO,CAACK,aAAa,CAAE,GAAI,CAAC;IACrD,IAAKD,gBAAgB,IAAI,CAAC,CAAEA,gBAAgB,CAACE,SAAS,EAAG;MACxDP,oBAAoB,CAAEZ,gBAAgB,CAAEiB,gBAAiB,CAAC,CAACD,KAAM,CAAC;IACnE;IAEA,IAAII,mBAAmB,GAAGP,OAAO;IACjC,IAAIQ,eAAe,GAClBrB,gBAAgB,CAAEoB,mBAAoB,CAAC,CAACC,eAAe;IACxD,OACCA,eAAe,KAAK,kBAAkB,IACtCD,mBAAmB,CAACE,UAAU,IAC9BF,mBAAmB,CAACE,UAAU,CAACC,QAAQ,KACtCH,mBAAmB,CAACE,UAAU,CAACE,YAAY,EAC3C;MACDJ,mBAAmB,GAAGA,mBAAmB,CAACE,UAAU;MACpDD,eAAe,GACdrB,gBAAgB,CAAEoB,mBAAoB,CAAC,CAACC,eAAe;IACzD;IAEAd,0BAA0B,CAAEc,eAAgB,CAAC;EAC9C,CAAC,EAAE,CAAER,OAAO,CAAG,CAAC;EAEhB,oBACC,IAAAd,WAAA,CAAA0B,GAAA,EAAC7B,gBAAA,CAAA8B,OAAe;IACfL,eAAe,EAAGf,uBAAyB;IAC3CqB,SAAS,EAAGlB,aAAe;IAC3BmB,kBAAkB;IAClBC,SAAS,EAAGlB;EAAmB,CAC/B,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_contrastChecker","_interopRequireDefault","_useBlockRefs","_jsxRuntime","getComputedValue","node","property","ownerDocument","defaultView","getComputedStyle","getPropertyValue","getBlockElementColors","blockEl","firstLinkElement","querySelector","linkColor","innerText","undefined","textColor","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","reducer","prevColors","newColors","hasChanged","Object","keys","some","key","BlockColorContrastChecker","clientId","useBlockElement","colors","setColors","useReducer","useLayoutEffect","updateColors","window","requestAnimationFrame","jsx","default","enableAlphaChecker"],"sources":["@wordpress/block-editor/src/hooks/contrast-checker.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useReducer } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ContrastChecker from '../components/contrast-checker';\nimport { useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedValue( node, property ) {\n\treturn node.ownerDocument.defaultView\n\t\t.getComputedStyle( node )\n\t\t.getPropertyValue( property );\n}\n\nfunction getBlockElementColors( blockEl ) {\n\tif ( ! blockEl ) {\n\t\treturn {};\n\t}\n\n\tconst firstLinkElement = blockEl.querySelector( 'a' );\n\tconst linkColor = !! firstLinkElement?.innerText\n\t\t? getComputedValue( firstLinkElement, 'color' )\n\t\t: undefined;\n\n\tconst textColor = getComputedValue( blockEl, 'color' );\n\n\tlet backgroundColorNode = blockEl;\n\tlet backgroundColor = getComputedValue(\n\t\tbackgroundColorNode,\n\t\t'background-color'\n\t);\n\twhile (\n\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\tbackgroundColorNode.parentNode &&\n\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t) {\n\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\tbackgroundColor = getComputedValue(\n\t\t\tbackgroundColorNode,\n\t\t\t'background-color'\n\t\t);\n\t}\n\n\treturn {\n\t\ttextColor,\n\t\tbackgroundColor,\n\t\tlinkColor,\n\t};\n}\n\nfunction reducer( prevColors, newColors ) {\n\tconst hasChanged = Object.keys( newColors ).some(\n\t\t( key ) => prevColors[ key ] !== newColors[ key ]\n\t);\n\n\t// Do not re-render if the colors have not changed.\n\treturn hasChanged ? newColors : prevColors;\n}\n\nexport default function BlockColorContrastChecker( { clientId } ) {\n\tconst blockEl = useBlockElement( clientId );\n\tconst [ colors, setColors ] = useReducer( reducer, {} );\n\n\t// There are so many things that can change the color of a block\n\t// So we perform this check on every render.\n\tuseLayoutEffect( () => {\n\t\tif ( ! blockEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction updateColors() {\n\t\t\tsetColors( getBlockElementColors( blockEl ) );\n\t\t}\n\n\t\t// Combine `useLayoutEffect` and two rAF calls to ensure that values are read\n\t\t// after the current paint but before the next paint.\n\t\twindow.requestAnimationFrame( () =>\n\t\t\twindow.requestAnimationFrame( updateColors )\n\t\t);\n\t} );\n\n\treturn (\n\t\t<ContrastChecker\n\t\t\tbackgroundColor={ colors.backgroundColor }\n\t\t\ttextColor={ colors.textColor }\n\t\t\tlinkColor={ colors.linkColor }\n\t\t\tenableAlphaChecker\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAA0F,IAAAI,WAAA,GAAAJ,OAAA;AAT1F;AACA;AACA;;AAGA;AACA;AACA;;AAIA,SAASK,gBAAgBA,CAAEC,IAAI,EAAEC,QAAQ,EAAG;EAC3C,OAAOD,IAAI,CAACE,aAAa,CAACC,WAAW,CACnCC,gBAAgB,CAAEJ,IAAK,CAAC,CACxBK,gBAAgB,CAAEJ,QAAS,CAAC;AAC/B;AAEA,SAASK,qBAAqBA,CAAEC,OAAO,EAAG;EACzC,IAAK,CAAEA,OAAO,EAAG;IAChB,OAAO,CAAC,CAAC;EACV;EAEA,MAAMC,gBAAgB,GAAGD,OAAO,CAACE,aAAa,CAAE,GAAI,CAAC;EACrD,MAAMC,SAAS,GAAG,CAAC,CAAEF,gBAAgB,EAAEG,SAAS,GAC7CZ,gBAAgB,CAAES,gBAAgB,EAAE,OAAQ,CAAC,GAC7CI,SAAS;EAEZ,MAAMC,SAAS,GAAGd,gBAAgB,CAAEQ,OAAO,EAAE,OAAQ,CAAC;EAEtD,IAAIO,mBAAmB,GAAGP,OAAO;EACjC,IAAIQ,eAAe,GAAGhB,gBAAgB,CACrCe,mBAAmB,EACnB,kBACD,CAAC;EACD,OACCC,eAAe,KAAK,kBAAkB,IACtCD,mBAAmB,CAACE,UAAU,IAC9BF,mBAAmB,CAACE,UAAU,CAACC,QAAQ,KACtCH,mBAAmB,CAACE,UAAU,CAACE,YAAY,EAC3C;IACDJ,mBAAmB,GAAGA,mBAAmB,CAACE,UAAU;IACpDD,eAAe,GAAGhB,gBAAgB,CACjCe,mBAAmB,EACnB,kBACD,CAAC;EACF;EAEA,OAAO;IACND,SAAS;IACTE,eAAe;IACfL;EACD,CAAC;AACF;AAEA,SAASS,OAAOA,CAAEC,UAAU,EAAEC,SAAS,EAAG;EACzC,MAAMC,UAAU,GAAGC,MAAM,CAACC,IAAI,CAAEH,SAAU,CAAC,CAACI,IAAI,CAC7CC,GAAG,IAAMN,UAAU,CAAEM,GAAG,CAAE,KAAKL,SAAS,CAAEK,GAAG,CAChD,CAAC;;EAED;EACA,OAAOJ,UAAU,GAAGD,SAAS,GAAGD,UAAU;AAC3C;AAEe,SAASO,yBAAyBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACjE,MAAMrB,OAAO,GAAG,IAAAsB,6BAAe,EAAED,QAAS,CAAC;EAC3C,MAAM,CAAEE,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,mBAAU,EAAEb,OAAO,EAAE,CAAC,CAAE,CAAC;;EAEvD;EACA;EACA,IAAAc,wBAAe,EAAE,MAAM;IACtB,IAAK,CAAE1B,OAAO,EAAG;MAChB;IACD;IAEA,SAAS2B,YAAYA,CAAA,EAAG;MACvBH,SAAS,CAAEzB,qBAAqB,CAAEC,OAAQ,CAAE,CAAC;IAC9C;;IAEA;IACA;IACA4B,MAAM,CAACC,qBAAqB,CAAE,MAC7BD,MAAM,CAACC,qBAAqB,CAAEF,YAAa,CAC5C,CAAC;EACF,CAAE,CAAC;EAEH,oBACC,IAAApC,WAAA,CAAAuC,GAAA,EAAC1C,gBAAA,CAAA2C,OAAe;IACfvB,eAAe,EAAGe,MAAM,CAACf,eAAiB;IAC1CF,SAAS,EAAGiB,MAAM,CAACjB,SAAW;IAC9BH,SAAS,EAAGoB,MAAM,CAACpB,SAAW;IAC9B6B,kBAAkB;EAAA,CAClB,CAAC;AAEJ","ignoreList":[]}
@@ -120,7 +120,8 @@ function addTransforms(result, source, index, results) {
120
120
  // if source N does not exists we do nothing.
121
121
  if (source[index]) {
122
122
  const originClassName = source[index]?.attributes.className;
123
- if (originClassName) {
123
+ // Avoid overriding classes if the transformed block already includes them.
124
+ if (originClassName && result.attributes.className === undefined) {
124
125
  return {
125
126
  ...result,
126
127
  attributes: {
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_hooks","_components","_i18n","_blocks","_components2","_blockEditingMode","_jsxRuntime","addAttribute","settings","hasBlockSupport","attributes","className","type","CustomClassNameControlsPure","setAttributes","blockEditingMode","useBlockEditingMode","jsx","InspectorControls","group","children","TextControl","__nextHasNoMarginBottom","__next40pxDefaultSize","autoComplete","label","__","value","onChange","nextValue","undefined","help","_default","exports","default","edit","addSaveProps","attributeKeys","hasSupport","name","extraProps","blockType","clsx","addTransforms","result","source","index","results","length","innerBlocks","originClassName","addFilter"],"sources":["@wordpress/block-editor/src/hooks/custom-class-name.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { TextControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\n/**\n * Filters registered block settings, extending attributes to include `className`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( hasBlockSupport( settings, 'customClassName', true ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tclassName: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\nfunction CustomClassNameControlsPure( { className, setAttributes } ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<TextControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tlabel={ __( 'Additional CSS class(es)' ) }\n\t\t\t\tvalue={ className || '' }\n\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tclassName: nextValue !== '' ? nextValue : undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\thelp={ __( 'Separate multiple classes with spaces.' ) }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default {\n\tedit: CustomClassNameControlsPure,\n\taddSaveProps,\n\tattributeKeys: [ 'className' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'customClassName', true );\n\t},\n};\n\n/**\n * Override props assigned to save component to inject the className, if block\n * supports customClassName. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( extraProps, blockType, attributes ) {\n\tif (\n\t\thasBlockSupport( blockType, 'customClassName', true ) &&\n\t\tattributes.className\n\t) {\n\t\textraProps.className = clsx(\n\t\t\textraProps.className,\n\t\t\tattributes.className\n\t\t);\n\t}\n\n\treturn extraProps;\n}\n\nexport function addTransforms( result, source, index, results ) {\n\tif ( ! hasBlockSupport( result.name, 'customClassName', true ) ) {\n\t\treturn result;\n\t}\n\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the class should not be kept.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\n\t// If we are transforming one block to multiple blocks or multiple blocks to one block,\n\t// we ignore the class during the transform.\n\tif (\n\t\t( results.length === 1 && source.length > 1 ) ||\n\t\t( results.length > 1 && source.length === 1 )\n\t) {\n\t\treturn result;\n\t}\n\n\t// If we are in presence of transform between one or more block in the source\n\t// that have one or more blocks in the result\n\t// we apply the class on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( source[ index ] ) {\n\t\tconst originClassName = source[ index ]?.attributes.className;\n\t\tif ( originClassName ) {\n\t\t\treturn {\n\t\t\t\t...result,\n\t\t\t\tattributes: {\n\t\t\t\t\t...result.attributes,\n\t\t\t\t\tclassName: originClassName,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\treturn result;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/custom-class-name/attribute',\n\taddAttribute\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/color/addTransforms',\n\taddTransforms\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_hooks","_components","_i18n","_blocks","_components2","_blockEditingMode","_jsxRuntime","addAttribute","settings","hasBlockSupport","attributes","className","type","CustomClassNameControlsPure","setAttributes","blockEditingMode","useBlockEditingMode","jsx","InspectorControls","group","children","TextControl","__nextHasNoMarginBottom","__next40pxDefaultSize","autoComplete","label","__","value","onChange","nextValue","undefined","help","_default","exports","default","edit","addSaveProps","attributeKeys","hasSupport","name","extraProps","blockType","clsx","addTransforms","result","source","index","results","length","innerBlocks","originClassName","addFilter"],"sources":["@wordpress/block-editor/src/hooks/custom-class-name.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { TextControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\n/**\n * Filters registered block settings, extending attributes to include `className`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( hasBlockSupport( settings, 'customClassName', true ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tclassName: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\nfunction CustomClassNameControlsPure( { className, setAttributes } ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<TextControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tlabel={ __( 'Additional CSS class(es)' ) }\n\t\t\t\tvalue={ className || '' }\n\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tclassName: nextValue !== '' ? nextValue : undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\thelp={ __( 'Separate multiple classes with spaces.' ) }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default {\n\tedit: CustomClassNameControlsPure,\n\taddSaveProps,\n\tattributeKeys: [ 'className' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'customClassName', true );\n\t},\n};\n\n/**\n * Override props assigned to save component to inject the className, if block\n * supports customClassName. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( extraProps, blockType, attributes ) {\n\tif (\n\t\thasBlockSupport( blockType, 'customClassName', true ) &&\n\t\tattributes.className\n\t) {\n\t\textraProps.className = clsx(\n\t\t\textraProps.className,\n\t\t\tattributes.className\n\t\t);\n\t}\n\n\treturn extraProps;\n}\n\nexport function addTransforms( result, source, index, results ) {\n\tif ( ! hasBlockSupport( result.name, 'customClassName', true ) ) {\n\t\treturn result;\n\t}\n\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the class should not be kept.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\n\t// If we are transforming one block to multiple blocks or multiple blocks to one block,\n\t// we ignore the class during the transform.\n\tif (\n\t\t( results.length === 1 && source.length > 1 ) ||\n\t\t( results.length > 1 && source.length === 1 )\n\t) {\n\t\treturn result;\n\t}\n\n\t// If we are in presence of transform between one or more block in the source\n\t// that have one or more blocks in the result\n\t// we apply the class on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( source[ index ] ) {\n\t\tconst originClassName = source[ index ]?.attributes.className;\n\t\t// Avoid overriding classes if the transformed block already includes them.\n\t\tif ( originClassName && result.attributes.className === undefined ) {\n\t\t\treturn {\n\t\t\t\t...result,\n\t\t\t\tattributes: {\n\t\t\t\t\t...result.attributes,\n\t\t\t\t\tclassName: originClassName,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\treturn result;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/custom-class-name/attribute',\n\taddAttribute\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/color/addTransforms',\n\taddTransforms\n);\n"],"mappings":";;;;;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAKA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAAuE,IAAAO,WAAA,GAAAP,OAAA;AAjBvE;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,YAAYA,CAAEC,QAAQ,EAAG;EACxC,IAAK,IAAAC,uBAAe,EAAED,QAAQ,EAAE,iBAAiB,EAAE,IAAK,CAAC,EAAG;IAC3D;IACAA,QAAQ,CAACE,UAAU,GAAG;MACrB,GAAGF,QAAQ,CAACE,UAAU;MACtBC,SAAS,EAAE;QACVC,IAAI,EAAE;MACP;IACD,CAAC;EACF;EAEA,OAAOJ,QAAQ;AAChB;AAEA,SAASK,2BAA2BA,CAAE;EAAEF,SAAS;EAAEG;AAAc,CAAC,EAAG;EACpE,MAAMC,gBAAgB,GAAG,IAAAC,qCAAmB,EAAC,CAAC;EAC9C,IAAKD,gBAAgB,KAAK,SAAS,EAAG;IACrC,OAAO,IAAI;EACZ;EAEA,oBACC,IAAAT,WAAA,CAAAW,GAAA,EAACb,YAAA,CAAAc,iBAAiB;IAACC,KAAK,EAAC,UAAU;IAAAC,QAAA,eAClC,IAAAd,WAAA,CAAAW,GAAA,EAAChB,WAAA,CAAAoB,WAAW;MACXC,uBAAuB;MACvBC,qBAAqB;MACrBC,YAAY,EAAC,KAAK;MAClBC,KAAK,EAAG,IAAAC,QAAE,EAAE,0BAA2B,CAAG;MAC1CC,KAAK,EAAGhB,SAAS,IAAI,EAAI;MACzBiB,QAAQ,EAAKC,SAAS,IAAM;QAC3Bf,aAAa,CAAE;UACdH,SAAS,EAAEkB,SAAS,KAAK,EAAE,GAAGA,SAAS,GAAGC;QAC3C,CAAE,CAAC;MACJ,CAAG;MACHC,IAAI,EAAG,IAAAL,QAAE,EAAE,wCAAyC;IAAG,CACvD;EAAC,CACgB,CAAC;AAEtB;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdC,IAAI,EAAEtB,2BAA2B;EACjCuB,YAAY;EACZC,aAAa,EAAE,CAAE,WAAW,CAAE;EAC9BC,UAAUA,CAAEC,IAAI,EAAG;IAClB,OAAO,IAAA9B,uBAAe,EAAE8B,IAAI,EAAE,iBAAiB,EAAE,IAAK,CAAC;EACxD;AACD,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASH,YAAYA,CAAEI,UAAU,EAAEC,SAAS,EAAE/B,UAAU,EAAG;EACjE,IACC,IAAAD,uBAAe,EAAEgC,SAAS,EAAE,iBAAiB,EAAE,IAAK,CAAC,IACrD/B,UAAU,CAACC,SAAS,EACnB;IACD6B,UAAU,CAAC7B,SAAS,GAAG,IAAA+B,aAAI,EAC1BF,UAAU,CAAC7B,SAAS,EACpBD,UAAU,CAACC,SACZ,CAAC;EACF;EAEA,OAAO6B,UAAU;AAClB;AAEO,SAASG,aAAaA,CAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAG;EAC/D,IAAK,CAAE,IAAAtC,uBAAe,EAAEmC,MAAM,CAACL,IAAI,EAAE,iBAAiB,EAAE,IAAK,CAAC,EAAG;IAChE,OAAOK,MAAM;EACd;;EAEA;EACA;EACA,IAAKG,OAAO,CAACC,MAAM,KAAK,CAAC,IAAIJ,MAAM,CAACK,WAAW,CAACD,MAAM,KAAKH,MAAM,CAACG,MAAM,EAAG;IAC1E,OAAOJ,MAAM;EACd;;EAEA;EACA;EACA,IACGG,OAAO,CAACC,MAAM,KAAK,CAAC,IAAIH,MAAM,CAACG,MAAM,GAAG,CAAC,IACzCD,OAAO,CAACC,MAAM,GAAG,CAAC,IAAIH,MAAM,CAACG,MAAM,KAAK,CAAG,EAC5C;IACD,OAAOJ,MAAM;EACd;;EAEA;EACA;EACA;EACA;EACA,IAAKC,MAAM,CAAEC,KAAK,CAAE,EAAG;IACtB,MAAMI,eAAe,GAAGL,MAAM,CAAEC,KAAK,CAAE,EAAEpC,UAAU,CAACC,SAAS;IAC7D;IACA,IAAKuC,eAAe,IAAIN,MAAM,CAAClC,UAAU,CAACC,SAAS,KAAKmB,SAAS,EAAG;MACnE,OAAO;QACN,GAAGc,MAAM;QACTlC,UAAU,EAAE;UACX,GAAGkC,MAAM,CAAClC,UAAU;UACpBC,SAAS,EAAEuC;QACZ;MACD,CAAC;IACF;EACD;EACA,OAAON,MAAM;AACd;AAEA,IAAAO,gBAAS,EACR,0BAA0B,EAC1B,yCAAyC,EACzC5C,YACD,CAAC;AAED,IAAA4C,gBAAS,EACR,2CAA2C,EAC3C,0BAA0B,EAC1BR,aACD,CAAC","ignoreList":[]}
@@ -1106,7 +1106,7 @@ const mergeBlocks = (firstBlockClientId, secondBlockClientId) => ({
1106
1106
  const canRestoreTextSelection = (clientId === clientIdA || clientId === clientIdB) && attributeKey !== undefined && offset !== undefined &&
1107
1107
  // We cannot restore text selection if the RichText identifier
1108
1108
  // is not a defined block attribute key. This can be the case if the
1109
- // fallback intance ID is used to store selection (and no RichText
1109
+ // fallback instance ID is used to store selection (and no RichText
1110
1110
  // identifier is set), or when the identifier is wrong.
1111
1111
  !!attributeDefinition;
1112
1112
  if (!attributeDefinition) {