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