newspack-components 4.2.0 → 4.4.0-epic-editor-refactor.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 (315) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/copy-styles.js +3 -2
  4. package/dist/cjs/accordion/index.js +17 -12
  5. package/dist/cjs/action-card/index.js +186 -140
  6. package/dist/cjs/action-card/style.scss +25 -2
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +351 -0
  9. package/dist/cjs/autocomplete-with-latest-posts/style.scss +150 -0
  10. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  11. package/dist/cjs/badge/index.js +32 -0
  12. package/dist/cjs/badge/style.scss +36 -0
  13. package/dist/cjs/box-contrast/index.js +19 -15
  14. package/dist/cjs/button/index.js +41 -24
  15. package/dist/cjs/button-props/button-props.js +5 -5
  16. package/dist/cjs/button-props/index.js +2 -2
  17. package/dist/cjs/card/core-card.js +199 -0
  18. package/dist/cjs/card/index.js +75 -35
  19. package/dist/cjs/card/style-core.scss +295 -0
  20. package/dist/cjs/card/style.scss +4 -4
  21. package/dist/cjs/card-feature/index.js +141 -0
  22. package/dist/cjs/card-feature/style.scss +75 -0
  23. package/dist/cjs/card-form/index.js +144 -0
  24. package/dist/cjs/card-form/style.scss +20 -0
  25. package/dist/cjs/card-settings-group/index.js +69 -0
  26. package/dist/cjs/card-settings-group/style.scss +33 -0
  27. package/dist/cjs/card-sortable-list/index.js +426 -0
  28. package/dist/cjs/card-sortable-list/style.scss +48 -0
  29. package/dist/cjs/category-autocomplete/index.js +175 -155
  30. package/dist/cjs/color-picker/index.js +41 -23
  31. package/dist/cjs/color-picker/index.test.js +82 -0
  32. package/dist/cjs/color-picker/style.scss +11 -13
  33. package/dist/cjs/confirm-dialog/index.js +123 -0
  34. package/dist/cjs/consts.js +1 -1
  35. package/dist/cjs/custom-select-control/index.js +39 -28
  36. package/dist/cjs/dataviews/index.js +38 -0
  37. package/dist/cjs/dataviews/style.scss +9 -0
  38. package/dist/cjs/divider/index.js +47 -0
  39. package/dist/cjs/divider/style.scss +51 -0
  40. package/dist/cjs/footer/index.js +36 -30
  41. package/dist/cjs/form-token-field/index.js +51 -40
  42. package/dist/cjs/form-token-field/style.scss +0 -5
  43. package/dist/cjs/global-notices/index.js +5 -5
  44. package/dist/cjs/grid/index.js +25 -18
  45. package/dist/cjs/grid/style.scss +67 -8
  46. package/dist/cjs/handoff/index.js +204 -156
  47. package/dist/cjs/handoff-message/index.js +12 -7
  48. package/dist/cjs/hooks/index.js +10 -8
  49. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  50. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  51. package/dist/cjs/hooks/useObjectState.js +21 -12
  52. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  53. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  54. package/dist/cjs/hooks/usePrompt.js +10 -13
  55. package/dist/cjs/image-upload/index.js +114 -123
  56. package/dist/cjs/image-upload/index.test.js +11 -13
  57. package/dist/cjs/image-upload/style.scss +12 -40
  58. package/dist/cjs/index.js +166 -92
  59. package/dist/cjs/info-button/index.js +43 -32
  60. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  61. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  62. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  63. package/dist/cjs/integration-icons/index.js +48 -0
  64. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  65. package/dist/cjs/integration-icons/salesforce.js +17 -0
  66. package/dist/cjs/integration-icons/wisepops.js +20 -0
  67. package/dist/cjs/modal/index.js +29 -19
  68. package/dist/cjs/modal/style.scss +47 -13
  69. package/dist/cjs/newspack-icon/index.js +45 -38
  70. package/dist/cjs/newspack-icon/style.scss +5 -3
  71. package/dist/cjs/notice/index.js +64 -55
  72. package/dist/cjs/plugin-installer/index.js +259 -253
  73. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  74. package/dist/cjs/plugin-settings/index.js +217 -200
  75. package/dist/cjs/plugin-toggle/index.js +192 -199
  76. package/dist/cjs/popover/index.js +41 -28
  77. package/dist/cjs/position-control/index.js +24 -23
  78. package/dist/cjs/progress-bar/index.js +71 -59
  79. package/dist/cjs/progress-bar/index.test.js +62 -68
  80. package/dist/cjs/proxied-imports/router.js +3 -3
  81. package/dist/cjs/radio-control/index.js +40 -27
  82. package/dist/cjs/section-header/index.js +143 -39
  83. package/dist/cjs/section-header/style.scss +129 -4
  84. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  85. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  86. package/dist/cjs/select-control/index.js +52 -40
  87. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  88. package/dist/cjs/settings/SettingsCard.js +20 -17
  89. package/dist/cjs/settings/SettingsSection.js +22 -21
  90. package/dist/cjs/settings/index.js +5 -5
  91. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  92. package/dist/cjs/steps-list/index.js +44 -34
  93. package/dist/cjs/steps-list-item/index.js +47 -39
  94. package/dist/cjs/style-card/index.js +70 -63
  95. package/dist/cjs/style.scss +2 -0
  96. package/dist/cjs/tabbed-navigation/index.js +38 -36
  97. package/dist/cjs/text-control/index.js +27 -25
  98. package/dist/cjs/utils/color.js +4 -4
  99. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  100. package/dist/cjs/utils/index.js +31 -19
  101. package/dist/cjs/utils/style.scss +8 -0
  102. package/dist/cjs/waiting/index.js +48 -35
  103. package/dist/cjs/waiting/style.scss +4 -0
  104. package/dist/cjs/web-preview/index.js +219 -154
  105. package/dist/cjs/web-preview/style.scss +20 -53
  106. package/dist/cjs/with-wizard/index.js +362 -364
  107. package/dist/cjs/with-wizard/style.scss +28 -60
  108. package/dist/cjs/with-wizard-screen/index.js +54 -58
  109. package/dist/cjs/with-wizard-screen/style.scss +77 -10
  110. package/dist/cjs/wizard/components/WizardError.js +20 -18
  111. package/dist/cjs/wizard/components/WizardSnackbar.js +73 -0
  112. package/dist/cjs/wizard/components/style.scss +48 -0
  113. package/dist/cjs/wizard/index.js +207 -64
  114. package/dist/cjs/wizard/store/index.js +191 -97
  115. package/dist/cjs/wizard/store/utils.js +13 -8
  116. package/dist/esm/accordion/index.js +14 -9
  117. package/dist/esm/action-card/index.js +178 -124
  118. package/dist/esm/action-card/style.scss +25 -2
  119. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  120. package/dist/esm/autocomplete-with-latest-posts/index.js +347 -0
  121. package/dist/esm/autocomplete-with-latest-posts/style.scss +150 -0
  122. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  123. package/dist/esm/badge/index.js +24 -0
  124. package/dist/esm/badge/style.scss +36 -0
  125. package/dist/esm/box-contrast/index.js +15 -11
  126. package/dist/esm/button/index.js +39 -19
  127. package/dist/esm/button-props/button-props.js +1 -1
  128. package/dist/esm/card/core-card.js +195 -0
  129. package/dist/esm/card/index.js +70 -22
  130. package/dist/esm/card/style-core.scss +295 -0
  131. package/dist/esm/card/style.scss +4 -4
  132. package/dist/esm/card-feature/index.js +131 -0
  133. package/dist/esm/card-feature/style.scss +75 -0
  134. package/dist/esm/card-form/index.js +134 -0
  135. package/dist/esm/card-form/style.scss +20 -0
  136. package/dist/esm/card-settings-group/index.js +61 -0
  137. package/dist/esm/card-settings-group/style.scss +33 -0
  138. package/dist/esm/card-sortable-list/index.js +425 -0
  139. package/dist/esm/card-sortable-list/style.scss +48 -0
  140. package/dist/esm/category-autocomplete/index.js +168 -140
  141. package/dist/esm/color-picker/index.js +39 -21
  142. package/dist/esm/color-picker/index.test.js +78 -0
  143. package/dist/esm/color-picker/style.scss +11 -13
  144. package/dist/esm/confirm-dialog/index.js +116 -0
  145. package/dist/esm/consts.js +1 -1
  146. package/dist/esm/custom-select-control/index.js +34 -15
  147. package/dist/esm/dataviews/index.js +34 -0
  148. package/dist/esm/dataviews/style.scss +9 -0
  149. package/dist/esm/divider/index.js +42 -0
  150. package/dist/esm/divider/style.scss +51 -0
  151. package/dist/esm/footer/index.js +34 -28
  152. package/dist/esm/form-token-field/index.js +46 -27
  153. package/dist/esm/form-token-field/style.scss +0 -5
  154. package/dist/esm/global-notices/index.js +3 -3
  155. package/dist/esm/grid/index.js +23 -13
  156. package/dist/esm/grid/style.scss +67 -8
  157. package/dist/esm/handoff/index.js +199 -143
  158. package/dist/esm/handoff-message/index.js +10 -6
  159. package/dist/esm/hooks/index.js +8 -6
  160. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  161. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  162. package/dist/esm/hooks/useObjectState.js +19 -9
  163. package/dist/esm/hooks/useObjectState.test.js +54 -32
  164. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  165. package/dist/esm/hooks/usePrompt.js +9 -11
  166. package/dist/esm/image-upload/index.js +110 -111
  167. package/dist/esm/image-upload/index.test.js +11 -13
  168. package/dist/esm/image-upload/style.scss +12 -40
  169. package/dist/esm/index.js +13 -1
  170. package/dist/esm/info-button/index.js +38 -19
  171. package/dist/esm/integration-icons/active-campaign.js +16 -0
  172. package/dist/esm/integration-icons/constant-contact.js +22 -0
  173. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  174. package/dist/esm/integration-icons/index.js +6 -0
  175. package/dist/esm/integration-icons/mailchimp.js +13 -0
  176. package/dist/esm/integration-icons/salesforce.js +11 -0
  177. package/dist/esm/integration-icons/wisepops.js +14 -0
  178. package/dist/esm/modal/index.js +27 -13
  179. package/dist/esm/modal/style.scss +47 -13
  180. package/dist/esm/newspack-icon/index.js +40 -25
  181. package/dist/esm/newspack-icon/style.scss +5 -3
  182. package/dist/esm/notice/index.js +59 -42
  183. package/dist/esm/plugin-installer/index.js +255 -243
  184. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  185. package/dist/esm/plugin-settings/index.js +212 -189
  186. package/dist/esm/plugin-toggle/index.js +187 -190
  187. package/dist/esm/popover/index.js +35 -16
  188. package/dist/esm/position-control/index.js +22 -18
  189. package/dist/esm/progress-bar/index.js +66 -49
  190. package/dist/esm/progress-bar/index.test.js +61 -67
  191. package/dist/esm/radio-control/index.js +34 -15
  192. package/dist/esm/section-header/index.js +140 -38
  193. package/dist/esm/section-header/style.scss +129 -4
  194. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  195. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  196. package/dist/esm/select-control/index.js +47 -27
  197. package/dist/esm/settings/MinMaxSetting.js +27 -16
  198. package/dist/esm/settings/SettingsCard.js +18 -13
  199. package/dist/esm/settings/SettingsSection.js +20 -19
  200. package/dist/esm/settings/index.js +3 -3
  201. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  202. package/dist/esm/steps-list/index.js +39 -21
  203. package/dist/esm/steps-list-item/index.js +42 -26
  204. package/dist/esm/style-card/index.js +65 -50
  205. package/dist/esm/style.scss +2 -0
  206. package/dist/esm/tabbed-navigation/index.js +35 -33
  207. package/dist/esm/text-control/index.js +25 -19
  208. package/dist/esm/utils/color.js +4 -4
  209. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  210. package/dist/esm/utils/index.js +29 -16
  211. package/dist/esm/utils/style.scss +8 -0
  212. package/dist/esm/waiting/index.js +43 -22
  213. package/dist/esm/waiting/style.scss +4 -0
  214. package/dist/esm/web-preview/index.js +218 -147
  215. package/dist/esm/web-preview/style.scss +20 -53
  216. package/dist/esm/with-wizard/index.js +360 -358
  217. package/dist/esm/with-wizard/style.scss +28 -60
  218. package/dist/esm/with-wizard-screen/index.js +48 -46
  219. package/dist/esm/with-wizard-screen/style.scss +77 -10
  220. package/dist/esm/wizard/components/WizardError.js +18 -16
  221. package/dist/esm/wizard/components/WizardSnackbar.js +70 -0
  222. package/dist/esm/wizard/components/style.scss +48 -0
  223. package/dist/esm/wizard/index.js +207 -58
  224. package/dist/esm/wizard/store/index.js +189 -90
  225. package/dist/esm/wizard/store/utils.js +13 -6
  226. package/package.json +30 -17
  227. package/release.config.js +1 -0
  228. package/shared/author-context.js +26 -0
  229. package/shared/hooks/use-coauthors.js +388 -0
  230. package/shared/hooks/use-coauthors.test.js +850 -0
  231. package/shared/hooks/use-custom-byline.js +47 -0
  232. package/shared/hooks/use-custom-byline.test.js +133 -0
  233. package/shared/scss/_mixins.scss +54 -0
  234. package/src/accordion/index.js +8 -7
  235. package/src/action-card/action-card.d.ts +7 -3
  236. package/src/action-card/index.js +39 -12
  237. package/src/action-card/style.scss +25 -2
  238. package/src/autocomplete-tokenfield/index.js +2 -2
  239. package/src/autocomplete-with-latest-posts/index.js +290 -0
  240. package/src/autocomplete-with-latest-posts/style.scss +150 -0
  241. package/src/badge/index.tsx +26 -0
  242. package/src/badge/style.scss +36 -0
  243. package/src/button/index.tsx +3 -2
  244. package/src/card/core-card.js +224 -0
  245. package/src/card/index.js +40 -1
  246. package/src/card/style-core.scss +295 -0
  247. package/src/card/style.scss +4 -4
  248. package/src/card-feature/README.md +188 -0
  249. package/src/card-feature/index.tsx +186 -0
  250. package/src/card-feature/style.scss +75 -0
  251. package/src/card-form/README.md +113 -0
  252. package/src/card-form/index.tsx +128 -0
  253. package/src/card-form/style.scss +20 -0
  254. package/src/card-settings-group/README.md +43 -0
  255. package/src/card-settings-group/index.tsx +78 -0
  256. package/src/card-settings-group/style.scss +33 -0
  257. package/src/card-sortable-list/README.md +51 -0
  258. package/src/card-sortable-list/index.tsx +435 -0
  259. package/src/card-sortable-list/style.scss +48 -0
  260. package/src/color-picker/index.js +15 -8
  261. package/src/color-picker/index.test.js +52 -0
  262. package/src/color-picker/style.scss +11 -13
  263. package/src/confirm-dialog/README.md +128 -0
  264. package/src/confirm-dialog/index.tsx +132 -0
  265. package/src/dataviews/index.tsx +34 -0
  266. package/src/dataviews/style.scss +9 -0
  267. package/src/divider/README.md +25 -0
  268. package/src/divider/index.js +31 -0
  269. package/src/divider/style.scss +51 -0
  270. package/src/form-token-field/style.scss +0 -5
  271. package/src/grid/index.tsx +2 -1
  272. package/src/grid/style.scss +67 -8
  273. package/src/handoff/README.md +93 -0
  274. package/src/handoff/index.js +46 -8
  275. package/src/hooks/index.ts +2 -1
  276. package/src/hooks/use-confirm-dialog.tsx +80 -0
  277. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  278. package/src/image-upload/index.js +10 -15
  279. package/src/image-upload/style.scss +12 -40
  280. package/src/index.js +13 -1
  281. package/src/integration-icons/active-campaign.js +14 -0
  282. package/src/integration-icons/constant-contact.js +22 -0
  283. package/src/integration-icons/fundraise-up.js +18 -0
  284. package/src/integration-icons/index.js +6 -0
  285. package/src/integration-icons/mailchimp.js +10 -0
  286. package/src/integration-icons/salesforce.js +10 -0
  287. package/src/integration-icons/wisepops.js +14 -0
  288. package/src/modal/index.js +12 -3
  289. package/src/modal/style.scss +47 -13
  290. package/src/newspack-icon/style.scss +5 -3
  291. package/src/plugin-installer/index.js +30 -19
  292. package/src/section-header/index.js +105 -14
  293. package/src/section-header/style.scss +129 -4
  294. package/src/select-control/index.js +4 -0
  295. package/src/style.scss +2 -0
  296. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  297. package/src/utils/index.js +6 -0
  298. package/src/utils/style.scss +8 -0
  299. package/src/waiting/index.js +2 -1
  300. package/src/waiting/style.scss +4 -0
  301. package/src/web-preview/index.js +90 -35
  302. package/src/web-preview/style.scss +20 -53
  303. package/src/with-wizard/index.js +1 -1
  304. package/src/with-wizard/style.scss +28 -60
  305. package/src/with-wizard-screen/style.scss +77 -10
  306. package/src/wizard/components/WizardSnackbar.js +58 -0
  307. package/src/wizard/components/style.scss +48 -0
  308. package/src/wizard/index.js +152 -21
  309. package/src/wizard/store/index.js +28 -2
  310. package/dist/cjs/button-card/index.js +0 -72
  311. package/dist/cjs/button-card/style.scss +0 -180
  312. package/dist/esm/button-card/index.js +0 -64
  313. package/dist/esm/button-card/style.scss +0 -180
  314. package/src/button-card/index.js +0 -52
  315. package/src/button-card/style.scss +0 -180
@@ -1,3 +1,11 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
+ 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; }
6
+ 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; }
7
+ 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 }; })(); }
8
+ 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); }
1
9
  /**
2
10
  * WordPress dependencies
3
11
  */
@@ -14,44 +22,61 @@ import { addQueryArgs } from '@wordpress/url';
14
22
  import { AutocompleteTokenField } from '../';
15
23
  import './style.scss';
16
24
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
- const AutocompleteWithSuggestions = ({
18
- fetchSavedPosts = false,
19
- // If passed, will use this function to fetch saved data.
20
- fetchSuggestions = false,
21
- // If passed, will use this function to fetch suggestions data.
22
- help = __('Begin typing search term, click autocomplete result to select.', 'newspack-plugin'),
23
- hideHelp = false,
24
- // If true, all help text will be hidden.
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
- onPostTypeChange = false,
33
- // Funciton to call when the post type selector is changed.
34
- postTypes = [{
35
- slug: 'post',
36
- label: 'Post'
37
- }],
38
- // If passed, will render a selector to change the post type queried for suggestions.
39
- postTypeLabel = __('item', 'newspack-plugin'),
40
- // String to describe the data being shown.
41
- postTypeLabelPlural = __('items', 'newspack-plugin'),
42
- // Plural string to describe the data being shown.
43
- selectedItems = [],
44
- // Array of saved items.
45
- selectedPost = 0,
46
- // Legacy prop when single-select was the only option.
47
- suggestionsToFetch = 10 // Number of suggestions to fetch per query.
48
- }) => {
49
- const [isLoading, setIsLoading] = useState(true);
50
- const [isLoadingMore, setIsLoadingMore] = useState(false);
51
- const [suggestions, setSuggestions] = useState([]);
52
- const [maxSuggestions, setMaxSuggestions] = useState(0);
53
- const [postTypeToSearch, setPostTypeToSearch] = useState(postTypes[0].slug);
54
- const classNames = ['newspack-autocomplete-with-suggestions'];
25
+ var AutocompleteWithSuggestions = function AutocompleteWithSuggestions(_ref) {
26
+ var _ref$fetchSavedPosts = _ref.fetchSavedPosts,
27
+ fetchSavedPosts = _ref$fetchSavedPosts === void 0 ? false : _ref$fetchSavedPosts,
28
+ _ref$fetchSuggestions = _ref.fetchSuggestions,
29
+ fetchSuggestions = _ref$fetchSuggestions === void 0 ? false : _ref$fetchSuggestions,
30
+ _ref$help = _ref.help,
31
+ help = _ref$help === void 0 ? __('Begin typing search term, click autocomplete result to select.', 'newspack-plugin') : _ref$help,
32
+ _ref$hideHelp = _ref.hideHelp,
33
+ hideHelp = _ref$hideHelp === void 0 ? false : _ref$hideHelp,
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$onPostTypeChange = _ref.onPostTypeChange,
43
+ onPostTypeChange = _ref$onPostTypeChange === void 0 ? false : _ref$onPostTypeChange,
44
+ _ref$postTypes = _ref.postTypes,
45
+ postTypes = _ref$postTypes === void 0 ? [{
46
+ slug: 'post',
47
+ label: 'Post'
48
+ }] : _ref$postTypes,
49
+ _ref$postTypeLabel = _ref.postTypeLabel,
50
+ postTypeLabel = _ref$postTypeLabel === void 0 ? __('item', 'newspack-plugin') : _ref$postTypeLabel,
51
+ _ref$postTypeLabelPlu = _ref.postTypeLabelPlural,
52
+ postTypeLabelPlural = _ref$postTypeLabelPlu === void 0 ? __('items', 'newspack-plugin') : _ref$postTypeLabelPlu,
53
+ _ref$selectedItems = _ref.selectedItems,
54
+ selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
55
+ _ref$selectedPost = _ref.selectedPost,
56
+ selectedPost = _ref$selectedPost === void 0 ? 0 : _ref$selectedPost,
57
+ _ref$suggestionsToFet = _ref.suggestionsToFetch,
58
+ suggestionsToFetch = _ref$suggestionsToFet === void 0 ? 10 : _ref$suggestionsToFet;
59
+ var _useState = useState(true),
60
+ _useState2 = _slicedToArray(_useState, 2),
61
+ isLoading = _useState2[0],
62
+ setIsLoading = _useState2[1];
63
+ var _useState3 = useState(false),
64
+ _useState4 = _slicedToArray(_useState3, 2),
65
+ isLoadingMore = _useState4[0],
66
+ setIsLoadingMore = _useState4[1];
67
+ var _useState5 = useState([]),
68
+ _useState6 = _slicedToArray(_useState5, 2),
69
+ suggestions = _useState6[0],
70
+ setSuggestions = _useState6[1];
71
+ var _useState7 = useState(0),
72
+ _useState8 = _slicedToArray(_useState7, 2),
73
+ maxSuggestions = _useState8[0],
74
+ setMaxSuggestions = _useState8[1];
75
+ var _useState9 = useState(postTypes[0].slug),
76
+ _useState0 = _slicedToArray(_useState9, 2),
77
+ postTypeToSearch = _useState0[0],
78
+ setPostTypeToSearch = _useState0[1];
79
+ var classNames = ['newspack-autocomplete-with-suggestions'];
55
80
  if (hideHelp) {
56
81
  classNames.push('hide-help');
57
82
  }
@@ -59,96 +84,143 @@ const AutocompleteWithSuggestions = ({
59
84
  /**
60
85
  * Fetch recent posts to show as suggestions.
61
86
  */
62
- useEffect(() => {
87
+ useEffect(function () {
63
88
  if (onPostTypeChange) {
64
89
  onPostTypeChange(postTypeToSearch);
65
90
  }
66
91
  setIsLoading(true);
67
- handleFetchSuggestions(null, 0, postTypeToSearch).then(_suggestions => {
92
+ handleFetchSuggestions(null, 0, postTypeToSearch).then(function (_suggestions) {
68
93
  if (0 < _suggestions.length) {
69
94
  setSuggestions(_suggestions);
70
95
  }
71
- }).finally(() => setIsLoading(false));
96
+ })["finally"](function () {
97
+ return setIsLoading(false);
98
+ });
72
99
  }, [postTypeToSearch]);
73
100
 
74
101
  /**
75
102
  * Fetch more suggestions.
76
103
  */
77
- useEffect(() => {
104
+ useEffect(function () {
78
105
  if (isLoadingMore) {
79
- handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(_suggestions => {
106
+ handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(function (_suggestions) {
80
107
  if (0 < _suggestions.length) {
81
108
  setSuggestions(suggestions.concat(_suggestions));
82
109
  }
83
- }).finally(() => setIsLoadingMore(false));
110
+ })["finally"](function () {
111
+ return setIsLoadingMore(false);
112
+ });
84
113
  }
85
114
  }, [isLoadingMore]);
86
115
 
87
116
  /**
88
117
  * If passed a `fetchSavedPosts` prop, use that, otherwise, build it based on the selected post type.
89
118
  */
90
- const handleFetchSaved = fetchSavedPosts ? fetchSavedPosts : async (postIds = [], searchSlug = null) => {
91
- const postTypeSlug = searchSlug || postTypeToSearch;
92
- const endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
93
- : postTypeSlug; // Custom post type endpoints are singular.
94
- const posts = await apiFetch({
95
- path: addQueryArgs('/wp/v2/' + endpoint, {
96
- per_page: 100,
97
- include: postIds.join(','),
98
- _fields: 'id,title'
99
- })
100
- });
101
- return posts.map(post => ({
102
- value: parseInt(post.id),
103
- label: decodeEntities(post.title) || __('(no title)', 'newspack-plugin')
104
- }));
105
- };
119
+ var handleFetchSaved = fetchSavedPosts ? fetchSavedPosts : /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
120
+ var postIds,
121
+ searchSlug,
122
+ postTypeSlug,
123
+ endpoint,
124
+ posts,
125
+ _args = arguments;
126
+ return _regenerator().w(function (_context) {
127
+ while (1) switch (_context.n) {
128
+ case 0:
129
+ postIds = _args.length > 0 && _args[0] !== undefined ? _args[0] : [];
130
+ searchSlug = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
131
+ postTypeSlug = searchSlug || postTypeToSearch;
132
+ endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
133
+ : postTypeSlug; // Custom post type endpoints are singular.
134
+ _context.n = 1;
135
+ return apiFetch({
136
+ path: addQueryArgs('/wp/v2/' + endpoint, {
137
+ per_page: 100,
138
+ include: postIds.join(','),
139
+ _fields: 'id,title'
140
+ })
141
+ });
142
+ case 1:
143
+ posts = _context.v;
144
+ return _context.a(2, posts.map(function (post) {
145
+ return {
146
+ value: parseInt(post.id),
147
+ label: decodeEntities(post.title) || __('(no title)', 'newspack-plugin')
148
+ };
149
+ }));
150
+ }
151
+ }, _callee);
152
+ }));
106
153
 
107
154
  /**
108
155
  * If passed a `fetchSuggestions` prop, use that, otherwise, build it based on the selected post type.
109
156
  */
110
- const handleFetchSuggestions = fetchSuggestions ? fetchSuggestions : async (search = null, offset = 0, searchSlug = null) => {
111
- const postTypeSlug = searchSlug || postTypeToSearch;
112
- const endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
113
- : postTypeSlug; // Custom post type endpoints are singular.
114
- const response = await apiFetch({
115
- parse: false,
116
- path: addQueryArgs('/wp/v2/' + endpoint, {
117
- search,
118
- offset,
119
- per_page: suggestionsToFetch,
120
- _fields: 'id,title'
121
- })
122
- });
123
- const total = parseInt(response.headers.get('x-wp-total') || 0);
124
- const posts = await response.json();
125
- setMaxSuggestions(total);
157
+ var handleFetchSuggestions = fetchSuggestions ? fetchSuggestions : /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
158
+ var search,
159
+ offset,
160
+ searchSlug,
161
+ postTypeSlug,
162
+ endpoint,
163
+ response,
164
+ total,
165
+ posts,
166
+ _args2 = arguments;
167
+ return _regenerator().w(function (_context2) {
168
+ while (1) switch (_context2.n) {
169
+ case 0:
170
+ search = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : null;
171
+ offset = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 0;
172
+ searchSlug = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : null;
173
+ postTypeSlug = searchSlug || postTypeToSearch;
174
+ endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
175
+ : postTypeSlug; // Custom post type endpoints are singular.
176
+ _context2.n = 1;
177
+ return apiFetch({
178
+ parse: false,
179
+ path: addQueryArgs('/wp/v2/' + endpoint, {
180
+ search: search,
181
+ offset: offset,
182
+ per_page: suggestionsToFetch,
183
+ _fields: 'id,title'
184
+ })
185
+ });
186
+ case 1:
187
+ response = _context2.v;
188
+ total = parseInt(response.headers.get('x-wp-total') || 0);
189
+ _context2.n = 2;
190
+ return response.json();
191
+ case 2:
192
+ posts = _context2.v;
193
+ setMaxSuggestions(total);
126
194
 
127
- // Format suggestions for FormTokenField display.
128
- return posts.reduce((acc, post) => {
129
- acc.push({
130
- value: parseInt(post.id),
131
- label: decodeEntities(post?.title.rendered) || __('(no title)', 'newspack-plugin')
132
- });
133
- return acc;
134
- }, []);
135
- };
195
+ // Format suggestions for FormTokenField display.
196
+ return _context2.a(2, posts.reduce(function (acc, post) {
197
+ acc.push({
198
+ value: parseInt(post.id),
199
+ label: decodeEntities(post === null || post === void 0 ? void 0 : post.title.rendered) || __('(no title)', 'newspack-plugin')
200
+ });
201
+ return acc;
202
+ }, []));
203
+ }
204
+ }, _callee2);
205
+ }));
136
206
 
137
207
  /**
138
208
  * Intercept onChange callback so we can decide whether to allow multiple selections.
139
209
  */
140
- const handleOnChange = _selections => {
210
+ var handleOnChange = function handleOnChange(_selections) {
141
211
  // If only allowing one selection, just return the one selected item.
142
212
  if (!multiSelect) {
143
213
  return onChange(_selections);
144
214
  }
145
215
 
146
216
  // Handle legacy `selectedPost` prop.
147
- const selections = selectedPost ? [...selectedItems, selectedPost] : [...selectedItems];
217
+ var selections = selectedPost ? [].concat(_toConsumableArray(selectedItems), [selectedPost]) : _toConsumableArray(selectedItems);
148
218
 
149
219
  // Loop through new selections to determine whether to add or remove them.
150
- _selections.forEach(_selection => {
151
- const existingSelection = selections.findIndex(selection => parseInt(selection.value) === parseInt(_selection.value));
220
+ _selections.forEach(function (_selection) {
221
+ var existingSelection = selections.findIndex(function (selection) {
222
+ return parseInt(selection.value) === parseInt(_selection.value);
223
+ });
152
224
  if (-1 < existingSelection) {
153
225
  // If the selection is already selected, remove it.
154
226
  selections.splice(existingSelection, 1);
@@ -159,19 +231,20 @@ const AutocompleteWithSuggestions = ({
159
231
  });
160
232
 
161
233
  // Include currently selected post type in selection results.
162
- onChange(selections.map(selection => ({
163
- ...selection,
164
- postType: postTypeToSearch
165
- })));
234
+ onChange(selections.map(function (selection) {
235
+ return _objectSpread(_objectSpread({}, selection), {}, {
236
+ postType: postTypeToSearch
237
+ });
238
+ }));
166
239
  };
167
240
 
168
241
  /**
169
242
  * Render selected item(s) for this component. Clicking on a selection deselects it.
170
243
  */
171
- const renderSelections = () => {
244
+ var renderSelections = function renderSelections() {
172
245
  // Handle legacy `selectedPost` prop.
173
- const selections = selectedPost ? [...selectedItems, selectedPost] : selectedItems;
174
- const selectedMessage = multiSelect ? sprintf(
246
+ var selections = selectedPost ? [].concat(_toConsumableArray(selectedItems), [selectedPost]) : selectedItems;
247
+ var selectedMessage = multiSelect ? sprintf(
175
248
  // Translators: %1: the length of selections. %2: the selection leabel.
176
249
  __('%1$s %2$s selected', 'newspack-plugin'), selections.length, selections.length > 1 ? postTypeLabelPlural : postTypeLabel) : sprintf(
177
250
  // Translators: %s: The label for the selection.
@@ -181,34 +254,46 @@ const AutocompleteWithSuggestions = ({
181
254
  children: [/*#__PURE__*/_jsxs("p", {
182
255
  className: "newspack-autocomplete-with-suggestions__label",
183
256
  children: [selectedMessage, 1 < selections.length && _x(' – ', 'separator character', 'newspack-plugin'), 1 < selections.length && /*#__PURE__*/_jsx(Button, {
184
- onClick: () => onChange([]),
257
+ onClick: function onClick() {
258
+ return onChange([]);
259
+ },
185
260
  isLink: true,
186
261
  isDestructive: true,
187
262
  children: __('Clear all', 'newspack-plugin')
188
263
  })]
189
- }), selections.map(selection => /*#__PURE__*/_jsx(Button, {
190
- className: "newspack-autocomplete-with-suggestions__selected-item-button",
191
- isTertiary: true,
192
- onClick: () => onChange(selections.filter(_selection => _selection.value !== selection.value)),
193
- children: selection.label
194
- }, selection.value))]
264
+ }), selections.map(function (selection) {
265
+ return /*#__PURE__*/_jsx(Button, {
266
+ className: "newspack-autocomplete-with-suggestions__selected-item-button",
267
+ isTertiary: true,
268
+ onClick: function onClick() {
269
+ return onChange(selections.filter(function (_selection) {
270
+ return _selection.value !== selection.value;
271
+ }));
272
+ },
273
+ children: selection.label
274
+ }, selection.value);
275
+ })]
195
276
  });
196
277
  };
197
278
 
198
279
  /**
199
280
  * Render post type select dropdown.
200
281
  */
201
- const renderPostTypeSelect = () => {
282
+ var renderPostTypeSelect = function renderPostTypeSelect() {
202
283
  return /*#__PURE__*/_jsx(SelectControl, {
203
284
  label: sprintf(
204
285
  // Translators: %s: The name of the type.
205
286
  __('%s type', 'newspack-plugin'), postTypeLabel.charAt(0).toUpperCase() + postTypeLabel.slice(1)),
206
287
  value: postTypeToSearch,
207
- options: postTypes.map(postTypeOption => ({
208
- label: postTypeOption.label,
209
- value: postTypeOption.slug
210
- })),
211
- onChange: _postType => setPostTypeToSearch(_postType)
288
+ options: postTypes.map(function (postTypeOption) {
289
+ return {
290
+ label: postTypeOption.label,
291
+ value: postTypeOption.slug
292
+ };
293
+ }),
294
+ onChange: function onChange(_postType) {
295
+ return setPostTypeToSearch(_postType);
296
+ }
212
297
  });
213
298
  };
214
299
 
@@ -217,19 +302,25 @@ const AutocompleteWithSuggestions = ({
217
302
  *
218
303
  * @param {Object} suggestion Suggestion object with value and label keys.
219
304
  */
220
- const renderSuggestion = suggestion => {
305
+ var renderSuggestion = function renderSuggestion(suggestion) {
221
306
  if (multiSelect) {
222
- const selections = selectedPost ? [...selectedItems, selectedPost] : [...selectedItems];
223
- const isSelected = !!selections.find(_selection => parseInt(_selection.value) === parseInt(suggestion.value) && _selection.label === suggestion.label);
307
+ var selections = selectedPost ? [].concat(_toConsumableArray(selectedItems), [selectedPost]) : _toConsumableArray(selectedItems);
308
+ var isSelected = !!selections.find(function (_selection) {
309
+ return parseInt(_selection.value) === parseInt(suggestion.value) && _selection.label === suggestion.label;
310
+ });
224
311
  return /*#__PURE__*/_jsx(CheckboxControl, {
225
312
  checked: isSelected,
226
- onChange: () => handleOnChange([suggestion]),
313
+ onChange: function onChange() {
314
+ return handleOnChange([suggestion]);
315
+ },
227
316
  label: suggestion.label
228
317
  }, suggestion.value);
229
318
  }
230
319
  return /*#__PURE__*/_jsx(Button, {
231
320
  isLink: true,
232
- onClick: () => handleOnChange([suggestion]),
321
+ onClick: function onClick() {
322
+ return handleOnChange([suggestion]);
323
+ },
233
324
  children: suggestion.label
234
325
  }, suggestion.value);
235
326
  };
@@ -237,11 +328,11 @@ const AutocompleteWithSuggestions = ({
237
328
  /**
238
329
  * Render a list of suggestions that can be clicked to select instead of searching by title.
239
330
  */
240
- const renderSuggestions = () => {
331
+ var renderSuggestions = function renderSuggestions() {
241
332
  if (0 === suggestions.length) {
242
333
  return null;
243
334
  }
244
- const className = multiSelect ? 'newspack-autocomplete-with-suggestions__search-suggestions-multiselect' : 'newspack-autocomplete-with-suggestions__search-suggestions';
335
+ var className = multiSelect ? 'newspack-autocomplete-with-suggestions__search-suggestions-multiselect' : 'newspack-autocomplete-with-suggestions__search-suggestions';
245
336
  return /*#__PURE__*/_jsxs(_Fragment, {
246
337
  children: [!hideHelp && /*#__PURE__*/_jsx("p", {
247
338
  className: "newspack-autocomplete-with-suggestions__label",
@@ -251,7 +342,9 @@ const AutocompleteWithSuggestions = ({
251
342
  children: [suggestions.map(renderSuggestion), suggestions.length < (maxItemsToSuggest || maxSuggestions) && /*#__PURE__*/_jsx(Button, {
252
343
  disabled: isLoadingMore,
253
344
  isSecondary: true,
254
- onClick: () => setIsLoadingMore(true),
345
+ onClick: function onClick() {
346
+ return setIsLoadingMore(true);
347
+ },
255
348
  children: isLoadingMore ? __('Loading…', 'newspack-plugin') : __('Load more', 'newspack-plugin')
256
349
  })]
257
350
  })]
@@ -262,8 +355,22 @@ const AutocompleteWithSuggestions = ({
262
355
  children: [0 < selectedItems.length && renderSelections(), 1 < postTypes.length && renderPostTypeSelect(), /*#__PURE__*/_jsx(AutocompleteTokenField, {
263
356
  tokens: [],
264
357
  onChange: handleOnChange,
265
- fetchSuggestions: async search => handleFetchSuggestions(search, 0, postTypeToSearch),
266
- fetchSavedInfo: postIds => handleFetchSaved(postIds),
358
+ fetchSuggestions: (/*#__PURE__*/function () {
359
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(search) {
360
+ return _regenerator().w(function (_context3) {
361
+ while (1) switch (_context3.n) {
362
+ case 0:
363
+ return _context3.a(2, handleFetchSuggestions(search, 0, postTypeToSearch));
364
+ }
365
+ }, _callee3);
366
+ }));
367
+ return function (_x2) {
368
+ return _ref4.apply(this, arguments);
369
+ };
370
+ }()),
371
+ fetchSavedInfo: function fetchSavedInfo(postIds) {
372
+ return handleFetchSaved(postIds);
373
+ },
267
374
  label: label,
268
375
  loading: isLoading,
269
376
  help: !hideHelp && help,
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import './style.scss';
5
+
6
+ /**
7
+ * External dependencies
8
+ */
9
+ import classnames from 'classnames';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ /**
12
+ * Badge component
13
+ */
14
+ var Badge = function Badge(_ref) {
15
+ var text = _ref.text,
16
+ _ref$level = _ref.level,
17
+ level = _ref$level === void 0 ? 'default' : _ref$level;
18
+ var classes = classnames('newspack-badge', "is-".concat(level));
19
+ return /*#__PURE__*/_jsx("span", {
20
+ className: classes,
21
+ children: text
22
+ });
23
+ };
24
+ export default Badge;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Badge
3
+ */
4
+
5
+ @use "~@wordpress/base-styles/colors" as wp-colors;
6
+ @use "../../../colors/colors.module" as colors;
7
+
8
+ $badge-colors: (
9
+ "info": colors.$primary-600,
10
+ "warning": wp-colors.$alert-yellow,
11
+ "error": wp-colors.$alert-red,
12
+ "success": wp-colors.$alert-green,
13
+ );
14
+
15
+ .newspack-badge {
16
+ background-color: color-mix(in srgb, wp-colors.$white 90%, var(--base-color));
17
+ border-radius: 2px;
18
+ color: color-mix(in srgb, wp-colors.$black 50%, var(--base-color));
19
+ display: block;
20
+ flex: 0 0 auto;
21
+ font-size: 12px;
22
+ line-height: 1.5;
23
+ padding: 1px 4px;
24
+
25
+ &:where(.is-default) {
26
+ background-color: wp-colors.$gray-100;
27
+ color: wp-colors.$gray-800;
28
+ }
29
+
30
+ // Generate color variants
31
+ @each $type, $color in $badge-colors {
32
+ &.is-#{$type} {
33
+ --base-color: #{$color};
34
+ }
35
+ }
36
+ }
@@ -1,3 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["hexColor", "isInverted", "children"];
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
  * Box Contrast
3
8
  *
@@ -16,29 +21,28 @@ import { getContrast } from '../utils/color';
16
21
  * @return JSX.Element
17
22
  */
18
23
  import { jsx as _jsx } from "react/jsx-runtime";
19
- const BoxContrast = ({
20
- hexColor,
21
- isInverted = false,
22
- children,
23
- ...props
24
- }) => {
25
- let contrastColor;
24
+ var BoxContrast = function BoxContrast(_ref) {
25
+ var hexColor = _ref.hexColor,
26
+ _ref$isInverted = _ref.isInverted,
27
+ isInverted = _ref$isInverted === void 0 ? false : _ref$isInverted,
28
+ children = _ref.children,
29
+ props = _objectWithoutProperties(_ref, _excluded);
30
+ var contrastColor;
26
31
  if (hexColor === '#f0f0f0') {
27
32
  contrastColor = '#1e1e1e';
28
33
  } else {
29
34
  contrastColor = getContrast(hexColor);
30
35
  }
31
- const style = isInverted ? {
36
+ var style = isInverted ? {
32
37
  color: hexColor,
33
38
  backgoundColor: contrastColor
34
39
  } : {
35
40
  backgroundColor: hexColor,
36
41
  color: contrastColor
37
42
  };
38
- return /*#__PURE__*/_jsx("div", {
39
- ...props,
43
+ return /*#__PURE__*/_jsx("div", _objectSpread(_objectSpread({}, props), {}, {
40
44
  style: style,
41
45
  children: children
42
- });
46
+ }));
43
47
  };
44
48
  export default BoxContrast;