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,11 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
6
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
7
+ 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; }
8
+ 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
9
  /**
2
10
  * External dependencies
3
11
  */
@@ -14,35 +22,58 @@ import { __ } from '@wordpress/i18n';
14
22
  import { addQueryArgs } from '@wordpress/url';
15
23
  import './style.scss';
16
24
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
- const AutocompleteWithLatestPosts = ({
18
- fetchSuggestions = false,
19
- // If passed, will use this function to fetch suggestions data.
20
- help = __('Begin typing search term, click autocomplete result to select.', 'newspack-plugin'),
21
- hideHelp = true,
22
- // If true, all help text will be hidden.
23
- hideFormTokenHelp = true,
24
- // If true, hides FormTokenField's built-in help text.
25
- label = __('Search', 'newspack-plugin'),
26
- maxItemsToSuggest = 0,
27
- // If passed, will be used to determine "load more" state. Necessary if you want "load more" functionality when using a custom `fetchSuggestions` function.
28
- multiSelect = false,
29
- // If true, component can select multiple values at once.
30
- onChange = false,
31
- // Function to call when selections change.
32
- selectedItems = [],
33
- // Array of saved items.
34
- suggestionsToFetch = 20 // Number of suggestions to fetch per query.
35
- }) => {
36
- const [isLoading, setIsLoading] = useState(true);
37
- const [isLoadingMore, setIsLoadingMore] = useState(false);
38
- const [suggestions, setSuggestions] = useState([]);
39
- const [maxSuggestions, setMaxSuggestions] = useState(0);
40
- const [searchSuggestions, setSearchSuggestions] = useState([]);
41
- const [validValues, setValidValues] = useState({});
42
- const [isSearching, setIsSearching] = useState(false);
25
+ var AutocompleteWithLatestPosts = function AutocompleteWithLatestPosts(_ref) {
26
+ var _ref$fetchSuggestions = _ref.fetchSuggestions,
27
+ fetchSuggestions = _ref$fetchSuggestions === void 0 ? false : _ref$fetchSuggestions,
28
+ _ref$help = _ref.help,
29
+ help = _ref$help === void 0 ? __('Begin typing search term, click autocomplete result to select.', 'newspack-plugin') : _ref$help,
30
+ _ref$hideHelp = _ref.hideHelp,
31
+ hideHelp = _ref$hideHelp === void 0 ? true : _ref$hideHelp,
32
+ _ref$hideFormTokenHel = _ref.hideFormTokenHelp,
33
+ hideFormTokenHelp = _ref$hideFormTokenHel === void 0 ? true : _ref$hideFormTokenHel,
34
+ _ref$label = _ref.label,
35
+ label = _ref$label === void 0 ? __('Search', 'newspack-plugin') : _ref$label,
36
+ _ref$maxItemsToSugges = _ref.maxItemsToSuggest,
37
+ maxItemsToSuggest = _ref$maxItemsToSugges === void 0 ? 0 : _ref$maxItemsToSugges,
38
+ _ref$multiSelect = _ref.multiSelect,
39
+ multiSelect = _ref$multiSelect === void 0 ? false : _ref$multiSelect,
40
+ _ref$onChange = _ref.onChange,
41
+ onChange = _ref$onChange === void 0 ? false : _ref$onChange,
42
+ _ref$selectedItems = _ref.selectedItems,
43
+ selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
44
+ _ref$suggestionsToFet = _ref.suggestionsToFetch,
45
+ suggestionsToFetch = _ref$suggestionsToFet === void 0 ? 20 : _ref$suggestionsToFet;
46
+ var _useState = useState(true),
47
+ _useState2 = _slicedToArray(_useState, 2),
48
+ isLoading = _useState2[0],
49
+ setIsLoading = _useState2[1];
50
+ var _useState3 = useState(false),
51
+ _useState4 = _slicedToArray(_useState3, 2),
52
+ isLoadingMore = _useState4[0],
53
+ setIsLoadingMore = _useState4[1];
54
+ var _useState5 = useState([]),
55
+ _useState6 = _slicedToArray(_useState5, 2),
56
+ suggestions = _useState6[0],
57
+ setSuggestions = _useState6[1];
58
+ var _useState7 = useState(0),
59
+ _useState8 = _slicedToArray(_useState7, 2),
60
+ maxSuggestions = _useState8[0],
61
+ setMaxSuggestions = _useState8[1];
62
+ var _useState9 = useState([]),
63
+ _useState0 = _slicedToArray(_useState9, 2),
64
+ searchSuggestions = _useState0[0],
65
+ setSearchSuggestions = _useState0[1];
66
+ var _useState1 = useState({}),
67
+ _useState10 = _slicedToArray(_useState1, 2),
68
+ validValues = _useState10[0],
69
+ setValidValues = _useState10[1];
70
+ var _useState11 = useState(false),
71
+ _useState12 = _slicedToArray(_useState11, 2),
72
+ isSearching = _useState12[0],
73
+ setIsSearching = _useState12[1];
43
74
  // Leaving this in here so we can expand to use different post types in the future; right now it defaults to 'post'.
44
- const postTypeToSearch = 'post';
45
- const classNames = ['newspack-autocomplete-with-latest-posts'];
75
+ var postTypeToSearch = 'post';
76
+ var classNames = ['newspack-autocomplete-with-latest-posts'];
46
77
  if (hideFormTokenHelp) {
47
78
  classNames.push('hide-form-token-help');
48
79
  }
@@ -53,116 +84,141 @@ const AutocompleteWithLatestPosts = ({
53
84
  /**
54
85
  * Debounced function to update search suggestions.
55
86
  */
56
- const debouncedUpdateSuggestions = debounce(input => {
87
+ var debouncedUpdateSuggestions = debounce(function (input) {
57
88
  if (!input || input.length < 2) {
58
89
  setSearchSuggestions([]);
59
90
  setIsSearching(false);
60
91
  return;
61
92
  }
62
93
  setIsSearching(true);
63
- handleFetchSuggestions(input, 0, postTypeToSearch).then(_suggestions => {
94
+ handleFetchSuggestions(input, 0, postTypeToSearch).then(function (_suggestions) {
64
95
  setSearchSuggestions(_suggestions);
65
96
  // Update valid values for token conversion
66
- const newValidValues = {
67
- ...validValues
68
- };
69
- _suggestions.forEach(suggestion => {
97
+ var newValidValues = _objectSpread({}, validValues);
98
+ _suggestions.forEach(function (suggestion) {
70
99
  newValidValues[suggestion.value] = suggestion.label;
71
100
  });
72
101
  setValidValues(newValidValues);
73
- }).finally(() => setIsSearching(false));
102
+ })["finally"](function () {
103
+ return setIsSearching(false);
104
+ });
74
105
  }, 500);
75
106
 
76
107
  /**
77
108
  * Fetch recent posts to show as suggestions.
78
109
  */
79
- useEffect(() => {
110
+ useEffect(function () {
80
111
  setIsLoading(true);
81
- handleFetchSuggestions(null, 0, postTypeToSearch).then(_suggestions => {
112
+ handleFetchSuggestions(null, 0, postTypeToSearch).then(function (_suggestions) {
82
113
  if (0 < _suggestions.length) {
83
114
  setSuggestions(_suggestions);
84
115
  // Update valid values for token conversion
85
- const newValidValues = {
86
- ...validValues
87
- };
88
- _suggestions.forEach(suggestion => {
116
+ var newValidValues = _objectSpread({}, validValues);
117
+ _suggestions.forEach(function (suggestion) {
89
118
  newValidValues[suggestion.value] = suggestion.label;
90
119
  });
91
120
  setValidValues(newValidValues);
92
121
  }
93
- }).finally(() => setIsLoading(false));
122
+ })["finally"](function () {
123
+ return setIsLoading(false);
124
+ });
94
125
  }, []);
95
126
 
96
127
  /**
97
128
  * Fetch more suggestions.
98
129
  */
99
- useEffect(() => {
130
+ useEffect(function () {
100
131
  if (isLoadingMore) {
101
- handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(_suggestions => {
132
+ handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(function (_suggestions) {
102
133
  if (0 < _suggestions.length) {
103
134
  setSuggestions(suggestions.concat(_suggestions));
104
135
  }
105
- }).finally(() => setIsLoadingMore(false));
136
+ })["finally"](function () {
137
+ return setIsLoadingMore(false);
138
+ });
106
139
  }
107
140
  }, [isLoadingMore]);
108
141
 
109
142
  /**
110
143
  * If passed a `fetchSuggestions` prop, use that, otherwise, build it based on the selected post type.
111
144
  */
112
- const handleFetchSuggestions = fetchSuggestions ? fetchSuggestions : async (search = null, offset = 0, searchSlug = null) => {
113
- const postTypeSlug = searchSlug || postTypeToSearch;
114
- const endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
115
- : postTypeSlug; // Custom post type endpoints are singular.
116
- const response = await apiFetch({
117
- parse: false,
118
- path: addQueryArgs('/wp/v2/' + endpoint, {
119
- search,
120
- offset,
121
- per_page: suggestionsToFetch,
122
- _fields: 'id,title'
123
- })
124
- });
125
- const total = parseInt(response.headers.get('x-wp-total') || 0);
126
- const posts = await response.json();
127
- setMaxSuggestions(total);
145
+ var handleFetchSuggestions = fetchSuggestions ? fetchSuggestions : /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
146
+ var search,
147
+ offset,
148
+ searchSlug,
149
+ postTypeSlug,
150
+ endpoint,
151
+ response,
152
+ total,
153
+ posts,
154
+ _args = arguments;
155
+ return _regenerator().w(function (_context) {
156
+ while (1) switch (_context.n) {
157
+ case 0:
158
+ search = _args.length > 0 && _args[0] !== undefined ? _args[0] : null;
159
+ offset = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
160
+ searchSlug = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
161
+ postTypeSlug = searchSlug || postTypeToSearch;
162
+ endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
163
+ : postTypeSlug; // Custom post type endpoints are singular.
164
+ _context.n = 1;
165
+ return apiFetch({
166
+ parse: false,
167
+ path: addQueryArgs('/wp/v2/' + endpoint, {
168
+ search: search,
169
+ offset: offset,
170
+ per_page: suggestionsToFetch,
171
+ _fields: 'id,title'
172
+ })
173
+ });
174
+ case 1:
175
+ response = _context.v;
176
+ total = parseInt(response.headers.get('x-wp-total') || 0);
177
+ _context.n = 2;
178
+ return response.json();
179
+ case 2:
180
+ posts = _context.v;
181
+ setMaxSuggestions(total);
128
182
 
129
- // Format suggestions for FormTokenField display.
130
- return posts.reduce((acc, post) => {
131
- acc.push({
132
- value: parseInt(post.id),
133
- label: decodeEntities(post?.title.rendered) || __('(no title)', 'newspack-plugin')
134
- });
135
- return acc;
136
- }, []);
137
- };
183
+ // Format suggestions for FormTokenField display.
184
+ return _context.a(2, posts.reduce(function (acc, post) {
185
+ acc.push({
186
+ value: parseInt(post.id),
187
+ label: decodeEntities(post === null || post === void 0 ? void 0 : post.title.rendered) || __('(no title)', 'newspack-plugin')
188
+ });
189
+ return acc;
190
+ }, []));
191
+ }
192
+ }, _callee);
193
+ }));
138
194
 
139
195
  /**
140
196
  * Get labels for token values.
141
197
  */
142
- const getLabelsForValues = values => {
143
- return values.reduce((accumulator, value) => {
198
+ var getLabelsForValues = function getLabelsForValues(values) {
199
+ return values.reduce(function (accumulator, value) {
144
200
  if (!value) {
145
201
  return accumulator;
146
202
  }
147
203
  if (value.label) {
148
- return [...accumulator, value.label];
204
+ return [].concat(_toConsumableArray(accumulator), [value.label]);
149
205
  }
150
- return validValues[value] ? [...accumulator, validValues[value]] : accumulator;
206
+ return validValues[value] ? [].concat(_toConsumableArray(accumulator), [validValues[value]]) : accumulator;
151
207
  }, []);
152
208
  };
153
209
 
154
210
  /**
155
211
  * Get values for token labels.
156
212
  */
157
- const getValuesForLabels = labels => {
213
+ var getValuesForLabels = function getValuesForLabels(labels) {
158
214
  // eslint-disable-next-line @typescript-eslint/no-shadow
159
- return labels.reduce((acc, label) => {
160
- Object.keys(validValues).forEach(key => {
215
+ return labels.reduce(function (acc, label) {
216
+ Object.keys(validValues).forEach(function (key) {
161
217
  if (validValues[key] === label) {
162
- const value = isNaN(parseInt(key)) ? key.toString() : parseInt(key);
218
+ var value = isNaN(parseInt(key)) ? key.toString() : parseInt(key);
163
219
  acc.push({
164
- value,
165
- label
220
+ value: value,
221
+ label: label
166
222
  });
167
223
  }
168
224
  });
@@ -173,32 +229,32 @@ const AutocompleteWithLatestPosts = ({
173
229
  /**
174
230
  * Handle FormTokenField onChange.
175
231
  */
176
- const handleTokenChange = tokenStrings => {
177
- const newSelections = getValuesForLabels(tokenStrings);
232
+ var handleTokenChange = function handleTokenChange(tokenStrings) {
233
+ var newSelections = getValuesForLabels(tokenStrings);
178
234
 
179
235
  // If only allowing one selection, just return the one selected item.
180
236
  if (!multiSelect) {
181
- const newSelection = newSelections[newSelections.length - 1]; // Get the last selected item
237
+ var newSelection = newSelections[newSelections.length - 1]; // Get the last selected item
182
238
  if (newSelection) {
183
- return onChange([{
184
- ...newSelection,
239
+ return onChange([_objectSpread(_objectSpread({}, newSelection), {}, {
185
240
  postType: postTypeToSearch
186
- }]);
241
+ })]);
187
242
  }
188
243
  return onChange([]);
189
244
  }
190
245
 
191
246
  // For multi-select, include currently selected post type in selection results.
192
- onChange(newSelections.map(selection => ({
193
- ...selection,
194
- postType: postTypeToSearch
195
- })));
247
+ onChange(newSelections.map(function (selection) {
248
+ return _objectSpread(_objectSpread({}, selection), {}, {
249
+ postType: postTypeToSearch
250
+ });
251
+ }));
196
252
  };
197
253
 
198
254
  /**
199
255
  * Get tokens for FormTokenField.
200
256
  */
201
- const getTokens = () => {
257
+ var getTokens = function getTokens() {
202
258
  return getLabelsForValues(selectedItems);
203
259
  };
204
260
 
@@ -207,22 +263,26 @@ const AutocompleteWithLatestPosts = ({
207
263
  *
208
264
  * @param {Object} suggestion Suggestion object with value and label keys.
209
265
  */
210
- const renderSuggestion = suggestion => {
266
+ var renderSuggestion = function renderSuggestion(suggestion) {
211
267
  if (multiSelect) {
212
- const isSelected = !!selectedItems.find(_selection => parseInt(_selection.value) === parseInt(suggestion.value) && _selection.label === suggestion.label);
268
+ var isSelected = !!selectedItems.find(function (_selection) {
269
+ return parseInt(_selection.value) === parseInt(suggestion.value) && _selection.label === suggestion.label;
270
+ });
213
271
  return /*#__PURE__*/_jsx(CheckboxControl, {
214
272
  checked: isSelected,
215
- onChange: () => {
273
+ onChange: function onChange() {
216
274
  // For multi-select, we need to toggle the selection
217
- const currentTokens = getTokens();
218
- const suggestionLabel = suggestion.label;
275
+ var currentTokens = getTokens();
276
+ var suggestionLabel = suggestion.label;
219
277
  if (isSelected) {
220
278
  // Remove the suggestion
221
- const newTokens = currentTokens.filter(token => token !== suggestionLabel);
279
+ var newTokens = currentTokens.filter(function (token) {
280
+ return token !== suggestionLabel;
281
+ });
222
282
  handleTokenChange(newTokens);
223
283
  } else {
224
284
  // Add the suggestion
225
- handleTokenChange([...currentTokens, suggestionLabel]);
285
+ handleTokenChange([].concat(_toConsumableArray(currentTokens), [suggestionLabel]));
226
286
  }
227
287
  },
228
288
  label: suggestion.label
@@ -230,7 +290,9 @@ const AutocompleteWithLatestPosts = ({
230
290
  }
231
291
  return /*#__PURE__*/_jsx(Button, {
232
292
  isLink: true,
233
- onClick: () => handleTokenChange([...getTokens(), suggestion.label]),
293
+ onClick: function onClick() {
294
+ return handleTokenChange([].concat(_toConsumableArray(getTokens()), [suggestion.label]));
295
+ },
234
296
  children: suggestion.label
235
297
  }, suggestion.value);
236
298
  };
@@ -238,11 +300,11 @@ const AutocompleteWithLatestPosts = ({
238
300
  /**
239
301
  * Render a list of suggestions that can be clicked to select instead of searching by title.
240
302
  */
241
- const renderSuggestions = () => {
303
+ var renderSuggestions = function renderSuggestions() {
242
304
  if (0 === suggestions.length) {
243
305
  return null;
244
306
  }
245
- const className = multiSelect ? 'newspack-autocomplete-with-latest-posts__search-suggestions-multiselect' : 'newspack-autocomplete-with-latest-posts__search-suggestions';
307
+ var className = multiSelect ? 'newspack-autocomplete-with-latest-posts__search-suggestions-multiselect' : 'newspack-autocomplete-with-latest-posts__search-suggestions';
246
308
  return /*#__PURE__*/_jsx(_Fragment, {
247
309
  children: /*#__PURE__*/_jsxs("div", {
248
310
  className: "newspack-autocomplete-with-latest-posts__search-suggestions-container",
@@ -254,7 +316,9 @@ const AutocompleteWithLatestPosts = ({
254
316
  children: [suggestions.map(renderSuggestion), suggestions.length < (maxItemsToSuggest || maxSuggestions) && /*#__PURE__*/_jsx(Button, {
255
317
  disabled: isLoadingMore,
256
318
  isSecondary: true,
257
- onClick: () => setIsLoadingMore(true),
319
+ onClick: function onClick() {
320
+ return setIsLoadingMore(true);
321
+ },
258
322
  children: isLoadingMore ? __('Loading…', 'newspack-plugin') : __('Load more', 'newspack-plugin')
259
323
  })]
260
324
  })]
@@ -267,7 +331,9 @@ const AutocompleteWithLatestPosts = ({
267
331
  className: "newspack-autocomplete-with-latest-posts__input-container",
268
332
  children: [/*#__PURE__*/_jsx(FormTokenField, {
269
333
  value: getTokens(),
270
- suggestions: searchSuggestions.map(suggestion => suggestion.label),
334
+ suggestions: searchSuggestions.map(function (suggestion) {
335
+ return suggestion.label;
336
+ }),
271
337
  onChange: handleTokenChange,
272
338
  onInputChange: debouncedUpdateSuggestions,
273
339
  label: label,