@wordpress/components 19.10.0 → 19.11.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 (420) hide show
  1. package/CHANGELOG.md +24 -6
  2. package/build/border-box-control/border-box-control/component.js +22 -7
  3. package/build/border-box-control/border-box-control/component.js.map +1 -1
  4. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -2
  5. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  6. package/build/border-box-control/border-box-control-split-controls/component.js +21 -8
  7. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  8. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -2
  9. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  10. package/build/border-box-control/styles.js +11 -15
  11. package/build/border-box-control/styles.js.map +1 -1
  12. package/build/border-control/border-control/component.js +5 -3
  13. package/build/border-control/border-control/component.js.map +1 -1
  14. package/build/border-control/border-control/hook.js +6 -3
  15. package/build/border-control/border-control/hook.js.map +1 -1
  16. package/build/border-control/border-control-dropdown/component.js +6 -2
  17. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  18. package/build/border-control/border-control-dropdown/hook.js +5 -5
  19. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  20. package/build/border-control/styles.js +58 -29
  21. package/build/border-control/styles.js.map +1 -1
  22. package/build/button/index.native.js +16 -2
  23. package/build/button/index.native.js.map +1 -1
  24. package/build/button-group/index.js +24 -7
  25. package/build/button-group/index.js.map +1 -1
  26. package/build/{flyout → button-group}/types.js +0 -0
  27. package/build/button-group/types.js.map +1 -0
  28. package/build/checkbox-control/index.js +34 -7
  29. package/build/checkbox-control/index.js.map +1 -1
  30. package/build/checkbox-control/types.js +6 -0
  31. package/build/checkbox-control/types.js.map +1 -0
  32. package/build/color-palette/index.js +5 -12
  33. package/build/color-palette/index.js.map +1 -1
  34. package/build/date-time/date.js +43 -19
  35. package/build/date-time/date.js.map +1 -1
  36. package/build/date-time/index.js +28 -3
  37. package/build/date-time/index.js.map +1 -1
  38. package/build/date-time/time.js +42 -40
  39. package/build/date-time/time.js.map +1 -1
  40. package/build/date-time/timezone.js +4 -3
  41. package/build/date-time/timezone.js.map +1 -1
  42. package/build/date-time/types.js +6 -0
  43. package/build/date-time/types.js.map +1 -0
  44. package/build/date-time/utils.js +6 -4
  45. package/build/date-time/utils.js.map +1 -1
  46. package/build/disabled/index.js +1 -1
  47. package/build/disabled/index.js.map +1 -1
  48. package/build/draggable/index.native.js +223 -0
  49. package/build/draggable/index.native.js.map +1 -0
  50. package/build/dropdown/index.js +7 -5
  51. package/build/dropdown/index.js.map +1 -1
  52. package/build/focal-point-picker/index.native.js +3 -3
  53. package/build/focal-point-picker/index.native.js.map +1 -1
  54. package/build/index.js +0 -8
  55. package/build/index.js.map +1 -1
  56. package/build/index.native.js +16 -0
  57. package/build/index.native.js.map +1 -1
  58. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  59. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  60. package/build/mobile/bottom-sheet/index.native.js +1 -1
  61. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  62. package/build/mobile/bottom-sheet-select-control/index.native.js +3 -2
  63. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  64. package/build/mobile/html-text-input/index.native.js +19 -8
  65. package/build/mobile/html-text-input/index.native.js.map +1 -1
  66. package/build/mobile/keyboard-aware-flat-list/index.android.js +28 -5
  67. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  68. package/build/mobile/keyboard-aware-flat-list/index.ios.js +47 -24
  69. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  70. package/build/palette-edit/index.js +38 -7
  71. package/build/palette-edit/index.js.map +1 -1
  72. package/build/popover/index.js +223 -277
  73. package/build/popover/index.js.map +1 -1
  74. package/build/resizable-box/resize-tooltip/utils.js +5 -8
  75. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  76. package/build/sandbox/index.native.js +1 -1
  77. package/build/sandbox/index.native.js.map +1 -1
  78. package/build/select-control/styles/select-control-styles.js +14 -11
  79. package/build/select-control/styles/select-control-styles.js.map +1 -1
  80. package/build/toggle-group-control/toggle-group-control/component.js +1 -3
  81. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  82. package/build/tooltip/index.js +2 -2
  83. package/build/tooltip/index.js.map +1 -1
  84. package/build-module/border-box-control/border-box-control/component.js +22 -7
  85. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  86. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -2
  87. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  88. package/build-module/border-box-control/border-box-control-split-controls/component.js +21 -8
  89. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  90. package/build-module/border-box-control/border-box-control-visualizer/hook.js +3 -2
  91. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  92. package/build-module/border-box-control/styles.js +9 -15
  93. package/build-module/border-box-control/styles.js.map +1 -1
  94. package/build-module/border-control/border-control/component.js +5 -3
  95. package/build-module/border-control/border-control/component.js.map +1 -1
  96. package/build-module/border-control/border-control/hook.js +6 -3
  97. package/build-module/border-control/border-control/hook.js.map +1 -1
  98. package/build-module/border-control/border-control-dropdown/component.js +6 -2
  99. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  100. package/build-module/border-control/border-control-dropdown/hook.js +5 -5
  101. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  102. package/build-module/border-control/styles.js +56 -29
  103. package/build-module/border-control/styles.js.map +1 -1
  104. package/build-module/button/index.native.js +16 -3
  105. package/build-module/button/index.native.js.map +1 -1
  106. package/build-module/button-group/index.js +27 -7
  107. package/build-module/button-group/index.js.map +1 -1
  108. package/build-module/{flyout → button-group}/types.js +0 -0
  109. package/build-module/{flyout → button-group}/types.js.map +0 -0
  110. package/build-module/checkbox-control/index.js +31 -7
  111. package/build-module/checkbox-control/index.js.map +1 -1
  112. package/build-module/checkbox-control/types.js +2 -0
  113. package/{build/flyout → build-module/checkbox-control}/types.js.map +0 -0
  114. package/build-module/color-palette/index.js +5 -11
  115. package/build-module/color-palette/index.js.map +1 -1
  116. package/build-module/date-time/date.js +44 -19
  117. package/build-module/date-time/date.js.map +1 -1
  118. package/build-module/date-time/index.js +28 -4
  119. package/build-module/date-time/index.js.map +1 -1
  120. package/build-module/date-time/time.js +43 -41
  121. package/build-module/date-time/time.js.map +1 -1
  122. package/build-module/date-time/timezone.js +4 -3
  123. package/build-module/date-time/timezone.js.map +1 -1
  124. package/build-module/date-time/types.js +2 -0
  125. package/build-module/date-time/types.js.map +1 -0
  126. package/build-module/date-time/utils.js +6 -4
  127. package/build-module/date-time/utils.js.map +1 -1
  128. package/build-module/disabled/index.js +1 -1
  129. package/build-module/disabled/index.js.map +1 -1
  130. package/build-module/draggable/index.native.js +206 -0
  131. package/build-module/draggable/index.native.js.map +1 -0
  132. package/build-module/dropdown/index.js +7 -5
  133. package/build-module/dropdown/index.js.map +1 -1
  134. package/build-module/focal-point-picker/index.native.js +3 -3
  135. package/build-module/focal-point-picker/index.native.js.map +1 -1
  136. package/build-module/index.js +0 -1
  137. package/build-module/index.js.map +1 -1
  138. package/build-module/index.native.js +2 -1
  139. package/build-module/index.native.js.map +1 -1
  140. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  141. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  142. package/build-module/mobile/bottom-sheet/index.native.js +1 -1
  143. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  144. package/build-module/mobile/bottom-sheet-select-control/index.native.js +3 -2
  145. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  146. package/build-module/mobile/html-text-input/index.native.js +20 -9
  147. package/build-module/mobile/html-text-input/index.native.js.map +1 -1
  148. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +21 -5
  149. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  150. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +42 -25
  151. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  152. package/build-module/palette-edit/index.js +37 -7
  153. package/build-module/palette-edit/index.js.map +1 -1
  154. package/build-module/popover/index.js +225 -279
  155. package/build-module/popover/index.js.map +1 -1
  156. package/build-module/resizable-box/resize-tooltip/utils.js +4 -5
  157. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  158. package/build-module/sandbox/index.native.js +1 -1
  159. package/build-module/sandbox/index.native.js.map +1 -1
  160. package/build-module/select-control/styles/select-control-styles.js +14 -11
  161. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  162. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -3
  163. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  164. package/build-module/tooltip/index.js +2 -2
  165. package/build-module/tooltip/index.js.map +1 -1
  166. package/build-style/style-rtl.css +31 -170
  167. package/build-style/style.css +27 -170
  168. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  169. package/build-types/border-box-control/border-box-control/hook.d.ts +3 -1
  170. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  171. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  172. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  173. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +3 -1
  174. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  175. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  176. package/build-types/border-box-control/styles.d.ts +2 -2
  177. package/build-types/border-box-control/styles.d.ts.map +1 -1
  178. package/build-types/border-box-control/types.d.ts +40 -13
  179. package/build-types/border-box-control/types.d.ts.map +1 -1
  180. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  181. package/build-types/border-control/border-control/hook.d.ts +2 -1
  182. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  183. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  184. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
  185. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  186. package/build-types/border-control/styles.d.ts +2 -1
  187. package/build-types/border-control/styles.d.ts.map +1 -1
  188. package/build-types/border-control/types.d.ts +18 -6
  189. package/build-types/border-control/types.d.ts.map +1 -1
  190. package/build-types/button-group/index.d.ts +25 -0
  191. package/build-types/button-group/index.d.ts.map +1 -0
  192. package/build-types/button-group/stories/index.d.ts +12 -0
  193. package/build-types/button-group/stories/index.d.ts.map +1 -0
  194. package/build-types/button-group/types.d.ts +11 -0
  195. package/build-types/button-group/types.d.ts.map +1 -0
  196. package/build-types/checkbox-control/index.d.ts +26 -0
  197. package/build-types/checkbox-control/index.d.ts.map +1 -0
  198. package/build-types/checkbox-control/stories/index.d.ts +13 -0
  199. package/build-types/checkbox-control/stories/index.d.ts.map +1 -0
  200. package/build-types/checkbox-control/types.d.ts +35 -0
  201. package/build-types/checkbox-control/types.d.ts.map +1 -0
  202. package/build-types/color-palette/index.d.ts.map +1 -1
  203. package/build-types/color-picker/styles.d.ts +1 -1
  204. package/build-types/date-time/date.d.ts +24 -0
  205. package/build-types/date-time/date.d.ts.map +1 -0
  206. package/build-types/date-time/index.d.ts +35 -0
  207. package/build-types/date-time/index.d.ts.map +1 -0
  208. package/build-types/date-time/stories/date.d.ts +14 -0
  209. package/build-types/date-time/stories/date.d.ts.map +1 -0
  210. package/build-types/date-time/stories/index.d.ts +14 -0
  211. package/build-types/date-time/stories/index.d.ts.map +1 -0
  212. package/build-types/date-time/stories/time.d.ts +12 -0
  213. package/build-types/date-time/stories/time.d.ts.map +1 -0
  214. package/build-types/date-time/stories/utils.d.ts +3 -0
  215. package/build-types/date-time/stories/utils.d.ts.map +1 -0
  216. package/build-types/date-time/test/date.d.ts +2 -0
  217. package/build-types/date-time/test/date.d.ts.map +1 -0
  218. package/build-types/date-time/test/time.d.ts +2 -0
  219. package/build-types/date-time/test/time.d.ts.map +1 -0
  220. package/build-types/date-time/test/utils.d.ts +2 -0
  221. package/build-types/date-time/test/utils.d.ts.map +1 -0
  222. package/build-types/date-time/time.d.ts +25 -0
  223. package/build-types/date-time/time.d.ts.map +1 -0
  224. package/build-types/date-time/timezone.d.ts +8 -0
  225. package/build-types/date-time/timezone.d.ts.map +1 -0
  226. package/build-types/date-time/types.d.ts +91 -0
  227. package/build-types/date-time/types.d.ts.map +1 -0
  228. package/build-types/date-time/utils.d.ts +15 -0
  229. package/build-types/date-time/utils.d.ts.map +1 -0
  230. package/build-types/dropdown/index.d.ts.map +1 -1
  231. package/build-types/input-control/index.d.ts +1 -1
  232. package/build-types/input-control/stories/index.d.ts +5 -5
  233. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  234. package/build-types/popover/index.d.ts +5 -7
  235. package/build-types/popover/index.d.ts.map +1 -1
  236. package/build-types/resizable-box/index.d.ts +1 -1
  237. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  238. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  239. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  240. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  241. package/build-types/tooltip/index.d.ts.map +1 -1
  242. package/package.json +19 -19
  243. package/src/autocomplete/style.scss +1 -1
  244. package/src/border-box-control/border-box-control/README.md +10 -14
  245. package/src/border-box-control/border-box-control/component.tsx +21 -4
  246. package/src/border-box-control/border-box-control-linked-button/hook.ts +10 -6
  247. package/src/border-box-control/border-box-control-split-controls/component.tsx +24 -7
  248. package/src/border-box-control/border-box-control-visualizer/hook.ts +11 -6
  249. package/src/border-box-control/stories/index.js +1 -0
  250. package/src/border-box-control/styles.ts +15 -8
  251. package/src/border-box-control/types.ts +40 -14
  252. package/src/border-control/border-control/README.md +0 -7
  253. package/src/border-control/border-control/component.tsx +4 -2
  254. package/src/border-control/border-control/hook.ts +5 -2
  255. package/src/border-control/border-control-dropdown/component.tsx +18 -11
  256. package/src/border-control/border-control-dropdown/hook.ts +7 -5
  257. package/src/border-control/stories/index.js +1 -0
  258. package/src/border-control/styles.ts +82 -22
  259. package/src/border-control/types.ts +18 -6
  260. package/src/button/index.native.js +33 -18
  261. package/src/button-group/index.tsx +47 -0
  262. package/src/button-group/stories/index.tsx +41 -0
  263. package/src/button-group/types.ts +11 -0
  264. package/src/checkbox-control/README.md +10 -8
  265. package/src/checkbox-control/{index.js → index.tsx} +49 -14
  266. package/src/checkbox-control/stories/{index.js → index.tsx} +49 -27
  267. package/src/checkbox-control/types.ts +36 -0
  268. package/src/circular-option-picker/style.scss +1 -0
  269. package/src/color-palette/index.js +6 -13
  270. package/src/color-palette/style.scss +3 -18
  271. package/src/date-time/README.md +13 -10
  272. package/src/date-time/{date.js → date.tsx} +49 -20
  273. package/src/date-time/{index.js → index.tsx} +31 -5
  274. package/src/date-time/stories/date.tsx +73 -0
  275. package/src/date-time/stories/index.tsx +75 -0
  276. package/src/date-time/stories/time.tsx +51 -0
  277. package/src/date-time/stories/utils.ts +9 -0
  278. package/src/date-time/test/{date.js → date.tsx} +3 -2
  279. package/src/date-time/test/{time.js → time.tsx} +34 -19
  280. package/src/date-time/test/{utils.js → utils.ts} +1 -1
  281. package/src/date-time/{time.js → time.tsx} +57 -46
  282. package/src/date-time/{timezone.js → timezone.tsx} +4 -3
  283. package/src/date-time/types.ts +106 -0
  284. package/src/date-time/utils.ts +20 -0
  285. package/src/disabled/index.js +1 -1
  286. package/src/draggable/index.native.js +215 -0
  287. package/src/draggable/style.native.scss +3 -0
  288. package/src/dropdown/index.js +9 -4
  289. package/src/dropdown/style.scss +1 -1
  290. package/src/focal-point-picker/index.native.js +3 -3
  291. package/src/form-file-upload/test/index.js +8 -4
  292. package/src/index.js +0 -1
  293. package/src/index.native.js +1 -0
  294. package/src/item-group/stories/index.js +22 -18
  295. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
  296. package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +1 -1
  297. package/src/mobile/bottom-sheet/index.native.js +1 -1
  298. package/src/mobile/bottom-sheet-select-control/index.native.js +7 -2
  299. package/src/mobile/html-text-input/index.native.js +45 -29
  300. package/src/mobile/html-text-input/style.android.scss +1 -15
  301. package/src/mobile/html-text-input/style.ios.scss +1 -15
  302. package/src/mobile/html-text-input/{style-common.native.scss → style.scss} +16 -0
  303. package/src/mobile/keyboard-aware-flat-list/index.android.js +15 -5
  304. package/src/mobile/keyboard-aware-flat-list/index.ios.js +75 -46
  305. package/src/navigator/stories/index.js +16 -10
  306. package/src/palette-edit/index.js +37 -9
  307. package/src/palette-edit/style.scss +0 -7
  308. package/src/palette-edit/test/index.js +63 -0
  309. package/src/panel/README.md +1 -1
  310. package/src/placeholder/test/index.js +7 -0
  311. package/src/popover/README.md +7 -9
  312. package/src/popover/index.js +242 -371
  313. package/src/popover/style.scss +20 -190
  314. package/src/popover/test/__snapshots__/index.js.snap +6 -18
  315. package/src/resizable-box/resize-tooltip/utils.ts +4 -5
  316. package/src/sandbox/index.native.js +1 -1
  317. package/src/select-control/styles/select-control-styles.ts +6 -3
  318. package/src/tab-panel/style.scss +1 -1
  319. package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -10
  320. package/src/toggle-group-control/toggle-group-control/component.tsx +7 -3
  321. package/src/tooltip/index.js +8 -2
  322. package/src/tooltip/style.scss +2 -4
  323. package/src/tooltip/test/index.native.js +1 -1
  324. package/src/unit-control/test/index.tsx +84 -4
  325. package/tsconfig.json +6 -2
  326. package/tsconfig.tsbuildinfo +1 -1
  327. package/build/flyout/context.js +0 -23
  328. package/build/flyout/context.js.map +0 -1
  329. package/build/flyout/flyout/component.js +0 -106
  330. package/build/flyout/flyout/component.js.map +0 -1
  331. package/build/flyout/flyout/hook.js +0 -53
  332. package/build/flyout/flyout/hook.js.map +0 -1
  333. package/build/flyout/flyout/index.js +0 -24
  334. package/build/flyout/flyout/index.js.map +0 -1
  335. package/build/flyout/flyout-content/component.js +0 -65
  336. package/build/flyout/flyout-content/component.js.map +0 -1
  337. package/build/flyout/flyout-content/index.js +0 -16
  338. package/build/flyout/flyout-content/index.js.map +0 -1
  339. package/build/flyout/index.js +0 -16
  340. package/build/flyout/index.js.map +0 -1
  341. package/build/flyout/styles.js +0 -46
  342. package/build/flyout/styles.js.map +0 -1
  343. package/build/flyout/utils.js +0 -36
  344. package/build/flyout/utils.js.map +0 -1
  345. package/build/mobile/html-text-input/container.android.js +0 -41
  346. package/build/mobile/html-text-input/container.android.js.map +0 -1
  347. package/build/mobile/html-text-input/container.ios.js +0 -60
  348. package/build/mobile/html-text-input/container.ios.js.map +0 -1
  349. package/build/popover/utils.js +0 -322
  350. package/build/popover/utils.js.map +0 -1
  351. package/build-module/flyout/context.js +0 -11
  352. package/build-module/flyout/context.js.map +0 -1
  353. package/build-module/flyout/flyout/component.js +0 -89
  354. package/build-module/flyout/flyout/component.js.map +0 -1
  355. package/build-module/flyout/flyout/hook.js +0 -44
  356. package/build-module/flyout/flyout/hook.js.map +0 -1
  357. package/build-module/flyout/flyout/index.js +0 -3
  358. package/build-module/flyout/flyout/index.js.map +0 -1
  359. package/build-module/flyout/flyout-content/component.js +0 -51
  360. package/build-module/flyout/flyout-content/component.js.map +0 -1
  361. package/build-module/flyout/flyout-content/index.js +0 -2
  362. package/build-module/flyout/flyout-content/index.js.map +0 -1
  363. package/build-module/flyout/index.js +0 -2
  364. package/build-module/flyout/index.js.map +0 -1
  365. package/build-module/flyout/styles.js +0 -27
  366. package/build-module/flyout/styles.js.map +0 -1
  367. package/build-module/flyout/utils.js +0 -25
  368. package/build-module/flyout/utils.js.map +0 -1
  369. package/build-module/mobile/html-text-input/container.android.js +0 -29
  370. package/build-module/mobile/html-text-input/container.android.js.map +0 -1
  371. package/build-module/mobile/html-text-input/container.ios.js +0 -48
  372. package/build-module/mobile/html-text-input/container.ios.js.map +0 -1
  373. package/build-module/popover/utils.js +0 -308
  374. package/build-module/popover/utils.js.map +0 -1
  375. package/build-types/flyout/context.d.ts +0 -6
  376. package/build-types/flyout/context.d.ts.map +0 -1
  377. package/build-types/flyout/flyout/component.d.ts +0 -21
  378. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  379. package/build-types/flyout/flyout/hook.d.ts +0 -270
  380. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  381. package/build-types/flyout/flyout/index.d.ts +0 -3
  382. package/build-types/flyout/flyout/index.d.ts.map +0 -1
  383. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  384. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  385. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  386. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  387. package/build-types/flyout/index.d.ts +0 -2
  388. package/build-types/flyout/index.d.ts.map +0 -1
  389. package/build-types/flyout/styles.d.ts +0 -22
  390. package/build-types/flyout/styles.d.ts.map +0 -1
  391. package/build-types/flyout/types.d.ts +0 -80
  392. package/build-types/flyout/types.d.ts.map +0 -1
  393. package/build-types/flyout/utils.d.ts +0 -8
  394. package/build-types/flyout/utils.d.ts.map +0 -1
  395. package/build-types/popover/utils.d.ts +0 -70
  396. package/build-types/popover/utils.d.ts.map +0 -1
  397. package/src/button-group/index.js +0 -17
  398. package/src/button-group/stories/index.js +0 -21
  399. package/src/date-time/stories/date.js +0 -17
  400. package/src/date-time/stories/index.js +0 -91
  401. package/src/date-time/stories/time.js +0 -32
  402. package/src/date-time/utils.js +0 -18
  403. package/src/flyout/context.js +0 -10
  404. package/src/flyout/flyout/README.md +0 -98
  405. package/src/flyout/flyout/component.js +0 -111
  406. package/src/flyout/flyout/hook.js +0 -45
  407. package/src/flyout/flyout/index.js +0 -2
  408. package/src/flyout/flyout-content/component.js +0 -53
  409. package/src/flyout/flyout-content/index.js +0 -1
  410. package/src/flyout/index.js +0 -1
  411. package/src/flyout/stories/index.js +0 -24
  412. package/src/flyout/styles.ts +0 -41
  413. package/src/flyout/test/__snapshots__/index.js.snap +0 -186
  414. package/src/flyout/test/index.js +0 -103
  415. package/src/flyout/types.ts +0 -84
  416. package/src/flyout/utils.js +0 -23
  417. package/src/mobile/html-text-input/container.android.js +0 -23
  418. package/src/mobile/html-text-input/container.ios.js +0 -50
  419. package/src/popover/test/utils.js +0 -304
  420. package/src/popover/utils.js +0 -396
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = PaletteEdit;
9
+ exports.getNameForPosition = getNameForPosition;
9
10
 
10
11
  var _element = require("@wordpress/element");
11
12
 
@@ -73,11 +74,39 @@ function NameInput(_ref) {
73
74
  onChange: onChange
74
75
  });
75
76
  }
77
+ /**
78
+ * Returns a temporary name for a palette item in the format "Color + id".
79
+ * To ensure there are no duplicate ids, this function checks all slugs for temporary names.
80
+ * It expects slugs to be in the format: slugPrefix + color- + number.
81
+ * It then sets the id component of the new name based on the incremented id of the highest existing slug id.
82
+ *
83
+ * @param {string} elements An array of color palette items.
84
+ * @param {string} slugPrefix The slug prefix used to match the element slug.
85
+ *
86
+ * @return {string} A unique name for a palette item.
87
+ */
88
+
89
+
90
+ function getNameForPosition(elements, slugPrefix) {
91
+ const temporaryNameRegex = new RegExp(`^${slugPrefix}color-([\\d]+)$`);
92
+ const position = elements.reduce((previousValue, currentValue) => {
93
+ if (typeof (currentValue === null || currentValue === void 0 ? void 0 : currentValue.slug) === 'string') {
94
+ const matches = currentValue === null || currentValue === void 0 ? void 0 : currentValue.slug.match(temporaryNameRegex);
95
+
96
+ if (matches) {
97
+ const id = parseInt(matches[1], 10);
98
+
99
+ if (id >= previousValue) {
100
+ return id + 1;
101
+ }
102
+ }
103
+ }
76
104
 
77
- function getNameForPosition(position) {
105
+ return previousValue;
106
+ }, 1);
78
107
  return (0, _i18n.sprintf)(
79
108
  /* translators: %s: is a temporary id for a custom color */
80
- (0, _i18n.__)('Color %s '), position + 1);
109
+ (0, _i18n.__)('Color %s'), position);
81
110
  }
82
111
 
83
112
  function Option(_ref2) {
@@ -123,7 +152,8 @@ function Option(_ref2) {
123
152
  label: (0, _i18n.__)('Remove color'),
124
153
  onClick: onRemove
125
154
  }))), isEditing && (0, _element.createElement)(_popover.default, {
126
- position: "bottom left",
155
+ placement: "left-start",
156
+ offset: 20,
127
157
  className: "components-palette-edit__popover"
128
158
  }, !isGradient && (0, _element.createElement)(_colorPicker.ColorPicker, {
129
159
  color: value,
@@ -139,13 +169,14 @@ function Option(_ref2) {
139
169
  })));
140
170
  }
141
171
 
142
- function isTemporaryElement(slugPrefix, _ref3, index) {
172
+ function isTemporaryElement(slugPrefix, _ref3) {
143
173
  let {
144
174
  slug,
145
175
  color,
146
176
  gradient
147
177
  } = _ref3;
148
- return slug === slugPrefix + (0, _lodash.kebabCase)(getNameForPosition(index)) && (!!color && color === DEFAULT_COLOR || !!gradient && gradient === _constants.DEFAULT_GRADIENT);
178
+ const regex = new RegExp(`^${slugPrefix}color-([\\d]+)$`);
179
+ return regex.test(slug) && (!!color && color === DEFAULT_COLOR || !!gradient && gradient === _constants.DEFAULT_GRADIENT);
149
180
  }
150
181
 
151
182
  function PaletteEditListView(_ref4) {
@@ -166,7 +197,7 @@ function PaletteEditListView(_ref4) {
166
197
  (0, _element.useEffect)(() => {
167
198
  return () => {
168
199
  if (elementsReference.current.some((element, index) => isTemporaryElement(slugPrefix, element, index))) {
169
- const newElements = elementsReference.current.filter((element, index) => !isTemporaryElement(slugPrefix, element, index));
200
+ const newElements = elementsReference.current.filter(element => !isTemporaryElement(slugPrefix, element));
170
201
  onChange(newElements.length ? newElements : undefined);
171
202
  }
172
203
  };
@@ -248,7 +279,7 @@ function PaletteEdit(_ref5) {
248
279
  icon: _icons.plus,
249
280
  label: isGradient ? (0, _i18n.__)('Add gradient') : (0, _i18n.__)('Add color'),
250
281
  onClick: () => {
251
- const tempOptionName = getNameForPosition(elementsLength);
282
+ const tempOptionName = getNameForPosition(elements, slugPrefix);
252
283
  onChange([...elements, { ...(isGradient ? {
253
284
  gradient: _constants.DEFAULT_GRADIENT
254
285
  } : {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/palette-edit/index.js"],"names":["DEFAULT_COLOR","NameInput","value","onChange","label","getNameForPosition","position","Option","canOnlyChangeValues","element","isEditing","onStartEditing","onRemove","onStopEditing","slugPrefix","isGradient","focusOutsideProps","gradient","color","undefined","style","cursor","background","name","nextName","slug","lineSolid","newColor","newGradient","isTemporaryElement","index","DEFAULT_GRADIENT","PaletteEditListView","elements","editingElement","setEditingElement","elementsReference","current","some","newElements","filter","length","debounceOnChange","map","newElement","currentElement","currentIndex","_currentElement","EMPTY_ARRAY","PaletteEdit","gradients","colors","paletteLabel","emptyMessage","canReset","setIsEditing","isAdding","elementsLength","hasElements","plus","tempOptionName","moreVertical","isSmall","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { lineSolid, moreVertical, plus } from '@wordpress/icons';\nimport {\n\t__experimentalUseFocusOutside as useFocusOutside,\n\tuseDebounce,\n} from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { ColorPicker } from '../color-picker';\nimport { FlexItem } from '../flex';\nimport { HStack } from '../h-stack';\nimport { ItemGroup } from '../item-group';\nimport { VStack } from '../v-stack';\nimport GradientPicker from '../gradient-picker';\nimport ColorPalette from '../color-palette';\nimport DropdownMenu from '../dropdown-menu';\nimport Popover from '../popover';\nimport {\n\tPaletteActionsContainer,\n\tPaletteEditStyles,\n\tPaletteHeading,\n\tPaletteHStackHeader,\n\tIndicatorStyled,\n\tPaletteItem,\n\tNameContainer,\n\tNameInputControl,\n\tDoneButton,\n\tRemoveButton,\n} from './styles';\nimport { NavigableMenu } from '../navigable-container';\nimport { DEFAULT_GRADIENT } from '../custom-gradient-picker/constants';\nimport CustomGradientPicker from '../custom-gradient-picker';\n\nconst DEFAULT_COLOR = '#000';\n\nfunction NameInput( { value, onChange, label } ) {\n\treturn (\n\t\t<NameInputControl\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\nfunction getNameForPosition( position ) {\n\treturn sprintf(\n\t\t/* translators: %s: is a temporary id for a custom color */\n\t\t__( 'Color %s ' ),\n\t\tposition + 1\n\t);\n}\n\nfunction Option( {\n\tcanOnlyChangeValues,\n\telement,\n\tonChange,\n\tisEditing,\n\tonStartEditing,\n\tonRemove,\n\tonStopEditing,\n\tslugPrefix,\n\tisGradient,\n} ) {\n\tconst focusOutsideProps = useFocusOutside( onStopEditing );\n\tconst value = isGradient ? element.gradient : element.color;\n\n\treturn (\n\t\t<PaletteItem\n\t\t\tclassName={ isEditing ? 'is-selected' : undefined }\n\t\t\tas=\"div\"\n\t\t\tonClick={ onStartEditing }\n\t\t\t{ ...( isEditing\n\t\t\t\t? { ...focusOutsideProps }\n\t\t\t\t: {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t},\n\t\t\t\t } ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<IndicatorStyled\n\t\t\t\t\t\tstyle={ { background: value, color: 'transparent' } }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t{ isEditing && ! canOnlyChangeValues ? (\n\t\t\t\t\t\t<NameInput\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t? __( 'Gradient name' )\n\t\t\t\t\t\t\t\t\t: __( 'Color name' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue={ element.name }\n\t\t\t\t\t\t\tonChange={ ( nextName ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tname: nextName,\n\t\t\t\t\t\t\t\t\tslug: slugPrefix + kebabCase( nextName ),\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<NameContainer>{ element.name }</NameContainer>\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t\t{ isEditing && ! canOnlyChangeValues && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<RemoveButton\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\ticon={ lineSolid }\n\t\t\t\t\t\t\tlabel={ __( 'Remove color' ) }\n\t\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t{ isEditing && (\n\t\t\t\t<Popover\n\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\tclassName=\"components-palette-edit__popover\"\n\t\t\t\t>\n\t\t\t\t\t{ ! isGradient && (\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tcolor={ value }\n\t\t\t\t\t\t\tonChange={ ( newColor ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tcolor: newColor,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isGradient && (\n\t\t\t\t\t\t<CustomGradientPicker\n\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ ( newGradient ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tgradient: newGradient,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</PaletteItem>\n\t);\n}\n\nfunction isTemporaryElement( slugPrefix, { slug, color, gradient }, index ) {\n\treturn (\n\t\tslug === slugPrefix + kebabCase( getNameForPosition( index ) ) &&\n\t\t( ( !! color && color === DEFAULT_COLOR ) ||\n\t\t\t( !! gradient && gradient === DEFAULT_GRADIENT ) )\n\t);\n}\n\nfunction PaletteEditListView( {\n\telements,\n\tonChange,\n\teditingElement,\n\tsetEditingElement,\n\tcanOnlyChangeValues,\n\tslugPrefix,\n\tisGradient,\n} ) {\n\t// When unmounting the component if there are empty elements (the user did not complete the insertion) clean them.\n\tconst elementsReference = useRef();\n\tuseEffect( () => {\n\t\telementsReference.current = elements;\n\t}, [ elements ] );\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif (\n\t\t\t\telementsReference.current.some( ( element, index ) =>\n\t\t\t\t\tisTemporaryElement( slugPrefix, element, index )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst newElements = elementsReference.current.filter(\n\t\t\t\t\t( element, index ) =>\n\t\t\t\t\t\t! isTemporaryElement( slugPrefix, element, index )\n\t\t\t\t);\n\t\t\t\tonChange( newElements.length ? newElements : undefined );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst debounceOnChange = useDebounce( onChange, 100 );\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t<ItemGroup isRounded>\n\t\t\t\t{ elements.map( ( element, index ) => (\n\t\t\t\t\t<Option\n\t\t\t\t\t\tisGradient={ isGradient }\n\t\t\t\t\t\tcanOnlyChangeValues={ canOnlyChangeValues }\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\telement={ element }\n\t\t\t\t\t\tonStartEditing={ () => {\n\t\t\t\t\t\t\tif ( editingElement !== index ) {\n\t\t\t\t\t\t\t\tsetEditingElement( index );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( newElement ) => {\n\t\t\t\t\t\t\tdebounceOnChange(\n\t\t\t\t\t\t\t\telements.map(\n\t\t\t\t\t\t\t\t\t( currentElement, currentIndex ) => {\n\t\t\t\t\t\t\t\t\t\tif ( currentIndex === index ) {\n\t\t\t\t\t\t\t\t\t\t\treturn newElement;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn currentElement;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\tconst newElements = elements.filter(\n\t\t\t\t\t\t\t\t( _currentElement, currentIndex ) => {\n\t\t\t\t\t\t\t\t\tif ( currentIndex === index ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\tnewElements.length ? newElements : undefined\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisEditing={ index === editingElement }\n\t\t\t\t\t\tonStopEditing={ () => {\n\t\t\t\t\t\t\tif ( index === editingElement ) {\n\t\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tslugPrefix={ slugPrefix }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\n\nexport default function PaletteEdit( {\n\tgradients,\n\tcolors = EMPTY_ARRAY,\n\tonChange,\n\tpaletteLabel,\n\temptyMessage,\n\tcanOnlyChangeValues,\n\tcanReset,\n\tslugPrefix = '',\n} ) {\n\tconst isGradient = !! gradients;\n\tconst elements = isGradient ? gradients : colors;\n\tconst [ isEditing, setIsEditing ] = useState( false );\n\tconst [ editingElement, setEditingElement ] = useState( null );\n\tconst isAdding =\n\t\tisEditing &&\n\t\teditingElement &&\n\t\telements[ editingElement ] &&\n\t\t! elements[ editingElement ].slug;\n\tconst elementsLength = elements.length;\n\tconst hasElements = elementsLength > 0;\n\n\treturn (\n\t\t<PaletteEditStyles>\n\t\t\t<PaletteHStackHeader>\n\t\t\t\t<PaletteHeading>{ paletteLabel }</PaletteHeading>\n\t\t\t\t<PaletteActionsContainer>\n\t\t\t\t\t{ isEditing && (\n\t\t\t\t\t\t<DoneButton\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetIsEditing( false );\n\t\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Done' ) }\n\t\t\t\t\t\t</DoneButton>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! canOnlyChangeValues && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tisPressed={ isAdding }\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t? __( 'Add gradient' )\n\t\t\t\t\t\t\t\t\t: __( 'Add color' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst tempOptionName = getNameForPosition(\n\t\t\t\t\t\t\t\t\telementsLength\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonChange( [\n\t\t\t\t\t\t\t\t\t...elements,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t...( isGradient\n\t\t\t\t\t\t\t\t\t\t\t? { gradient: DEFAULT_GRADIENT }\n\t\t\t\t\t\t\t\t\t\t\t: { color: DEFAULT_COLOR } ),\n\t\t\t\t\t\t\t\t\t\tname: tempOptionName,\n\t\t\t\t\t\t\t\t\t\tslug:\n\t\t\t\t\t\t\t\t\t\t\tslugPrefix +\n\t\t\t\t\t\t\t\t\t\t\tkebabCase( tempOptionName ),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] );\n\t\t\t\t\t\t\t\tsetIsEditing( true );\n\t\t\t\t\t\t\t\tsetEditingElement( elements.length );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ hasElements &&\n\t\t\t\t\t\t( ! isEditing ||\n\t\t\t\t\t\t\t! canOnlyChangeValues ||\n\t\t\t\t\t\t\tcanReset ) && (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t\t? __( 'Gradient options' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Color options' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\t\tisSmall: true,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<NavigableMenu role=\"menu\">\n\t\t\t\t\t\t\t\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsEditing( true );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-palette-edit__menu-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Edit gradients' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit colors' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t{ ! canOnlyChangeValues && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditingElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsEditing( false );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-palette-edit__menu-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Remove all gradients'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Remove all colors'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t{ canReset && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditingElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Reset gradient' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Reset colors' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t) }\n\t\t\t\t</PaletteActionsContainer>\n\t\t\t</PaletteHStackHeader>\n\t\t\t{ hasElements && (\n\t\t\t\t<>\n\t\t\t\t\t{ isEditing && (\n\t\t\t\t\t\t<PaletteEditListView\n\t\t\t\t\t\t\tcanOnlyChangeValues={ canOnlyChangeValues }\n\t\t\t\t\t\t\telements={ elements }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\teditingElement={ editingElement }\n\t\t\t\t\t\t\tsetEditingElement={ setEditingElement }\n\t\t\t\t\t\t\tslugPrefix={ slugPrefix }\n\t\t\t\t\t\t\tisGradient={ isGradient }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isEditing &&\n\t\t\t\t\t\t( isGradient ? (\n\t\t\t\t\t\t\t<GradientPicker\n\t\t\t\t\t\t\t\tgradients={ gradients }\n\t\t\t\t\t\t\t\tonChange={ () => {} }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tdisableCustomGradients={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\t\t\tonChange={ () => {} }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tdisableCustomColors={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! hasElements && emptyMessage }\n\t\t</PaletteEditStyles>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/palette-edit/index.js"],"names":["DEFAULT_COLOR","NameInput","value","onChange","label","getNameForPosition","elements","slugPrefix","temporaryNameRegex","RegExp","position","reduce","previousValue","currentValue","slug","matches","match","id","parseInt","Option","canOnlyChangeValues","element","isEditing","onStartEditing","onRemove","onStopEditing","isGradient","focusOutsideProps","gradient","color","undefined","style","cursor","background","name","nextName","lineSolid","newColor","newGradient","isTemporaryElement","regex","test","DEFAULT_GRADIENT","PaletteEditListView","editingElement","setEditingElement","elementsReference","current","some","index","newElements","filter","length","debounceOnChange","map","newElement","currentElement","currentIndex","_currentElement","EMPTY_ARRAY","PaletteEdit","gradients","colors","paletteLabel","emptyMessage","canReset","setIsEditing","isAdding","elementsLength","hasElements","plus","tempOptionName","moreVertical","isSmall","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { lineSolid, moreVertical, plus } from '@wordpress/icons';\nimport {\n\t__experimentalUseFocusOutside as useFocusOutside,\n\tuseDebounce,\n} from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { ColorPicker } from '../color-picker';\nimport { FlexItem } from '../flex';\nimport { HStack } from '../h-stack';\nimport { ItemGroup } from '../item-group';\nimport { VStack } from '../v-stack';\nimport GradientPicker from '../gradient-picker';\nimport ColorPalette from '../color-palette';\nimport DropdownMenu from '../dropdown-menu';\nimport Popover from '../popover';\nimport {\n\tPaletteActionsContainer,\n\tPaletteEditStyles,\n\tPaletteHeading,\n\tPaletteHStackHeader,\n\tIndicatorStyled,\n\tPaletteItem,\n\tNameContainer,\n\tNameInputControl,\n\tDoneButton,\n\tRemoveButton,\n} from './styles';\nimport { NavigableMenu } from '../navigable-container';\nimport { DEFAULT_GRADIENT } from '../custom-gradient-picker/constants';\nimport CustomGradientPicker from '../custom-gradient-picker';\n\nconst DEFAULT_COLOR = '#000';\n\nfunction NameInput( { value, onChange, label } ) {\n\treturn (\n\t\t<NameInputControl\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\n/**\n * Returns a temporary name for a palette item in the format \"Color + id\".\n * To ensure there are no duplicate ids, this function checks all slugs for temporary names.\n * It expects slugs to be in the format: slugPrefix + color- + number.\n * It then sets the id component of the new name based on the incremented id of the highest existing slug id.\n *\n * @param {string} elements An array of color palette items.\n * @param {string} slugPrefix The slug prefix used to match the element slug.\n *\n * @return {string} A unique name for a palette item.\n */\nexport function getNameForPosition( elements, slugPrefix ) {\n\tconst temporaryNameRegex = new RegExp( `^${ slugPrefix }color-([\\\\d]+)$` );\n\tconst position = elements.reduce( ( previousValue, currentValue ) => {\n\t\tif ( typeof currentValue?.slug === 'string' ) {\n\t\t\tconst matches = currentValue?.slug.match( temporaryNameRegex );\n\t\t\tif ( matches ) {\n\t\t\t\tconst id = parseInt( matches[ 1 ], 10 );\n\t\t\t\tif ( id >= previousValue ) {\n\t\t\t\t\treturn id + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn previousValue;\n\t}, 1 );\n\n\treturn sprintf(\n\t\t/* translators: %s: is a temporary id for a custom color */\n\t\t__( 'Color %s' ),\n\t\tposition\n\t);\n}\n\nfunction Option( {\n\tcanOnlyChangeValues,\n\telement,\n\tonChange,\n\tisEditing,\n\tonStartEditing,\n\tonRemove,\n\tonStopEditing,\n\tslugPrefix,\n\tisGradient,\n} ) {\n\tconst focusOutsideProps = useFocusOutside( onStopEditing );\n\tconst value = isGradient ? element.gradient : element.color;\n\n\treturn (\n\t\t<PaletteItem\n\t\t\tclassName={ isEditing ? 'is-selected' : undefined }\n\t\t\tas=\"div\"\n\t\t\tonClick={ onStartEditing }\n\t\t\t{ ...( isEditing\n\t\t\t\t? { ...focusOutsideProps }\n\t\t\t\t: {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t},\n\t\t\t\t } ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<IndicatorStyled\n\t\t\t\t\t\tstyle={ { background: value, color: 'transparent' } }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t{ isEditing && ! canOnlyChangeValues ? (\n\t\t\t\t\t\t<NameInput\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t? __( 'Gradient name' )\n\t\t\t\t\t\t\t\t\t: __( 'Color name' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue={ element.name }\n\t\t\t\t\t\t\tonChange={ ( nextName ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tname: nextName,\n\t\t\t\t\t\t\t\t\tslug: slugPrefix + kebabCase( nextName ),\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<NameContainer>{ element.name }</NameContainer>\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t\t{ isEditing && ! canOnlyChangeValues && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<RemoveButton\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\ticon={ lineSolid }\n\t\t\t\t\t\t\tlabel={ __( 'Remove color' ) }\n\t\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t{ isEditing && (\n\t\t\t\t<Popover\n\t\t\t\t\tplacement=\"left-start\"\n\t\t\t\t\toffset={ 20 }\n\t\t\t\t\tclassName=\"components-palette-edit__popover\"\n\t\t\t\t>\n\t\t\t\t\t{ ! isGradient && (\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tcolor={ value }\n\t\t\t\t\t\t\tonChange={ ( newColor ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tcolor: newColor,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isGradient && (\n\t\t\t\t\t\t<CustomGradientPicker\n\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ ( newGradient ) =>\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...element,\n\t\t\t\t\t\t\t\t\tgradient: newGradient,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</PaletteItem>\n\t);\n}\n\nfunction isTemporaryElement( slugPrefix, { slug, color, gradient } ) {\n\tconst regex = new RegExp( `^${ slugPrefix }color-([\\\\d]+)$` );\n\treturn (\n\t\tregex.test( slug ) &&\n\t\t( ( !! color && color === DEFAULT_COLOR ) ||\n\t\t\t( !! gradient && gradient === DEFAULT_GRADIENT ) )\n\t);\n}\n\nfunction PaletteEditListView( {\n\telements,\n\tonChange,\n\teditingElement,\n\tsetEditingElement,\n\tcanOnlyChangeValues,\n\tslugPrefix,\n\tisGradient,\n} ) {\n\t// When unmounting the component if there are empty elements (the user did not complete the insertion) clean them.\n\tconst elementsReference = useRef();\n\tuseEffect( () => {\n\t\telementsReference.current = elements;\n\t}, [ elements ] );\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif (\n\t\t\t\telementsReference.current.some( ( element, index ) =>\n\t\t\t\t\tisTemporaryElement( slugPrefix, element, index )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst newElements = elementsReference.current.filter(\n\t\t\t\t\t( element ) => ! isTemporaryElement( slugPrefix, element )\n\t\t\t\t);\n\t\t\t\tonChange( newElements.length ? newElements : undefined );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst debounceOnChange = useDebounce( onChange, 100 );\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t<ItemGroup isRounded>\n\t\t\t\t{ elements.map( ( element, index ) => (\n\t\t\t\t\t<Option\n\t\t\t\t\t\tisGradient={ isGradient }\n\t\t\t\t\t\tcanOnlyChangeValues={ canOnlyChangeValues }\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\telement={ element }\n\t\t\t\t\t\tonStartEditing={ () => {\n\t\t\t\t\t\t\tif ( editingElement !== index ) {\n\t\t\t\t\t\t\t\tsetEditingElement( index );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( newElement ) => {\n\t\t\t\t\t\t\tdebounceOnChange(\n\t\t\t\t\t\t\t\telements.map(\n\t\t\t\t\t\t\t\t\t( currentElement, currentIndex ) => {\n\t\t\t\t\t\t\t\t\t\tif ( currentIndex === index ) {\n\t\t\t\t\t\t\t\t\t\t\treturn newElement;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn currentElement;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\tconst newElements = elements.filter(\n\t\t\t\t\t\t\t\t( _currentElement, currentIndex ) => {\n\t\t\t\t\t\t\t\t\tif ( currentIndex === index ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\tnewElements.length ? newElements : undefined\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisEditing={ index === editingElement }\n\t\t\t\t\t\tonStopEditing={ () => {\n\t\t\t\t\t\t\tif ( index === editingElement ) {\n\t\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tslugPrefix={ slugPrefix }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\n\nexport default function PaletteEdit( {\n\tgradients,\n\tcolors = EMPTY_ARRAY,\n\tonChange,\n\tpaletteLabel,\n\temptyMessage,\n\tcanOnlyChangeValues,\n\tcanReset,\n\tslugPrefix = '',\n} ) {\n\tconst isGradient = !! gradients;\n\tconst elements = isGradient ? gradients : colors;\n\tconst [ isEditing, setIsEditing ] = useState( false );\n\tconst [ editingElement, setEditingElement ] = useState( null );\n\tconst isAdding =\n\t\tisEditing &&\n\t\teditingElement &&\n\t\telements[ editingElement ] &&\n\t\t! elements[ editingElement ].slug;\n\tconst elementsLength = elements.length;\n\tconst hasElements = elementsLength > 0;\n\n\treturn (\n\t\t<PaletteEditStyles>\n\t\t\t<PaletteHStackHeader>\n\t\t\t\t<PaletteHeading>{ paletteLabel }</PaletteHeading>\n\t\t\t\t<PaletteActionsContainer>\n\t\t\t\t\t{ isEditing && (\n\t\t\t\t\t\t<DoneButton\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetIsEditing( false );\n\t\t\t\t\t\t\t\tsetEditingElement( null );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Done' ) }\n\t\t\t\t\t\t</DoneButton>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! canOnlyChangeValues && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tisPressed={ isAdding }\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t? __( 'Add gradient' )\n\t\t\t\t\t\t\t\t\t: __( 'Add color' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst tempOptionName = getNameForPosition(\n\t\t\t\t\t\t\t\t\telements,\n\t\t\t\t\t\t\t\t\tslugPrefix\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tonChange( [\n\t\t\t\t\t\t\t\t\t...elements,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t...( isGradient\n\t\t\t\t\t\t\t\t\t\t\t? { gradient: DEFAULT_GRADIENT }\n\t\t\t\t\t\t\t\t\t\t\t: { color: DEFAULT_COLOR } ),\n\t\t\t\t\t\t\t\t\t\tname: tempOptionName,\n\t\t\t\t\t\t\t\t\t\tslug:\n\t\t\t\t\t\t\t\t\t\t\tslugPrefix +\n\t\t\t\t\t\t\t\t\t\t\tkebabCase( tempOptionName ),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] );\n\t\t\t\t\t\t\t\tsetIsEditing( true );\n\t\t\t\t\t\t\t\tsetEditingElement( elements.length );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ hasElements &&\n\t\t\t\t\t\t( ! isEditing ||\n\t\t\t\t\t\t\t! canOnlyChangeValues ||\n\t\t\t\t\t\t\tcanReset ) && (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tisGradient\n\t\t\t\t\t\t\t\t\t\t? __( 'Gradient options' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Color options' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\t\tisSmall: true,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<NavigableMenu role=\"menu\">\n\t\t\t\t\t\t\t\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsEditing( true );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-palette-edit__menu-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Edit gradients' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit colors' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t{ ! canOnlyChangeValues && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditingElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsEditing( false );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-palette-edit__menu-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Remove all gradients'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Remove all colors'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t{ canReset && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditingElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ isGradient\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Reset gradient' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Reset colors' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t) }\n\t\t\t\t</PaletteActionsContainer>\n\t\t\t</PaletteHStackHeader>\n\t\t\t{ hasElements && (\n\t\t\t\t<>\n\t\t\t\t\t{ isEditing && (\n\t\t\t\t\t\t<PaletteEditListView\n\t\t\t\t\t\t\tcanOnlyChangeValues={ canOnlyChangeValues }\n\t\t\t\t\t\t\telements={ elements }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\teditingElement={ editingElement }\n\t\t\t\t\t\t\tsetEditingElement={ setEditingElement }\n\t\t\t\t\t\t\tslugPrefix={ slugPrefix }\n\t\t\t\t\t\t\tisGradient={ isGradient }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isEditing &&\n\t\t\t\t\t\t( isGradient ? (\n\t\t\t\t\t\t\t<GradientPicker\n\t\t\t\t\t\t\t\tgradients={ gradients }\n\t\t\t\t\t\t\t\tonChange={ () => {} }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tdisableCustomGradients={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\t\t\tonChange={ () => {} }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t\tdisableCustomColors={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! hasElements && emptyMessage }\n\t\t</PaletteEditStyles>\n\t);\n}\n"]}