@automattic/onboarding 1.0.0

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 (383) hide show
  1. package/README.md +20 -0
  2. package/dist/cjs/action-buttons/index.js +50 -0
  3. package/dist/cjs/action-buttons/index.js.map +1 -0
  4. package/dist/cjs/action-buttons/style.scss +108 -0
  5. package/dist/cjs/cart/create-cart-manager-client.js +30 -0
  6. package/dist/cjs/cart/create-cart-manager-client.js.map +1 -0
  7. package/dist/cjs/cart/index.js +239 -0
  8. package/dist/cjs/cart/index.js.map +1 -0
  9. package/dist/cjs/confetti/index.js +8 -0
  10. package/dist/cjs/confetti/index.js.map +1 -0
  11. package/dist/cjs/feature-icon/index.js +19 -0
  12. package/dist/cjs/feature-icon/index.js.map +1 -0
  13. package/dist/cjs/flow-progress/index.js +14 -0
  14. package/dist/cjs/flow-progress/index.js.map +1 -0
  15. package/dist/cjs/flow-progress/style.scss +5 -0
  16. package/dist/cjs/flow-progress/use-flow-progress.js +92 -0
  17. package/dist/cjs/flow-progress/use-flow-progress.js.map +1 -0
  18. package/dist/cjs/hooray/index.js +12 -0
  19. package/dist/cjs/hooray/index.js.map +1 -0
  20. package/dist/cjs/hooray/style.scss +66 -0
  21. package/dist/cjs/index.js +54 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/intent-screen/index.js +11 -0
  24. package/dist/cjs/intent-screen/index.js.map +1 -0
  25. package/dist/cjs/mshots-image/index.js +234 -0
  26. package/dist/cjs/mshots-image/index.js.map +1 -0
  27. package/dist/cjs/mshots-image/style.scss +43 -0
  28. package/dist/cjs/navigator/hooks/index.js +6 -0
  29. package/dist/cjs/navigator/hooks/index.js.map +1 -0
  30. package/dist/cjs/navigator/hooks/use-navigator-listener.js +16 -0
  31. package/dist/cjs/navigator/hooks/use-navigator-listener.js.map +1 -0
  32. package/dist/cjs/navigator/index.js +18 -0
  33. package/dist/cjs/navigator/index.js.map +1 -0
  34. package/dist/cjs/navigator/navigator-buttons/index.js +23 -0
  35. package/dist/cjs/navigator/navigator-buttons/index.js.map +1 -0
  36. package/dist/cjs/navigator/navigator-buttons/style.scss +47 -0
  37. package/dist/cjs/navigator/navigator-header/index.js +13 -0
  38. package/dist/cjs/navigator/navigator-header/index.js.map +1 -0
  39. package/dist/cjs/navigator/navigator-header/style.scss +45 -0
  40. package/dist/cjs/navigator/navigator-item-group/index.js +10 -0
  41. package/dist/cjs/navigator/navigator-item-group/index.js.map +1 -0
  42. package/dist/cjs/navigator/navigator-item-group/style.scss +28 -0
  43. package/dist/cjs/navigator/navigator-listener/index.js +9 -0
  44. package/dist/cjs/navigator/navigator-listener/index.js.map +1 -0
  45. package/dist/cjs/navigator/navigator-screen/index.js +16 -0
  46. package/dist/cjs/navigator/navigator-screen/index.js.map +1 -0
  47. package/dist/cjs/navigator/navigator-screens/hooks/index.js +8 -0
  48. package/dist/cjs/navigator/navigator-screens/hooks/index.js.map +1 -0
  49. package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-buttons.js +17 -0
  50. package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-buttons.js.map +1 -0
  51. package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-screens.js +14 -0
  52. package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-screens.js.map +1 -0
  53. package/dist/cjs/navigator/navigator-screens/index.js +9 -0
  54. package/dist/cjs/navigator/navigator-screens/index.js.map +1 -0
  55. package/dist/cjs/navigator/navigator-screens/navigator-screens.js +18 -0
  56. package/dist/cjs/navigator/navigator-screens/navigator-screens.js.map +1 -0
  57. package/dist/cjs/navigator/navigator-screens/navigator-screens.scss +60 -0
  58. package/dist/cjs/navigator/navigator-screens/types.js +3 -0
  59. package/dist/cjs/navigator/navigator-screens/types.js.map +1 -0
  60. package/dist/cjs/notice/index.js +12 -0
  61. package/dist/cjs/notice/index.js.map +1 -0
  62. package/dist/cjs/notice/style.scss +19 -0
  63. package/dist/cjs/progress/index.js +11 -0
  64. package/dist/cjs/progress/index.js.map +1 -0
  65. package/dist/cjs/progress/style.scss +34 -0
  66. package/dist/cjs/select-card-checkbox/index.js +17 -0
  67. package/dist/cjs/select-card-checkbox/index.js.map +1 -0
  68. package/dist/cjs/select-card-checkbox/style.scss +30 -0
  69. package/dist/cjs/select-card-radio/index.js +21 -0
  70. package/dist/cjs/select-card-radio/index.js.map +1 -0
  71. package/dist/cjs/select-card-radio/style.scss +44 -0
  72. package/dist/cjs/select-items/index.js +13 -0
  73. package/dist/cjs/select-items/index.js.map +1 -0
  74. package/dist/cjs/select-items/style.scss +96 -0
  75. package/dist/cjs/select-items-alt/index.js +14 -0
  76. package/dist/cjs/select-items-alt/index.js.map +1 -0
  77. package/dist/cjs/select-items-alt/style.scss +72 -0
  78. package/dist/cjs/sensei-logo/index.js +8 -0
  79. package/dist/cjs/sensei-logo/index.js.map +1 -0
  80. package/dist/cjs/setup-tailored-site-after-creation.js +109 -0
  81. package/dist/cjs/setup-tailored-site-after-creation.js.map +1 -0
  82. package/dist/cjs/step-container/index.js +65 -0
  83. package/dist/cjs/step-container/index.js.map +1 -0
  84. package/dist/cjs/step-container/style.scss +304 -0
  85. package/dist/cjs/step-navigation-link/index.js +35 -0
  86. package/dist/cjs/step-navigation-link/index.js.map +1 -0
  87. package/dist/cjs/step-navigation-link/style.scss +42 -0
  88. package/dist/cjs/titles/index.js +13 -0
  89. package/dist/cjs/titles/index.js.map +1 -0
  90. package/dist/cjs/titles/styles.scss +29 -0
  91. package/dist/cjs/upload-and-set-site-logo.js +32 -0
  92. package/dist/cjs/upload-and-set-site-logo.js.map +1 -0
  93. package/dist/cjs/utils/contrastChecker.js +38 -0
  94. package/dist/cjs/utils/contrastChecker.js.map +1 -0
  95. package/dist/cjs/utils/domain-suggester.js +113 -0
  96. package/dist/cjs/utils/domain-suggester.js.map +1 -0
  97. package/dist/cjs/utils/flows.js +218 -0
  98. package/dist/cjs/utils/flows.js.map +1 -0
  99. package/dist/cjs/utils/index.js +13 -0
  100. package/dist/cjs/utils/index.js.map +1 -0
  101. package/dist/cjs/utils/is-domain.js +22 -0
  102. package/dist/cjs/utils/is-domain.js.map +1 -0
  103. package/dist/cjs/utils/use-data-loss-warning.js +20 -0
  104. package/dist/cjs/utils/use-data-loss-warning.js.map +1 -0
  105. package/dist/cjs/videopress-logo/index.js +8 -0
  106. package/dist/cjs/videopress-logo/index.js.map +1 -0
  107. package/dist/esm/action-buttons/index.js +42 -0
  108. package/dist/esm/action-buttons/index.js.map +1 -0
  109. package/dist/esm/action-buttons/style.scss +108 -0
  110. package/dist/esm/cart/create-cart-manager-client.js +27 -0
  111. package/dist/esm/cart/create-cart-manager-client.js.map +1 -0
  112. package/dist/esm/cart/index.js +229 -0
  113. package/dist/esm/cart/index.js.map +1 -0
  114. package/dist/esm/confetti/index.js +6 -0
  115. package/dist/esm/confetti/index.js.map +1 -0
  116. package/dist/esm/feature-icon/index.js +16 -0
  117. package/dist/esm/feature-icon/index.js.map +1 -0
  118. package/dist/esm/flow-progress/index.js +12 -0
  119. package/dist/esm/flow-progress/index.js.map +1 -0
  120. package/dist/esm/flow-progress/style.scss +5 -0
  121. package/dist/esm/flow-progress/use-flow-progress.js +88 -0
  122. package/dist/esm/flow-progress/use-flow-progress.js.map +1 -0
  123. package/dist/esm/hooray/index.js +9 -0
  124. package/dist/esm/hooray/index.js.map +1 -0
  125. package/dist/esm/hooray/style.scss +66 -0
  126. package/dist/esm/index.js +22 -0
  127. package/dist/esm/index.js.map +1 -0
  128. package/dist/esm/intent-screen/index.js +8 -0
  129. package/dist/esm/intent-screen/index.js.map +1 -0
  130. package/dist/esm/mshots-image/index.js +229 -0
  131. package/dist/esm/mshots-image/index.js.map +1 -0
  132. package/dist/esm/mshots-image/style.scss +43 -0
  133. package/dist/esm/navigator/hooks/index.js +2 -0
  134. package/dist/esm/navigator/hooks/index.js.map +1 -0
  135. package/dist/esm/navigator/hooks/use-navigator-listener.js +14 -0
  136. package/dist/esm/navigator/hooks/use-navigator-listener.js.map +1 -0
  137. package/dist/esm/navigator/index.js +8 -0
  138. package/dist/esm/navigator/index.js.map +1 -0
  139. package/dist/esm/navigator/navigator-buttons/index.js +17 -0
  140. package/dist/esm/navigator/navigator-buttons/index.js.map +1 -0
  141. package/dist/esm/navigator/navigator-buttons/style.scss +47 -0
  142. package/dist/esm/navigator/navigator-header/index.js +11 -0
  143. package/dist/esm/navigator/navigator-header/index.js.map +1 -0
  144. package/dist/esm/navigator/navigator-header/style.scss +45 -0
  145. package/dist/esm/navigator/navigator-item-group/index.js +8 -0
  146. package/dist/esm/navigator/navigator-item-group/index.js.map +1 -0
  147. package/dist/esm/navigator/navigator-item-group/style.scss +28 -0
  148. package/dist/esm/navigator/navigator-listener/index.js +7 -0
  149. package/dist/esm/navigator/navigator-listener/index.js.map +1 -0
  150. package/dist/esm/navigator/navigator-screen/index.js +14 -0
  151. package/dist/esm/navigator/navigator-screen/index.js.map +1 -0
  152. package/dist/esm/navigator/navigator-screens/hooks/index.js +3 -0
  153. package/dist/esm/navigator/navigator-screens/hooks/index.js.map +1 -0
  154. package/dist/esm/navigator/navigator-screens/hooks/use-navigator-buttons.js +14 -0
  155. package/dist/esm/navigator/navigator-screens/hooks/use-navigator-buttons.js.map +1 -0
  156. package/dist/esm/navigator/navigator-screens/hooks/use-navigator-screens.js +11 -0
  157. package/dist/esm/navigator/navigator-screens/hooks/use-navigator-screens.js.map +1 -0
  158. package/dist/esm/navigator/navigator-screens/index.js +4 -0
  159. package/dist/esm/navigator/navigator-screens/index.js.map +1 -0
  160. package/dist/esm/navigator/navigator-screens/navigator-screens.js +15 -0
  161. package/dist/esm/navigator/navigator-screens/navigator-screens.js.map +1 -0
  162. package/dist/esm/navigator/navigator-screens/navigator-screens.scss +60 -0
  163. package/dist/esm/navigator/navigator-screens/types.js +2 -0
  164. package/dist/esm/navigator/navigator-screens/types.js.map +1 -0
  165. package/dist/esm/notice/index.js +9 -0
  166. package/dist/esm/notice/index.js.map +1 -0
  167. package/dist/esm/notice/style.scss +19 -0
  168. package/dist/esm/progress/index.js +8 -0
  169. package/dist/esm/progress/index.js.map +1 -0
  170. package/dist/esm/progress/style.scss +34 -0
  171. package/dist/esm/select-card-checkbox/index.js +14 -0
  172. package/dist/esm/select-card-checkbox/index.js.map +1 -0
  173. package/dist/esm/select-card-checkbox/style.scss +30 -0
  174. package/dist/esm/select-card-radio/index.js +15 -0
  175. package/dist/esm/select-card-radio/index.js.map +1 -0
  176. package/dist/esm/select-card-radio/style.scss +44 -0
  177. package/dist/esm/select-items/index.js +10 -0
  178. package/dist/esm/select-items/index.js.map +1 -0
  179. package/dist/esm/select-items/style.scss +96 -0
  180. package/dist/esm/select-items-alt/index.js +11 -0
  181. package/dist/esm/select-items-alt/index.js.map +1 -0
  182. package/dist/esm/select-items-alt/style.scss +72 -0
  183. package/dist/esm/sensei-logo/index.js +6 -0
  184. package/dist/esm/sensei-logo/index.js.map +1 -0
  185. package/dist/esm/setup-tailored-site-after-creation.js +103 -0
  186. package/dist/esm/setup-tailored-site-after-creation.js.map +1 -0
  187. package/dist/esm/step-container/index.js +62 -0
  188. package/dist/esm/step-container/index.js.map +1 -0
  189. package/dist/esm/step-container/style.scss +304 -0
  190. package/dist/esm/step-navigation-link/index.js +32 -0
  191. package/dist/esm/step-navigation-link/index.js.map +1 -0
  192. package/dist/esm/step-navigation-link/style.scss +42 -0
  193. package/dist/esm/titles/index.js +7 -0
  194. package/dist/esm/titles/index.js.map +1 -0
  195. package/dist/esm/titles/styles.scss +29 -0
  196. package/dist/esm/upload-and-set-site-logo.js +27 -0
  197. package/dist/esm/upload-and-set-site-logo.js.map +1 -0
  198. package/dist/esm/utils/contrastChecker.js +33 -0
  199. package/dist/esm/utils/contrastChecker.js.map +1 -0
  200. package/dist/esm/utils/domain-suggester.js +108 -0
  201. package/dist/esm/utils/domain-suggester.js.map +1 -0
  202. package/dist/esm/utils/flows.js +179 -0
  203. package/dist/esm/utils/flows.js.map +1 -0
  204. package/dist/esm/utils/index.js +6 -0
  205. package/dist/esm/utils/index.js.map +1 -0
  206. package/dist/esm/utils/is-domain.js +18 -0
  207. package/dist/esm/utils/is-domain.js.map +1 -0
  208. package/dist/esm/utils/use-data-loss-warning.js +16 -0
  209. package/dist/esm/utils/use-data-loss-warning.js.map +1 -0
  210. package/dist/esm/videopress-logo/index.js +6 -0
  211. package/dist/esm/videopress-logo/index.js.map +1 -0
  212. package/dist/styles/base-styles.scss +7 -0
  213. package/dist/styles/mixins.scss +262 -0
  214. package/dist/styles/variables.scss +26 -0
  215. package/dist/styles/z-index.scss +41 -0
  216. package/dist/tsconfig-cjs.tsbuildinfo +1 -0
  217. package/dist/tsconfig.tsbuildinfo +1 -0
  218. package/dist/types/action-buttons/index.d.ts +17 -0
  219. package/dist/types/action-buttons/index.d.ts.map +1 -0
  220. package/dist/types/cart/create-cart-manager-client.d.ts +3 -0
  221. package/dist/types/cart/create-cart-manager-client.d.ts.map +1 -0
  222. package/dist/types/cart/index.d.ts +47 -0
  223. package/dist/types/cart/index.d.ts.map +1 -0
  224. package/dist/types/confetti/index.d.ts +6 -0
  225. package/dist/types/confetti/index.d.ts.map +1 -0
  226. package/dist/types/feature-icon/index.d.ts +9 -0
  227. package/dist/types/feature-icon/index.d.ts.map +1 -0
  228. package/dist/types/flow-progress/index.d.ts +9 -0
  229. package/dist/types/flow-progress/index.d.ts.map +1 -0
  230. package/dist/types/flow-progress/use-flow-progress.d.ts +11 -0
  231. package/dist/types/flow-progress/use-flow-progress.d.ts.map +1 -0
  232. package/dist/types/hooray/index.d.ts +10 -0
  233. package/dist/types/hooray/index.d.ts.map +1 -0
  234. package/dist/types/index.d.ts +25 -0
  235. package/dist/types/index.d.ts.map +1 -0
  236. package/dist/types/intent-screen/index.d.ts +12 -0
  237. package/dist/types/intent-screen/index.d.ts.map +1 -0
  238. package/dist/types/mshots-image/index.d.ts +21 -0
  239. package/dist/types/mshots-image/index.d.ts.map +1 -0
  240. package/dist/types/navigator/hooks/index.d.ts +3 -0
  241. package/dist/types/navigator/hooks/index.d.ts.map +1 -0
  242. package/dist/types/navigator/hooks/use-navigator-listener.d.ts +4 -0
  243. package/dist/types/navigator/hooks/use-navigator-listener.d.ts.map +1 -0
  244. package/dist/types/navigator/index.d.ts +8 -0
  245. package/dist/types/navigator/index.d.ts.map +1 -0
  246. package/dist/types/navigator/navigator-buttons/index.d.ts +17 -0
  247. package/dist/types/navigator/navigator-buttons/index.d.ts.map +1 -0
  248. package/dist/types/navigator/navigator-header/index.d.ts +12 -0
  249. package/dist/types/navigator/navigator-header/index.d.ts.map +1 -0
  250. package/dist/types/navigator/navigator-item-group/index.d.ts +9 -0
  251. package/dist/types/navigator/navigator-item-group/index.d.ts.map +1 -0
  252. package/dist/types/navigator/navigator-listener/index.d.ts +7 -0
  253. package/dist/types/navigator/navigator-listener/index.d.ts.map +1 -0
  254. package/dist/types/navigator/navigator-screen/index.d.ts +11 -0
  255. package/dist/types/navigator/navigator-screen/index.d.ts.map +1 -0
  256. package/dist/types/navigator/navigator-screens/hooks/index.d.ts +3 -0
  257. package/dist/types/navigator/navigator-screens/hooks/index.d.ts.map +1 -0
  258. package/dist/types/navigator/navigator-screens/hooks/use-navigator-buttons.d.ts +4 -0
  259. package/dist/types/navigator/navigator-screens/hooks/use-navigator-buttons.d.ts.map +1 -0
  260. package/dist/types/navigator/navigator-screens/hooks/use-navigator-screens.d.ts +4 -0
  261. package/dist/types/navigator/navigator-screens/hooks/use-navigator-screens.d.ts.map +1 -0
  262. package/dist/types/navigator/navigator-screens/index.d.ts +4 -0
  263. package/dist/types/navigator/navigator-screens/index.d.ts.map +1 -0
  264. package/dist/types/navigator/navigator-screens/navigator-screens.d.ts +12 -0
  265. package/dist/types/navigator/navigator-screens/navigator-screens.d.ts.map +1 -0
  266. package/dist/types/navigator/navigator-screens/types.d.ts +17 -0
  267. package/dist/types/navigator/navigator-screens/types.d.ts.map +1 -0
  268. package/dist/types/notice/index.d.ts +7 -0
  269. package/dist/types/notice/index.d.ts.map +1 -0
  270. package/dist/types/progress/index.d.ts +10 -0
  271. package/dist/types/progress/index.d.ts.map +1 -0
  272. package/dist/types/select-card-checkbox/index.d.ts +11 -0
  273. package/dist/types/select-card-checkbox/index.d.ts.map +1 -0
  274. package/dist/types/select-card-radio/index.d.ts +22 -0
  275. package/dist/types/select-card-radio/index.d.ts.map +1 -0
  276. package/dist/types/select-items/index.d.ts +25 -0
  277. package/dist/types/select-items/index.d.ts.map +1 -0
  278. package/dist/types/select-items-alt/index.d.ts +19 -0
  279. package/dist/types/select-items-alt/index.d.ts.map +1 -0
  280. package/dist/types/sensei-logo/index.d.ts +8 -0
  281. package/dist/types/sensei-logo/index.d.ts.map +1 -0
  282. package/dist/types/setup-tailored-site-after-creation.d.ts +8 -0
  283. package/dist/types/setup-tailored-site-after-creation.d.ts.map +1 -0
  284. package/dist/types/step-container/index.d.ts +45 -0
  285. package/dist/types/step-container/index.d.ts.map +1 -0
  286. package/dist/types/step-navigation-link/index.d.ts +18 -0
  287. package/dist/types/step-navigation-link/index.d.ts.map +1 -0
  288. package/dist/types/titles/index.d.ts +12 -0
  289. package/dist/types/titles/index.d.ts.map +1 -0
  290. package/dist/types/upload-and-set-site-logo.d.ts +13 -0
  291. package/dist/types/upload-and-set-site-logo.d.ts.map +1 -0
  292. package/dist/types/utils/contrastChecker.d.ts +17 -0
  293. package/dist/types/utils/contrastChecker.d.ts.map +1 -0
  294. package/dist/types/utils/domain-suggester.d.ts +15 -0
  295. package/dist/types/utils/domain-suggester.d.ts.map +1 -0
  296. package/dist/types/utils/flows.d.ts +89 -0
  297. package/dist/types/utils/flows.d.ts.map +1 -0
  298. package/dist/types/utils/index.d.ts +6 -0
  299. package/dist/types/utils/index.d.ts.map +1 -0
  300. package/dist/types/utils/is-domain.d.ts +2 -0
  301. package/dist/types/utils/is-domain.d.ts.map +1 -0
  302. package/dist/types/utils/use-data-loss-warning.d.ts +2 -0
  303. package/dist/types/utils/use-data-loss-warning.d.ts.map +1 -0
  304. package/dist/types/videopress-logo/index.d.ts +8 -0
  305. package/dist/types/videopress-logo/index.d.ts.map +1 -0
  306. package/jest.config.js +5 -0
  307. package/package.json +63 -0
  308. package/src/action-buttons/index.tsx +113 -0
  309. package/src/action-buttons/style.scss +108 -0
  310. package/src/cart/create-cart-manager-client.ts +34 -0
  311. package/src/cart/index.tsx +375 -0
  312. package/src/cart/test/index.ts +172 -0
  313. package/src/confetti/index.tsx +95 -0
  314. package/src/feature-icon/index.tsx +102 -0
  315. package/src/flow-progress/index.tsx +22 -0
  316. package/src/flow-progress/style.scss +5 -0
  317. package/src/flow-progress/use-flow-progress.ts +108 -0
  318. package/src/hooray/index.tsx +34 -0
  319. package/src/hooray/style.scss +66 -0
  320. package/src/index.ts +36 -0
  321. package/src/intent-screen/README.md +12 -0
  322. package/src/intent-screen/index.tsx +26 -0
  323. package/src/intent-screen/test/index.tsx +197 -0
  324. package/src/mshots-image/index.tsx +368 -0
  325. package/src/mshots-image/style.scss +43 -0
  326. package/src/mshots-image/test/mshots-image.tsx +5 -0
  327. package/src/navigator/hooks/index.tsx +2 -0
  328. package/src/navigator/hooks/use-navigator-listener.tsx +18 -0
  329. package/src/navigator/index.ts +7 -0
  330. package/src/navigator/navigator-buttons/index.tsx +58 -0
  331. package/src/navigator/navigator-buttons/style.scss +47 -0
  332. package/src/navigator/navigator-header/index.tsx +40 -0
  333. package/src/navigator/navigator-header/style.scss +45 -0
  334. package/src/navigator/navigator-item-group/index.tsx +23 -0
  335. package/src/navigator/navigator-item-group/style.scss +28 -0
  336. package/src/navigator/navigator-listener/index.tsx +12 -0
  337. package/src/navigator/navigator-screen/index.tsx +24 -0
  338. package/src/navigator/navigator-screens/hooks/index.tsx +2 -0
  339. package/src/navigator/navigator-screens/hooks/use-navigator-buttons.tsx +32 -0
  340. package/src/navigator/navigator-screens/hooks/use-navigator-screens.tsx +57 -0
  341. package/src/navigator/navigator-screens/index.ts +3 -0
  342. package/src/navigator/navigator-screens/navigator-screens.scss +60 -0
  343. package/src/navigator/navigator-screens/navigator-screens.tsx +41 -0
  344. package/src/navigator/navigator-screens/types.ts +15 -0
  345. package/src/notice/index.tsx +16 -0
  346. package/src/notice/style.scss +19 -0
  347. package/src/progress/index.tsx +23 -0
  348. package/src/progress/style.scss +34 -0
  349. package/src/select-card-checkbox/index.tsx +38 -0
  350. package/src/select-card-checkbox/style.scss +30 -0
  351. package/src/select-card-radio/index.tsx +64 -0
  352. package/src/select-card-radio/style.scss +44 -0
  353. package/src/select-card-radio/test/index.tsx +50 -0
  354. package/src/select-items/README.md +13 -0
  355. package/src/select-items/index.tsx +90 -0
  356. package/src/select-items/style.scss +96 -0
  357. package/src/select-items-alt/README.md +13 -0
  358. package/src/select-items-alt/index.tsx +61 -0
  359. package/src/select-items-alt/style.scss +72 -0
  360. package/src/sensei-logo/index.tsx +30 -0
  361. package/src/setup-tailored-site-after-creation.ts +149 -0
  362. package/src/step-container/index.tsx +251 -0
  363. package/src/step-container/style.scss +304 -0
  364. package/src/step-navigation-link/index.tsx +71 -0
  365. package/src/step-navigation-link/style.scss +42 -0
  366. package/src/titles/index.tsx +36 -0
  367. package/src/titles/styles.scss +29 -0
  368. package/src/types.d.ts +1 -0
  369. package/src/upload-and-set-site-logo.ts +38 -0
  370. package/src/utils/contrastChecker.ts +52 -0
  371. package/src/utils/domain-suggester.ts +126 -0
  372. package/src/utils/flows.ts +232 -0
  373. package/src/utils/index.ts +5 -0
  374. package/src/utils/is-domain.ts +18 -0
  375. package/src/utils/test/domain-suggester.ts +87 -0
  376. package/src/utils/use-data-loss-warning.ts +17 -0
  377. package/src/videopress-logo/index.tsx +36 -0
  378. package/styles/base-styles.scss +7 -0
  379. package/styles/mixins.scss +262 -0
  380. package/styles/variables.scss +26 -0
  381. package/styles/z-index.scss +41 -0
  382. package/tsconfig-cjs.json +7 -0
  383. package/tsconfig.json +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-flow-progress.js","sourceRoot":"","sources":["../../../src/flow-progress/use-flow-progress.ts"],"names":[],"mappings":";;;AAAA,0CAQwB;AASxB,MAAM,KAAK,GAAmD;IAC7D,UAAU,EAAE;QACX,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC;QACrB,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;KACZ;IACD,CAAE,wBAAgB,CAAE,EAAE;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;KACZ;IACD,CAAE,4BAAoB,CAAE,EAAE;QACzB,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;KACZ;IACD,CAAE,iBAAS,CAAE,EAAE;QACd,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;KACZ;IACD,UAAU,EAAE;QACX,KAAK,EAAE,CAAC;QACR,eAAe,EAAE,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;KACZ;IACD,CAAE,0BAAkB,CAAE,EAAE;QACvB,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,CAAC;KACb;IACD,CAAE,mCAA2B,CAAE,EAAE;QAChC,UAAU,EAAE,CAAC;KACb;IACD,MAAM,EAAE;QACP,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;KACf;IACD,CAAE,sBAAc,CAAE,EAAE;QACnB,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;KACf;IACD,CAAE,sBAAc,CAAE,EAAE;QACnB,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;KACpB;CACD,CAAC;AAEK,MAAM,eAAe,GAAG,CAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,KAAmB,EAAE,EAAG,EAAE;IAC3F,IAAK,CAAE,QAAQ,IAAI,CAAE,QAAQ,EAAG,CAAC;QAChC,OAAO;IACR,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAE,WAAW,IAAI,QAAQ,CAAE,CAAC;IAE9C,OAAO,CACN,IAAI,IAAI;QACP,QAAQ,EAAE,IAAI,CAAE,QAAQ,CAAE;QAC1B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAE,GAAG,MAAM,CAAC,MAAM,CAAE,IAAI,CAAE,CAAE;KAC3C,CACD,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const clsx_1 = tslib_1.__importDefault(require("clsx"));
6
+ const confetti_1 = tslib_1.__importDefault(require("../confetti"));
7
+ require("./style.scss");
8
+ const Hooray = ({ className, animate = false, children, ...additionalProps }) => {
9
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, clsx_1.default)(`onboarding-hooray`, { 'onboarding-hooray__animate': animate }, className), ...additionalProps, children: [(0, jsx_runtime_1.jsx)(confetti_1.default, {}), children] }));
10
+ };
11
+ exports.default = Hooray;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooray/index.tsx"],"names":[],"mappings":";;;;AAAA,wDAAwB;AAExB,mEAAmC;AAEnC,wBAAsB;AAQtB,MAAM,MAAM,GAAqC,CAAE,EAClD,SAAS,EACT,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,GAAG,eAAe,EAClB,EAAG,EAAE;IACL,OAAO,CACN,iCACC,SAAS,EAAG,IAAA,cAAI,EACf,mBAAmB,EACnB,EAAE,4BAA4B,EAAE,OAAO,EAAE,EACzC,SAAS,CACT,KACI,eAAe,aAEpB,uBAAC,kBAAQ,KAAG,EACV,QAAQ,IACL,CACN,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,66 @@
1
+ @import "@wordpress/base-styles/breakpoints";
2
+ @import "@wordpress/base-styles/mixins";
3
+
4
+ .onboarding-hooray {
5
+ text-align: center;
6
+
7
+ svg {
8
+ max-width: 350px;
9
+ margin-bottom: -20px;
10
+ }
11
+
12
+ .onboarding-title {
13
+ font-size: 3rem;
14
+ color: var(--studio-gray-100);
15
+ margin-bottom: 0.75rem;
16
+
17
+ @media (max-width: 1080px) {
18
+ line-height: 1;
19
+ }
20
+ }
21
+
22
+ .onboarding-subtitle {
23
+ color: var(--studio-gray-50);
24
+ margin-bottom: 1.5em;
25
+ }
26
+
27
+ .components-button.action-buttons__next {
28
+ min-width: 100px;
29
+ padding: 10px 24px !important;
30
+ margin: 0 0.75em 0.75em 0.75em;
31
+ border-radius: 4px;
32
+ }
33
+ }
34
+
35
+ .onboarding-hooray__animate {
36
+ .onboarding-title {
37
+ animation: hooray-fade 0.9s ease-in-out, hooray-jump 0.8s cubic-bezier(0.21, 0.19, 0.24, 0.99);
38
+ }
39
+
40
+ .onboarding-subtitle,
41
+ .components-button.action-buttons__next.is-primary {
42
+ opacity: 0;
43
+ animation: hooray-fade 0.9s ease-in-out 0.8s forwards, hooray-jump 0.8s cubic-bezier(0.21, 0.19, 0.24, 0.99) 0.8s forwards;
44
+ }
45
+ }
46
+
47
+
48
+ @keyframes hooray-fade {
49
+ from {
50
+ opacity: 0;
51
+ }
52
+
53
+ to {
54
+ opacity: 1;
55
+ }
56
+ }
57
+
58
+ @keyframes hooray-jump {
59
+ from {
60
+ transform: translateY(20px);
61
+ }
62
+
63
+ to {
64
+ transform: none;
65
+ }
66
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectCardCheckbox = exports.Notice = exports.MShotsImage = exports.StepNavigationLink = exports.StepContainer = exports.SelectItemsAlt = exports.SelectItems = exports.IntentScreen = exports.Confetti = exports.Hooray = exports.Progress = exports.FeatureIcon = exports.uploadAndSetSiteLogo = exports.base64ImageToBlob = exports.setupSiteAfterCreation = exports.setThemeOnSite = exports.replaceProductsInCart = exports.addProductsToCart = exports.addPlanToCart = exports.createSiteWithCart = exports.ArrowButton = exports.SkipButton = exports.NextButton = exports.BackButton = exports.ActionButtons = exports.useFlowProgress = exports.SubTitle = exports.Title = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var titles_1 = require("./titles");
6
+ Object.defineProperty(exports, "Title", { enumerable: true, get: function () { return titles_1.Title; } });
7
+ Object.defineProperty(exports, "SubTitle", { enumerable: true, get: function () { return titles_1.SubTitle; } });
8
+ var use_flow_progress_1 = require("./flow-progress/use-flow-progress");
9
+ Object.defineProperty(exports, "useFlowProgress", { enumerable: true, get: function () { return use_flow_progress_1.useFlowProgress; } });
10
+ var action_buttons_1 = require("./action-buttons");
11
+ Object.defineProperty(exports, "ActionButtons", { enumerable: true, get: function () { return tslib_1.__importDefault(action_buttons_1).default; } });
12
+ Object.defineProperty(exports, "BackButton", { enumerable: true, get: function () { return action_buttons_1.BackButton; } });
13
+ Object.defineProperty(exports, "NextButton", { enumerable: true, get: function () { return action_buttons_1.NextButton; } });
14
+ Object.defineProperty(exports, "SkipButton", { enumerable: true, get: function () { return action_buttons_1.SkipButton; } });
15
+ Object.defineProperty(exports, "ArrowButton", { enumerable: true, get: function () { return action_buttons_1.ArrowButton; } });
16
+ var cart_1 = require("./cart");
17
+ Object.defineProperty(exports, "createSiteWithCart", { enumerable: true, get: function () { return cart_1.createSiteWithCart; } });
18
+ Object.defineProperty(exports, "addPlanToCart", { enumerable: true, get: function () { return cart_1.addPlanToCart; } });
19
+ Object.defineProperty(exports, "addProductsToCart", { enumerable: true, get: function () { return cart_1.addProductsToCart; } });
20
+ Object.defineProperty(exports, "replaceProductsInCart", { enumerable: true, get: function () { return cart_1.replaceProductsInCart; } });
21
+ Object.defineProperty(exports, "setThemeOnSite", { enumerable: true, get: function () { return cart_1.setThemeOnSite; } });
22
+ var setup_tailored_site_after_creation_1 = require("./setup-tailored-site-after-creation");
23
+ Object.defineProperty(exports, "setupSiteAfterCreation", { enumerable: true, get: function () { return setup_tailored_site_after_creation_1.setupSiteAfterCreation; } });
24
+ Object.defineProperty(exports, "base64ImageToBlob", { enumerable: true, get: function () { return setup_tailored_site_after_creation_1.base64ImageToBlob; } });
25
+ var upload_and_set_site_logo_1 = require("./upload-and-set-site-logo");
26
+ Object.defineProperty(exports, "uploadAndSetSiteLogo", { enumerable: true, get: function () { return upload_and_set_site_logo_1.uploadAndSetSiteLogo; } });
27
+ var feature_icon_1 = require("./feature-icon");
28
+ Object.defineProperty(exports, "FeatureIcon", { enumerable: true, get: function () { return tslib_1.__importDefault(feature_icon_1).default; } });
29
+ var progress_1 = require("./progress");
30
+ Object.defineProperty(exports, "Progress", { enumerable: true, get: function () { return tslib_1.__importDefault(progress_1).default; } });
31
+ var hooray_1 = require("./hooray");
32
+ Object.defineProperty(exports, "Hooray", { enumerable: true, get: function () { return tslib_1.__importDefault(hooray_1).default; } });
33
+ var confetti_1 = require("./confetti");
34
+ Object.defineProperty(exports, "Confetti", { enumerable: true, get: function () { return tslib_1.__importDefault(confetti_1).default; } });
35
+ var intent_screen_1 = require("./intent-screen");
36
+ Object.defineProperty(exports, "IntentScreen", { enumerable: true, get: function () { return tslib_1.__importDefault(intent_screen_1).default; } });
37
+ var select_items_1 = require("./select-items");
38
+ Object.defineProperty(exports, "SelectItems", { enumerable: true, get: function () { return tslib_1.__importDefault(select_items_1).default; } });
39
+ var select_items_alt_1 = require("./select-items-alt");
40
+ Object.defineProperty(exports, "SelectItemsAlt", { enumerable: true, get: function () { return tslib_1.__importDefault(select_items_alt_1).default; } });
41
+ var step_container_1 = require("./step-container");
42
+ Object.defineProperty(exports, "StepContainer", { enumerable: true, get: function () { return tslib_1.__importDefault(step_container_1).default; } });
43
+ var step_navigation_link_1 = require("./step-navigation-link");
44
+ Object.defineProperty(exports, "StepNavigationLink", { enumerable: true, get: function () { return tslib_1.__importDefault(step_navigation_link_1).default; } });
45
+ var mshots_image_1 = require("./mshots-image");
46
+ Object.defineProperty(exports, "MShotsImage", { enumerable: true, get: function () { return tslib_1.__importDefault(mshots_image_1).default; } });
47
+ tslib_1.__exportStar(require("./navigator"), exports);
48
+ var notice_1 = require("./notice");
49
+ Object.defineProperty(exports, "Notice", { enumerable: true, get: function () { return tslib_1.__importDefault(notice_1).default; } });
50
+ var select_card_checkbox_1 = require("./select-card-checkbox");
51
+ Object.defineProperty(exports, "SelectCardCheckbox", { enumerable: true, get: function () { return tslib_1.__importDefault(select_card_checkbox_1).default; } });
52
+ tslib_1.__exportStar(require("./utils"), exports);
53
+ tslib_1.__exportStar(require("./select-card-radio"), exports);
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAA2C;AAAlC,+FAAA,KAAK,OAAA;AAAE,kGAAA,QAAQ,OAAA;AACxB,uEAAoE;AAA3D,oHAAA,eAAe,OAAA;AACxB,mDAM0B;AALzB,wIAAA,OAAO,OAAiB;AACxB,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AACV,6GAAA,WAAW,OAAA;AAEZ,+BAMgB;AALf,0GAAA,kBAAkB,OAAA;AAClB,qGAAA,aAAa,OAAA;AACb,yGAAA,iBAAiB,OAAA;AACjB,6GAAA,qBAAqB,OAAA;AACrB,sGAAA,cAAc,OAAA;AAEf,2FAAiG;AAAxF,4IAAA,sBAAsB,OAAA;AAAE,uIAAA,iBAAiB,OAAA;AAClD,uEAAkE;AAAzD,gIAAA,oBAAoB,OAAA;AAC7B,+CAAwD;AAA/C,oIAAA,OAAO,OAAe;AAC/B,uCAAiD;AAAxC,6HAAA,OAAO,OAAY;AAC5B,mCAA6C;AAApC,yHAAA,OAAO,OAAU;AAC1B,uCAAiD;AAAxC,6HAAA,OAAO,OAAY;AAC5B,iDAA0D;AAAjD,sIAAA,OAAO,OAAgB;AAChC,+CAAwD;AAA/C,oIAAA,OAAO,OAAe;AAC/B,uDAA+D;AAAtD,2IAAA,OAAO,OAAkB;AAClC,mDAA4D;AAAnD,wIAAA,OAAO,OAAiB;AACjC,+DAAuE;AAA9D,mJAAA,OAAO,OAAsB;AACtC,+CAAwD;AAA/C,oIAAA,OAAO,OAAe;AAC/B,sDAA4B;AAC5B,mCAA6C;AAApC,yHAAA,OAAO,OAAU;AAC1B,+DAAuE;AAA9D,mJAAA,OAAO,OAAsB;AACtC,kDAAwB;AACxB,8DAAoC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const select_items_1 = tslib_1.__importDefault(require("../select-items"));
6
+ const select_items_alt_1 = tslib_1.__importDefault(require("../select-items-alt"));
7
+ const IntentScreen = ({ intents, intentsAlt, onSelect, preventWidows, }) => {
8
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(select_items_1.default, { items: intents, onSelect: onSelect, preventWidows: preventWidows }), (0, jsx_runtime_1.jsx)(select_items_alt_1.default, { items: intentsAlt, onSelect: onSelect })] }));
9
+ };
10
+ exports.default = IntentScreen;
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/intent-screen/index.tsx"],"names":[],"mappings":";;;;AACA,2EAA0D;AAC1D,mFAAoE;AASpE,MAAM,YAAY,GAAG,CAAsB,EAC1C,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,GACD,EAAG,EAAE;IACjB,OAAO,CACN,6DACC,uBAAC,sBAAW,IAAC,KAAK,EAAG,OAAO,EAAG,QAAQ,EAAG,QAAQ,EAAG,aAAa,EAAG,aAAa,GAAK,EACvF,uBAAC,0BAAc,IAAC,KAAK,EAAG,UAAU,EAAG,QAAQ,EAAG,QAAQ,GAAK,IAC3D,CACH,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mshotsUrl = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const url_1 = require("@wordpress/url");
7
+ const clsx_1 = tslib_1.__importDefault(require("clsx"));
8
+ const debug_1 = tslib_1.__importDefault(require("debug"));
9
+ const react_1 = require("react");
10
+ require("./style.scss");
11
+ const debug = (0, debug_1.default)('design-picker:mshots-image');
12
+ function mshotsUrl(targetUrl, options, count = 0) {
13
+ const mshotsUrl = 'https://s0.wp.com/mshots/v1/';
14
+ const mshotsRequest = (0, url_1.addQueryArgs)(mshotsUrl + encodeURIComponent(targetUrl), {
15
+ ...options,
16
+ count,
17
+ });
18
+ return mshotsRequest;
19
+ }
20
+ exports.mshotsUrl = mshotsUrl;
21
+ const MAXTRIES = 10;
22
+ // This custom react hook returns null while the image is loading and the page
23
+ // (not image) URL once loading is complete.
24
+ //
25
+ // It also triggers a re-render (via setState()) when the value changes, so just
26
+ // check that the requested URL matches the returned URL.
27
+ //
28
+ // Note the loading may occur immediately if the image is already available, or
29
+ // may take several seconds if mshots has to generate and cache new images.
30
+ //
31
+ // The calling code doesn't need to worry about the details except that you'll
32
+ // want some sort of loading display.
33
+ //
34
+ // Inspired by https://stackoverflow.com/a/60458593
35
+ const useMshotsImg = (src, options, imgRef) => {
36
+ const [loadedImg, setLoadedImg] = (0, react_1.useState)(null);
37
+ const [count, setCount] = (0, react_1.useState)(0);
38
+ const previousSrc = (0, react_1.useRef)(src);
39
+ const timeoutIdRef = (0, react_1.useRef)();
40
+ const previousImg = (0, react_1.useRef)(null);
41
+ const previousOptions = (0, react_1.useRef)();
42
+ // Oddly, we need to assign to current here after ref creation in order to
43
+ // pass the equivalence check and avoid a spurious reset
44
+ previousOptions.current = options;
45
+ // Note: Mshots doesn't care about the "count" param, but it is important
46
+ // to browser caching. Getting this wrong looks like the url resolving
47
+ // before the image is ready.
48
+ (0, react_1.useEffect)(() => {
49
+ // If there's been a "props" change we need to reset everything:
50
+ if (options !== previousOptions.current ||
51
+ (src !== previousSrc.current && imgRef.current)) {
52
+ // Make sure an old image can't trigger a spurious state update
53
+ debug('resetting mShotsUrl request');
54
+ if (src !== previousSrc.current) {
55
+ debug('src changed\nfrom', previousSrc.current, '\nto', src);
56
+ }
57
+ if (options !== previousOptions.current) {
58
+ debug('options changed\nfrom', previousOptions.current, '\nto', options);
59
+ }
60
+ if (previousImg.current && previousImg.current.onload) {
61
+ previousImg.current.onload = null;
62
+ if (timeoutIdRef.current) {
63
+ clearTimeout(timeoutIdRef.current);
64
+ timeoutIdRef.current = undefined;
65
+ }
66
+ }
67
+ setCount(0);
68
+ if (previousImg.current !== imgRef.current) {
69
+ previousImg.current = imgRef.current;
70
+ }
71
+ previousOptions.current = options;
72
+ previousSrc.current = src;
73
+ }
74
+ const srcUrl = mshotsUrl(src, options, count);
75
+ if (imgRef.current) {
76
+ imgRef.current.onload = () => {
77
+ // Detect default image (Don't request a 400x300 image).
78
+ //
79
+ // If this turns out to be a problem, it might help to know that the
80
+ // http request status for the default is a 307. Unfortunately we
81
+ // don't get the request through an img element so we'd need to
82
+ // take a completely different approach using ajax.
83
+ if (imgRef.current?.naturalWidth !== 400 || imgRef.current?.naturalHeight !== 300) {
84
+ setLoadedImg(src);
85
+ }
86
+ else if (count < MAXTRIES) {
87
+ // Only refresh 10 times
88
+ // Triggers a target.src change with increasing timeouts
89
+ timeoutIdRef.current = window.setTimeout(() => setCount((count) => count + 1), count * 500);
90
+ }
91
+ };
92
+ imgRef.current.src = srcUrl;
93
+ }
94
+ return () => {
95
+ if (imgRef.current && imgRef.current.onload) {
96
+ imgRef.current.onload = null;
97
+ }
98
+ if (previousImg.current && previousImg.current.onload) {
99
+ previousImg.current.onload = null;
100
+ }
101
+ clearTimeout(timeoutIdRef.current);
102
+ };
103
+ }, [src, count, options, imgRef]);
104
+ return loadedImg;
105
+ };
106
+ // Temporary for A/B test.
107
+ const useMshotsImgTreatment = (src, options) => {
108
+ const [loadedImg, setLoadedImg] = (0, react_1.useState)();
109
+ const [count, setCount] = (0, react_1.useState)(0);
110
+ const previousSrc = (0, react_1.useRef)(src);
111
+ const imgRef = (0, react_1.useRef)();
112
+ const timeoutIdRef = (0, react_1.useRef)();
113
+ const previousImg = (0, react_1.useRef)();
114
+ const previousOptions = (0, react_1.useRef)();
115
+ // Oddly, we need to assign to current here after ref creation in order to
116
+ // pass the equivalence check and avoid a spurious reset
117
+ previousOptions.current = options;
118
+ // Note: Mshots doesn't care about the "count" param, but it is important
119
+ // to browser caching. Getting this wrong looks like the url resolving
120
+ // before the image is ready.
121
+ (0, react_1.useEffect)(() => {
122
+ // If there's been a "props" change we need to reset everything:
123
+ if (options !== previousOptions.current ||
124
+ (src !== previousSrc.current && imgRef.current)) {
125
+ // Make sure an old image can't trigger a spurious state update
126
+ debug('resetting mShotsUrl request');
127
+ if (src !== previousSrc.current) {
128
+ debug('src changed\nfrom', previousSrc.current, '\nto', src);
129
+ }
130
+ if (options !== previousOptions.current) {
131
+ debug('options changed\nfrom', previousOptions.current, '\nto', options);
132
+ }
133
+ if (previousImg.current && previousImg.current.onload) {
134
+ previousImg.current.onload = null;
135
+ if (timeoutIdRef.current) {
136
+ clearTimeout(timeoutIdRef.current);
137
+ timeoutIdRef.current = undefined;
138
+ }
139
+ }
140
+ setLoadedImg(undefined);
141
+ setCount(0);
142
+ previousImg.current = imgRef.current;
143
+ previousOptions.current = options;
144
+ previousSrc.current = src;
145
+ }
146
+ const srcUrl = mshotsUrl(src, options, count);
147
+ const newImage = new Image();
148
+ newImage.onload = () => {
149
+ // Detect default image (Don't request a 400x300 image).
150
+ //
151
+ // If this turns out to be a problem, it might help to know that the
152
+ // http request status for the default is a 307. Unfortunately we
153
+ // don't get the request through an img element so we'd need to
154
+ // take a completely different approach using ajax.
155
+ if (newImage.naturalWidth !== 400 || newImage.naturalHeight !== 300) {
156
+ // Note we're using the naked object here, not the ref, because
157
+ // this is the callback on the image itself. We'd never want
158
+ // the image to finish loading and set some other image.
159
+ setLoadedImg(newImage);
160
+ }
161
+ else if (count < MAXTRIES) {
162
+ // Only refresh 10 times
163
+ // Triggers a target.src change with increasing timeouts
164
+ timeoutIdRef.current = window.setTimeout(() => setCount((count) => count + 1), count * 500);
165
+ }
166
+ };
167
+ newImage.src = srcUrl;
168
+ imgRef.current = newImage;
169
+ return () => {
170
+ if (imgRef.current && imgRef.current.onload) {
171
+ imgRef.current.onload = null;
172
+ }
173
+ clearTimeout(timeoutIdRef.current);
174
+ };
175
+ }, [src, count, options]);
176
+ return loadedImg;
177
+ };
178
+ const MShotsImageControl = ({ url, 'aria-labelledby': labelledby, alt, options, scrollable = false, }) => {
179
+ const imgRef = (0, react_1.useRef)(null);
180
+ const currentlyLoadedUrl = useMshotsImg(url, options, imgRef);
181
+ const src = imgRef.current?.src || '';
182
+ const visible = src && url === currentlyLoadedUrl;
183
+ const backgroundImage = src && `url( ${src} )`;
184
+ const animationScrollSpeedInPixelsPerSecond = 400;
185
+ const animationDuration = (imgRef.current?.naturalHeight || 600) / animationScrollSpeedInPixelsPerSecond;
186
+ const scrollableStyles = {
187
+ backgroundImage,
188
+ transition: `background-position ${animationDuration}s`,
189
+ };
190
+ const style = {
191
+ ...(scrollable ? scrollableStyles : {}),
192
+ };
193
+ const className = (0, clsx_1.default)('mshots-image__container', scrollable && 'hover-scroll', visible ? 'mshots-image-visible' : 'mshots-image__loader');
194
+ if (options?.oldHighResImageLoading) {
195
+ return scrollable ? ((0, jsx_runtime_1.jsx)("div", { className: className, style: style, "aria-labelledby": labelledby, children: (0, jsx_runtime_1.jsx)("img", { ref: imgRef, className: "mshots-dummy-image", "aria-hidden": "true", alt: "" }) })) : ((0, jsx_runtime_1.jsx)("img", { ref: imgRef, className, style, src, alt, "aria-labelledby": labelledby, alt: alt }));
196
+ } // else, prettier doesn't like having an else after a return
197
+ return scrollable ? ((0, jsx_runtime_1.jsx)("div", { className: className, style: style, "aria-labelledby": labelledby, children: (0, jsx_runtime_1.jsx)("img", { ref: imgRef, loading: "lazy", className: "mshots-dummy-image", "aria-hidden": "true", alt: "" }) })) : ((0, jsx_runtime_1.jsx)("img", { loading: "lazy", ref: imgRef, className, style, src, alt, "aria-labelledby": labelledby, alt: alt }));
198
+ };
199
+ // Temporary for A/B test.
200
+ const MShotsImageTreatment = ({ url, 'aria-labelledby': labelledby, alt, options, scrollable = false, }) => {
201
+ const maybeImage = useMshotsImgTreatment(url, options);
202
+ const src = maybeImage?.src || '';
203
+ const visible = !!src;
204
+ const backgroundImage = maybeImage?.src && `url( ${maybeImage?.src} )`;
205
+ const animationScrollSpeedInPixelsPerSecond = 400;
206
+ const animationDuration = (maybeImage?.naturalHeight || 600) / animationScrollSpeedInPixelsPerSecond;
207
+ const scrollableStyles = {
208
+ backgroundImage,
209
+ transition: `background-position ${animationDuration}s`,
210
+ };
211
+ const style = {
212
+ ...(scrollable ? scrollableStyles : {}),
213
+ };
214
+ const className = (0, clsx_1.default)('mshots-image__container', scrollable && 'hover-scroll', visible ? 'mshots-image-visible' : 'mshots-image__loader');
215
+ // The "! visible" here is only to dodge a particularly specific css
216
+ // rule effecting the placeholder while loading static images:
217
+ // '.design-picker .design-picker__image-frame img { ..., height: auto }'
218
+ return scrollable || !visible ? ((0, jsx_runtime_1.jsx)("div", { className: className, style: style, "aria-labelledby": labelledby })) : ((0, jsx_runtime_1.jsx)("img", { className, style, src, alt, "aria-labelledby": labelledby, alt: alt }));
219
+ };
220
+ // For hover-scroll, we use a div with a background image (rather than an img element)
221
+ // in order to use transitions between `top` and `bottom` on the
222
+ // `background-position` property.
223
+ // The "normal" top & bottom properties are problematic individually because we
224
+ // don't know how big the images will be, and using both gets the
225
+ // right positions but with no transition (as they're different properties).
226
+ const MShotsImage = ({ url, 'aria-labelledby': labelledby, alt, options, scrollable = false, }) => {
227
+ // Return MShotsImageControl or MShotsImageTreatment depending on options.oldHighResImageLoading
228
+ if (options?.oldHighResImageLoading) {
229
+ return ((0, jsx_runtime_1.jsx)(MShotsImageTreatment, { url: url, "aria-labelledby": labelledby, alt: alt, options: options, scrollable: scrollable }));
230
+ }
231
+ return ((0, jsx_runtime_1.jsx)(MShotsImageControl, { url: url, "aria-labelledby": labelledby, alt: alt, options: options, scrollable: scrollable }));
232
+ };
233
+ exports.default = MShotsImage;
234
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mshots-image/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ @import "../../styles/mixins";
2
+
3
+ .mshots-image__loader {
4
+ @include onboarding-placeholder();
5
+ }
6
+
7
+ .mshots-image__container {
8
+ height: 100%;
9
+ }
10
+
11
+ .hover-scroll {
12
+ background-size: 100%;
13
+ background-position: top;
14
+ background-repeat: no-repeat;
15
+ margin-left: auto;
16
+ margin-right: auto;
17
+
18
+ &:hover {
19
+ background-position: bottom;
20
+ }
21
+ }
22
+
23
+ .mshots-image-visible {
24
+ animation: fadein 300ms;
25
+ }
26
+
27
+ // Increase specificity by repeating class name.
28
+ .mshots-dummy-image.mshots-dummy-image {
29
+ position: absolute;
30
+ display: block;
31
+ visibility: hidden;
32
+ height: 0;
33
+ width: 0;
34
+ }
35
+
36
+ @keyframes fadein {
37
+ from {
38
+ opacity: 0;
39
+ }
40
+ to {
41
+ opacity: 1;
42
+ }
43
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useNavigatorListener = void 0;
4
+ var use_navigator_listener_1 = require("./use-navigator-listener");
5
+ Object.defineProperty(exports, "useNavigatorListener", { enumerable: true, get: function () { return __importDefault(use_navigator_listener_1).default; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/navigator/hooks/index.tsx"],"names":[],"mappings":";;;AAAA,mEAA2E;AAAlE,+IAAA,OAAO,OAAwB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const components_1 = require("@wordpress/components");
4
+ const react_1 = require("react");
5
+ const useNavigatorListener = (onNavigatorPathChange) => {
6
+ const { location } = (0, components_1.__experimentalUseNavigator)();
7
+ const previousPathRef = (0, react_1.useRef)('');
8
+ (0, react_1.useEffect)(() => {
9
+ if (location.path && location.path !== previousPathRef.current) {
10
+ onNavigatorPathChange?.(location.path);
11
+ previousPathRef.current = location.path;
12
+ }
13
+ }, [location.path, onNavigatorPathChange]);
14
+ };
15
+ exports.default = useNavigatorListener;
16
+ //# sourceMappingURL=use-navigator-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-navigator-listener.js","sourceRoot":"","sources":["../../../../src/navigator/hooks/use-navigator-listener.tsx"],"names":[],"mappings":";;AAAA,sDAAmF;AACnF,iCAA0C;AAI1C,MAAM,oBAAoB,GAAG,CAAE,qBAA6C,EAAG,EAAE;IAChF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,uCAAY,GAAE,CAAC;IACpC,MAAM,eAAe,GAAG,IAAA,cAAM,EAAE,EAAE,CAAE,CAAC;IAErC,IAAA,iBAAS,EAAE,GAAG,EAAE;QACf,IAAK,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,EAAG,CAAC;YAClE,qBAAqB,EAAE,CAAE,QAAQ,CAAC,IAAI,CAAE,CAAC;YACzC,eAAe,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzC,CAAC;IACF,CAAC,EAAE,CAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAE,CAAE,CAAC;AAC/C,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NavigatorScreen = exports.NavigatorListener = exports.NavigatorItemGroup = exports.NavigatorHeader = exports.NavigatorItem = exports.NavigatorButtonAsItem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./hooks"), exports);
6
+ var navigator_buttons_1 = require("./navigator-buttons");
7
+ Object.defineProperty(exports, "NavigatorButtonAsItem", { enumerable: true, get: function () { return navigator_buttons_1.NavigatorButtonAsItem; } });
8
+ Object.defineProperty(exports, "NavigatorItem", { enumerable: true, get: function () { return navigator_buttons_1.NavigatorItem; } });
9
+ var navigator_header_1 = require("./navigator-header");
10
+ Object.defineProperty(exports, "NavigatorHeader", { enumerable: true, get: function () { return tslib_1.__importDefault(navigator_header_1).default; } });
11
+ var navigator_item_group_1 = require("./navigator-item-group");
12
+ Object.defineProperty(exports, "NavigatorItemGroup", { enumerable: true, get: function () { return tslib_1.__importDefault(navigator_item_group_1).default; } });
13
+ var navigator_listener_1 = require("./navigator-listener");
14
+ Object.defineProperty(exports, "NavigatorListener", { enumerable: true, get: function () { return tslib_1.__importDefault(navigator_listener_1).default; } });
15
+ var navigator_screen_1 = require("./navigator-screen");
16
+ Object.defineProperty(exports, "NavigatorScreen", { enumerable: true, get: function () { return tslib_1.__importDefault(navigator_screen_1).default; } });
17
+ tslib_1.__exportStar(require("./navigator-screens"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/navigator/index.ts"],"names":[],"mappings":";;;;AAAA,kDAAwB;AACxB,yDAA2E;AAAlE,0HAAA,qBAAqB,OAAA;AAAE,kHAAA,aAAa,OAAA;AAC7C,uDAAgE;AAAvD,4IAAA,OAAO,OAAmB;AACnC,+DAAuE;AAA9D,mJAAA,OAAO,OAAsB;AACtC,2DAAoE;AAA3D,gJAAA,OAAO,OAAqB;AACrC,uDAAgE;AAAvD,4IAAA,OAAO,OAAmB;AACnC,8DAAoC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NavigatorButtonAsItem = exports.NavigatorItem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const components_1 = require("@wordpress/components");
7
+ const i18n_1 = require("@wordpress/i18n");
8
+ const icons_1 = require("@wordpress/icons");
9
+ const clsx_1 = tslib_1.__importDefault(require("clsx"));
10
+ require("./style.scss");
11
+ function NavigatorItem({ icon, checked, active, children, ...props }) {
12
+ const content = icon ? ((0, jsx_runtime_1.jsxs)(components_1.__experimentalHStack, { justify: "flex-start", children: [(0, jsx_runtime_1.jsx)(icons_1.Icon, { className: "navigator-item__icon", icon: checked ? icons_1.check : icon, size: 24 }), (0, jsx_runtime_1.jsx)(components_1.FlexItem, { className: "navigator-item__text", display: "flex", isBlock: true, children: children })] })) : ((0, jsx_runtime_1.jsx)(components_1.FlexItem, { display: "flex", isBlock: true, children: children }));
13
+ const forwardIcon = (0, i18n_1.isRTL)() ? icons_1.chevronLeft : icons_1.chevronRight;
14
+ return ((0, jsx_runtime_1.jsx)(components_1.__experimentalItem, { ...props, className: (0, clsx_1.default)('navigator-item', {
15
+ 'navigator-item--active': active,
16
+ }), children: (0, jsx_runtime_1.jsxs)(components_1.__experimentalHStack, { justify: "space-between", children: [content, (0, jsx_runtime_1.jsx)(icons_1.Icon, { icon: forwardIcon, size: 24 })] }) }));
17
+ }
18
+ exports.NavigatorItem = NavigatorItem;
19
+ const NavigatorButtonAsItem = ({ ...props }) => {
20
+ return (0, jsx_runtime_1.jsx)(components_1.__experimentalNavigatorButton, { as: NavigatorItem, ...props });
21
+ };
22
+ exports.NavigatorButtonAsItem = NavigatorButtonAsItem;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/navigator/navigator-buttons/index.tsx"],"names":[],"mappings":";;;;;AAAA,sDAK+B;AAC/B,0CAAwC;AACxC,4CAA0E;AAC1E,wDAAwB;AACxB,wBAAsB;AAetB,SAAgB,aAAa,CAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAsB;IAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CACtB,wBAAC,iCAAM,IAAC,OAAO,EAAC,YAAY,aAC3B,uBAAC,YAAI,IAAC,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAG,OAAO,CAAC,CAAC,CAAC,aAAK,CAAC,CAAC,CAAC,IAAI,EAAG,IAAI,EAAG,EAAE,GAAK,EACrF,uBAAC,qBAAQ,IAAC,SAAS,EAAC,sBAAsB,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,kBAC9D,QAAQ,GACA,IACH,CACT,CAAC,CAAC,CAAC,CACH,uBAAC,qBAAQ,IAAC,OAAO,EAAC,MAAM,EAAC,OAAO,kBAC7B,QAAQ,GACA,CACX,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,YAAK,GAAE,CAAC,CAAC,CAAC,mBAAW,CAAC,CAAC,CAAC,oBAAY,CAAC;IAEzD,OAAO,CACN,uBAAC,+BAAI,OACC,KAAK,EACV,SAAS,EAAG,IAAA,cAAI,EAAE,gBAAgB,EAAE;YACnC,wBAAwB,EAAE,MAAM;SAChC,CAAE,YAEH,wBAAC,iCAAM,IAAC,OAAO,EAAC,eAAe,aAC5B,OAAO,EACT,uBAAC,YAAI,IAAC,IAAI,EAAG,WAAW,EAAG,IAAI,EAAG,EAAE,GAAK,IACjC,GACH,CACP,CAAC;AACH,CAAC;AA7BD,sCA6BC;AAEM,MAAM,qBAAqB,GAAG,CAAE,EAAE,GAAG,KAAK,EAA8B,EAAG,EAAE;IACnF,OAAO,uBAAC,0CAAe,IAAC,EAAE,EAAG,aAAa,KAAQ,KAAK,GAAK,CAAC;AAC9D,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC"}
@@ -0,0 +1,47 @@
1
+ @import "@automattic/typography/styles/fonts";
2
+
3
+ .components-item.navigator-item {
4
+ height: 44px;
5
+ line-height: 44px;
6
+ padding: 0 5px 0 8px;
7
+ margin: 0 -5px 0 -8px;
8
+ font-size: $font-body-small;
9
+ font-weight: 400;
10
+ letter-spacing: -0.15px;
11
+ color: var(--studio-gray-100);
12
+ border: none;
13
+ background: transparent;
14
+ cursor: pointer;
15
+
16
+ svg {
17
+ flex-shrink: 0;
18
+ fill: currentColor;
19
+ }
20
+
21
+ &:hover,
22
+ &:focus-visible {
23
+ color: var(--studio-blue-50);
24
+ }
25
+
26
+ &:focus {
27
+ box-shadow: none;
28
+ }
29
+
30
+ &:focus-visible {
31
+ border-color: var(--color-primary);
32
+ box-shadow: 0 0 0 2px var(--color-primary-light);
33
+ }
34
+
35
+ &:active {
36
+ background-color: var(--studio-blue-0);
37
+ }
38
+
39
+ .navigator-item__text {
40
+ padding-left: 1px;
41
+ }
42
+
43
+ &--active {
44
+ background-color: var(--studio-blue-0);
45
+ color: var(--studio-blue-50);
46
+ }
47
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const components_1 = require("@automattic/components");
5
+ const components_2 = require("@wordpress/components");
6
+ const i18n_calypso_1 = require("i18n-calypso");
7
+ require("./style.scss");
8
+ const NavigatorHeader = ({ title, description, hideBack, onBack }) => {
9
+ const translate = (0, i18n_calypso_1.useTranslate)();
10
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "navigator-header", children: [(0, jsx_runtime_1.jsxs)(components_2.__experimentalHStack, { className: "navigator-header__heading", spacing: 2, justify: "flex-start", children: [!hideBack && ((0, jsx_runtime_1.jsx)(components_2.__experimentalNavigatorBackButton, { as: components_1.Button, title: translate('Back'), borderless: true, "aria-label": translate('Navigate to the previous view'), onClick: onBack, children: (0, jsx_runtime_1.jsx)(components_1.Gridicon, { icon: "chevron-left", size: 16 }) })), (0, jsx_runtime_1.jsx)("h2", { children: title })] }), description && (0, jsx_runtime_1.jsx)("p", { className: "navigator-header__description", children: description })] }));
11
+ };
12
+ exports.default = NavigatorHeader;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/navigator/navigator-header/index.tsx"],"names":[],"mappings":";;;AAAA,uDAA0D;AAC1D,sDAG+B;AAC/B,+CAA6D;AAC7D,wBAAsB;AAStB,MAAM,eAAe,GAAG,CAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAS,EAAG,EAAE;IAC7E,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;IAEjC,OAAO,CACN,iCAAK,SAAS,EAAC,kBAAkB,aAChC,wBAAC,iCAAM,IAAC,SAAS,EAAC,2BAA2B,EAAC,OAAO,EAAG,CAAC,EAAG,OAAO,EAAC,YAAY,aAC7E,CAAE,QAAQ,IAAI,CACf,uBAAC,8CAAmB,IACnB,EAAE,EAAG,mBAAM,EACX,KAAK,EAAG,SAAS,CAAE,MAAM,CAAE,EAC3B,UAAU,sBACG,SAAS,CAAE,+BAA+B,CAAE,EACzD,OAAO,EAAG,MAAM,YAEhB,uBAAC,qBAAQ,IAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAG,EAAE,GAAK,GACvB,CACtB,EACD,yCAAM,KAAK,GAAO,IACV,EACP,WAAW,IAAI,8BAAG,SAAS,EAAC,+BAA+B,YAAG,WAAW,GAAM,IAC5E,CACN,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}