shoplazza-cli 1.1.2 → 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 (400) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +206 -332
  4. package/README.zh.md +318 -0
  5. package/package.json +24 -70
  6. package/scripts/install.js +144 -0
  7. package/scripts/jsbuild/dev/index.js +123 -0
  8. package/scripts/jsbuild/index.js +77 -0
  9. package/{lib/checkout/build → scripts/jsbuild}/plugin/vite-plugin-add-extension-id.js +4 -2
  10. package/scripts/jsbuild/vite.config.js +35 -0
  11. package/scripts/run.js +29 -0
  12. package/.editorconfig +0 -28
  13. package/.prettierrc +0 -9
  14. package/bin/shoplazza +0 -137
  15. package/fixtures/assets/blog.scss +0 -74
  16. package/fixtures/assets/cart_modal.scss +0 -450
  17. package/fixtures/assets/collection_detail.js +0 -234
  18. package/fixtures/assets/collection_detail.scss +0 -345
  19. package/fixtures/assets/collection_list.scss +0 -11
  20. package/fixtures/assets/collection_slider.scss +0 -169
  21. package/fixtures/assets/feature_columns.scss +0 -26
  22. package/fixtures/assets/feature_product.scss +0 -109
  23. package/fixtures/assets/footer.js +0 -58
  24. package/fixtures/assets/footer.scss +0 -337
  25. package/fixtures/assets/four_images.scss +0 -29
  26. package/fixtures/assets/gallery.scss +0 -55
  27. package/fixtures/assets/header.js +0 -178
  28. package/fixtures/assets/header.scss +0 -929
  29. package/fixtures/assets/image_text.scss +0 -72
  30. package/fixtures/assets/logo_bar.scss +0 -11
  31. package/fixtures/assets/newsletter.scss +0 -90
  32. package/fixtures/assets/not_found.scss +0 -39
  33. package/fixtures/assets/page_detail.scss +0 -16
  34. package/fixtures/assets/pagination.scss +0 -150
  35. package/fixtures/assets/postcss.config.js +0 -6
  36. package/fixtures/assets/product_description.scss +0 -88
  37. package/fixtures/assets/product_detail.js +0 -634
  38. package/fixtures/assets/product_detail.scss +0 -1106
  39. package/fixtures/assets/relative_product.scss +0 -45
  40. package/fixtures/assets/reviews.scss +0 -70
  41. package/fixtures/assets/rich_text.scss +0 -71
  42. package/fixtures/assets/search.js +0 -87
  43. package/fixtures/assets/search.scss +0 -67
  44. package/fixtures/assets/slide.scss +0 -51
  45. package/fixtures/assets/slider.scss +0 -141
  46. package/fixtures/assets/test.scss +0 -1
  47. package/fixtures/assets/theme.css +0 -976
  48. package/fixtures/assets/theme.scss +0 -1100
  49. package/fixtures/assets/three_images.scss +0 -20
  50. package/fixtures/assets/tools.scss +0 -23
  51. package/fixtures/assets/two_images.scss +0 -24
  52. package/fixtures/assets/video.scss +0 -45
  53. package/fixtures/assets/video_text.scss +0 -63
  54. package/fixtures/config/settings_data.json +0 -107
  55. package/fixtures/config/settings_schema.json +0 -690
  56. package/fixtures/layout/theme.liquid +0 -76
  57. package/fixtures/locales/ar-SA.json +0 -212
  58. package/fixtures/locales/de-DE.json +0 -290
  59. package/fixtures/locales/en-US.json +0 -290
  60. package/fixtures/locales/es-ES.json +0 -290
  61. package/fixtures/locales/fr-FR.json +0 -290
  62. package/fixtures/locales/id-ID.json +0 -212
  63. package/fixtures/locales/it-IT.json +0 -212
  64. package/fixtures/locales/ja-JP.json +0 -289
  65. package/fixtures/locales/ko-KR.json +0 -290
  66. package/fixtures/locales/nl-NL.json +0 -290
  67. package/fixtures/locales/pl-PL.json +0 -290
  68. package/fixtures/locales/pt-PT.json +0 -212
  69. package/fixtures/locales/ru-RU.json +0 -212
  70. package/fixtures/locales/th-TH.json +0 -212
  71. package/fixtures/locales/zh-CN.json +0 -290
  72. package/fixtures/locales/zh-TW.json +0 -290
  73. package/fixtures/sections/apps.liquid +0 -47
  74. package/fixtures/sections/blog.liquid +0 -137
  75. package/fixtures/sections/collection_desc.liquid +0 -34
  76. package/fixtures/sections/collection_detail.liquid +0 -436
  77. package/fixtures/sections/collection_image.liquid +0 -104
  78. package/fixtures/sections/collection_list.liquid +0 -161
  79. package/fixtures/sections/collection_name.liquid +0 -34
  80. package/fixtures/sections/collection_slider.liquid +0 -330
  81. package/fixtures/sections/feature_columns.liquid +0 -275
  82. package/fixtures/sections/feature_product.liquid +0 -227
  83. package/fixtures/sections/footer.liquid +0 -488
  84. package/fixtures/sections/four_images.liquid +0 -160
  85. package/fixtures/sections/gallery.liquid +0 -258
  86. package/fixtures/sections/header.liquid +0 -1157
  87. package/fixtures/sections/html.liquid +0 -40
  88. package/fixtures/sections/image_text.liquid +0 -350
  89. package/fixtures/sections/instagram_plus.liquid +0 -393
  90. package/fixtures/sections/logo_bar.liquid +0 -183
  91. package/fixtures/sections/newsletter.liquid +0 -225
  92. package/fixtures/sections/not_found.liquid +0 -39
  93. package/fixtures/sections/overlay_image.liquid +0 -648
  94. package/fixtures/sections/page_detail.liquid +0 -39
  95. package/fixtures/sections/photo_collection.liquid +0 -433
  96. package/fixtures/sections/product_description.liquid +0 -208
  97. package/fixtures/sections/product_detail.liquid +0 -611
  98. package/fixtures/sections/products.liquid +0 -216
  99. package/fixtures/sections/relative_product.liquid +0 -121
  100. package/fixtures/sections/reviews.liquid +0 -115
  101. package/fixtures/sections/rich_text.liquid +0 -157
  102. package/fixtures/sections/search.liquid +0 -163
  103. package/fixtures/sections/slide.liquid +0 -719
  104. package/fixtures/sections/three_images.liquid +0 -157
  105. package/fixtures/sections/two_images.liquid +0 -125
  106. package/fixtures/sections/video.liquid +0 -95
  107. package/fixtures/sections/video_text.liquid +0 -128
  108. package/fixtures/snippets/bgset.liquid +0 -21
  109. package/fixtures/snippets/card_title.liquid +0 -8
  110. package/fixtures/snippets/cart_modal.liquid +0 -74
  111. package/fixtures/snippets/collection.liquid +0 -77
  112. package/fixtures/snippets/collection_filter_modal.liquid +0 -56
  113. package/fixtures/snippets/default_image_4.liquid +0 -14
  114. package/fixtures/snippets/default_image_6.liquid +0 -18
  115. package/fixtures/snippets/default_image_8.liquid +0 -23
  116. package/fixtures/snippets/four_images_item.liquid +0 -8
  117. package/fixtures/snippets/header_ads.liquid +0 -95
  118. package/fixtures/snippets/hero_image.liquid +0 -94
  119. package/fixtures/snippets/icon_video_play_large.liquid +0 -1
  120. package/fixtures/snippets/icon_video_play_medium.liquid +0 -4
  121. package/fixtures/snippets/icon_video_play_small.liquid +0 -4
  122. package/fixtures/snippets/lazyimg.liquid +0 -22
  123. package/fixtures/snippets/lazyimg_art.liquid +0 -36
  124. package/fixtures/snippets/lazysizes.liquid +0 -41
  125. package/fixtures/snippets/link.liquid +0 -2
  126. package/fixtures/snippets/pagination.liquid +0 -48
  127. package/fixtures/snippets/product.liquid +0 -126
  128. package/fixtures/snippets/product_art_tpl.liquid +0 -152
  129. package/fixtures/snippets/product_info_body.liquid +0 -337
  130. package/fixtures/snippets/product_info_tpl.liquid +0 -423
  131. package/fixtures/snippets/product_label.liquid +0 -46
  132. package/fixtures/snippets/settings.liquid +0 -295
  133. package/fixtures/snippets/social-meta-tags.liquid +0 -106
  134. package/fixtures/snippets/video_html.liquid +0 -11
  135. package/fixtures/snippets/video_source.liquid +0 -98
  136. package/fixtures/snippets/video_thumb_icon.liquid +0 -2
  137. package/fixtures/templates/404.liquid +0 -1
  138. package/fixtures/templates/collection.liquid +0 -92
  139. package/fixtures/templates/index.liquid +0 -206
  140. package/fixtures/templates/page.liquid +0 -1
  141. package/fixtures/templates/product.liquid +0 -99
  142. package/fixtures/templates/search.liquid +0 -1
  143. package/jest.config.js +0 -192
  144. package/lib/__tests__/log.test.js +0 -15
  145. package/lib/__tests__/utils.test.js +0 -69
  146. package/lib/app/api/cli.js +0 -225
  147. package/lib/app/api/openapi.js +0 -121
  148. package/lib/app/api/partnerOpenapi.js +0 -104
  149. package/lib/app/bin/index.js +0 -20
  150. package/lib/app/bin/javy/javy-arm-linux-v5.0.1 +0 -0
  151. package/lib/app/bin/javy/javy-arm-macos-v5.0.1 +0 -0
  152. package/lib/app/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
  153. package/lib/app/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
  154. package/lib/app/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
  155. package/lib/app/commands/config/actions/link.js +0 -189
  156. package/lib/app/commands/config/actions/use.js +0 -40
  157. package/lib/app/commands/config/index.js +0 -25
  158. package/lib/app/commands/config/link.js +0 -11
  159. package/lib/app/commands/config/use.js +0 -11
  160. package/lib/app/commands/deploy/actions/deploy.js +0 -196
  161. package/lib/app/commands/deploy/index.js +0 -11
  162. package/lib/app/commands/dev/actions/dev.js +0 -206
  163. package/lib/app/commands/dev/index.js +0 -11
  164. package/lib/app/commands/generate/actions/extension.js +0 -97
  165. package/lib/app/commands/generate/actions/generateCheckout.js +0 -58
  166. package/lib/app/commands/generate/actions/generateFunction.js +0 -56
  167. package/lib/app/commands/generate/actions/generateTheme.js +0 -128
  168. package/lib/app/commands/generate/extension.js +0 -11
  169. package/lib/app/commands/generate/index.js +0 -22
  170. package/lib/app/commands/index.js +0 -82
  171. package/lib/app/commands/info/actions/info.js +0 -168
  172. package/lib/app/commands/info/index.js +0 -11
  173. package/lib/app/commands/init/actions/init.js +0 -176
  174. package/lib/app/commands/init/index.js +0 -14
  175. package/lib/app/commands/versions/actions/list.js +0 -210
  176. package/lib/app/commands/versions/index.js +0 -22
  177. package/lib/app/commands/versions/list.js +0 -14
  178. package/lib/app/constant/code.js +0 -7
  179. package/lib/app/constant/color.js +0 -18
  180. package/lib/app/constant/extension.js +0 -16
  181. package/lib/app/constant/host.js +0 -23
  182. package/lib/app/constant/sso.js +0 -7
  183. package/lib/app/index.js +0 -8
  184. package/lib/app/services/auth/config.js +0 -33
  185. package/lib/app/services/auth/index.js +0 -9
  186. package/lib/app/services/auth/oauth-server.js +0 -70
  187. package/lib/app/services/auth/partner-token.js +0 -45
  188. package/lib/app/services/auth/sso-token.js +0 -69
  189. package/lib/app/services/auth/store-token.js +0 -100
  190. package/lib/app/services/auth/url-builder.js +0 -23
  191. package/lib/app/services/config/index.js +0 -41
  192. package/lib/app/services/devServer/app.js +0 -76
  193. package/lib/app/services/devServer/index.js +0 -103
  194. package/lib/app/services/devServer/middleware/hmacValidatorMiddleWare.js +0 -20
  195. package/lib/app/services/devServer/middleware/index.js +0 -5
  196. package/lib/app/services/devServer/tunnel/index.js +0 -43
  197. package/lib/app/services/devServer/tunnel/providers/cloudflare.js +0 -364
  198. package/lib/app/services/devServer/tunnel/providers/ngrok.js +0 -70
  199. package/lib/app/services/devServer/utils/index.js +0 -5
  200. package/lib/app/services/devServer/utils/secureCompare.js +0 -5
  201. package/lib/app/services/devServer/views/app.ejs +0 -133
  202. package/lib/app/services/extension-build/buildCheckout.js +0 -47
  203. package/lib/app/services/extension-build/buildFunction.js +0 -57
  204. package/lib/app/services/extension-build/buildTheme.js +0 -100
  205. package/lib/app/services/extension-build/index.js +0 -23
  206. package/lib/app/services/extension-build/plugins/vite-plugin-add-extension-id.js +0 -26
  207. package/lib/app/services/extension-diff/index.js +0 -132
  208. package/lib/app/services/extension-upsert/index.js +0 -21
  209. package/lib/app/services/extension-upsert/upsertCheckout.js +0 -44
  210. package/lib/app/services/extension-upsert/upsertFunction.js +0 -52
  211. package/lib/app/services/extension-upsert/upsertTheme.js +0 -113
  212. package/lib/app/services/oss/index.js +0 -45
  213. package/lib/app/services/partner/index.js +0 -52
  214. package/lib/app/store/base-store.js +0 -37
  215. package/lib/app/store/config-store.js +0 -55
  216. package/lib/app/store/config.js +0 -21
  217. package/lib/app/store/index.js +0 -14
  218. package/lib/app/store/install-store.js +0 -41
  219. package/lib/app/store/sso-store.js +0 -55
  220. package/lib/app/utils/asyncPool.js +0 -42
  221. package/lib/app/utils/debug/index.js +0 -16
  222. package/lib/app/utils/env.js +0 -24
  223. package/lib/app/utils/error.js +0 -20
  224. package/lib/app/utils/git.js +0 -20
  225. package/lib/app/utils/json.js +0 -27
  226. package/lib/app/utils/path.js +0 -33
  227. package/lib/app/utils/platform.js +0 -37
  228. package/lib/app/utils/request/cli.js +0 -72
  229. package/lib/app/utils/request/debug.js +0 -13
  230. package/lib/app/utils/request/openapi.js +0 -67
  231. package/lib/app/utils/request/partnerOpenapi.js +0 -47
  232. package/lib/app/utils/toml.js +0 -56
  233. package/lib/app/utils/views/message.js +0 -68
  234. package/lib/app/utils/views/select.js +0 -36
  235. package/lib/app/utils/withTempDir.js +0 -55
  236. package/lib/auth/__mocks__/getCode.js +0 -7
  237. package/lib/auth/__mocks__/index.js +0 -0
  238. package/lib/auth/child.js +0 -23
  239. package/lib/auth/getCode.js +0 -39
  240. package/lib/auth/index.js +0 -134
  241. package/lib/check.js +0 -28
  242. package/lib/checkout/api.js +0 -164
  243. package/lib/checkout/build/plugin/vite-plugin-transform-extension-html.js +0 -207
  244. package/lib/checkout/build/vite.config.js +0 -34
  245. package/lib/checkout/build.js +0 -38
  246. package/lib/checkout/config.js +0 -97
  247. package/lib/checkout/create.js +0 -132
  248. package/lib/checkout/delete.js +0 -26
  249. package/lib/checkout/deploy.js +0 -59
  250. package/lib/checkout/dev/index.js +0 -143
  251. package/lib/checkout/fields.js +0 -29
  252. package/lib/checkout/index.js +0 -63
  253. package/lib/checkout/preview.js +0 -52
  254. package/lib/checkout/pull.js +0 -22
  255. package/lib/checkout/push.js +0 -141
  256. package/lib/checkout/template/README.md +0 -34
  257. package/lib/checkout/template/_gitignore +0 -4
  258. package/lib/checkout/template/extension.config.js +0 -4
  259. package/lib/checkout/template/extensions/extension-template/extension.json +0 -10
  260. package/lib/checkout/template/extensions/extension-template/src/content.html +0 -3
  261. package/lib/checkout/template/extensions/extension-template/src/index.html +0 -5
  262. package/lib/checkout/template/extensions/extension-template/src/index.js +0 -11
  263. package/lib/checkout/template/extensions/extension-template/src/script.html +0 -3
  264. package/lib/checkout/template/extensions/extension-template/src/style.html +0 -3
  265. package/lib/checkout/template/package.json +0 -17
  266. package/lib/checkout/undeploy.js +0 -40
  267. package/lib/checkout/util.js +0 -201
  268. package/lib/checkout/verify.js +0 -16
  269. package/lib/checkout/version.js +0 -7
  270. package/lib/commands/__tests__/login.test.js +0 -77
  271. package/lib/commands/__tests__/logout.test.js +0 -29
  272. package/lib/commands/__tests__/store.test.js +0 -44
  273. package/lib/commands/__tests__/switch.test.js +0 -45
  274. package/lib/commands/login.js +0 -120
  275. package/lib/commands/logout.js +0 -23
  276. package/lib/commands/store.js +0 -14
  277. package/lib/commands/switch.js +0 -52
  278. package/lib/commands/theme/__tests__/delete.test.js +0 -49
  279. package/lib/commands/theme/__tests__/init.test.js +0 -21
  280. package/lib/commands/theme/__tests__/list.test.js +0 -80
  281. package/lib/commands/theme/__tests__/package.test.js +0 -17
  282. package/lib/commands/theme/__tests__/publish.test.js +0 -61
  283. package/lib/commands/theme/__tests__/pull.test.js +0 -69
  284. package/lib/commands/theme/__tests__/push.test.js +0 -63
  285. package/lib/commands/theme/__tests__/serve.test.js +0 -107
  286. package/lib/commands/theme/delete.js +0 -64
  287. package/lib/commands/theme/init.js +0 -51
  288. package/lib/commands/theme/list.js +0 -28
  289. package/lib/commands/theme/package.js +0 -37
  290. package/lib/commands/theme/publish.js +0 -56
  291. package/lib/commands/theme/pull.js +0 -62
  292. package/lib/commands/theme/push.js +0 -106
  293. package/lib/commands/theme/serve.js +0 -153
  294. package/lib/commands/theme/share.js +0 -20
  295. package/lib/commands/version.js +0 -6
  296. package/lib/common/constants.js +0 -24
  297. package/lib/common/db/partner.js +0 -91
  298. package/lib/common/inquirers/choose-app.js +0 -79
  299. package/lib/common/inquirers/choose-partner.js +0 -74
  300. package/lib/common/log.js +0 -15
  301. package/lib/common/login.js +0 -125
  302. package/lib/common/logout.js +0 -16
  303. package/lib/db/__mocks__/index.js +0 -9
  304. package/lib/db/__tests__/analytics.test.js +0 -19
  305. package/lib/db/__tests__/user.test.js +0 -20
  306. package/lib/db/analytics.js +0 -48
  307. package/lib/db/index.js +0 -9
  308. package/lib/db/user.js +0 -71
  309. package/lib/function/bin/index.js +0 -20
  310. package/lib/function/bin/javy/javy-arm-linux-v5.0.1 +0 -0
  311. package/lib/function/bin/javy/javy-arm-macos-v5.0.1 +0 -0
  312. package/lib/function/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
  313. package/lib/function/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
  314. package/lib/function/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
  315. package/lib/function/commands/compile.js +0 -43
  316. package/lib/function/commands/create.js +0 -77
  317. package/lib/function/commands/list.js +0 -18
  318. package/lib/function/commands/release.js +0 -69
  319. package/lib/function/index.js +0 -24
  320. package/lib/function/template/js/README.md +0 -37
  321. package/lib/function/template/js/_gitignore +0 -4
  322. package/lib/function/template/js/extension.config.json +0 -5
  323. package/lib/function/template/js/package.json +0 -17
  324. package/lib/function/template/js/src/index.js +0 -64
  325. package/lib/function/utils.js +0 -29
  326. package/lib/log.js +0 -13
  327. package/lib/openAPI/__mocks__/index.js +0 -20
  328. package/lib/openAPI/api.js +0 -76
  329. package/lib/openAPI/index.js +0 -56
  330. package/lib/oss.js +0 -102
  331. package/lib/partner-api/axios.js +0 -67
  332. package/lib/partner-api/index.js +0 -79
  333. package/lib/report.js +0 -37
  334. package/lib/theme-extension/api/index.js +0 -96
  335. package/lib/theme-extension/commands/build.js +0 -114
  336. package/lib/theme-extension/commands/connect.js +0 -73
  337. package/lib/theme-extension/commands/create.js +0 -105
  338. package/lib/theme-extension/commands/deploy.js +0 -56
  339. package/lib/theme-extension/commands/list.js +0 -35
  340. package/lib/theme-extension/commands/release.js +0 -59
  341. package/lib/theme-extension/commands/serve.js +0 -179
  342. package/lib/theme-extension/commands/versions.js +0 -55
  343. package/lib/theme-extension/index.js +0 -29
  344. package/lib/theme-extension/template/basic-app/README.md +0 -125
  345. package/lib/theme-extension/template/basic-app/extension.config.json +0 -4
  346. package/lib/theme-extension/template/basic-app/package.json +0 -18
  347. package/lib/theme-extension/template/basic-app/theme-app/assets/index.css +0 -4
  348. package/lib/theme-extension/template/basic-app/theme-app/assets-manifest.json +0 -1
  349. package/lib/theme-extension/template/basic-app/theme-app/blocks/index.liquid +0 -16
  350. package/lib/theme-extension/template/basic-app/theme-app/locales/ar-SA.json +0 -1
  351. package/lib/theme-extension/template/basic-app/theme-app/locales/de-DE.json +0 -1
  352. package/lib/theme-extension/template/basic-app/theme-app/locales/en-US.json +0 -6
  353. package/lib/theme-extension/template/basic-app/theme-app/locales/es-ES.json +0 -1
  354. package/lib/theme-extension/template/basic-app/theme-app/locales/fr-FR.json +0 -1
  355. package/lib/theme-extension/template/basic-app/theme-app/locales/id-ID.json +0 -1
  356. package/lib/theme-extension/template/basic-app/theme-app/locales/it-IT.json +0 -1
  357. package/lib/theme-extension/template/basic-app/theme-app/locales/ja-JP.json +0 -1
  358. package/lib/theme-extension/template/basic-app/theme-app/locales/ko-KR.json +0 -1
  359. package/lib/theme-extension/template/basic-app/theme-app/locales/nl-NL.json +0 -1
  360. package/lib/theme-extension/template/basic-app/theme-app/locales/pl-PL.json +0 -1
  361. package/lib/theme-extension/template/basic-app/theme-app/locales/pt-PT.json +0 -1
  362. package/lib/theme-extension/template/basic-app/theme-app/locales/ru-RU.json +0 -1
  363. package/lib/theme-extension/template/basic-app/theme-app/locales/th-TH.json +0 -1
  364. package/lib/theme-extension/template/basic-app/theme-app/locales/zh-CN.json +0 -6
  365. package/lib/theme-extension/template/basic-app/theme-app/locales/zh-TW.json +0 -1
  366. package/lib/theme-extension/template/basic-app/theme-app/snippets/index.liquid +0 -8
  367. package/lib/theme-extension/template/embed-app/README.md +0 -125
  368. package/lib/theme-extension/template/embed-app/extension.config.json +0 -4
  369. package/lib/theme-extension/template/embed-app/package.json +0 -18
  370. package/lib/theme-extension/template/embed-app/theme-app/assets-manifest.json +0 -1
  371. package/lib/theme-extension/template/embed-app/theme-app/blocks/index.liquid +0 -18
  372. package/lib/theme-extension/template/embed-app/theme-app/locales/ar-SA.json +0 -1
  373. package/lib/theme-extension/template/embed-app/theme-app/locales/de-DE.json +0 -1
  374. package/lib/theme-extension/template/embed-app/theme-app/locales/en-US.json +0 -6
  375. package/lib/theme-extension/template/embed-app/theme-app/locales/es-ES.json +0 -1
  376. package/lib/theme-extension/template/embed-app/theme-app/locales/fr-FR.json +0 -1
  377. package/lib/theme-extension/template/embed-app/theme-app/locales/id-ID.json +0 -1
  378. package/lib/theme-extension/template/embed-app/theme-app/locales/it-IT.json +0 -1
  379. package/lib/theme-extension/template/embed-app/theme-app/locales/ja-JP.json +0 -1
  380. package/lib/theme-extension/template/embed-app/theme-app/locales/ko-KR.json +0 -1
  381. package/lib/theme-extension/template/embed-app/theme-app/locales/nl-NL.json +0 -1
  382. package/lib/theme-extension/template/embed-app/theme-app/locales/pl-PL.json +0 -1
  383. package/lib/theme-extension/template/embed-app/theme-app/locales/pt-PT.json +0 -1
  384. package/lib/theme-extension/template/embed-app/theme-app/locales/ru-RU.json +0 -1
  385. package/lib/theme-extension/template/embed-app/theme-app/locales/th-TH.json +0 -1
  386. package/lib/theme-extension/template/embed-app/theme-app/locales/zh-CN.json +0 -6
  387. package/lib/theme-extension/template/embed-app/theme-app/locales/zh-TW.json +0 -1
  388. package/lib/theme-extension/template/embed-app/theme-app/snippets/index.liquid +0 -8
  389. package/lib/theme-extension/template/embed-app/theme-app/snippets/index_css.liquid +0 -6
  390. package/lib/theme-extension/utils/config.js +0 -32
  391. package/lib/theme-extension/utils/index.js +0 -213
  392. package/lib/tracing.js +0 -50
  393. package/lib/utils/config.js +0 -12
  394. package/lib/utils/console.js +0 -33
  395. package/lib/utils/env.js +0 -17
  396. package/lib/utils/file.js +0 -48
  397. package/lib/utils/platform.js +0 -37
  398. package/lib/utils/utils.js +0 -165
  399. /package/{lib/checkout → scripts/jsbuild}/dev/client.js +0 -0
  400. /package/{lib/app/services/extension-build/plugins → scripts/jsbuild/plugin}/vite-plugin-transform-extension-html.js +0 -0
@@ -1,423 +0,0 @@
1
- {% include 'lazyimg_art' %}
2
- <script id="product-info-qty-tpl" type="text/html">
3
- <div class="qty-title product-info__qty_title">{{ 'i18n.product.product_detail.qty' | t }}
4
- <% if ( {{ settings.is_stock_show | default: true }} ) { %>
5
- <span class="product-info__qty_stock">
6
- <% if (product.inventory_quantity > 0 && product.inventory_tracking) { %>
7
- (<%= $imports.getI18n("{{ 'i18n.product.product_detail.in_stock' | t }}", {
8
- '{% raw %}{{ count }}{% endraw %}': product.inventory_quantity
9
- }) %>)
10
- <% } %>
11
- </span>
12
- <% } %>
13
-
14
- </div>
15
- <div class="product-info__qty {% if settings.variant_type == 'dropdown' %}product-info__qty-dropdown{% endif %}">
16
- <button type="button" class="btn product-info__qty_btn product-info__qty_decr"
17
- data-click="decrease"
18
- <% if (qty === 1
19
- || (product.available === false)
20
- || (!product.published && product.published !== undefined)) { %> disabled <% } %>
21
- >
22
- -
23
- </button>
24
- <input id="product_quantity_<%= product.id %>" class="form-control product-info__qty_num"
25
- <% if ((product.available === false)
26
- || (!product.published && product.published !== undefined)) { %> disabled <% } %>
27
- type="text" value="<%= qty %>" name="quantity" >
28
- <button type="button" class="btn product-info__qty_btn product-info__qty_incr"
29
- data-click="increase" <% if ((product
30
- && qty === product.available_quantity)
31
- || (product.available === false)
32
- || (!product.published && product.published !== undefined) ) { %> disabled <% } %>
33
- >
34
- +
35
- </button>
36
- </div>
37
- </script>
38
- <script id="product-info-price-wrapper" type="text/html">
39
- <div class="product-info__header_price-wrapper-left">
40
- <span class="product-info__header_price dj_skin_product_detail_price money">
41
- <% if (product.price_min !== undefined) { %>
42
- <%= $imports.finance_money_with_symbol(product.price_min) %>
43
- <% if (product.price_max > product.price_min) { %>
44
- - <%= $imports.finance_money_with_symbol(product.price_max) %>
45
- <% } %>
46
- <% } else { %>
47
- <%= $imports.finance_money_with_symbol(product.price) %>
48
- <% } %>
49
- </span>
50
- <% if (product.compare_at_price - product.price > 0) { %>
51
- <span class="product-info__header_compare-at-price dj_skin_product_compare_at_price money ">
52
- <%= $imports.finance_money_with_symbol(product.compare_at_price) %>
53
- </span>
54
- <% } %>
55
- </div>
56
- <span class="product-info__header_sales ">
57
- <%= $imports.getI18n("{{ 'i18n.product.product_detail.sold' | t }}", {
58
- '{% raw %}{{ count }}{% endraw %}': product.sales
59
- }) %>
60
- </span>
61
- </script>
62
- <script id="product-select-wrapper" type="text/html">
63
- <div class="modal fade" id="product-select-modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true" >
64
- <div class="modal-dialog modal-lg modal-dialog-centered" role="document">
65
- <div class="modal-content product__select_modal">
66
- <div class="sep-font sep-font-close close modal__close" data-dismiss="modal" aria-label="Close">
67
- </div>
68
- <div class="modal-body product-select-modal">
69
- <div class='container-gap product-detail'
70
- id="product_detail_<%= product.id %>"
71
- data-track="product"
72
- data-track-id="<%= product.id %>"
73
- data-track-price="<%= product.price %>"
74
- data-track-name="<%= product.title %>"
75
- data-track-type="<%= product.type %>" data-life-style="true">
76
-
77
- <div class="row">
78
- {% assign commonImg = 'oss/operation/1e6f85988d86fcd8bf0debdec2d41eda.png' | img_url %}
79
- <div class="product-image col-12 col-md-6">
80
- <div class="position-relative">
81
- <div class="support-slick">
82
- <% if (product.images.length > 0) { %>
83
- <% for (var i = 0; i < product.images.length; i++) { %>
84
- <% var item = product.images[i]; %>
85
- <div class="swiper-slide">
86
- <% var media = $imports.media_parse(item.src); %>
87
- <% var classList = 'w-100' %>
88
- <% if (initialSlide != i) { %>
89
- <% classList = classList + ' d-none' %>
90
- <% } %>
91
- <% if (media.mp4 || media.hls) { %>
92
- <% include ('video_html_tpl', {
93
- media: media,
94
- padding_bottom: $imports.image_padding_bottom(item.width, item.height,'unlimit'),
95
- class_name: classList
96
- }) %>
97
- <% } else { %>
98
- <div style="padding-bottom:<%= $imports.image_padding_bottom(item.width, item.height,'unlimit') %>;" class="position-relative w-100 zoom <% if (initialSlide != i) { %> d-none <% } %>">
99
- <img
100
- data-lazy="<%= $imports.reset_image(item.src, '1080x') %>"
101
- src="{{shop.default_img}}"
102
- class="product-image__swiper_img imglazy loading_bg"
103
- data-zoom-src="<%= $imports.reset_image(item.src, '1080x') %>"
104
- data-zoom-width="<% if (item.width < 1080) { %><%= item.width %><% } else { %>1080<% } %>"
105
- data-zoom-height="<% if (item.width < 1080) { %><%= item.height %><% } else { %><%= (1080/item.aspect_ratio).toFixed() %><% } %>"
106
- alt="<%= item.alt || product.title %>" >
107
- </div>
108
- <% } %>
109
- </div>
110
- <% } %>
111
- <% } else { %>
112
- <div class="swiper-slide">
113
- <div style="padding-bottom:100%">
114
- {% include 'lazyimg', src: commonImg %}
115
- </div>
116
- </div>
117
- <% } %>
118
- </div>
119
- <% if (product.images.length > 1) { %>
120
- <a href="javascript:;" class="sep-loaded-slider__button sep-loaded-slider__button-prev d-none d-md-block"><i class="sep-font sep-font-angle-left"></i></a>
121
- <a href="javascript:;" class="sep-loaded-slider__button sep-loaded-slider__button-next d-none d-md-block"><i class="sep-font sep-font-angle-right"></i></a>
122
- <% } %>
123
- </div>
124
- <div class="product-image__swiper_bullets"><%= initialSlide + 1 %> / <%= product.images.length %></div>
125
- {% comment %} 缩略图 {% endcomment %}
126
- <% if (product.images.length > 1) { %>
127
- <div class="product-image__thumbs">
128
- <div class="product-image__thumbs-content">
129
- <% var thumbWidth = 80; %>
130
- <% var marginLeft = 0; %>
131
- <% var size = product.images.length; %>
132
- <% var maxIdx = product.images.length - 6; %>
133
- <% if (initialSlide < 6) { %>
134
- <% marginLeft = 0; %>
135
- <% } else if (initialSlide >= maxIdx && size > 6 ) { %>
136
- <% marginLeft = maxIdx * thumbWidth; %>
137
- <% } else { %>
138
- <% marginLeft = initialSlide * thumbWidth; %>
139
- <% } %>
140
-
141
- <% for (var i = 0; i < product.images.length; i++) { %>
142
- <% var item = product.images[i]; %>
143
- <% var inView = 0; %>
144
- <% var offsetLeft = i * thumbWidth - marginLeft; %>
145
- <% if (offsetLeft >= 0 && offsetLeft < 480) { %>
146
- <% inView = 1; %>
147
- <% } %>
148
- <div class="product-image__thumbs-item position-relative <% if (initialSlide == i) { %>slick-slide slick-current<% } %>" style="margin-left:<% if (i == 0) { %>-<%= marginLeft %><% } %>px" data-thumb-idx="<%= i %>" >
149
- <img class="<% if (inView == 0) { %>lazy-<% } %>lazyload" src="{{shop.default_img}}" data-src="<%= $imports.reset_image(item.src, '100x') %>" alt="<%= item.alt || product.title %>">
150
- <% var media = $imports.media_parse(item.src); %>
151
- <% if (media.mp4 || media.hls) { %>
152
- {% include 'video_thumb_icon' %}
153
- <% } %>
154
- </div>
155
- <% } %>
156
- </div>
157
- <div class="swiper-button-prev product-image__thumbs_button-prev-ajax product-image__thumbs_btn sep-font sep-font-angle-left"></div>
158
- <div class="swiper-button-next product-image__thumbs_button-next-ajax product-image__thumbs_btn sep-font sep-font-angle-right"></div>
159
- </div>
160
- <% } %>
161
-
162
- {% comment %} 商品标签 {% endcomment %}
163
- <% var selected = selectedVariant || product; %>
164
- <% var priceMinus = selected.compare_at_price - selected.price; %>
165
- <% var save_label = false; %>
166
- <% var discount_label = false; %>
167
-
168
- <% if (product.available && {{settings.product_save_amount | default: false}}) { %>
169
- <% save_label = true; %>
170
- <% } %>
171
- <% if (product.available && {{settings.is_discount_show | default: false}}) { %>
172
- <% discount_label = true; %>
173
- <% } %>
174
-
175
- <% if (save_label == true || discount_label == true) { %>
176
- <div class="product-info__label product-info__label-{{settings.label_style | default: 'triangle'}}"
177
- style="<% if (selected.off_ratio <= 0 && selected.compare_at_price <= selected.price) { %> opacity: 0 <% } %>">
178
- {% comment %} 折扣 {% endcomment %}
179
- <% if (discount_label) { %>
180
- <div class="product-info__discount-label product-info__header_tag">
181
- <%- "{{ 'i18n.product.product_detail.off' | t }}".replace(/\{\{\s*count\s*\}\}/, (selected.off_ratio)) %>
182
- </div>
183
- <% } %>
184
- {% comment %} 优惠金额 {% endcomment %}
185
- <% if (save_label == true) { %>
186
- <div class="product-info__save-label">
187
- <% var saved_amount = $imports.finance_money_with_symbol((selected.compare_at_price - selected.price).toFixed(2)); %>
188
- <%- "{{ 'i18n.product.product_detail.save_html' | t }}".replace(/\{\{\s*saved_amount\s*\}\}/, saved_amount) %>
189
- </div>
190
- <% } %>
191
- </div>
192
- <% } %>
193
-
194
- </div>
195
-
196
- <form class="product-info product-info-<%= product.id %> col-12 col-md-6 properties">
197
- <div class="product-info__header">
198
- <div class="product-info__vendor dj_skin_product_list_title"><%= product.vendor %></div>
199
- <h1 class="product-info__header_title dj_skin_product_title"><%= product.title %></h1>
200
- <% if (product.brief) { %>
201
- <p class="product-info__header_brief"><%= product.brief %></p>
202
- <% } %>
203
- {% if settings.is_sku_show %}
204
- <p class="product-info__header-sku"><% if (selectedVariant) { %> <%= selectedVariant.sku %> <% } %></p>
205
- {% endif %}
206
- <div class="product-info__header_price-wrapper">
207
- <div class="product-info__header_price-wrapper-left">
208
- <% var current = selectedVariant || product; %>
209
-
210
- <span class="product-info__header_price dj_skin_product_detail_price money">
211
- <% if (selectedVariant) { %>
212
- <%= $imports.finance_money_with_symbol((selectedVariant.price)) %>
213
- <% } else { %>
214
- <% if (priceMax > priceMin) { %>
215
- <%= $imports.finance_money_with_symbol((priceMin)) %> - <%= $imports.finance_money_with_symbol((priceMax)) %>
216
- <% } else { %>
217
- <%= $imports.finance_money_with_symbol((priceMin)) %>
218
- <% } %>
219
- <% } %>
220
- </span>
221
-
222
- <% var price_minus = current.compare_at_price - current.price; %>
223
- <% if (price_minus > 0) { %>
224
- <span class="product-info__header_compare-at-price dj_skin_product_compare_at_price money">
225
- <%= $imports.finance_money_with_symbol((current.compare_at_price)) %>
226
- </span>
227
- <% } %>
228
- </div>
229
- <span class="product-info__header_sales ">
230
- <%- "{{ 'i18n.product.product_detail.sold' | t }}".replace(/\{\{\s*count\s*\}\}/, (product.sales)) %>
231
- </span>
232
- </div>
233
- </div>
234
-
235
- <input type="hidden" name="product_id" value="<%= product.id %>" />
236
- <input type="hidden" name="variant_id" id="selected_variant_id_<%= product.id %>" value="<% if (selectedVariantId && selectedVariant.available_quantity > 0 ) { %><%= selectedVariantId %><% } %>" />
237
-
238
- <div class="product-info__body">
239
- <% var variant_type = "{{settings.variant_type | default: 'button'}}"; %>
240
- <div class="product-info__variants ">
241
- <% for (var i = 0; i < product.options.length; i++) { %>
242
- <% var opt = product.options[i]; %>
243
- <% var optIdx = 'option' + (i + 1); %>
244
- <% var optname = opt.name.toLowerCase(); %>
245
- <% var selectedOptValue = ""; %>
246
- <% if (selectedVariant) { %>
247
- <% selectedOptValue = selectedVariant[optIdx]; %>
248
- <% } %>
249
- <% var is_color = false; %>
250
- {% if settings.product_color_swatches %}
251
- <% if (optname.includes('color') || optname.includes('colour') ) { %>
252
- <% is_color = true; %>
253
- <% } %>
254
- {% endif %}
255
-
256
- <% var variantDisabledArray = []; %>
257
- <% for (var j = 0; j < opt.values.length; j++) { %>
258
- <% var value = opt.values[j]; %>
259
- <% if (selectedVariant) { %>
260
- <% var variantDisabled = 1; %>
261
- <% var option1Value = selectedVariant.option1 || ''; %>
262
- <% if (optIdx.includes('option1')) { %>
263
- <% var option1Value = value || ''; %>
264
- <% } %>
265
- <% var option2Value = selectedVariant.option2 || ''; %>
266
- <% if (optIdx.includes('option2')) { %>
267
- <% var option2Value = value || ''; %>
268
- <% } %>
269
- <% var option3Value = selectedVariant.option3 || ''; %>
270
- <% if (optIdx.includes('option3')) { %>
271
- <% var option3Value = value || ''; %>
272
- <% } %>
273
-
274
- <% for (var m = 0; m < product.variants.length; m++) { %>
275
- <% var variant = product.variants[m]; %>
276
- <% var v1 = variant.option1 || ''; %>
277
- <% var v2 = variant.option2 || ''; %>
278
- <% var v3 = variant.option3 || ''; %>
279
- <% if ( variant.available && option1Value == v1 && option2Value == v2 && option3Value == v3) { %>
280
- <% variantDisabled = 0; %>
281
- <% } %>
282
- <% } %>
283
- <% } else { %>
284
- {% comment %}没有选中子商品需要检查该属性值是否有对应的子商品,没有需要禁用{% endcomment %}
285
- <% var variantExists = 0; %>
286
- <% if (optIdx.includes('option1') && variantExists == 0) { %>
287
- <% for (var n = 0; n < product.variants.length; n++) { %>
288
- <% var variant = product.variants[n]; %>
289
- <% if (value == variant.option1 && variant.available_quantity > 0) { %>
290
- <% variantExists = 1; %>
291
- <% } %>
292
- <% } %>
293
- <% } %>
294
- <% if (optIdx.includes('option2') && variantExists == 0) { %>
295
- <% for (var n = 0; n < product.variants.length; n++) { %>
296
- <% var variant = product.variants[n]; %>
297
- <% if (value == variant.option2 && variant.available_quantity > 0) { %>
298
- <% variantExists = 1; %>
299
- <% } %>
300
- <% } %>
301
- <% } %>
302
- <% if (optIdx.includes('option3') && variantExists == 0) { %>
303
- <% for (var n = 0; n < product.variants.length; n++) { %>
304
- <% var variant = product.variants[n]; %>
305
- <% if (value == variant.option3 && variant.available_quantity > 0) { %>
306
- <% variantExists = 1; %>
307
- <% } %>
308
- <% } %>
309
- <% } %>
310
-
311
- <% if (variantExists == 0) { %>
312
- <% variantDisabled = 1; %>
313
- <% } %>
314
- <% } %>
315
- <% if (!(product.available || product.published)) { %>
316
- <% variantDisabled = 1; %>
317
- <% } %>
318
-
319
- <% variantDisabledArray.push(variantDisabled); %>
320
- <% } %>
321
-
322
- <% if (is_color || variant_type == 'button') { %>
323
- <div class="product-info__variants_items">
324
- <div class="product-info__variants_title">
325
- <%= opt.name %>
326
- <% if (is_color) { %>
327
- <span id="variant_color-label"><% if (selectedOptValue) { %> - <%= selectedOptValue %><% } %></span>
328
- <% } %>
329
- </div>
330
- <div class="product-info__variants_value-wrapper">
331
- <% for (var j = 0; j < opt.values.length; j++) { %>
332
- <% var value = opt.values[j]; %>
333
- <% var isDisabled = +variantDisabledArray[j]; %>
334
- <span class="btn product-info__variants_value <% if (is_color) { %>product-info__variants_value_color<% } %>">
335
- <input type="radio" class="d-none product-info__variants_radio" name="<%= optIdx + '-' + product.id %>" id="<%= optIdx + '-' + j + '-' + product.id %>" <% if (isDisabled == 1) { %> disabled <% } else if (value == selectedOptValue) { %> checked <% } %> value="<%= value %>" />
336
- <% if (is_color) { %>
337
- <label data-iscolor style="background-color: <%= value %>;" for="<%= optIdx + '-' + j + '-' + product.id %>" data-variants-value="<%= value %>" class="mb-0" data-options-order="<%= i %>" data-click="select"></label>
338
- <% } else { %>
339
- <label for="<%= optIdx + '-' + j + '-' + product.id %>" data-variants-value="<%= value %>" class="mb-0" data-options-order="<%= i %>" data-click="select">
340
- <%= value %>
341
- </label>
342
- <% } %>
343
- </span>
344
- <% } %>
345
- </div>
346
- </div>
347
- <% } else { %>
348
- <div class="product-info__variants_items d-inline-block w-100">
349
- <div class="dj_skin_title_font product-info__variants_title"><%= opt.name %></div>
350
- <% var is_select_default_variants = {{settings.is_select_default_variants | default: false}}; %>
351
- <% var showDefault = false; %>
352
- <% if (!(selectedVariantId || is_select_default_variants)) { %>
353
- <% showDefault = true; %>
354
- <% } %>
355
- <select <% if (showDefault) { %>class="tw-text-black tw-opacity-50"<% } %>>
356
- <% if (showDefault) { %>
357
- <option disabled selected>{{'i18n.product.product_detail.please_select' | t}}</option>
358
- <% } %>
359
- <% for (var j = 0; j < opt.values.length; j++) { %>
360
- <% var value = opt.values[j]; %>
361
- <% var isDisabled = +variantDisabledArray[j]; %>
362
- <option data-soldout="{{ 'i18n.product.product_detail.sold_out' | t }}" <% if (isDisabled == 1) { %>disabled<% } %> name="<%= optIdx + '-' + product.id %>" id="<%= optIdx + '-' + j + '-' + product.id %>" class="text-center d-inline-block product-info__variants_value" value="<%= value %>" <% if (value == selectedOptValue) { %>selected<% } %>>
363
- <%= value %>
364
- <% if (isDisabled == 1) { %>({{ 'i18n.product.product_detail.sold_out' | t }})<% } %>
365
- </option>
366
- <% } %>
367
- </select>
368
- </div>
369
- <% } %>
370
- <% } %>
371
- </div>
372
- <div class="product-info__qty_container">
373
- <div class="qty-title product-info__qty_title">
374
- {{ 'i18n.product.product_detail.qty' | t }}
375
- <% if (selectedVariant) { %>
376
- <span class="product-info__qty_stock">
377
- <% if (selectedVariant.inventory_quantity > 0 && product.inventory_tracking) { %>
378
- <%- "{{ 'i18n.product.product_detail.in_stock' | t }}".replace(/\{\{\s*count\s*\}\}/, (selectedVariant.inventory_quantity)) %>
379
- <% } %>
380
- </span>
381
- <% } %>
382
- </div>
383
- <div class="product-info__qty <% if (variant_type == 'dropdown') { %> product-info__qty-dropdown <% } %>">
384
- <button type="button" class="btn product-info__qty_btn product-info__qty_decr" data-click="decrease" disabled="">-</button>
385
- <input class="form-control product-info__qty_num" id="product_quantity_<%= product.id %>" name="quantity" type="text" value="1">
386
- <button type="button" class="btn product-info__qty_btn product-info__qty_incr" data-click="increase">+</button>
387
- </div>
388
- </div>
389
- </div>
390
-
391
- {% assign btns = 0 %}
392
- {% if settings.is_add_to_cart_show %}
393
- {% assign btns = btns | plus: 1 %}
394
- {% endif %}
395
- {% if settings.is_payment_btn_show %}
396
- {% assign btns = btns | plus: 1 %}
397
- {% endif %}
398
- <div class="product-info__btn product-info__btn_{{btns}}">
399
- <% if (product.published && product.available) { %>
400
- {% if settings.is_add_to_cart_show %}
401
- <button type="button" {% unless settings.is_payment_btn_show %} class="btn btn-primary" {% else %} class="btn btn-secondary" {% endunless %} data-click="addToCart" data-track="click" data-track-content="{% if settings.add_to_cart_process == "to_checkout" %}checkout{% else %}add_to_cart{% endif %}" data-track-source="quick_shop">
402
- {{ 'i18n.product.product_detail.add_to_cart' | t }}
403
- </button>
404
- {% endif %}
405
- <button type="button" class="btn btn-primary {% unless settings.is_payment_btn_show %}d-none{% endunless %} " data-click="submit" data-track="click" data-track-content="checkout" data-track-source="quick_shop">{{ 'i18n.product.product_detail.buy_now' | t }}</button>
406
- <% } else { %>
407
- <button type="button" class="btn btn-primary" style="width: 100%;" disabled>{{ 'i18n.product.product_detail.sold_out' | t }}</button>
408
- <% } %>
409
- </div>
410
- <div class="product-info__url">
411
- <a href="<%= product.url %>">{{ 'i18n.product.product_detail.view_product_detail' | t }}</a>
412
- </div>
413
- </form>
414
- </div>
415
- </div>
416
- </div>
417
- </div>
418
- </div>
419
- </div>
420
- </script>
421
-
422
-
423
-
@@ -1,46 +0,0 @@
1
- {% comment %}
2
- 商品标签
3
- product: 大商品;
4
- is_opacity: true则保留product-info__label的dom;
5
- product_selected: 需要切换子款式的时候填子款式;
6
- {% endcomment %}
7
-
8
- {% assign opacity = is_opacity | default : false %}
9
- {% assign selected = product_selected | default: product %}
10
-
11
- {% assign save_label = false %}
12
- {% assign discount_label = false %}
13
-
14
- {% if opacity == true %}
15
- {% if product.available and settings.product_save_amount %}
16
- {% assign save_label = true %}
17
- {% endif %}
18
- {% if product.available and settings.is_discount_show %}
19
- {% assign discount_label = true %}
20
- {% endif %}
21
- {% else %}
22
- {% if product.available and product.compare_at_price > product.price and settings.product_save_amount %}
23
- {% assign save_label = true %}
24
- {% endif %}
25
- {% if product.available and product.off_ratio > 0 and settings.is_discount_show %}
26
- {% assign discount_label = true %}
27
- {% endif %}
28
- {% endif %}
29
- {% if save_label == true or discount_label == true %}
30
- <div class="product-info__label product-info__label-{{settings.label_style | default: 'triangle'}}"
31
- style="{% if opacity == true and selected.off_ratio <= 0 and selected.compare_at_price <= selected.price %}opacity: 0{% endif %}">
32
- {% comment %} 折扣 {% endcomment %}
33
- {% if discount_label == true %}
34
- <div class="product-info__discount-label product-info__header_tag">
35
- {{ 'i18n.product.product_detail.off' | t: count: selected.off_ratio }}
36
- </div>
37
- {% endif %}
38
- {% comment %} 优惠金额 {% endcomment %}
39
- {% if save_label == true %}
40
- <div class="product-info__save-label">
41
- {% capture saved_amount %}{{ selected.compare_at_price | minus: selected.price | money_with_symbol }}{% endcapture %}
42
- {{ 'i18n.product.product_detail.save_html' | t: saved_amount: saved_amount }}
43
- </div>
44
- {% endif %}
45
- </div>
46
- {% endif %}