newspack-components 2.2.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 (308) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/{cjs/accordion → accordion}/index.js +17 -13
  4. package/dist/{cjs/accordion → accordion}/style.scss +7 -3
  5. package/dist/{cjs/action-card → action-card}/index.js +39 -43
  6. package/dist/{esm/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +67 -29
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +14 -8
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +61 -73
  10. package/dist/{esm/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +9 -17
  11. package/dist/button/index.js +51 -0
  12. package/{src/button/index.js → dist/button/index.tsx} +12 -5
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +9 -10
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +4 -5
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +51 -53
  19. package/dist/{esm/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +14 -16
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/consts.js +7 -0
  23. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +4 -5
  24. package/dist/{cjs/custom-select-control → custom-select-control}/style.scss +11 -10
  25. package/dist/{cjs/date-range-picker → date-range-picker}/index.js +9 -11
  26. package/dist/{cjs/date-range-picker → date-range-picker}/style.scss +6 -6
  27. package/dist/{cjs/footer → footer}/index.js +33 -36
  28. package/dist/{cjs/footer → footer}/style.scss +1 -1
  29. package/dist/{cjs/form-token-field → form-token-field}/index.js +6 -7
  30. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  31. package/dist/{cjs/global-notices → global-notices}/index.js +4 -5
  32. package/dist/grid/index.js +44 -0
  33. package/dist/grid/index.tsx +34 -0
  34. package/dist/{cjs/grid → grid}/style.scss +9 -9
  35. package/dist/{cjs/handoff → handoff}/index.js +73 -71
  36. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  37. package/dist/hooks/index.js +29 -0
  38. package/{src/hooks/index.js → dist/hooks/index.ts} +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.js +2 -3
  40. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  41. package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +1 -2
  42. package/dist/hooks/usePrompt.js +47 -0
  43. package/{src/hooks/usePrompt.js → dist/hooks/usePrompt.ts} +4 -8
  44. package/dist/image-upload/index.js +148 -0
  45. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  46. package/dist/{esm/image-upload → image-upload}/style.scss +5 -5
  47. package/dist/{cjs/index.js → index.js} +1 -1
  48. package/dist/{cjs/info-button → info-button}/index.js +6 -7
  49. package/dist/{cjs/modal → modal}/index.js +4 -5
  50. package/dist/{esm/modal → modal}/style.scss +5 -5
  51. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +5 -6
  52. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  53. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +5 -6
  54. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  55. package/dist/{cjs/notice → notice}/index.js +12 -10
  56. package/dist/{cjs/notice → notice}/style.scss +11 -11
  57. package/dist/patrons-logo/index.js +77 -0
  58. package/dist/plugin-installer/index.js +297 -0
  59. package/dist/{cjs/plugin-installer → plugin-installer}/style.scss +1 -1
  60. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +13 -13
  61. package/dist/plugin-settings/index.js +228 -0
  62. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  63. package/dist/plugin-toggle/README.md +53 -0
  64. package/dist/plugin-toggle/index.js +222 -0
  65. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  66. package/dist/{cjs/popover → popover}/index.js +4 -5
  67. package/dist/{cjs/popover → popover}/style.scss +7 -7
  68. package/dist/{cjs/position-control → position-control}/index.js +33 -32
  69. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  70. package/dist/{cjs/progress-bar → progress-bar}/index.js +9 -10
  71. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +16 -16
  72. package/dist/{cjs/progress-bar → progress-bar}/style.scss +2 -2
  73. package/dist/proxied-imports/router.js +15 -0
  74. package/dist/{cjs/radio-control → radio-control}/index.js +4 -5
  75. package/dist/{cjs/radio-control → radio-control}/style.scss +3 -3
  76. package/dist/{cjs/section-header → section-header}/index.js +20 -21
  77. package/dist/{esm/section-header → section-header}/style.scss +5 -1
  78. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +17 -19
  79. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +32 -35
  80. package/dist/{cjs/select-control → select-control}/index.js +7 -8
  81. package/dist/{cjs/select-control → select-control}/style.scss +4 -4
  82. package/dist/settings/MinMaxSetting.js +60 -0
  83. package/dist/{cjs/settings → settings}/SettingsCard.js +14 -16
  84. package/dist/settings/SettingsSection.js +33 -0
  85. package/dist/{cjs/settings → settings}/index.js +3 -4
  86. package/dist/{cjs/settings → settings}/style.scss +15 -2
  87. package/dist/sortable-newsletter-list-control/index.js +135 -0
  88. package/dist/sortable-newsletter-list-control/style.scss +45 -0
  89. package/dist/{cjs/steps-list → steps-list}/index.js +5 -6
  90. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  91. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +6 -7
  92. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  93. package/dist/{cjs/style-card → style-card}/index.js +21 -19
  94. package/dist/{esm/style-card → style-card}/style.scss +4 -4
  95. package/dist/{esm/style.scss → style.scss} +14 -2
  96. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +16 -19
  97. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  98. package/dist/text-control/index.js +76 -0
  99. package/dist/text-control/index.tsx +71 -0
  100. package/dist/utils/index.js +36 -0
  101. package/dist/{cjs/waiting → waiting}/index.js +4 -5
  102. package/dist/web-preview/index.js +191 -0
  103. package/dist/{cjs/web-preview → web-preview}/style.scss +5 -5
  104. package/dist/with-wizard/index.js +328 -0
  105. package/dist/{esm/with-wizard → with-wizard}/style.scss +44 -22
  106. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +40 -43
  107. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  108. package/dist/{cjs/wizard → wizard}/components/WizardError.js +16 -17
  109. package/dist/{cjs/wizard → wizard}/index.js +44 -46
  110. package/dist/{cjs/wizard → wizard}/store/index.js +37 -38
  111. package/dist/{cjs/wizard → wizard}/store/utils.js +1 -4
  112. package/package.json +16 -14
  113. package/shared/scss/_mixins.scss +2 -2
  114. package/src/accordion/index.js +4 -1
  115. package/src/accordion/style.scss +7 -3
  116. package/src/action-card/style.scss +9 -9
  117. package/src/autocomplete-tokenfield/index.js +48 -15
  118. package/src/autocomplete-tokenfield/style.scss +14 -8
  119. package/src/autocomplete-with-suggestions/index.js +59 -62
  120. package/src/autocomplete-with-suggestions/style.scss +9 -17
  121. package/src/button/index.tsx +48 -0
  122. package/src/button/style.scss +1 -1
  123. package/src/button-card/style.scss +19 -13
  124. package/src/card/style.scss +1 -1
  125. package/src/category-autocomplete/style.scss +2 -2
  126. package/src/color-picker/style.scss +3 -3
  127. package/src/consts.js +0 -2
  128. package/src/custom-select-control/style.scss +11 -10
  129. package/src/date-range-picker/style.scss +6 -6
  130. package/src/footer/index.js +7 -7
  131. package/src/footer/style.scss +1 -1
  132. package/src/form-token-field/style.scss +1 -1
  133. package/src/grid/index.tsx +34 -0
  134. package/src/grid/style.scss +9 -9
  135. package/src/handoff/index.js +7 -6
  136. package/src/handoff-message/index.js +3 -1
  137. package/src/hooks/index.ts +15 -0
  138. package/src/hooks/usePrompt.ts +46 -0
  139. package/src/image-upload/index.js +5 -5
  140. package/src/image-upload/index.test.js +6 -1
  141. package/src/image-upload/style.scss +5 -5
  142. package/src/modal/style.scss +5 -5
  143. package/src/newspack-icon/style.scss +1 -1
  144. package/src/newspack-logo/style.scss +1 -1
  145. package/src/notice/index.js +1 -1
  146. package/src/notice/style.scss +11 -11
  147. package/src/patrons-logo/index.js +4 -1
  148. package/src/plugin-installer/index.js +7 -7
  149. package/src/plugin-installer/style.scss +1 -1
  150. package/src/plugin-settings/index.js +1 -1
  151. package/src/plugin-settings/style.scss +1 -1
  152. package/src/plugin-toggle/index.js +13 -12
  153. package/src/plugin-toggle/style.scss +1 -1
  154. package/src/popover/style.scss +7 -7
  155. package/src/position-control/index.js +63 -64
  156. package/src/position-control/style.scss +8 -8
  157. package/src/progress-bar/style.scss +2 -2
  158. package/src/radio-control/style.scss +3 -3
  159. package/src/section-header/index.js +3 -3
  160. package/src/section-header/style.scss +5 -1
  161. package/src/select-control/GroupedSelectControl.js +1 -1
  162. package/src/select-control/style.scss +4 -4
  163. package/src/settings/MinMaxSetting.js +8 -6
  164. package/src/settings/style.scss +15 -2
  165. package/src/sortable-newsletter-list-control/index.js +137 -0
  166. package/src/sortable-newsletter-list-control/style.scss +45 -0
  167. package/src/steps-list/style.scss +2 -2
  168. package/src/steps-list-item/style.scss +5 -5
  169. package/src/style-card/index.js +11 -5
  170. package/src/style-card/style.scss +4 -4
  171. package/src/style.scss +14 -2
  172. package/src/tabbed-navigation/style.scss +4 -4
  173. package/src/text-control/index.tsx +65 -0
  174. package/src/web-preview/index.js +6 -6
  175. package/src/web-preview/style.scss +5 -5
  176. package/src/with-wizard/index.js +4 -4
  177. package/src/with-wizard/style.scss +44 -22
  178. package/src/with-wizard-screen/index.js +1 -1
  179. package/src/with-wizard-screen/style.scss +7 -7
  180. package/src/wizard/components/WizardError.js +1 -1
  181. package/src/wizard/index.js +3 -3
  182. package/src/wizard/store/index.js +9 -2
  183. package/dist/cjs/action-card/style.scss +0 -483
  184. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -43
  185. package/dist/cjs/autocomplete-with-suggestions/style.scss +0 -171
  186. package/dist/cjs/button/index.js +0 -57
  187. package/dist/cjs/card/style.scss +0 -168
  188. package/dist/cjs/category-autocomplete/style.scss +0 -34
  189. package/dist/cjs/consts.js +0 -12
  190. package/dist/cjs/form-token-field/style.scss +0 -37
  191. package/dist/cjs/grid/index.js +0 -54
  192. package/dist/cjs/hooks/index.js +0 -26
  193. package/dist/cjs/hooks/usePrompt.js +0 -52
  194. package/dist/cjs/image-upload/index.js +0 -144
  195. package/dist/cjs/image-upload/style.scss +0 -103
  196. package/dist/cjs/modal/style.scss +0 -56
  197. package/dist/cjs/patrons-logo/index.js +0 -82
  198. package/dist/cjs/plugin-installer/index.js +0 -299
  199. package/dist/cjs/plugin-settings/index.js +0 -222
  200. package/dist/cjs/plugin-toggle/index.js +0 -222
  201. package/dist/cjs/plugin-toggle/style.scss +0 -20
  202. package/dist/cjs/proxied-imports/router.js +0 -15
  203. package/dist/cjs/section-header/style.scss +0 -41
  204. package/dist/cjs/settings/MinMaxSetting.js +0 -57
  205. package/dist/cjs/settings/SettingsSection.js +0 -37
  206. package/dist/cjs/steps-list/style.scss +0 -11
  207. package/dist/cjs/style-card/style.scss +0 -94
  208. package/dist/cjs/style.scss +0 -43
  209. package/dist/cjs/text-control/index.js +0 -71
  210. package/dist/cjs/utils/index.js +0 -40
  211. package/dist/cjs/web-preview/index.js +0 -189
  212. package/dist/cjs/with-wizard/index.js +0 -318
  213. package/dist/cjs/with-wizard/style.scss +0 -260
  214. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  215. package/dist/esm/accordion/index.js +0 -38
  216. package/dist/esm/accordion/style.scss +0 -27
  217. package/dist/esm/action-card/index.js +0 -222
  218. package/dist/esm/autocomplete-tokenfield/index.js +0 -223
  219. package/dist/esm/autocomplete-with-suggestions/index.js +0 -289
  220. package/dist/esm/button/index.js +0 -48
  221. package/dist/esm/button/style.scss +0 -11
  222. package/dist/esm/button-card/index.js +0 -65
  223. package/dist/esm/button-card/style.scss +0 -174
  224. package/dist/esm/card/index.js +0 -43
  225. package/dist/esm/category-autocomplete/index.js +0 -185
  226. package/dist/esm/color-picker/index.js +0 -61
  227. package/dist/esm/color-picker/style.scss +0 -37
  228. package/dist/esm/consts.js +0 -3
  229. package/dist/esm/custom-select-control/index.js +0 -37
  230. package/dist/esm/custom-select-control/style.scss +0 -92
  231. package/dist/esm/date-range-picker/index.js +0 -32
  232. package/dist/esm/date-range-picker/style.scss +0 -148
  233. package/dist/esm/footer/index.js +0 -105
  234. package/dist/esm/footer/style.scss +0 -82
  235. package/dist/esm/form-token-field/index.js +0 -50
  236. package/dist/esm/global-notices/index.js +0 -30
  237. package/dist/esm/grid/index.js +0 -45
  238. package/dist/esm/grid/style.scss +0 -166
  239. package/dist/esm/handoff/index.js +0 -177
  240. package/dist/esm/handoff-message/index.js +0 -45
  241. package/dist/esm/hooks/index.js +0 -17
  242. package/dist/esm/hooks/useObjectState.js +0 -31
  243. package/dist/esm/hooks/useObjectState.test.js +0 -83
  244. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  245. package/dist/esm/hooks/usePrompt.js +0 -43
  246. package/dist/esm/image-upload/index.js +0 -141
  247. package/dist/esm/image-upload/index.test.js +0 -28
  248. package/dist/esm/index.js +0 -47
  249. package/dist/esm/info-button/index.js +0 -42
  250. package/dist/esm/info-button/style.scss +0 -18
  251. package/dist/esm/modal/index.js +0 -39
  252. package/dist/esm/newspack-icon/index.js +0 -50
  253. package/dist/esm/newspack-icon/style.scss +0 -26
  254. package/dist/esm/newspack-logo/index.js +0 -46
  255. package/dist/esm/newspack-logo/style.scss +0 -30
  256. package/dist/esm/notice/index.js +0 -67
  257. package/dist/esm/notice/style.scss +0 -111
  258. package/dist/esm/patrons-logo/index.js +0 -76
  259. package/dist/esm/plugin-installer/index.js +0 -295
  260. package/dist/esm/plugin-installer/style.scss +0 -72
  261. package/dist/esm/plugin-settings/SettingsSection.js +0 -136
  262. package/dist/esm/plugin-settings/index.js +0 -217
  263. package/dist/esm/plugin-settings/style.scss +0 -7
  264. package/dist/esm/plugin-toggle/index.js +0 -217
  265. package/dist/esm/popover/index.js +0 -41
  266. package/dist/esm/popover/style.scss +0 -161
  267. package/dist/esm/position-control/index.js +0 -109
  268. package/dist/esm/position-control/style.scss +0 -66
  269. package/dist/esm/progress-bar/index.js +0 -69
  270. package/dist/esm/progress-bar/index.test.js +0 -110
  271. package/dist/esm/progress-bar/style.scss +0 -42
  272. package/dist/esm/proxied-imports/router.js +0 -8
  273. package/dist/esm/radio-control/index.js +0 -37
  274. package/dist/esm/radio-control/style.scss +0 -92
  275. package/dist/esm/section-header/index.js +0 -68
  276. package/dist/esm/select-control/ButtonGroupControl.js +0 -54
  277. package/dist/esm/select-control/GroupedSelectControl.js +0 -84
  278. package/dist/esm/select-control/index.js +0 -51
  279. package/dist/esm/select-control/style.scss +0 -108
  280. package/dist/esm/settings/MinMaxSetting.js +0 -53
  281. package/dist/esm/settings/SettingsCard.js +0 -39
  282. package/dist/esm/settings/SettingsSection.js +0 -30
  283. package/dist/esm/settings/index.js +0 -9
  284. package/dist/esm/settings/style.scss +0 -106
  285. package/dist/esm/steps-list/index.js +0 -43
  286. package/dist/esm/steps-list-item/index.js +0 -48
  287. package/dist/esm/steps-list-item/style.scss +0 -47
  288. package/dist/esm/style-card/index.js +0 -76
  289. package/dist/esm/tabbed-navigation/index.js +0 -56
  290. package/dist/esm/tabbed-navigation/style.scss +0 -86
  291. package/dist/esm/text-control/index.js +0 -66
  292. package/dist/esm/text-control/style.scss +0 -32
  293. package/dist/esm/utils/index.js +0 -32
  294. package/dist/esm/waiting/index.js +0 -44
  295. package/dist/esm/waiting/style.scss +0 -27
  296. package/dist/esm/web-preview/index.js +0 -184
  297. package/dist/esm/web-preview/style.scss +0 -155
  298. package/dist/esm/with-wizard/index.js +0 -313
  299. package/dist/esm/with-wizard-screen/index.js +0 -116
  300. package/dist/esm/wizard/components/WizardError.js +0 -69
  301. package/dist/esm/wizard/index.js +0 -126
  302. package/dist/esm/wizard/store/index.js +0 -155
  303. package/dist/esm/wizard/store/utils.js +0 -17
  304. package/src/grid/index.js +0 -44
  305. package/src/text-control/index.js +0 -56
  306. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  307. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  308. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
@@ -1,189 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _element = require("@wordpress/element");
10
- var _i18n = require("@wordpress/i18n");
11
- var _icons = require("@wordpress/icons");
12
- var _components = require("@wordpress/components");
13
- var _ = require("../");
14
- require("./style.scss");
15
- var _classnames = _interopRequireDefault(require("classnames"));
16
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
17
- /**
18
- * WordPress dependencies.
19
- */
20
- const __ = _i18n.__;
21
- /**
22
- * Internal dependencies.
23
- */
24
- /**
25
- * External dependencies.
26
- */
27
- const PORTAL_PARENT_ID = 'newspack-components-web-preview-wrapper';
28
-
29
- /**
30
- * Web Preview. A component to preview a website in an iframe, with device sizing options.
31
- */
32
- class WebPreview extends _element.Component {
33
- constructor(props) {
34
- super(props);
35
- (0, _defineProperty2.default)(this, "state", {
36
- device: 'desktop',
37
- loaded: false,
38
- isPreviewVisible: false
39
- });
40
- /**
41
- * Create JSX for the modal
42
- */
43
- (0, _defineProperty2.default)(this, "getWebPreviewModal", () => {
44
- const {
45
- beforeLoad = () => {},
46
- onClose = () => {},
47
- url
48
- } = this.props;
49
- const {
50
- device,
51
- loaded,
52
- isPreviewVisible
53
- } = this.state;
54
- if (!this.modalDOMElement || !isPreviewVisible) {
55
- return null;
56
- }
57
- const classes = (0, _classnames.default)('newspack-web-preview', device, loaded && 'is-loaded');
58
- beforeLoad();
59
- return (0, _element.createPortal)((0, _jsxRuntime.jsx)("div", {
60
- className: classes,
61
- children: (0, _jsxRuntime.jsxs)("div", {
62
- className: "newspack-web-preview__interior",
63
- children: [(0, _jsxRuntime.jsxs)("div", {
64
- className: "newspack-web-preview__toolbar",
65
- children: [(0, _jsxRuntime.jsx)("div", {
66
- className: "newspack-web-preview__toolbar-left",
67
- children: (0, _jsxRuntime.jsxs)(_components.ButtonGroup, {
68
- children: [(0, _jsxRuntime.jsx)(_components.Button, {
69
- onClick: () => this.setState({
70
- device: 'desktop'
71
- }),
72
- variant: 'desktop' === device && 'primary',
73
- icon: _icons.desktop,
74
- label: __('Preview Desktop Size', 'newspack')
75
- }), (0, _jsxRuntime.jsx)(_components.Button, {
76
- onClick: () => this.setState({
77
- device: 'tablet'
78
- }),
79
- variant: 'tablet' === device && 'primary',
80
- icon: _icons.tablet,
81
- label: __('Preview Tablet Size', 'newspack')
82
- }), (0, _jsxRuntime.jsx)(_components.Button, {
83
- onClick: () => this.setState({
84
- device: 'phone'
85
- }),
86
- variant: 'phone' === device && 'primary',
87
- icon: _icons.mobile,
88
- label: __('Preview Phone Size', 'newspack')
89
- })]
90
- })
91
- }), (0, _jsxRuntime.jsx)("div", {
92
- className: "newspack-web-preview__toolbar-right",
93
- children: (0, _jsxRuntime.jsx)(_components.Button, {
94
- onClick: () => {
95
- onClose();
96
- this.setState({
97
- isPreviewVisible: false,
98
- loaded: false
99
- });
100
- },
101
- icon: _icons.closeSmall,
102
- label: __('Close Preview', 'newspack')
103
- })
104
- })]
105
- }), (0, _jsxRuntime.jsxs)("div", {
106
- className: "newspack-web-preview__content",
107
- children: [!loaded && (0, _jsxRuntime.jsxs)("div", {
108
- className: "newspack-web-preview__is-waiting",
109
- children: [(0, _jsxRuntime.jsx)(_.Waiting, {
110
- isLeft: true
111
- }), __('Loading…', 'newspack')]
112
- }), (0, _jsxRuntime.jsx)("iframe", {
113
- ref: this.iframeRef,
114
- title: "web-preview",
115
- src: url,
116
- onLoad: () => {
117
- this.setState({
118
- loaded: true
119
- });
120
- this.props.onLoad(this.iframeRef.current);
121
- }
122
- })]
123
- })]
124
- })
125
- }), this.modalDOMElement);
126
- });
127
- (0, _defineProperty2.default)(this, "showPreview", () => {
128
- this.setState({
129
- isPreviewVisible: true
130
- });
131
- });
132
- this.iframeRef = (0, _element.createRef)();
133
- }
134
-
135
- /**
136
- * If a div with id PORTAL_PARENT_ID exists, assign it to class field.
137
- * If not, create it and append to the body.
138
- */
139
- componentDidMount() {
140
- const existingDOMElement = document.getElementById(PORTAL_PARENT_ID);
141
- this.modalDOMElement = existingDOMElement || document.createElement('div');
142
- if (!existingDOMElement) {
143
- this.modalDOMElement.id = PORTAL_PARENT_ID;
144
- document.body.appendChild(this.modalDOMElement);
145
- }
146
- }
147
-
148
- /**
149
- * Add or remove applicable body classes
150
- */
151
- componentDidUpdate() {
152
- if (this.state.isPreviewVisible === true) {
153
- document.body.classList.add('newspack-web-preview--open');
154
- } else {
155
- document.body.classList.remove('newspack-web-preview--open');
156
- }
157
- }
158
- /**
159
- * Render.
160
- */
161
- render() {
162
- const {
163
- label,
164
- variant,
165
- /**
166
- * Inversion of control - let the caller render
167
- * the button that will trigger the modal
168
- */
169
- renderButton
170
- } = this.props;
171
- return (0, _jsxRuntime.jsxs)(_element.Fragment, {
172
- children: [renderButton ? renderButton({
173
- showPreview: this.showPreview
174
- }) : (0, _jsxRuntime.jsx)(_components.Button, {
175
- variant: variant,
176
- onClick: this.showPreview,
177
- tabIndex: "0",
178
- children: label
179
- }), this.getWebPreviewModal()]
180
- });
181
- }
182
- }
183
- WebPreview.defaultProps = {
184
- url: '//newspack.com',
185
- label: __('Preview', 'newspack'),
186
- onLoad: () => {}
187
- };
188
- var _default = WebPreview;
189
- exports.default = _default;
@@ -1,318 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = withWizard;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _element = require("@wordpress/element");
10
- var _i18n = require("@wordpress/i18n");
11
- var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
12
- var _icons = require("@wordpress/icons");
13
- var _ = require("../");
14
- var _router = _interopRequireDefault(require("../proxied-imports/router"));
15
- var _footer = _interopRequireDefault(require("../footer"));
16
- require("./style.scss");
17
- var _jsxRuntime = require("@emotion/react/jsx-runtime");
18
- /**
19
- * WordPress dependencies.
20
- */
21
- const __ = _i18n.__;
22
- /**
23
- * Internal dependencies.
24
- */
25
- const {
26
- Redirect,
27
- Route
28
- } = _router.default;
29
-
30
- /**
31
- * Higher-Order Component to provide plugin management and error handling to Newspack Wizards.
32
- */
33
- function withWizard(WrappedComponent, requiredPlugins) {
34
- return class WrappedWithWizard extends _element.Component {
35
- constructor(props) {
36
- super(props);
37
- (0, _defineProperty2.default)(this, "componentDidMount", () => {
38
- // If there are no requiredPlugins, fire onWizardReady as soon as component mounts.
39
- if (!requiredPlugins) {
40
- const instance = this.wrappedComponentRef.current;
41
- // eslint-disable-next-line no-unused-expressions
42
- instance && instance.onWizardReady && instance.onWizardReady();
43
- }
44
- });
45
- /**
46
- * Set the error. Called by Wizards when an error occurs.
47
- *
48
- * @return {Promise} Resolved after state update
49
- */
50
- (0, _defineProperty2.default)(this, "setError", error => {
51
- return new Promise(resolve => {
52
- this.setState({
53
- error: error || null
54
- }, () => resolve());
55
- });
56
- });
57
- /**
58
- * Render any errors that need rendering.
59
- *
60
- * @return {Component} Error UI
61
- */
62
- (0, _defineProperty2.default)(this, "getError", () => {
63
- const {
64
- error
65
- } = this.state;
66
- if (!error) {
67
- return null;
68
- }
69
- const parsedError = this.parseError(error);
70
- const {
71
- level
72
- } = parsedError;
73
- if ('fatal' === level) {
74
- return this.getFatalError(parsedError);
75
- }
76
- return this.getErrorNotice(parsedError);
77
- });
78
- /**
79
- * Get a notice-level error.
80
- *
81
- * @param {Error} error object already parsed by parseError
82
- * @return {Component} Error notice
83
- */
84
- (0, _defineProperty2.default)(this, "getErrorNotice", error => {
85
- const {
86
- message
87
- } = error;
88
- return (0, _jsxRuntime.jsx)(_.Notice, {
89
- isError: true,
90
- className: "newspack-wizard__above-header",
91
- noticeText: message,
92
- rawHTML: true
93
- });
94
- });
95
- /**
96
- * Get a fatal-level error.
97
- *
98
- * @param {Error} error object already parsed by parseError
99
- * @return {Component} React object
100
- */
101
- (0, _defineProperty2.default)(this, "getFatalError", error => {
102
- const fallbackURL = this.getFallbackURL();
103
- if (!fallbackURL) {
104
- return null;
105
- }
106
- const {
107
- message
108
- } = error;
109
- return (0, _jsxRuntime.jsxs)(_.Modal, {
110
- title: __('Unrecoverable error'),
111
- onRequestClose: () => window.location = fallbackURL,
112
- children: [(0, _jsxRuntime.jsx)(_.Notice, {
113
- noticeText: message,
114
- isError: true,
115
- rawHTML: true
116
- }), (0, _jsxRuntime.jsx)(_.Card, {
117
- buttonsCard: true,
118
- noBorder: true,
119
- className: "justify-end",
120
- children: (0, _jsxRuntime.jsx)(_.Button, {
121
- isPrimary: true,
122
- href: fallbackURL,
123
- children: __('Return to Dashboard', 'newspack')
124
- })
125
- })]
126
- });
127
- });
128
- /**
129
- * Get all the relevant info out of a raw API error response.
130
- *
131
- * @param {Object} error error object
132
- * @return {Object} Error object with relevant fields and defaults
133
- */
134
- (0, _defineProperty2.default)(this, "parseError", error => {
135
- const {
136
- data,
137
- message,
138
- code
139
- } = error;
140
- let level = 'fatal';
141
- if (!!data && 'level' in data) {
142
- level = data.level;
143
- } else if ('rest_invalid_param' === code) {
144
- level = 'notice';
145
- }
146
- return {
147
- message,
148
- level
149
- };
150
- });
151
- /**
152
- * Called when plugin installation is complete. Updates state and calls onWizardReady on the wrapped component.
153
- */
154
- (0, _defineProperty2.default)(this, "pluginInstallationStatus", _ref => {
155
- let {
156
- complete
157
- } = _ref;
158
- if (this.state.loading) {
159
- this.doneLoading();
160
- }
161
- const instance = this.wrappedComponentRef.current;
162
- this.setState({
163
- complete
164
- }, () => {
165
- // eslint-disable-next-line no-unused-expressions
166
- complete && instance && instance.onWizardReady && instance.onWizardReady();
167
- });
168
- });
169
- /**
170
- * Begin loading.
171
- */
172
- (0, _defineProperty2.default)(this, "startLoading", quiet => {
173
- if (quiet) {
174
- this.setState(state => ({
175
- quietLoading: state.quietLoading + 1
176
- }));
177
- } else {
178
- this.setState(state => ({
179
- loading: state.loading + 1
180
- }));
181
- }
182
- });
183
- /**
184
- * End loading.
185
- */
186
- (0, _defineProperty2.default)(this, "doneLoading", quiet => {
187
- if (quiet) {
188
- this.setState(state => ({
189
- quietLoading: state.quietLoading - 1
190
- }));
191
- } else {
192
- this.setState(state => ({
193
- loading: state.loading - 1
194
- }));
195
- }
196
- });
197
- /**
198
- * Replacement for core apiFetch that automatically manages wizard loading UI.
199
- */
200
- (0, _defineProperty2.default)(this, "wizardApiFetch", args => {
201
- const {
202
- quiet
203
- } = args;
204
- this.startLoading(quiet);
205
- return new Promise((resolve, reject) => {
206
- (0, _apiFetch.default)(args).then(response => {
207
- this.doneLoading(quiet);
208
- resolve(response);
209
- }).catch(error => {
210
- this.doneLoading(quiet);
211
- reject(error);
212
- });
213
- });
214
- });
215
- /**
216
- * Render a Route that checks for plugin installation requirements, and redirects to '/' when all are done.
217
- *
218
- * @return {void}
219
- */
220
- (0, _defineProperty2.default)(this, "pluginRequirements", () => {
221
- const {
222
- complete
223
- } = this.state;
224
- /* After all plugins are loaded, redirect to / (this could be configurable) */
225
- if (complete) {
226
- return (0, _jsxRuntime.jsx)(Redirect, {
227
- from: "/plugin-requirements",
228
- to: "/"
229
- });
230
- }
231
- return (0, _jsxRuntime.jsx)(Route, {
232
- path: "/",
233
- render: () => (0, _jsxRuntime.jsxs)(_element.Fragment, {
234
- children: [complete !== null && (0, _jsxRuntime.jsx)("div", {
235
- className: "newspack-wizard__header",
236
- children: (0, _jsxRuntime.jsx)("div", {
237
- className: "newspack-wizard__header__inner",
238
- children: (0, _jsxRuntime.jsxs)("div", {
239
- className: "newspack-wizard__title",
240
- children: [(0, _jsxRuntime.jsx)(_.Button, {
241
- isLink: true,
242
- href: newspack_urls.dashboard,
243
- label: __('Return to Dashboard', 'newspack'),
244
- showTooltip: true,
245
- icon: _icons.home,
246
- iconSize: 36,
247
- children: (0, _jsxRuntime.jsx)(_.NewspackIcon, {
248
- size: 36
249
- })
250
- }), (0, _jsxRuntime.jsx)("div", {
251
- children: (0, _jsxRuntime.jsx)("h2", {
252
- children: requiredPlugins.length > 1 ? __('Required plugins', 'newspack') : __('Required plugin', 'newspack')
253
- })
254
- })]
255
- })
256
- })
257
- }), (0, _jsxRuntime.jsx)("div", {
258
- className: "newspack-wizard newspack-wizard__content",
259
- children: (0, _jsxRuntime.jsx)(_.PluginInstaller, {
260
- plugins: requiredPlugins,
261
- onStatus: status => this.pluginInstallationStatus(status)
262
- })
263
- })]
264
- })
265
- });
266
- });
267
- (0, _defineProperty2.default)(this, "getFallbackURL", () => {
268
- if (typeof newspack_urls !== 'undefined') {
269
- return newspack_urls.dashboard;
270
- }
271
- });
272
- this.state = {
273
- complete: null,
274
- error: null,
275
- loading: requiredPlugins && requiredPlugins.length > 0 ? 1 : 0,
276
- quietLoading: false
277
- };
278
- this.wrappedComponentRef = (0, _element.createRef)();
279
- }
280
- /**
281
- * Render.
282
- */
283
- render() {
284
- const {
285
- simpleFooter
286
- } = this.props;
287
- const {
288
- loading,
289
- quietLoading,
290
- error
291
- } = this.state;
292
- const loadingClasses = [loading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded'];
293
- if (quietLoading) {
294
- loadingClasses.push('newspack-wizard__is-loading-quiet');
295
- }
296
- return (0, _jsxRuntime.jsxs)(_element.Fragment, {
297
- children: [this.getError(), (0, _jsxRuntime.jsx)("div", {
298
- className: loadingClasses.join(' '),
299
- children: (0, _jsxRuntime.jsx)(WrappedComponent, {
300
- pluginRequirements: requiredPlugins && this.pluginRequirements(),
301
- clearError: this.clearError,
302
- getError: this.getError,
303
- errorData: error,
304
- setError: this.setError,
305
- isLoading: loading,
306
- startLoading: this.startLoading,
307
- doneLoading: this.doneLoading,
308
- wizardApiFetch: this.wizardApiFetch,
309
- ref: this.wrappedComponentRef,
310
- ...this.props
311
- })
312
- }), !loading && (0, _jsxRuntime.jsx)(_footer.default, {
313
- simple: simpleFooter
314
- })]
315
- });
316
- }
317
- };
318
- }