@gem-sdk/core 2.0.0-dev.896 → 2.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 (396) hide show
  1. package/dist/cjs/components/AddOn.js +18 -1
  2. package/dist/cjs/components/ComponentAnimation.js +17 -0
  3. package/dist/cjs/components/ComponentToolbarPreview.js +752 -1
  4. package/dist/cjs/components/ComponentWrapper.js +61 -1
  5. package/dist/cjs/components/ComponentWrapperPreview.js +213 -1
  6. package/dist/cjs/components/Empty.js +7 -1
  7. package/dist/cjs/components/InteractionSuffix.js +42 -0
  8. package/dist/cjs/components/Render.js +75 -1
  9. package/dist/cjs/components/Render.liquid.js +313 -17
  10. package/dist/cjs/components/RenderBlock.js +54 -1
  11. package/dist/cjs/components/RenderCustomCode.js +59 -3
  12. package/dist/cjs/components/RenderPreview.js +67 -1
  13. package/dist/cjs/components/RenderSection.js +23 -1
  14. package/dist/cjs/components/ai-generator/AIContentGenerator.js +252 -1
  15. package/dist/cjs/components/ai-generator/AIGenContentLoading.js +85 -1
  16. package/dist/cjs/components/ai-generator/components/PickProduct.js +220 -1
  17. package/dist/cjs/components/ai-generator/components/ToneAndVoice.js +77 -1
  18. package/dist/cjs/components/ai-generator/hooks/useCheckingProductInside.js +47 -0
  19. package/dist/cjs/components/ai-generator/hooks/useFlipPopup.js +110 -0
  20. package/dist/cjs/components/ai-generator/hooks/useGettingGenerateRequest.js +37 -1
  21. package/dist/cjs/components/ai-generator/hooks/useListenEventGenerate.js +70 -1
  22. package/dist/cjs/components/ai-generator/icons/AIIcon.js +67 -1
  23. package/dist/cjs/components/ai-generator/icons/CloseIcon.js +19 -1
  24. package/dist/cjs/components/ai-generator/icons/DropdownIcon.js +37 -1
  25. package/dist/cjs/components/ai-generator/icons/SearchIcon.js +21 -1
  26. package/dist/cjs/components/ai-generator/icons/ShowMoreIcon.js +21 -1
  27. package/dist/cjs/components/ai-generator/icons/UpgradeIcon.js +27 -0
  28. package/dist/cjs/components/ai-generator/icons/WarningIcon.js +31 -0
  29. package/dist/cjs/components/constant.js +83 -1
  30. package/dist/cjs/components/resize/Resize.js +16 -1
  31. package/dist/cjs/components/resize/Spacing.js +260 -1
  32. package/dist/cjs/components/src/product/helpers/variant-presets.js +56 -1
  33. package/dist/cjs/components/theme-section/CreateThemeSection.js +123 -1
  34. package/dist/cjs/components/theme-section/ThemeSectionStatus.js +45 -1
  35. package/dist/cjs/components/theme-section/ThemeSectionTooltip.js +126 -1
  36. package/dist/cjs/components/toolbar/Tooltip.js +28 -1
  37. package/dist/cjs/contexts/AddonContext.js +36 -1
  38. package/dist/cjs/contexts/ArticleContext.js +39 -1
  39. package/dist/cjs/contexts/ArticleListContext.js +31 -1
  40. package/dist/cjs/contexts/BuilderComponent.js +34 -1
  41. package/dist/cjs/contexts/BuilderContext.js +39 -1
  42. package/dist/cjs/contexts/BuilderPreviewContext.js +486 -1
  43. package/dist/cjs/contexts/CartLineContext.js +29 -1
  44. package/dist/cjs/contexts/CollectionContext.js +38 -1
  45. package/dist/cjs/contexts/ModalContext.js +47 -1
  46. package/dist/cjs/contexts/PageContext.js +104 -1
  47. package/dist/cjs/contexts/ProductContext.js +177 -1
  48. package/dist/cjs/contexts/ProductListContext.js +32 -1
  49. package/dist/cjs/contexts/SectionContext.js +53 -1
  50. package/dist/cjs/contexts/ShopContext.js +107 -1
  51. package/dist/cjs/graphql/fragments/analytic.generated.js +6 -2
  52. package/dist/cjs/graphql/fragments/collection-detail.generated.js +6 -2
  53. package/dist/cjs/graphql/fragments/collection-product.generated.js +6 -2
  54. package/dist/cjs/graphql/fragments/collection.generated.js +6 -2
  55. package/dist/cjs/graphql/fragments/custom-code.generated.js +6 -2
  56. package/dist/cjs/graphql/fragments/custom-font.generated.js +6 -2
  57. package/dist/cjs/graphql/fragments/data-seo.generated.js +6 -2
  58. package/dist/cjs/graphql/fragments/media.generated.js +6 -2
  59. package/dist/cjs/graphql/fragments/preview-theme-page.generated.js +39 -0
  60. package/dist/cjs/graphql/fragments/product-little.generated.js +7 -2
  61. package/dist/cjs/graphql/fragments/product-option-value.generated.js +6 -2
  62. package/dist/cjs/graphql/fragments/product-option.generated.js +6 -2
  63. package/dist/cjs/graphql/fragments/product.generated.js +6 -2
  64. package/dist/cjs/graphql/fragments/published-custom-section.generated.js +6 -2
  65. package/dist/cjs/graphql/fragments/published-page-section.generated.js +6 -2
  66. package/dist/cjs/graphql/fragments/published-theme-page.generated.js +10 -28
  67. package/dist/cjs/graphql/fragments/published-theme-style.generated.js +6 -2
  68. package/dist/cjs/graphql/fragments/selected-option.generated.js +6 -2
  69. package/dist/cjs/graphql/fragments/variant.generated.js +6 -2
  70. package/dist/cjs/graphql/mutations/page-view-up.generated.js +8 -4
  71. package/dist/cjs/graphql/queries/articles.generated.js +61 -0
  72. package/dist/cjs/graphql/queries/blogs.generated.js +69 -0
  73. package/dist/cjs/graphql/queries/collection-detail-filter.generated.js +16 -2
  74. package/dist/cjs/graphql/queries/collection.generated.js +14 -2
  75. package/dist/cjs/graphql/queries/collections.generated.js +9 -2
  76. package/dist/cjs/graphql/queries/preview-page.generated.js +16 -8
  77. package/dist/cjs/graphql/queries/product-little-detail.generated.js +11 -2
  78. package/dist/cjs/graphql/queries/product-medias.generated.js +8 -2
  79. package/dist/cjs/graphql/queries/product-value-label.generated.js +6 -2
  80. package/dist/cjs/graphql/queries/product-variants.generated.js +10 -2
  81. package/dist/cjs/graphql/queries/products.generated.js +17 -3
  82. package/dist/cjs/graphql/queries/published-shop-metas.js +15 -0
  83. package/dist/cjs/graphql/queries/published-theme-pages.generated.js +15 -2
  84. package/dist/cjs/graphql/queries/store-property.generated.js +6 -2
  85. package/dist/cjs/graphql-app-api/queries/LibrarySaleFunnelDiscount.generated.js +6 -2
  86. package/dist/cjs/graphql-app-api/queries/LibraryTemplate.generated.js +6 -2
  87. package/dist/cjs/graphql-app-api/queries/SaleFunnelDiscounts.generated.js +6 -2
  88. package/dist/cjs/graphql-app-api/queries/ShopLibraryPage.generated.js +17 -0
  89. package/dist/cjs/graphql-app-api/queries/ThemePage.generated.js +6 -2
  90. package/dist/cjs/helpers/GlobalEvent.js +19 -1
  91. package/dist/cjs/helpers/align.js +19 -0
  92. package/dist/cjs/helpers/animations.js +222 -1
  93. package/dist/cjs/helpers/background.js +235 -1
  94. package/dist/cjs/helpers/borders.js +198 -4
  95. package/dist/cjs/helpers/carousel.js +55 -1
  96. package/dist/cjs/helpers/clone-deep.js +5 -1
  97. package/dist/cjs/helpers/cls.js +16 -1
  98. package/dist/cjs/helpers/colors.js +184 -1
  99. package/dist/cjs/helpers/compose-advance-style.js +327 -1
  100. package/dist/cjs/helpers/constant.js +23 -1
  101. package/dist/cjs/helpers/convert.js +7 -1
  102. package/dist/cjs/helpers/covert-entities-html.js +19 -1
  103. package/dist/cjs/helpers/css-variable.js +7 -1
  104. package/dist/cjs/helpers/email.js +11 -1
  105. package/dist/cjs/helpers/filter-toolbar-preview.js +14 -1
  106. package/dist/cjs/helpers/flatten-connection.js +9 -1
  107. package/dist/cjs/helpers/get-resonsive-value.js +36 -1
  108. package/dist/cjs/helpers/get-shortname.js +92 -1
  109. package/dist/cjs/helpers/icon-list.js +61 -1
  110. package/dist/cjs/helpers/interaction/index.js +134 -0
  111. package/dist/cjs/helpers/is-browser.js +9 -1
  112. package/dist/cjs/helpers/is-defined.js +7 -1
  113. package/dist/cjs/helpers/is-empty-children.js +15 -1
  114. package/dist/cjs/helpers/is-safari.js +9 -1
  115. package/dist/cjs/helpers/layout.js +59 -1
  116. package/dist/cjs/helpers/load-script.js +31 -1
  117. package/dist/cjs/helpers/loop-component.js +16 -0
  118. package/dist/cjs/helpers/make-style.js +163 -1
  119. package/dist/cjs/helpers/normalize-builder-data.js +23 -1
  120. package/dist/cjs/helpers/pascal-to-kebab-case.js +7 -0
  121. package/dist/cjs/helpers/prefetch-queries.js +78 -1
  122. package/dist/cjs/helpers/product.js +48 -1
  123. package/dist/cjs/helpers/queries/get-collection.js +226 -1
  124. package/dist/cjs/helpers/queries/get-collections.js +21 -1
  125. package/dist/cjs/helpers/queries/get-product-by-slug.js +125 -1
  126. package/dist/cjs/helpers/queries/get-product.js +154 -1
  127. package/dist/cjs/helpers/queries/get-products.js +214 -1
  128. package/dist/cjs/helpers/query.js +29 -1
  129. package/dist/cjs/helpers/radius.js +140 -6
  130. package/dist/cjs/helpers/render.js +78 -1
  131. package/dist/cjs/helpers/shadow.js +69 -1
  132. package/dist/cjs/helpers/size.js +206 -4
  133. package/dist/cjs/helpers/spacing.js +43 -1
  134. package/dist/cjs/helpers/third-party/addAppBlockId.js +20 -0
  135. package/dist/cjs/helpers/third-party/appConfig.js +234 -0
  136. package/dist/cjs/helpers/third-party/appSetting.js +661 -0
  137. package/dist/cjs/helpers/third-party/composeAppBlockId.js +11 -0
  138. package/dist/cjs/helpers/third-party/constant.js +43 -0
  139. package/dist/cjs/helpers/third-party/generateAppBlockConfigs.js +34 -0
  140. package/dist/cjs/helpers/third-party/getAppBlockConfig.js +47 -0
  141. package/dist/cjs/helpers/third-party/getAppBlockType.js +12 -0
  142. package/dist/cjs/helpers/third-party/getAppBlocks.js +30 -0
  143. package/dist/cjs/helpers/third-party/mergeBlock.js +19 -0
  144. package/dist/cjs/helpers/third-party/mergeBlockOrder.js +47 -0
  145. package/dist/cjs/helpers/third-party/removeGPAppItems.js +18 -0
  146. package/dist/cjs/helpers/tracking/fpixel.js +28 -1
  147. package/dist/cjs/helpers/tracking/gtag.js +93 -1
  148. package/dist/cjs/helpers/tracking/tiktokpixel.js +17 -1
  149. package/dist/cjs/helpers/typography.js +160 -17
  150. package/dist/cjs/helpers/variant.js +11 -1
  151. package/dist/cjs/hooks/animation/useAnimationActions.js +39 -1
  152. package/dist/cjs/hooks/animation/useAnimationConfig.js +30 -1
  153. package/dist/cjs/hooks/animation/useAnimationPreview.js +31 -1
  154. package/dist/cjs/hooks/animation/useAnimationTarget.js +122 -1
  155. package/dist/cjs/hooks/animation/useApplyAnimation.js +89 -1
  156. package/dist/cjs/hooks/articles/useArticlesQuery.js +33 -1
  157. package/dist/cjs/hooks/cart/use-add-to-cart.js +20 -1
  158. package/dist/cjs/hooks/cart/use-cart-data.js +28 -1
  159. package/dist/cjs/hooks/cart/use-cart-discount-codes-update.js +20 -1
  160. package/dist/cjs/hooks/cart/use-cart-note-update.js +20 -1
  161. package/dist/cjs/hooks/cart/use-create-cart.js +22 -1
  162. package/dist/cjs/hooks/cart/use-remove-cart-item.js +20 -1
  163. package/dist/cjs/hooks/cart/use-update-cart-item.js +20 -1
  164. package/dist/cjs/hooks/shop/use-collection-query.js +22 -1
  165. package/dist/cjs/hooks/shop/use-collections-query.js +17 -1
  166. package/dist/cjs/hooks/shop/use-product-query.js +22 -1
  167. package/dist/cjs/hooks/shop/use-products-query.js +63 -1
  168. package/dist/cjs/hooks/shop.js +126 -1
  169. package/dist/cjs/hooks/use-current-device.js +30 -1
  170. package/dist/cjs/hooks/use-lazy-video.js +15 -1
  171. package/dist/cjs/hooks/useAnimations.js +29 -1
  172. package/dist/cjs/hooks/useCartId.js +44 -1
  173. package/dist/cjs/hooks/useCartLine.js +11 -1
  174. package/dist/cjs/hooks/useCartUI.js +48 -1
  175. package/dist/cjs/hooks/useCollection.js +9 -1
  176. package/dist/cjs/hooks/useFetchHandle.js +13 -1
  177. package/dist/cjs/hooks/useFormatMoney.js +75 -1
  178. package/dist/cjs/hooks/useInitialSwatchesOptions.js +128 -1
  179. package/dist/cjs/hooks/useInteraction.js +19 -0
  180. package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +10 -1
  181. package/dist/cjs/hooks/useLoadScript.js +32 -1
  182. package/dist/cjs/hooks/useMoney.js +84 -1
  183. package/dist/cjs/hooks/usePrevious.js +19 -1
  184. package/dist/cjs/hooks/useProduct.js +245 -1
  185. package/dist/cjs/hooks/useProductList.js +21 -1
  186. package/dist/cjs/hooks/useSuspenseFetch.js +27 -1
  187. package/dist/cjs/hooks/useSwatchesOptions.js +41 -1
  188. package/dist/cjs/hooks/useToolbarPostPurchase.js +89 -1
  189. package/dist/cjs/index.js +416 -1
  190. package/dist/cjs/types/animations.js +49 -1
  191. package/dist/cjs/types/appAPI.js +2 -1
  192. package/dist/cjs/types/custom.js +52 -0
  193. package/dist/cjs/types/global-style.js +15 -1
  194. package/dist/cjs/types/shop.js +2 -1
  195. package/dist/cjs/web-components/src/helpers/styles/constant.js +9 -1
  196. package/dist/esm/components/AddOn.js +14 -1
  197. package/dist/esm/components/ComponentAnimation.js +13 -0
  198. package/dist/esm/components/ComponentToolbarPreview.js +748 -1
  199. package/dist/esm/components/ComponentWrapper.js +57 -1
  200. package/dist/esm/components/ComponentWrapperPreview.js +209 -1
  201. package/dist/esm/components/Empty.js +3 -1
  202. package/dist/esm/components/InteractionSuffix.js +40 -0
  203. package/dist/esm/components/Render.js +71 -1
  204. package/dist/esm/components/Render.liquid.js +307 -17
  205. package/dist/esm/components/RenderBlock.js +50 -1
  206. package/dist/esm/components/RenderCustomCode.js +55 -3
  207. package/dist/esm/components/RenderPreview.js +63 -1
  208. package/dist/esm/components/RenderSection.js +19 -1
  209. package/dist/esm/components/ai-generator/AIContentGenerator.js +250 -1
  210. package/dist/esm/components/ai-generator/AIGenContentLoading.js +83 -1
  211. package/dist/esm/components/ai-generator/components/PickProduct.js +218 -1
  212. package/dist/esm/components/ai-generator/components/ToneAndVoice.js +75 -1
  213. package/dist/esm/components/ai-generator/hooks/useCheckingProductInside.js +45 -0
  214. package/dist/esm/components/ai-generator/hooks/useFlipPopup.js +108 -0
  215. package/dist/esm/components/ai-generator/hooks/useGettingGenerateRequest.js +35 -1
  216. package/dist/esm/components/ai-generator/hooks/useListenEventGenerate.js +68 -1
  217. package/dist/esm/components/ai-generator/icons/AIIcon.js +65 -1
  218. package/dist/esm/components/ai-generator/icons/CloseIcon.js +17 -1
  219. package/dist/esm/components/ai-generator/icons/DropdownIcon.js +34 -1
  220. package/dist/esm/components/ai-generator/icons/SearchIcon.js +19 -1
  221. package/dist/esm/components/ai-generator/icons/ShowMoreIcon.js +19 -1
  222. package/dist/esm/components/ai-generator/icons/UpgradeIcon.js +25 -0
  223. package/dist/esm/components/ai-generator/icons/WarningIcon.js +29 -0
  224. package/dist/esm/components/constant.js +76 -1
  225. package/dist/esm/components/resize/Resize.js +12 -1
  226. package/dist/esm/components/resize/Spacing.js +256 -1
  227. package/dist/esm/components/src/product/helpers/variant-presets.js +54 -1
  228. package/dist/esm/components/theme-section/CreateThemeSection.js +121 -1
  229. package/dist/esm/components/theme-section/ThemeSectionStatus.js +43 -1
  230. package/dist/esm/components/theme-section/ThemeSectionTooltip.js +124 -1
  231. package/dist/esm/components/toolbar/Tooltip.js +24 -1
  232. package/dist/esm/contexts/AddonContext.js +32 -1
  233. package/dist/esm/contexts/ArticleContext.js +36 -1
  234. package/dist/esm/contexts/ArticleListContext.js +27 -1
  235. package/dist/esm/contexts/BuilderComponent.js +31 -1
  236. package/dist/esm/contexts/BuilderContext.js +36 -1
  237. package/dist/esm/contexts/BuilderPreviewContext.js +483 -1
  238. package/dist/esm/contexts/CartLineContext.js +26 -1
  239. package/dist/esm/contexts/CollectionContext.js +35 -1
  240. package/dist/esm/contexts/ModalContext.js +44 -1
  241. package/dist/esm/contexts/PageContext.js +101 -1
  242. package/dist/esm/contexts/ProductContext.js +174 -1
  243. package/dist/esm/contexts/ProductListContext.js +28 -1
  244. package/dist/esm/contexts/SectionContext.js +49 -1
  245. package/dist/esm/contexts/ShopContext.js +104 -1
  246. package/dist/esm/graphql/fragments/analytic.generated.js +4 -2
  247. package/dist/esm/graphql/fragments/collection-detail.generated.js +4 -2
  248. package/dist/esm/graphql/fragments/collection-product.generated.js +4 -2
  249. package/dist/esm/graphql/fragments/collection.generated.js +4 -2
  250. package/dist/esm/graphql/fragments/custom-code.generated.js +4 -2
  251. package/dist/esm/graphql/fragments/custom-font.generated.js +4 -2
  252. package/dist/esm/graphql/fragments/data-seo.generated.js +4 -2
  253. package/dist/esm/graphql/fragments/media.generated.js +4 -2
  254. package/dist/esm/graphql/fragments/preview-theme-page.generated.js +37 -0
  255. package/dist/esm/graphql/fragments/product-little.generated.js +5 -2
  256. package/dist/esm/graphql/fragments/product-option-value.generated.js +4 -2
  257. package/dist/esm/graphql/fragments/product-option.generated.js +4 -2
  258. package/dist/esm/graphql/fragments/product.generated.js +4 -2
  259. package/dist/esm/graphql/fragments/published-custom-section.generated.js +4 -2
  260. package/dist/esm/graphql/fragments/published-page-section.generated.js +4 -2
  261. package/dist/esm/graphql/fragments/published-theme-page.generated.js +8 -28
  262. package/dist/esm/graphql/fragments/published-theme-style.generated.js +4 -2
  263. package/dist/esm/graphql/fragments/selected-option.generated.js +4 -2
  264. package/dist/esm/graphql/fragments/variant.generated.js +4 -2
  265. package/dist/esm/graphql/mutations/page-view-up.generated.js +6 -4
  266. package/dist/esm/graphql/queries/articles.generated.js +59 -0
  267. package/dist/esm/graphql/queries/blogs.generated.js +67 -0
  268. package/dist/esm/graphql/queries/collection-detail-filter.generated.js +22 -10
  269. package/dist/esm/graphql/queries/collection.generated.js +18 -8
  270. package/dist/esm/graphql/queries/collections.generated.js +8 -3
  271. package/dist/esm/graphql/queries/preview-page.generated.js +16 -10
  272. package/dist/esm/graphql/queries/product-little-detail.generated.js +12 -5
  273. package/dist/esm/graphql/queries/product-medias.generated.js +6 -2
  274. package/dist/esm/graphql/queries/product-value-label.generated.js +4 -2
  275. package/dist/esm/graphql/queries/product-variants.generated.js +10 -4
  276. package/dist/esm/graphql/queries/products.generated.js +20 -9
  277. package/dist/esm/graphql/queries/published-shop-metas.js +13 -0
  278. package/dist/esm/graphql/queries/published-theme-pages.generated.js +20 -9
  279. package/dist/esm/graphql/queries/store-property.generated.js +4 -2
  280. package/dist/esm/graphql-app-api/queries/LibrarySaleFunnelDiscount.generated.js +4 -2
  281. package/dist/esm/graphql-app-api/queries/LibraryTemplate.generated.js +4 -2
  282. package/dist/esm/graphql-app-api/queries/SaleFunnelDiscounts.generated.js +4 -2
  283. package/dist/esm/graphql-app-api/queries/ShopLibraryPage.generated.js +15 -0
  284. package/dist/esm/graphql-app-api/queries/ThemePage.generated.js +4 -2
  285. package/dist/esm/helpers/GlobalEvent.js +15 -1
  286. package/dist/esm/helpers/align.js +17 -0
  287. package/dist/esm/helpers/animations.js +220 -1
  288. package/dist/esm/helpers/background.js +226 -1
  289. package/dist/esm/helpers/borders.js +189 -4
  290. package/dist/esm/helpers/carousel.js +51 -1
  291. package/dist/esm/helpers/clone-deep.js +3 -1
  292. package/dist/esm/helpers/cls.js +14 -1
  293. package/dist/esm/helpers/colors.js +169 -1
  294. package/dist/esm/helpers/compose-advance-style.js +319 -1
  295. package/dist/esm/helpers/constant.js +19 -1
  296. package/dist/esm/helpers/convert.js +4 -1
  297. package/dist/esm/helpers/covert-entities-html.js +17 -1
  298. package/dist/esm/helpers/css-variable.js +5 -1
  299. package/dist/esm/helpers/email.js +6 -1
  300. package/dist/esm/helpers/filter-toolbar-preview.js +9 -1
  301. package/dist/esm/helpers/flatten-connection.js +7 -1
  302. package/dist/esm/helpers/get-resonsive-value.js +31 -1
  303. package/dist/esm/helpers/get-shortname.js +90 -1
  304. package/dist/esm/helpers/icon-list.js +58 -1
  305. package/dist/esm/helpers/interaction/index.js +132 -0
  306. package/dist/esm/helpers/is-browser.js +5 -1
  307. package/dist/esm/helpers/is-defined.js +5 -1
  308. package/dist/esm/helpers/is-empty-children.js +10 -1
  309. package/dist/esm/helpers/is-safari.js +5 -1
  310. package/dist/esm/helpers/layout.js +54 -1
  311. package/dist/esm/helpers/load-script.js +29 -1
  312. package/dist/esm/helpers/loop-component.js +14 -0
  313. package/dist/esm/helpers/make-style.js +149 -1
  314. package/dist/esm/helpers/normalize-builder-data.js +21 -1
  315. package/dist/esm/helpers/pascal-to-kebab-case.js +5 -0
  316. package/dist/esm/helpers/prefetch-queries.js +76 -1
  317. package/dist/esm/helpers/product.js +44 -1
  318. package/dist/esm/helpers/queries/get-collection.js +223 -1
  319. package/dist/esm/helpers/queries/get-collections.js +19 -1
  320. package/dist/esm/helpers/queries/get-product-by-slug.js +123 -1
  321. package/dist/esm/helpers/queries/get-product.js +150 -1
  322. package/dist/esm/helpers/queries/get-products.js +210 -1
  323. package/dist/esm/helpers/query.js +25 -1
  324. package/dist/esm/helpers/radius.js +132 -6
  325. package/dist/esm/helpers/render.js +70 -1
  326. package/dist/esm/helpers/shadow.js +63 -1
  327. package/dist/esm/helpers/size.js +192 -4
  328. package/dist/esm/helpers/spacing.js +40 -1
  329. package/dist/esm/helpers/third-party/addAppBlockId.js +18 -0
  330. package/dist/esm/helpers/third-party/appConfig.js +200 -0
  331. package/dist/esm/helpers/third-party/appSetting.js +658 -0
  332. package/dist/esm/helpers/third-party/composeAppBlockId.js +9 -0
  333. package/dist/esm/helpers/third-party/constant.js +40 -0
  334. package/dist/esm/helpers/third-party/generateAppBlockConfigs.js +32 -0
  335. package/dist/esm/helpers/third-party/getAppBlockConfig.js +45 -0
  336. package/dist/esm/helpers/third-party/getAppBlockType.js +10 -0
  337. package/dist/esm/helpers/third-party/getAppBlocks.js +28 -0
  338. package/dist/esm/helpers/third-party/mergeBlock.js +17 -0
  339. package/dist/esm/helpers/third-party/mergeBlockOrder.js +45 -0
  340. package/dist/esm/helpers/third-party/removeGPAppItems.js +15 -0
  341. package/dist/esm/helpers/tracking/fpixel.js +24 -1
  342. package/dist/esm/helpers/tracking/gtag.js +87 -1
  343. package/dist/esm/helpers/tracking/tiktokpixel.js +15 -1
  344. package/dist/esm/helpers/typography.js +149 -17
  345. package/dist/esm/helpers/variant.js +9 -1
  346. package/dist/esm/hooks/animation/useAnimationActions.js +37 -1
  347. package/dist/esm/hooks/animation/useAnimationConfig.js +28 -1
  348. package/dist/esm/hooks/animation/useAnimationPreview.js +29 -1
  349. package/dist/esm/hooks/animation/useAnimationTarget.js +120 -1
  350. package/dist/esm/hooks/animation/useApplyAnimation.js +85 -1
  351. package/dist/esm/hooks/articles/useArticlesQuery.js +30 -1
  352. package/dist/esm/hooks/cart/use-add-to-cart.js +18 -1
  353. package/dist/esm/hooks/cart/use-cart-data.js +26 -1
  354. package/dist/esm/hooks/cart/use-cart-discount-codes-update.js +18 -1
  355. package/dist/esm/hooks/cart/use-cart-note-update.js +18 -1
  356. package/dist/esm/hooks/cart/use-create-cart.js +20 -1
  357. package/dist/esm/hooks/cart/use-remove-cart-item.js +18 -1
  358. package/dist/esm/hooks/cart/use-update-cart-item.js +18 -1
  359. package/dist/esm/hooks/shop/use-collection-query.js +20 -1
  360. package/dist/esm/hooks/shop/use-collections-query.js +15 -1
  361. package/dist/esm/hooks/shop/use-product-query.js +20 -1
  362. package/dist/esm/hooks/shop/use-products-query.js +59 -1
  363. package/dist/esm/hooks/shop.js +111 -1
  364. package/dist/esm/hooks/use-current-device.js +28 -1
  365. package/dist/esm/hooks/use-lazy-video.js +13 -1
  366. package/dist/esm/hooks/useAnimations.js +27 -1
  367. package/dist/esm/hooks/useCartId.js +40 -1
  368. package/dist/esm/hooks/useCartLine.js +7 -1
  369. package/dist/esm/hooks/useCartUI.js +44 -1
  370. package/dist/esm/hooks/useCollection.js +7 -1
  371. package/dist/esm/hooks/useFetchHandle.js +11 -1
  372. package/dist/esm/hooks/useFormatMoney.js +71 -1
  373. package/dist/esm/hooks/useInitialSwatchesOptions.js +124 -1
  374. package/dist/esm/hooks/useInteraction.js +17 -0
  375. package/dist/esm/hooks/useIsomorphicLayoutEffect.js +6 -1
  376. package/dist/esm/hooks/useLoadScript.js +28 -1
  377. package/dist/esm/hooks/useMoney.js +80 -1
  378. package/dist/esm/hooks/usePrevious.js +17 -1
  379. package/dist/esm/hooks/useProduct.js +228 -1
  380. package/dist/esm/hooks/useProductList.js +16 -1
  381. package/dist/esm/hooks/useSuspenseFetch.js +23 -1
  382. package/dist/esm/hooks/useSwatchesOptions.js +37 -1
  383. package/dist/esm/hooks/useToolbarPostPurchase.js +87 -1
  384. package/dist/esm/index.js +117 -1
  385. package/dist/esm/types/animations.js +49 -1
  386. package/dist/esm/types/custom.js +52 -0
  387. package/dist/esm/types/global-style.js +12 -1
  388. package/dist/esm/web-components/src/helpers/styles/constant.js +7 -1
  389. package/dist/types/index.d.ts +23183 -17335
  390. package/package.json +5 -3
  391. package/dist/cjs/components/animation/AnimationWrapper.js +0 -1
  392. package/dist/cjs/hooks/animation/animations.js +0 -1
  393. package/dist/cjs/hooks/animation/useLivePageAnimation.js +0 -1
  394. package/dist/esm/components/animation/AnimationWrapper.js +0 -1
  395. package/dist/esm/hooks/animation/animations.js +0 -1
  396. package/dist/esm/hooks/animation/useLivePageAnimation.js +0 -1
@@ -1 +1,250 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as o,useCallback as p,useEffect as n}from"react";import{AIIcon as g}from"./icons/AIIcon.js";import{CloseIcon as r}from"./icons/CloseIcon.js";import{ShowMoreIcon as i}from"./icons/ShowMoreIcon.js";import{PickProduct as a}from"./components/PickProduct.js";import{ToneAndVoice as s}from"./components/ToneAndVoice.js";import l from"classnames";import{useListenEventGenerate as c}from"./hooks/useListenEventGenerate.js";import{useGettingGenerateRequest as d}from"./hooks/useGettingGenerateRequest.js";let AIContentGenerator=({...m})=>{let[u,h]=o(!1),[f,x]=o(!1),{isGenerating:b,onGenerate:v}=c({uid:m.uid,tag:String(m.tag)}),{getRequestBody:N,prompt:w,changeProductName:A,changePrompt:C,changeTone:j}=d(),G=()=>{h(!u)},k=()=>{h(!1)},I=e=>{C(e.target.value)},B=p(e=>{let t=e.detail;t?.componentUid!==m.uid&&k()},[m.uid]),y=()=>{x(!f)},S=()=>{let e=N();v(e)};return n(()=>{b||k()},[b]),n(()=>(window.addEventListener("editor:active-component",B),()=>{window.removeEventListener("editor:active-component",B)}),[B]),e("div",{className:"gp-relative",children:[t("div",{className:"gp-gen-content-toolbar gp-border-r-[#6a6a6a] gp-border-r gp-pr-1 gp-mr-1",children:e("button",{className:"gp-p-1 gp-text-xs gp-flex gp-gap-1 gp-items-center gp-rounded-md hover:gp-bg-[#3B3B3B] gp-font-medium",onClick:G,children:[t(g,{}),"AI Content"]})}),e("div",{className:l({"gp-hidden":!u,"gp-right-0":"Section"===m.tag,"gp-left-0":"Section"!==m.tag},"gp-absolute gp-top-8 gp-right-0 gp-rounded-lg gp-bg-[#151515] gp-p-4 gp-w-[312px] !gp-max-w-[312px] !gp-cursor-default"),children:[e("div",{className:"gp-flex gp-items-center gp-justify-between gp-mb-4",children:[t("span",{className:"gp-font-medium gp-text-sm",children:"Write with GemAI"}),t("button",{className:"gp-p-2 gp-cursor-pointer hover:gp-bg-[#3B3B3B] gp-rounded-md",onClick:k,children:t(r,{})})]}),e("div",{className:"gp-mt-2",children:[t("div",{className:"gp-mb-4",children:t("span",{className:"gp-text-xs",children:"What would you like to describe here?"})}),t("div",{className:"gp-mb-4 gp-flex",children:t("textarea",{className:"gp-p-2 gp-bg-[#333333] gp-rounded-lg gp-w-full gp-text-xs gp-text-white placeholder:gp-text-[#AAAAAA] gp-resize-none focus-visible:gp-outline-none",placeholder:"e.g: Generate feature benefits",rows:4,value:w,onChange:I})}),t("div",{className:"gp-mb-4",children:e("button",{className:"gp-flex gp-justify-center gp-items-center gp-w-full gp-bg-[#333333] gp-py-2 gp-rounded-lg gp-gap-2 gp-text-xs gp-font-medium",onClick:y,children:["Show more",t("span",{className:l({"gp-rotate-180":f}),children:t(i,{})})]})}),e("div",{className:l({"gp-hidden":!f},"gp-mb-4 gp-gap-4 gp-flex gp-flex-col"),children:[t(s,{changeToneAndVoice:j}),t(a,{changeProductName:A})]}),t("button",{className:"gp-rounded-lg gp-w-full gp-text-xs gp-font-medium gp-bg-gradient-to-tl gp-from-[#3C38E1] gp-to-[#874CFD] gp-py-2",onClick:S,children:b?"Generating...":"Generate"})]})]})]})};export{AIContentGenerator};
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
+ import { AIIcon } from './icons/AIIcon.js';
4
+ import { CloseIcon } from './icons/CloseIcon.js';
5
+ import { ShowMoreIcon } from './icons/ShowMoreIcon.js';
6
+ import { WarningIcon } from './icons/WarningIcon.js';
7
+ import { UpgradeIcon } from './icons/UpgradeIcon.js';
8
+ import { PickProduct } from './components/PickProduct.js';
9
+ import { ToneAndVoice } from './components/ToneAndVoice.js';
10
+ import classNames from 'classnames';
11
+ import { useListenEventGenerate } from './hooks/useListenEventGenerate.js';
12
+ import { useGettingGenerateRequest } from './hooks/useGettingGenerateRequest.js';
13
+ import { useFlipPopup } from './hooks/useFlipPopup.js';
14
+ import { useCheckingProductInside } from './hooks/useCheckingProductInside.js';
15
+ import 'zustand';
16
+ import 'react-transition-group';
17
+ import '@gem-sdk/core';
18
+ import { useShopStore } from '../../contexts/ShopContext.js';
19
+ import dayjs from 'dayjs';
20
+ import 'swr';
21
+ import '../../helpers/convert.js';
22
+ import '@gem-sdk/adapter-shopify';
23
+ import 'swr/mutation';
24
+ import 'swr/infinite';
25
+ import 'vanilla-lazyload';
26
+ import '../../hooks/useCartUI.js';
27
+
28
+ const AIContentGenerator = ({ ...props })=>{
29
+ const [isShowPopup, setIsShowPopup] = useState(false);
30
+ const [isShowMore, setIsShowMore] = useState(false);
31
+ const genTool = useRef(null);
32
+ const genPopup = useRef(null);
33
+ const genPopupHeader = useRef(null);
34
+ const genButtonWrapper = useRef(null);
35
+ const nextMonth = dayjs().add(1, 'month').startOf('month').format('DD MMM');
36
+ const { popupPositionX, popupPositionY, isValidating: isValidatingFlipPopup, bodyMaxHeight: popupBodyMaxHeight } = useFlipPopup(isShowPopup, {
37
+ genTool,
38
+ genPopup,
39
+ genPopupHeader,
40
+ genButtonWrapper
41
+ });
42
+ const { isGenerating, onGenerate, onOpenProductElementSettings, goToPricing } = useListenEventGenerate({
43
+ uid: props.uid,
44
+ tag: String(props.tag)
45
+ });
46
+ const { getRequestBody, prompt, changeProductName, changePrompt, changeTone } = useGettingGenerateRequest();
47
+ const { productElement, checkSectionHasProduct } = useCheckingProductInside(genTool);
48
+ const generateLimitation = useShopStore((s)=>s.generateContentLimitation);
49
+ const togglePopup = ()=>{
50
+ setIsShowPopup(!isShowPopup);
51
+ };
52
+ const hidePopup = ()=>{
53
+ setIsShowPopup(false);
54
+ };
55
+ const onChangePrompt = (e)=>{
56
+ changePrompt(e.target.value);
57
+ };
58
+ const onActiveComponent = useCallback((e)=>{
59
+ const detail = e.detail;
60
+ if (detail?.componentUid !== props.uid) {
61
+ hidePopup();
62
+ return;
63
+ }
64
+ checkSectionHasProduct();
65
+ }, [
66
+ props.uid,
67
+ checkSectionHasProduct
68
+ ]);
69
+ const toggleShowMore = ()=>{
70
+ setIsShowMore(!isShowMore);
71
+ };
72
+ const handleGenerateContent = ()=>{
73
+ const body = getRequestBody();
74
+ onGenerate(body);
75
+ hidePopup();
76
+ };
77
+ const handleOpenProductSetting = ()=>{
78
+ onOpenProductElementSettings(productElement.uid ?? '');
79
+ };
80
+ useEffect(()=>{
81
+ if (!isGenerating) {
82
+ hidePopup();
83
+ }
84
+ }, [
85
+ isGenerating
86
+ ]);
87
+ useEffect(()=>{
88
+ if (productElement.productId) {
89
+ setIsShowMore(false);
90
+ return;
91
+ }
92
+ setIsShowMore(true);
93
+ }, [
94
+ productElement
95
+ ]);
96
+ useEffect(()=>{
97
+ window.addEventListener('editor:active-component', onActiveComponent);
98
+ return ()=>{
99
+ window.removeEventListener('editor:active-component', onActiveComponent);
100
+ };
101
+ }, [
102
+ onActiveComponent
103
+ ]);
104
+ return /*#__PURE__*/ jsxs("div", {
105
+ className: "gp-gen-content-toolbar-wrapper gp-relative",
106
+ ref: genTool,
107
+ children: [
108
+ /*#__PURE__*/ jsx("div", {
109
+ className: "gp-gen-content-btn gp-border-r gp-pr-1 gp-mr-1",
110
+ children: /*#__PURE__*/ jsxs("button", {
111
+ className: classNames({
112
+ 'gp-toolbar-ai-active': isShowPopup
113
+ }, 'gp-p-1 gp-text-xs gp-flex gp-gap-1 gp-items-center gp-rounded-md hover:gp-bg-[#3B3B3B] gp-font-medium'),
114
+ onClick: togglePopup,
115
+ children: [
116
+ /*#__PURE__*/ jsx(AIIcon, {}),
117
+ "AI Content"
118
+ ]
119
+ })
120
+ }),
121
+ /*#__PURE__*/ jsxs("div", {
122
+ className: classNames({
123
+ 'gp-hidden': !isShowPopup,
124
+ 'gp-right-0': props.tag === 'Section' || popupPositionX === 'right',
125
+ 'gp-left-0': popupPositionX === 'left' && props.tag !== 'Section',
126
+ 'gp-top-8': popupPositionY === 'top',
127
+ 'gp-bottom-8': popupPositionY === 'bottom',
128
+ '!gp-visible': !isValidatingFlipPopup
129
+ }, 'gp-absolute gp-invisible gp-rounded-lg gp-bg-[#151515] gp-w-[312px] !gp-max-w-[312px] !gp-cursor-default'),
130
+ ref: genPopup,
131
+ children: [
132
+ /*#__PURE__*/ jsxs("div", {
133
+ className: "gp-flex gp-items-center gp-justify-between gp-px-4 gp-py-[10px]",
134
+ ref: genPopupHeader,
135
+ children: [
136
+ /*#__PURE__*/ jsx("span", {
137
+ className: "gp-font-medium gp-text-sm",
138
+ children: "Write with GemAI"
139
+ }),
140
+ /*#__PURE__*/ jsx("button", {
141
+ className: "gp-p-2 gp-cursor-pointer hover:gp-bg-[#3B3B3B] gp-rounded-md",
142
+ onClick: hidePopup,
143
+ children: /*#__PURE__*/ jsx(CloseIcon, {})
144
+ })
145
+ ]
146
+ }),
147
+ /*#__PURE__*/ jsx("div", {
148
+ className: classNames({
149
+ 'gp-overflow-auto': popupBodyMaxHeight !== null
150
+ }, 'gp-pt-2 gp-text-left gp-px-4 scrollbar:gp-w-1 scrollbar-thumb:gp-bg-[#999] scrollbar-thumb:gp-rounded-xl'),
151
+ style: {
152
+ maxHeight: popupBodyMaxHeight !== null ? `${popupBodyMaxHeight}px` : 'auto'
153
+ },
154
+ children: generateLimitation?.isAllow ? /*#__PURE__*/ jsxs(Fragment, {
155
+ children: [
156
+ /*#__PURE__*/ jsx("div", {
157
+ className: "gp-mb-4",
158
+ children: /*#__PURE__*/ jsx("span", {
159
+ className: "gp-text-xs",
160
+ children: "What would you like to describe here?"
161
+ })
162
+ }),
163
+ /*#__PURE__*/ jsx("div", {
164
+ className: "gp-mb-4 gp-flex",
165
+ children: /*#__PURE__*/ jsx("textarea", {
166
+ className: "gp-p-2 gp-bg-[#333333] gp-rounded-lg gp-w-full gp-text-xs gp-text-white placeholder:gp-text-[#AAAAAA] gp-resize-none focus-visible:gp-outline-none",
167
+ placeholder: "e.g: generate feature benefits",
168
+ rows: 4,
169
+ value: prompt,
170
+ onChange: onChangePrompt
171
+ })
172
+ }),
173
+ /*#__PURE__*/ jsxs("div", {
174
+ className: classNames({
175
+ 'gp-hidden': !isShowMore
176
+ }, 'gp-mb-4 gp-gap-4 gp-flex gp-flex-col'),
177
+ children: [
178
+ /*#__PURE__*/ jsx(ToneAndVoice, {
179
+ changeToneAndVoice: changeTone
180
+ }),
181
+ /*#__PURE__*/ jsx(PickProduct, {
182
+ changeProductName: changeProductName,
183
+ openProductSetting: handleOpenProductSetting,
184
+ productId: productElement.productId
185
+ })
186
+ ]
187
+ }),
188
+ /*#__PURE__*/ jsx("div", {
189
+ children: /*#__PURE__*/ jsxs("button", {
190
+ className: "gp-flex gp-justify-center gp-items-center gp-w-full gp-bg-[#333333] gp-py-2 gp-rounded-lg gp-gap-2 gp-text-xs gp-font-medium",
191
+ onClick: toggleShowMore,
192
+ children: [
193
+ "Show more",
194
+ /*#__PURE__*/ jsx("span", {
195
+ className: classNames({
196
+ 'gp-rotate-180': isShowMore
197
+ }),
198
+ children: /*#__PURE__*/ jsx(ShowMoreIcon, {})
199
+ })
200
+ ]
201
+ })
202
+ })
203
+ ]
204
+ }) : /*#__PURE__*/ jsxs("div", {
205
+ className: "gp-flex gp-gap-2 gp-p-3 gp-rounded-xl gp-bg-[#FDB913] gp-bg-opacity-20",
206
+ children: [
207
+ /*#__PURE__*/ jsx("div", {
208
+ className: "gp-flex-none gp-w-7 gp-h-7 gp-rounded-lg gp-bg-[#FFB800] gp-flex gp-justify-center gp-items-center",
209
+ children: /*#__PURE__*/ jsx(WarningIcon, {})
210
+ }),
211
+ /*#__PURE__*/ jsxs("p", {
212
+ className: "gp-text-xs gp-whitespace-normal",
213
+ children: [
214
+ "You've reached ",
215
+ generateLimitation?.maxGenerateCount,
216
+ "/",
217
+ generateLimitation?.maxGenerateCount,
218
+ " rewrites of your AI generative this month.",
219
+ /*#__PURE__*/ jsx("br", {}),
220
+ "Resets on ",
221
+ nextMonth,
222
+ "."
223
+ ]
224
+ })
225
+ ]
226
+ })
227
+ }),
228
+ /*#__PURE__*/ jsx("div", {
229
+ className: "gp-p-4",
230
+ ref: genButtonWrapper,
231
+ children: generateLimitation?.isAllow ? /*#__PURE__*/ jsx("button", {
232
+ className: "gp-rounded-lg gp-w-full gp-text-xs gp-font-medium gp-bg-gradient-to-tl gp-from-[#3C38E1] gp-to-[#874CFD] gp-py-2",
233
+ onClick: handleGenerateContent,
234
+ children: isGenerating ? 'Generating...' : 'Generate'
235
+ }) : /*#__PURE__*/ jsxs("button", {
236
+ className: "gp-flex gp-items-center gp-gap-2 gp-justify-center gp-rounded-lg gp-w-full gp-text-xs gp-font-medium gp-bg-gradient-to-tl gp-from-[#3C38E1] gp-to-[#874CFD] gp-py-2",
237
+ onClick: goToPricing,
238
+ children: [
239
+ /*#__PURE__*/ jsx(UpgradeIcon, {}),
240
+ generateLimitation?.nextQuota ? `Upgrade to generate ${generateLimitation?.nextQuota} rewrites` : 'You have reached limit this month'
241
+ ]
242
+ })
243
+ })
244
+ ]
245
+ })
246
+ ]
247
+ });
248
+ };
249
+
250
+ export { AIContentGenerator };
@@ -1 +1,83 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as n,useRef as r,useCallback as i,useEffect as a}from"react";let AIGenContentLoading=({...s})=>{let[l,o]=n(!1),[u,g]=n(1),p=r(null),c=i(e=>{let t=e.detail;if(t?.generatingUid===s.uid){if("loading"===t.status){o(!0);return}if("success"===t.status){o(!1);return}}},[s.uid]);return a(()=>{if(l){p.current=setInterval(()=>{g(e=>3===e?1:e+1)},500);return}p.current&&clearInterval(p.current)},[l]),a(()=>(window.addEventListener("editor:ai-generate-content-status",c),()=>{window.removeEventListener("editor:ai-generate-content-status",c)}),[c]),l?e("div",{className:"gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center",children:t("span",{className:"gp-font-medium",children:["Generating Content",Array.from(Array(u).keys()).map(()=>".")]})}):null};export{AIGenContentLoading};
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
+ import { AIIcon } from './icons/AIIcon.js';
4
+
5
+ function getRandomArbitrary(min, max) {
6
+ const randomNum = Math.random();
7
+ return randomNum * (max - min) + min;
8
+ }
9
+ const AIGenContentLoading = ({ ...props })=>{
10
+ const [isGenerating, setIsGenerating] = useState(false);
11
+ const [time, setTime] = useState(0);
12
+ const interval = useRef(null);
13
+ const onGenerateContentStatus = useCallback((e)=>{
14
+ const detail = e.detail;
15
+ if (detail?.generatingUid !== props.uid) {
16
+ return;
17
+ }
18
+ if (detail.status === 'loading') {
19
+ setIsGenerating(true);
20
+ return;
21
+ }
22
+ if (detail.status === 'success') {
23
+ setIsGenerating(false);
24
+ return;
25
+ }
26
+ }, [
27
+ props.uid
28
+ ]);
29
+ useEffect(()=>{
30
+ if (isGenerating) {
31
+ handleFakeLoading();
32
+ } else {
33
+ setTime(0);
34
+ }
35
+ return ()=>{
36
+ interval.current && clearInterval(interval.current);
37
+ };
38
+ }, [
39
+ isGenerating
40
+ ]);
41
+ const handleFakeLoading = ()=>{
42
+ setTime(0);
43
+ interval.current = setInterval(()=>{
44
+ setTime((time)=>{
45
+ const randomNum = getRandomArbitrary(0, 6);
46
+ return time >= 580 ? time : time + randomNum;
47
+ });
48
+ }, 50);
49
+ };
50
+ useEffect(()=>{
51
+ window.addEventListener('editor:ai-generate-content-status', onGenerateContentStatus);
52
+ return ()=>{
53
+ window.removeEventListener('editor:ai-generate-content-status', onGenerateContentStatus);
54
+ };
55
+ }, [
56
+ onGenerateContentStatus
57
+ ]);
58
+ return isGenerating ? /*#__PURE__*/ jsxs("div", {
59
+ className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center gp-z-100 gp-gap-2",
60
+ children: [
61
+ /*#__PURE__*/ jsx("div", {
62
+ className: "gp-absolute gp-left-0 gp-top-0 gp-z-2 gp-flex gp-h-full gp-w-full",
63
+ children: /*#__PURE__*/ jsxs("div", {
64
+ className: `gp-relative gp-h-[2px] gp-w-full gp-overflow-hidden gp-rounded-md`,
65
+ children: [
66
+ /*#__PURE__*/ jsx("div", {
67
+ className: "gp-absolute gp-h-full gp-w-full gp-rounded-md gp-bg-[#F4F4F4]"
68
+ }),
69
+ /*#__PURE__*/ jsx("div", {
70
+ className: "gps-image-to-layout-progress-bar gp-absolute gp-h-full gp-rounded-md gp-transition-all",
71
+ style: {
72
+ width: `${time / 600 * 100}%`
73
+ }
74
+ })
75
+ ]
76
+ })
77
+ }),
78
+ /*#__PURE__*/ jsx(AIIcon, {})
79
+ ]
80
+ }) : null;
81
+ };
82
+
83
+ export { AIGenContentLoading };
@@ -1 +1,218 @@
1
- import{jsxs as e,jsx as p}from"react/jsx-runtime";import{useState as t,useRef as g,useEffect as r}from"react";import{SearchIcon as a}from"../icons/SearchIcon.js";import{useListProductQuery as l}from"../../../hooks/shop/use-products-query.js";let PickProduct=s=>{let[c,n]=t({first:8}),{data:d,isLoading:i}=l(c),[o,m]=t(),[u,h]=t(!1),x=g(null),f=()=>{h(!u)},N=e=>{m(e),h(!1)},b=e=>{x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{let p=e.target.value??"";if(p){n({first:8,where:{titleContainsFold:p}});return}n({first:8})},200)};return r(()=>{if(d?.products?.edges.length&&!o){let e=d.products.edges[0]?.node;e&&m({id:e?.id,name:e?.title,image:e.featuredImage?.src})}},[d,o]),r(()=>{o&&o.name&&s.changeProductName(o.name)},[o,s]),e("div",{className:"gp-flex gp-flex-col gp-gap-2",children:[p("p",{className:"gp-py-2 gp-text-xs",children:"Product"}),e("div",{className:"gp-relative",children:[!i||o?e("button",{className:"gp-flex gp-gap-2 gp-items-center gp-w-full gp-p-2 gp-rounded-lg gp-bg-[#333333] gp-text-xs",onClick:f,children:[p("img",{className:"gp-rounded-lg gp-w-10 gp-h-10",src:o?.image,alt:"product_image"}),p("span",{className:"gp-truncate gp-max-w-[210px]",children:o?.name})]}):p("div",{children:p("span",{className:"gp-text-xs",children:"Getting products..."})}),u&&e("div",{className:"gp-absolute gp-w-full gp-top-16 gp-left-0 gp-rounded-lg gp-bg-[#333333] gp-p-2 gp-flex gp-flex-col gp-gap-2 gp-z-10",children:[e("div",{className:"gp-flex gp-items-center gp-gap-2 gp-p-2",children:[p(a,{}),p("input",{className:"gp-bg-transparent gp-w-full focus-visible:!gp-outline-none gp-text-xs",placeholder:"Search product...",onChange:b})]}),p("div",{className:"gp-max-h-[168px] gp-overflow-auto scrollbar:gp-w-1 scrollbar-thumb:gp-bg-[#999] scrollbar-thumb:gp-rounded-xl",children:i?p("div",{className:"gp-p-2",children:p("span",{className:"gp-text-xs",children:"Getting products..."})}):d?.products?.edges.map(t=>e("button",{className:"gp-flex gp-p-2 hover:gp-bg-[#3B3B3B] gp-rounded-lg gp-cursor-pointer gp-gap-2 gp-items-center",onClick:()=>{N({id:t.node?.id,name:t.node?.title,image:t.node?.featuredImage?.src})},children:[p("img",{className:"gp-rounded-lg gp-w-10 gp-h-10",src:t.node?.featuredImage?.src,alt:"product_image"}),p("span",{className:"gp-truncate gp-max-w-[210px] gp-text-xs",children:t.node?.title})]},t.node?.id))})]})]})]})};export{PickProduct};
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useMemo, useEffect } from 'react';
3
+ import { SearchIcon } from '../icons/SearchIcon.js';
4
+ import { useListProductQuery } from '../../../hooks/shop/use-products-query.js';
5
+ import classNames from 'classnames';
6
+ import 'zustand';
7
+ import 'react-transition-group';
8
+ import '@gem-sdk/core';
9
+ import 'swr';
10
+ import 'dayjs';
11
+ import '../../../helpers/convert.js';
12
+ import '@gem-sdk/adapter-shopify';
13
+ import 'swr/mutation';
14
+ import { useProductQuery } from '../../../hooks/shop/use-product-query.js';
15
+ import 'vanilla-lazyload';
16
+ import '../../../hooks/useCartUI.js';
17
+
18
+ const PickProduct = (props)=>{
19
+ const LIMIT_PRODUCTS = 8;
20
+ const [productVariables, setProductVariables] = useState(!props.productId ? {
21
+ first: LIMIT_PRODUCTS
22
+ } : undefined);
23
+ const { data: productList, isLoading: isLoadingGetProducts, isValidating: isValidatingGetProducts, size: productsSize, setSize: setProductsSize } = useListProductQuery(productVariables, {
24
+ revalidateFirstPage: false
25
+ });
26
+ const { data: sectionProduct } = useProductQuery(props.productId);
27
+ const [activeProduct, setActiveProduct] = useState();
28
+ const [isShowChooseProduct, setIsShowChooseProduct] = useState(false);
29
+ const debounceSearch = useRef(null);
30
+ const debounceScroll = useRef(null);
31
+ const toggleChooseProduct = ()=>{
32
+ if (props.productId) return;
33
+ setIsShowChooseProduct(!isShowChooseProduct);
34
+ };
35
+ const chooseProduct = (product)=>{
36
+ setActiveProduct(product);
37
+ setIsShowChooseProduct(false);
38
+ };
39
+ const searchProduct = (e)=>{
40
+ debounceSearch.current && clearTimeout(debounceSearch.current);
41
+ debounceSearch.current = setTimeout(()=>{
42
+ const searchValue = e.target.value ?? '';
43
+ if (searchValue) {
44
+ setProductVariables({
45
+ first: LIMIT_PRODUCTS,
46
+ where: {
47
+ titleContainsFold: searchValue
48
+ }
49
+ });
50
+ return;
51
+ }
52
+ setProductVariables({
53
+ first: LIMIT_PRODUCTS
54
+ });
55
+ }, 200);
56
+ };
57
+ const handleOpenProductElementSettings = ()=>{
58
+ props.openProductSetting();
59
+ };
60
+ const handleLoadMore = (e)=>{
61
+ const target = e.target;
62
+ if (target.scrollHeight - target.scrollTop === target.clientHeight) {
63
+ debounceScroll.current && clearTimeout(debounceScroll.current);
64
+ debounceScroll.current = setTimeout(()=>{
65
+ setProductsSize(productsSize + 1);
66
+ }, 50);
67
+ }
68
+ };
69
+ const products = useMemo(()=>{
70
+ return productList?.reduce((acc, curr)=>{
71
+ return [
72
+ ...acc,
73
+ ...curr.products?.edges ?? []
74
+ ];
75
+ }, []) ?? [];
76
+ }, [
77
+ productList
78
+ ]);
79
+ useEffect(()=>{
80
+ if (products.length && !activeProduct && !props.productId) {
81
+ const firstProduct = products[0]?.node;
82
+ if (!firstProduct) return;
83
+ setActiveProduct({
84
+ id: firstProduct?.id,
85
+ name: firstProduct?.title,
86
+ image: firstProduct.featuredImage?.src
87
+ });
88
+ }
89
+ }, [
90
+ products,
91
+ activeProduct,
92
+ props.productId
93
+ ]);
94
+ useEffect(()=>{
95
+ if (activeProduct && activeProduct.name) {
96
+ props.changeProductName(activeProduct.name);
97
+ }
98
+ }, [
99
+ activeProduct,
100
+ props
101
+ ]);
102
+ useEffect(()=>{
103
+ if (sectionProduct) {
104
+ setActiveProduct({
105
+ id: sectionProduct.id,
106
+ name: sectionProduct.title,
107
+ image: sectionProduct.featuredImage?.src
108
+ });
109
+ }
110
+ }, [
111
+ sectionProduct
112
+ ]);
113
+ const NO_IMAGE_SRC = 'https://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_large.gif';
114
+ return /*#__PURE__*/ jsxs("div", {
115
+ className: "gp-flex gp-flex-col gp-gap-2",
116
+ children: [
117
+ /*#__PURE__*/ jsx("p", {
118
+ className: "gp-py-2 gp-text-xs",
119
+ children: "Product"
120
+ }),
121
+ /*#__PURE__*/ jsxs("div", {
122
+ className: "gp-relative",
123
+ children: [
124
+ !isLoadingGetProducts || activeProduct ? /*#__PURE__*/ jsxs("button", {
125
+ className: classNames({
126
+ 'gp-cursor-default': props.productId
127
+ }, 'gp-flex gp-gap-2 gp-items-center gp-w-full gp-p-2 gp-rounded-lg gp-bg-[#333333] gp-text-xs'),
128
+ onClick: toggleChooseProduct,
129
+ children: [
130
+ /*#__PURE__*/ jsx("img", {
131
+ className: "gp-rounded-lg gp-w-10 gp-h-10",
132
+ src: activeProduct?.image || NO_IMAGE_SRC,
133
+ alt: "product_image"
134
+ }),
135
+ /*#__PURE__*/ jsx("span", {
136
+ className: "gp-truncate gp-max-w-[210px]",
137
+ children: activeProduct?.name
138
+ })
139
+ ]
140
+ }) : /*#__PURE__*/ jsx("div", {
141
+ children: /*#__PURE__*/ jsx("span", {
142
+ className: "gp-text-xs",
143
+ children: "Getting products..."
144
+ })
145
+ }),
146
+ props.productId && /*#__PURE__*/ jsx("div", {
147
+ className: "gp-mt-2 gp-text-xs",
148
+ children: /*#__PURE__*/ jsxs("p", {
149
+ children: [
150
+ "You can manage it in",
151
+ ' ',
152
+ /*#__PURE__*/ jsx("button", {
153
+ className: "gp-text-[#8AA4FF] gp-cursor-pointer hover:gp-underline",
154
+ onClick: handleOpenProductElementSettings,
155
+ children: "Product element"
156
+ })
157
+ ]
158
+ })
159
+ }),
160
+ isShowChooseProduct && /*#__PURE__*/ jsxs("div", {
161
+ className: "gp-absolute gp-w-full gp-top-16 gp-left-0 gp-rounded-lg gp-bg-[#333333] gp-p-2 gp-flex gp-flex-col gp-gap-2 gp-z-10",
162
+ children: [
163
+ /*#__PURE__*/ jsxs("div", {
164
+ className: "gp-flex gp-items-center gp-gap-2 gp-p-2",
165
+ children: [
166
+ /*#__PURE__*/ jsx(SearchIcon, {}),
167
+ /*#__PURE__*/ jsx("input", {
168
+ className: "gp-bg-transparent gp-w-full focus-visible:!gp-outline-none gp-text-xs",
169
+ placeholder: "Search product...",
170
+ onChange: searchProduct
171
+ })
172
+ ]
173
+ }),
174
+ /*#__PURE__*/ jsxs("div", {
175
+ className: "gp-max-h-[168px] gp-overflow-auto scrollbar:gp-w-1 scrollbar-thumb:gp-bg-[#999] scrollbar-thumb:gp-rounded-xl",
176
+ onScroll: handleLoadMore,
177
+ children: [
178
+ products?.map((item)=>{
179
+ return /*#__PURE__*/ jsxs("button", {
180
+ className: "gp-flex gp-p-2 hover:gp-bg-[#3B3B3B] gp-rounded-lg gp-cursor-pointer gp-gap-2 gp-items-center",
181
+ onClick: ()=>{
182
+ chooseProduct({
183
+ id: item.node?.id,
184
+ name: item.node?.title,
185
+ image: item.node?.featuredImage?.src
186
+ });
187
+ },
188
+ children: [
189
+ /*#__PURE__*/ jsx("img", {
190
+ className: "gp-rounded-lg gp-w-10 gp-h-10",
191
+ src: item.node?.featuredImage?.src || NO_IMAGE_SRC,
192
+ alt: "product_image"
193
+ }),
194
+ /*#__PURE__*/ jsx("span", {
195
+ className: "gp-truncate gp-max-w-[210px] gp-text-xs",
196
+ children: item.node?.title
197
+ })
198
+ ]
199
+ }, item.node?.id);
200
+ }),
201
+ isLoadingGetProducts || isValidatingGetProducts && /*#__PURE__*/ jsx("div", {
202
+ className: "gp-p-2",
203
+ children: /*#__PURE__*/ jsx("span", {
204
+ className: "gp-text-xs",
205
+ children: "Getting products..."
206
+ })
207
+ })
208
+ ]
209
+ })
210
+ ]
211
+ })
212
+ ]
213
+ })
214
+ ]
215
+ });
216
+ };
217
+
218
+ export { PickProduct };
@@ -1 +1,75 @@
1
- import{jsx as e,jsxs as p}from"react/jsx-runtime";import{useState as l,useEffect as g}from"react";import{DropdownIcon as n,TickIcon as i}from"../icons/DropdownIcon.js";import o from"classnames";let ToneAndVoice=r=>{let s=["Persuasive","Friendly","Professional","Casual"],[c,a]=l(s[0]),[t,d]=l(!1),m=()=>{d(!t)},f=e=>{a(e),d(!1)};return g(()=>{c&&r.changeToneAndVoice(c)},[c,r]),e("div",{children:p("div",{className:"gp-flex gp-flex-col gp-gap-2",children:[e("p",{className:"gp-py-2 gp-text-xs",children:"Tone and Voice"}),p("div",{className:"gp-relative",children:[p("button",{className:"gp-flex gp-justify-between gp-items-center gp-w-full gp-p-2 gp-rounded-lg gp-bg-[#333333] gp-text-xs",onClick:m,children:[c,e(n,{})]}),t?e("div",{className:"gp-absolute gp-w-full gp-top-10 gp-left-0 gp-rounded-lg gp-bg-[#333333] gp-p-2 gp-flex gp-flex-col gp-gap-2 gp-z-10",children:s.map(l=>p("button",{className:"gp-flex gp-p-2 hover:gp-bg-[#3B3B3B] gp-rounded-lg gp-cursor-pointer gp-gap-3 gp-items-center",onClick:()=>f(l),children:[e("div",{className:o({"gp-invisible":c!==l}),children:e(i,{})}),e("span",{className:"gp-text-xs",children:l})]},l))}):null]})]})})};export{ToneAndVoice};
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import { DropdownIcon, TickIcon } from '../icons/DropdownIcon.js';
4
+ import classNames from 'classnames';
5
+
6
+ const ToneAndVoice = (props)=>{
7
+ const listToneAndVoice = [
8
+ 'Persuasive',
9
+ 'Friendly',
10
+ 'Professional',
11
+ 'Casual'
12
+ ];
13
+ const [tone, setTone] = useState(listToneAndVoice[0]);
14
+ const [isShow, setIsShow] = useState(false);
15
+ const toggle = ()=>{
16
+ setIsShow(!isShow);
17
+ };
18
+ const setValue = (value)=>{
19
+ setTone(value);
20
+ setIsShow(false);
21
+ };
22
+ useEffect(()=>{
23
+ tone && props.changeToneAndVoice(tone);
24
+ }, [
25
+ tone,
26
+ props
27
+ ]);
28
+ return /*#__PURE__*/ jsx("div", {
29
+ children: /*#__PURE__*/ jsxs("div", {
30
+ className: "gp-flex gp-flex-col gp-gap-2",
31
+ children: [
32
+ /*#__PURE__*/ jsx("p", {
33
+ className: "gp-py-2 gp-text-xs",
34
+ children: "Tone and Voice"
35
+ }),
36
+ /*#__PURE__*/ jsxs("div", {
37
+ className: "gp-relative",
38
+ children: [
39
+ /*#__PURE__*/ jsxs("button", {
40
+ className: "gp-flex gp-justify-between gp-items-center gp-w-full gp-p-2 gp-rounded-lg gp-bg-[#333333] gp-text-xs",
41
+ onClick: toggle,
42
+ children: [
43
+ tone,
44
+ /*#__PURE__*/ jsx(DropdownIcon, {})
45
+ ]
46
+ }),
47
+ isShow ? /*#__PURE__*/ jsx("div", {
48
+ className: "gp-absolute gp-w-full gp-top-10 gp-left-0 gp-rounded-lg gp-bg-[#333333] gp-p-2 gp-flex gp-flex-col gp-gap-2 gp-z-10",
49
+ children: listToneAndVoice.map((item)=>{
50
+ return /*#__PURE__*/ jsxs("button", {
51
+ className: "gp-flex gp-p-2 hover:gp-bg-[#3B3B3B] gp-rounded-lg gp-cursor-pointer gp-gap-3 gp-items-center",
52
+ onClick: ()=>setValue(item),
53
+ children: [
54
+ /*#__PURE__*/ jsx("div", {
55
+ className: classNames({
56
+ 'gp-invisible': tone !== item
57
+ }),
58
+ children: /*#__PURE__*/ jsx(TickIcon, {})
59
+ }),
60
+ /*#__PURE__*/ jsx("span", {
61
+ className: "gp-text-xs",
62
+ children: item
63
+ })
64
+ ]
65
+ }, item);
66
+ })
67
+ }) : null
68
+ ]
69
+ })
70
+ ]
71
+ })
72
+ });
73
+ };
74
+
75
+ export { ToneAndVoice };