newspack-components 4.3.0 → 4.4.0-alpha.1

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 (263) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/colors/colors.module.scss +52 -2
  4. package/copy-styles.js +3 -2
  5. package/dist/cjs/accordion/index.js +17 -12
  6. package/dist/cjs/action-card/index.js +176 -139
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  9. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  10. package/dist/cjs/badge/index.js +7 -7
  11. package/dist/cjs/box-contrast/index.js +19 -15
  12. package/dist/cjs/button/index.js +41 -26
  13. package/dist/cjs/button-props/button-props.js +5 -5
  14. package/dist/cjs/button-props/index.js +2 -2
  15. package/dist/cjs/card/core-card.js +110 -52
  16. package/dist/cjs/card/index.js +74 -67
  17. package/dist/cjs/card/style-core.scss +93 -25
  18. package/dist/cjs/card/style.scss +2 -2
  19. package/dist/cjs/card-feature/index.js +141 -0
  20. package/dist/cjs/card-feature/style.scss +75 -0
  21. package/dist/cjs/card-form/index.js +144 -0
  22. package/dist/cjs/card-form/style.scss +20 -0
  23. package/dist/cjs/card-settings-group/index.js +36 -16
  24. package/dist/cjs/card-sortable-list/index.js +176 -140
  25. package/dist/cjs/category-autocomplete/index.js +175 -155
  26. package/dist/cjs/color-picker/index.js +41 -23
  27. package/dist/cjs/color-picker/index.test.js +82 -0
  28. package/dist/cjs/color-picker/style.scss +11 -13
  29. package/dist/cjs/confirm-dialog/index.js +86 -22
  30. package/dist/cjs/consts.js +1 -1
  31. package/dist/cjs/custom-select-control/index.js +39 -28
  32. package/dist/cjs/dataviews/index.js +38 -0
  33. package/dist/cjs/dataviews/style.scss +9 -0
  34. package/dist/cjs/divider/index.js +26 -21
  35. package/dist/cjs/footer/index.js +36 -30
  36. package/dist/cjs/form-token-field/index.js +51 -40
  37. package/dist/cjs/global-notices/index.js +5 -5
  38. package/dist/cjs/grid/index.js +25 -19
  39. package/dist/cjs/grid/style.scss +6 -1
  40. package/dist/cjs/handoff/index.js +204 -156
  41. package/dist/cjs/handoff-message/index.js +12 -7
  42. package/dist/cjs/hooks/index.js +10 -8
  43. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  44. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  45. package/dist/cjs/hooks/useObjectState.js +21 -12
  46. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  47. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  48. package/dist/cjs/hooks/usePrompt.js +10 -13
  49. package/dist/cjs/image-upload/index.js +114 -123
  50. package/dist/cjs/image-upload/index.test.js +11 -13
  51. package/dist/cjs/image-upload/style.scss +12 -40
  52. package/dist/cjs/index.js +136 -104
  53. package/dist/cjs/info-button/index.js +43 -32
  54. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  55. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  56. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  57. package/dist/cjs/integration-icons/index.js +48 -0
  58. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  59. package/dist/cjs/integration-icons/salesforce.js +17 -0
  60. package/dist/cjs/integration-icons/wisepops.js +20 -0
  61. package/dist/cjs/modal/index.js +22 -19
  62. package/dist/cjs/modal/style.scss +4 -0
  63. package/dist/cjs/newspack-icon/index.js +45 -38
  64. package/dist/cjs/notice/index.js +64 -55
  65. package/dist/cjs/plugin-installer/index.js +259 -253
  66. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  67. package/dist/cjs/plugin-settings/index.js +217 -200
  68. package/dist/cjs/plugin-toggle/index.js +192 -199
  69. package/dist/cjs/popover/index.js +41 -28
  70. package/dist/cjs/position-control/index.js +24 -23
  71. package/dist/cjs/progress-bar/index.js +71 -59
  72. package/dist/cjs/progress-bar/index.test.js +62 -68
  73. package/dist/cjs/proxied-imports/router.js +3 -3
  74. package/dist/cjs/radio-control/index.js +40 -27
  75. package/dist/cjs/section-header/index.js +103 -58
  76. package/dist/cjs/section-header/style.scss +31 -11
  77. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  78. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  79. package/dist/cjs/select-control/index.js +52 -40
  80. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  81. package/dist/cjs/settings/SettingsCard.js +20 -17
  82. package/dist/cjs/settings/SettingsSection.js +22 -21
  83. package/dist/cjs/settings/index.js +5 -5
  84. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  85. package/dist/cjs/steps-list/index.js +44 -34
  86. package/dist/cjs/steps-list-item/index.js +47 -39
  87. package/dist/cjs/style-card/index.js +70 -63
  88. package/dist/cjs/tabbed-navigation/index.js +38 -36
  89. package/dist/cjs/text-control/index.js +27 -25
  90. package/dist/cjs/utils/color.js +4 -4
  91. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  92. package/dist/cjs/utils/index.js +31 -19
  93. package/dist/cjs/utils/style.scss +8 -0
  94. package/dist/cjs/waiting/index.js +48 -37
  95. package/dist/cjs/web-preview/index.js +217 -211
  96. package/dist/cjs/with-wizard/index.js +362 -364
  97. package/dist/cjs/with-wizard/style.scss +4 -54
  98. package/dist/cjs/with-wizard-screen/index.js +54 -58
  99. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  100. package/dist/cjs/wizard/components/WizardError.js +20 -18
  101. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  102. package/dist/cjs/wizard/index.js +176 -114
  103. package/dist/cjs/wizard/store/index.js +171 -123
  104. package/dist/cjs/wizard/store/utils.js +13 -8
  105. package/dist/esm/accordion/index.js +14 -9
  106. package/dist/esm/action-card/index.js +168 -123
  107. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  108. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  109. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  110. package/dist/esm/badge/index.js +5 -5
  111. package/dist/esm/box-contrast/index.js +15 -11
  112. package/dist/esm/button/index.js +39 -21
  113. package/dist/esm/button-props/button-props.js +1 -1
  114. package/dist/esm/card/core-card.js +109 -47
  115. package/dist/esm/card/index.js +69 -54
  116. package/dist/esm/card/style-core.scss +93 -25
  117. package/dist/esm/card/style.scss +2 -2
  118. package/dist/esm/card-feature/index.js +131 -0
  119. package/dist/esm/card-feature/style.scss +75 -0
  120. package/dist/esm/card-form/index.js +134 -0
  121. package/dist/esm/card-form/style.scss +20 -0
  122. package/dist/esm/card-settings-group/index.js +33 -14
  123. package/dist/esm/card-sortable-list/index.js +170 -126
  124. package/dist/esm/category-autocomplete/index.js +168 -140
  125. package/dist/esm/color-picker/index.js +39 -21
  126. package/dist/esm/color-picker/index.test.js +78 -0
  127. package/dist/esm/color-picker/style.scss +11 -13
  128. package/dist/esm/confirm-dialog/index.js +85 -18
  129. package/dist/esm/consts.js +1 -1
  130. package/dist/esm/custom-select-control/index.js +34 -15
  131. package/dist/esm/dataviews/index.js +34 -0
  132. package/dist/esm/dataviews/style.scss +9 -0
  133. package/dist/esm/divider/index.js +24 -16
  134. package/dist/esm/footer/index.js +34 -28
  135. package/dist/esm/form-token-field/index.js +46 -27
  136. package/dist/esm/global-notices/index.js +3 -3
  137. package/dist/esm/grid/index.js +23 -14
  138. package/dist/esm/grid/style.scss +6 -1
  139. package/dist/esm/handoff/index.js +199 -143
  140. package/dist/esm/handoff-message/index.js +10 -6
  141. package/dist/esm/hooks/index.js +8 -6
  142. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  143. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  144. package/dist/esm/hooks/useObjectState.js +19 -9
  145. package/dist/esm/hooks/useObjectState.test.js +54 -32
  146. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  147. package/dist/esm/hooks/usePrompt.js +9 -11
  148. package/dist/esm/image-upload/index.js +110 -111
  149. package/dist/esm/image-upload/index.test.js +11 -13
  150. package/dist/esm/image-upload/style.scss +12 -40
  151. package/dist/esm/index.js +7 -1
  152. package/dist/esm/info-button/index.js +38 -19
  153. package/dist/esm/integration-icons/active-campaign.js +16 -0
  154. package/dist/esm/integration-icons/constant-contact.js +22 -0
  155. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  156. package/dist/esm/integration-icons/index.js +6 -0
  157. package/dist/esm/integration-icons/mailchimp.js +13 -0
  158. package/dist/esm/integration-icons/salesforce.js +11 -0
  159. package/dist/esm/integration-icons/wisepops.js +14 -0
  160. package/dist/esm/modal/index.js +20 -13
  161. package/dist/esm/modal/style.scss +4 -0
  162. package/dist/esm/newspack-icon/index.js +40 -25
  163. package/dist/esm/notice/index.js +59 -42
  164. package/dist/esm/plugin-installer/index.js +255 -243
  165. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  166. package/dist/esm/plugin-settings/index.js +212 -189
  167. package/dist/esm/plugin-toggle/index.js +187 -190
  168. package/dist/esm/popover/index.js +35 -16
  169. package/dist/esm/position-control/index.js +22 -18
  170. package/dist/esm/progress-bar/index.js +66 -49
  171. package/dist/esm/progress-bar/index.test.js +61 -67
  172. package/dist/esm/radio-control/index.js +34 -15
  173. package/dist/esm/section-header/index.js +102 -57
  174. package/dist/esm/section-header/style.scss +31 -11
  175. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  176. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  177. package/dist/esm/select-control/index.js +47 -27
  178. package/dist/esm/settings/MinMaxSetting.js +27 -16
  179. package/dist/esm/settings/SettingsCard.js +18 -13
  180. package/dist/esm/settings/SettingsSection.js +20 -19
  181. package/dist/esm/settings/index.js +3 -3
  182. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  183. package/dist/esm/steps-list/index.js +39 -21
  184. package/dist/esm/steps-list-item/index.js +42 -26
  185. package/dist/esm/style-card/index.js +65 -50
  186. package/dist/esm/tabbed-navigation/index.js +35 -33
  187. package/dist/esm/text-control/index.js +25 -19
  188. package/dist/esm/utils/color.js +4 -4
  189. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  190. package/dist/esm/utils/index.js +29 -16
  191. package/dist/esm/utils/style.scss +8 -0
  192. package/dist/esm/waiting/index.js +43 -24
  193. package/dist/esm/web-preview/index.js +213 -201
  194. package/dist/esm/with-wizard/index.js +360 -358
  195. package/dist/esm/with-wizard/style.scss +4 -54
  196. package/dist/esm/with-wizard-screen/index.js +48 -46
  197. package/dist/esm/with-wizard-screen/style.scss +41 -3
  198. package/dist/esm/wizard/components/WizardError.js +18 -16
  199. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  200. package/dist/esm/wizard/index.js +171 -103
  201. package/dist/esm/wizard/store/index.js +169 -116
  202. package/dist/esm/wizard/store/utils.js +13 -6
  203. package/package.json +30 -16
  204. package/release.config.js +1 -0
  205. package/shared/hooks/use-coauthors.js +195 -27
  206. package/shared/hooks/use-coauthors.test.js +232 -6
  207. package/shared/scss/_mixins.scss +13 -5
  208. package/src/accordion/index.js +8 -7
  209. package/src/action-card/index.js +15 -1
  210. package/src/badge/index.tsx +3 -1
  211. package/src/card/core-card.js +95 -18
  212. package/src/card/index.js +1 -0
  213. package/src/card/style-core.scss +93 -25
  214. package/src/card/style.scss +2 -2
  215. package/src/card-feature/README.md +188 -0
  216. package/src/card-feature/index.tsx +186 -0
  217. package/src/card-feature/style.scss +75 -0
  218. package/src/card-form/README.md +113 -0
  219. package/src/card-form/index.tsx +128 -0
  220. package/src/card-form/style.scss +20 -0
  221. package/src/card-settings-group/index.tsx +28 -3
  222. package/src/card-sortable-list/index.tsx +27 -4
  223. package/src/color-picker/index.js +15 -8
  224. package/src/color-picker/index.test.js +52 -0
  225. package/src/color-picker/style.scss +11 -13
  226. package/src/confirm-dialog/README.md +128 -0
  227. package/src/confirm-dialog/index.tsx +74 -6
  228. package/src/dataviews/index.tsx +34 -0
  229. package/src/dataviews/style.scss +9 -0
  230. package/src/grid/style.scss +6 -1
  231. package/src/handoff/README.md +93 -0
  232. package/src/handoff/index.js +46 -8
  233. package/src/hooks/index.ts +2 -1
  234. package/src/hooks/use-confirm-dialog.tsx +80 -0
  235. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  236. package/src/image-upload/index.js +10 -15
  237. package/src/image-upload/style.scss +12 -40
  238. package/src/index.js +7 -1
  239. package/src/integration-icons/active-campaign.js +14 -0
  240. package/src/integration-icons/constant-contact.js +22 -0
  241. package/src/integration-icons/fundraise-up.js +18 -0
  242. package/src/integration-icons/index.js +6 -0
  243. package/src/integration-icons/mailchimp.js +10 -0
  244. package/src/integration-icons/salesforce.js +10 -0
  245. package/src/integration-icons/wisepops.js +14 -0
  246. package/src/modal/style.scss +4 -0
  247. package/src/plugin-installer/index.js +30 -19
  248. package/src/section-header/index.js +56 -24
  249. package/src/section-header/style.scss +31 -11
  250. package/src/select-control/index.js +4 -0
  251. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  252. package/src/utils/index.js +6 -0
  253. package/src/utils/style.scss +8 -0
  254. package/src/with-wizard/style.scss +4 -54
  255. package/src/with-wizard-screen/style.scss +41 -3
  256. package/src/wizard/index.js +90 -53
  257. package/src/wizard/store/index.js +2 -2
  258. package/dist/cjs/button-card/index.js +0 -72
  259. package/dist/cjs/button-card/style.scss +0 -180
  260. package/dist/esm/button-card/index.js +0 -64
  261. package/dist/esm/button-card/style.scss +0 -180
  262. package/src/button-card/index.js +0 -52
  263. package/src/button-card/style.scss +0 -180
@@ -4,59 +4,76 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports["default"] = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
11
  var _components = require("@wordpress/components");
9
12
  var _element = require("@wordpress/element");
10
13
  var _ = require("../");
11
14
  require("./style.scss");
12
15
  var _classnames = _interopRequireDefault(require("classnames"));
13
16
  var _jsxRuntime = require("react/jsx-runtime");
14
- /**
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
15
19
  * Card - Sortable list component.
16
- */
17
-
18
- /**
20
+ */ /**
19
21
  * WordPress dependencies.
20
- */
21
- // eslint-disable-line @wordpress/no-unsafe-wp-apis
22
-
22
+ */ // eslint-disable-line @wordpress/no-unsafe-wp-apis
23
23
  /**
24
24
  * Internal dependencies
25
- */
26
-
27
- /**
25
+ */ /**
28
26
  * External dependencies
29
27
  */
28
+ var DROP_ANIMATION_DURATION = 400; // ms — must match $drop-duration in style.scss
29
+ var BUTTON_MOVE_DURATION = 200; // ms — must match $shift-duration in style.scss
30
30
 
31
- const DROP_ANIMATION_DURATION = 400; // ms — must match $drop-duration in style.scss
32
- const BUTTON_MOVE_DURATION = 200; // ms — must match $shift-duration in style.scss
33
-
34
- const CardSortableList = ({
35
- disabled = false,
36
- items = [],
37
- onDragCallback = () => {}
38
- }) => {
39
- const [sortedItems, setSortedItems] = (0, _element.useState)(items);
40
- const [draggingIndex, setDraggingIndex] = (0, _element.useState)(null);
41
- const [hoverIndex, setHoverIndex] = (0, _element.useState)(null);
42
- const [droppedIndex, setDroppedIndex] = (0, _element.useState)(null);
43
- const [measurements, setMeasurements] = (0, _element.useState)(null);
44
- const listRef = (0, _element.useRef)(null);
45
- const itemRefs = (0, _element.useRef)([]);
46
- const dropAnimationTimer = (0, _element.useRef)(null);
47
- const buttonMoveTimer = (0, _element.useRef)(null);
48
- const buttonFlipRef = (0, _element.useRef)(null);
49
- const [buttonMoveId, setButtonMoveId] = (0, _element.useState)(0);
50
- const documentDragOverRef = (0, _element.useRef)(null);
31
+ var CardSortableList = function CardSortableList(_ref) {
32
+ var _ref$disabled = _ref.disabled,
33
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
34
+ _ref$items = _ref.items,
35
+ items = _ref$items === void 0 ? [] : _ref$items,
36
+ _ref$onDragCallback = _ref.onDragCallback,
37
+ onDragCallback = _ref$onDragCallback === void 0 ? function () {} : _ref$onDragCallback;
38
+ var _useState = (0, _element.useState)(items),
39
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
40
+ sortedItems = _useState2[0],
41
+ setSortedItems = _useState2[1];
42
+ var _useState3 = (0, _element.useState)(null),
43
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
44
+ draggingIndex = _useState4[0],
45
+ setDraggingIndex = _useState4[1];
46
+ var _useState5 = (0, _element.useState)(null),
47
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
48
+ hoverIndex = _useState6[0],
49
+ setHoverIndex = _useState6[1];
50
+ var _useState7 = (0, _element.useState)(null),
51
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
52
+ droppedIndex = _useState8[0],
53
+ setDroppedIndex = _useState8[1];
54
+ var _useState9 = (0, _element.useState)(null),
55
+ _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
56
+ measurements = _useState0[0],
57
+ setMeasurements = _useState0[1];
58
+ var listRef = (0, _element.useRef)(null);
59
+ var itemRefs = (0, _element.useRef)([]);
60
+ var dropAnimationTimer = (0, _element.useRef)(null);
61
+ var buttonMoveTimer = (0, _element.useRef)(null);
62
+ var buttonFlipRef = (0, _element.useRef)(null);
63
+ var _useState1 = (0, _element.useState)(0),
64
+ _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
65
+ buttonMoveId = _useState10[0],
66
+ setButtonMoveId = _useState10[1];
67
+ var documentDragOverRef = (0, _element.useRef)(null);
51
68
 
52
69
  // Keep sortedItems in sync when the items prop changes externally (e.g. after a save).
53
- (0, _element.useEffect)(() => {
70
+ (0, _element.useEffect)(function () {
54
71
  setSortedItems(items);
55
72
  }, [items]);
56
73
 
57
74
  // Clean up any pending animation timer on unmount.
58
- (0, _element.useEffect)(() => {
59
- return () => {
75
+ (0, _element.useEffect)(function () {
76
+ return function () {
60
77
  if (dropAnimationTimer.current) {
61
78
  clearTimeout(dropAnimationTimer.current);
62
79
  }
@@ -73,28 +90,32 @@ const CardSortableList = ({
73
90
  * Handle a chevron-button move. Records item positions before the reorder so
74
91
  * the FLIP animation can play after React commits the new DOM order.
75
92
  */
76
- const handleButtonMove = (fromIndex, toIndex) => {
93
+ var handleButtonMove = function handleButtonMove(fromIndex, toIndex) {
77
94
  if (toIndex < 0 || toIndex >= sortedItems.length) {
78
95
  return;
79
96
  }
80
- const fromEl = itemRefs.current[fromIndex];
81
- const toEl = itemRefs.current[toIndex];
97
+ var fromEl = itemRefs.current[fromIndex];
98
+ var toEl = itemRefs.current[toIndex];
82
99
  if (!fromEl || !toEl) {
83
100
  return;
84
101
  }
85
- const stride = Math.abs(toEl.getBoundingClientRect().top - fromEl.getBoundingClientRect().top);
86
- const direction = toIndex > fromIndex ? 1 : -1;
102
+ var stride = Math.abs(toEl.getBoundingClientRect().top - fromEl.getBoundingClientRect().top);
103
+ var direction = toIndex > fromIndex ? 1 : -1;
87
104
  buttonFlipRef.current = {
88
- fromIndex,
89
- toIndex,
90
- stride,
91
- direction
105
+ fromIndex: fromIndex,
106
+ toIndex: toIndex,
107
+ stride: stride,
108
+ direction: direction
92
109
  };
93
- const reordered = [...sortedItems];
94
- const [moved] = reordered.splice(fromIndex, 1);
110
+ var reordered = (0, _toConsumableArray2["default"])(sortedItems);
111
+ var _reordered$splice = reordered.splice(fromIndex, 1),
112
+ _reordered$splice2 = (0, _slicedToArray2["default"])(_reordered$splice, 1),
113
+ moved = _reordered$splice2[0];
95
114
  reordered.splice(toIndex, 0, moved);
96
115
  setSortedItems(reordered);
97
- setButtonMoveId(id => id + 1);
116
+ setButtonMoveId(function (id) {
117
+ return id + 1;
118
+ });
98
119
  };
99
120
 
100
121
  /**
@@ -103,30 +124,28 @@ const CardSortableList = ({
103
124
  * using inline CSS transitions (no CSS classes, to avoid creating a new
104
125
  * containing block that would break position:fixed on the Draggable clone).
105
126
  */
106
- (0, _element.useLayoutEffect)(() => {
107
- const flipData = buttonFlipRef.current;
127
+ (0, _element.useLayoutEffect)(function () {
128
+ var flipData = buttonFlipRef.current;
108
129
  if (!flipData) {
109
130
  return;
110
131
  }
111
132
  buttonFlipRef.current = null;
112
- const {
113
- fromIndex,
114
- toIndex,
115
- stride,
116
- direction
117
- } = flipData;
118
- const startAnimation = (el, startY) => {
133
+ var fromIndex = flipData.fromIndex,
134
+ toIndex = flipData.toIndex,
135
+ stride = flipData.stride,
136
+ direction = flipData.direction;
137
+ var startAnimation = function startAnimation(el, startY) {
119
138
  if (!el) {
120
139
  return;
121
140
  }
122
141
  // Snap to the starting position with no transition.
123
142
  el.style.transition = 'none';
124
- el.style.transform = `translateY(${startY}px)`;
143
+ el.style.transform = "translateY(".concat(startY, "px)");
125
144
  // Force a reflow so the browser registers the starting position
126
145
  // before we switch to the animated transition.
127
146
  el.getBoundingClientRect();
128
147
  // Animate from startY back to 0 (its new natural position).
129
- el.style.transition = `transform ${BUTTON_MOVE_DURATION}ms ease-out`;
148
+ el.style.transition = "transform ".concat(BUTTON_MOVE_DURATION, "ms ease-out");
130
149
  el.style.transform = '';
131
150
  };
132
151
 
@@ -137,11 +156,11 @@ const CardSortableList = ({
137
156
  if (buttonMoveTimer.current) {
138
157
  clearTimeout(buttonMoveTimer.current);
139
158
  }
140
- buttonMoveTimer.current = setTimeout(() => {
159
+ buttonMoveTimer.current = setTimeout(function () {
141
160
  // Clear inline animation styles before calling the external callback so
142
161
  // the subsequent React re-render doesn't fight a live animation.
143
- [fromIndex, toIndex].forEach(i => {
144
- const el = itemRefs.current[i];
162
+ [fromIndex, toIndex].forEach(function (i) {
163
+ var el = itemRefs.current[i];
145
164
  if (el) {
146
165
  el.style.transition = '';
147
166
  el.style.transform = '';
@@ -150,13 +169,13 @@ const CardSortableList = ({
150
169
 
151
170
  // Move focus to the matching chevron button on the card at toIndex.
152
171
  // Focus before onDragCallback so a parent rerender can't steal focus.
153
- const targetEl = itemRefs.current[toIndex];
172
+ var targetEl = itemRefs.current[toIndex];
154
173
  if (targetEl) {
155
- const moveButtons = targetEl.querySelectorAll('.newspack-card--core__header__draggable-controls__move-buttons button');
174
+ var moveButtons = targetEl.querySelectorAll('.newspack-card--core__header__draggable-controls__move-buttons button');
156
175
  // direction > 0 = moved down → prefer the down button (index 1).
157
176
  // direction < 0 = moved up → prefer the up button (index 0).
158
- const preferred = direction > 0 ? moveButtons[1] : moveButtons[0];
159
- const fallback = direction > 0 ? moveButtons[0] : moveButtons[1];
177
+ var preferred = direction > 0 ? moveButtons[1] : moveButtons[0];
178
+ var fallback = direction > 0 ? moveButtons[0] : moveButtons[1];
160
179
  if (preferred && !preferred.disabled) {
161
180
  preferred.focus();
162
181
  } else if (fallback && !fallback.disabled) {
@@ -168,7 +187,7 @@ const CardSortableList = ({
168
187
  }, BUTTON_MOVE_DURATION);
169
188
  }, [buttonMoveId]); // eslint-disable-line react-hooks/exhaustive-deps
170
189
 
171
- const handleDragStart = index => {
190
+ var handleDragStart = function handleDragStart(index) {
172
191
  // Cancel any in-progress button-move animation so no item wrapper keeps
173
192
  // an inline transform. A transformed ancestor breaks position:fixed on
174
193
  // the Draggable clone (CSS spec: fixed positioning is relative to the
@@ -176,46 +195,50 @@ const CardSortableList = ({
176
195
  if (buttonMoveTimer.current) {
177
196
  clearTimeout(buttonMoveTimer.current);
178
197
  buttonMoveTimer.current = null;
179
- itemRefs.current.forEach(el => {
198
+ itemRefs.current.forEach(function (el) {
180
199
  if (el) {
181
200
  el.style.transition = '';
182
201
  el.style.transform = '';
183
202
  }
184
203
  });
185
204
  }
186
- const listEl = listRef.current;
205
+ var listEl = listRef.current;
187
206
  if (listEl) {
188
- var _rects$index$height;
189
- const itemEls = itemRefs.current;
190
- const rects = itemEls.map(el => el?.getBoundingClientRect());
207
+ var _rects$index$height, _rects$index;
208
+ var itemEls = itemRefs.current;
209
+ var rects = itemEls.map(function (el) {
210
+ return el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
211
+ });
191
212
 
192
213
  // Stride = item height + gap to next item (difference between consecutive tops).
193
- const itemStrides = rects.map((rect, i) => {
214
+ var itemStrides = rects.map(function (rect, i) {
194
215
  if (!rect) {
195
216
  return 0;
196
217
  }
197
- const nextRect = rects[i + 1];
218
+ var nextRect = rects[i + 1];
198
219
  return nextRect ? nextRect.top - rect.top : rect.height;
199
220
  });
200
221
  setMeasurements({
201
222
  lockedHeight: listEl.getBoundingClientRect().height,
202
- sourceHeight: (_rects$index$height = rects[index]?.height) !== null && _rects$index$height !== void 0 ? _rects$index$height : 0,
203
- itemStrides,
204
- itemTops: rects.map(rect => {
223
+ sourceHeight: (_rects$index$height = (_rects$index = rects[index]) === null || _rects$index === void 0 ? void 0 : _rects$index.height) !== null && _rects$index$height !== void 0 ? _rects$index$height : 0,
224
+ itemStrides: itemStrides,
225
+ itemTops: rects.map(function (rect) {
205
226
  var _rect$top;
206
- return (_rect$top = rect?.top) !== null && _rect$top !== void 0 ? _rect$top : 0;
227
+ return (_rect$top = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _rect$top !== void 0 ? _rect$top : 0;
207
228
  })
208
229
  });
209
230
  }
210
231
  // Make the entire document a valid drop target so the browser skips
211
232
  // its snap-back animation when the cursor is released outside the list.
212
- const preventSnapback = e => e.preventDefault();
233
+ var preventSnapback = function preventSnapback(e) {
234
+ return e.preventDefault();
235
+ };
213
236
  document.addEventListener('dragover', preventSnapback);
214
237
  documentDragOverRef.current = preventSnapback;
215
238
  setDraggingIndex(index);
216
239
  setDroppedIndex(null);
217
240
  };
218
- const clearDragState = () => {
241
+ var clearDragState = function clearDragState() {
219
242
  if (documentDragOverRef.current) {
220
243
  document.removeEventListener('dragover', documentDragOverRef.current);
221
244
  documentDragOverRef.current = null;
@@ -230,39 +253,39 @@ const CardSortableList = ({
230
253
  * top positions snapshotted at drag start. Mirrors the midpoint logic
231
254
  * previously used in getDropIndex but works without a live event target.
232
255
  */
233
- const getDropIndexFromCursor = (clientY, m, sourceIndex) => {
234
- const {
235
- itemTops,
236
- itemStrides,
237
- sourceHeight
238
- } = m;
239
- for (let i = 0; i < itemTops.length; i++) {
240
- const movingDown = sourceIndex > i;
241
- const midpoint = itemTops[i] + (movingDown ? itemStrides[i] : itemStrides[i] - sourceHeight);
256
+ var getDropIndexFromCursor = function getDropIndexFromCursor(clientY, m, sourceIndex) {
257
+ var itemTops = m.itemTops,
258
+ itemStrides = m.itemStrides,
259
+ sourceHeight = m.sourceHeight;
260
+ for (var i = 0; i < itemTops.length; i++) {
261
+ var movingDown = sourceIndex > i;
262
+ var midpoint = itemTops[i] + (movingDown ? itemStrides[i] : itemStrides[i] - sourceHeight);
242
263
  if (clientY < midpoint) {
243
264
  return i;
244
265
  }
245
266
  }
246
267
  return itemTops.length; // below all items
247
268
  };
248
- const handleDragEnd = event => {
269
+ var handleDragEnd = function handleDragEnd(event) {
249
270
  // Take a local copy of measurements before clearDragState nulls it.
250
- const m = measurements;
251
- const sourceIndex = draggingIndex;
271
+ var m = measurements;
272
+ var sourceIndex = draggingIndex;
252
273
  clearDragState();
253
274
  if (m === null || sourceIndex === null) {
254
275
  return;
255
276
  }
256
- const dropIndex = getDropIndexFromCursor(event.clientY, m, sourceIndex);
277
+ var dropIndex = getDropIndexFromCursor(event.clientY, m, sourceIndex);
257
278
 
258
279
  // Compute the destination index in the post-removal array.
259
280
  // After splicing out the dragged item, indices above it shift down by one.
260
- const insertIndex = dropIndex > sourceIndex ? dropIndex - 1 : dropIndex;
281
+ var insertIndex = dropIndex > sourceIndex ? dropIndex - 1 : dropIndex;
261
282
  if (insertIndex === sourceIndex) {
262
283
  return;
263
284
  }
264
- const reordered = [...sortedItems];
265
- const [moved] = reordered.splice(sourceIndex, 1);
285
+ var reordered = (0, _toConsumableArray2["default"])(sortedItems);
286
+ var _reordered$splice3 = reordered.splice(sourceIndex, 1),
287
+ _reordered$splice4 = (0, _slicedToArray2["default"])(_reordered$splice3, 1),
288
+ moved = _reordered$splice4[0];
266
289
  reordered.splice(insertIndex, 0, moved);
267
290
 
268
291
  // First render: show items in their new order with no animation.
@@ -272,21 +295,21 @@ const CardSortableList = ({
272
295
 
273
296
  // Next frame: trigger the drop animation on the newly-positioned item,
274
297
  // then call onDragCallback after the animation completes.
275
- requestAnimationFrame(() => {
298
+ requestAnimationFrame(function () {
276
299
  setDroppedIndex(insertIndex);
277
- dropAnimationTimer.current = setTimeout(() => {
300
+ dropAnimationTimer.current = setTimeout(function () {
278
301
  setDroppedIndex(null);
279
302
  onDragCallback(sourceIndex, insertIndex);
280
303
  }, DROP_ANIMATION_DURATION);
281
304
  });
282
305
  };
283
- const handleDragOver = (event, index) => {
306
+ var handleDragOver = function handleDragOver(event, index) {
284
307
  event.preventDefault();
285
308
  if (!measurements) {
286
309
  return;
287
310
  }
288
- const rect = event.currentTarget.getBoundingClientRect();
289
- const midpoint = rect.top + rect.height / 2;
311
+ var rect = event.currentTarget.getBoundingClientRect();
312
+ var midpoint = rect.top + rect.height / 2;
290
313
  setHoverIndex(event.clientY < midpoint ? index : index + 1);
291
314
  };
292
315
 
@@ -300,7 +323,7 @@ const CardSortableList = ({
300
323
  * item's stride (height + gap) to either fill the vacated source slot or make
301
324
  * room for the incoming gap at the hover position.
302
325
  */
303
- const getTranslateY = index => {
326
+ var getTranslateY = function getTranslateY(index) {
304
327
  var _itemStrides$dragging;
305
328
  if (draggingIndex === null || hoverIndex === null || !measurements) {
306
329
  return 0;
@@ -308,11 +331,9 @@ const CardSortableList = ({
308
331
  if (index === draggingIndex) {
309
332
  return 0;
310
333
  }
311
- const {
312
- itemStrides,
313
- sourceHeight
314
- } = measurements;
315
- const sourceStride = (_itemStrides$dragging = itemStrides[draggingIndex]) !== null && _itemStrides$dragging !== void 0 ? _itemStrides$dragging : sourceHeight;
334
+ var itemStrides = measurements.itemStrides,
335
+ sourceHeight = measurements.sourceHeight;
336
+ var sourceStride = (_itemStrides$dragging = itemStrides[draggingIndex]) !== null && _itemStrides$dragging !== void 0 ? _itemStrides$dragging : sourceHeight;
316
337
  if (hoverIndex > draggingIndex) {
317
338
  // Dragging downward: items strictly between source and hover position slide up.
318
339
  if (index > draggingIndex && index < hoverIndex) {
@@ -324,67 +345,82 @@ const CardSortableList = ({
324
345
  }
325
346
  return 0;
326
347
  };
327
- const isDragging = draggingIndex !== null;
348
+ var isDragging = draggingIndex !== null;
328
349
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
329
350
  ref: listRef,
330
- className: (0, _classnames.default)('newspack-card--core--sortable-list', disabled && 'newspack-card--core--sortable-list__is-disabled', isDragging && 'newspack-card--core--sortable-list__is-dragging'),
351
+ className: (0, _classnames["default"])('newspack-card--core--sortable-list', disabled && 'newspack-card--core--sortable-list__is-disabled', isDragging && 'newspack-card--core--sortable-list__is-dragging'),
331
352
  style: measurements ? {
332
353
  height: measurements.lockedHeight
333
354
  } : undefined,
334
355
  spacing: 4,
335
- children: sortedItems.map((item, index) => {
336
- const translateY = getTranslateY(index);
356
+ children: sortedItems.map(function (item, index) {
357
+ var translateY = getTranslateY(index);
337
358
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Disabled, {
338
359
  isDisabled: disabled,
339
360
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
340
- ref: el => {
361
+ ref: function ref(el) {
341
362
  itemRefs.current[index] = el;
342
363
  },
343
- className: (0, _classnames.default)('newspack-card--core--sortable-list__item', {
364
+ className: (0, _classnames["default"])('newspack-card--core--sortable-list__item', {
344
365
  'is-source': draggingIndex === index,
345
366
  'is-dropped': droppedIndex === index
346
367
  }),
347
368
  style: translateY ? {
348
- transform: `translateY(${translateY}px)`
369
+ transform: "translateY(".concat(translateY, "px)")
349
370
  } : {
350
371
  transition: !isDragging ? 'none' : undefined
351
372
  },
352
- id: `draggable-card-${index}`,
353
- onDragOver: e => handleDragOver(e, index),
373
+ id: "draggable-card-".concat(index),
374
+ onDragOver: function onDragOver(e) {
375
+ return handleDragOver(e, index);
376
+ },
354
377
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Draggable, {
355
378
  transferData: {},
356
379
  cloneClassname: "newspack-card--core--sortable-list__item__clone",
357
- elementId: `draggable-card-${index}`,
358
- onDragStart: () => handleDragStart(index),
380
+ elementId: "draggable-card-".concat(index),
381
+ onDragStart: function onDragStart() {
382
+ return handleDragStart(index);
383
+ },
359
384
  onDragEnd: handleDragEnd,
360
385
  appendToOwnerDocument: true,
361
- children: ({
362
- onDraggableStart,
363
- onDraggableEnd
364
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Card, {
365
- isSmall: true,
366
- draggable: true,
367
- onDragStart: onDraggableStart,
368
- onDragEnd: onDraggableEnd,
369
- __experimentalCoreCard: true,
370
- __experimentalCoreProps: {
371
- header: /*#__PURE__*/(0, _jsxRuntime.jsxs)("h3", {
372
- children: [item.title, /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Badge, {
373
- level: item.badgeLevel,
374
- text: item.badgeText
375
- })]
376
- }),
377
- isDraggable: true,
378
- isFirstTarget: index === 0,
379
- isLastTarget: index === sortedItems.length - 1,
380
- dragIndex: index,
381
- onDragCallback: handleButtonMove
382
- }
383
- })
386
+ children: function children(_ref2) {
387
+ var onDraggableStart = _ref2.onDraggableStart,
388
+ onDraggableEnd = _ref2.onDraggableEnd;
389
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Card, {
390
+ isSmall: true,
391
+ draggable: true,
392
+ onDragStart: onDraggableStart,
393
+ onDragEnd: onDraggableEnd,
394
+ __experimentalCoreCard: true,
395
+ __experimentalCoreProps: _objectSpread(_objectSpread({
396
+ header: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
397
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h3", {
398
+ children: [item.title, /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Badge, {
399
+ level: item.badgeLevel,
400
+ text: item.badgeText
401
+ })]
402
+ }), item.description && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
403
+ children: item.description
404
+ })]
405
+ }),
406
+ isDraggable: true,
407
+ isFirstTarget: index === 0,
408
+ isLastTarget: index === sortedItems.length - 1,
409
+ dragIndex: index,
410
+ onDragCallback: handleButtonMove
411
+ }, item.onToggleChange !== undefined && {
412
+ actionType: 'toggle',
413
+ isActive: item.toggleChecked,
414
+ onToggle: item.onToggleChange
415
+ }), item.actions !== undefined && {
416
+ actions: item.actions
417
+ })
418
+ });
419
+ }
384
420
  })
385
421
  })
386
422
  }, item.id);
387
423
  })
388
424
  });
389
425
  };
390
- var _default = exports.default = CardSortableList;
426
+ var _default = exports["default"] = CardSortableList;