newspack-components 4.2.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 (316) 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 +186 -140
  7. package/dist/cjs/action-card/style.scss +25 -2
  8. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  9. package/dist/cjs/autocomplete-with-latest-posts/index.js +351 -0
  10. package/dist/cjs/autocomplete-with-latest-posts/style.scss +150 -0
  11. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  12. package/dist/cjs/badge/index.js +32 -0
  13. package/dist/cjs/badge/style.scss +36 -0
  14. package/dist/cjs/box-contrast/index.js +19 -15
  15. package/dist/cjs/button/index.js +41 -24
  16. package/dist/cjs/button-props/button-props.js +5 -5
  17. package/dist/cjs/button-props/index.js +2 -2
  18. package/dist/cjs/card/core-card.js +199 -0
  19. package/dist/cjs/card/index.js +75 -35
  20. package/dist/cjs/card/style-core.scss +295 -0
  21. package/dist/cjs/card/style.scss +4 -4
  22. package/dist/cjs/card-feature/index.js +141 -0
  23. package/dist/cjs/card-feature/style.scss +75 -0
  24. package/dist/cjs/card-form/index.js +144 -0
  25. package/dist/cjs/card-form/style.scss +20 -0
  26. package/dist/cjs/card-settings-group/index.js +69 -0
  27. package/dist/cjs/card-settings-group/style.scss +33 -0
  28. package/dist/cjs/card-sortable-list/index.js +426 -0
  29. package/dist/cjs/card-sortable-list/style.scss +48 -0
  30. package/dist/cjs/category-autocomplete/index.js +175 -155
  31. package/dist/cjs/color-picker/index.js +41 -23
  32. package/dist/cjs/color-picker/index.test.js +82 -0
  33. package/dist/cjs/color-picker/style.scss +11 -13
  34. package/dist/cjs/confirm-dialog/index.js +123 -0
  35. package/dist/cjs/consts.js +1 -1
  36. package/dist/cjs/custom-select-control/index.js +39 -28
  37. package/dist/cjs/dataviews/index.js +38 -0
  38. package/dist/cjs/dataviews/style.scss +9 -0
  39. package/dist/cjs/divider/index.js +47 -0
  40. package/dist/cjs/divider/style.scss +51 -0
  41. package/dist/cjs/footer/index.js +36 -30
  42. package/dist/cjs/form-token-field/index.js +51 -40
  43. package/dist/cjs/form-token-field/style.scss +0 -5
  44. package/dist/cjs/global-notices/index.js +5 -5
  45. package/dist/cjs/grid/index.js +25 -18
  46. package/dist/cjs/grid/style.scss +67 -8
  47. package/dist/cjs/handoff/index.js +204 -156
  48. package/dist/cjs/handoff-message/index.js +12 -7
  49. package/dist/cjs/hooks/index.js +10 -8
  50. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  51. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  52. package/dist/cjs/hooks/useObjectState.js +21 -12
  53. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  54. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  55. package/dist/cjs/hooks/usePrompt.js +10 -13
  56. package/dist/cjs/image-upload/index.js +114 -123
  57. package/dist/cjs/image-upload/index.test.js +11 -13
  58. package/dist/cjs/image-upload/style.scss +12 -40
  59. package/dist/cjs/index.js +166 -92
  60. package/dist/cjs/info-button/index.js +43 -32
  61. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  62. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  63. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  64. package/dist/cjs/integration-icons/index.js +48 -0
  65. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  66. package/dist/cjs/integration-icons/salesforce.js +17 -0
  67. package/dist/cjs/integration-icons/wisepops.js +20 -0
  68. package/dist/cjs/modal/index.js +29 -19
  69. package/dist/cjs/modal/style.scss +47 -13
  70. package/dist/cjs/newspack-icon/index.js +45 -38
  71. package/dist/cjs/newspack-icon/style.scss +5 -3
  72. package/dist/cjs/notice/index.js +64 -55
  73. package/dist/cjs/plugin-installer/index.js +259 -253
  74. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  75. package/dist/cjs/plugin-settings/index.js +217 -200
  76. package/dist/cjs/plugin-toggle/index.js +192 -199
  77. package/dist/cjs/popover/index.js +41 -28
  78. package/dist/cjs/position-control/index.js +24 -23
  79. package/dist/cjs/progress-bar/index.js +71 -59
  80. package/dist/cjs/progress-bar/index.test.js +62 -68
  81. package/dist/cjs/proxied-imports/router.js +3 -3
  82. package/dist/cjs/radio-control/index.js +40 -27
  83. package/dist/cjs/section-header/index.js +143 -39
  84. package/dist/cjs/section-header/style.scss +129 -4
  85. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  86. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  87. package/dist/cjs/select-control/index.js +52 -40
  88. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  89. package/dist/cjs/settings/SettingsCard.js +20 -17
  90. package/dist/cjs/settings/SettingsSection.js +22 -21
  91. package/dist/cjs/settings/index.js +5 -5
  92. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  93. package/dist/cjs/steps-list/index.js +44 -34
  94. package/dist/cjs/steps-list-item/index.js +47 -39
  95. package/dist/cjs/style-card/index.js +70 -63
  96. package/dist/cjs/style.scss +2 -0
  97. package/dist/cjs/tabbed-navigation/index.js +38 -36
  98. package/dist/cjs/text-control/index.js +27 -25
  99. package/dist/cjs/utils/color.js +4 -4
  100. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  101. package/dist/cjs/utils/index.js +31 -19
  102. package/dist/cjs/utils/style.scss +8 -0
  103. package/dist/cjs/waiting/index.js +48 -35
  104. package/dist/cjs/waiting/style.scss +4 -0
  105. package/dist/cjs/web-preview/index.js +219 -154
  106. package/dist/cjs/web-preview/style.scss +20 -53
  107. package/dist/cjs/with-wizard/index.js +362 -364
  108. package/dist/cjs/with-wizard/style.scss +28 -60
  109. package/dist/cjs/with-wizard-screen/index.js +54 -58
  110. package/dist/cjs/with-wizard-screen/style.scss +77 -10
  111. package/dist/cjs/wizard/components/WizardError.js +20 -18
  112. package/dist/cjs/wizard/components/WizardSnackbar.js +73 -0
  113. package/dist/cjs/wizard/components/style.scss +48 -0
  114. package/dist/cjs/wizard/index.js +207 -64
  115. package/dist/cjs/wizard/store/index.js +191 -97
  116. package/dist/cjs/wizard/store/utils.js +13 -8
  117. package/dist/esm/accordion/index.js +14 -9
  118. package/dist/esm/action-card/index.js +178 -124
  119. package/dist/esm/action-card/style.scss +25 -2
  120. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  121. package/dist/esm/autocomplete-with-latest-posts/index.js +347 -0
  122. package/dist/esm/autocomplete-with-latest-posts/style.scss +150 -0
  123. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  124. package/dist/esm/badge/index.js +24 -0
  125. package/dist/esm/badge/style.scss +36 -0
  126. package/dist/esm/box-contrast/index.js +15 -11
  127. package/dist/esm/button/index.js +39 -19
  128. package/dist/esm/button-props/button-props.js +1 -1
  129. package/dist/esm/card/core-card.js +195 -0
  130. package/dist/esm/card/index.js +70 -22
  131. package/dist/esm/card/style-core.scss +295 -0
  132. package/dist/esm/card/style.scss +4 -4
  133. package/dist/esm/card-feature/index.js +131 -0
  134. package/dist/esm/card-feature/style.scss +75 -0
  135. package/dist/esm/card-form/index.js +134 -0
  136. package/dist/esm/card-form/style.scss +20 -0
  137. package/dist/esm/card-settings-group/index.js +61 -0
  138. package/dist/esm/card-settings-group/style.scss +33 -0
  139. package/dist/esm/card-sortable-list/index.js +425 -0
  140. package/dist/esm/card-sortable-list/style.scss +48 -0
  141. package/dist/esm/category-autocomplete/index.js +168 -140
  142. package/dist/esm/color-picker/index.js +39 -21
  143. package/dist/esm/color-picker/index.test.js +78 -0
  144. package/dist/esm/color-picker/style.scss +11 -13
  145. package/dist/esm/confirm-dialog/index.js +116 -0
  146. package/dist/esm/consts.js +1 -1
  147. package/dist/esm/custom-select-control/index.js +34 -15
  148. package/dist/esm/dataviews/index.js +34 -0
  149. package/dist/esm/dataviews/style.scss +9 -0
  150. package/dist/esm/divider/index.js +42 -0
  151. package/dist/esm/divider/style.scss +51 -0
  152. package/dist/esm/footer/index.js +34 -28
  153. package/dist/esm/form-token-field/index.js +46 -27
  154. package/dist/esm/form-token-field/style.scss +0 -5
  155. package/dist/esm/global-notices/index.js +3 -3
  156. package/dist/esm/grid/index.js +23 -13
  157. package/dist/esm/grid/style.scss +67 -8
  158. package/dist/esm/handoff/index.js +199 -143
  159. package/dist/esm/handoff-message/index.js +10 -6
  160. package/dist/esm/hooks/index.js +8 -6
  161. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  162. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  163. package/dist/esm/hooks/useObjectState.js +19 -9
  164. package/dist/esm/hooks/useObjectState.test.js +54 -32
  165. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  166. package/dist/esm/hooks/usePrompt.js +9 -11
  167. package/dist/esm/image-upload/index.js +110 -111
  168. package/dist/esm/image-upload/index.test.js +11 -13
  169. package/dist/esm/image-upload/style.scss +12 -40
  170. package/dist/esm/index.js +13 -1
  171. package/dist/esm/info-button/index.js +38 -19
  172. package/dist/esm/integration-icons/active-campaign.js +16 -0
  173. package/dist/esm/integration-icons/constant-contact.js +22 -0
  174. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  175. package/dist/esm/integration-icons/index.js +6 -0
  176. package/dist/esm/integration-icons/mailchimp.js +13 -0
  177. package/dist/esm/integration-icons/salesforce.js +11 -0
  178. package/dist/esm/integration-icons/wisepops.js +14 -0
  179. package/dist/esm/modal/index.js +27 -13
  180. package/dist/esm/modal/style.scss +47 -13
  181. package/dist/esm/newspack-icon/index.js +40 -25
  182. package/dist/esm/newspack-icon/style.scss +5 -3
  183. package/dist/esm/notice/index.js +59 -42
  184. package/dist/esm/plugin-installer/index.js +255 -243
  185. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  186. package/dist/esm/plugin-settings/index.js +212 -189
  187. package/dist/esm/plugin-toggle/index.js +187 -190
  188. package/dist/esm/popover/index.js +35 -16
  189. package/dist/esm/position-control/index.js +22 -18
  190. package/dist/esm/progress-bar/index.js +66 -49
  191. package/dist/esm/progress-bar/index.test.js +61 -67
  192. package/dist/esm/radio-control/index.js +34 -15
  193. package/dist/esm/section-header/index.js +140 -38
  194. package/dist/esm/section-header/style.scss +129 -4
  195. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  196. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  197. package/dist/esm/select-control/index.js +47 -27
  198. package/dist/esm/settings/MinMaxSetting.js +27 -16
  199. package/dist/esm/settings/SettingsCard.js +18 -13
  200. package/dist/esm/settings/SettingsSection.js +20 -19
  201. package/dist/esm/settings/index.js +3 -3
  202. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  203. package/dist/esm/steps-list/index.js +39 -21
  204. package/dist/esm/steps-list-item/index.js +42 -26
  205. package/dist/esm/style-card/index.js +65 -50
  206. package/dist/esm/style.scss +2 -0
  207. package/dist/esm/tabbed-navigation/index.js +35 -33
  208. package/dist/esm/text-control/index.js +25 -19
  209. package/dist/esm/utils/color.js +4 -4
  210. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  211. package/dist/esm/utils/index.js +29 -16
  212. package/dist/esm/utils/style.scss +8 -0
  213. package/dist/esm/waiting/index.js +43 -22
  214. package/dist/esm/waiting/style.scss +4 -0
  215. package/dist/esm/web-preview/index.js +218 -147
  216. package/dist/esm/web-preview/style.scss +20 -53
  217. package/dist/esm/with-wizard/index.js +360 -358
  218. package/dist/esm/with-wizard/style.scss +28 -60
  219. package/dist/esm/with-wizard-screen/index.js +48 -46
  220. package/dist/esm/with-wizard-screen/style.scss +77 -10
  221. package/dist/esm/wizard/components/WizardError.js +18 -16
  222. package/dist/esm/wizard/components/WizardSnackbar.js +70 -0
  223. package/dist/esm/wizard/components/style.scss +48 -0
  224. package/dist/esm/wizard/index.js +207 -58
  225. package/dist/esm/wizard/store/index.js +189 -90
  226. package/dist/esm/wizard/store/utils.js +13 -6
  227. package/package.json +30 -17
  228. package/release.config.js +1 -0
  229. package/shared/author-context.js +26 -0
  230. package/shared/hooks/use-coauthors.js +388 -0
  231. package/shared/hooks/use-coauthors.test.js +850 -0
  232. package/shared/hooks/use-custom-byline.js +47 -0
  233. package/shared/hooks/use-custom-byline.test.js +133 -0
  234. package/shared/scss/_mixins.scss +54 -0
  235. package/src/accordion/index.js +8 -7
  236. package/src/action-card/action-card.d.ts +7 -3
  237. package/src/action-card/index.js +39 -12
  238. package/src/action-card/style.scss +25 -2
  239. package/src/autocomplete-tokenfield/index.js +2 -2
  240. package/src/autocomplete-with-latest-posts/index.js +290 -0
  241. package/src/autocomplete-with-latest-posts/style.scss +150 -0
  242. package/src/badge/index.tsx +26 -0
  243. package/src/badge/style.scss +36 -0
  244. package/src/button/index.tsx +3 -2
  245. package/src/card/core-card.js +224 -0
  246. package/src/card/index.js +40 -1
  247. package/src/card/style-core.scss +295 -0
  248. package/src/card/style.scss +4 -4
  249. package/src/card-feature/README.md +188 -0
  250. package/src/card-feature/index.tsx +186 -0
  251. package/src/card-feature/style.scss +75 -0
  252. package/src/card-form/README.md +113 -0
  253. package/src/card-form/index.tsx +128 -0
  254. package/src/card-form/style.scss +20 -0
  255. package/src/card-settings-group/README.md +43 -0
  256. package/src/card-settings-group/index.tsx +78 -0
  257. package/src/card-settings-group/style.scss +33 -0
  258. package/src/card-sortable-list/README.md +51 -0
  259. package/src/card-sortable-list/index.tsx +435 -0
  260. package/src/card-sortable-list/style.scss +48 -0
  261. package/src/color-picker/index.js +15 -8
  262. package/src/color-picker/index.test.js +52 -0
  263. package/src/color-picker/style.scss +11 -13
  264. package/src/confirm-dialog/README.md +128 -0
  265. package/src/confirm-dialog/index.tsx +132 -0
  266. package/src/dataviews/index.tsx +34 -0
  267. package/src/dataviews/style.scss +9 -0
  268. package/src/divider/README.md +25 -0
  269. package/src/divider/index.js +31 -0
  270. package/src/divider/style.scss +51 -0
  271. package/src/form-token-field/style.scss +0 -5
  272. package/src/grid/index.tsx +2 -1
  273. package/src/grid/style.scss +67 -8
  274. package/src/handoff/README.md +93 -0
  275. package/src/handoff/index.js +46 -8
  276. package/src/hooks/index.ts +2 -1
  277. package/src/hooks/use-confirm-dialog.tsx +80 -0
  278. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  279. package/src/image-upload/index.js +10 -15
  280. package/src/image-upload/style.scss +12 -40
  281. package/src/index.js +13 -1
  282. package/src/integration-icons/active-campaign.js +14 -0
  283. package/src/integration-icons/constant-contact.js +22 -0
  284. package/src/integration-icons/fundraise-up.js +18 -0
  285. package/src/integration-icons/index.js +6 -0
  286. package/src/integration-icons/mailchimp.js +10 -0
  287. package/src/integration-icons/salesforce.js +10 -0
  288. package/src/integration-icons/wisepops.js +14 -0
  289. package/src/modal/index.js +12 -3
  290. package/src/modal/style.scss +47 -13
  291. package/src/newspack-icon/style.scss +5 -3
  292. package/src/plugin-installer/index.js +30 -19
  293. package/src/section-header/index.js +105 -14
  294. package/src/section-header/style.scss +129 -4
  295. package/src/select-control/index.js +4 -0
  296. package/src/style.scss +2 -0
  297. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  298. package/src/utils/index.js +6 -0
  299. package/src/utils/style.scss +8 -0
  300. package/src/waiting/index.js +2 -1
  301. package/src/waiting/style.scss +4 -0
  302. package/src/web-preview/index.js +90 -35
  303. package/src/web-preview/style.scss +20 -53
  304. package/src/with-wizard/index.js +1 -1
  305. package/src/with-wizard/style.scss +28 -60
  306. package/src/with-wizard-screen/style.scss +77 -10
  307. package/src/wizard/components/WizardSnackbar.js +58 -0
  308. package/src/wizard/components/style.scss +48 -0
  309. package/src/wizard/index.js +152 -21
  310. package/src/wizard/store/index.js +28 -2
  311. package/dist/cjs/button-card/index.js +0 -72
  312. package/dist/cjs/button-card/style.scss +0 -180
  313. package/dist/esm/button-card/index.js +0 -64
  314. package/dist/esm/button-card/style.scss +0 -180
  315. package/src/button-card/index.js +0 -52
  316. package/src/button-card/style.scss +0 -180
@@ -1,3 +1,9 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ 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 }; })(); }
4
+ 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); }
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; }
1
7
  /**
2
8
  * External dependencies.
3
9
  */
@@ -11,11 +17,20 @@ import isEmpty from 'lodash/isEmpty';
11
17
  import apiFetch from '@wordpress/api-fetch';
12
18
  import { createReduxStore, register, dispatch, select } from '@wordpress/data';
13
19
  import { createAction } from './utils.js';
14
- export const WIZARD_STORE_NAMESPACE = 'newspack/wizards';
15
- const DEFAULT_STATE = {
20
+ export var WIZARD_STORE_NAMESPACE = 'newspack/wizards';
21
+ var DEFAULT_STATE = {
22
+ headerData: {
23
+ actions: [],
24
+ backNav: '',
25
+ badges: [],
26
+ sectionDescription: '',
27
+ sectionName: '',
28
+ sectionTitle: ''
29
+ },
16
30
  isLoading: false,
17
31
  isQuietLoading: false,
18
32
  apiData: {},
33
+ notices: [],
19
34
  error: null
20
35
  };
21
36
 
@@ -24,140 +39,224 @@ const DEFAULT_STATE = {
24
39
  * on deep state change (via lodash's set function)
25
40
  * unless the state was cloned first.
26
41
  */
27
- const clone = objectToClone => JSON.parse(JSON.stringify(objectToClone));
28
- const reducer = (state = DEFAULT_STATE, {
29
- type,
30
- payload = {}
31
- }) => {
42
+ var clone = function clone(objectToClone) {
43
+ return JSON.parse(JSON.stringify(objectToClone));
44
+ };
45
+ var reducer = function reducer() {
46
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;
47
+ var _ref = arguments.length > 1 ? arguments[1] : undefined,
48
+ type = _ref.type,
49
+ _ref$payload = _ref.payload,
50
+ payload = _ref$payload === void 0 ? {} : _ref$payload;
32
51
  switch (type) {
52
+ case 'SET_HEADER_DATA':
53
+ return _objectSpread(_objectSpread({}, state), {}, {
54
+ headerData: _objectSpread(_objectSpread({}, state.headerData), payload)
55
+ });
56
+ case 'RESET_HEADER_DATA':
57
+ return _objectSpread(_objectSpread({}, state), {}, {
58
+ headerData: _objectSpread({}, DEFAULT_STATE.headerData)
59
+ });
33
60
  case 'START_LOADING_DATA':
34
61
  if (payload.isQuietLoading) {
35
- return {
36
- ...state,
62
+ return _objectSpread(_objectSpread({}, state), {}, {
37
63
  isQuietLoading: true
38
- };
64
+ });
39
65
  }
40
- return {
41
- ...state,
66
+ return _objectSpread(_objectSpread({}, state), {}, {
42
67
  isLoading: true
43
- };
68
+ });
44
69
  case 'FINISH_LOADING_DATA':
45
- return {
46
- ...state,
70
+ return _objectSpread(_objectSpread({}, state), {}, {
47
71
  isLoading: false,
48
72
  isQuietLoading: false
49
- };
73
+ });
50
74
  case 'SET_API_DATA':
51
- return set(clone(state), ['apiData', payload.slug], payload.data);
75
+ return _objectSpread(_objectSpread({}, state), {}, {
76
+ apiData: set(clone(state.apiData), [payload.slug], payload.data)
77
+ });
52
78
  case 'UPDATE_WIZARD_SETTINGS':
53
- return set(clone(state), ['apiData', payload.slug, ...payload.path], payload.value);
79
+ return _objectSpread(_objectSpread({}, state), {}, {
80
+ apiData: set(clone(state.apiData), [payload.slug].concat(_toConsumableArray(payload.path)), payload.value)
81
+ });
82
+ case 'ADD_NOTICE':
83
+ return _objectSpread(_objectSpread({}, state), {}, {
84
+ notices: [].concat(_toConsumableArray(state.notices), [payload])
85
+ });
86
+ case 'REMOVE_NOTICE':
87
+ return _objectSpread(_objectSpread({}, state), {}, {
88
+ notices: state.notices.filter(function (notice) {
89
+ return notice.id !== payload;
90
+ })
91
+ });
54
92
  case 'SET_ERROR':
55
- return {
56
- ...state,
93
+ return _objectSpread(_objectSpread({}, state), {}, {
57
94
  error: payload
58
- };
95
+ });
96
+ case 'RESET_NOTICES':
97
+ return _objectSpread(_objectSpread({}, state), {}, {
98
+ notices: DEFAULT_STATE.notices
99
+ });
59
100
  default:
60
101
  return state;
61
102
  }
62
103
  };
63
- const actions = {
104
+ var actions = {
64
105
  // Regular actions.
106
+ setHeaderData: createAction('SET_HEADER_DATA'),
107
+ resetHeaderData: createAction('RESET_HEADER_DATA'),
65
108
  startLoadingData: createAction('START_LOADING_DATA'),
66
109
  finishLoadingData: createAction('FINISH_LOADING_DATA'),
67
110
  fetchFromAPI: createAction('FETCH_FROM_API'),
68
111
  setAPIDataForWizard: createAction('SET_API_DATA'),
69
112
  updateWizardSettings: createAction('UPDATE_WIZARD_SETTINGS'),
113
+ addNotice: createAction('ADD_NOTICE'),
114
+ removeNotice: createAction('REMOVE_NOTICE'),
115
+ resetNotices: createAction('RESET_NOTICES'),
70
116
  setError: createAction('SET_ERROR'),
71
117
  // Async actions. These will not show up in Redux devtools.
72
- *saveWizardSettings({
73
- slug,
74
- section = '',
75
- payloadPath = false,
76
- auxData = {},
77
- updatePayload = null
78
- }) {
79
- // Optionally data can be updated before saving - an immediate update case
80
- // (without an explicit "save" action).
81
- if (updatePayload) {
82
- yield actions.updateWizardSettings({
83
- slug,
84
- ...updatePayload
85
- });
86
- }
87
- const wizardState = select(WIZARD_STORE_NAMESPACE).getWizardAPIData(slug);
88
- const data = payloadPath ? get(wizardState, payloadPath) : wizardState;
89
- const updatedData = yield actions.fetchFromAPI({
90
- path: `/newspack/v1/wizard/${slug}/${section}`,
91
- method: 'POST',
92
- data: {
93
- ...data,
94
- ...auxData
95
- },
96
- isQuietFetch: true
97
- });
98
- if (!isEmpty(updatedData) && !updatedData.error) {
99
- return actions.setAPIDataForWizard({
100
- slug,
101
- data: updatedData
102
- });
103
- }
118
+ saveWizardSettings: function saveWizardSettings(_ref2) {
119
+ var slug = _ref2.slug,
120
+ _ref2$section = _ref2.section,
121
+ section = _ref2$section === void 0 ? '' : _ref2$section,
122
+ _ref2$payloadPath = _ref2.payloadPath,
123
+ payloadPath = _ref2$payloadPath === void 0 ? false : _ref2$payloadPath,
124
+ _ref2$auxData = _ref2.auxData,
125
+ auxData = _ref2$auxData === void 0 ? {} : _ref2$auxData,
126
+ _ref2$updatePayload = _ref2.updatePayload,
127
+ updatePayload = _ref2$updatePayload === void 0 ? null : _ref2$updatePayload;
128
+ return /*#__PURE__*/_regenerator().m(function _callee() {
129
+ var wizardState, data, updatedData;
130
+ return _regenerator().w(function (_context) {
131
+ while (1) switch (_context.n) {
132
+ case 0:
133
+ if (!updatePayload) {
134
+ _context.n = 1;
135
+ break;
136
+ }
137
+ _context.n = 1;
138
+ return actions.updateWizardSettings(_objectSpread({
139
+ slug: slug
140
+ }, updatePayload));
141
+ case 1:
142
+ wizardState = select(WIZARD_STORE_NAMESPACE).getWizardAPIData(slug);
143
+ data = payloadPath ? get(wizardState, payloadPath) : wizardState;
144
+ _context.n = 2;
145
+ return actions.fetchFromAPI({
146
+ path: "/newspack/v1/wizard/".concat(slug, "/").concat(section),
147
+ method: 'POST',
148
+ data: _objectSpread(_objectSpread({}, data), auxData),
149
+ isQuietFetch: true
150
+ });
151
+ case 2:
152
+ updatedData = _context.v;
153
+ if (!(!isEmpty(updatedData) && !updatedData.error)) {
154
+ _context.n = 3;
155
+ break;
156
+ }
157
+ return _context.a(2, actions.setAPIDataForWizard({
158
+ slug: slug,
159
+ data: updatedData
160
+ }));
161
+ case 3:
162
+ return _context.a(2);
163
+ }
164
+ }, _callee);
165
+ })();
104
166
  },
105
- *wizardApiFetch(fetchConfig) {
106
- // Just a proxy to fetchFromAPI, but it has to be a generator.
107
- const result = yield actions.fetchFromAPI(fetchConfig);
108
- return result;
109
- }
167
+ wizardApiFetch: /*#__PURE__*/_regenerator().m(function wizardApiFetch(fetchConfig) {
168
+ var result;
169
+ return _regenerator().w(function (_context2) {
170
+ while (1) switch (_context2.n) {
171
+ case 0:
172
+ _context2.n = 1;
173
+ return actions.fetchFromAPI(fetchConfig);
174
+ case 1:
175
+ result = _context2.v;
176
+ return _context2.a(2, result);
177
+ }
178
+ }, wizardApiFetch);
179
+ })
110
180
  };
111
- const selectors = {
112
- isLoading: state => state.isLoading,
113
- isQuietLoading: state => state.isQuietLoading,
114
- getWizardAPIData: (state, slug) => state.apiData[slug] || {},
115
- getWizardData: (state, slug) => {
181
+ var selectors = {
182
+ getHeaderData: function getHeaderData(state) {
183
+ return state.headerData;
184
+ },
185
+ isLoading: function isLoading(state) {
186
+ return state.isLoading;
187
+ },
188
+ isQuietLoading: function isQuietLoading(state) {
189
+ return state.isQuietLoading;
190
+ },
191
+ getWizardAPIData: function getWizardAPIData(state, slug) {
192
+ return state.apiData[slug] || {};
193
+ },
194
+ getWizardData: function getWizardData(state, slug) {
116
195
  var _state$apiData$slug;
117
196
  return (_state$apiData$slug = state.apiData[slug]) !== null && _state$apiData$slug !== void 0 ? _state$apiData$slug : {};
118
197
  },
119
- getError: state => state.error
198
+ getNotices: function getNotices(state) {
199
+ return state.notices;
200
+ },
201
+ getError: function getError(state) {
202
+ return state.error;
203
+ }
120
204
  };
121
- const store = createReduxStore(WIZARD_STORE_NAMESPACE, {
122
- reducer,
123
- actions,
124
- selectors,
205
+ var store = createReduxStore(WIZARD_STORE_NAMESPACE, {
206
+ reducer: reducer,
207
+ actions: actions,
208
+ selectors: selectors,
125
209
  controls: {
126
- FETCH_FROM_API: action => {
127
- const {
128
- isLocalError = false,
129
- isQuietFetch = false
130
- } = action.payload;
210
+ FETCH_FROM_API: function FETCH_FROM_API(action) {
211
+ var _action$payload = action.payload,
212
+ _action$payload$isLoc = _action$payload.isLocalError,
213
+ isLocalError = _action$payload$isLoc === void 0 ? false : _action$payload$isLoc,
214
+ _action$payload$isQui = _action$payload.isQuietFetch,
215
+ isQuietFetch = _action$payload$isQui === void 0 ? false : _action$payload$isQui;
131
216
  dispatch(WIZARD_STORE_NAMESPACE).startLoadingData({
132
217
  isQuietLoading: Boolean(isQuietFetch)
133
218
  });
134
- return apiFetch(action.payload).then(data => {
219
+ return apiFetch(action.payload).then(function (data) {
135
220
  dispatch(WIZARD_STORE_NAMESPACE).setError(null);
136
221
  return data;
137
- }).catch(error => {
222
+ })["catch"](function (error) {
138
223
  if (isLocalError) {
139
224
  throw error;
140
225
  }
141
226
  dispatch(WIZARD_STORE_NAMESPACE).setError(error);
142
- }).finally(result => {
227
+ })["finally"](function (result) {
143
228
  dispatch(WIZARD_STORE_NAMESPACE).finishLoadingData();
144
229
  return result;
145
230
  });
146
231
  }
147
232
  },
148
233
  resolvers: {
149
- *getWizardAPIData(slug) {
150
- if (slug) {
151
- const data = yield actions.fetchFromAPI({
152
- path: `/newspack/v1/wizard/${slug}`
153
- });
154
- return actions.setAPIDataForWizard({
155
- slug,
156
- data
157
- });
158
- }
159
- return actions.finishLoadingData();
160
- }
234
+ getWizardAPIData: /*#__PURE__*/_regenerator().m(function getWizardAPIData(slug) {
235
+ var data;
236
+ return _regenerator().w(function (_context3) {
237
+ while (1) switch (_context3.n) {
238
+ case 0:
239
+ if (!slug) {
240
+ _context3.n = 2;
241
+ break;
242
+ }
243
+ _context3.n = 1;
244
+ return actions.fetchFromAPI({
245
+ path: "/newspack/v1/wizard/".concat(slug)
246
+ });
247
+ case 1:
248
+ data = _context3.v;
249
+ return _context3.a(2, actions.setAPIDataForWizard({
250
+ slug: slug,
251
+ data: data
252
+ }));
253
+ case 2:
254
+ return _context3.a(2, actions.finishLoadingData());
255
+ }
256
+ }, getWizardAPIData);
257
+ })
161
258
  }
162
259
  });
163
- export default () => register(store);
260
+ export default (function () {
261
+ return register(store);
262
+ });
@@ -7,10 +7,17 @@ import { useSelect } from '@wordpress/data';
7
7
  * Internal dependencies
8
8
  */
9
9
  import { WIZARD_STORE_NAMESPACE } from '.';
10
- export const createAction = type => payload => ({
11
- type,
12
- payload
13
- });
14
- export const useWizardData = (wizardName, defaultValue = {}) => {
15
- return useSelect(select => select(WIZARD_STORE_NAMESPACE).getWizardAPIData(wizardName)) || defaultValue;
10
+ export var createAction = function createAction(type) {
11
+ return function (payload) {
12
+ return {
13
+ type: type,
14
+ payload: payload
15
+ };
16
+ };
17
+ };
18
+ export var useWizardData = function useWizardData(wizardName) {
19
+ var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
+ return useSelect(function (select) {
21
+ return select(WIZARD_STORE_NAMESPACE).getWizardAPIData(wizardName);
22
+ }) || defaultValue;
16
23
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "newspack-components",
3
- "version": "4.2.0",
3
+ "version": "4.4.0-alpha.1",
4
4
  "description": "Newspack design system components",
5
5
  "author": "Automattic",
6
6
  "license": "GPL-2.0-or-later",
@@ -15,32 +15,44 @@
15
15
  "homepage": "https://github.com/Automattic/newspack-plugin",
16
16
  "repository": {
17
17
  "type": "git",
18
- "url": "https://github.com/Automattic/newspack-plugin.git",
19
- "directory": "src/components"
18
+ "url": "git+https://github.com/Automattic/newspack-workspace.git",
19
+ "directory": "packages/components"
20
20
  },
21
21
  "main": "dist/esm/index.js",
22
22
  "publishConfig": {
23
23
  "access": "public"
24
24
  },
25
25
  "dependencies": {
26
- "@wordpress/base-styles": "^5.0.0",
27
- "@wordpress/components": "^28.0.0",
28
- "@wordpress/element": "^6.0.0",
29
- "@wordpress/i18n": "^5.0.0",
30
- "@wordpress/icons": "^10.0.0",
31
26
  "classnames": "^2.3.1",
32
27
  "lodash": "^4.17.21",
33
28
  "moment-range": "^3.1.1",
34
- "qs": "^6.10.1",
35
- "react-daterange-picker": "^2.0.1",
36
- "react-router-dom": "^5.3.4"
29
+ "qs": "^6.15.2",
30
+ "react-router-dom": "^5.3.4",
31
+ "@babel/runtime": "^7.29.7",
32
+ "colord": "^2.9.0"
33
+ },
34
+ "peerDependencies": {
35
+ "@wordpress/api-fetch": "^7.48.0",
36
+ "@wordpress/base-styles": "^6.9.0",
37
+ "@wordpress/components": "^30.6.0",
38
+ "@wordpress/compose": "^7.33.0",
39
+ "@wordpress/data": "^10.48.0",
40
+ "@wordpress/dataviews": "^10.2.0",
41
+ "@wordpress/dom-ready": "^4.48.0",
42
+ "@wordpress/element": "^6.33.0",
43
+ "@wordpress/hooks": "^4.48.0",
44
+ "@wordpress/html-entities": "^4.48.0",
45
+ "@wordpress/i18n": "^6.21.0",
46
+ "@wordpress/icons": "^11.0.0",
47
+ "@wordpress/keycodes": "^4.48.0",
48
+ "@wordpress/url": "^4.48.0"
37
49
  },
38
50
  "devDependencies": {
39
- "@babel/cli": "^7.24.0",
40
- "@babel/core": "^7.24.0",
41
- "@babel/preset-env": "^7.24.7",
42
- "@babel/preset-react": "^7.24.7",
43
- "@babel/preset-typescript": "^7.24.7",
51
+ "@babel/cli": "^7.29.7",
52
+ "@babel/core": "^7.29.7",
53
+ "@babel/preset-env": "^7.29.7",
54
+ "@babel/preset-react": "^7.29.7",
55
+ "@babel/preset-typescript": "^7.29.7",
44
56
  "recursive-copy": "^2.0.0"
45
57
  },
46
58
  "babel": {
@@ -56,6 +68,7 @@
56
68
  "compile:esm": "babel src --extensions='.js,.jsx,.ts,.tsx' --out-dir dist/esm",
57
69
  "compile": "npm run compile:cjs && npm run compile:esm",
58
70
  "prepublishOnly": "npm run clean && npm run compile && node copy-styles.js",
59
- "postpublish": "npm run clean"
71
+ "postpublish": "npm run clean",
72
+ "build": "npm run clean && npm run compile && node copy-styles.js"
60
73
  }
61
74
  }
@@ -0,0 +1 @@
1
+ module.exports = require( '../../config/release-package' );
@@ -0,0 +1,26 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createContext } from '@wordpress/element';
5
+
6
+ /**
7
+ * Window global key used by newspack-blocks to expose the shared AuthorContext.
8
+ *
9
+ * @type {string}
10
+ */
11
+ export const AUTHOR_CONTEXT_KEY = 'NewspackAuthorContext';
12
+
13
+ /**
14
+ * Fallback context that always returns null.
15
+ * Used when the shared AuthorContext from newspack-blocks is not available.
16
+ */
17
+ const FallbackAuthorContext = createContext( null );
18
+
19
+ /**
20
+ * Get the shared AuthorContext from newspack-blocks if available, otherwise use fallback.
21
+ * Resolved at render time (not module load) so it works regardless of script load order.
22
+ *
23
+ * @return {Object} React context object.
24
+ */
25
+ export const getSharedAuthorContext = () =>
26
+ typeof window !== 'undefined' && window[ AUTHOR_CONTEXT_KEY ] ? window[ AUTHOR_CONTEXT_KEY ] : FallbackAuthorContext;