@toototech/webbuilder-plugins 0.1.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 (193) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +3 -0
  3. package/dist/basic/cssScope.d.ts +3 -0
  4. package/dist/basic/index.d.ts +81 -0
  5. package/dist/basic/injectStyle.d.ts +20 -0
  6. package/dist/basic/plugin.d.ts +19 -0
  7. package/dist/basic/publisher.d.ts +4 -0
  8. package/dist/basic/registries/interactive/accordion/index.d.ts +3 -0
  9. package/dist/basic/registries/interactive/backButton/index.d.ts +3 -0
  10. package/dist/basic/registries/interactive/button/index.d.ts +10 -0
  11. package/dist/basic/registries/interactive/countUp/index.d.ts +9 -0
  12. package/dist/basic/registries/interactive/customCode/index.d.ts +3 -0
  13. package/dist/basic/registries/interactive/index.d.ts +2 -0
  14. package/dist/basic/registries/interactive/inquiryForm/index.d.ts +3 -0
  15. package/dist/basic/registries/interactive/klaviyoSubscribe/index.d.ts +3 -0
  16. package/dist/basic/registries/interactive/popup/index.d.ts +5 -0
  17. package/dist/basic/registries/interactive/salesmartlyChatButton/index.d.ts +10 -0
  18. package/dist/basic/registries/interactive/search/index.d.ts +10 -0
  19. package/dist/basic/registries/interactive/socialShare/index.d.ts +33 -0
  20. package/dist/basic/registries/interactive/tabs/index.d.ts +3 -0
  21. package/dist/basic/registries/layout/container/index.d.ts +19 -0
  22. package/dist/basic/registries/layout/divider/index.d.ts +7 -0
  23. package/dist/basic/registries/layout/grid/index.d.ts +11 -0
  24. package/dist/basic/registries/layout/index.d.ts +2 -0
  25. package/dist/basic/registries/layout/layoutBase/index.d.ts +10 -0
  26. package/dist/basic/registries/layout/section/index.d.ts +3 -0
  27. package/dist/basic/registries/layout/sectionGridBlock/index.d.ts +3 -0
  28. package/dist/basic/registries/layout/spacer/index.d.ts +7 -0
  29. package/dist/basic/registries/media/banner/index.d.ts +11 -0
  30. package/dist/basic/registries/media/carousel/index.d.ts +6 -0
  31. package/dist/basic/registries/media/flipbook/index.d.ts +5 -0
  32. package/dist/basic/registries/media/icon/index.d.ts +3 -0
  33. package/dist/basic/registries/media/image/index.d.ts +3 -0
  34. package/dist/basic/registries/media/index.d.ts +2 -0
  35. package/dist/basic/registries/media/industryTabs/index.d.ts +3 -0
  36. package/dist/basic/registries/media/marquee/index.d.ts +4 -0
  37. package/dist/basic/registries/media/ourSolutions/helpers.d.ts +289 -0
  38. package/dist/basic/registries/media/ourSolutions/index.d.ts +4 -0
  39. package/dist/basic/registries/media/ourSolutions/script.d.ts +1 -0
  40. package/dist/basic/registries/media/ourSolutions/style.d.ts +1 -0
  41. package/dist/basic/registries/media/pdfViewer/index.d.ts +3 -0
  42. package/dist/basic/registries/media/productCategories/index.d.ts +4 -0
  43. package/dist/basic/registries/media/tabMediaGallery/index.d.ts +3 -0
  44. package/dist/basic/registries/media/video/index.d.ts +12 -0
  45. package/dist/basic/registries/navigation/footer/index.d.ts +10 -0
  46. package/dist/basic/registries/navigation/index.d.ts +2 -0
  47. package/dist/basic/registries/navigation/languageSwitcher/index.d.ts +6 -0
  48. package/dist/basic/registries/navigation/logo/index.d.ts +9 -0
  49. package/dist/basic/registries/navigation/navbar/constants.d.ts +38 -0
  50. package/dist/basic/registries/navigation/navbar/factories.d.ts +848 -0
  51. package/dist/basic/registries/navigation/navbar/helpers.d.ts +12 -0
  52. package/dist/basic/registries/navigation/navbar/index.d.ts +4 -0
  53. package/dist/basic/registries/navigation/navbar/registerMegaTypes.d.ts +2 -0
  54. package/dist/basic/registries/navigation/navbar/registerMenuTypes.d.ts +2 -0
  55. package/dist/basic/registries/navigation/navbar/registerRootTypes.d.ts +2 -0
  56. package/dist/basic/registries/navigation/navbar/script.d.ts +1 -0
  57. package/dist/basic/registries/navigation/navbar/style.d.ts +1 -0
  58. package/dist/basic/registries/navigation/socialLinks/index.d.ts +3 -0
  59. package/dist/basic/registries/section/allApplications/index.d.ts +3 -0
  60. package/dist/basic/registries/section/cardCarouselSection/index.d.ts +3 -0
  61. package/dist/basic/registries/section/caseSpotlight/index.d.ts +3 -0
  62. package/dist/basic/registries/section/companyScale/index.d.ts +3 -0
  63. package/dist/basic/registries/section/customizationGrid/index.d.ts +3 -0
  64. package/dist/basic/registries/section/factoryMap/index.d.ts +3 -0
  65. package/dist/basic/registries/section/focaHistoryTimeline/index.d.ts +3 -0
  66. package/dist/basic/registries/section/historyTimeline/index.d.ts +3 -0
  67. package/dist/basic/registries/section/homeBannerCarousel/index.d.ts +4 -0
  68. package/dist/basic/registries/section/hotspotShowcase/index.d.ts +30 -0
  69. package/dist/basic/registries/section/index.d.ts +2 -0
  70. package/dist/basic/registries/section/map/index.d.ts +4 -0
  71. package/dist/basic/registries/section/milestoneCardStrip/index.d.ts +3 -0
  72. package/dist/basic/registries/section/moreCardCarousel/index.d.ts +3 -0
  73. package/dist/basic/registries/section/ourAdvantages/index.d.ts +4 -0
  74. package/dist/basic/registries/section/overviewSplit/index.d.ts +3 -0
  75. package/dist/basic/registries/section/processTimeline/index.d.ts +3 -0
  76. package/dist/basic/registries/section/productCardStrip/index.d.ts +3 -0
  77. package/dist/basic/registries/section/resourceSection/index.d.ts +6 -0
  78. package/dist/basic/registries/section/responsiveHeroCarousel/index.d.ts +4 -0
  79. package/dist/basic/registries/section/serviceIconGrid/index.d.ts +4 -0
  80. package/dist/basic/registries/section/servicesCarousel/index.d.ts +4 -0
  81. package/dist/basic/registries/section/servicesShowcase/index.d.ts +4 -0
  82. package/dist/basic/registries/section/servicesThb/index.d.ts +4 -0
  83. package/dist/basic/registries/section/solutionList/index.d.ts +4 -0
  84. package/dist/basic/registries/section/staticPinMap/index.d.ts +4 -0
  85. package/dist/basic/registries/section/statsCards/index.d.ts +3 -0
  86. package/dist/basic/registries/section/swiperRuntime.d.ts +3 -0
  87. package/dist/basic/registries/shared/sharedTraits.d.ts +37 -0
  88. package/dist/basic/registries/types.d.ts +5 -0
  89. package/dist/basic/registries/typography/heading/index.d.ts +8 -0
  90. package/dist/basic/registries/typography/index.d.ts +2 -0
  91. package/dist/basic/registries/typography/textEditor/index.d.ts +6 -0
  92. package/dist/basic/registryManifest.d.ts +9 -0
  93. package/dist/basic/styleHelpers.d.ts +29 -0
  94. package/dist/basic/svgIcon.d.ts +11 -0
  95. package/dist/basic/traitBridge.d.ts +20 -0
  96. package/dist/basic/traitFactory.d.ts +106 -0
  97. package/dist/basic.js +1146 -0
  98. package/dist/cms/cmsFactory.d.ts +164 -0
  99. package/dist/cms/dynamicRenderPipeline.d.ts +12 -0
  100. package/dist/cms/index.d.ts +31 -0
  101. package/dist/cms/plugin.d.ts +12 -0
  102. package/dist/cms/publisher.d.ts +7 -0
  103. package/dist/cms/registries/dynamic/cms/constants.d.ts +16 -0
  104. package/dist/cms/registries/dynamic/cms/dynamicField/bindings.d.ts +78 -0
  105. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/breadcrumbBlock.d.ts +1 -0
  106. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/conditionalBlock.d.ts +1 -0
  107. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/datetimeBlock.d.ts +1 -0
  108. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/htmlBlock.d.ts +1 -0
  109. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/imageBlock.d.ts +1 -0
  110. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/linkBlock.d.ts +1 -0
  111. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/seoBlock.d.ts +1 -0
  112. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/textBlock.d.ts +1 -0
  113. package/dist/cms/registries/dynamic/cms/dynamicField/blocks/tocBlock.d.ts +1 -0
  114. package/dist/cms/registries/dynamic/cms/dynamicField/constants.d.ts +19 -0
  115. package/dist/cms/registries/dynamic/cms/dynamicField/helpers.d.ts +52 -0
  116. package/dist/cms/registries/dynamic/cms/dynamicField/registerBlock.d.ts +57 -0
  117. package/dist/cms/registries/dynamic/cms/dynamicField/styles.d.ts +7 -0
  118. package/dist/cms/registries/dynamic/cms/media/previewMediaTrait.d.ts +7 -0
  119. package/dist/cms/registries/dynamic/cms/menu/siteMenuAttrs.d.ts +11 -0
  120. package/dist/cms/registries/dynamic/cms/menuTree/menuTreeAttrs.d.ts +8 -0
  121. package/dist/cms/registries/dynamic/cms/post/styles.d.ts +6 -0
  122. package/dist/cms/registries/dynamic/cms/product/detail.styles.d.ts +1 -0
  123. package/dist/cms/registries/dynamic/cms/product/detailV2.styles.d.ts +1 -0
  124. package/dist/cms/registries/dynamic/cms/product/previewProductTrait.d.ts +6 -0
  125. package/dist/cms/registries/dynamic/cms/product/styles.d.ts +6 -0
  126. package/dist/cms/registries/dynamic/dataProvider.d.ts +45 -0
  127. package/dist/cms/registries/dynamic/loopGrid/paginationStyles.d.ts +5 -0
  128. package/dist/cms/registries/dynamic/loopGrid/preview.d.ts +16 -0
  129. package/dist/cms/registries/dynamic/loopGrid/publisher.d.ts +3 -0
  130. package/dist/cms/registries/dynamic/loopGrid/types.d.ts +97 -0
  131. package/dist/cms/registries/navigation/navbarThb/index.d.ts +3 -0
  132. package/dist/cms/registries/navigation/navbarThb/script.d.ts +1 -0
  133. package/dist/cms/registries/navigation/navbarThb/style.d.ts +1 -0
  134. package/dist/cms.js +4535 -0
  135. package/dist/global-settings/components/FontFamilySelect.vue.d.ts +29 -0
  136. package/dist/global-settings/components/FontManagerPanel.vue.d.ts +37 -0
  137. package/dist/global-settings/index.d.ts +8 -0
  138. package/dist/global-settings/plugin.d.ts +3 -0
  139. package/dist/global-settings/publisher.d.ts +15 -0
  140. package/dist/global-settings/runtime/canvasInjection.d.ts +13 -0
  141. package/dist/global-settings/runtime/panelDraftSave.d.ts +17 -0
  142. package/dist/global-settings/runtime/settingsSource.d.ts +4 -0
  143. package/dist/global-settings/useFontManager.d.ts +38 -0
  144. package/dist/global-settings/useGoogleFonts.d.ts +20 -0
  145. package/dist/global-settings/vue.d.ts +1 -0
  146. package/dist/global-settings.js +66 -0
  147. package/dist/i18n/I18nPanel.vue.d.ts +23 -0
  148. package/dist/i18n/i18n.d.ts +25 -0
  149. package/dist/i18n/index.d.ts +7 -0
  150. package/dist/i18n/languageOrder.d.ts +9 -0
  151. package/dist/i18n/plugin.d.ts +21 -0
  152. package/dist/i18n/types.d.ts +101 -0
  153. package/dist/i18n/useWebBuilderI18n.d.ts +164 -0
  154. package/dist/i18n/vue.d.ts +1 -0
  155. package/dist/i18n-BYR3l48y.js +959 -0
  156. package/dist/i18n.js +929 -0
  157. package/dist/index-CxJlLwvG.js +35378 -0
  158. package/dist/index-DWfJ4PBm.js +5724 -0
  159. package/dist/index.d.ts +9 -0
  160. package/dist/index.js +12 -0
  161. package/dist/layout-template/components/LayoutPanel.vue.d.ts +37 -0
  162. package/dist/layout-template/components/TemplateRulesPanel.vue.d.ts +41 -0
  163. package/dist/layout-template/config/layoutSharedResources.d.ts +9 -0
  164. package/dist/layout-template/config/templateSharedResources.d.ts +28 -0
  165. package/dist/layout-template/index.d.ts +9 -0
  166. package/dist/layout-template/plugin.d.ts +13 -0
  167. package/dist/layout-template/runtime/storageAdapter.d.ts +49 -0
  168. package/dist/layout-template/utils/layoutProjectData.d.ts +15 -0
  169. package/dist/layout-template/utils/layoutRulePages.d.ts +19 -0
  170. package/dist/layout-template/utils/layoutSettings.d.ts +45 -0
  171. package/dist/layout-template/utils/templateRules.d.ts +52 -0
  172. package/dist/layout-template/vue.d.ts +2 -0
  173. package/dist/layout-template.js +435 -0
  174. package/dist/layoutSettings-D4SYUMri.js +252 -0
  175. package/dist/plugin-BPA8qlaC.js +40 -0
  176. package/dist/plugin-C0PrxrIe.js +228 -0
  177. package/dist/plugin-DQshk1sY.js +361 -0
  178. package/dist/plugin-DebyCjXx.js +191 -0
  179. package/dist/plugin-Dr6TOtyH.js +73 -0
  180. package/dist/publisher/index.d.ts +5 -0
  181. package/dist/publisher/publisherAssets.d.ts +9 -0
  182. package/dist/publisher/publisherComponents.d.ts +7 -0
  183. package/dist/publisher/publisherPlugins.d.ts +12 -0
  184. package/dist/publisher-C6VWXq8u.js +25 -0
  185. package/dist/publisher.js +1711 -0
  186. package/dist/solar-BsElUqfQ.js +29843 -0
  187. package/dist/style.css +1181 -0
  188. package/dist/templateSharedResources-D1u7eFIs.js +89 -0
  189. package/dist/types-DNbok59z.js +2359 -0
  190. package/dist/useFontManager-CdrLq1eG.js +336 -0
  191. package/dist/vue.d.ts +3 -0
  192. package/dist/vue.js +2171 -0
  193. package/package.json +77 -0
package/dist/basic.js ADDED
@@ -0,0 +1,1146 @@
1
+ import { m as makeCheckboxTrait, a as makeNumberTrait, b as makeImagePickerTrait, c as makeTextTrait, d as makeTextareaTrait, e as makeLinkTrait, f as makeLinkTargetTrait } from "./index-CxJlLwvG.js";
2
+ import { B, g, h, i, L, S, T, U, j, W, k, l, n, o, p, q, r, s, t, u, v, w, x, y, z, A, C, D, E, F, G, H, I, J, K, M, N, O, P, Q, R, V, X, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, aA, aB, aC, aD, aE, aF, aG, aH, aI, aJ, aK, aL, aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ, a_, a$, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, bA, bB, bC, bD, bE, bF, bG, bH, bI, bJ, bK, bL, bM, bN, bO, bP, bQ, bR, bS, bT, bU, bV, bW, bX, bY, bZ, b_, b$, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, ca, cb, cc, cd, ce } from "./index-CxJlLwvG.js";
3
+ import { B as B2, a, b, d, c, g as g2 } from "./plugin-DebyCjXx.js";
4
+ import { B as B3, r as r2 } from "./publisher-C6VWXq8u.js";
5
+ const WB_BANNER_TYPE = "wb-banner";
6
+ const WB_BANNER_SLIDE_TYPE = "wb-banner-slide";
7
+ const BANNER_ROOT_CLASS = "wb-banner";
8
+ function ensureClass(component, className) {
9
+ var _a;
10
+ if (!(component == null ? void 0 : component.addClass))
11
+ return;
12
+ const classList = ((_a = component.getClasses) == null ? void 0 : _a.call(component)) ?? [];
13
+ if (!classList.includes(className)) {
14
+ component.addClass(className);
15
+ }
16
+ }
17
+ function lockBannerInternalNode(component) {
18
+ if (!(component == null ? void 0 : component.set))
19
+ return;
20
+ component.set({
21
+ selectable: false,
22
+ droppable: false,
23
+ draggable: false,
24
+ highlightable: false,
25
+ layerable: false,
26
+ editable: false
27
+ });
28
+ }
29
+ function migrateBannerStructureClasses(model) {
30
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
31
+ ensureClass(model, BANNER_ROOT_CLASS);
32
+ const swiper = (_c = (_b = (_a = model.components) == null ? void 0 : _a.call(model)) == null ? void 0 : _b.at) == null ? void 0 : _c.call(_b, 0);
33
+ ensureClass(swiper, "wb-banner__swiper");
34
+ (_d = swiper == null ? void 0 : swiper.set) == null ? void 0 : _d.call(swiper, {
35
+ selectable: false,
36
+ droppable: false,
37
+ draggable: false,
38
+ highlightable: false,
39
+ editable: false,
40
+ layerable: true,
41
+ name: "Slides"
42
+ });
43
+ const wrapper = (_g = (_f = (_e = swiper == null ? void 0 : swiper.components) == null ? void 0 : _e.call(swiper)) == null ? void 0 : _f.at) == null ? void 0 : _g.call(_f, 0);
44
+ (_h = wrapper == null ? void 0 : wrapper.set) == null ? void 0 : _h.call(wrapper, {
45
+ selectable: false,
46
+ droppable: false,
47
+ draggable: false,
48
+ highlightable: false,
49
+ editable: false,
50
+ layerable: true,
51
+ name: "Slide List"
52
+ });
53
+ const slides = ((_i = wrapper == null ? void 0 : wrapper.components) == null ? void 0 : _i.call(wrapper)) ?? [];
54
+ slides.forEach((slide, index) => {
55
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s, _t, _u, _v, _w, _x, _y, _z, _A;
56
+ upgradeBannerSlideModel(slide, index);
57
+ ensureClass(slide, "wb-banner__slide");
58
+ const bg2 = (_c2 = (_b2 = (_a2 = slide.components) == null ? void 0 : _a2.call(slide)) == null ? void 0 : _b2.at) == null ? void 0 : _c2.call(_b2, 0);
59
+ ensureClass(bg2, "wb-banner__bg");
60
+ lockBannerInternalNode(bg2);
61
+ const overlay = (_f2 = (_e2 = (_d2 = slide.components) == null ? void 0 : _d2.call(slide)) == null ? void 0 : _e2.at) == null ? void 0 : _f2.call(_e2, 1);
62
+ ensureClass(overlay, "wb-banner__overlay");
63
+ lockBannerInternalNode(overlay);
64
+ const container = (_i2 = (_h2 = (_g2 = overlay == null ? void 0 : overlay.components) == null ? void 0 : _g2.call(overlay)) == null ? void 0 : _h2.at) == null ? void 0 : _i2.call(_h2, 0);
65
+ ensureClass(container, "wb-banner__container");
66
+ lockBannerInternalNode(container);
67
+ const content = (_l2 = (_k2 = (_j2 = container == null ? void 0 : container.components) == null ? void 0 : _j2.call(container)) == null ? void 0 : _k2.at) == null ? void 0 : _l2.call(_k2, 0);
68
+ ensureClass(content, "wb-banner__content");
69
+ lockBannerInternalNode(content);
70
+ const title = (_o2 = (_n2 = (_m2 = content == null ? void 0 : content.components) == null ? void 0 : _m2.call(content)) == null ? void 0 : _n2.at) == null ? void 0 : _o2.call(_n2, 0);
71
+ ensureClass(title, "wb-banner__title");
72
+ lockBannerInternalNode(title);
73
+ const desc = (_r2 = (_q2 = (_p2 = content == null ? void 0 : content.components) == null ? void 0 : _p2.call(content)) == null ? void 0 : _q2.at) == null ? void 0 : _r2.call(_q2, 1);
74
+ ensureClass(desc, "wb-banner__desc");
75
+ lockBannerInternalNode(desc);
76
+ const cta = (_u = (_t = (_s = content == null ? void 0 : content.components) == null ? void 0 : _s.call(content)) == null ? void 0 : _t.at) == null ? void 0 : _u.call(_t, 2);
77
+ ensureClass(cta, "wb-banner__cta");
78
+ lockBannerInternalNode(cta);
79
+ const ctaLabel = (_x = (_w = (_v = cta == null ? void 0 : cta.components) == null ? void 0 : _v.call(cta)) == null ? void 0 : _w.at) == null ? void 0 : _x.call(_w, 0);
80
+ ensureClass(ctaLabel, "wb-banner__cta-label");
81
+ lockBannerInternalNode(ctaLabel);
82
+ const ctaIcon = (_A = (_z = (_y = cta == null ? void 0 : cta.components) == null ? void 0 : _y.call(cta)) == null ? void 0 : _z.at) == null ? void 0 : _A.call(_z, 1);
83
+ ensureClass(ctaIcon, "wb-banner__cta-icon");
84
+ lockBannerInternalNode(ctaIcon);
85
+ });
86
+ const pagination = (_l = (_k = (_j = swiper == null ? void 0 : swiper.components) == null ? void 0 : _j.call(swiper)) == null ? void 0 : _k.find) == null ? void 0 : _l.call(_k, (child) => {
87
+ var _a2, _b2, _c2;
88
+ return (_c2 = (_b2 = (_a2 = child.getClasses) == null ? void 0 : _a2.call(child)) == null ? void 0 : _b2.includes) == null ? void 0 : _c2.call(_b2, "swiper-pagination");
89
+ });
90
+ lockBannerInternalNode(pagination);
91
+ const prev = (_o = (_n = (_m = swiper == null ? void 0 : swiper.components) == null ? void 0 : _m.call(swiper)) == null ? void 0 : _n.find) == null ? void 0 : _o.call(_n, (child) => {
92
+ var _a2, _b2, _c2;
93
+ return (_c2 = (_b2 = (_a2 = child.getClasses) == null ? void 0 : _a2.call(child)) == null ? void 0 : _b2.includes) == null ? void 0 : _c2.call(_b2, "swiper-button-prev");
94
+ });
95
+ lockBannerInternalNode(prev);
96
+ const next = (_r = (_q = (_p = swiper == null ? void 0 : swiper.components) == null ? void 0 : _p.call(swiper)) == null ? void 0 : _q.find) == null ? void 0 : _r.call(_q, (child) => {
97
+ var _a2, _b2, _c2;
98
+ return (_c2 = (_b2 = (_a2 = child.getClasses) == null ? void 0 : _a2.call(child)) == null ? void 0 : _b2.includes) == null ? void 0 : _c2.call(_b2, "swiper-button-next");
99
+ });
100
+ lockBannerInternalNode(next);
101
+ }
102
+ function buildSlideDef(index) {
103
+ return {
104
+ type: WB_BANNER_SLIDE_TYPE,
105
+ tagName: "div",
106
+ name: `Banner Slide ${index + 1}`,
107
+ removable: true,
108
+ copyable: true,
109
+ selectable: true,
110
+ droppable: false,
111
+ highlightable: true,
112
+ draggable: ".swiper-wrapper",
113
+ attributes: { class: "swiper-slide wb-banner__slide" },
114
+ slideImage: "https://placehold.co/1920x1080/1a1a2e/ffffff",
115
+ slideImageAlt: "",
116
+ slideTitle: `Banner Title ${index + 1}`,
117
+ slideDescription: "Your subtitle text goes here. Describe your product or service.",
118
+ slideButtonText: "CONTACT NOW",
119
+ slideLinkUrl: "#",
120
+ slideLinkTarget: "_self",
121
+ components: [
122
+ {
123
+ tagName: "img",
124
+ removable: false,
125
+ copyable: false,
126
+ selectable: false,
127
+ droppable: false,
128
+ draggable: false,
129
+ highlightable: false,
130
+ layerable: false,
131
+ editable: false,
132
+ attributes: {
133
+ class: "wb-banner__bg",
134
+ src: "https://placehold.co/1920x1080/1a1a2e/ffffff",
135
+ alt: ""
136
+ }
137
+ },
138
+ {
139
+ tagName: "div",
140
+ selectable: false,
141
+ droppable: false,
142
+ draggable: false,
143
+ highlightable: false,
144
+ layerable: false,
145
+ editable: false,
146
+ attributes: { class: "wb-banner__overlay" },
147
+ components: [
148
+ {
149
+ tagName: "div",
150
+ selectable: false,
151
+ droppable: false,
152
+ draggable: false,
153
+ highlightable: false,
154
+ layerable: false,
155
+ editable: false,
156
+ attributes: { class: "wb-banner__container" },
157
+ components: [
158
+ {
159
+ tagName: "div",
160
+ selectable: false,
161
+ droppable: false,
162
+ draggable: false,
163
+ highlightable: false,
164
+ layerable: false,
165
+ editable: false,
166
+ attributes: { class: "wb-banner__content" },
167
+ components: [
168
+ {
169
+ tagName: "h2",
170
+ type: "text",
171
+ selectable: false,
172
+ droppable: false,
173
+ draggable: false,
174
+ highlightable: false,
175
+ layerable: false,
176
+ editable: false,
177
+ attributes: {
178
+ class: "ani wb-banner__title",
179
+ "swiper-animate-effect": "fadeInUp",
180
+ "swiper-animate-duration": "0.5s"
181
+ },
182
+ components: `Banner Title ${index + 1}`
183
+ },
184
+ {
185
+ tagName: "p",
186
+ type: "text",
187
+ selectable: false,
188
+ droppable: false,
189
+ draggable: false,
190
+ highlightable: false,
191
+ layerable: false,
192
+ editable: false,
193
+ attributes: {
194
+ class: "ani wb-banner__desc",
195
+ "swiper-animate-effect": "fadeInUp",
196
+ "swiper-animate-duration": "0.5s",
197
+ "swiper-animate-delay": "0.2s"
198
+ },
199
+ components: "Your subtitle text goes here. Describe your product or service."
200
+ },
201
+ {
202
+ tagName: "a",
203
+ selectable: false,
204
+ droppable: false,
205
+ draggable: false,
206
+ highlightable: false,
207
+ layerable: false,
208
+ editable: false,
209
+ attributes: {
210
+ class: "ani wb-banner__cta",
211
+ href: "#",
212
+ target: "_self",
213
+ "swiper-animate-effect": "fadeInUp",
214
+ "swiper-animate-duration": "0.5s",
215
+ "swiper-animate-delay": "0.4s"
216
+ },
217
+ components: [
218
+ {
219
+ tagName: "span",
220
+ type: "text",
221
+ selectable: false,
222
+ droppable: false,
223
+ draggable: false,
224
+ highlightable: false,
225
+ layerable: false,
226
+ editable: false,
227
+ attributes: { class: "wb-banner__cta-label" },
228
+ components: "CONTACT NOW"
229
+ },
230
+ {
231
+ tagName: "i",
232
+ type: "text",
233
+ selectable: false,
234
+ droppable: false,
235
+ draggable: false,
236
+ highlightable: false,
237
+ layerable: false,
238
+ editable: false,
239
+ attributes: { class: "wb-banner__cta-icon" },
240
+ components: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="7.545314788818359" height="13.798747062683105" viewBox="0 0 7.545314788818359 13.798747062683105"><path d="M0.19408162,1.1325252L5.989419,6.866704L0.23158942,12.685846C-0.02397071,12.941384,-0.02306027,13.356615,0.23356543,13.61324C0.49021322,13.869889,0.90542096,13.870777,1.160848,13.549639L7.3029509,7.4075375C7.3858061,7.3148007,7.4810295,7.2052526,7.4968181,7.1461372C7.5938425,6.9049888,7.5452747,6.6087008,7.3511844,6.3651543L1.1232733,0.13724433C0.86555904,-0.054758705,0.44844228,-0.05575816,0.19179367,0.20089003C-0.064810015,0.4575386,-0.06381055,0.87463331,0.19408162,1.1325252Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></svg>'
241
+ }
242
+ ]
243
+ }
244
+ ]
245
+ }
246
+ ]
247
+ }
248
+ ]
249
+ }
250
+ ]
251
+ };
252
+ }
253
+ function getSlideNodeAtPath(slide, path) {
254
+ var _a, _b, _c;
255
+ let current = slide;
256
+ for (const index of path) {
257
+ current = (_c = (_b = (_a = current == null ? void 0 : current.components) == null ? void 0 : _a.call(current)) == null ? void 0 : _b.at) == null ? void 0 : _c.call(_b, index);
258
+ if (!current)
259
+ return null;
260
+ }
261
+ return current;
262
+ }
263
+ function getBannerSlideTraits() {
264
+ return [
265
+ makeImagePickerTrait("背景图片", "slideImage", { showPreview: true }),
266
+ makeTextTrait("图片替代文字", "slideImageAlt", { placeholder: "Banner image alt" }),
267
+ makeTextareaTrait("标题", "slideTitle", { placeholder: "Banner Title", rows: 3 }),
268
+ makeTextareaTrait("内容", "slideDescription", { placeholder: "Banner description", rows: 4 }),
269
+ makeTextTrait("按钮文字", "slideButtonText", { placeholder: "CONTACT NOW" }),
270
+ makeLinkTrait({ label: "按钮链接", name: "slideLinkUrl", placeholder: "https://" }),
271
+ makeLinkTargetTrait({ label: "按钮打开方式", name: "slideLinkTarget" })
272
+ ];
273
+ }
274
+ function syncBannerSlideContent(slide) {
275
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
276
+ const bg2 = getSlideNodeAtPath(slide, [0]);
277
+ (_c = bg2 == null ? void 0 : bg2.addAttributes) == null ? void 0 : _c.call(bg2, {
278
+ src: ((_a = slide.get) == null ? void 0 : _a.call(slide, "slideImage")) || "https://placehold.co/1920x1080/1a1a2e/ffffff",
279
+ alt: ((_b = slide.get) == null ? void 0 : _b.call(slide, "slideImageAlt")) || ""
280
+ });
281
+ const title = getSlideNodeAtPath(slide, [1, 0, 0, 0]);
282
+ if (title)
283
+ (_e = title.components) == null ? void 0 : _e.call(title, ((_d = slide.get) == null ? void 0 : _d.call(slide, "slideTitle")) || "");
284
+ const desc = getSlideNodeAtPath(slide, [1, 0, 0, 1]);
285
+ if (desc)
286
+ (_g = desc.components) == null ? void 0 : _g.call(desc, ((_f = slide.get) == null ? void 0 : _f.call(slide, "slideDescription")) || "");
287
+ const cta = getSlideNodeAtPath(slide, [1, 0, 0, 2]);
288
+ (_j = cta == null ? void 0 : cta.addAttributes) == null ? void 0 : _j.call(cta, {
289
+ href: ((_h = slide.get) == null ? void 0 : _h.call(slide, "slideLinkUrl")) || "#",
290
+ target: ((_i = slide.get) == null ? void 0 : _i.call(slide, "slideLinkTarget")) || "_self"
291
+ });
292
+ const ctaLabel = getSlideNodeAtPath(slide, [1, 0, 0, 2, 0]);
293
+ if (ctaLabel)
294
+ (_l = ctaLabel.components) == null ? void 0 : _l.call(ctaLabel, ((_k = slide.get) == null ? void 0 : _k.call(slide, "slideButtonText")) || "");
295
+ }
296
+ function restoreBannerSlideContent(slide, fallbackIndex = 0) {
297
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
298
+ const bg2 = getSlideNodeAtPath(slide, [0]);
299
+ const title = getSlideNodeAtPath(slide, [1, 0, 0, 0]);
300
+ const desc = getSlideNodeAtPath(slide, [1, 0, 0, 1]);
301
+ const cta = getSlideNodeAtPath(slide, [1, 0, 0, 2]);
302
+ const ctaLabel = getSlideNodeAtPath(slide, [1, 0, 0, 2, 0]);
303
+ slide.set("slideImage", ((_b = (_a = bg2 == null ? void 0 : bg2.getAttributes) == null ? void 0 : _a.call(bg2)) == null ? void 0 : _b.src) || "https://placehold.co/1920x1080/1a1a2e/ffffff", { silent: true });
304
+ slide.set("slideImageAlt", ((_d = (_c = bg2 == null ? void 0 : bg2.getAttributes) == null ? void 0 : _c.call(bg2)) == null ? void 0 : _d.alt) || "", { silent: true });
305
+ slide.set("slideTitle", ((_f = (_e = title == null ? void 0 : title.toHTML) == null ? void 0 : _e.call(title)) == null ? void 0 : _f.replace(/^<[^>]+>|<\/[^>]+>$/g, "")) || ((_g = title == null ? void 0 : title.get) == null ? void 0 : _g.call(title, "content")) || `Banner Title ${fallbackIndex + 1}`, { silent: true });
306
+ slide.set("slideDescription", ((_i = (_h = desc == null ? void 0 : desc.toHTML) == null ? void 0 : _h.call(desc)) == null ? void 0 : _i.replace(/^<[^>]+>|<\/[^>]+>$/g, "")) || ((_j = desc == null ? void 0 : desc.get) == null ? void 0 : _j.call(desc, "content")) || "Your subtitle text goes here. Describe your product or service.", { silent: true });
307
+ slide.set("slideButtonText", ((_l = (_k = ctaLabel == null ? void 0 : ctaLabel.toHTML) == null ? void 0 : _k.call(ctaLabel)) == null ? void 0 : _l.replace(/^<[^>]+>|<\/[^>]+>$/g, "")) || ((_m = ctaLabel == null ? void 0 : ctaLabel.get) == null ? void 0 : _m.call(ctaLabel, "content")) || "CONTACT NOW", { silent: true });
308
+ slide.set("slideLinkUrl", ((_o = (_n = cta == null ? void 0 : cta.getAttributes) == null ? void 0 : _n.call(cta)) == null ? void 0 : _o.href) || "#", { silent: true });
309
+ slide.set("slideLinkTarget", ((_q = (_p = cta == null ? void 0 : cta.getAttributes) == null ? void 0 : _p.call(cta)) == null ? void 0 : _q.target) || "_self", { silent: true });
310
+ }
311
+ function upgradeBannerSlideModel(slide, index) {
312
+ if (!(slide == null ? void 0 : slide.set))
313
+ return;
314
+ slide.set({
315
+ name: `Banner Slide ${index + 1}`,
316
+ draggable: ".swiper-wrapper",
317
+ droppable: false,
318
+ selectable: true,
319
+ editable: false,
320
+ stylable: true,
321
+ traits: getBannerSlideTraits()
322
+ });
323
+ if (!slide.__wbBannerSlideBound) {
324
+ slide.on(
325
+ "change:slideImage change:slideImageAlt change:slideTitle change:slideDescription change:slideButtonText change:slideLinkUrl change:slideLinkTarget",
326
+ () => syncBannerSlideContent(slide)
327
+ );
328
+ slide.__wbBannerSlideBound = true;
329
+ }
330
+ restoreBannerSlideContent(slide, index);
331
+ syncBannerSlideContent(slide);
332
+ }
333
+ function resolveBannerTraitTarget(editor, traitCtx) {
334
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
335
+ const selected = (_a = editor.getSelected) == null ? void 0 : _a.call(editor);
336
+ if (((_b = selected == null ? void 0 : selected.get) == null ? void 0 : _b.call(selected, "type")) === WB_BANNER_TYPE)
337
+ return selected;
338
+ const fromSelected = (_c = selected == null ? void 0 : selected.closestType) == null ? void 0 : _c.call(selected, WB_BANNER_TYPE);
339
+ if (((_d = fromSelected == null ? void 0 : fromSelected.get) == null ? void 0 : _d.call(fromSelected, "type")) === WB_BANNER_TYPE)
340
+ return fromSelected;
341
+ const tmTarget = (_f = (_e = editor.TraitManager) == null ? void 0 : _e.getTarget) == null ? void 0 : _f.call(_e);
342
+ if (((_g = tmTarget == null ? void 0 : tmTarget.get) == null ? void 0 : _g.call(tmTarget, "type")) === WB_BANNER_TYPE)
343
+ return tmTarget;
344
+ const fromTmTarget = (_h = tmTarget == null ? void 0 : tmTarget.closestType) == null ? void 0 : _h.call(tmTarget, WB_BANNER_TYPE);
345
+ if (((_i = fromTmTarget == null ? void 0 : fromTmTarget.get) == null ? void 0 : _i.call(fromTmTarget, "type")) === WB_BANNER_TYPE)
346
+ return fromTmTarget;
347
+ const traitTarget = (traitCtx == null ? void 0 : traitCtx.target) ?? ((_j = traitCtx == null ? void 0 : traitCtx.get) == null ? void 0 : _j.call(traitCtx, "target"));
348
+ if (((_k = traitTarget == null ? void 0 : traitTarget.get) == null ? void 0 : _k.call(traitTarget, "type")) === WB_BANNER_TYPE)
349
+ return traitTarget;
350
+ const fromTraitTarget = (_l = traitTarget == null ? void 0 : traitTarget.closestType) == null ? void 0 : _l.call(traitTarget, WB_BANNER_TYPE);
351
+ if (((_m = fromTraitTarget == null ? void 0 : fromTraitTarget.get) == null ? void 0 : _m.call(fromTraitTarget, "type")) === WB_BANNER_TYPE)
352
+ return fromTraitTarget;
353
+ return null;
354
+ }
355
+ function createAddSlideTrait() {
356
+ return {
357
+ type: "button",
358
+ name: "add-slide",
359
+ // GrapesJS:label 为 false 表示不显示 trait 标签;需字面量 false,避免被推断为 boolean
360
+ label: false,
361
+ text: "+ 添加 slide",
362
+ full: true,
363
+ command(editor) {
364
+ var _a, _b, _c, _d, _e;
365
+ const banner = resolveBannerTraitTarget(editor, this);
366
+ const wrapper = (_a = banner == null ? void 0 : banner._getWrapper) == null ? void 0 : _a.call(banner);
367
+ const slides = (_b = wrapper == null ? void 0 : wrapper.components) == null ? void 0 : _b.call(wrapper);
368
+ if (!slides)
369
+ return;
370
+ const created = slides.add(buildSlideDef(slides.length || 0));
371
+ (_d = banner == null ? void 0 : banner.set) == null ? void 0 : _d.call(banner, "slidesVersion", Number((_c = banner == null ? void 0 : banner.get) == null ? void 0 : _c.call(banner, "slidesVersion")) + 1 || 1);
372
+ const target = Array.isArray(created) ? created[0] : created;
373
+ if (target)
374
+ (_e = editor.select) == null ? void 0 : _e.call(editor, target);
375
+ }
376
+ };
377
+ }
378
+ function makeBannerScript() {
379
+ return function(props) {
380
+ const root = this;
381
+ function toBool(v2) {
382
+ if (typeof v2 === "boolean")
383
+ return v2;
384
+ if (typeof v2 === "string")
385
+ return v2 === "true";
386
+ return !!v2;
387
+ }
388
+ if (!document.getElementById("wb-banner-css")) {
389
+ const s2 = document.createElement("style");
390
+ s2.id = "wb-banner-css";
391
+ s2.textContent = ".wb-banner{width:100%;height:56.25vw;max-height:100vh;box-sizing:border-box;overflow:hidden;position:relative}.wb-banner__swiper{width:100%;height:100%}.wb-banner__swiper .swiper-wrapper{align-items:stretch}.wb-banner__slide{position:relative;overflow:hidden}.wb-banner__slide .wb-banner__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.wb-banner__overlay{position:absolute;inset:0;display:flex;align-items:center;z-index:1}.wb-banner__container{width:100%;max-width:1280px;margin:0 auto;padding:0 24px;box-sizing:border-box}.wb-banner__content{max-width:750px;color:#fff}.wb-banner__title{margin-bottom:20px;font-size:56px;font-weight:600;line-height:1.2}.wb-banner__desc{margin-bottom:32px;font-size:18px;font-weight:300;line-height:1.6;max-width:560px}.wb-banner__cta{display:inline-flex;align-items:center;background:#fff;color:#000;padding:4px;border-radius:9999px;text-decoration:none}.wb-banner__cta-label{padding:0 16px;font-size:14px;font-weight:500}.wb-banner__cta-icon{width:40px;height:40px;background:#041038;border-radius:9999px;color:#fff;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:16px;flex-shrink:0}.wb-banner__swiper .swiper-button-prev,.wb-banner__swiper .swiper-button-next{color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4)}.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-horizontal,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-custom,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-fraction{bottom:5%}.wb-banner__swiper .swiper-button-prev::after,.wb-banner__swiper .swiper-button-next::after{font-size:24px}.wb-banner__swiper .swiper-pagination-bullet{background:#fff;opacity:.6}.wb-banner__swiper .swiper-pagination-bullet-active{opacity:1}.wb-banner__swiper.wb-banner-rect-pagi .swiper-pagination-bullet{width:24px;height:3px;border-radius:0}.wb-banner__swiper .swiper-button-prev.wb-nav-custom::after,.wb-banner__swiper .swiper-button-next.wb-nav-custom::after{display:none}@media(max-width:1023px){.wb-banner{height:72vw!important;min-height:520px;max-height:none!important}.wb-banner__overlay{align-items:flex-end}.wb-banner__container{padding:0 20px 88px!important}.wb-banner__content{max-width:620px!important}.wb-banner__title{font-size:40px!important;margin-bottom:16px!important}.wb-banner__desc{font-size:16px!important;margin-bottom:24px!important;max-width:500px!important}.wb-banner__swiper .swiper-button-prev::after,.wb-banner__swiper .swiper-button-next::after{font-size:20px}.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-horizontal,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-custom,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-fraction{bottom:32px}}@media(max-width:767px){.wb-banner{height:150vw!important;min-height:420px}.wb-banner__container{padding:0 16px 72px!important}.wb-banner__content{max-width:none!important}.wb-banner__title{font-size:28px!important;line-height:1.15!important;margin-bottom:14px!important}.wb-banner__desc{font-size:14px!important;line-height:1.6!important;margin-bottom:18px!important;max-width:none!important}.wb-banner__cta{padding:3px!important}.wb-banner__cta-label{padding:0 14px!important;font-size:13px!important}.wb-banner__cta-icon{width:36px!important;height:36px!important;font-size:14px!important}.wb-banner__swiper .swiper-button-prev,.wb-banner__swiper .swiper-button-next{display:none!important}.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-horizontal,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-custom,.wb-banner__swiper.swiper-horizontal>.swiper-pagination-fraction{bottom:22px}}@keyframes fadeInUp{from{opacity:0;transform:translate3d(0,40px,0)}to{opacity:1;transform:none}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-40px,0,0)}to{opacity:1;transform:none}}@keyframes fadeInRight{from{opacity:0;transform:translate3d(40px,0,0)}to{opacity:1;transform:none}}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ani{opacity:0;}";
392
+ document.head.appendChild(s2);
393
+ }
394
+ function resetAni(container) {
395
+ container.querySelectorAll(".ani").forEach(function(node) {
396
+ node.style.animationName = "none";
397
+ node.style.opacity = "0";
398
+ });
399
+ }
400
+ function runAni(swiper) {
401
+ resetAni(swiper.el);
402
+ const activeSlide = swiper.el.querySelector(".swiper-slide-active");
403
+ if (!activeSlide)
404
+ return;
405
+ activeSlide.querySelectorAll(".ani").forEach(function(node) {
406
+ const effect = node.getAttribute("swiper-animate-effect") || "fadeIn";
407
+ const duration = node.getAttribute("swiper-animate-duration") || "0.5s";
408
+ const delay = node.getAttribute("swiper-animate-delay") || "0s";
409
+ void node.offsetHeight;
410
+ node.style.animationDuration = duration;
411
+ node.style.animationDelay = delay;
412
+ node.style.animationFillMode = "both";
413
+ node.style.animationName = effect;
414
+ node.style.opacity = "1";
415
+ });
416
+ }
417
+ function ensureSwiper() {
418
+ return new Promise(function(resolve, reject) {
419
+ const w2 = window;
420
+ if (w2.Swiper) {
421
+ resolve();
422
+ return;
423
+ }
424
+ const timer = setTimeout(function() {
425
+ reject(new Error("Swiper load timeout"));
426
+ }, 1e4);
427
+ if (!document.querySelector("link[data-wb-swiper]")) {
428
+ const link = document.createElement("link");
429
+ link.rel = "stylesheet";
430
+ link.setAttribute("data-wb-swiper", "1");
431
+ link.href = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css";
432
+ document.head.appendChild(link);
433
+ }
434
+ const existing = document.querySelector("script[data-wb-swiper]");
435
+ if (existing) {
436
+ if (window.Swiper) {
437
+ clearTimeout(timer);
438
+ resolve();
439
+ return;
440
+ }
441
+ const done = function() {
442
+ clearTimeout(timer);
443
+ resolve();
444
+ };
445
+ existing.addEventListener("load", done, { once: true });
446
+ existing.addEventListener("error", function() {
447
+ clearTimeout(timer);
448
+ reject(new Error("Swiper script failed"));
449
+ }, { once: true });
450
+ return;
451
+ }
452
+ const sc = document.createElement("script");
453
+ sc.src = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js";
454
+ sc.setAttribute("data-wb-swiper", "1");
455
+ sc.onload = function() {
456
+ clearTimeout(timer);
457
+ resolve();
458
+ };
459
+ sc.onerror = function() {
460
+ clearTimeout(timer);
461
+ reject(new Error("Swiper script failed"));
462
+ };
463
+ document.body.appendChild(sc);
464
+ });
465
+ }
466
+ function setArrowImg(el, src) {
467
+ if (!el)
468
+ return;
469
+ let img = el.querySelector("img.wb-nav-img");
470
+ if (src) {
471
+ if (!img) {
472
+ img = document.createElement("img");
473
+ img.className = "wb-nav-img";
474
+ img.style.cssText = "width:100%;height:100%;object-fit:contain;display:block;position:absolute;inset:0;";
475
+ el.style.position = "relative";
476
+ el.appendChild(img);
477
+ }
478
+ img.src = src;
479
+ el.classList.add("wb-nav-custom");
480
+ } else {
481
+ if (img)
482
+ img.remove();
483
+ el.classList.remove("wb-nav-custom");
484
+ }
485
+ }
486
+ function initSwiper() {
487
+ const w2 = window;
488
+ if (!w2.Swiper)
489
+ return;
490
+ if (root._wbBannerSwiper) {
491
+ try {
492
+ root._wbBannerSwiper.destroy(true, true);
493
+ } catch (_2) {
494
+ }
495
+ }
496
+ const paginationStyle = props.paginationStyle || "dots";
497
+ const showPagination = paginationStyle !== "none";
498
+ const showArrows = toBool(props.showArrows);
499
+ const prevArrowSrc = props.prevArrowSrc || "";
500
+ const nextArrowSrc = props.nextArrowSrc || "";
501
+ const autoplay = toBool(props.autoplay);
502
+ const loop = toBool(props.loop);
503
+ const speed = Math.max(100, Number(props.speed) || 600);
504
+ const swiperEl = root.querySelector(".swiper");
505
+ if (!swiperEl)
506
+ return;
507
+ const paginationEl = swiperEl.querySelector(".swiper-pagination");
508
+ const prevEl = swiperEl.querySelector(".swiper-button-prev");
509
+ const nextEl = swiperEl.querySelector(".swiper-button-next");
510
+ const slideCount = swiperEl.querySelectorAll(".swiper-wrapper > .swiper-slide").length;
511
+ const safeLoop = loop && slideCount >= 2;
512
+ if (paginationEl)
513
+ paginationEl.style.display = showPagination ? "" : "none";
514
+ if (prevEl)
515
+ prevEl.style.display = showArrows ? "" : "none";
516
+ if (nextEl)
517
+ nextEl.style.display = showArrows ? "" : "none";
518
+ if (paginationStyle === "rect") {
519
+ swiperEl.classList.add("wb-banner-rect-pagi");
520
+ } else {
521
+ swiperEl.classList.remove("wb-banner-rect-pagi");
522
+ }
523
+ setArrowImg(prevEl, prevArrowSrc);
524
+ setArrowImg(nextEl, nextArrowSrc);
525
+ let paginationConfig = false;
526
+ if (showPagination && paginationEl) {
527
+ if (paginationStyle === "number") {
528
+ paginationConfig = { el: paginationEl, type: "fraction" };
529
+ } else {
530
+ paginationConfig = { el: paginationEl, clickable: true, type: "bullets" };
531
+ }
532
+ }
533
+ root._wbBannerSwiper = new w2.Swiper(swiperEl, {
534
+ loop: safeLoop,
535
+ speed,
536
+ pagination: paginationConfig,
537
+ navigation: showArrows && prevEl && nextEl ? { prevEl, nextEl } : false,
538
+ autoplay: autoplay ? { delay: Math.max(500, Number(props.autoplayDelay) || 4e3), disableOnInteraction: false } : false,
539
+ on: {
540
+ slideChangeTransitionEnd: function(swiper) {
541
+ runAni(swiper);
542
+ }
543
+ }
544
+ });
545
+ (function(sw) {
546
+ requestAnimationFrame(function() {
547
+ runAni(sw);
548
+ });
549
+ })(root._wbBannerSwiper);
550
+ }
551
+ const aniFallback = setTimeout(function() {
552
+ root.querySelectorAll(".ani").forEach(function(n2) {
553
+ n2.style.opacity = "1";
554
+ });
555
+ }, 5e3);
556
+ ensureSwiper().then(function() {
557
+ clearTimeout(aniFallback);
558
+ initSwiper();
559
+ }).catch(function() {
560
+ clearTimeout(aniFallback);
561
+ root.querySelectorAll(".ani").forEach(function(n2) {
562
+ n2.style.opacity = "1";
563
+ });
564
+ });
565
+ };
566
+ }
567
+ function registerBannerComponent(editor) {
568
+ const domComponents = editor == null ? void 0 : editor.DomComponents;
569
+ if (!domComponents || domComponents.getType(WB_BANNER_TYPE))
570
+ return;
571
+ const bannerScript = makeBannerScript();
572
+ const getBannerRoot = (component) => {
573
+ var _a, _b;
574
+ if (!component)
575
+ return null;
576
+ if (((_a = component.get) == null ? void 0 : _a.call(component, "type")) === WB_BANNER_TYPE)
577
+ return component;
578
+ return ((_b = component.closestType) == null ? void 0 : _b.call(component, WB_BANNER_TYPE)) ?? null;
579
+ };
580
+ const getBannerSlideRoot = (component) => {
581
+ var _a, _b, _c;
582
+ if (!component)
583
+ return null;
584
+ if (((_a = component.get) == null ? void 0 : _a.call(component, "type")) === WB_BANNER_SLIDE_TYPE)
585
+ return component;
586
+ const slide = (_b = component.closestType) == null ? void 0 : _b.call(component, WB_BANNER_SLIDE_TYPE);
587
+ if (((_c = slide == null ? void 0 : slide.get) == null ? void 0 : _c.call(slide, "type")) === WB_BANNER_SLIDE_TYPE)
588
+ return slide;
589
+ return null;
590
+ };
591
+ const clearBannerEditingState = () => {
592
+ var _a, _b, _c, _d, _e;
593
+ const doc = (_b = (_a = editor.Canvas) == null ? void 0 : _a.getDocument) == null ? void 0 : _b.call(_a);
594
+ (_e = (_d = (_c = doc == null ? void 0 : doc.querySelectorAll) == null ? void 0 : _c.call(doc, ".wb-banner.wb-banner--editing")) == null ? void 0 : _d.forEach) == null ? void 0 : _e.call(_d, (el) => {
595
+ el.classList.remove("wb-banner--editing");
596
+ });
597
+ };
598
+ const syncBannerEditingState = (component) => {
599
+ var _a, _b;
600
+ clearBannerEditingState();
601
+ const banner = getBannerRoot(component ?? ((_a = editor.getSelected) == null ? void 0 : _a.call(editor)));
602
+ const el = (_b = banner == null ? void 0 : banner.getEl) == null ? void 0 : _b.call(banner);
603
+ if (el == null ? void 0 : el.classList) {
604
+ el.classList.add("wb-banner--editing");
605
+ }
606
+ };
607
+ domComponents.addType(WB_BANNER_SLIDE_TYPE, {
608
+ isComponent: (el) => {
609
+ var _a;
610
+ return ((_a = el == null ? void 0 : el.classList) == null ? void 0 : _a.contains("wb-banner__slide")) ? { type: WB_BANNER_SLIDE_TYPE } : false;
611
+ },
612
+ model: {
613
+ defaults: {
614
+ name: "Banner Slide",
615
+ tagName: "div",
616
+ draggable: ".swiper-wrapper",
617
+ droppable: false,
618
+ selectable: true,
619
+ editable: false,
620
+ stylable: true,
621
+ attributes: { class: "swiper-slide wb-banner__slide" },
622
+ slideImage: "https://placehold.co/1920x1080/1a1a2e/ffffff",
623
+ slideImageAlt: "",
624
+ slideTitle: "Banner Title",
625
+ slideDescription: "Your subtitle text goes here. Describe your product or service.",
626
+ slideButtonText: "CONTACT NOW",
627
+ slideLinkUrl: "#",
628
+ slideLinkTarget: "_self",
629
+ traits: getBannerSlideTraits()
630
+ },
631
+ init() {
632
+ var _a, _b, _c;
633
+ const fallbackIndex = Math.max(0, ((_c = (_b = (_a = this.parent) == null ? void 0 : _a.call(this)) == null ? void 0 : _b.indexOf) == null ? void 0 : _c.call(_b, this)) ?? 0);
634
+ restoreBannerSlideContent(this, fallbackIndex);
635
+ this.on(
636
+ "change:slideImage change:slideImageAlt change:slideTitle change:slideDescription change:slideButtonText change:slideLinkUrl change:slideLinkTarget",
637
+ this.syncSlideContent
638
+ );
639
+ this.syncSlideContent();
640
+ },
641
+ syncSlideContent() {
642
+ syncBannerSlideContent(this);
643
+ }
644
+ }
645
+ });
646
+ editor.on("component:selected", (component) => {
647
+ var _a, _b;
648
+ const type = (_a = component == null ? void 0 : component.get) == null ? void 0 : _a.call(component, "type");
649
+ if (type !== WB_BANNER_TYPE && type !== WB_BANNER_SLIDE_TYPE) {
650
+ const slide = getBannerSlideRoot(component);
651
+ if (slide && slide !== component) {
652
+ (_b = editor.select) == null ? void 0 : _b.call(editor, slide);
653
+ return;
654
+ }
655
+ }
656
+ syncBannerEditingState(component);
657
+ });
658
+ editor.on("component:deselected", () => {
659
+ syncBannerEditingState();
660
+ });
661
+ editor.on("rte:enable", (view) => {
662
+ var _a;
663
+ const slide = getBannerSlideRoot(view == null ? void 0 : view.model);
664
+ if (slide) {
665
+ (_a = editor.select) == null ? void 0 : _a.call(editor, slide);
666
+ return;
667
+ }
668
+ syncBannerEditingState(view == null ? void 0 : view.model);
669
+ });
670
+ editor.on("rte:disable", () => {
671
+ syncBannerEditingState();
672
+ });
673
+ domComponents.addType(WB_BANNER_TYPE, {
674
+ isComponent: (el) => {
675
+ var _a;
676
+ if (((_a = el == null ? void 0 : el.getAttribute) == null ? void 0 : _a.call(el, "data-wb-component")) === "banner") {
677
+ return { type: WB_BANNER_TYPE };
678
+ }
679
+ return false;
680
+ },
681
+ model: {
682
+ defaults: {
683
+ name: "Banner 轮播",
684
+ tagName: "div",
685
+ draggable: "*",
686
+ droppable: false,
687
+ selectable: true,
688
+ editable: false,
689
+ stylable: true,
690
+ classes: [BANNER_ROOT_CLASS],
691
+ attributes: {
692
+ "data-wb-component": "banner",
693
+ "data-loop": "true",
694
+ "data-autoplay": "false",
695
+ "data-autoplay-delay": "4000",
696
+ "data-speed": "600",
697
+ "data-show-arrows": "true",
698
+ "data-pagination-style": "dots",
699
+ "data-prev-arrow-src": "",
700
+ "data-next-arrow-src": ""
701
+ },
702
+ // 模型属性
703
+ loop: true,
704
+ autoplay: false,
705
+ autoplayDelay: 4e3,
706
+ speed: 600,
707
+ showArrows: true,
708
+ paginationStyle: "dots",
709
+ prevArrowSrc: "",
710
+ nextArrowSrc: "",
711
+ slidesVersion: 0,
712
+ "script-props": [
713
+ "loop",
714
+ "autoplay",
715
+ "autoplayDelay",
716
+ "speed",
717
+ "showArrows",
718
+ "paginationStyle",
719
+ "prevArrowSrc",
720
+ "nextArrowSrc",
721
+ "slidesVersion"
722
+ ],
723
+ components: [
724
+ {
725
+ tagName: "div",
726
+ removable: false,
727
+ copyable: false,
728
+ selectable: false,
729
+ droppable: false,
730
+ attributes: { class: "swiper wb-banner__swiper" },
731
+ style: { width: "100%", height: "100%" },
732
+ components: [
733
+ {
734
+ tagName: "div",
735
+ removable: false,
736
+ copyable: false,
737
+ selectable: false,
738
+ droppable: false,
739
+ attributes: { class: "swiper-wrapper" },
740
+ components: [
741
+ buildSlideDef(0),
742
+ buildSlideDef(1)
743
+ ]
744
+ },
745
+ {
746
+ tagName: "div",
747
+ removable: false,
748
+ selectable: false,
749
+ droppable: false,
750
+ attributes: { class: "swiper-pagination" }
751
+ },
752
+ {
753
+ tagName: "div",
754
+ removable: false,
755
+ selectable: false,
756
+ droppable: false,
757
+ attributes: { class: "swiper-button-prev" }
758
+ },
759
+ {
760
+ tagName: "div",
761
+ removable: false,
762
+ selectable: false,
763
+ droppable: false,
764
+ attributes: { class: "swiper-button-next" }
765
+ }
766
+ ]
767
+ }
768
+ ],
769
+ script: bannerScript,
770
+ "script-export": bannerScript,
771
+ traits: [
772
+ createAddSlideTrait(),
773
+ makeCheckboxTrait("循环", "loop"),
774
+ makeCheckboxTrait("自动播放", "autoplay"),
775
+ makeNumberTrait("自动播放间隔(ms)", "autoplayDelay", { min: 500, max: 2e4, step: 100 }),
776
+ makeNumberTrait("切换速度(ms)", "speed", { min: 100, max: 2e3, step: 100 }),
777
+ makeCheckboxTrait("显示箭头", "showArrows"),
778
+ makeImagePickerTrait("上一张箭头图片", "prevArrowSrc", { showPreview: false }),
779
+ makeImagePickerTrait("下一张箭头图片", "nextArrowSrc", { showPreview: false }),
780
+ {
781
+ type: "select",
782
+ label: "分页点样式",
783
+ name: "paginationStyle",
784
+ changeProp: true,
785
+ options: [
786
+ { id: "dots", label: "Dots(圆点)" },
787
+ { id: "rect", label: "Rect(矩形)" },
788
+ { id: "number", label: "Number(数字)" },
789
+ { id: "none", label: "无" }
790
+ ]
791
+ }
792
+ ]
793
+ },
794
+ init() {
795
+ var _a, _b, _c, _d, _e;
796
+ this._restoreFromAttrs();
797
+ this._ensureStructure();
798
+ migrateBannerStructureClasses(this);
799
+ (_e = (_d = (_c = (_b = (_a = this._getWrapper) == null ? void 0 : _a.call(this)) == null ? void 0 : _b.components) == null ? void 0 : _c.call(_b)) == null ? void 0 : _d.forEach) == null ? void 0 : _e.call(_d, (slide, index) => {
800
+ upgradeBannerSlideModel(slide, index);
801
+ });
802
+ this.on(
803
+ "change:loop change:autoplay change:autoplayDelay change:speed change:showArrows change:paginationStyle change:prevArrowSrc change:nextArrowSrc",
804
+ this.applyBannerConfig
805
+ );
806
+ this.applyBannerConfig();
807
+ },
808
+ /**
809
+ * 验证并修复组件树结构。
810
+ * 保存/加载后内部元素(pagination、nav buttons)可能跑到 swiper 容器外面。
811
+ */
812
+ _ensureStructure() {
813
+ var _a, _b, _c;
814
+ const children = (_a = this.components) == null ? void 0 : _a.call(this);
815
+ if (!children || children.length === 0)
816
+ return;
817
+ let swiperComp = null;
818
+ const orphans = [];
819
+ children.forEach((c10) => {
820
+ var _a2;
821
+ const cls = ((_a2 = c10.getClasses) == null ? void 0 : _a2.call(c10)) ?? [];
822
+ if (cls.includes("wb-banner__swiper") || cls.includes("swiper")) {
823
+ swiperComp = c10;
824
+ } else {
825
+ orphans.push(c10);
826
+ }
827
+ });
828
+ if (!swiperComp)
829
+ return;
830
+ for (const orphan of orphans) {
831
+ const cls = ((_b = orphan.getClasses) == null ? void 0 : _b.call(orphan)) ?? [];
832
+ const isControl = cls.includes("swiper-pagination") || cls.includes("swiper-button-prev") || cls.includes("swiper-button-next");
833
+ if (isControl) {
834
+ const def = orphan.toJSON();
835
+ orphan.remove();
836
+ swiperComp.components().add(def);
837
+ }
838
+ }
839
+ const swiperChildren = (_c = swiperComp.components) == null ? void 0 : _c.call(swiperComp);
840
+ if (!swiperChildren)
841
+ return;
842
+ const has = (cls) => swiperChildren.find((c10) => {
843
+ var _a2, _b2, _c2;
844
+ return (_c2 = (_b2 = (_a2 = c10.getClasses) == null ? void 0 : _a2.call(c10)) == null ? void 0 : _b2.includes) == null ? void 0 : _c2.call(_b2, cls);
845
+ });
846
+ if (!has("swiper-pagination")) {
847
+ const pagination = swiperChildren.add({
848
+ tagName: "div",
849
+ removable: false,
850
+ selectable: false,
851
+ droppable: false,
852
+ layerable: false,
853
+ draggable: false,
854
+ highlightable: false,
855
+ editable: false,
856
+ attributes: { class: "swiper-pagination" }
857
+ });
858
+ const target = Array.isArray(pagination) ? pagination[0] : pagination;
859
+ lockBannerInternalNode(target);
860
+ }
861
+ if (!has("swiper-button-prev")) {
862
+ const prev = swiperChildren.add({
863
+ tagName: "div",
864
+ removable: false,
865
+ selectable: false,
866
+ droppable: false,
867
+ layerable: false,
868
+ draggable: false,
869
+ highlightable: false,
870
+ editable: false,
871
+ attributes: { class: "swiper-button-prev" }
872
+ });
873
+ const target = Array.isArray(prev) ? prev[0] : prev;
874
+ lockBannerInternalNode(target);
875
+ }
876
+ if (!has("swiper-button-next")) {
877
+ const next = swiperChildren.add({
878
+ tagName: "div",
879
+ removable: false,
880
+ selectable: false,
881
+ droppable: false,
882
+ layerable: false,
883
+ draggable: false,
884
+ highlightable: false,
885
+ editable: false,
886
+ attributes: { class: "swiper-button-next" }
887
+ });
888
+ const target = Array.isArray(next) ? next[0] : next;
889
+ lockBannerInternalNode(target);
890
+ }
891
+ },
892
+ /**
893
+ * 从 data-* 属性反向恢复模型属性(安全网)。
894
+ * 处理从已保存 HTML 加载时模型属性可能未正确恢复的情况。
895
+ */
896
+ _restoreFromAttrs() {
897
+ const attrs = this.getAttributes() || {};
898
+ const toBool = (v2) => v2 === true || v2 === "true";
899
+ const mapping = {
900
+ "data-loop": ["loop", toBool],
901
+ "data-autoplay": ["autoplay", toBool],
902
+ "data-autoplay-delay": ["autoplayDelay", (v2) => Number(v2) || 4e3],
903
+ "data-speed": ["speed", (v2) => Number(v2) || 600],
904
+ "data-show-arrows": ["showArrows", toBool],
905
+ "data-pagination-style": ["paginationStyle", (v2) => v2 || "dots"],
906
+ "data-prev-arrow-src": ["prevArrowSrc", (v2) => v2 || ""],
907
+ "data-next-arrow-src": ["nextArrowSrc", (v2) => v2 || ""]
908
+ };
909
+ for (const [attr, [prop, parse]] of Object.entries(mapping)) {
910
+ if (attrs[attr] !== void 0) {
911
+ this.set(prop, parse(attrs[attr]), { silent: true });
912
+ }
913
+ }
914
+ },
915
+ _getWrapper() {
916
+ var _a, _b, _c, _d, _e, _f;
917
+ const swiperDiv = (_c = (_b = (_a = this.components) == null ? void 0 : _a.call(this)) == null ? void 0 : _b.at) == null ? void 0 : _c.call(_b, 0);
918
+ if (!swiperDiv)
919
+ return null;
920
+ return ((_f = (_e = (_d = swiperDiv.components) == null ? void 0 : _d.call(swiperDiv)) == null ? void 0 : _e.at) == null ? void 0 : _f.call(_e, 0)) ?? null;
921
+ },
922
+ applyBannerConfig() {
923
+ this.addAttributes({
924
+ "data-loop": `${!!this.get("loop")}`,
925
+ "data-autoplay": `${!!this.get("autoplay")}`,
926
+ "data-autoplay-delay": `${Math.max(500, Number(this.get("autoplayDelay")) || 4e3)}`,
927
+ "data-speed": `${Math.max(100, Number(this.get("speed")) || 600)}`,
928
+ "data-show-arrows": `${!!this.get("showArrows")}`,
929
+ "data-pagination-style": this.get("paginationStyle") || "dots",
930
+ "data-prev-arrow-src": this.get("prevArrowSrc") || "",
931
+ "data-next-arrow-src": this.get("nextArrowSrc") || ""
932
+ });
933
+ }
934
+ }
935
+ });
936
+ }
937
+ export {
938
+ B2 as BASIC_COMPONENTS_PLUGIN_ID,
939
+ a as BASIC_COMPONENT_REGISTRIES,
940
+ B as BASIC_INTERACTIVE_REGISTRIES,
941
+ g as BASIC_MEDIA_REGISTRIES,
942
+ h as BASIC_NAVIGATION_REGISTRIES,
943
+ B3 as BASIC_PUBLISHER_REGISTRIES,
944
+ b as BASIC_REGISTRY_MANIFEST,
945
+ i as BASIC_SECTION_REGISTRIES,
946
+ L as LAYOUT_REGISTRIES,
947
+ S as SOLUTIONS_CSS,
948
+ T as TYPOGRAPHY_REGISTRIES,
949
+ U as UNIT_OPTIONS_PX_PCT_VH,
950
+ j as UNIT_OPTIONS_PX_VH_REM,
951
+ W as WB_ACCORDION_TYPE,
952
+ k as WB_ALL_APPLICATIONS_TYPE,
953
+ l as WB_BACK_BUTTON_TYPE,
954
+ WB_BANNER_SLIDE_TYPE,
955
+ WB_BANNER_TYPE,
956
+ n as WB_BUTTON_TYPE,
957
+ o as WB_CARD_CAROUSEL_SECTION_TYPE,
958
+ p as WB_CAROUSEL_TYPE,
959
+ q as WB_CASE_SPOTLIGHT_TYPE,
960
+ r as WB_COMPANY_SCALE_TYPE,
961
+ s as WB_CONTAINER_TYPE,
962
+ t as WB_COUNT_UP_TYPE,
963
+ u as WB_CUSTOMIZATION_GRID_TYPE,
964
+ v as WB_CUSTOM_CODE_TYPE,
965
+ w as WB_DIVIDER_TYPE,
966
+ x as WB_FACTORY_MAP_TYPE,
967
+ y as WB_FLIPBOOK_PAGE_TYPE,
968
+ z as WB_FLIPBOOK_TYPE,
969
+ A as WB_FOCA_HISTORY_TIMELINE_TYPE,
970
+ C as WB_FOOTER_TYPE,
971
+ D as WB_GRID_TYPE,
972
+ E as WB_HEADING_TYPE,
973
+ F as WB_HISTORY_TIMELINE_TYPE,
974
+ G as WB_HOME_BANNER_CAROUSEL_TYPE,
975
+ H as WB_HOME_BANNER_SLIDE_TYPE,
976
+ I as WB_HOTSPOT_SHOWCASE_ITEM_TYPE,
977
+ J as WB_HOTSPOT_SHOWCASE_TYPE,
978
+ K as WB_ICON_TYPE,
979
+ M as WB_IMAGE_TYPE,
980
+ N as WB_INDUSTRY_TABS_TYPE,
981
+ O as WB_INQUIRY_FORM_TYPE,
982
+ P as WB_KLAVIYO_SUBSCRIBE_TYPE,
983
+ Q as WB_LANGUAGE_SWITCHER_TYPE,
984
+ R as WB_LAYOUT_BASE_TYPE,
985
+ V as WB_LOGO_TYPE,
986
+ X as WB_MAP_PIN_TYPE,
987
+ Y as WB_MAP_TYPE,
988
+ Z as WB_MARQUEE_ITEM_TYPE,
989
+ _ as WB_MARQUEE_TYPE,
990
+ $ as WB_MILESTONE_CARD_STRIP_TYPE,
991
+ a0 as WB_MORE_CARD_CAROUSEL_TYPE,
992
+ a1 as WB_NAVBAR_TYPE,
993
+ a2 as WB_OUR_ADVANTAGES_ITEM_TYPE,
994
+ a3 as WB_OUR_ADVANTAGES_TYPE,
995
+ a4 as WB_OUR_SOLUTIONS_ITEM_TYPE,
996
+ a5 as WB_OUR_SOLUTIONS_TYPE,
997
+ a6 as WB_OVERVIEW_SPLIT_TYPE,
998
+ a7 as WB_PDF_VIEWER_TYPE,
999
+ a8 as WB_POPUP_TEMPLATE_REF_TYPE,
1000
+ a9 as WB_POPUP_TRIGGER_TYPE,
1001
+ aa as WB_POPUP_TYPE,
1002
+ ab as WB_PROCESS_TIMELINE_TYPE,
1003
+ ac as WB_PRODUCT_CARD_STRIP_TYPE,
1004
+ ad as WB_PRODUCT_CATEGORIES_TYPE,
1005
+ ae as WB_PRODUCT_CATEGORY_ITEM_TYPE,
1006
+ af as WB_RESOURCE_SECTION_TYPE,
1007
+ ag as WB_RESPONSIVE_HERO_CAROUSEL_ITEM_TYPE,
1008
+ ah as WB_RESPONSIVE_HERO_CAROUSEL_TYPE,
1009
+ ai as WB_SALESMARTLY_CHAT_BUTTON_TYPE,
1010
+ aj as WB_SEARCH_TYPE,
1011
+ ak as WB_SECTION_GRID_BLOCK_TYPE,
1012
+ al as WB_SECTION_TYPE,
1013
+ am as WB_SERVICES_CAROUSEL_ITEM_TYPE,
1014
+ an as WB_SERVICES_CAROUSEL_TYPE,
1015
+ ao as WB_SERVICES_SHOWCASE_ITEM_TYPE,
1016
+ ap as WB_SERVICES_SHOWCASE_TYPE,
1017
+ aq as WB_SERVICE_ICON_GRID_ITEM_TYPE,
1018
+ ar as WB_SERVICE_ICON_GRID_TYPE,
1019
+ as as WB_SERVICE_THB_ITEM_TYPE,
1020
+ at as WB_SERVICE_THB_TYPE,
1021
+ au as WB_SOCIAL_LINKS_TYPE,
1022
+ av as WB_SOCIAL_SHARE_TYPE,
1023
+ aw as WB_SOLUTION_LIST_CARD_TYPE,
1024
+ ax as WB_SOLUTION_LIST_TYPE,
1025
+ ay as WB_SPACER_TYPE,
1026
+ az as WB_STATIC_PIN_MAP_TYPE,
1027
+ aA as WB_STATIC_PIN_TYPE,
1028
+ aB as WB_STATS_CARDS_TYPE,
1029
+ aC as WB_TABS_TYPE,
1030
+ aD as WB_TAB_MEDIA_GALLERY_TYPE,
1031
+ aE as WB_TEXT_EDITOR_TYPE,
1032
+ aF as WB_VIDEO_TYPE,
1033
+ d as assertUniqueBasicRegistryTypes,
1034
+ aG as buildWidthStyles,
1035
+ c as componentsBasic,
1036
+ aH as createContainerBlockContent,
1037
+ aI as createDefaultHotspotShowcaseHotspot,
1038
+ aJ as createDefaultHotspotShowcaseItem,
1039
+ aK as createLanguageSwitcherBlockContent,
1040
+ aL as defineGrapesTraits,
1041
+ aM as defineWebBuilderTraits,
1042
+ aN as fetchIconifySvg,
1043
+ aO as fetchSvgMarkupFromUrl,
1044
+ g2 as getBasicRegistryTypes,
1045
+ aP as getImageManager,
1046
+ aQ as getInjectedPublishCss,
1047
+ aR as getSolarIconSvg,
1048
+ aS as iconifySvgUrl,
1049
+ aT as injectCanvasStyleOnce,
1050
+ aU as injectStyleOnce,
1051
+ makeCheckboxTrait,
1052
+ aV as makeColorPickerTrait,
1053
+ makeImagePickerTrait,
1054
+ makeLinkTargetTrait,
1055
+ makeLinkTrait,
1056
+ makeNumberTrait,
1057
+ aW as makeSelectTrait,
1058
+ aX as makeSvgIconPickerTrait,
1059
+ makeTextTrait,
1060
+ makeTextareaTrait,
1061
+ aY as normalizeHotspotShowcaseHotspots,
1062
+ aZ as normalizeIconName,
1063
+ a_ as normalizeSvgMarkup,
1064
+ a$ as openColorPicker,
1065
+ b0 as registerAccordionComponent,
1066
+ b1 as registerAllApplicationsComponent,
1067
+ b2 as registerBackButtonComponent,
1068
+ registerBannerComponent,
1069
+ r2 as registerBasicPublisherComponents,
1070
+ b3 as registerButtonComponent,
1071
+ b4 as registerCardCarouselSectionComponent,
1072
+ b5 as registerCarouselComponent,
1073
+ b6 as registerCaseSpotlightComponent,
1074
+ b7 as registerCompanyScaleComponent,
1075
+ b8 as registerContainerComponent,
1076
+ b9 as registerCountUpComponent,
1077
+ ba as registerCustomCodeComponent,
1078
+ bb as registerCustomizationGridComponent,
1079
+ bc as registerDividerComponent,
1080
+ bd as registerFactoryMapComponent,
1081
+ be as registerFlipbookComponent,
1082
+ bf as registerFocaHistoryTimelineComponent,
1083
+ bg as registerFooter,
1084
+ bh as registerFooterComponent,
1085
+ bi as registerGridComponent,
1086
+ bj as registerHeadingComponent,
1087
+ bk as registerHistoryTimelineComponent,
1088
+ bl as registerHomeBannerCarouselComponent,
1089
+ bm as registerHotspotShowcaseComponent,
1090
+ bn as registerIconComponent,
1091
+ bo as registerImageComponent,
1092
+ bp as registerIndustryTabsComponent,
1093
+ bq as registerInquiryFormComponent,
1094
+ br as registerKlaviyoSubscribeComponent,
1095
+ bs as registerLanguageSwitcherComponent,
1096
+ bt as registerLayoutBase,
1097
+ bu as registerLogo,
1098
+ bv as registerLogoComponent,
1099
+ bw as registerMapComponent,
1100
+ bx as registerMarqueeComponent,
1101
+ by as registerMilestoneCardStripComponent,
1102
+ bz as registerMoreCardCarouselComponent,
1103
+ bA as registerNavbar,
1104
+ bB as registerNavbarComponent,
1105
+ bC as registerOurAdvantagesComponent,
1106
+ bD as registerOurSolutionsComponent,
1107
+ bE as registerOverviewSplitComponent,
1108
+ bF as registerPdfViewerComponent,
1109
+ bG as registerPopupComponent,
1110
+ bH as registerProcessTimelineComponent,
1111
+ bI as registerProductCardStripComponent,
1112
+ bJ as registerProductCategoriesComponent,
1113
+ bK as registerResourceSectionComponent,
1114
+ bL as registerResponsiveHeroCarouselComponent,
1115
+ bM as registerSalesmartlyChatButtonComponent,
1116
+ bN as registerSearch,
1117
+ bO as registerSearchComponent,
1118
+ bP as registerSectionComponent,
1119
+ bQ as registerSectionGridBlockComponent,
1120
+ bR as registerServiceIconGridComponent,
1121
+ bS as registerServiceThbComponent,
1122
+ bT as registerServicesCarouselComponent,
1123
+ bU as registerServicesShowcaseComponent,
1124
+ bV as registerSocialLinksComponent,
1125
+ bW as registerSocialShareComponent,
1126
+ bX as registerSolutionListComponent,
1127
+ bY as registerSpacerComponent,
1128
+ bZ as registerStaticPinMapComponent,
1129
+ b_ as registerStatsCardsComponent,
1130
+ b$ as registerTabMediaGalleryComponent,
1131
+ c0 as registerTabsComponent,
1132
+ c1 as registerTextEditorComponent,
1133
+ c2 as registerVideoComponent,
1134
+ c3 as removeCssRulesByPrefixes,
1135
+ c4 as removeUngroupedCssRulesByPrefixes,
1136
+ c5 as sanitizeFlipbookProjectData,
1137
+ c6 as searchSolarIcons,
1138
+ c7 as serializeHotspotShowcaseHotspots,
1139
+ c8 as setColorPickerHandler,
1140
+ c9 as setImageManager,
1141
+ ca as svgMarkupToComponentDefs,
1142
+ cb as toBool,
1143
+ cc as toNumber,
1144
+ cd as toUnit,
1145
+ ce as transformCssSelectors
1146
+ };