newspack-components 3.0.0-alpha.1 → 3.0.0-alpha.2

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 (278) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/accordion/index.js +50 -0
  4. package/dist/accordion/style.scss +31 -0
  5. package/dist/{cjs/action-card → action-card}/index.js +38 -41
  6. package/dist/{cjs/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +19 -18
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +3 -3
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +29 -29
  10. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +8 -8
  11. package/dist/button/index.js +51 -0
  12. package/dist/button/index.tsx +48 -0
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +8 -8
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +3 -3
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +50 -48
  19. package/dist/{cjs/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +7 -7
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +3 -3
  23. package/dist/{esm/custom-select-control → custom-select-control}/style.scss +11 -10
  24. package/dist/date-range-picker/index.js +39 -0
  25. package/dist/date-range-picker/style.scss +148 -0
  26. package/dist/{cjs/footer → footer}/index.js +19 -17
  27. package/dist/{cjs/footer → footer}/style.scss +1 -1
  28. package/dist/{cjs/form-token-field → form-token-field}/index.js +5 -5
  29. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  30. package/dist/{cjs/global-notices → global-notices}/index.js +3 -3
  31. package/dist/grid/index.js +44 -0
  32. package/dist/grid/index.tsx +34 -0
  33. package/dist/{esm/grid → grid}/style.scss +9 -9
  34. package/dist/{cjs/handoff → handoff}/index.js +72 -69
  35. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  36. package/dist/hooks/index.js +29 -0
  37. package/dist/hooks/index.ts +15 -0
  38. package/dist/{cjs/hooks → hooks}/useObjectState.js +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  40. package/dist/hooks/usePrompt.js +47 -0
  41. package/dist/hooks/usePrompt.ts +46 -0
  42. package/dist/image-upload/index.js +148 -0
  43. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  44. package/dist/{cjs/image-upload → image-upload}/style.scss +5 -5
  45. package/dist/{cjs/index.js → index.js} +15 -1
  46. package/dist/{cjs/info-button → info-button}/index.js +5 -5
  47. package/dist/{cjs/modal → modal}/index.js +3 -3
  48. package/dist/{cjs/modal → modal}/style.scss +5 -5
  49. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +4 -4
  50. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  51. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +4 -4
  52. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  53. package/dist/{cjs/notice → notice}/index.js +11 -8
  54. package/dist/{cjs/notice → notice}/style.scss +11 -11
  55. package/dist/patrons-logo/index.js +77 -0
  56. package/dist/plugin-installer/index.js +297 -0
  57. package/dist/{esm/plugin-installer → plugin-installer}/style.scss +1 -1
  58. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +11 -9
  59. package/dist/plugin-settings/index.js +228 -0
  60. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  61. package/dist/plugin-toggle/README.md +53 -0
  62. package/dist/plugin-toggle/index.js +222 -0
  63. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  64. package/dist/{cjs/popover → popover}/index.js +3 -3
  65. package/dist/{esm/popover → popover}/style.scss +7 -7
  66. package/dist/{cjs/position-control → position-control}/index.js +24 -22
  67. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  68. package/dist/{cjs/progress-bar → progress-bar}/index.js +8 -8
  69. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +12 -11
  70. package/dist/{esm/progress-bar → progress-bar}/style.scss +2 -2
  71. package/dist/proxied-imports/router.js +15 -0
  72. package/dist/{cjs/radio-control → radio-control}/index.js +3 -3
  73. package/dist/{esm/radio-control → radio-control}/style.scss +3 -3
  74. package/dist/{cjs/section-header → section-header}/index.js +8 -8
  75. package/dist/{cjs/section-header → section-header}/style.scss +1 -1
  76. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +7 -7
  77. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +15 -14
  78. package/dist/{cjs/select-control → select-control}/index.js +6 -6
  79. package/dist/{esm/select-control → select-control}/style.scss +4 -4
  80. package/dist/{cjs/settings → settings}/MinMaxSetting.js +12 -11
  81. package/dist/{cjs/settings → settings}/SettingsCard.js +4 -4
  82. package/dist/{cjs/settings → settings}/SettingsSection.js +6 -6
  83. package/dist/{cjs/settings → settings}/index.js +1 -1
  84. package/dist/{cjs/settings → settings}/style.scss +1 -1
  85. package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/index.js +25 -24
  86. package/dist/{cjs/steps-list → steps-list}/index.js +4 -4
  87. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  88. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +5 -5
  89. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  90. package/dist/{cjs/style-card → style-card}/index.js +20 -17
  91. package/dist/{cjs/style-card → style-card}/style.scss +4 -4
  92. package/dist/{esm/style.scss → style.scss} +1 -1
  93. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +7 -7
  94. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  95. package/dist/text-control/index.js +76 -0
  96. package/dist/text-control/index.tsx +71 -0
  97. package/dist/{cjs/utils → utils}/index.js +2 -2
  98. package/dist/{cjs/waiting → waiting}/index.js +3 -3
  99. package/dist/web-preview/index.js +191 -0
  100. package/dist/{esm/web-preview → web-preview}/style.scss +5 -5
  101. package/dist/with-wizard/index.js +328 -0
  102. package/dist/{cjs/with-wizard → with-wizard}/style.scss +44 -22
  103. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +24 -23
  104. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  105. package/dist/{cjs/wizard → wizard}/components/WizardError.js +10 -9
  106. package/dist/{cjs/wizard → wizard}/index.js +30 -27
  107. package/dist/{cjs/wizard → wizard}/store/index.js +1 -1
  108. package/package.json +18 -15
  109. package/shared/scss/_mixins.scss +2 -2
  110. package/src/accordion/index.js +35 -0
  111. package/src/accordion/style.scss +31 -0
  112. package/src/action-card/style.scss +9 -9
  113. package/src/autocomplete-tokenfield/style.scss +3 -3
  114. package/src/autocomplete-with-suggestions/index.js +46 -44
  115. package/src/autocomplete-with-suggestions/style.scss +8 -8
  116. package/src/button/style.scss +1 -1
  117. package/src/button-card/style.scss +19 -13
  118. package/src/card/style.scss +1 -1
  119. package/src/category-autocomplete/style.scss +2 -2
  120. package/src/color-picker/style.scss +3 -3
  121. package/src/custom-select-control/style.scss +11 -10
  122. package/src/date-range-picker/index.js +31 -0
  123. package/src/date-range-picker/style.scss +148 -0
  124. package/src/footer/style.scss +1 -1
  125. package/src/form-token-field/style.scss +1 -1
  126. package/src/grid/style.scss +9 -9
  127. package/src/handoff-message/index.js +3 -1
  128. package/src/image-upload/index.js +1 -1
  129. package/src/image-upload/index.test.js +6 -1
  130. package/src/image-upload/style.scss +5 -5
  131. package/src/index.js +2 -0
  132. package/src/modal/style.scss +5 -5
  133. package/src/newspack-icon/style.scss +1 -1
  134. package/src/newspack-logo/style.scss +1 -1
  135. package/src/notice/style.scss +11 -11
  136. package/src/plugin-installer/style.scss +1 -1
  137. package/src/plugin-settings/style.scss +1 -1
  138. package/src/plugin-toggle/index.js +6 -7
  139. package/src/plugin-toggle/style.scss +1 -1
  140. package/src/popover/style.scss +7 -7
  141. package/src/position-control/index.js +62 -63
  142. package/src/position-control/style.scss +8 -8
  143. package/src/progress-bar/style.scss +2 -2
  144. package/src/radio-control/style.scss +3 -3
  145. package/src/section-header/style.scss +1 -1
  146. package/src/select-control/style.scss +4 -4
  147. package/src/settings/style.scss +1 -1
  148. package/src/steps-list/style.scss +2 -2
  149. package/src/steps-list-item/style.scss +5 -5
  150. package/src/style-card/style.scss +4 -4
  151. package/src/style.scss +1 -1
  152. package/src/tabbed-navigation/index.js +1 -1
  153. package/src/tabbed-navigation/style.scss +4 -4
  154. package/src/web-preview/style.scss +5 -5
  155. package/src/with-wizard/style.scss +44 -22
  156. package/src/with-wizard-screen/style.scss +7 -7
  157. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -49
  158. package/dist/cjs/button/index.js +0 -56
  159. package/dist/cjs/card/style.scss +0 -168
  160. package/dist/cjs/custom-select-control/style.scss +0 -92
  161. package/dist/cjs/form-token-field/style.scss +0 -37
  162. package/dist/cjs/grid/index.js +0 -37
  163. package/dist/cjs/grid/style.scss +0 -166
  164. package/dist/cjs/hooks/index.js +0 -25
  165. package/dist/cjs/hooks/usePrompt.js +0 -49
  166. package/dist/cjs/image-upload/index.js +0 -143
  167. package/dist/cjs/patrons-logo/index.js +0 -81
  168. package/dist/cjs/plugin-installer/index.js +0 -295
  169. package/dist/cjs/plugin-installer/style.scss +0 -72
  170. package/dist/cjs/plugin-settings/index.js +0 -221
  171. package/dist/cjs/plugin-toggle/index.js +0 -218
  172. package/dist/cjs/plugin-toggle/style.scss +0 -20
  173. package/dist/cjs/popover/style.scss +0 -161
  174. package/dist/cjs/progress-bar/style.scss +0 -42
  175. package/dist/cjs/proxied-imports/router.js +0 -14
  176. package/dist/cjs/radio-control/style.scss +0 -92
  177. package/dist/cjs/select-control/style.scss +0 -108
  178. package/dist/cjs/steps-list/style.scss +0 -11
  179. package/dist/cjs/style.scss +0 -55
  180. package/dist/cjs/text-control/index.js +0 -61
  181. package/dist/cjs/web-preview/index.js +0 -188
  182. package/dist/cjs/web-preview/style.scss +0 -155
  183. package/dist/cjs/with-wizard/index.js +0 -317
  184. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  185. package/dist/esm/action-card/index.js +0 -221
  186. package/dist/esm/action-card/style.scss +0 -483
  187. package/dist/esm/autocomplete-tokenfield/index.js +0 -260
  188. package/dist/esm/autocomplete-with-suggestions/index.js +0 -276
  189. package/dist/esm/autocomplete-with-suggestions/style.scss +0 -163
  190. package/dist/esm/button/index.js +0 -48
  191. package/dist/esm/button/style.scss +0 -11
  192. package/dist/esm/button-card/index.js +0 -64
  193. package/dist/esm/button-card/style.scss +0 -174
  194. package/dist/esm/card/index.js +0 -43
  195. package/dist/esm/category-autocomplete/index.js +0 -181
  196. package/dist/esm/category-autocomplete/style.scss +0 -34
  197. package/dist/esm/color-picker/index.js +0 -59
  198. package/dist/esm/color-picker/style.scss +0 -37
  199. package/dist/esm/consts.js +0 -1
  200. package/dist/esm/custom-select-control/index.js +0 -37
  201. package/dist/esm/footer/index.js +0 -100
  202. package/dist/esm/footer/style.scss +0 -82
  203. package/dist/esm/form-token-field/index.js +0 -49
  204. package/dist/esm/global-notices/index.js +0 -30
  205. package/dist/esm/grid/index.js +0 -29
  206. package/dist/esm/handoff/index.js +0 -176
  207. package/dist/esm/handoff-message/index.js +0 -45
  208. package/dist/esm/hooks/index.js +0 -17
  209. package/dist/esm/hooks/useObjectState.js +0 -30
  210. package/dist/esm/hooks/useObjectState.test.js +0 -82
  211. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  212. package/dist/esm/hooks/usePrompt.js +0 -40
  213. package/dist/esm/image-upload/index.js +0 -139
  214. package/dist/esm/image-upload/index.test.js +0 -28
  215. package/dist/esm/image-upload/style.scss +0 -103
  216. package/dist/esm/index.js +0 -45
  217. package/dist/esm/info-button/index.js +0 -42
  218. package/dist/esm/info-button/style.scss +0 -18
  219. package/dist/esm/modal/index.js +0 -39
  220. package/dist/esm/modal/style.scss +0 -56
  221. package/dist/esm/newspack-icon/index.js +0 -50
  222. package/dist/esm/newspack-icon/style.scss +0 -26
  223. package/dist/esm/newspack-logo/index.js +0 -46
  224. package/dist/esm/newspack-logo/style.scss +0 -30
  225. package/dist/esm/notice/index.js +0 -66
  226. package/dist/esm/notice/style.scss +0 -111
  227. package/dist/esm/patrons-logo/index.js +0 -75
  228. package/dist/esm/plugin-installer/index.js +0 -290
  229. package/dist/esm/plugin-settings/SettingsSection.js +0 -134
  230. package/dist/esm/plugin-settings/index.js +0 -216
  231. package/dist/esm/plugin-settings/style.scss +0 -7
  232. package/dist/esm/plugin-toggle/index.js +0 -213
  233. package/dist/esm/popover/index.js +0 -41
  234. package/dist/esm/position-control/index.js +0 -107
  235. package/dist/esm/position-control/style.scss +0 -66
  236. package/dist/esm/progress-bar/index.js +0 -68
  237. package/dist/esm/progress-bar/index.test.js +0 -109
  238. package/dist/esm/proxied-imports/router.js +0 -8
  239. package/dist/esm/radio-control/index.js +0 -37
  240. package/dist/esm/section-header/index.js +0 -67
  241. package/dist/esm/section-header/style.scss +0 -45
  242. package/dist/esm/select-control/ButtonGroupControl.js +0 -53
  243. package/dist/esm/select-control/GroupedSelectControl.js +0 -79
  244. package/dist/esm/select-control/index.js +0 -51
  245. package/dist/esm/settings/MinMaxSetting.js +0 -54
  246. package/dist/esm/settings/SettingsCard.js +0 -38
  247. package/dist/esm/settings/SettingsSection.js +0 -26
  248. package/dist/esm/settings/index.js +0 -9
  249. package/dist/esm/settings/style.scss +0 -119
  250. package/dist/esm/sortable-newsletter-list-control/index.js +0 -128
  251. package/dist/esm/sortable-newsletter-list-control/style.scss +0 -45
  252. package/dist/esm/steps-list/index.js +0 -43
  253. package/dist/esm/steps-list-item/index.js +0 -47
  254. package/dist/esm/steps-list-item/style.scss +0 -47
  255. package/dist/esm/style-card/index.js +0 -75
  256. package/dist/esm/style-card/style.scss +0 -94
  257. package/dist/esm/tabbed-navigation/index.js +0 -53
  258. package/dist/esm/tabbed-navigation/style.scss +0 -86
  259. package/dist/esm/text-control/index.js +0 -57
  260. package/dist/esm/text-control/style.scss +0 -32
  261. package/dist/esm/utils/index.js +0 -29
  262. package/dist/esm/waiting/index.js +0 -44
  263. package/dist/esm/waiting/style.scss +0 -27
  264. package/dist/esm/web-preview/index.js +0 -183
  265. package/dist/esm/with-wizard/index.js +0 -311
  266. package/dist/esm/with-wizard/style.scss +0 -260
  267. package/dist/esm/with-wizard-screen/index.js +0 -110
  268. package/dist/esm/wizard/components/WizardError.js +0 -67
  269. package/dist/esm/wizard/index.js +0 -120
  270. package/dist/esm/wizard/store/index.js +0 -155
  271. package/dist/esm/wizard/store/utils.js +0 -14
  272. /package/dist/{cjs/consts.js → consts.js} +0 -0
  273. /package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +0 -0
  274. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  275. /package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/style.scss +0 -0
  276. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  277. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
  278. /package/dist/{cjs/wizard → wizard}/store/utils.js +0 -0
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
9
+ var _element = require("@wordpress/element");
10
+ var _i18n = require("@wordpress/i18n");
11
+ var _ = require("../");
12
+ require("./style.scss");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ /**
15
+ * WordPress dependencies.
16
+ */
17
+
18
+ /**
19
+ * Internal dependencies.
20
+ */
21
+
22
+ /**
23
+ * Plugin toggle group component.
24
+ */class PluginToggle extends _element.Component {
25
+ state = {
26
+ pluginInfo: {}
27
+ };
28
+ componentDidMount = () => {
29
+ this.retrievePluginInfo();
30
+ };
31
+
32
+ /**
33
+ * Retrieve complete data about Newspack plugins.
34
+ */
35
+ retrievePluginInfo = () => {
36
+ return new Promise(() => {
37
+ (0, _apiFetch.default)({
38
+ path: '/newspack/v1/plugins/'
39
+ }).then(pluginInfo => this.setState({
40
+ pluginInfo
41
+ }));
42
+ });
43
+ };
44
+
45
+ /**
46
+ * Install/activate or remove a plugin.
47
+ */
48
+ managePlugin = (plugin, value) => {
49
+ const {
50
+ plugins
51
+ } = this.props;
52
+ const {
53
+ pluginInfo
54
+ } = this.state;
55
+ const action = value ? 'configure' : 'deactivate';
56
+ const params = {
57
+ path: `/newspack/v1/plugins/${plugin}/${action}/`,
58
+ method: 'post'
59
+ };
60
+ this.setState({
61
+ pluginInfo: {
62
+ ...pluginInfo,
63
+ [plugin]: {
64
+ ...pluginInfo[plugin],
65
+ inFlight: action
66
+ }
67
+ }
68
+ }, () => {
69
+ (0, _apiFetch.default)(params).then(response => {
70
+ const {
71
+ shouldRefreshAfterUpdate
72
+ } = plugins[plugin];
73
+ this.setState(({
74
+ pluginInfo: currentPluginInfo
75
+ }) => ({
76
+ pluginInfo: {
77
+ ...currentPluginInfo,
78
+ [plugin]: response
79
+ }
80
+ }), () => shouldRefreshAfterUpdate && location.reload());
81
+ }).catch(e => {
82
+ this.setState({
83
+ pluginInfo: {
84
+ ...pluginInfo,
85
+ [plugin]: {
86
+ ...pluginInfo[plugin],
87
+ error: e.message || (0, _i18n.__)('There was an error managing this plugin.', 'newspack-plugin')
88
+ }
89
+ }
90
+ });
91
+ });
92
+ });
93
+ };
94
+
95
+ /**
96
+ * Render.
97
+ */
98
+ render() {
99
+ const {
100
+ plugins
101
+ } = this.props;
102
+ const {
103
+ pluginInfo
104
+ } = this.state;
105
+ return this.prepareDataForRender(plugins, pluginInfo).map((plugin, index) => {
106
+ const {
107
+ name,
108
+ description,
109
+ href,
110
+ slug,
111
+ editPath
112
+ } = plugin;
113
+ const pluginStatus = this.isPluginInstalledAndActive(plugin);
114
+ const handoff = !href && pluginStatus && editPath ? slug : null;
115
+ const error = this.errorForPlugin(plugin);
116
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.ActionCard, {
117
+ className: this.classNameForPlugin(plugin),
118
+ title: name,
119
+ description: description,
120
+ actionText: this.actionTextForPlugin(plugin),
121
+ handoff: handoff,
122
+ href: href,
123
+ toggle: true,
124
+ toggleChecked: this.isPluginInstalledAndActive(plugin),
125
+ toggleOnChange: value => this.managePlugin(slug, value),
126
+ notification: error,
127
+ notificationHTML: error,
128
+ notificationLevel: "error"
129
+ }, index);
130
+ });
131
+ }
132
+
133
+ /**
134
+ * Prepare plugins data for render. Change all keys to camelCase, merge API-fetched data with prop.
135
+ */
136
+ prepareDataForRender = (pluginsFromProps, pluginsFromAPI) => Object.keys(pluginsFromProps).map(pluginSlug => pluginsFromAPI[pluginSlug] ? Object.keys(pluginsFromAPI[pluginSlug]).reduce((accumulator, key) => ({
137
+ ...accumulator,
138
+ [key.charAt(0).toLowerCase() + key.slice(1)]: pluginsFromAPI[pluginSlug][key]
139
+ }), {}) : {}).map(plugin => Object.assign(plugin, pluginsFromProps[plugin.slug]));
140
+
141
+ /**
142
+ * Generate a classname for the ActionCard based on plugin state. Applies 'in-flight' class if an API is underway and 'loading' if the plugin data is not yet available.
143
+ */
144
+ classNameForPlugin = plugin => {
145
+ const {
146
+ status,
147
+ inFlight
148
+ } = plugin;
149
+ if (inFlight) {
150
+ return 'in-flight';
151
+ }
152
+ if (!status) {
153
+ return 'loading';
154
+ }
155
+ };
156
+
157
+ /**
158
+ * Generate the ActionCard action text for a plugin.
159
+ */
160
+ actionTextForPlugin = plugin => {
161
+ const {
162
+ actionText,
163
+ editPath,
164
+ href,
165
+ inFlight,
166
+ name
167
+ } = plugin;
168
+ // Show spinner when plugin data is unavailable, or when an API call is in flight.
169
+ if ('configure' === inFlight) {
170
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
171
+ children: [(0, _i18n.__)('Installing…', 'newspack-plugin'), " ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Waiting, {
172
+ isRight: true
173
+ })]
174
+ });
175
+ }
176
+ if ('deactivate' === inFlight) {
177
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
178
+ children: [(0, _i18n.__)('Deactivating…', 'newspack-plugin'), " ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Waiting, {
179
+ isRight: true
180
+ })]
181
+ });
182
+ }
183
+ if (!name) {
184
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
185
+ children: [(0, _i18n.__)('Loading…', 'newspack-plugin'), " ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Waiting, {
186
+ isRight: true
187
+ })]
188
+ });
189
+ }
190
+ // No action button at all if the plugin isn't installed and active.
191
+ if (!this.isPluginInstalledAndActive(plugin)) {
192
+ return null;
193
+ }
194
+ if (href || editPath) {
195
+ return actionText ? actionText : (0, _i18n.__)('Configure', 'newspack-plugin');
196
+ }
197
+ };
198
+
199
+ /**
200
+ * Get error message for this plugin.
201
+ */
202
+ errorForPlugin = plugin => {
203
+ const {
204
+ slug
205
+ } = plugin;
206
+ const {
207
+ pluginInfo
208
+ } = this.state;
209
+ return pluginInfo[slug]?.error || null;
210
+ };
211
+
212
+ /**
213
+ * Get installation/activation status for a plugin.
214
+ */
215
+ isPluginInstalledAndActive = plugin => {
216
+ const {
217
+ status
218
+ } = plugin;
219
+ return status === 'active';
220
+ };
221
+ }
222
+ var _default = exports.default = PluginToggle;
@@ -2,7 +2,7 @@
2
2
  * Plugin Toggle
3
3
  */
4
4
 
5
- @use '~@wordpress/base-styles/colors' as wp-colors;
5
+ @use "~@wordpress/base-styles/colors" as wp-colors;
6
6
 
7
7
  .newspack-action-card {
8
8
  &.in-flight,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -9,7 +9,7 @@ var _components = require("@wordpress/components");
9
9
  var _element = require("@wordpress/element");
10
10
  require("./style.scss");
11
11
  var _classnames = _interopRequireDefault(require("classnames"));
12
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
13
  /**
14
14
  * WordPress dependencies
15
15
  */
@@ -35,7 +35,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
35
35
  ...otherProps
36
36
  } = this.props;
37
37
  const classes = (0, _classnames.default)('newspack-popover', padding && 'newspack-popover__padding-' + padding, className);
38
- return (0, _jsxRuntime.jsx)(_components.Popover, {
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Popover, {
39
39
  className: classes,
40
40
  ...otherProps
41
41
  });
@@ -2,8 +2,8 @@
2
2
  * Popover
3
3
  */
4
4
 
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
5
+ @use "../../../shared/scss/colors";
6
+ @use "~@wordpress/base-styles/colors" as wp-colors;
7
7
 
8
8
  .newspack-popover {
9
9
  .components-popover__content {
@@ -23,7 +23,7 @@
23
23
  }
24
24
  }
25
25
 
26
- &:focus:not( :disabled ) {
26
+ &:focus:not(:disabled) {
27
27
  box-shadow: inset 0 0 0 2px colors.$primary-500;
28
28
  position: relative;
29
29
  z-index: 1;
@@ -34,14 +34,14 @@
34
34
  padding: 6px 8px;
35
35
  text-decoration: none;
36
36
 
37
- &:not( .is-destructive ) {
37
+ &:not(.is-destructive) {
38
38
  color: wp-colors.$gray-700;
39
39
 
40
40
  &:active,
41
41
  &:active:enabled,
42
42
  &:focus,
43
43
  &:focus:enabled &:hover,
44
- &:not( :disabled, [aria-disabled='true'], .is-default ):hover {
44
+ &:not(:disabled, [aria-disabled="true"], .is-default):hover {
45
45
  color: colors.$primary-500;
46
46
  }
47
47
  }
@@ -52,7 +52,7 @@
52
52
  }
53
53
  }
54
54
 
55
- &.is-destructive:not( :focus ) {
55
+ &.is-destructive:not(:focus) {
56
56
  box-shadow: none !important;
57
57
  }
58
58
 
@@ -131,7 +131,7 @@
131
131
  }
132
132
  }
133
133
 
134
- &:not( .is-without-arrow )::before {
134
+ &:not(.is-without-arrow)::before {
135
135
  border-color: wp-colors.$gray-300;
136
136
  }
137
137
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -9,17 +9,19 @@ var _i18n = require("@wordpress/i18n");
9
9
  var _components = require("@wordpress/components");
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  require("./style.scss");
12
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
13
  /**
14
14
  * WordPress dependencies
15
15
  */
16
- const __ = _i18n.__;
16
+
17
17
  /**
18
18
  * External dependencies
19
19
  */
20
+
20
21
  /**
21
22
  * Internal dependencies
22
23
  */
24
+
23
25
  function PositionControl({
24
26
  allowedPositions,
25
27
  value,
@@ -35,64 +37,64 @@ function PositionControl({
35
37
  const options = size === 'full-width' ? [{
36
38
  value: 'top',
37
39
  /* translators: Overlay Position */
38
- label: __('Top', 'newspack-plugin')
40
+ label: (0, _i18n.__)('Top', 'newspack-plugin')
39
41
  }, {
40
42
  value: 'center',
41
43
  /* translators: Overlay Position */
42
- label: __('Center', 'newspack-plugin')
44
+ label: (0, _i18n.__)('Center', 'newspack-plugin')
43
45
  }, {
44
46
  value: 'bottom',
45
47
  /* translators: Overlay Position */
46
- label: __('Bottom', 'newspack-plugin')
48
+ label: (0, _i18n.__)('Bottom', 'newspack-plugin')
47
49
  }] : [{
48
50
  value: 'top_left',
49
51
  /* translators: Overlay Position */
50
- label: __('Top Left', 'newspack-plugin')
52
+ label: (0, _i18n.__)('Top Left', 'newspack-plugin')
51
53
  }, {
52
54
  value: 'top',
53
55
  /* translators: Overlay Position */
54
- label: __('Top Center', 'newspack-plugin')
56
+ label: (0, _i18n.__)('Top Center', 'newspack-plugin')
55
57
  }, {
56
58
  value: 'top_right',
57
59
  /* translators: Overlay Position */
58
- label: __('Top Right', 'newspack-plugin')
60
+ label: (0, _i18n.__)('Top Right', 'newspack-plugin')
59
61
  }, {
60
62
  value: 'center_left',
61
63
  /* translators: Overlay Position */
62
- label: __('Center Left', 'newspack-plugin')
64
+ label: (0, _i18n.__)('Center Left', 'newspack-plugin')
63
65
  }, {
64
66
  value: 'center',
65
67
  /* translators: Overlay Position */
66
- label: __('Center', 'newspack-plugin')
68
+ label: (0, _i18n.__)('Center', 'newspack-plugin')
67
69
  }, {
68
70
  value: 'center_right',
69
71
  /* translators: Overlay Position */
70
- label: __('Center Right', 'newspack-plugin')
72
+ label: (0, _i18n.__)('Center Right', 'newspack-plugin')
71
73
  }, {
72
74
  value: 'bottom_left',
73
75
  /* translators: Overlay Position */
74
- label: __('Bottom Left', 'newspack-plugin')
76
+ label: (0, _i18n.__)('Bottom Left', 'newspack-plugin')
75
77
  }, {
76
78
  value: 'bottom',
77
79
  /* translators: Overlay Position */
78
- label: __('Bottom Center', 'newspack-plugin')
80
+ label: (0, _i18n.__)('Bottom Center', 'newspack-plugin')
79
81
  }, {
80
82
  value: 'bottom_right',
81
83
  /* translators: Overlay Position */
82
- label: __('Bottom Right', 'newspack-plugin')
84
+ label: (0, _i18n.__)('Bottom Right', 'newspack-plugin')
83
85
  }];
84
- return (0, _jsxRuntime.jsxs)("div", {
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
85
87
  className: (0, _classnames.default)('newspack-position-placement-control', 'size-' + size),
86
- children: [(0, _jsxRuntime.jsx)("p", {
88
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
87
89
  className: "components-base-control__label",
88
90
  children: label
89
- }), (0, _jsxRuntime.jsx)(_components.ButtonGroup, {
90
- "aria-label": __('Select Position', 'newspack-plugin'),
91
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ButtonGroup, {
92
+ "aria-label": (0, _i18n.__)('Select Position', 'newspack-plugin'),
91
93
  ...props,
92
94
  children: options.map((option, index) => {
93
- return (0, _jsxRuntime.jsx)("div", {
95
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
94
96
  className: option.value === value ? 'is-selected' : null,
95
- children: (0, _jsxRuntime.jsx)(_components.Button, {
97
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
96
98
  isSmall: true,
97
99
  title: option.label,
98
100
  "aria-label": option.label,
@@ -104,7 +106,7 @@ function PositionControl({
104
106
  })
105
107
  }, `newspack-position-placement-item-${index}`);
106
108
  })
107
- }), (0, _jsxRuntime.jsx)("p", {
109
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
108
110
  className: "components-base-control__help",
109
111
  children: help
110
112
  })]
@@ -1,4 +1,4 @@
1
- @use '~@wordpress/base-styles/colors' as wp-colors;
1
+ @use "~@wordpress/base-styles/colors" as wp-colors;
2
2
 
3
3
  .newspack-position-placement-control {
4
4
  margin-bottom: 1em;
@@ -10,8 +10,8 @@
10
10
 
11
11
  .components-button-group {
12
12
  display: grid;
13
- grid-template-columns: repeat( 3, 1fr );
14
- grid-template-rows: repeat( 3, 1fr );
13
+ grid-template-columns: repeat(3, 1fr);
14
+ grid-template-rows: repeat(3, 1fr);
15
15
 
16
16
  div {
17
17
  padding: 1px;
@@ -24,19 +24,19 @@
24
24
  width: 100%;
25
25
  }
26
26
 
27
- div:nth-of-type( 1 ) .components-button {
27
+ div:nth-of-type(1) .components-button {
28
28
  border-radius: 4px 0 0 !important;
29
29
  }
30
30
 
31
- div:nth-of-type( 3 ) .components-button {
31
+ div:nth-of-type(3) .components-button {
32
32
  border-radius: 0 4px 0 0 !important;
33
33
  }
34
34
 
35
- div:nth-last-of-type( 1 ) .components-button {
35
+ div:nth-last-of-type(1) .components-button {
36
36
  border-radius: 0 0 4px !important;
37
37
  }
38
38
 
39
- div:nth-last-of-type( 3 ) .components-button {
39
+ div:nth-last-of-type(3) .components-button {
40
40
  border-radius: 0 0 0 4px !important;
41
41
  }
42
42
  }
@@ -48,7 +48,7 @@
48
48
  border-radius: 4px 4px 0 0 !important;
49
49
  }
50
50
 
51
- div:nth-of-type( 2 ) .components-button {
51
+ div:nth-of-type(2) .components-button {
52
52
  border-radius: 0 !important;
53
53
  }
54
54
 
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _element = require("@wordpress/element");
8
8
  require("./style.scss");
9
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
10
  /**
11
11
  * Progress Bar
12
12
  */
@@ -49,21 +49,21 @@ class ProgressBar extends _element.Component {
49
49
  const barStyle = {
50
50
  width: this.getCompletionPercentage(cleanCompleted, cleanTotal) + '%'
51
51
  };
52
- return (0, _jsxRuntime.jsxs)("div", {
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
53
53
  className: "newspack-progress-bar",
54
- children: [(label || displayFraction) && (0, _jsxRuntime.jsxs)("div", {
54
+ children: [(label || displayFraction) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
55
55
  className: "newspack-progress-bar__headings",
56
- children: [label && (0, _jsxRuntime.jsx)("h2", {
56
+ children: [label && /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
57
57
  children: label
58
- }), displayFraction && (0, _jsxRuntime.jsx)("p", {
58
+ }), displayFraction && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
59
59
  className: "is-dark",
60
- children: (0, _jsxRuntime.jsxs)("strong", {
60
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("strong", {
61
61
  children: [cleanCompleted, "/", cleanTotal]
62
62
  })
63
63
  })]
64
- }), (0, _jsxRuntime.jsx)("div", {
64
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
65
65
  className: "newspack-progress-bar__container",
66
- children: (0, _jsxRuntime.jsx)("div", {
66
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
67
67
  className: "newspack-progress-bar__bar",
68
68
  style: barStyle,
69
69
  "data-testid": "progress-bar-indicator"
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _react = _interopRequireDefault(require("react"));
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireWildcard(require("react"));
5
5
  var _react2 = require("@testing-library/react");
6
6
  var _ = _interopRequireDefault(require("./"));
7
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
8
- var _react3 = require("@emotion/react");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
10
  describe('ProgressBar', () => {
10
11
  it('should render a progress indicator', () => {
11
12
  const {
12
13
  getByTestId
13
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
14
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
14
15
  completed: "1",
15
16
  total: "2"
16
17
  }));
@@ -21,7 +22,7 @@ describe('ProgressBar', () => {
21
22
  const label = 'test label';
22
23
  const {
23
24
  getByText
24
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
25
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
25
26
  completed: "1",
26
27
  total: "2",
27
28
  label: label
@@ -31,7 +32,7 @@ describe('ProgressBar', () => {
31
32
  it('should render progress as a fraction', () => {
32
33
  const {
33
34
  getByText
34
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
35
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
35
36
  completed: "1",
36
37
  total: "2",
37
38
  displayFraction: true
@@ -42,7 +43,7 @@ describe('ProgressBar', () => {
42
43
  const label = 'test label';
43
44
  const {
44
45
  getByText
45
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
46
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
46
47
  completed: "1",
47
48
  total: "2",
48
49
  label: label,
@@ -77,7 +78,7 @@ describe('ProgressBar', () => {
77
78
  it(`with expected progress of ${expectedWidth}`, () => {
78
79
  const {
79
80
  getByTestId
80
- } = (0, _react2.render)((0, _react3.createElement)(_.default, {
81
+ } = (0, _react2.render)( /*#__PURE__*/(0, _react.createElement)(_.default, {
81
82
  ...props,
82
83
  key: expectedWidth
83
84
  }));
@@ -89,7 +90,7 @@ describe('ProgressBar', () => {
89
90
  const {
90
91
  getByText,
91
92
  getByTestId
92
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
93
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
93
94
  completed: "cats",
94
95
  total: "dogs",
95
96
  displayFraction: true
@@ -101,7 +102,7 @@ describe('ProgressBar', () => {
101
102
  const {
102
103
  getByText,
103
104
  getByTestId
104
- } = (0, _react2.render)((0, _jsxRuntime.jsx)(_.default, {
105
+ } = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
105
106
  completed: "3",
106
107
  total: "-1",
107
108
  displayFraction: true
@@ -2,8 +2,8 @@
2
2
  * Progress Bar
3
3
  */
4
4
 
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
5
+ @use "../../../shared/scss/colors";
6
+ @use "~@wordpress/base-styles/colors" as wp-colors;
7
7
 
8
8
  .newspack-progress-bar {
9
9
  margin: 32px 0;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var ReactRouterDOM = _interopRequireWildcard(require("react-router-dom"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ /**
11
+ * A proxy for react-router-dom.
12
+ * Ensures that both components and the plugin use the same instance of
13
+ * React Router, even if there are node_modules in components.
14
+ */
15
+ var _default = exports.default = ReactRouterDOM;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -9,7 +9,7 @@ var _components = require("@wordpress/components");
9
9
  var _element = require("@wordpress/element");
10
10
  require("./style.scss");
11
11
  var _classnames = _interopRequireDefault(require("classnames"));
12
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
13
  /**
14
14
  * WordPress dependencies.
15
15
  */
@@ -34,7 +34,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
34
34
  ...otherProps
35
35
  } = this.props;
36
36
  const classes = (0, _classnames.default)('newspack-radio-control', className);
37
- return (0, _jsxRuntime.jsx)(_components.RadioControl, {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RadioControl, {
38
38
  className: classes,
39
39
  ...otherProps
40
40
  });
@@ -2,8 +2,8 @@
2
2
  * Radio Control
3
3
  */
4
4
 
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
5
+ @use "../../../shared/scss/colors";
6
+ @use "~@wordpress/base-styles/colors" as wp-colors;
7
7
 
8
8
  .newspack-radio-control {
9
9
  color: wp-colors.$gray-700;
@@ -41,7 +41,7 @@
41
41
 
42
42
  // Radio
43
43
 
44
- input[type='radio'] {
44
+ input[type="radio"] {
45
45
  height: 24px;
46
46
  margin-right: 8px;
47
47
  width: 24px;