@wordpress/components 23.1.0 → 23.2.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 (280) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE.md +1 -1
  3. package/build/color-picker/component.js +1 -0
  4. package/build/color-picker/component.js.map +1 -1
  5. package/build/color-picker/styles.js +8 -10
  6. package/build/color-picker/styles.js.map +1 -1
  7. package/build/combobox-control/index.js +5 -1
  8. package/build/combobox-control/index.js.map +1 -1
  9. package/build/focal-point-picker/utils.js +1 -1
  10. package/build/focal-point-picker/utils.js.map +1 -1
  11. package/build/index.js +7 -17
  12. package/build/index.js.map +1 -1
  13. package/build/index.native.js +8 -18
  14. package/build/index.native.js.map +1 -1
  15. package/build/item-group/item/component.js +27 -3
  16. package/build/item-group/item/component.js.map +1 -1
  17. package/build/item-group/item-group/component.js +26 -3
  18. package/build/item-group/item-group/component.js.map +1 -1
  19. package/build/item-group/styles.js +14 -14
  20. package/build/item-group/styles.js.map +1 -1
  21. package/build/panel/row.js +5 -3
  22. package/build/panel/row.js.map +1 -1
  23. package/build/query-controls/index.js +1 -0
  24. package/build/query-controls/index.js.map +1 -1
  25. package/build/resizable-box/index.js +5 -4
  26. package/build/resizable-box/index.js.map +1 -1
  27. package/build/responsive-wrapper/index.js +18 -1
  28. package/build/responsive-wrapper/index.js.map +1 -1
  29. package/build/responsive-wrapper/types.js +6 -0
  30. package/build/responsive-wrapper/types.js.map +1 -0
  31. package/build/sandbox/index.js +35 -24
  32. package/build/sandbox/index.js.map +1 -1
  33. package/build/sandbox/types.js +6 -0
  34. package/build/sandbox/types.js.map +1 -0
  35. package/build/tab-panel/index.js +10 -5
  36. package/build/tab-panel/index.js.map +1 -1
  37. package/build/toolbar/index.js +42 -60
  38. package/build/toolbar/index.js.map +1 -1
  39. package/build/toolbar/toolbar/index.js +74 -0
  40. package/build/toolbar/toolbar/index.js.map +1 -0
  41. package/build/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  42. package/build/toolbar/toolbar/toolbar-container.js.map +1 -0
  43. package/build/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  44. package/build/toolbar/toolbar/toolbar-container.native.js.map +1 -0
  45. package/build/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  46. package/build/toolbar/toolbar-button/index.js.map +1 -0
  47. package/build/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  48. package/build/toolbar/toolbar-button/toolbar-button-container.js.map +1 -0
  49. package/build/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  50. package/build/toolbar/toolbar-button/toolbar-button-container.native.js.map +1 -0
  51. package/build/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  52. package/build/toolbar/toolbar-context/index.js.map +1 -0
  53. package/build/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  54. package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -0
  55. package/build/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  56. package/build/toolbar/toolbar-group/index.js.map +1 -0
  57. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  58. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -0
  59. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  60. package/build/toolbar/toolbar-group/toolbar-group-collapsed.native.js.map +1 -0
  61. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  62. package/build/toolbar/toolbar-group/toolbar-group-container.js.map +1 -0
  63. package/build/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  64. package/build/toolbar/toolbar-group/toolbar-group-container.native.js.map +1 -0
  65. package/build/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  66. package/build/toolbar/toolbar-item/index.js.map +1 -0
  67. package/build/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  68. package/build/toolbar/toolbar-item/index.native.js.map +1 -0
  69. package/build/tree-grid/index.js +3 -3
  70. package/build/tree-grid/index.js.map +1 -1
  71. package/build-module/color-picker/component.js +1 -0
  72. package/build-module/color-picker/component.js.map +1 -1
  73. package/build-module/color-picker/styles.js +8 -9
  74. package/build-module/color-picker/styles.js.map +1 -1
  75. package/build-module/combobox-control/index.js +5 -1
  76. package/build-module/combobox-control/index.js.map +1 -1
  77. package/build-module/focal-point-picker/utils.js +1 -1
  78. package/build-module/focal-point-picker/utils.js.map +1 -1
  79. package/build-module/index.js +1 -6
  80. package/build-module/index.js.map +1 -1
  81. package/build-module/index.native.js +1 -6
  82. package/build-module/index.native.js.map +1 -1
  83. package/build-module/item-group/item/component.js +26 -2
  84. package/build-module/item-group/item/component.js.map +1 -1
  85. package/build-module/item-group/item-group/component.js +25 -2
  86. package/build-module/item-group/item-group/component.js.map +1 -1
  87. package/build-module/item-group/styles.js +14 -14
  88. package/build-module/item-group/styles.js.map +1 -1
  89. package/build-module/panel/row.js +5 -3
  90. package/build-module/panel/row.js.map +1 -1
  91. package/build-module/query-controls/index.js +1 -0
  92. package/build-module/query-controls/index.js.map +1 -1
  93. package/build-module/resizable-box/index.js +3 -2
  94. package/build-module/resizable-box/index.js.map +1 -1
  95. package/build-module/responsive-wrapper/index.js +20 -1
  96. package/build-module/responsive-wrapper/index.js.map +1 -1
  97. package/build-module/responsive-wrapper/types.js +2 -0
  98. package/build-module/responsive-wrapper/types.js.map +1 -0
  99. package/build-module/sandbox/index.js +37 -23
  100. package/build-module/sandbox/index.js.map +1 -1
  101. package/build-module/sandbox/types.js +2 -0
  102. package/build-module/sandbox/types.js.map +1 -0
  103. package/build-module/tab-panel/index.js +10 -5
  104. package/build-module/tab-panel/index.js.map +1 -1
  105. package/build-module/toolbar/index.js +6 -58
  106. package/build-module/toolbar/index.js.map +1 -1
  107. package/build-module/toolbar/toolbar/index.js +59 -0
  108. package/build-module/toolbar/toolbar/index.js.map +1 -0
  109. package/build-module/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  110. package/{build → build-module/toolbar}/toolbar/toolbar-container.js.map +1 -1
  111. package/build-module/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  112. package/build-module/toolbar/toolbar/toolbar-container.native.js.map +1 -0
  113. package/build-module/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  114. package/build-module/toolbar/toolbar-button/index.js.map +1 -0
  115. package/build-module/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  116. package/build-module/toolbar/toolbar-button/toolbar-button-container.js.map +1 -0
  117. package/build-module/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  118. package/build-module/toolbar/toolbar-button/toolbar-button-container.native.js.map +1 -0
  119. package/build-module/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  120. package/build-module/toolbar/toolbar-context/index.js.map +1 -0
  121. package/build-module/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  122. package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -0
  123. package/build-module/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  124. package/build-module/toolbar/toolbar-group/index.js.map +1 -0
  125. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  126. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -0
  127. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  128. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.native.js.map +1 -0
  129. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  130. package/build-module/toolbar/toolbar-group/toolbar-group-container.js.map +1 -0
  131. package/build-module/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  132. package/build-module/toolbar/toolbar-group/toolbar-group-container.native.js.map +1 -0
  133. package/build-module/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  134. package/build-module/toolbar/toolbar-item/index.js.map +1 -0
  135. package/build-module/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  136. package/build-module/toolbar/toolbar-item/index.native.js.map +1 -0
  137. package/build-module/tree-grid/index.js +3 -3
  138. package/build-module/tree-grid/index.js.map +1 -1
  139. package/build-style/style-rtl.css +1 -1
  140. package/build-style/style.css +1 -1
  141. package/build-types/color-picker/component.d.ts.map +1 -1
  142. package/build-types/color-picker/styles.d.ts.map +1 -1
  143. package/build-types/dashicon/types.d.ts +0 -4
  144. package/build-types/dashicon/types.d.ts.map +1 -1
  145. package/build-types/focal-point-picker/utils.d.ts.map +1 -1
  146. package/build-types/item-group/item/component.d.ts +24 -2
  147. package/build-types/item-group/item/component.d.ts.map +1 -1
  148. package/build-types/item-group/item-group/component.d.ts +23 -2
  149. package/build-types/item-group/item-group/component.d.ts.map +1 -1
  150. package/build-types/item-group/stories/index.d.ts +15 -0
  151. package/build-types/item-group/stories/index.d.ts.map +1 -0
  152. package/build-types/item-group/styles.d.ts.map +1 -1
  153. package/build-types/radio-context/index.d.ts +6 -0
  154. package/build-types/radio-context/index.d.ts.map +1 -0
  155. package/build-types/resizable-box/index.d.ts +6 -7
  156. package/build-types/resizable-box/index.d.ts.map +1 -1
  157. package/build-types/resizable-box/stories/index.d.ts +61 -0
  158. package/build-types/resizable-box/stories/index.d.ts.map +1 -0
  159. package/build-types/responsive-wrapper/index.d.ts +24 -0
  160. package/build-types/responsive-wrapper/index.d.ts.map +1 -0
  161. package/build-types/responsive-wrapper/stories/index.d.ts +12 -0
  162. package/build-types/responsive-wrapper/stories/index.d.ts.map +1 -0
  163. package/build-types/responsive-wrapper/types.d.ts +22 -0
  164. package/build-types/responsive-wrapper/types.d.ts.map +1 -0
  165. package/build-types/sandbox/index.d.ts +19 -0
  166. package/build-types/sandbox/index.d.ts.map +1 -0
  167. package/build-types/sandbox/stories/index.d.ts +12 -0
  168. package/build-types/sandbox/stories/index.d.ts.map +1 -0
  169. package/build-types/sandbox/test/index.d.ts +2 -0
  170. package/build-types/sandbox/test/index.d.ts.map +1 -0
  171. package/build-types/sandbox/types.d.ts +36 -0
  172. package/build-types/sandbox/types.d.ts.map +1 -0
  173. package/build-types/tab-panel/index.d.ts.map +1 -1
  174. package/build-types/tab-panel/stories/index.d.ts +1 -0
  175. package/build-types/tab-panel/stories/index.d.ts.map +1 -1
  176. package/build-types/tab-panel/types.d.ts +10 -4
  177. package/build-types/tab-panel/types.d.ts.map +1 -1
  178. package/package.json +17 -17
  179. package/src/color-picker/component.tsx +1 -0
  180. package/src/color-picker/stories/index.js +20 -60
  181. package/src/color-picker/styles.ts +0 -5
  182. package/src/combobox-control/index.js +9 -1
  183. package/src/dashicon/types.ts +0 -6
  184. package/src/focal-point-picker/stories/index.tsx +1 -1
  185. package/src/focal-point-picker/utils.ts +4 -1
  186. package/src/guide/stories/index.js +14 -41
  187. package/src/index.js +8 -6
  188. package/src/index.native.js +8 -6
  189. package/src/item-group/item/component.tsx +26 -2
  190. package/src/item-group/item-group/component.tsx +25 -2
  191. package/src/item-group/stories/index.tsx +103 -0
  192. package/src/item-group/styles.ts +1 -0
  193. package/src/item-group/test/__snapshots__/index.js.snap +11 -10
  194. package/src/notice/stories/index.js +30 -58
  195. package/src/panel/row.js +3 -3
  196. package/src/panel/stories/index.js +62 -80
  197. package/src/placeholder/style.scss +1 -1
  198. package/src/query-controls/index.js +1 -0
  199. package/src/resizable-box/README.md +2 -2
  200. package/src/resizable-box/index.tsx +7 -6
  201. package/src/resizable-box/stories/index.tsx +92 -0
  202. package/src/responsive-wrapper/README.md +29 -0
  203. package/src/responsive-wrapper/{index.js → index.tsx} +23 -2
  204. package/src/responsive-wrapper/stories/index.tsx +38 -0
  205. package/src/responsive-wrapper/types.ts +20 -0
  206. package/src/sandbox/README.md +45 -2
  207. package/src/sandbox/{index.js → index.tsx} +47 -24
  208. package/src/sandbox/stories/index.tsx +32 -0
  209. package/src/sandbox/test/{index.js → index.tsx} +9 -4
  210. package/src/sandbox/types.ts +34 -0
  211. package/src/slot-fill/stories/index.js +12 -17
  212. package/src/style.scss +3 -3
  213. package/src/tab-panel/README.md +1 -0
  214. package/src/tab-panel/index.tsx +19 -5
  215. package/src/tab-panel/stories/index.tsx +20 -0
  216. package/src/tab-panel/test/index.tsx +89 -0
  217. package/src/tab-panel/types.ts +10 -4
  218. package/src/toolbar/index.js +6 -52
  219. package/src/toolbar/stories/index.js +2 -9
  220. package/src/{toolbar-button/stories/index.js → toolbar/stories/toolbar-button.js} +1 -2
  221. package/src/{toolbar-group/stories/index.js → toolbar/stories/toolbar-group.js} +1 -1
  222. package/src/toolbar/test/index.js +1 -2
  223. package/src/{toolbar-group/test/index.js → toolbar/test/toolbar-group.js} +1 -1
  224. package/src/toolbar/{README.md → toolbar/README.md} +0 -0
  225. package/src/toolbar/toolbar/index.js +52 -0
  226. package/src/toolbar/{style.native.scss → toolbar/style.native.scss} +0 -0
  227. package/src/toolbar/{style.scss → toolbar/style.scss} +0 -0
  228. package/src/toolbar/{toolbar-container.js → toolbar/toolbar-container.js} +0 -0
  229. package/src/toolbar/{toolbar-container.native.js → toolbar/toolbar-container.native.js} +0 -0
  230. package/src/{toolbar-button → toolbar/toolbar-button}/README.md +0 -0
  231. package/src/{toolbar-button → toolbar/toolbar-button}/index.js +1 -1
  232. package/src/{toolbar-button → toolbar/toolbar-button}/style.scss +0 -0
  233. package/src/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.js +0 -0
  234. package/src/{toolbar-button → toolbar/toolbar-button}/toolbar-button-container.native.js +0 -0
  235. package/src/{toolbar-context → toolbar/toolbar-context}/index.js +0 -0
  236. package/src/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/README.md +0 -0
  237. package/src/{toolbar-dropdown-menu → toolbar/toolbar-dropdown-menu}/index.js +1 -1
  238. package/src/{toolbar-group → toolbar/toolbar-group}/README.md +0 -0
  239. package/src/{toolbar-group → toolbar/toolbar-group}/index.js +0 -0
  240. package/src/{toolbar-group → toolbar/toolbar-group}/style.native.scss +0 -0
  241. package/src/{toolbar-group → toolbar/toolbar-group}/style.scss +0 -0
  242. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.js +1 -1
  243. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-collapsed.native.js +1 -1
  244. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.js +0 -0
  245. package/src/{toolbar-group → toolbar/toolbar-group}/toolbar-group-container.native.js +0 -0
  246. package/src/{toolbar-item → toolbar/toolbar-item}/README.md +0 -0
  247. package/src/{toolbar-item → toolbar/toolbar-item}/index.js +0 -0
  248. package/src/{toolbar-item → toolbar/toolbar-item}/index.native.js +0 -0
  249. package/src/tree-grid/index.js +2 -4
  250. package/tsconfig.json +0 -7
  251. package/tsconfig.tsbuildinfo +1 -1
  252. package/build/toolbar/toolbar-container.native.js.map +0 -1
  253. package/build/toolbar-button/index.js.map +0 -1
  254. package/build/toolbar-button/toolbar-button-container.js.map +0 -1
  255. package/build/toolbar-button/toolbar-button-container.native.js.map +0 -1
  256. package/build/toolbar-context/index.js.map +0 -1
  257. package/build/toolbar-dropdown-menu/index.js.map +0 -1
  258. package/build/toolbar-group/index.js.map +0 -1
  259. package/build/toolbar-group/toolbar-group-collapsed.js.map +0 -1
  260. package/build/toolbar-group/toolbar-group-collapsed.native.js.map +0 -1
  261. package/build/toolbar-group/toolbar-group-container.js.map +0 -1
  262. package/build/toolbar-group/toolbar-group-container.native.js.map +0 -1
  263. package/build/toolbar-item/index.js.map +0 -1
  264. package/build/toolbar-item/index.native.js.map +0 -1
  265. package/build-module/toolbar/toolbar-container.js.map +0 -1
  266. package/build-module/toolbar/toolbar-container.native.js.map +0 -1
  267. package/build-module/toolbar-button/index.js.map +0 -1
  268. package/build-module/toolbar-button/toolbar-button-container.js.map +0 -1
  269. package/build-module/toolbar-button/toolbar-button-container.native.js.map +0 -1
  270. package/build-module/toolbar-context/index.js.map +0 -1
  271. package/build-module/toolbar-dropdown-menu/index.js.map +0 -1
  272. package/build-module/toolbar-group/index.js.map +0 -1
  273. package/build-module/toolbar-group/toolbar-group-collapsed.js.map +0 -1
  274. package/build-module/toolbar-group/toolbar-group-collapsed.native.js.map +0 -1
  275. package/build-module/toolbar-group/toolbar-group-container.js.map +0 -1
  276. package/build-module/toolbar-group/toolbar-group-container.native.js.map +0 -1
  277. package/build-module/toolbar-item/index.js.map +0 -1
  278. package/build-module/toolbar-item/index.native.js.map +0 -1
  279. package/src/item-group/stories/index.js +0 -270
  280. package/src/resizable-box/stories/index.js +0 -97
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/query-controls/index.js"],"names":["DEFAULT_MIN_ITEMS","DEFAULT_MAX_ITEMS","MAX_CATEGORIES_SUGGESTIONS","QueryControls","authorList","selectedAuthorId","categoriesList","selectedCategoryId","categorySuggestions","selectedCategories","numberOfItems","order","orderBy","maxItems","minItems","onCategoryChange","onAuthorChange","onNumberOfItemsChange","onOrderChange","onOrderByChange","label","value","newOrderBy","newOrder","split","map","item","id","name","Object","keys"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport CategorySelect from './category-select';\nimport { RangeControl, SelectControl, FormTokenField } from '../';\nimport AuthorSelect from './author-select';\n\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_MAX_ITEMS = 100;\nconst MAX_CATEGORIES_SUGGESTIONS = 20;\n\nexport default function QueryControls( {\n\tauthorList,\n\tselectedAuthorId,\n\tcategoriesList,\n\tselectedCategoryId,\n\tcategorySuggestions,\n\tselectedCategories,\n\tnumberOfItems,\n\torder,\n\torderBy,\n\tmaxItems = DEFAULT_MAX_ITEMS,\n\tminItems = DEFAULT_MIN_ITEMS,\n\tonCategoryChange,\n\tonAuthorChange,\n\tonNumberOfItemsChange,\n\tonOrderChange,\n\tonOrderByChange,\n} ) {\n\treturn [\n\t\tonOrderChange && onOrderByChange && (\n\t\t\t<SelectControl\n\t\t\t\tkey=\"query-controls-order-select\"\n\t\t\t\tlabel={ __( 'Order by' ) }\n\t\t\t\tvalue={ `${ orderBy }/${ order }` }\n\t\t\t\toptions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Newest to oldest' ),\n\t\t\t\t\t\tvalue: 'date/desc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Oldest to newest' ),\n\t\t\t\t\t\tvalue: 'date/asc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t/* translators: label for ordering posts by title in ascending order */\n\t\t\t\t\t\tlabel: __( 'A → Z' ),\n\t\t\t\t\t\tvalue: 'title/asc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t/* translators: label for ordering posts by title in descending order */\n\t\t\t\t\t\tlabel: __( 'Z → A' ),\n\t\t\t\t\t\tvalue: 'title/desc',\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst [ newOrderBy, newOrder ] = value.split( '/' );\n\t\t\t\t\tif ( newOrder !== order ) {\n\t\t\t\t\t\tonOrderChange( newOrder );\n\t\t\t\t\t}\n\t\t\t\t\tif ( newOrderBy !== orderBy ) {\n\t\t\t\t\t\tonOrderByChange( newOrderBy );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t),\n\t\tcategoriesList && onCategoryChange && (\n\t\t\t<CategorySelect\n\t\t\t\tkey=\"query-controls-category-select\"\n\t\t\t\tcategoriesList={ categoriesList }\n\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\tnoOptionLabel={ __( 'All' ) }\n\t\t\t\tselectedCategoryId={ selectedCategoryId }\n\t\t\t\tonChange={ onCategoryChange }\n\t\t\t/>\n\t\t),\n\t\tcategorySuggestions && onCategoryChange && (\n\t\t\t<FormTokenField\n\t\t\t\tkey=\"query-controls-categories-select\"\n\t\t\t\tlabel={ __( 'Categories' ) }\n\t\t\t\tvalue={\n\t\t\t\t\tselectedCategories &&\n\t\t\t\t\tselectedCategories.map( ( item ) => ( {\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tvalue: item.name || item.value,\n\t\t\t\t\t} ) )\n\t\t\t\t}\n\t\t\t\tsuggestions={ Object.keys( categorySuggestions ) }\n\t\t\t\tonChange={ onCategoryChange }\n\t\t\t\tmaxSuggestions={ MAX_CATEGORIES_SUGGESTIONS }\n\t\t\t/>\n\t\t),\n\t\tonAuthorChange && (\n\t\t\t<AuthorSelect\n\t\t\t\tkey=\"query-controls-author-select\"\n\t\t\t\tauthorList={ authorList }\n\t\t\t\tlabel={ __( 'Author' ) }\n\t\t\t\tnoOptionLabel={ __( 'All' ) }\n\t\t\t\tselectedAuthorId={ selectedAuthorId }\n\t\t\t\tonChange={ onAuthorChange }\n\t\t\t/>\n\t\t),\n\t\tonNumberOfItemsChange && (\n\t\t\t<RangeControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tkey=\"query-controls-range-control\"\n\t\t\t\tlabel={ __( 'Number of items' ) }\n\t\t\t\tvalue={ numberOfItems }\n\t\t\t\tonChange={ onNumberOfItemsChange }\n\t\t\t\tmin={ minItems }\n\t\t\t\tmax={ maxItems }\n\t\t\t\trequired\n\t\t\t/>\n\t\t),\n\t];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/query-controls/index.js"],"names":["DEFAULT_MIN_ITEMS","DEFAULT_MAX_ITEMS","MAX_CATEGORIES_SUGGESTIONS","QueryControls","authorList","selectedAuthorId","categoriesList","selectedCategoryId","categorySuggestions","selectedCategories","numberOfItems","order","orderBy","maxItems","minItems","onCategoryChange","onAuthorChange","onNumberOfItemsChange","onOrderChange","onOrderByChange","label","value","newOrderBy","newOrder","split","map","item","id","name","Object","keys"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport CategorySelect from './category-select';\nimport { RangeControl, SelectControl, FormTokenField } from '../';\nimport AuthorSelect from './author-select';\n\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_MAX_ITEMS = 100;\nconst MAX_CATEGORIES_SUGGESTIONS = 20;\n\nexport default function QueryControls( {\n\tauthorList,\n\tselectedAuthorId,\n\tcategoriesList,\n\tselectedCategoryId,\n\tcategorySuggestions,\n\tselectedCategories,\n\tnumberOfItems,\n\torder,\n\torderBy,\n\tmaxItems = DEFAULT_MAX_ITEMS,\n\tminItems = DEFAULT_MIN_ITEMS,\n\tonCategoryChange,\n\tonAuthorChange,\n\tonNumberOfItemsChange,\n\tonOrderChange,\n\tonOrderByChange,\n} ) {\n\treturn [\n\t\tonOrderChange && onOrderByChange && (\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tkey=\"query-controls-order-select\"\n\t\t\t\tlabel={ __( 'Order by' ) }\n\t\t\t\tvalue={ `${ orderBy }/${ order }` }\n\t\t\t\toptions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Newest to oldest' ),\n\t\t\t\t\t\tvalue: 'date/desc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Oldest to newest' ),\n\t\t\t\t\t\tvalue: 'date/asc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t/* translators: label for ordering posts by title in ascending order */\n\t\t\t\t\t\tlabel: __( 'A → Z' ),\n\t\t\t\t\t\tvalue: 'title/asc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t/* translators: label for ordering posts by title in descending order */\n\t\t\t\t\t\tlabel: __( 'Z → A' ),\n\t\t\t\t\t\tvalue: 'title/desc',\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst [ newOrderBy, newOrder ] = value.split( '/' );\n\t\t\t\t\tif ( newOrder !== order ) {\n\t\t\t\t\t\tonOrderChange( newOrder );\n\t\t\t\t\t}\n\t\t\t\t\tif ( newOrderBy !== orderBy ) {\n\t\t\t\t\t\tonOrderByChange( newOrderBy );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t),\n\t\tcategoriesList && onCategoryChange && (\n\t\t\t<CategorySelect\n\t\t\t\tkey=\"query-controls-category-select\"\n\t\t\t\tcategoriesList={ categoriesList }\n\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\tnoOptionLabel={ __( 'All' ) }\n\t\t\t\tselectedCategoryId={ selectedCategoryId }\n\t\t\t\tonChange={ onCategoryChange }\n\t\t\t/>\n\t\t),\n\t\tcategorySuggestions && onCategoryChange && (\n\t\t\t<FormTokenField\n\t\t\t\tkey=\"query-controls-categories-select\"\n\t\t\t\tlabel={ __( 'Categories' ) }\n\t\t\t\tvalue={\n\t\t\t\t\tselectedCategories &&\n\t\t\t\t\tselectedCategories.map( ( item ) => ( {\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tvalue: item.name || item.value,\n\t\t\t\t\t} ) )\n\t\t\t\t}\n\t\t\t\tsuggestions={ Object.keys( categorySuggestions ) }\n\t\t\t\tonChange={ onCategoryChange }\n\t\t\t\tmaxSuggestions={ MAX_CATEGORIES_SUGGESTIONS }\n\t\t\t/>\n\t\t),\n\t\tonAuthorChange && (\n\t\t\t<AuthorSelect\n\t\t\t\tkey=\"query-controls-author-select\"\n\t\t\t\tauthorList={ authorList }\n\t\t\t\tlabel={ __( 'Author' ) }\n\t\t\t\tnoOptionLabel={ __( 'All' ) }\n\t\t\t\tselectedAuthorId={ selectedAuthorId }\n\t\t\t\tonChange={ onAuthorChange }\n\t\t\t/>\n\t\t),\n\t\tonNumberOfItemsChange && (\n\t\t\t<RangeControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tkey=\"query-controls-range-control\"\n\t\t\t\tlabel={ __( 'Number of items' ) }\n\t\t\t\tvalue={ numberOfItems }\n\t\t\t\tonChange={ onNumberOfItemsChange }\n\t\t\t\tmin={ minItems }\n\t\t\t\tmax={ maxItems }\n\t\t\t\trequired\n\t\t\t/>\n\t\t),\n\t];\n}\n"]}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.default = exports.ResizableBox = void 0;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
@@ -61,7 +61,7 @@ const HANDLE_STYLES = {
61
61
  bottomLeft: HANDLE_STYLES_OVERRIDES
62
62
  };
63
63
 
64
- function ResizableBox(_ref, ref) {
64
+ function UnforwardedResizableBox(_ref, ref) {
65
65
  let {
66
66
  className,
67
67
  children,
@@ -78,7 +78,8 @@ function ResizableBox(_ref, ref) {
78
78
  }, props), children, showTooltip && (0, _element.createElement)(_resizeTooltip.default, tooltipProps));
79
79
  }
80
80
 
81
- var _default = (0, _element.forwardRef)(ResizableBox);
82
-
81
+ const ResizableBox = (0, _element.forwardRef)(UnforwardedResizableBox);
82
+ exports.ResizableBox = ResizableBox;
83
+ var _default = ResizableBox;
83
84
  exports.default = _default;
84
85
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/resizable-box/index.tsx"],"names":["HANDLE_CLASS_NAME","SIDE_HANDLE_CLASS_NAME","CORNER_HANDLE_CLASS_NAME","HANDLE_CLASSES","top","right","bottom","left","topLeft","topRight","bottomRight","bottomLeft","HANDLE_STYLES_OVERRIDES","width","undefined","height","HANDLE_STYLES","ResizableBox","ref","className","children","showHandle","__experimentalShowTooltip","showTooltip","__experimentalTooltipProps","tooltipProps","props"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AAOA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAGA,MAAMA,iBAAiB,GAAG,kCAA1B;AACA,MAAMC,sBAAsB,GAAG,uCAA/B;AACA,MAAMC,wBAAwB,GAAG,yCAAjC;AAEA,MAAMC,cAAc,GAAG;AACtBC,EAAAA,GAAG,EAAE,yBACJJ,iBADI,EAEJC,sBAFI,EAGJ,sCAHI,CADiB;AAMtBI,EAAAA,KAAK,EAAE,yBACNL,iBADM,EAENC,sBAFM,EAGN,wCAHM,CANe;AAWtBK,EAAAA,MAAM,EAAE,yBACPN,iBADO,EAEPC,sBAFO,EAGP,yCAHO,CAXc;AAgBtBM,EAAAA,IAAI,EAAE,yBACLP,iBADK,EAELC,sBAFK,EAGL,uCAHK,CAhBgB;AAqBtBO,EAAAA,OAAO,EAAE,yBACRR,iBADQ,EAERE,wBAFQ,EAGR,sCAHQ,EAIR,uCAJQ,CArBa;AA2BtBO,EAAAA,QAAQ,EAAE,yBACTT,iBADS,EAETE,wBAFS,EAGT,sCAHS,EAIT,wCAJS,CA3BY;AAiCtBQ,EAAAA,WAAW,EAAE,yBACZV,iBADY,EAEZE,wBAFY,EAGZ,yCAHY,EAIZ,wCAJY,CAjCS;AAuCtBS,EAAAA,UAAU,EAAE,yBACXX,iBADW,EAEXE,wBAFW,EAGX,yCAHW,EAIX,uCAJW;AAvCU,CAAvB,C,CA+CA;;AACA,MAAMU,uBAAuB,GAAG;AAC/BC,EAAAA,KAAK,EAAEC,SADwB;AAE/BC,EAAAA,MAAM,EAAED,SAFuB;AAG/BV,EAAAA,GAAG,EAAEU,SAH0B;AAI/BT,EAAAA,KAAK,EAAES,SAJwB;AAK/BR,EAAAA,MAAM,EAAEQ,SALuB;AAM/BP,EAAAA,IAAI,EAAEO;AANyB,CAAhC;AAQA,MAAME,aAAa,GAAG;AACrBZ,EAAAA,GAAG,EAAEQ,uBADgB;AAErBP,EAAAA,KAAK,EAAEO,uBAFc;AAGrBN,EAAAA,MAAM,EAAEM,uBAHa;AAIrBL,EAAAA,IAAI,EAAEK,uBAJe;AAKrBJ,EAAAA,OAAO,EAAEI,uBALY;AAMrBH,EAAAA,QAAQ,EAAEG,uBANW;AAOrBF,EAAAA,WAAW,EAAEE,uBAPQ;AAQrBD,EAAAA,UAAU,EAAEC;AARS,CAAtB;;AAmBA,SAASK,YAAT,OASCC,GATD,EAUe;AAAA,MATd;AACCC,IAAAA,SADD;AAECC,IAAAA,QAFD;AAGCC,IAAAA,UAAU,GAAG,IAHd;AAICC,IAAAA,yBAAyB,EAAEC,WAAW,GAAG,KAJ1C;AAKCC,IAAAA,0BAA0B,EAAEC,YAAY,GAAG,EAL5C;AAMC,OAAGC;AANJ,GASc;AACd,SACC,4BAAC,sBAAD;AACC,IAAA,SAAS,EAAG,yBACX,qCADW,EAEXL,UAAU,IAAI,iBAFH,EAGXF,SAHW,CADb;AAMC,IAAA,aAAa,EAAGhB,cANjB;AAOC,IAAA,YAAY,EAAGa,aAPhB;AAQC,IAAA,GAAG,EAAGE;AARP,KASMQ,KATN,GAWGN,QAXH,EAYGG,WAAW,IAAI,4BAAC,sBAAD,EAAoBE,YAApB,CAZlB,CADD;AAgBA;;eAEc,yBAAYR,YAAZ,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { Resizable } from 're-resizable';\nimport type { ResizableProps } from 're-resizable';\nimport type { ReactNode, ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport ResizeTooltip from './resize-tooltip';\n\nconst HANDLE_CLASS_NAME = 'components-resizable-box__handle';\nconst SIDE_HANDLE_CLASS_NAME = 'components-resizable-box__side-handle';\nconst CORNER_HANDLE_CLASS_NAME = 'components-resizable-box__corner-handle';\n\nconst HANDLE_CLASSES = {\n\ttop: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top'\n\t),\n\tright: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottom: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom'\n\t),\n\tleft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-left'\n\t),\n\ttopLeft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top',\n\t\t'components-resizable-box__handle-left'\n\t),\n\ttopRight: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top',\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottomRight: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom',\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottomLeft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom',\n\t\t'components-resizable-box__handle-left'\n\t),\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDES = {\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\nconst HANDLE_STYLES = {\n\ttop: HANDLE_STYLES_OVERRIDES,\n\tright: HANDLE_STYLES_OVERRIDES,\n\tbottom: HANDLE_STYLES_OVERRIDES,\n\tleft: HANDLE_STYLES_OVERRIDES,\n\ttopLeft: HANDLE_STYLES_OVERRIDES,\n\ttopRight: HANDLE_STYLES_OVERRIDES,\n\tbottomRight: HANDLE_STYLES_OVERRIDES,\n\tbottomLeft: HANDLE_STYLES_OVERRIDES,\n};\n\ntype ResizableBoxProps = ResizableProps & {\n\tclassName: string;\n\tchildren: ReactNode;\n\tshowHandle: boolean;\n\t__experimentalShowTooltip: boolean;\n\t__experimentalTooltipProps: Parameters< typeof ResizeTooltip >[ 0 ];\n};\n\nfunction ResizableBox(\n\t{\n\t\tclassName,\n\t\tchildren,\n\t\tshowHandle = true,\n\t\t__experimentalShowTooltip: showTooltip = false,\n\t\t__experimentalTooltipProps: tooltipProps = {},\n\t\t...props\n\t}: ResizableBoxProps,\n\tref: ForwardedRef< Resizable >\n): JSX.Element {\n\treturn (\n\t\t<Resizable\n\t\t\tclassName={ classnames(\n\t\t\t\t'components-resizable-box__container',\n\t\t\t\tshowHandle && 'has-show-handle',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\thandleClasses={ HANDLE_CLASSES }\n\t\t\thandleStyles={ HANDLE_STYLES }\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t\t{ showTooltip && <ResizeTooltip { ...tooltipProps } /> }\n\t\t</Resizable>\n\t);\n}\n\nexport default forwardRef( ResizableBox );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/resizable-box/index.tsx"],"names":["HANDLE_CLASS_NAME","SIDE_HANDLE_CLASS_NAME","CORNER_HANDLE_CLASS_NAME","HANDLE_CLASSES","top","right","bottom","left","topLeft","topRight","bottomRight","bottomLeft","HANDLE_STYLES_OVERRIDES","width","undefined","height","HANDLE_STYLES","UnforwardedResizableBox","ref","className","children","showHandle","__experimentalShowTooltip","showTooltip","__experimentalTooltipProps","tooltipProps","props","ResizableBox"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AAOA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAGA,MAAMA,iBAAiB,GAAG,kCAA1B;AACA,MAAMC,sBAAsB,GAAG,uCAA/B;AACA,MAAMC,wBAAwB,GAAG,yCAAjC;AAEA,MAAMC,cAAc,GAAG;AACtBC,EAAAA,GAAG,EAAE,yBACJJ,iBADI,EAEJC,sBAFI,EAGJ,sCAHI,CADiB;AAMtBI,EAAAA,KAAK,EAAE,yBACNL,iBADM,EAENC,sBAFM,EAGN,wCAHM,CANe;AAWtBK,EAAAA,MAAM,EAAE,yBACPN,iBADO,EAEPC,sBAFO,EAGP,yCAHO,CAXc;AAgBtBM,EAAAA,IAAI,EAAE,yBACLP,iBADK,EAELC,sBAFK,EAGL,uCAHK,CAhBgB;AAqBtBO,EAAAA,OAAO,EAAE,yBACRR,iBADQ,EAERE,wBAFQ,EAGR,sCAHQ,EAIR,uCAJQ,CArBa;AA2BtBO,EAAAA,QAAQ,EAAE,yBACTT,iBADS,EAETE,wBAFS,EAGT,sCAHS,EAIT,wCAJS,CA3BY;AAiCtBQ,EAAAA,WAAW,EAAE,yBACZV,iBADY,EAEZE,wBAFY,EAGZ,yCAHY,EAIZ,wCAJY,CAjCS;AAuCtBS,EAAAA,UAAU,EAAE,yBACXX,iBADW,EAEXE,wBAFW,EAGX,yCAHW,EAIX,uCAJW;AAvCU,CAAvB,C,CA+CA;;AACA,MAAMU,uBAAuB,GAAG;AAC/BC,EAAAA,KAAK,EAAEC,SADwB;AAE/BC,EAAAA,MAAM,EAAED,SAFuB;AAG/BV,EAAAA,GAAG,EAAEU,SAH0B;AAI/BT,EAAAA,KAAK,EAAES,SAJwB;AAK/BR,EAAAA,MAAM,EAAEQ,SALuB;AAM/BP,EAAAA,IAAI,EAAEO;AANyB,CAAhC;AAQA,MAAME,aAAa,GAAG;AACrBZ,EAAAA,GAAG,EAAEQ,uBADgB;AAErBP,EAAAA,KAAK,EAAEO,uBAFc;AAGrBN,EAAAA,MAAM,EAAEM,uBAHa;AAIrBL,EAAAA,IAAI,EAAEK,uBAJe;AAKrBJ,EAAAA,OAAO,EAAEI,uBALY;AAMrBH,EAAAA,QAAQ,EAAEG,uBANW;AAOrBF,EAAAA,WAAW,EAAEE,uBAPQ;AAQrBD,EAAAA,UAAU,EAAEC;AARS,CAAtB;;AAkBA,SAASK,uBAAT,OASCC,GATD,EAUe;AAAA,MATd;AACCC,IAAAA,SADD;AAECC,IAAAA,QAFD;AAGCC,IAAAA,UAAU,GAAG,IAHd;AAICC,IAAAA,yBAAyB,EAAEC,WAAW,GAAG,KAJ1C;AAKCC,IAAAA,0BAA0B,EAAEC,YAAY,GAAG,EAL5C;AAMC,OAAGC;AANJ,GASc;AACd,SACC,4BAAC,sBAAD;AACC,IAAA,SAAS,EAAG,yBACX,qCADW,EAEXL,UAAU,IAAI,iBAFH,EAGXF,SAHW,CADb;AAMC,IAAA,aAAa,EAAGhB,cANjB;AAOC,IAAA,YAAY,EAAGa,aAPhB;AAQC,IAAA,GAAG,EAAGE;AARP,KASMQ,KATN,GAWGN,QAXH,EAYGG,WAAW,IAAI,4BAAC,sBAAD,EAAoBE,YAApB,CAZlB,CADD;AAgBA;;AAEM,MAAME,YAAY,GAAG,yBAAYV,uBAAZ,CAArB;;eAEQU,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { Resizable } from 're-resizable';\nimport type { ResizableProps } from 're-resizable';\nimport type { ReactNode, ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport ResizeTooltip from './resize-tooltip';\n\nconst HANDLE_CLASS_NAME = 'components-resizable-box__handle';\nconst SIDE_HANDLE_CLASS_NAME = 'components-resizable-box__side-handle';\nconst CORNER_HANDLE_CLASS_NAME = 'components-resizable-box__corner-handle';\n\nconst HANDLE_CLASSES = {\n\ttop: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top'\n\t),\n\tright: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottom: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom'\n\t),\n\tleft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tSIDE_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-left'\n\t),\n\ttopLeft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top',\n\t\t'components-resizable-box__handle-left'\n\t),\n\ttopRight: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-top',\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottomRight: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom',\n\t\t'components-resizable-box__handle-right'\n\t),\n\tbottomLeft: classnames(\n\t\tHANDLE_CLASS_NAME,\n\t\tCORNER_HANDLE_CLASS_NAME,\n\t\t'components-resizable-box__handle-bottom',\n\t\t'components-resizable-box__handle-left'\n\t),\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDES = {\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\nconst HANDLE_STYLES = {\n\ttop: HANDLE_STYLES_OVERRIDES,\n\tright: HANDLE_STYLES_OVERRIDES,\n\tbottom: HANDLE_STYLES_OVERRIDES,\n\tleft: HANDLE_STYLES_OVERRIDES,\n\ttopLeft: HANDLE_STYLES_OVERRIDES,\n\ttopRight: HANDLE_STYLES_OVERRIDES,\n\tbottomRight: HANDLE_STYLES_OVERRIDES,\n\tbottomLeft: HANDLE_STYLES_OVERRIDES,\n};\n\ntype ResizableBoxProps = ResizableProps & {\n\tchildren: ReactNode;\n\tshowHandle?: boolean;\n\t__experimentalShowTooltip?: boolean;\n\t__experimentalTooltipProps?: Parameters< typeof ResizeTooltip >[ 0 ];\n};\n\nfunction UnforwardedResizableBox(\n\t{\n\t\tclassName,\n\t\tchildren,\n\t\tshowHandle = true,\n\t\t__experimentalShowTooltip: showTooltip = false,\n\t\t__experimentalTooltipProps: tooltipProps = {},\n\t\t...props\n\t}: ResizableBoxProps,\n\tref: ForwardedRef< Resizable >\n): JSX.Element {\n\treturn (\n\t\t<Resizable\n\t\t\tclassName={ classnames(\n\t\t\t\t'components-resizable-box__container',\n\t\t\t\tshowHandle && 'has-show-handle',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\thandleClasses={ HANDLE_CLASSES }\n\t\t\thandleStyles={ HANDLE_STYLES }\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t\t{ showTooltip && <ResizeTooltip { ...tooltipProps } /> }\n\t\t</Resizable>\n\t);\n}\n\nexport const ResizableBox = forwardRef( UnforwardedResizableBox );\n\nexport default ResizableBox;\n"]}
@@ -20,6 +20,23 @@ var _compose = require("@wordpress/compose");
20
20
  /**
21
21
  * WordPress dependencies
22
22
  */
23
+
24
+ /**
25
+ * A wrapper component that maintains its aspect ratio when resized.
26
+ *
27
+ * ```jsx
28
+ * import { ResponsiveWrapper } from '@wordpress/components';
29
+ *
30
+ * const MyResponsiveWrapper = () => (
31
+ * <ResponsiveWrapper naturalWidth={ 2000 } naturalHeight={ 680 }>
32
+ * <img
33
+ * src="https://s.w.org/style/images/about/WordPress-logotype-standard.png"
34
+ * alt="WordPress"
35
+ * />
36
+ * </ResponsiveWrapper>
37
+ * );
38
+ * ```
39
+ */
23
40
  function ResponsiveWrapper(_ref) {
24
41
  let {
25
42
  naturalWidth,
@@ -36,7 +53,7 @@ function ResponsiveWrapper(_ref) {
36
53
  }
37
54
 
38
55
  const imageStyle = {
39
- paddingBottom: naturalWidth < containerWidth ? naturalHeight : naturalHeight / naturalWidth * 100 + '%'
56
+ paddingBottom: naturalWidth < (containerWidth !== null && containerWidth !== void 0 ? containerWidth : 0) ? naturalHeight : naturalHeight / naturalWidth * 100 + '%'
40
57
  };
41
58
  const TagName = isInline ? 'span' : 'div';
42
59
  return (0, _element.createElement)(TagName, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/responsive-wrapper/index.js"],"names":["ResponsiveWrapper","naturalWidth","naturalHeight","children","isInline","containerResizeListener","width","containerWidth","Children","count","imageStyle","paddingBottom","TagName","className","props"],"mappings":";;;;;;;;;AAQA;;AALA;;AAMA;;AATA;AACA;AACA;;AAGA;AACA;AACA;AAIA,SAASA,iBAAT,OAKI;AAAA,MALwB;AAC3BC,IAAAA,YAD2B;AAE3BC,IAAAA,aAF2B;AAG3BC,IAAAA,QAH2B;AAI3BC,IAAAA,QAAQ,GAAG;AAJgB,GAKxB;AACH,QAAM,CAAEC,uBAAF,EAA2B;AAAEC,IAAAA,KAAK,EAAEC;AAAT,GAA3B,IACL,iCADD;;AAEA,MAAKC,kBAASC,KAAT,CAAgBN,QAAhB,MAA+B,CAApC,EAAwC;AACvC,WAAO,IAAP;AACA;;AACD,QAAMO,UAAU,GAAG;AAClBC,IAAAA,aAAa,EACZV,YAAY,GAAGM,cAAf,GACGL,aADH,GAEKA,aAAa,GAAGD,YAAlB,GAAmC,GAAnC,GAAyC;AAJ3B,GAAnB;AAMA,QAAMW,OAAO,GAAGR,QAAQ,GAAG,MAAH,GAAY,KAApC;AACA,SACC,4BAAC,OAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KACGC,uBADH,EAEC,4BAAC,OAAD;AAAS,IAAA,KAAK,EAAGK;AAAjB,IAFD,EAGG,2BAAcP,QAAd,EAAwB;AACzBU,IAAAA,SAAS,EAAE,yBACV,wCADU,EAEVV,QAAQ,CAACW,KAAT,CAAeD,SAFL;AADc,GAAxB,CAHH,CADD;AAYA;;eAEcb,iB","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { cloneElement, Children } from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\n\nfunction ResponsiveWrapper( {\n\tnaturalWidth,\n\tnaturalHeight,\n\tchildren,\n\tisInline = false,\n} ) {\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\tif ( Children.count( children ) !== 1 ) {\n\t\treturn null;\n\t}\n\tconst imageStyle = {\n\t\tpaddingBottom:\n\t\t\tnaturalWidth < containerWidth\n\t\t\t\t? naturalHeight\n\t\t\t\t: ( naturalHeight / naturalWidth ) * 100 + '%',\n\t};\n\tconst TagName = isInline ? 'span' : 'div';\n\treturn (\n\t\t<TagName className=\"components-responsive-wrapper\">\n\t\t\t{ containerResizeListener }\n\t\t\t<TagName style={ imageStyle } />\n\t\t\t{ cloneElement( children, {\n\t\t\t\tclassName: classnames(\n\t\t\t\t\t'components-responsive-wrapper__content',\n\t\t\t\t\tchildren.props.className\n\t\t\t\t),\n\t\t\t} ) }\n\t\t</TagName>\n\t);\n}\n\nexport default ResponsiveWrapper;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/responsive-wrapper/index.tsx"],"names":["ResponsiveWrapper","naturalWidth","naturalHeight","children","isInline","containerResizeListener","width","containerWidth","Children","count","imageStyle","paddingBottom","TagName","className","props"],"mappings":";;;;;;;;;AAQA;;AALA;;AAMA;;AATA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAT,OAK4B;AAAA,MALA;AAC3BC,IAAAA,YAD2B;AAE3BC,IAAAA,aAF2B;AAG3BC,IAAAA,QAH2B;AAI3BC,IAAAA,QAAQ,GAAG;AAJgB,GAKA;AAC3B,QAAM,CAAEC,uBAAF,EAA2B;AAAEC,IAAAA,KAAK,EAAEC;AAAT,GAA3B,IACL,iCADD;;AAEA,MAAKC,kBAASC,KAAT,CAAgBN,QAAhB,MAA+B,CAApC,EAAwC;AACvC,WAAO,IAAP;AACA;;AACD,QAAMO,UAAU,GAAG;AAClBC,IAAAA,aAAa,EACZV,YAAY,IAAKM,cAAL,aAAKA,cAAL,cAAKA,cAAL,GAAuB,CAAvB,CAAZ,GACGL,aADH,GAEKA,aAAa,GAAGD,YAAlB,GAAmC,GAAnC,GAAyC;AAJ3B,GAAnB;AAMA,QAAMW,OAAO,GAAGR,QAAQ,GAAG,MAAH,GAAY,KAApC;AACA,SACC,4BAAC,OAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KACGC,uBADH,EAEC,4BAAC,OAAD;AAAS,IAAA,KAAK,EAAGK;AAAjB,IAFD,EAGG,2BAAcP,QAAd,EAAwB;AACzBU,IAAAA,SAAS,EAAE,yBACV,wCADU,EAEVV,QAAQ,CAACW,KAAT,CAAeD,SAFL;AADc,GAAxB,CAHH,CADD;AAYA;;eAEcb,iB","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { cloneElement, Children } from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport type { ResponsiveWrapperProps } from './types';\n\n/**\n * A wrapper component that maintains its aspect ratio when resized.\n *\n * ```jsx\n * import { ResponsiveWrapper } from '@wordpress/components';\n *\n * const MyResponsiveWrapper = () => (\n * \t<ResponsiveWrapper naturalWidth={ 2000 } naturalHeight={ 680 }>\n * \t\t<img\n * \t\t\tsrc=\"https://s.w.org/style/images/about/WordPress-logotype-standard.png\"\n * \t\t\talt=\"WordPress\"\n * \t\t/>\n * \t</ResponsiveWrapper>\n * );\n * ```\n */\nfunction ResponsiveWrapper( {\n\tnaturalWidth,\n\tnaturalHeight,\n\tchildren,\n\tisInline = false,\n}: ResponsiveWrapperProps ) {\n\tconst [ containerResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\n\tif ( Children.count( children ) !== 1 ) {\n\t\treturn null;\n\t}\n\tconst imageStyle = {\n\t\tpaddingBottom:\n\t\t\tnaturalWidth < ( containerWidth ?? 0 )\n\t\t\t\t? naturalHeight\n\t\t\t\t: ( naturalHeight / naturalWidth ) * 100 + '%',\n\t};\n\tconst TagName = isInline ? 'span' : 'div';\n\treturn (\n\t\t<TagName className=\"components-responsive-wrapper\">\n\t\t\t{ containerResizeListener }\n\t\t\t<TagName style={ imageStyle } />\n\t\t\t{ cloneElement( children, {\n\t\t\t\tclassName: classnames(\n\t\t\t\t\t'components-responsive-wrapper__content',\n\t\t\t\t\tchildren.props.className\n\t\t\t\t),\n\t\t\t} ) }\n\t\t</TagName>\n\t);\n}\n\nexport default ResponsiveWrapper;\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = Sandbox;
6
+ exports.default = void 0;
7
7
 
8
8
  var _element = require("@wordpress/element");
9
9
 
@@ -64,7 +64,8 @@ const observeAndResizeJS = function () {
64
64
  // get an DOM mutations for that, so do the resize when the window is resized, too.
65
65
 
66
66
  window.addEventListener('resize', sendResize, true);
67
- };
67
+ }; // TODO: These styles shouldn't be coupled with WordPress.
68
+
68
69
 
69
70
  const style = `
70
71
  body {
@@ -88,8 +89,19 @@ const style = `
88
89
  margin-bottom: 0 !important;
89
90
  }
90
91
  `;
92
+ /**
93
+ * This component provides an isolated environment for arbitrary HTML via iframes.
94
+ *
95
+ * ```jsx
96
+ * import { SandBox } from '@wordpress/components';
97
+ *
98
+ * const MySandBox = () => (
99
+ * <SandBox html="<p>Content</p>" title="SandBox" type="embed" />
100
+ * );
101
+ * ```
102
+ */
91
103
 
92
- function Sandbox(_ref) {
104
+ function SandBox(_ref) {
93
105
  let {
94
106
  html = '',
95
107
  title = '',
@@ -104,13 +116,15 @@ function Sandbox(_ref) {
104
116
 
105
117
  function isFrameAccessible() {
106
118
  try {
107
- return !!ref.current.contentDocument.body;
119
+ var _ref$current, _ref$current$contentD;
120
+
121
+ return !!((_ref$current = ref.current) !== null && _ref$current !== void 0 && (_ref$current$contentD = _ref$current.contentDocument) !== null && _ref$current$contentD !== void 0 && _ref$current$contentD.body);
108
122
  } catch (e) {
109
123
  return false;
110
124
  }
111
125
  }
112
126
 
113
- function trySandbox() {
127
+ function trySandBox() {
114
128
  let forceRerender = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
115
129
 
116
130
  if (!isFrameAccessible()) {
@@ -121,11 +135,8 @@ function Sandbox(_ref) {
121
135
  contentDocument,
122
136
  ownerDocument
123
137
  } = ref.current;
124
- const {
125
- body
126
- } = contentDocument;
127
138
 
128
- if (!forceRerender && null !== body.getAttribute('data-resizable-iframe-connected')) {
139
+ if (!forceRerender && null !== (contentDocument === null || contentDocument === void 0 ? void 0 : contentDocument.body.getAttribute('data-resizable-iframe-connected'))) {
129
140
  return;
130
141
  } // Put the html snippet into a html document, and then write it to the iframe's document
131
142
  // we can use this in the future to inject custom styles or scripts.
@@ -170,10 +181,12 @@ function Sandbox(_ref) {
170
181
  }
171
182
 
172
183
  (0, _element.useEffect)(() => {
173
- trySandbox();
184
+ var _iframe$ownerDocument;
174
185
 
175
- function tryNoForceSandbox() {
176
- trySandbox(false);
186
+ trySandBox();
187
+
188
+ function tryNoForceSandBox() {
189
+ trySandBox(false);
177
190
  }
178
191
 
179
192
  function checkMessageForResize(event) {
@@ -203,32 +216,27 @@ function Sandbox(_ref) {
203
216
  }
204
217
 
205
218
  const iframe = ref.current;
206
- const {
207
- ownerDocument
208
- } = iframe;
209
- const {
210
- defaultView
211
- } = ownerDocument; // This used to be registered using <iframe onLoad={} />, but it made the iframe blank
219
+ const defaultView = iframe === null || iframe === void 0 ? void 0 : (_iframe$ownerDocument = iframe.ownerDocument) === null || _iframe$ownerDocument === void 0 ? void 0 : _iframe$ownerDocument.defaultView; // This used to be registered using <iframe onLoad={} />, but it made the iframe blank
212
220
  // after reordering the containing block. See these two issues for more details:
213
221
  // https://github.com/WordPress/gutenberg/issues/6146
214
222
  // https://github.com/facebook/react/issues/18752
215
223
 
216
- iframe.addEventListener('load', tryNoForceSandbox, false);
217
- defaultView.addEventListener('message', checkMessageForResize);
224
+ iframe === null || iframe === void 0 ? void 0 : iframe.addEventListener('load', tryNoForceSandBox, false);
225
+ defaultView === null || defaultView === void 0 ? void 0 : defaultView.addEventListener('message', checkMessageForResize);
218
226
  return () => {
219
- iframe === null || iframe === void 0 ? void 0 : iframe.removeEventListener('load', tryNoForceSandbox, false);
220
- defaultView.addEventListener('message', checkMessageForResize);
227
+ iframe === null || iframe === void 0 ? void 0 : iframe.removeEventListener('load', tryNoForceSandBox, false);
228
+ defaultView === null || defaultView === void 0 ? void 0 : defaultView.addEventListener('message', checkMessageForResize);
221
229
  }; // Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.
222
230
  // See https://github.com/WordPress/gutenberg/pull/44378
223
231
  // eslint-disable-next-line react-hooks/exhaustive-deps
224
232
  }, []);
225
233
  (0, _element.useEffect)(() => {
226
- trySandbox(); // Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.
234
+ trySandBox(); // Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.
227
235
  // See https://github.com/WordPress/gutenberg/pull/44378
228
236
  // eslint-disable-next-line react-hooks/exhaustive-deps
229
237
  }, [title, styles, scripts]);
230
238
  (0, _element.useEffect)(() => {
231
- trySandbox(true); // Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.
239
+ trySandBox(true); // Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.
232
240
  // See https://github.com/WordPress/gutenberg/pull/44378
233
241
  // eslint-disable-next-line react-hooks/exhaustive-deps
234
242
  }, [html, type]);
@@ -242,4 +250,7 @@ function Sandbox(_ref) {
242
250
  height: Math.ceil(height)
243
251
  });
244
252
  }
253
+
254
+ var _default = SandBox;
255
+ exports.default = _default;
245
256
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/sandbox/index.js"],"names":["observeAndResizeJS","MutationObserver","window","document","body","parent","sendResize","clientBoundingRect","getBoundingClientRect","postMessage","action","width","height","observer","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","addEventListener","removeViewportStyles","ruleOrNode","style","forEach","test","Array","prototype","call","querySelectorAll","styleSheets","stylesheet","cssRules","rules","position","setAttribute","Sandbox","html","title","type","styles","scripts","onFocus","ref","setWidth","setHeight","isFrameAccessible","current","contentDocument","e","trySandbox","forceRerender","ownerDocument","getAttribute","htmlDoc","documentElement","lang","__html","map","i","toString","src","open","write","close","tryNoForceSandbox","checkMessageForResize","event","iframe","contentWindow","source","data","JSON","parse","defaultView","removeEventListener","Math","ceil"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useFocusableIframe, useMergeRefs } from '@wordpress/compose';\n\nconst observeAndResizeJS = function () {\n\tconst { MutationObserver } = window;\n\n\tif ( ! MutationObserver || ! document.body || ! window.parent ) {\n\t\treturn;\n\t}\n\n\tfunction sendResize() {\n\t\tconst clientBoundingRect = document.body.getBoundingClientRect();\n\n\t\twindow.parent.postMessage(\n\t\t\t{\n\t\t\t\taction: 'resize',\n\t\t\t\twidth: clientBoundingRect.width,\n\t\t\t\theight: clientBoundingRect.height,\n\t\t\t},\n\t\t\t'*'\n\t\t);\n\t}\n\n\tconst observer = new MutationObserver( sendResize );\n\tobserver.observe( document.body, {\n\t\tattributes: true,\n\t\tattributeOldValue: false,\n\t\tcharacterData: true,\n\t\tcharacterDataOldValue: false,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t} );\n\n\twindow.addEventListener( 'load', sendResize, true );\n\n\t// Hack: Remove viewport unit styles, as these are relative\n\t// the iframe root and interfere with our mechanism for\n\t// determining the unconstrained page bounds.\n\tfunction removeViewportStyles( ruleOrNode ) {\n\t\tif ( ruleOrNode.style ) {\n\t\t\t[ 'width', 'height', 'minHeight', 'maxHeight' ].forEach( function (\n\t\t\t\tstyle\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\t/^\\\\d+(vmin|vmax|vh|vw)$/.test( ruleOrNode.style[ style ] )\n\t\t\t\t) {\n\t\t\t\t\truleOrNode.style[ style ] = '';\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tArray.prototype.forEach.call(\n\t\tdocument.querySelectorAll( '[style]' ),\n\t\tremoveViewportStyles\n\t);\n\tArray.prototype.forEach.call(\n\t\tdocument.styleSheets,\n\t\tfunction ( stylesheet ) {\n\t\t\tArray.prototype.forEach.call(\n\t\t\t\tstylesheet.cssRules || stylesheet.rules,\n\t\t\t\tremoveViewportStyles\n\t\t\t);\n\t\t}\n\t);\n\n\tdocument.body.style.position = 'absolute';\n\tdocument.body.style.width = '100%';\n\tdocument.body.setAttribute( 'data-resizable-iframe-connected', '' );\n\n\tsendResize();\n\n\t// Resize events can change the width of elements with 100% width, but we don't\n\t// get an DOM mutations for that, so do the resize when the window is resized, too.\n\twindow.addEventListener( 'resize', sendResize, true );\n};\n\nconst style = `\n\tbody {\n\t\tmargin: 0;\n\t}\n\thtml,\n\tbody,\n\tbody > div {\n\t\twidth: 100%;\n\t}\n\thtml.wp-has-aspect-ratio,\n\tbody.wp-has-aspect-ratio,\n\tbody.wp-has-aspect-ratio > div,\n\tbody.wp-has-aspect-ratio > div iframe {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: hidden; /* If it has an aspect ratio, it shouldn't scroll. */\n\t}\n\tbody > div > * {\n\t\tmargin-top: 0 !important; /* Has to have !important to override inline styles. */\n\t\tmargin-bottom: 0 !important;\n\t}\n`;\n\nexport default function Sandbox( {\n\thtml = '',\n\ttitle = '',\n\ttype,\n\tstyles = [],\n\tscripts = [],\n\tonFocus,\n} ) {\n\tconst ref = useRef();\n\tconst [ width, setWidth ] = useState( 0 );\n\tconst [ height, setHeight ] = useState( 0 );\n\n\tfunction isFrameAccessible() {\n\t\ttry {\n\t\t\treturn !! ref.current.contentDocument.body;\n\t\t} catch ( e ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction trySandbox( forceRerender = false ) {\n\t\tif ( ! isFrameAccessible() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { contentDocument, ownerDocument } = ref.current;\n\t\tconst { body } = contentDocument;\n\n\t\tif (\n\t\t\t! forceRerender &&\n\t\t\tnull !== body.getAttribute( 'data-resizable-iframe-connected' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Put the html snippet into a html document, and then write it to the iframe's document\n\t\t// we can use this in the future to inject custom styles or scripts.\n\t\t// Scripts go into the body rather than the head, to support embedded content such as Instagram\n\t\t// that expect the scripts to be part of the body.\n\t\tconst htmlDoc = (\n\t\t\t<html\n\t\t\t\tlang={ ownerDocument.documentElement.lang }\n\t\t\t\tclassName={ type }\n\t\t\t>\n\t\t\t\t<head>\n\t\t\t\t\t<title>{ title }</title>\n\t\t\t\t\t<style dangerouslySetInnerHTML={ { __html: style } } />\n\t\t\t\t\t{ styles.map( ( rules, i ) => (\n\t\t\t\t\t\t<style\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={ { __html: rules } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</head>\n\t\t\t\t<body\n\t\t\t\t\tdata-resizable-iframe-connected=\"data-resizable-iframe-connected\"\n\t\t\t\t\tclassName={ type }\n\t\t\t\t>\n\t\t\t\t\t<div dangerouslySetInnerHTML={ { __html: html } } />\n\t\t\t\t\t<script\n\t\t\t\t\t\ttype=\"text/javascript\"\n\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t__html: `(${ observeAndResizeJS.toString() })();`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t{ scripts.map( ( src ) => (\n\t\t\t\t\t\t<script key={ src } src={ src } />\n\t\t\t\t\t) ) }\n\t\t\t\t</body>\n\t\t\t</html>\n\t\t);\n\n\t\t// Writing the document like this makes it act in the same way as if it was\n\t\t// loaded over the network, so DOM creation and mutation, script execution, etc.\n\t\t// all work as expected.\n\t\tcontentDocument.open();\n\t\tcontentDocument.write( '<!DOCTYPE html>' + renderToString( htmlDoc ) );\n\t\tcontentDocument.close();\n\t}\n\n\tuseEffect( () => {\n\t\ttrySandbox();\n\n\t\tfunction tryNoForceSandbox() {\n\t\t\ttrySandbox( false );\n\t\t}\n\n\t\tfunction checkMessageForResize( event ) {\n\t\t\tconst iframe = ref.current;\n\n\t\t\t// Verify that the mounted element is the source of the message.\n\t\t\tif ( ! iframe || iframe.contentWindow !== event.source ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Attempt to parse the message data as JSON if passed as string.\n\t\t\tlet data = event.data || {};\n\n\t\t\tif ( 'string' === typeof data ) {\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse( data );\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\t// Update the state only if the message is formatted as we expect,\n\t\t\t// i.e. as an object with a 'resize' action.\n\t\t\tif ( 'resize' !== data.action ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetWidth( data.width );\n\t\t\tsetHeight( data.height );\n\t\t}\n\n\t\tconst iframe = ref.current;\n\t\tconst { ownerDocument } = iframe;\n\t\tconst { defaultView } = ownerDocument;\n\n\t\t// This used to be registered using <iframe onLoad={} />, but it made the iframe blank\n\t\t// after reordering the containing block. See these two issues for more details:\n\t\t// https://github.com/WordPress/gutenberg/issues/6146\n\t\t// https://github.com/facebook/react/issues/18752\n\t\tiframe.addEventListener( 'load', tryNoForceSandbox, false );\n\t\tdefaultView.addEventListener( 'message', checkMessageForResize );\n\n\t\treturn () => {\n\t\t\tiframe?.removeEventListener( 'load', tryNoForceSandbox, false );\n\t\t\tdefaultView.addEventListener( 'message', checkMessageForResize );\n\t\t};\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tuseEffect( () => {\n\t\ttrySandbox();\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ title, styles, scripts ] );\n\n\tuseEffect( () => {\n\t\ttrySandbox( true );\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ html, type ] );\n\n\treturn (\n\t\t<iframe\n\t\t\tref={ useMergeRefs( [ ref, useFocusableIframe() ] ) }\n\t\t\ttitle={ title }\n\t\t\tclassName=\"components-sandbox\"\n\t\t\tsandbox=\"allow-scripts allow-same-origin allow-presentation\"\n\t\t\tonFocus={ onFocus }\n\t\t\twidth={ Math.ceil( width ) }\n\t\t\theight={ Math.ceil( height ) }\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/sandbox/index.tsx"],"names":["observeAndResizeJS","MutationObserver","window","document","body","parent","sendResize","clientBoundingRect","getBoundingClientRect","postMessage","action","width","height","observer","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","addEventListener","removeViewportStyles","ruleOrNode","style","forEach","test","Array","prototype","call","querySelectorAll","styleSheets","stylesheet","cssRules","rules","position","setAttribute","SandBox","html","title","type","styles","scripts","onFocus","ref","setWidth","setHeight","isFrameAccessible","current","contentDocument","e","trySandBox","forceRerender","ownerDocument","getAttribute","htmlDoc","documentElement","lang","__html","map","i","toString","src","open","write","close","tryNoForceSandBox","checkMessageForResize","event","iframe","contentWindow","source","data","JSON","parse","defaultView","removeEventListener","Math","ceil"],"mappings":";;;;;;;AAGA;;AAMA;;AATA;AACA;AACA;AAcA,MAAMA,kBAAkB,GAAG,YAAY;AACtC,QAAM;AAAEC,IAAAA;AAAF,MAAuBC,MAA7B;;AAEA,MAAK,CAAED,gBAAF,IAAsB,CAAEE,QAAQ,CAACC,IAAjC,IAAyC,CAAEF,MAAM,CAACG,MAAvD,EAAgE;AAC/D;AACA;;AAED,WAASC,UAAT,GAAsB;AACrB,UAAMC,kBAAkB,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,qBAAd,EAA3B;AAEAN,IAAAA,MAAM,CAACG,MAAP,CAAcI,WAAd,CACC;AACCC,MAAAA,MAAM,EAAE,QADT;AAECC,MAAAA,KAAK,EAAEJ,kBAAkB,CAACI,KAF3B;AAGCC,MAAAA,MAAM,EAAEL,kBAAkB,CAACK;AAH5B,KADD,EAMC,GAND;AAQA;;AAED,QAAMC,QAAQ,GAAG,IAAIZ,gBAAJ,CAAsBK,UAAtB,CAAjB;AACAO,EAAAA,QAAQ,CAACC,OAAT,CAAkBX,QAAQ,CAACC,IAA3B,EAAiC;AAChCW,IAAAA,UAAU,EAAE,IADoB;AAEhCC,IAAAA,iBAAiB,EAAE,KAFa;AAGhCC,IAAAA,aAAa,EAAE,IAHiB;AAIhCC,IAAAA,qBAAqB,EAAE,KAJS;AAKhCC,IAAAA,SAAS,EAAE,IALqB;AAMhCC,IAAAA,OAAO,EAAE;AANuB,GAAjC;AASAlB,EAAAA,MAAM,CAACmB,gBAAP,CAAyB,MAAzB,EAAiCf,UAAjC,EAA6C,IAA7C,EA9BsC,CAgCtC;AACA;AACA;;AACA,WAASgB,oBAAT,CAA+BC,UAA/B,EAAmE;AAClE,QAAKA,UAAU,CAACC,KAAhB,EAAwB;AAEtB,OAAE,OAAF,EAAW,QAAX,EAAqB,WAArB,EAAkC,WAAlC,CADD,CAEGC,OAFH,CAEY,UAAWD,KAAX,EAAmB;AAC9B,YACC,0BAA0BE,IAA1B,CAAgCH,UAAU,CAACC,KAAX,CAAkBA,KAAlB,CAAhC,CADD,EAEE;AACDD,UAAAA,UAAU,CAACC,KAAX,CAAkBA,KAAlB,IAA4B,EAA5B;AACA;AACD,OARD;AASA;AACD;;AAEDG,EAAAA,KAAK,CAACC,SAAN,CAAgBH,OAAhB,CAAwBI,IAAxB,CACC1B,QAAQ,CAAC2B,gBAAT,CAA2B,SAA3B,CADD,EAECR,oBAFD;AAIAK,EAAAA,KAAK,CAACC,SAAN,CAAgBH,OAAhB,CAAwBI,IAAxB,CACC1B,QAAQ,CAAC4B,WADV,EAEC,UAAWC,UAAX,EAAwB;AACvBL,IAAAA,KAAK,CAACC,SAAN,CAAgBH,OAAhB,CAAwBI,IAAxB,CACCG,UAAU,CAACC,QAAX,IAAuBD,UAAU,CAACE,KADnC,EAECZ,oBAFD;AAIA,GAPF;AAUAnB,EAAAA,QAAQ,CAACC,IAAT,CAAcoB,KAAd,CAAoBW,QAApB,GAA+B,UAA/B;AACAhC,EAAAA,QAAQ,CAACC,IAAT,CAAcoB,KAAd,CAAoBb,KAApB,GAA4B,MAA5B;AACAR,EAAAA,QAAQ,CAACC,IAAT,CAAcgC,YAAd,CAA4B,iCAA5B,EAA+D,EAA/D;AAEA9B,EAAAA,UAAU,GAnE4B,CAqEtC;AACA;;AACAJ,EAAAA,MAAM,CAACmB,gBAAP,CAAyB,QAAzB,EAAmCf,UAAnC,EAA+C,IAA/C;AACA,CAxED,C,CA0EA;;;AACA,MAAMkB,KAAK,GAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CArBA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASa,OAAT,OAOkB;AAAA,MAPA;AACjBC,IAAAA,IAAI,GAAG,EADU;AAEjBC,IAAAA,KAAK,GAAG,EAFS;AAGjBC,IAAAA,IAHiB;AAIjBC,IAAAA,MAAM,GAAG,EAJQ;AAKjBC,IAAAA,OAAO,GAAG,EALO;AAMjBC,IAAAA;AANiB,GAOA;AACjB,QAAMC,GAAG,GAAG,sBAAZ;AACA,QAAM,CAAEjC,KAAF,EAASkC,QAAT,IAAsB,uBAAU,CAAV,CAA5B;AACA,QAAM,CAAEjC,MAAF,EAAUkC,SAAV,IAAwB,uBAAU,CAAV,CAA9B;;AAEA,WAASC,iBAAT,GAA6B;AAC5B,QAAI;AAAA;;AACH,aAAO,CAAC,kBAAEH,GAAG,CAACI,OAAN,kEAAE,aAAaC,eAAf,kDAAE,sBAA8B7C,IAAhC,CAAR;AACA,KAFD,CAEE,OAAQ8C,CAAR,EAAY;AACb,aAAO,KAAP;AACA;AACD;;AAED,WAASC,UAAT,GAA6C;AAAA,QAAxBC,aAAwB,uEAAR,KAAQ;;AAC5C,QAAK,CAAEL,iBAAiB,EAAxB,EAA6B;AAC5B;AACA;;AAED,UAAM;AAAEE,MAAAA,eAAF;AAAmBI,MAAAA;AAAnB,QACLT,GAAG,CAACI,OADL;;AAKA,QACC,CAAEI,aAAF,IACA,UACCH,eADD,aACCA,eADD,uBACCA,eAAe,CAAE7C,IAAjB,CAAsBkD,YAAtB,CACC,iCADD,CADD,CAFD,EAME;AACD;AACA,KAlB2C,CAoB5C;AACA;AACA;AACA;;;AACA,UAAMC,OAAO,GACZ;AACC,MAAA,IAAI,EAAGF,aAAa,CAACG,eAAd,CAA8BC,IADtC;AAEC,MAAA,SAAS,EAAGjB;AAFb,OAIC,0CACC,2CAASD,KAAT,CADD,EAEC;AAAO,MAAA,uBAAuB,EAAG;AAAEmB,QAAAA,MAAM,EAAElC;AAAV;AAAjC,MAFD,EAGGiB,MAAM,CAACkB,GAAP,CAAY,CAAEzB,KAAF,EAAS0B,CAAT,KACb;AACC,MAAA,GAAG,EAAGA,CADP;AAEC,MAAA,uBAAuB,EAAG;AAAEF,QAAAA,MAAM,EAAExB;AAAV;AAF3B,MADC,CAHH,CAJD,EAcC;AACC,yCAAgC,iCADjC;AAEC,MAAA,SAAS,EAAGM;AAFb,OAIC;AAAK,MAAA,uBAAuB,EAAG;AAAEkB,QAAAA,MAAM,EAAEpB;AAAV;AAA/B,MAJD,EAKC;AACC,MAAA,IAAI,EAAC,iBADN;AAEC,MAAA,uBAAuB,EAAG;AACzBoB,QAAAA,MAAM,EAAG,IAAI1D,kBAAkB,CAAC6D,QAAnB,EAA+B;AADnB;AAF3B,MALD,EAWGnB,OAAO,CAACiB,GAAR,CAAeG,GAAF,IACd;AAAQ,MAAA,GAAG,EAAGA,GAAd;AAAoB,MAAA,GAAG,EAAGA;AAA1B,MADC,CAXH,CAdD,CADD,CAxB4C,CAyD5C;AACA;AACA;;AACAb,IAAAA,eAAe,CAACc,IAAhB;AACAd,IAAAA,eAAe,CAACe,KAAhB,CAAuB,oBAAoB,6BAAgBT,OAAhB,CAA3C;AACAN,IAAAA,eAAe,CAACgB,KAAhB;AACA;;AAED,0BAAW,MAAM;AAAA;;AAChBd,IAAAA,UAAU;;AAEV,aAASe,iBAAT,GAA6B;AAC5Bf,MAAAA,UAAU,CAAE,KAAF,CAAV;AACA;;AAED,aAASgB,qBAAT,CAAgCC,KAAhC,EAAsD;AACrD,YAAMC,MAAM,GAAGzB,GAAG,CAACI,OAAnB,CADqD,CAGrD;;AACA,UAAK,CAAEqB,MAAF,IAAYA,MAAM,CAACC,aAAP,KAAyBF,KAAK,CAACG,MAAhD,EAAyD;AACxD;AACA,OANoD,CAQrD;;;AACA,UAAIC,IAAI,GAAGJ,KAAK,CAACI,IAAN,IAAc,EAAzB;;AAEA,UAAK,aAAa,OAAOA,IAAzB,EAAgC;AAC/B,YAAI;AACHA,UAAAA,IAAI,GAAGC,IAAI,CAACC,KAAL,CAAYF,IAAZ,CAAP;AACA,SAFD,CAEE,OAAQtB,CAAR,EAAY,CAAE;AAChB,OAfoD,CAiBrD;AACA;;;AACA,UAAK,aAAasB,IAAI,CAAC9D,MAAvB,EAAgC;AAC/B;AACA;;AAEDmC,MAAAA,QAAQ,CAAE2B,IAAI,CAAC7D,KAAP,CAAR;AACAmC,MAAAA,SAAS,CAAE0B,IAAI,CAAC5D,MAAP,CAAT;AACA;;AAED,UAAMyD,MAAM,GAAGzB,GAAG,CAACI,OAAnB;AACA,UAAM2B,WAAW,GAAGN,MAAH,aAAGA,MAAH,gDAAGA,MAAM,CAAEhB,aAAX,0DAAG,sBAAuBsB,WAA3C,CAnCgB,CAqChB;AACA;AACA;AACA;;AACAN,IAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEhD,gBAAR,CAA0B,MAA1B,EAAkC6C,iBAAlC,EAAqD,KAArD;AACAS,IAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEtD,gBAAb,CAA+B,SAA/B,EAA0C8C,qBAA1C;AAEA,WAAO,MAAM;AACZE,MAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEO,mBAAR,CAA6B,MAA7B,EAAqCV,iBAArC,EAAwD,KAAxD;AACAS,MAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEtD,gBAAb,CAA+B,SAA/B,EAA0C8C,qBAA1C;AACA,KAHD,CA5CgB,CAgDhB;AACA;AACA;AACA,GAnDD,EAmDG,EAnDH;AAqDA,0BAAW,MAAM;AAChBhB,IAAAA,UAAU,GADM,CAEhB;AACA;AACA;AACA,GALD,EAKG,CAAEZ,KAAF,EAASE,MAAT,EAAiBC,OAAjB,CALH;AAOA,0BAAW,MAAM;AAChBS,IAAAA,UAAU,CAAE,IAAF,CAAV,CADgB,CAEhB;AACA;AACA;AACA,GALD,EAKG,CAAEb,IAAF,EAAQE,IAAR,CALH;AAOA,SACC;AACC,IAAA,GAAG,EAAG,2BAAc,CAAEI,GAAF,EAAO,kCAAP,CAAd,CADP;AAEC,IAAA,KAAK,EAAGL,KAFT;AAGC,IAAA,SAAS,EAAC,oBAHX;AAIC,IAAA,OAAO,EAAC,oDAJT;AAKC,IAAA,OAAO,EAAGI,OALX;AAMC,IAAA,KAAK,EAAGkC,IAAI,CAACC,IAAL,CAAWnE,KAAX,CANT;AAOC,IAAA,MAAM,EAAGkE,IAAI,CAACC,IAAL,CAAWlE,MAAX;AAPV,IADD;AAWA;;eAEcyB,O","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useFocusableIframe, useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport type { SandBoxProps } from './types';\n\nconst observeAndResizeJS = function () {\n\tconst { MutationObserver } = window;\n\n\tif ( ! MutationObserver || ! document.body || ! window.parent ) {\n\t\treturn;\n\t}\n\n\tfunction sendResize() {\n\t\tconst clientBoundingRect = document.body.getBoundingClientRect();\n\n\t\twindow.parent.postMessage(\n\t\t\t{\n\t\t\t\taction: 'resize',\n\t\t\t\twidth: clientBoundingRect.width,\n\t\t\t\theight: clientBoundingRect.height,\n\t\t\t},\n\t\t\t'*'\n\t\t);\n\t}\n\n\tconst observer = new MutationObserver( sendResize );\n\tobserver.observe( document.body, {\n\t\tattributes: true,\n\t\tattributeOldValue: false,\n\t\tcharacterData: true,\n\t\tcharacterDataOldValue: false,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t} );\n\n\twindow.addEventListener( 'load', sendResize, true );\n\n\t// Hack: Remove viewport unit styles, as these are relative\n\t// the iframe root and interfere with our mechanism for\n\t// determining the unconstrained page bounds.\n\tfunction removeViewportStyles( ruleOrNode: ElementCSSInlineStyle ) {\n\t\tif ( ruleOrNode.style ) {\n\t\t\t(\n\t\t\t\t[ 'width', 'height', 'minHeight', 'maxHeight' ] as const\n\t\t\t ).forEach( function ( style ) {\n\t\t\t\tif (\n\t\t\t\t\t/^\\\\d+(vmin|vmax|vh|vw)$/.test( ruleOrNode.style[ style ] )\n\t\t\t\t) {\n\t\t\t\t\truleOrNode.style[ style ] = '';\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tArray.prototype.forEach.call(\n\t\tdocument.querySelectorAll( '[style]' ),\n\t\tremoveViewportStyles\n\t);\n\tArray.prototype.forEach.call(\n\t\tdocument.styleSheets,\n\t\tfunction ( stylesheet ) {\n\t\t\tArray.prototype.forEach.call(\n\t\t\t\tstylesheet.cssRules || stylesheet.rules,\n\t\t\t\tremoveViewportStyles\n\t\t\t);\n\t\t}\n\t);\n\n\tdocument.body.style.position = 'absolute';\n\tdocument.body.style.width = '100%';\n\tdocument.body.setAttribute( 'data-resizable-iframe-connected', '' );\n\n\tsendResize();\n\n\t// Resize events can change the width of elements with 100% width, but we don't\n\t// get an DOM mutations for that, so do the resize when the window is resized, too.\n\twindow.addEventListener( 'resize', sendResize, true );\n};\n\n// TODO: These styles shouldn't be coupled with WordPress.\nconst style = `\n\tbody {\n\t\tmargin: 0;\n\t}\n\thtml,\n\tbody,\n\tbody > div {\n\t\twidth: 100%;\n\t}\n\thtml.wp-has-aspect-ratio,\n\tbody.wp-has-aspect-ratio,\n\tbody.wp-has-aspect-ratio > div,\n\tbody.wp-has-aspect-ratio > div iframe {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: hidden; /* If it has an aspect ratio, it shouldn't scroll. */\n\t}\n\tbody > div > * {\n\t\tmargin-top: 0 !important; /* Has to have !important to override inline styles. */\n\t\tmargin-bottom: 0 !important;\n\t}\n`;\n\n/**\n * This component provides an isolated environment for arbitrary HTML via iframes.\n *\n * ```jsx\n * import { SandBox } from '@wordpress/components';\n *\n * const MySandBox = () => (\n * \t<SandBox html=\"<p>Content</p>\" title=\"SandBox\" type=\"embed\" />\n * );\n * ```\n */\nfunction SandBox( {\n\thtml = '',\n\ttitle = '',\n\ttype,\n\tstyles = [],\n\tscripts = [],\n\tonFocus,\n}: SandBoxProps ) {\n\tconst ref = useRef< HTMLIFrameElement >();\n\tconst [ width, setWidth ] = useState( 0 );\n\tconst [ height, setHeight ] = useState( 0 );\n\n\tfunction isFrameAccessible() {\n\t\ttry {\n\t\t\treturn !! ref.current?.contentDocument?.body;\n\t\t} catch ( e ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction trySandBox( forceRerender = false ) {\n\t\tif ( ! isFrameAccessible() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { contentDocument, ownerDocument } =\n\t\t\tref.current as HTMLIFrameElement & {\n\t\t\t\tcontentDocument: Document;\n\t\t\t};\n\n\t\tif (\n\t\t\t! forceRerender &&\n\t\t\tnull !==\n\t\t\t\tcontentDocument?.body.getAttribute(\n\t\t\t\t\t'data-resizable-iframe-connected'\n\t\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Put the html snippet into a html document, and then write it to the iframe's document\n\t\t// we can use this in the future to inject custom styles or scripts.\n\t\t// Scripts go into the body rather than the head, to support embedded content such as Instagram\n\t\t// that expect the scripts to be part of the body.\n\t\tconst htmlDoc = (\n\t\t\t<html\n\t\t\t\tlang={ ownerDocument.documentElement.lang }\n\t\t\t\tclassName={ type }\n\t\t\t>\n\t\t\t\t<head>\n\t\t\t\t\t<title>{ title }</title>\n\t\t\t\t\t<style dangerouslySetInnerHTML={ { __html: style } } />\n\t\t\t\t\t{ styles.map( ( rules, i ) => (\n\t\t\t\t\t\t<style\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={ { __html: rules } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</head>\n\t\t\t\t<body\n\t\t\t\t\tdata-resizable-iframe-connected=\"data-resizable-iframe-connected\"\n\t\t\t\t\tclassName={ type }\n\t\t\t\t>\n\t\t\t\t\t<div dangerouslySetInnerHTML={ { __html: html } } />\n\t\t\t\t\t<script\n\t\t\t\t\t\ttype=\"text/javascript\"\n\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t__html: `(${ observeAndResizeJS.toString() })();`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t{ scripts.map( ( src ) => (\n\t\t\t\t\t\t<script key={ src } src={ src } />\n\t\t\t\t\t) ) }\n\t\t\t\t</body>\n\t\t\t</html>\n\t\t);\n\n\t\t// Writing the document like this makes it act in the same way as if it was\n\t\t// loaded over the network, so DOM creation and mutation, script execution, etc.\n\t\t// all work as expected.\n\t\tcontentDocument.open();\n\t\tcontentDocument.write( '<!DOCTYPE html>' + renderToString( htmlDoc ) );\n\t\tcontentDocument.close();\n\t}\n\n\tuseEffect( () => {\n\t\ttrySandBox();\n\n\t\tfunction tryNoForceSandBox() {\n\t\t\ttrySandBox( false );\n\t\t}\n\n\t\tfunction checkMessageForResize( event: MessageEvent ) {\n\t\t\tconst iframe = ref.current;\n\n\t\t\t// Verify that the mounted element is the source of the message.\n\t\t\tif ( ! iframe || iframe.contentWindow !== event.source ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Attempt to parse the message data as JSON if passed as string.\n\t\t\tlet data = event.data || {};\n\n\t\t\tif ( 'string' === typeof data ) {\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse( data );\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\t// Update the state only if the message is formatted as we expect,\n\t\t\t// i.e. as an object with a 'resize' action.\n\t\t\tif ( 'resize' !== data.action ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetWidth( data.width );\n\t\t\tsetHeight( data.height );\n\t\t}\n\n\t\tconst iframe = ref.current;\n\t\tconst defaultView = iframe?.ownerDocument?.defaultView;\n\n\t\t// This used to be registered using <iframe onLoad={} />, but it made the iframe blank\n\t\t// after reordering the containing block. See these two issues for more details:\n\t\t// https://github.com/WordPress/gutenberg/issues/6146\n\t\t// https://github.com/facebook/react/issues/18752\n\t\tiframe?.addEventListener( 'load', tryNoForceSandBox, false );\n\t\tdefaultView?.addEventListener( 'message', checkMessageForResize );\n\n\t\treturn () => {\n\t\t\tiframe?.removeEventListener( 'load', tryNoForceSandBox, false );\n\t\t\tdefaultView?.addEventListener( 'message', checkMessageForResize );\n\t\t};\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tuseEffect( () => {\n\t\ttrySandBox();\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ title, styles, scripts ] );\n\n\tuseEffect( () => {\n\t\ttrySandBox( true );\n\t\t// Ignore reason: passing `exhaustive-deps` will likely involve a more detailed refactor.\n\t\t// See https://github.com/WordPress/gutenberg/pull/44378\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ html, type ] );\n\n\treturn (\n\t\t<iframe\n\t\t\tref={ useMergeRefs( [ ref, useFocusableIframe() ] ) }\n\t\t\ttitle={ title }\n\t\t\tclassName=\"components-sandbox\"\n\t\t\tsandbox=\"allow-scripts allow-same-origin allow-presentation\"\n\t\t\tonFocus={ onFocus }\n\t\t\twidth={ Math.ceil( width ) }\n\t\t\theight={ Math.ceil( height ) }\n\t\t/>\n\t);\n}\n\nexport default SandBox;\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -34,7 +34,6 @@ var _button = _interopRequireDefault(require("../button"));
34
34
  const TabButton = _ref => {
35
35
  let {
36
36
  tabId,
37
- onClick,
38
37
  children,
39
38
  selected,
40
39
  ...rest
@@ -44,7 +43,7 @@ const TabButton = _ref => {
44
43
  tabIndex: selected ? null : -1,
45
44
  "aria-selected": selected,
46
45
  id: tabId,
47
- onClick: onClick
46
+ __experimentalIsFocusable: true
48
47
  }, rest), children);
49
48
  };
50
49
  /**
@@ -118,10 +117,15 @@ function TabPanel(_ref2) {
118
117
  });
119
118
  const selectedId = `${instanceId}-${(_selectedTab$name = selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.name) !== null && _selectedTab$name !== void 0 ? _selectedTab$name : 'none'}`;
120
119
  (0, _element.useEffect)(() => {
121
- if (!(selectedTab !== null && selectedTab !== void 0 && selectedTab.name) && tabs.length > 0) {
122
- handleTabSelection(initialTabName || tabs[0].name);
120
+ const firstEnabledTab = tabs.find(tab => !tab.disabled);
121
+ const initialTab = tabs.find(tab => tab.name === initialTabName);
122
+
123
+ if (!(selectedTab !== null && selectedTab !== void 0 && selectedTab.name) && firstEnabledTab) {
124
+ handleTabSelection(initialTab && !initialTab.disabled ? initialTab.name : firstEnabledTab.name);
125
+ } else if (selectedTab !== null && selectedTab !== void 0 && selectedTab.disabled && firstEnabledTab) {
126
+ handleTabSelection(firstEnabledTab.name);
123
127
  }
124
- }, [tabs, selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.name, initialTabName, handleTabSelection]);
128
+ }, [tabs, selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.name, selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.disabled, initialTabName, handleTabSelection]);
125
129
  return (0, _element.createElement)("div", {
126
130
  className: className
127
131
  }, (0, _element.createElement)(_navigableContainer.NavigableMenu, {
@@ -138,6 +142,7 @@ function TabPanel(_ref2) {
138
142
  selected: tab.name === selected,
139
143
  key: tab.name,
140
144
  onClick: () => handleTabSelection(tab.name),
145
+ disabled: tab.disabled,
141
146
  label: tab.icon && tab.title,
142
147
  icon: tab.icon,
143
148
  showTooltip: !!tab.icon
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/tab-panel/index.tsx"],"names":["TabButton","tabId","onClick","children","selected","rest","TabPanel","className","tabs","selectOnMove","initialTabName","orientation","activeClass","onSelect","instanceId","setSelected","handleTabSelection","tabKey","activateTabAutomatically","_childIndex","child","click","selectedTab","find","name","selectedId","length","undefined","map","tab","icon","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { NavigableMenu } from '../navigable-container';\nimport Button from '../button';\nimport type { TabButtonProps, TabPanelProps } from './types';\nimport type { WordPressComponentProps } from '../ui/context';\n\nconst TabButton = ( {\n\ttabId,\n\tonClick,\n\tchildren,\n\tselected,\n\t...rest\n}: TabButtonProps ) => (\n\t<Button\n\t\trole=\"tab\"\n\t\ttabIndex={ selected ? null : -1 }\n\t\taria-selected={ selected }\n\t\tid={ tabId }\n\t\tonClick={ onClick }\n\t\t{ ...rest }\n\t>\n\t\t{ children }\n\t</Button>\n);\n\n/**\n * TabPanel is an ARIA-compliant tabpanel.\n *\n * TabPanels organize content across different screens, data sets, and interactions.\n * It has two sections: a list of tabs, and the view to show when tabs are chosen.\n *\n * ```jsx\n * import { TabPanel } from '@wordpress/components';\n *\n * const onSelect = ( tabName ) => {\n * console.log( 'Selecting tab', tabName );\n * };\n *\n * const MyTabPanel = () => (\n * <TabPanel\n * className=\"my-tab-panel\"\n * activeClass=\"active-tab\"\n * onSelect={ onSelect }\n * tabs={ [\n * {\n * name: 'tab1',\n * title: 'Tab 1',\n * className: 'tab-one',\n * },\n * {\n * name: 'tab2',\n * title: 'Tab 2',\n * className: 'tab-two',\n * },\n * ] }\n * >\n * { ( tab ) => <p>{ tab.title }</p> }\n * </TabPanel>\n * );\n * ```\n */\nexport function TabPanel( {\n\tclassName,\n\tchildren,\n\ttabs,\n\tselectOnMove = true,\n\tinitialTabName,\n\torientation = 'horizontal',\n\tactiveClass = 'is-active',\n\tonSelect,\n}: WordPressComponentProps< TabPanelProps, 'div', false > ) {\n\tconst instanceId = useInstanceId( TabPanel, 'tab-panel' );\n\tconst [ selected, setSelected ] = useState< string >();\n\n\tconst handleTabSelection = useCallback(\n\t\t( tabKey: string ) => {\n\t\t\tsetSelected( tabKey );\n\t\t\tonSelect?.( tabKey );\n\t\t},\n\t\t[ onSelect ]\n\t);\n\n\t// Simulate a click on the newly focused tab, which causes the component\n\t// to show the `tab-panel` associated with the clicked tab.\n\tconst activateTabAutomatically = (\n\t\t_childIndex: number,\n\t\tchild: HTMLButtonElement\n\t) => {\n\t\tchild.click();\n\t};\n\tconst selectedTab = tabs.find( ( { name } ) => name === selected );\n\tconst selectedId = `${ instanceId }-${ selectedTab?.name ?? 'none' }`;\n\n\tuseEffect( () => {\n\t\tif ( ! selectedTab?.name && tabs.length > 0 ) {\n\t\t\thandleTabSelection( initialTabName || tabs[ 0 ].name );\n\t\t}\n\t}, [ tabs, selectedTab?.name, initialTabName, handleTabSelection ] );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<NavigableMenu\n\t\t\t\trole=\"tablist\"\n\t\t\t\torientation={ orientation }\n\t\t\t\tonNavigate={\n\t\t\t\t\tselectOnMove ? activateTabAutomatically : undefined\n\t\t\t\t}\n\t\t\t\tclassName=\"components-tab-panel__tabs\"\n\t\t\t>\n\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t<TabButton\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'components-tab-panel__tabs-item',\n\t\t\t\t\t\t\ttab.className,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[ activeClass ]: tab.name === selected,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\ttabId={ `${ instanceId }-${ tab.name }` }\n\t\t\t\t\t\taria-controls={ `${ instanceId }-${ tab.name }-view` }\n\t\t\t\t\t\tselected={ tab.name === selected }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\tonClick={ () => handleTabSelection( tab.name ) }\n\t\t\t\t\t\tlabel={ tab.icon && tab.title }\n\t\t\t\t\t\ticon={ tab.icon }\n\t\t\t\t\t\tshowTooltip={ !! tab.icon }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! tab.icon && tab.title }\n\t\t\t\t\t</TabButton>\n\t\t\t\t) ) }\n\t\t\t</NavigableMenu>\n\t\t\t{ selectedTab && (\n\t\t\t\t<div\n\t\t\t\t\tkey={ selectedId }\n\t\t\t\t\taria-labelledby={ selectedId }\n\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\tid={ `${ selectedId }-view` }\n\t\t\t\t\tclassName=\"components-tab-panel__tab-content\"\n\t\t\t\t>\n\t\t\t\t\t{ children( selectedTab ) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default TabPanel;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/tab-panel/index.tsx"],"names":["TabButton","tabId","children","selected","rest","TabPanel","className","tabs","selectOnMove","initialTabName","orientation","activeClass","onSelect","instanceId","setSelected","handleTabSelection","tabKey","activateTabAutomatically","_childIndex","child","click","selectedTab","find","name","selectedId","firstEnabledTab","tab","disabled","initialTab","undefined","map","icon","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { NavigableMenu } from '../navigable-container';\nimport Button from '../button';\nimport type { TabButtonProps, TabPanelProps } from './types';\nimport type { WordPressComponentProps } from '../ui/context';\n\nconst TabButton = ( {\n\ttabId,\n\tchildren,\n\tselected,\n\t...rest\n}: TabButtonProps ) => (\n\t<Button\n\t\trole=\"tab\"\n\t\ttabIndex={ selected ? null : -1 }\n\t\taria-selected={ selected }\n\t\tid={ tabId }\n\t\t__experimentalIsFocusable\n\t\t{ ...rest }\n\t>\n\t\t{ children }\n\t</Button>\n);\n\n/**\n * TabPanel is an ARIA-compliant tabpanel.\n *\n * TabPanels organize content across different screens, data sets, and interactions.\n * It has two sections: a list of tabs, and the view to show when tabs are chosen.\n *\n * ```jsx\n * import { TabPanel } from '@wordpress/components';\n *\n * const onSelect = ( tabName ) => {\n * console.log( 'Selecting tab', tabName );\n * };\n *\n * const MyTabPanel = () => (\n * <TabPanel\n * className=\"my-tab-panel\"\n * activeClass=\"active-tab\"\n * onSelect={ onSelect }\n * tabs={ [\n * {\n * name: 'tab1',\n * title: 'Tab 1',\n * className: 'tab-one',\n * },\n * {\n * name: 'tab2',\n * title: 'Tab 2',\n * className: 'tab-two',\n * },\n * ] }\n * >\n * { ( tab ) => <p>{ tab.title }</p> }\n * </TabPanel>\n * );\n * ```\n */\nexport function TabPanel( {\n\tclassName,\n\tchildren,\n\ttabs,\n\tselectOnMove = true,\n\tinitialTabName,\n\torientation = 'horizontal',\n\tactiveClass = 'is-active',\n\tonSelect,\n}: WordPressComponentProps< TabPanelProps, 'div', false > ) {\n\tconst instanceId = useInstanceId( TabPanel, 'tab-panel' );\n\tconst [ selected, setSelected ] = useState< string >();\n\n\tconst handleTabSelection = useCallback(\n\t\t( tabKey: string ) => {\n\t\t\tsetSelected( tabKey );\n\t\t\tonSelect?.( tabKey );\n\t\t},\n\t\t[ onSelect ]\n\t);\n\n\t// Simulate a click on the newly focused tab, which causes the component\n\t// to show the `tab-panel` associated with the clicked tab.\n\tconst activateTabAutomatically = (\n\t\t_childIndex: number,\n\t\tchild: HTMLButtonElement\n\t) => {\n\t\tchild.click();\n\t};\n\tconst selectedTab = tabs.find( ( { name } ) => name === selected );\n\tconst selectedId = `${ instanceId }-${ selectedTab?.name ?? 'none' }`;\n\n\tuseEffect( () => {\n\t\tconst firstEnabledTab = tabs.find( ( tab ) => ! tab.disabled );\n\t\tconst initialTab = tabs.find( ( tab ) => tab.name === initialTabName );\n\t\tif ( ! selectedTab?.name && firstEnabledTab ) {\n\t\t\thandleTabSelection(\n\t\t\t\tinitialTab && ! initialTab.disabled\n\t\t\t\t\t? initialTab.name\n\t\t\t\t\t: firstEnabledTab.name\n\t\t\t);\n\t\t} else if ( selectedTab?.disabled && firstEnabledTab ) {\n\t\t\thandleTabSelection( firstEnabledTab.name );\n\t\t}\n\t}, [\n\t\ttabs,\n\t\tselectedTab?.name,\n\t\tselectedTab?.disabled,\n\t\tinitialTabName,\n\t\thandleTabSelection,\n\t] );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<NavigableMenu\n\t\t\t\trole=\"tablist\"\n\t\t\t\torientation={ orientation }\n\t\t\t\tonNavigate={\n\t\t\t\t\tselectOnMove ? activateTabAutomatically : undefined\n\t\t\t\t}\n\t\t\t\tclassName=\"components-tab-panel__tabs\"\n\t\t\t>\n\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t<TabButton\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'components-tab-panel__tabs-item',\n\t\t\t\t\t\t\ttab.className,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[ activeClass ]: tab.name === selected,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\ttabId={ `${ instanceId }-${ tab.name }` }\n\t\t\t\t\t\taria-controls={ `${ instanceId }-${ tab.name }-view` }\n\t\t\t\t\t\tselected={ tab.name === selected }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t\tonClick={ () => handleTabSelection( tab.name ) }\n\t\t\t\t\t\tdisabled={ tab.disabled }\n\t\t\t\t\t\tlabel={ tab.icon && tab.title }\n\t\t\t\t\t\ticon={ tab.icon }\n\t\t\t\t\t\tshowTooltip={ !! tab.icon }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! tab.icon && tab.title }\n\t\t\t\t\t</TabButton>\n\t\t\t\t) ) }\n\t\t\t</NavigableMenu>\n\t\t\t{ selectedTab && (\n\t\t\t\t<div\n\t\t\t\t\tkey={ selectedId }\n\t\t\t\t\taria-labelledby={ selectedId }\n\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\tid={ `${ selectedId }-view` }\n\t\t\t\t\tclassName=\"components-tab-panel__tab-content\"\n\t\t\t\t>\n\t\t\t\t\t{ children( selectedTab ) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default TabPanel;\n"]}
@@ -5,70 +5,52 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
9
-
10
- var _element = require("@wordpress/element");
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
- var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
17
-
18
- var _toolbarGroup = _interopRequireDefault(require("../toolbar-group"));
19
-
20
- var _toolbarContainer = _interopRequireDefault(require("./toolbar-container"));
21
-
22
- /**
23
- * External dependencies
24
- */
25
-
26
- /**
27
- * WordPress dependencies
28
- */
29
-
30
- /**
31
- * Internal dependencies
32
- */
8
+ Object.defineProperty(exports, "Toolbar", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _toolbar.default;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "ToolbarButton", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _toolbarButton.default;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "ToolbarContext", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _toolbarContext.default;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "ToolbarDropdownMenu", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _toolbarDropdownMenu.default;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "ToolbarGroup", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _toolbarGroup.default;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "ToolbarItem", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _toolbarItem.default;
42
+ }
43
+ });
33
44
 
34
- /**
35
- * Renders a toolbar.
36
- *
37
- * To add controls, simply pass `ToolbarButton` components as children.
38
- *
39
- * @param {Object} props Component props.
40
- * @param {string} [props.className] Class to set on the container div.
41
- * @param {string} [props.label] ARIA label for toolbar container.
42
- * @param {Object} ref React Element ref.
43
- */
44
- function Toolbar(_ref, ref) {
45
- let {
46
- className,
47
- label,
48
- ...props
49
- } = _ref;
45
+ var _toolbar = _interopRequireDefault(require("./toolbar"));
50
46
 
51
- if (!label) {
52
- (0, _deprecated.default)('Using Toolbar without label prop', {
53
- since: '5.6',
54
- alternative: 'ToolbarGroup component',
55
- link: 'https://developer.wordpress.org/block-editor/components/toolbar/'
56
- });
57
- return (0, _element.createElement)(_toolbarGroup.default, (0, _extends2.default)({}, props, {
58
- className: className
59
- }));
60
- } // `ToolbarGroup` already uses components-toolbar for compatibility reasons.
47
+ var _toolbarButton = _interopRequireDefault(require("./toolbar-button"));
61
48
 
49
+ var _toolbarContext = _interopRequireDefault(require("./toolbar-context"));
62
50
 
63
- const finalClassName = (0, _classnames.default)('components-accessible-toolbar', className);
64
- return (0, _element.createElement)(_toolbarContainer.default, (0, _extends2.default)({
65
- className: finalClassName,
66
- label: label,
67
- ref: ref
68
- }, props));
69
- }
51
+ var _toolbarDropdownMenu = _interopRequireDefault(require("./toolbar-dropdown-menu"));
70
52
 
71
- var _default = (0, _element.forwardRef)(Toolbar);
53
+ var _toolbarGroup = _interopRequireDefault(require("./toolbar-group"));
72
54
 
73
- exports.default = _default;
55
+ var _toolbarItem = _interopRequireDefault(require("./toolbar-item"));
74
56
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/toolbar/index.js"],"names":["Toolbar","ref","className","label","props","since","alternative","link","finalClassName"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AAMA;;AAKA;;AACA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAT,OAAkDC,GAAlD,EAAwD;AAAA,MAAtC;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,KAAb;AAAoB,OAAGC;AAAvB,GAAsC;;AACvD,MAAK,CAAED,KAAP,EAAe;AACd,6BAAY,kCAAZ,EAAgD;AAC/CE,MAAAA,KAAK,EAAE,KADwC;AAE/CC,MAAAA,WAAW,EAAE,wBAFkC;AAG/CC,MAAAA,IAAI,EAAE;AAHyC,KAAhD;AAKA,WAAO,4BAAC,qBAAD,6BAAmBH,KAAnB;AAA2B,MAAA,SAAS,EAAGF;AAAvC,OAAP;AACA,GARsD,CASvD;;;AACA,QAAMM,cAAc,GAAG,yBACtB,+BADsB,EAEtBN,SAFsB,CAAvB;AAIA,SACC,4BAAC,yBAAD;AACC,IAAA,SAAS,EAAGM,cADb;AAEC,IAAA,KAAK,EAAGL,KAFT;AAGC,IAAA,GAAG,EAAGF;AAHP,KAIMG,KAJN,EADD;AAQA;;eAEc,yBAAYJ,OAAZ,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport ToolbarGroup from '../toolbar-group';\nimport ToolbarContainer from './toolbar-container';\n\n/**\n * Renders a toolbar.\n *\n * To add controls, simply pass `ToolbarButton` components as children.\n *\n * @param {Object} props Component props.\n * @param {string} [props.className] Class to set on the container div.\n * @param {string} [props.label] ARIA label for toolbar container.\n * @param {Object} ref React Element ref.\n */\nfunction Toolbar( { className, label, ...props }, ref ) {\n\tif ( ! label ) {\n\t\tdeprecated( 'Using Toolbar without label prop', {\n\t\t\tsince: '5.6',\n\t\t\talternative: 'ToolbarGroup component',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/components/toolbar/',\n\t\t} );\n\t\treturn <ToolbarGroup { ...props } className={ className } />;\n\t}\n\t// `ToolbarGroup` already uses components-toolbar for compatibility reasons.\n\tconst finalClassName = classnames(\n\t\t'components-accessible-toolbar',\n\t\tclassName\n\t);\n\treturn (\n\t\t<ToolbarContainer\n\t\t\tclassName={ finalClassName }\n\t\t\tlabel={ label }\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( Toolbar );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/toolbar/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export { default as Toolbar } from './toolbar';\nexport { default as ToolbarButton } from './toolbar-button';\nexport { default as ToolbarContext } from './toolbar-context';\nexport { default as ToolbarDropdownMenu } from './toolbar-dropdown-menu';\nexport { default as ToolbarGroup } from './toolbar-group';\nexport { default as ToolbarItem } from './toolbar-item';\n"]}