@useinsider/guido 3.2.0-beta.78d83bd → 3.2.0-beta.7e0c6bd
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.
- package/dist/@types/config/schemas.js +1 -1
- package/dist/@types/config/validator.js +27 -34
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +76 -81
- package/dist/components/organisms/base/Toaster.vue2.js +10 -11
- package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +12 -12
- package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +6 -6
- package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +9 -15
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +31 -40
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +19 -20
- package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +11 -14
- package/dist/components/organisms/header/EditorActions.vue.js +11 -12
- package/dist/components/organisms/header/EditorActions.vue2.js +18 -22
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +12 -15
- package/dist/components/organisms/header/LeftSlot.vue2.js +16 -19
- package/dist/components/organisms/header/MiddleSlot.vue2.js +14 -11
- package/dist/components/organisms/header/RightSlot.vue2.js +14 -17
- package/dist/components/organisms/onboarding/AMPOnboarding.vue.js +11 -12
- package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +49 -31
- package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +12 -13
- package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +36 -38
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +12 -13
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +47 -51
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +18 -21
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +27 -31
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +12 -13
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +33 -46
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue.js +11 -12
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +20 -21
- package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +8 -9
- package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +9 -10
- package/dist/composables/useActionsApi.js +37 -38
- package/dist/composables/useBlocksConfig.js +26 -26
- package/dist/composables/useFullStoryBridge.js +8 -9
- package/dist/composables/useHtmlCompiler.js +34 -26
- package/dist/composables/useHtmlValidator.js +101 -109
- package/dist/composables/useHttp.js +30 -30
- package/dist/composables/usePartner.js +1 -1
- package/dist/composables/useRecommendation.js +14 -15
- package/dist/composables/useRibbonOffset.js +21 -0
- package/dist/composables/useSave.js +21 -22
- package/dist/composables/useStripo.js +53 -50
- package/dist/composables/useSyncModuleExtractor.js +31 -29
- package/dist/composables/useTimerClone.js +24 -25
- package/dist/composables/useTranslations.js +23 -16
- package/dist/composables/useValidation.js +7 -8
- package/dist/composables/validators/useLiquidValidator.js +13 -13
- package/dist/config/compiler/unsubscribeCompilerRules.js +17 -19
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +10 -11
- package/dist/config/migrator/checkboxMigrator.js +20 -21
- package/dist/config/migrator/couponBlockMigrator.js +18 -19
- package/dist/config/migrator/itemsBlockMigrator.js +87 -89
- package/dist/config/migrator/radioButtonMigrator.js +12 -13
- package/dist/config/migrator/recommendationMigrator.js +106 -109
- package/dist/config/migrator/unsubscribeMigrator.js +10 -11
- package/dist/enums/onboarding.js +7 -2
- package/dist/enums/unsubscribe.js +18 -19
- package/dist/extensions/Blocks/Items/block.js +9 -9
- package/dist/extensions/Blocks/Items/controls/button/link.js +14 -14
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +89 -97
- package/dist/extensions/Blocks/Items/controls/image/link.js +14 -14
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +23 -24
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +13 -14
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +44 -47
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +38 -38
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +11 -11
- package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +38 -40
- package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +35 -35
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +155 -162
- package/dist/extensions/Blocks/Items/enums/productEnums.js +9 -14
- package/dist/extensions/Blocks/Items/template.js +218 -216
- package/dist/extensions/Blocks/Recommendation/controls/button/index.js +36 -36
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +128 -133
- package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/image/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +17 -18
- package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +4 -6
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +82 -90
- package/dist/extensions/Blocks/Recommendation/controls/main/layoutOrientation.js +18 -18
- package/dist/extensions/Blocks/Recommendation/controls/main/productCount.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +35 -36
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +134 -135
- package/dist/extensions/Blocks/Recommendation/controls/name/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/price/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +32 -32
- package/dist/extensions/Blocks/Recommendation/controls/syncInfoMessage.js +18 -20
- package/dist/extensions/Blocks/Recommendation/extension.js +31 -32
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +8 -16
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +55 -56
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +22 -23
- package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +10 -10
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +10 -10
- package/dist/extensions/Blocks/Recommendation/templates/index.js +6 -6
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +24 -25
- package/dist/extensions/Blocks/Recommendation/templates/list/template.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +45 -47
- package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +13 -16
- package/dist/extensions/Blocks/Unsubscribe/control.js +11 -13
- package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +16 -18
- package/dist/extensions/Blocks/common-control.js +25 -26
- package/dist/extensions/DynamicContent/dynamic-content.js +53 -58
- package/dist/guido.css +1 -1
- package/dist/library.js +11 -12
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +233 -210
- package/dist/node_modules/valibot/dist/index.js +122 -126
- package/dist/package.json.js +1 -1
- package/dist/services/recommendationApi.js +14 -17
- package/dist/services/templateLibraryApi.js +37 -38
- package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
- package/dist/src/composables/useHtmlCompiler.d.ts +1 -2
- package/dist/src/composables/useRibbonOffset.d.ts +4 -0
- package/dist/src/composables/useTranslations.d.ts +1 -1
- package/dist/src/enums/onboarding.d.ts +6 -0
- package/dist/src/stores/dynamic-content.d.ts +3 -3
- package/dist/src/stores/onboarding.d.ts +4 -0
- package/dist/stores/config.js +25 -81
- package/dist/stores/dynamic-content.js +6 -11
- package/dist/stores/onboarding.js +5 -1
- package/dist/stores/preview.js +6 -9
- package/dist/stores/unsubscribe.js +1 -4
- package/dist/utils/dateUtil.js +7 -10
- package/dist/utils/genericUtil.js +10 -13
- package/dist/utils/pairProductVariables.js +13 -14
- package/package.json +8 -5
- package/dist/node_modules/lodash-es/_DataView.js +0 -6
- package/dist/node_modules/lodash-es/_Hash.js +0 -20
- package/dist/node_modules/lodash-es/_ListCache.js +0 -20
- package/dist/node_modules/lodash-es/_Map.js +0 -6
- package/dist/node_modules/lodash-es/_MapCache.js +0 -20
- package/dist/node_modules/lodash-es/_Promise.js +0 -6
- package/dist/node_modules/lodash-es/_Set.js +0 -6
- package/dist/node_modules/lodash-es/_SetCache.js +0 -13
- package/dist/node_modules/lodash-es/_Stack.js +0 -18
- package/dist/node_modules/lodash-es/_Symbol.js +0 -5
- package/dist/node_modules/lodash-es/_Uint8Array.js +0 -5
- package/dist/node_modules/lodash-es/_WeakMap.js +0 -6
- package/dist/node_modules/lodash-es/_arrayFilter.js +0 -10
- package/dist/node_modules/lodash-es/_arrayLikeKeys.js +0 -20
- package/dist/node_modules/lodash-es/_arrayMap.js +0 -8
- package/dist/node_modules/lodash-es/_arrayPush.js +0 -8
- package/dist/node_modules/lodash-es/_arraySome.js +0 -9
- package/dist/node_modules/lodash-es/_assocIndexOf.js +0 -10
- package/dist/node_modules/lodash-es/_baseEach.js +0 -6
- package/dist/node_modules/lodash-es/_baseFlatten.js +0 -13
- package/dist/node_modules/lodash-es/_baseFor.js +0 -5
- package/dist/node_modules/lodash-es/_baseForOwn.js +0 -8
- package/dist/node_modules/lodash-es/_baseGet.js +0 -11
- package/dist/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
- package/dist/node_modules/lodash-es/_baseGetTag.js +0 -10
- package/dist/node_modules/lodash-es/_baseHasIn.js +0 -6
- package/dist/node_modules/lodash-es/_baseIsArguments.js +0 -9
- package/dist/node_modules/lodash-es/_baseIsEqual.js +0 -8
- package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +0 -32
- package/dist/node_modules/lodash-es/_baseIsMatch.js +0 -29
- package/dist/node_modules/lodash-es/_baseIsNative.js +0 -16
- package/dist/node_modules/lodash-es/_baseIsTypedArray.js +0 -12
- package/dist/node_modules/lodash-es/_baseIteratee.js +0 -11
- package/dist/node_modules/lodash-es/_baseKeys.js +0 -14
- package/dist/node_modules/lodash-es/_baseMap.js +0 -11
- package/dist/node_modules/lodash-es/_baseMatches.js +0 -12
- package/dist/node_modules/lodash-es/_baseMatchesProperty.js +0 -17
- package/dist/node_modules/lodash-es/_baseProperty.js +0 -8
- package/dist/node_modules/lodash-es/_basePropertyDeep.js +0 -9
- package/dist/node_modules/lodash-es/_baseRange.js +0 -9
- package/dist/node_modules/lodash-es/_baseTimes.js +0 -8
- package/dist/node_modules/lodash-es/_baseToString.js +0 -18
- package/dist/node_modules/lodash-es/_baseTrim.js +0 -8
- package/dist/node_modules/lodash-es/_baseUnary.js +0 -8
- package/dist/node_modules/lodash-es/_cacheHas.js +0 -6
- package/dist/node_modules/lodash-es/_castPath.js +0 -10
- package/dist/node_modules/lodash-es/_coreJsData.js +0 -5
- package/dist/node_modules/lodash-es/_createBaseEach.js +0 -15
- package/dist/node_modules/lodash-es/_createBaseFor.js +0 -13
- package/dist/node_modules/lodash-es/_createRange.js +0 -11
- package/dist/node_modules/lodash-es/_equalArrays.js +0 -40
- package/dist/node_modules/lodash-es/_equalByTag.js +0 -45
- package/dist/node_modules/lodash-es/_equalObjects.js +0 -36
- package/dist/node_modules/lodash-es/_freeGlobal.js +0 -4
- package/dist/node_modules/lodash-es/_getAllKeys.js +0 -9
- package/dist/node_modules/lodash-es/_getMapData.js +0 -8
- package/dist/node_modules/lodash-es/_getMatchData.js +0 -12
- package/dist/node_modules/lodash-es/_getNative.js +0 -9
- package/dist/node_modules/lodash-es/_getRawTag.js +0 -15
- package/dist/node_modules/lodash-es/_getSymbols.js +0 -10
- package/dist/node_modules/lodash-es/_getTag.js +0 -28
- package/dist/node_modules/lodash-es/_getValue.js +0 -6
- package/dist/node_modules/lodash-es/_hasPath.js +0 -19
- package/dist/node_modules/lodash-es/_hashClear.js +0 -7
- package/dist/node_modules/lodash-es/_hashDelete.js +0 -7
- package/dist/node_modules/lodash-es/_hashGet.js +0 -13
- package/dist/node_modules/lodash-es/_hashHas.js +0 -9
- package/dist/node_modules/lodash-es/_hashSet.js +0 -9
- package/dist/node_modules/lodash-es/_isFlattenable.js +0 -10
- package/dist/node_modules/lodash-es/_isIndex.js +0 -8
- package/dist/node_modules/lodash-es/_isIterateeCall.js +0 -13
- package/dist/node_modules/lodash-es/_isKey.js +0 -12
- package/dist/node_modules/lodash-es/_isKeyable.js +0 -7
- package/dist/node_modules/lodash-es/_isMasked.js +0 -11
- package/dist/node_modules/lodash-es/_isPrototype.js +0 -8
- package/dist/node_modules/lodash-es/_isStrictComparable.js +0 -7
- package/dist/node_modules/lodash-es/_listCacheClear.js +0 -6
- package/dist/node_modules/lodash-es/_listCacheDelete.js +0 -12
- package/dist/node_modules/lodash-es/_listCacheGet.js +0 -8
- package/dist/node_modules/lodash-es/_listCacheHas.js +0 -7
- package/dist/node_modules/lodash-es/_listCacheSet.js +0 -8
- package/dist/node_modules/lodash-es/_mapCacheClear.js +0 -13
- package/dist/node_modules/lodash-es/_mapCacheDelete.js +0 -8
- package/dist/node_modules/lodash-es/_mapCacheGet.js +0 -7
- package/dist/node_modules/lodash-es/_mapCacheHas.js +0 -7
- package/dist/node_modules/lodash-es/_mapCacheSet.js +0 -8
- package/dist/node_modules/lodash-es/_mapToArray.js +0 -9
- package/dist/node_modules/lodash-es/_matchesStrictComparable.js +0 -8
- package/dist/node_modules/lodash-es/_memoizeCapped.js +0 -11
- package/dist/node_modules/lodash-es/_nativeCreate.js +0 -5
- package/dist/node_modules/lodash-es/_nativeKeys.js +0 -5
- package/dist/node_modules/lodash-es/_nodeUtil.js +0 -11
- package/dist/node_modules/lodash-es/_objectToString.js +0 -7
- package/dist/node_modules/lodash-es/_overArg.js +0 -8
- package/dist/node_modules/lodash-es/_root.js +0 -5
- package/dist/node_modules/lodash-es/_setCacheAdd.js +0 -7
- package/dist/node_modules/lodash-es/_setCacheHas.js +0 -6
- package/dist/node_modules/lodash-es/_setToArray.js +0 -9
- package/dist/node_modules/lodash-es/_stackClear.js +0 -7
- package/dist/node_modules/lodash-es/_stackDelete.js +0 -7
- package/dist/node_modules/lodash-es/_stackGet.js +0 -6
- package/dist/node_modules/lodash-es/_stackHas.js +0 -6
- package/dist/node_modules/lodash-es/_stackSet.js +0 -17
- package/dist/node_modules/lodash-es/_stringToPath.js +0 -10
- package/dist/node_modules/lodash-es/_toKey.js +0 -10
- package/dist/node_modules/lodash-es/_toSource.js +0 -17
- package/dist/node_modules/lodash-es/_trimmedEndIndex.js +0 -9
- package/dist/node_modules/lodash-es/eq.js +0 -6
- package/dist/node_modules/lodash-es/flatMap.js +0 -8
- package/dist/node_modules/lodash-es/get.js +0 -8
- package/dist/node_modules/lodash-es/hasIn.js +0 -8
- package/dist/node_modules/lodash-es/identity.js +0 -6
- package/dist/node_modules/lodash-es/isArguments.js +0 -10
- package/dist/node_modules/lodash-es/isArray.js +0 -4
- package/dist/node_modules/lodash-es/isArrayLike.js +0 -8
- package/dist/node_modules/lodash-es/isBuffer.js +0 -6
- package/dist/node_modules/lodash-es/isFunction.js +0 -12
- package/dist/node_modules/lodash-es/isLength.js +0 -7
- package/dist/node_modules/lodash-es/isObject.js +0 -7
- package/dist/node_modules/lodash-es/isObjectLike.js +0 -6
- package/dist/node_modules/lodash-es/isSymbol.js +0 -9
- package/dist/node_modules/lodash-es/isTypedArray.js +0 -7
- package/dist/node_modules/lodash-es/keys.js +0 -9
- package/dist/node_modules/lodash-es/map.js +0 -11
- package/dist/node_modules/lodash-es/memoize.js +0 -18
- package/dist/node_modules/lodash-es/property.js +0 -10
- package/dist/node_modules/lodash-es/range.js +0 -5
- package/dist/node_modules/lodash-es/stubArray.js +0 -6
- package/dist/node_modules/lodash-es/stubFalse.js +0 -6
- package/dist/node_modules/lodash-es/toFinite.js +0 -14
- package/dist/node_modules/lodash-es/toNumber.js +0 -22
- package/dist/node_modules/lodash-es/toString.js +0 -7
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var C = (p,
|
|
4
|
-
import { UIElementType as
|
|
5
|
-
import { CommonControl as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
const
|
|
1
|
+
var Y = Object.defineProperty;
|
|
2
|
+
var X = (p, f, t) => f in p ? Y(p, f, { enumerable: !0, configurable: !0, writable: !0, value: t }) : p[f] = t;
|
|
3
|
+
var C = (p, f, t) => X(p, typeof f != "symbol" ? f + "" : f, t);
|
|
4
|
+
import { UIElementType as _, UEAttr as $, ModificationDescription as y } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
|
+
import { CommonControl as J } from "../../../common-control.js";
|
|
6
|
+
import { DEFAULT_COMPOSITION as H, DEFAULT_VISIBILITY as k } from "../../constants/defaultConfig.js";
|
|
7
|
+
import { RecommendationConfigService as Q } from "../../services/configService.js";
|
|
8
|
+
import { useRecommendationExtensionStore as Z } from "../../store/recommendation.js";
|
|
9
|
+
import { ATTRIBUTE_CELL_CLASS as tt, gridElementRenderer as et, DEFAULT_CELL_PADDING as rt } from "../../templates/grid/elementRenderer.js";
|
|
10
|
+
import { listElementRenderer as ot } from "../../templates/list/elementRenderer.js";
|
|
11
|
+
import { toDisplayName as st, isDefaultAttribute as it, buildElementRenderer as q } from "../../templates/utils.js";
|
|
12
|
+
import { getTableDisplayValue as nt } from "../../utils/tagName.js";
|
|
13
|
+
import { getCurrentLayout as lt } from "../main/utils.js";
|
|
14
|
+
import { ATTR_PRODUCT_IMAGE as L, ATTR_PRODUCT_NAME as at, ATTR_PRODUCT_PRICE as ct, ATTR_PRODUCT_OLD_PRICE as dt, ATTR_PRODUCT_OMNIBUS_PRICE as ut, ATTR_PRODUCT_OMNIBUS_DISCOUNT as mt, ATTR_PRODUCT_BUTTON as D, ATTR_DATA_CUSTOM_ATTRIBUTES as w, ATTR_CUSTOM_PREFIX as m, BUILT_IN_DEFAULT_ATTRIBUTES as ht } from "../../constants/selectors.js";
|
|
15
|
+
const pt = "ui-elements-recommendation-card-composition", T = ".recommendation-attribute-row", N = ".product-card-wrapper > tbody", P = ".product-info-cell > table > tbody", F = "data-card-composition", b = "data-attribute-type", I = "data-visibility", M = {
|
|
16
16
|
ADD_ATTRIBUTE: "addAttribute"
|
|
17
17
|
}, g = 5, v = "reorderIcon_", h = [
|
|
18
18
|
{ key: L, label: "Product Image" },
|
|
19
|
-
{ key:
|
|
20
|
-
{ key:
|
|
21
|
-
{ key:
|
|
22
|
-
{ key:
|
|
23
|
-
{ key:
|
|
19
|
+
{ key: at, label: "Product Name" },
|
|
20
|
+
{ key: ct, label: "Product Price" },
|
|
21
|
+
{ key: dt, label: "Product Original Price" },
|
|
22
|
+
{ key: ut, label: "Omnibus Price" },
|
|
23
|
+
{ key: mt, label: "Omnibus Discount" },
|
|
24
24
|
{ key: D, label: "Product Button" }
|
|
25
|
-
], ft = new Set(h.map((p) => p.key)),
|
|
26
|
-
class
|
|
25
|
+
], ft = new Set(h.map((p) => p.key)), A = "customAttr_", O = "deleteAttr_";
|
|
26
|
+
class Et extends J {
|
|
27
27
|
constructor() {
|
|
28
28
|
super(...arguments);
|
|
29
|
-
C(this, "store",
|
|
29
|
+
C(this, "store", Z());
|
|
30
30
|
C(this, "unsubscribeStore", null);
|
|
31
31
|
C(this, "eventController", null);
|
|
32
32
|
/**
|
|
@@ -36,7 +36,7 @@ class Nt extends Q {
|
|
|
36
36
|
C(this, "reorderInProgress", !1);
|
|
37
37
|
}
|
|
38
38
|
getId() {
|
|
39
|
-
return
|
|
39
|
+
return pt;
|
|
40
40
|
}
|
|
41
41
|
// ========================================================================
|
|
42
42
|
// Lifecycle
|
|
@@ -48,10 +48,10 @@ class Nt extends Q {
|
|
|
48
48
|
</div>
|
|
49
49
|
`).join(""), r = Array.from(
|
|
50
50
|
{ length: g },
|
|
51
|
-
(l,
|
|
52
|
-
<div data-custom-select-key="${
|
|
51
|
+
(l, d) => `
|
|
52
|
+
<div data-custom-select-key="${A}${d}" style="display: none;">
|
|
53
53
|
${this._GuSelect({
|
|
54
|
-
name: `${
|
|
54
|
+
name: `${A}${d}`,
|
|
55
55
|
placeholder: this.api.translate("Select Attribute"),
|
|
56
56
|
options: []
|
|
57
57
|
})}
|
|
@@ -59,32 +59,32 @@ class Nt extends Q {
|
|
|
59
59
|
`
|
|
60
60
|
).join(""), e = h.length + g, o = Array.from(
|
|
61
61
|
{ length: e },
|
|
62
|
-
(l,
|
|
63
|
-
<div data-reorder-icon-key="${v}${
|
|
64
|
-
<${
|
|
62
|
+
(l, d) => `
|
|
63
|
+
<div data-reorder-icon-key="${v}${d}" style="display: none;">
|
|
64
|
+
<${_.BUTTON}
|
|
65
65
|
class="drag-handle-btn flat-inline flat-white"
|
|
66
|
-
${$.BUTTON.name}="${v}${
|
|
66
|
+
${$.BUTTON.name}="${v}${d}"
|
|
67
67
|
>
|
|
68
|
-
<${
|
|
68
|
+
<${_.ICON}
|
|
69
69
|
src="reorder"
|
|
70
70
|
class="icon-button"
|
|
71
|
-
></${
|
|
72
|
-
</${
|
|
71
|
+
></${_.ICON}>
|
|
72
|
+
</${_.BUTTON}>
|
|
73
73
|
</div>
|
|
74
74
|
`
|
|
75
75
|
).join(""), s = Array.from(
|
|
76
76
|
{ length: g },
|
|
77
|
-
(l,
|
|
78
|
-
<div data-custom-delete-key="${
|
|
79
|
-
<${
|
|
77
|
+
(l, d) => `
|
|
78
|
+
<div data-custom-delete-key="${O}${d}" style="display: none;">
|
|
79
|
+
<${_.BUTTON}
|
|
80
80
|
class="custom-attr-delete flat-inline flat-white"
|
|
81
|
-
${$.BUTTON.name}="${
|
|
81
|
+
${$.BUTTON.name}="${O}${d}"
|
|
82
82
|
>
|
|
83
|
-
<${
|
|
83
|
+
<${_.ICON}
|
|
84
84
|
src="delete"
|
|
85
85
|
class="icon-button"
|
|
86
|
-
></${
|
|
87
|
-
</${
|
|
86
|
+
></${_.ICON}>
|
|
87
|
+
</${_.BUTTON}>
|
|
88
88
|
</div>
|
|
89
89
|
`
|
|
90
90
|
).join(""), i = "https://academy.insiderone.com/docs/new-editor-email-recommendation-block", n = this.api.translate(
|
|
@@ -120,7 +120,7 @@ class Nt extends Q {
|
|
|
120
120
|
<div class="orderable-list" data-composition-list></div>
|
|
121
121
|
|
|
122
122
|
${this._GuButton({
|
|
123
|
-
name:
|
|
123
|
+
name: M.ADD_ATTRIBUTE,
|
|
124
124
|
label: this.api.translate("Add Attribute"),
|
|
125
125
|
id: "guido__btn-add-attribute"
|
|
126
126
|
})}
|
|
@@ -150,7 +150,7 @@ class Nt extends Q {
|
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
for (let t = 0; t < g; t++) {
|
|
153
|
-
const r = `${
|
|
153
|
+
const r = `${A}${t}`, e = t;
|
|
154
154
|
this.api.onValueChanged(r, (o) => {
|
|
155
155
|
this._onCustomAttributeChanged(e, o);
|
|
156
156
|
});
|
|
@@ -161,14 +161,14 @@ class Nt extends Q {
|
|
|
161
161
|
// ========================================================================
|
|
162
162
|
_readCompositionFromNode() {
|
|
163
163
|
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
164
|
-
return [...
|
|
165
|
-
const t = this.currentNode.getAttribute(
|
|
166
|
-
return t ? t.split(",").filter(Boolean) : [...
|
|
164
|
+
return [...H];
|
|
165
|
+
const t = this.currentNode.getAttribute(F);
|
|
166
|
+
return t ? t.split(",").filter(Boolean) : [...H];
|
|
167
167
|
}
|
|
168
168
|
_readCustomAttributesFromNode() {
|
|
169
169
|
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
170
170
|
return [];
|
|
171
|
-
const t = this.currentNode.getAttribute(
|
|
171
|
+
const t = this.currentNode.getAttribute(w);
|
|
172
172
|
if (!t)
|
|
173
173
|
return [];
|
|
174
174
|
try {
|
|
@@ -180,18 +180,18 @@ class Nt extends Q {
|
|
|
180
180
|
_readVisibilityFromRows() {
|
|
181
181
|
if (!this.currentNode)
|
|
182
182
|
return this._getDefaultVisibilities();
|
|
183
|
-
const t = Array.from(this.currentNode.querySelectorAll(
|
|
183
|
+
const t = Array.from(this.currentNode.querySelectorAll(T)), r = this._extractVisibilityFromRows(t);
|
|
184
184
|
return this._mergeWithDefaults(r);
|
|
185
185
|
}
|
|
186
186
|
_getDefaultVisibilities() {
|
|
187
|
-
return { ...
|
|
187
|
+
return { ...k };
|
|
188
188
|
}
|
|
189
189
|
_extractVisibilityFromRows(t) {
|
|
190
190
|
const r = {};
|
|
191
191
|
return t.forEach((e) => {
|
|
192
192
|
if (!("getAttribute" in e))
|
|
193
193
|
return;
|
|
194
|
-
const o = e.getAttribute(
|
|
194
|
+
const o = e.getAttribute(b), s = e.getAttribute(I);
|
|
195
195
|
o && s !== null && (r[o] = this._parseVisibilityValue(s));
|
|
196
196
|
}), r;
|
|
197
197
|
}
|
|
@@ -199,7 +199,7 @@ class Nt extends Q {
|
|
|
199
199
|
return t === "1" || t === "true";
|
|
200
200
|
}
|
|
201
201
|
_mergeWithDefaults(t) {
|
|
202
|
-
return Object.entries(
|
|
202
|
+
return Object.entries(k).forEach(([r, e]) => {
|
|
203
203
|
r in t || (t[r] = e);
|
|
204
204
|
}), t;
|
|
205
205
|
}
|
|
@@ -225,7 +225,7 @@ class Nt extends Q {
|
|
|
225
225
|
let i = 0, n = 0;
|
|
226
226
|
const c = t.map((a) => {
|
|
227
227
|
if (ft.has(a)) {
|
|
228
|
-
const l = h.find((
|
|
228
|
+
const l = h.find((d) => d.key === a);
|
|
229
229
|
return this._createBuiltInItemHtml(l, n++);
|
|
230
230
|
}
|
|
231
231
|
if (a.startsWith(m)) {
|
|
@@ -257,8 +257,8 @@ class Nt extends Q {
|
|
|
257
257
|
e.forEach((a) => {
|
|
258
258
|
const { key: l } = a.dataset;
|
|
259
259
|
if (l) {
|
|
260
|
-
const
|
|
261
|
-
|
|
260
|
+
const d = n.get(l) || [];
|
|
261
|
+
d.push(a), n.set(l, d);
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
264
|
const c = /* @__PURE__ */ new Map();
|
|
@@ -266,8 +266,8 @@ class Nt extends Q {
|
|
|
266
266
|
const l = n.get(a);
|
|
267
267
|
if (!l)
|
|
268
268
|
return;
|
|
269
|
-
const
|
|
270
|
-
c.set(a,
|
|
269
|
+
const d = c.get(a) || 0;
|
|
270
|
+
c.set(a, d + 1), l[d] && t.appendChild(l[d]);
|
|
271
271
|
}), !0;
|
|
272
272
|
}
|
|
273
273
|
_createBuiltInItemHtml(t, r) {
|
|
@@ -315,7 +315,7 @@ class Nt extends Q {
|
|
|
315
315
|
_initializeCustomSelects(t) {
|
|
316
316
|
t.length !== 0 && setTimeout(() => {
|
|
317
317
|
t.forEach((r, e) => {
|
|
318
|
-
const o = `${
|
|
318
|
+
const o = `${A}${e}`, s = this._getSelectOptions(r, t);
|
|
319
319
|
this.api.setUIEAttribute(o, $.SELECTPICKER.items, s), this.api.updateValues({ [o]: r });
|
|
320
320
|
});
|
|
321
321
|
}, 0);
|
|
@@ -339,7 +339,7 @@ class Nt extends Q {
|
|
|
339
339
|
*/
|
|
340
340
|
_moveSelectsIntoItems(t, r) {
|
|
341
341
|
for (let e = 0; e < r; e++) {
|
|
342
|
-
const o = `${
|
|
342
|
+
const o = `${A}${e}`, s = t.querySelector(`[data-custom-select-key="${o}"]`), i = t.querySelector(`[data-custom-select-slot="${e}"]`);
|
|
343
343
|
if (s && i) {
|
|
344
344
|
const n = s.querySelector("ue-select");
|
|
345
345
|
n && i.appendChild(n);
|
|
@@ -367,7 +367,7 @@ class Nt extends Q {
|
|
|
367
367
|
*/
|
|
368
368
|
_rescueSelectsToStore(t) {
|
|
369
369
|
for (let r = 0; r < g; r++) {
|
|
370
|
-
const e = `${
|
|
370
|
+
const e = `${A}${r}`, o = t.querySelector(`[data-custom-select-key="${e}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
|
|
371
371
|
if (s) {
|
|
372
372
|
const i = s.querySelector("ue-select");
|
|
373
373
|
i && o && o.appendChild(i);
|
|
@@ -380,7 +380,7 @@ class Nt extends Q {
|
|
|
380
380
|
*/
|
|
381
381
|
_moveDeleteButtonsIntoItems(t, r) {
|
|
382
382
|
for (let e = 0; e < r; e++) {
|
|
383
|
-
const o = `${
|
|
383
|
+
const o = `${O}${e}`, s = t.querySelector(`[data-custom-delete-key="${o}"]`), i = t.querySelector(`[data-custom-delete-slot="${e}"]`);
|
|
384
384
|
if (s && i) {
|
|
385
385
|
const n = s.querySelector("ue-button");
|
|
386
386
|
n && i.appendChild(n);
|
|
@@ -393,7 +393,7 @@ class Nt extends Q {
|
|
|
393
393
|
*/
|
|
394
394
|
_rescueDeleteButtonsToStore(t) {
|
|
395
395
|
for (let r = 0; r < g; r++) {
|
|
396
|
-
const e = `${
|
|
396
|
+
const e = `${O}${r}`, o = t.querySelector(`[data-custom-delete-key="${e}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
|
|
397
397
|
if (s) {
|
|
398
398
|
const i = s.querySelector("ue-button");
|
|
399
399
|
i && o && o.appendChild(i);
|
|
@@ -444,24 +444,23 @@ class Nt extends Q {
|
|
|
444
444
|
_setupDragAndDrop(t, r) {
|
|
445
445
|
let e = null, o = null;
|
|
446
446
|
t.addEventListener("dragstart", (s) => {
|
|
447
|
-
var c;
|
|
448
447
|
const n = s.target.closest(".orderable-item");
|
|
449
|
-
n && (e = n, n.classList.add("dragging"),
|
|
448
|
+
n && (e = n, n.classList.add("dragging"), s.dataTransfer?.setData("text/plain", n.dataset.key || ""));
|
|
450
449
|
}, { signal: r }), t.addEventListener("dragend", () => {
|
|
451
|
-
e && e.classList.remove("dragging"), e = null, o
|
|
450
|
+
e && e.classList.remove("dragging"), e = null, o?.classList.remove("drag-over"), o = null;
|
|
452
451
|
}, { signal: r }), t.addEventListener("dragover", (s) => {
|
|
453
452
|
s.preventDefault();
|
|
454
453
|
const n = s.target.closest(".orderable-item"), c = n && n !== e ? n : null;
|
|
455
|
-
c !== o && (o
|
|
454
|
+
c !== o && (o?.classList.remove("drag-over"), o = c, o?.classList.add("drag-over"));
|
|
456
455
|
}, { signal: r }), t.addEventListener("drop", (s) => {
|
|
457
456
|
s.preventDefault();
|
|
458
457
|
const n = s.target.closest(".orderable-item");
|
|
459
458
|
if (!n || !e || n === e)
|
|
460
459
|
return;
|
|
461
460
|
const c = n.getBoundingClientRect(), a = c.top + c.height / 2;
|
|
462
|
-
s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o
|
|
463
|
-
const
|
|
464
|
-
this._onReorder(
|
|
461
|
+
s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o?.classList.remove("drag-over"), o = null, e.classList.remove("dragging");
|
|
462
|
+
const d = t.querySelectorAll(".orderable-item"), u = Array.from(d).map((S) => S.dataset.key).filter(Boolean);
|
|
463
|
+
this._onReorder(u), e = null;
|
|
465
464
|
}, { signal: r });
|
|
466
465
|
}
|
|
467
466
|
_setupDeleteHandler(t, r) {
|
|
@@ -469,7 +468,7 @@ class Nt extends Q {
|
|
|
469
468
|
const s = e.target.closest(".custom-attr-delete");
|
|
470
469
|
if (!s)
|
|
471
470
|
return;
|
|
472
|
-
const
|
|
471
|
+
const n = s.closest("[data-custom-index]")?.dataset.customIndex;
|
|
473
472
|
n !== void 0 && this._onDeleteCustomAttribute(Number(n));
|
|
474
473
|
}, { signal: r });
|
|
475
474
|
}
|
|
@@ -526,56 +525,55 @@ class Nt extends Q {
|
|
|
526
525
|
}
|
|
527
526
|
_injectGridAttributeRow(t, r, e, o) {
|
|
528
527
|
const s = this.currentNode.querySelectorAll(N);
|
|
529
|
-
if (!
|
|
528
|
+
if (!s?.length)
|
|
530
529
|
return;
|
|
531
|
-
const i =
|
|
532
|
-
let
|
|
533
|
-
s.forEach((
|
|
534
|
-
|
|
535
|
-
const b = d.querySelector(S), R = ((U = b == null ? void 0 : b.querySelectorAll(`.${lt}`)) == null ? void 0 : U.length) || 1, V = (100 / R).toFixed(2), { bgStyle: j, bgAttr: W } = this._extractSegmentBgFromCard(d), K = o.map((B) => {
|
|
530
|
+
const i = Q.getConfig(this.currentNode), c = `0 ${Math.floor(i.columnSpacing / 2)}px`, a = this.api.getDocumentModifier(), l = this.store.recommendationProducts.length;
|
|
531
|
+
let d = 0;
|
|
532
|
+
s.forEach((u) => {
|
|
533
|
+
const R = u.querySelector(T)?.querySelectorAll(`.${tt}`)?.length || 1, x = (100 / R).toFixed(2), { bgStyle: V, bgAttr: j } = this._extractSegmentBgFromCard(u), W = o.map((B) => {
|
|
536
534
|
if (B === e) {
|
|
537
|
-
const
|
|
535
|
+
const K = Array.from(
|
|
538
536
|
{ length: R },
|
|
539
|
-
(
|
|
540
|
-
const
|
|
537
|
+
(_t, U) => {
|
|
538
|
+
const z = l > 0 ? (d + U) % l : U, G = this._resolveAttributeContent(t, r, z);
|
|
541
539
|
return this._getGridCellHtml(
|
|
542
540
|
t,
|
|
543
|
-
|
|
541
|
+
G,
|
|
542
|
+
x,
|
|
544
543
|
V,
|
|
545
544
|
j,
|
|
546
|
-
W,
|
|
547
545
|
c
|
|
548
546
|
);
|
|
549
547
|
}
|
|
550
548
|
).join("");
|
|
551
|
-
return `<tr class="recommendation-attribute-row" ${
|
|
549
|
+
return `<tr class="recommendation-attribute-row" ${b}="${e}" ${I}="1">${K}</tr>`;
|
|
552
550
|
}
|
|
553
|
-
const
|
|
554
|
-
`${
|
|
551
|
+
const E = u.querySelector(
|
|
552
|
+
`${T}[${b}="${B}"]`
|
|
555
553
|
);
|
|
556
|
-
return
|
|
554
|
+
return E && "getOuterHTML" in E ? E.getOuterHTML() : "";
|
|
557
555
|
}).join("");
|
|
558
|
-
|
|
559
|
-
}), a.apply(new
|
|
556
|
+
d += R, l > 0 && d >= l && (d = 0), a.modifyHtml(u).setInnerHtml(W);
|
|
557
|
+
}), a.apply(new y(`${this.api.translate("Add custom attribute")}: ${r}`));
|
|
560
558
|
}
|
|
561
559
|
_injectListAttributeRow(t, r, e, o) {
|
|
562
|
-
const s = this.currentNode.querySelectorAll(
|
|
563
|
-
if (!
|
|
560
|
+
const s = this.currentNode.querySelectorAll(P);
|
|
561
|
+
if (!s?.length)
|
|
564
562
|
return;
|
|
565
563
|
const i = o.filter((c) => c !== L && c !== D), n = this.api.getDocumentModifier();
|
|
566
564
|
s.forEach((c, a) => {
|
|
567
|
-
const l = i.map((
|
|
568
|
-
if (
|
|
569
|
-
const
|
|
570
|
-
return this._getListRowHtml(t,
|
|
565
|
+
const l = i.map((d) => {
|
|
566
|
+
if (d === e) {
|
|
567
|
+
const S = this._resolveAttributeContent(t, r, a);
|
|
568
|
+
return this._getListRowHtml(t, S, e);
|
|
571
569
|
}
|
|
572
|
-
const
|
|
573
|
-
`${
|
|
570
|
+
const u = c.querySelector(
|
|
571
|
+
`${T}[${b}="${d}"]`
|
|
574
572
|
);
|
|
575
|
-
return
|
|
573
|
+
return u && "getOuterHTML" in u ? u.getOuterHTML() : "";
|
|
576
574
|
}).join("");
|
|
577
575
|
n.modifyHtml(c).setInnerHtml(l);
|
|
578
|
-
}), n.apply(new
|
|
576
|
+
}), n.apply(new y(`${this.api.translate("Add custom attribute")}: ${r}`));
|
|
579
577
|
}
|
|
580
578
|
/**
|
|
581
579
|
* Removes a custom attribute by rebuilding product card content without it.
|
|
@@ -585,20 +583,19 @@ class Nt extends Q {
|
|
|
585
583
|
if (!this.currentNode)
|
|
586
584
|
return;
|
|
587
585
|
const r = this._getCurrentLayout(), e = this.api.getDocumentModifier();
|
|
588
|
-
if (r === "grid")
|
|
589
|
-
|
|
590
|
-
o == null || o.forEach((s) => {
|
|
586
|
+
if (r === "grid")
|
|
587
|
+
this.currentNode.querySelectorAll(N)?.forEach((s) => {
|
|
591
588
|
const i = this._buildCompositionHtml(s, t);
|
|
592
589
|
e.modifyHtml(s).setInnerHtml(i);
|
|
593
590
|
});
|
|
594
|
-
|
|
595
|
-
const o = t.filter((i) => i !== L && i !== D)
|
|
596
|
-
|
|
591
|
+
else {
|
|
592
|
+
const o = t.filter((i) => i !== L && i !== D);
|
|
593
|
+
this.currentNode.querySelectorAll(P)?.forEach((i) => {
|
|
597
594
|
const n = this._buildCompositionHtml(i, o);
|
|
598
595
|
e.modifyHtml(i).setInnerHtml(n);
|
|
599
596
|
});
|
|
600
597
|
}
|
|
601
|
-
e.apply(new
|
|
598
|
+
e.apply(new y(this.api.translate("Remove custom attribute")));
|
|
602
599
|
}
|
|
603
600
|
// ========================================================================
|
|
604
601
|
// DOM Mutation (Block Root Attributes, Reorder)
|
|
@@ -611,7 +608,7 @@ class Nt extends Q {
|
|
|
611
608
|
* producing a flicker on the custom attribute dropdowns.
|
|
612
609
|
*/
|
|
613
610
|
_updateBothAttributes(t, r) {
|
|
614
|
-
this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(
|
|
611
|
+
this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(F, t.join(",")).setAttribute(w, JSON.stringify(r)).apply(new y(this.api.translate("Update card composition")));
|
|
615
612
|
}
|
|
616
613
|
/**
|
|
617
614
|
* Reorders attribute rows within each product card based on composition order.
|
|
@@ -621,13 +618,13 @@ class Nt extends Q {
|
|
|
621
618
|
if (!this.currentNode)
|
|
622
619
|
return;
|
|
623
620
|
const r = this.currentNode.querySelectorAll(N);
|
|
624
|
-
if (!
|
|
621
|
+
if (!r?.length)
|
|
625
622
|
return;
|
|
626
623
|
const e = this.api.getDocumentModifier();
|
|
627
624
|
r.forEach((o) => {
|
|
628
625
|
const s = this._buildCompositionHtml(o, t);
|
|
629
626
|
e.modifyHtml(o).setInnerHtml(s);
|
|
630
|
-
}), e.apply(new
|
|
627
|
+
}), e.apply(new y(this.api.translate("Reorder product attributes")));
|
|
631
628
|
}
|
|
632
629
|
/**
|
|
633
630
|
* Builds HTML string with attributes ordered according to composition.
|
|
@@ -635,7 +632,7 @@ class Nt extends Q {
|
|
|
635
632
|
*/
|
|
636
633
|
_buildCompositionHtml(t, r) {
|
|
637
634
|
return r.reduce((e, o) => {
|
|
638
|
-
const s = t.querySelector(`${
|
|
635
|
+
const s = t.querySelector(`${T}[${b}="${o}"]`);
|
|
639
636
|
return s && "getOuterHTML" in s ? e + s.getOuterHTML() : e;
|
|
640
637
|
}, "");
|
|
641
638
|
}
|
|
@@ -645,14 +642,14 @@ class Nt extends Q {
|
|
|
645
642
|
_applyVisibilityToBlock(t, r) {
|
|
646
643
|
if (!this.currentNode)
|
|
647
644
|
return;
|
|
648
|
-
const e = this.currentNode.querySelectorAll(`${
|
|
649
|
-
if (!
|
|
645
|
+
const e = this.currentNode.querySelectorAll(`${T}[${b}="${t}"]`);
|
|
646
|
+
if (!e?.length)
|
|
650
647
|
return;
|
|
651
648
|
const o = r ? "1" : "0", s = r ? this.api.translate("visible") : this.api.translate("hidden"), i = `${this.api.translate("Set visibility")}: ${t} → ${s}`, n = this.api.getDocumentModifier();
|
|
652
649
|
e.forEach((c) => {
|
|
653
|
-
const a =
|
|
650
|
+
const a = nt(c), l = r ? a : "none";
|
|
654
651
|
n.modifyHtml(c).setStyle("display", l).setAttribute(I, o);
|
|
655
|
-
}), n.apply(new
|
|
652
|
+
}), n.apply(new y(i));
|
|
656
653
|
}
|
|
657
654
|
// ========================================================================
|
|
658
655
|
// Utilities
|
|
@@ -673,7 +670,7 @@ class Nt extends Q {
|
|
|
673
670
|
return -1;
|
|
674
671
|
}
|
|
675
672
|
_getCurrentLayout() {
|
|
676
|
-
return this.store.recommendationConfigs.orientation ||
|
|
673
|
+
return this.store.recommendationConfigs.orientation || lt(this.currentNode);
|
|
677
674
|
}
|
|
678
675
|
/**
|
|
679
676
|
* Extracts background color properties from existing card elements.
|
|
@@ -682,21 +679,20 @@ class Nt extends Q {
|
|
|
682
679
|
* Used when injecting new attribute cells to match the card's current background.
|
|
683
680
|
*/
|
|
684
681
|
_extractSegmentBgFromCard(t) {
|
|
685
|
-
var o;
|
|
686
682
|
const r = t.querySelector(".product-card-segment");
|
|
687
683
|
if (r && "getAttribute" in r) {
|
|
688
|
-
const
|
|
689
|
-
if (
|
|
690
|
-
const
|
|
691
|
-
return { bgStyle: `background-color: ${
|
|
684
|
+
const s = (r.getAttribute("style") || "").match(/background-color:\s*([^;]+)/);
|
|
685
|
+
if (s) {
|
|
686
|
+
const i = r.getAttribute("bgcolor") || "";
|
|
687
|
+
return { bgStyle: `background-color: ${s[1].trim()};`, bgAttr: i };
|
|
692
688
|
}
|
|
693
689
|
}
|
|
694
|
-
const e =
|
|
690
|
+
const e = this.currentNode?.querySelector(".product-card-wrapper");
|
|
695
691
|
if (e && "getStyle" in e) {
|
|
696
|
-
const
|
|
697
|
-
if (
|
|
698
|
-
const
|
|
699
|
-
return { bgStyle: `background-color: ${
|
|
692
|
+
const o = e.getStyle("background-color");
|
|
693
|
+
if (o && o !== "transparent") {
|
|
694
|
+
const s = "getAttribute" in e && e.getAttribute("bgcolor") || "";
|
|
695
|
+
return { bgStyle: `background-color: ${o};`, bgAttr: s };
|
|
700
696
|
}
|
|
701
697
|
}
|
|
702
698
|
return { bgStyle: "", bgAttr: "" };
|
|
@@ -726,7 +722,7 @@ class Nt extends Q {
|
|
|
726
722
|
_updateAddButtonState() {
|
|
727
723
|
const t = this._readCustomAttributesFromNode(), r = t.length >= g, e = new Set(t), o = this._getAddableFilters(), s = o.length > 0 && o.every((i) => e.has(i.attributeName));
|
|
728
724
|
this.api.setUIEAttribute(
|
|
729
|
-
|
|
725
|
+
M.ADD_ATTRIBUTE,
|
|
730
726
|
$.BUTTON.disabled,
|
|
731
727
|
r || s ? "true" : "false"
|
|
732
728
|
);
|
|
@@ -750,7 +746,7 @@ class Nt extends Q {
|
|
|
750
746
|
* excluding default attributes already covered by built-in toggle items.
|
|
751
747
|
*/
|
|
752
748
|
_getAddableFilters() {
|
|
753
|
-
return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" &&
|
|
749
|
+
return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && ht.has(t.attributeName)));
|
|
754
750
|
}
|
|
755
751
|
/**
|
|
756
752
|
* Looks up the display name for an attribute from the store's filterList.
|
|
@@ -758,37 +754,36 @@ class Nt extends Q {
|
|
|
758
754
|
*/
|
|
759
755
|
_getDisplayNameForAttribute(t) {
|
|
760
756
|
const r = Object.values(this.store.filterList).find((e) => e.attributeName === t);
|
|
761
|
-
return r ? r.displayName :
|
|
757
|
+
return r ? r.displayName : st(t);
|
|
762
758
|
}
|
|
763
759
|
/**
|
|
764
760
|
* Resolves the display content for a custom attribute cell.
|
|
765
761
|
* Uses the real product value from the store when available, falls back to displayName.
|
|
766
762
|
*/
|
|
767
763
|
_resolveAttributeContent(t, r, e) {
|
|
768
|
-
|
|
769
|
-
const s = this.store.recommendationProducts[e], i = mt(t, this.store.filterList) ? s == null ? void 0 : s[t] : (n = s == null ? void 0 : s.product_attributes) == null ? void 0 : n[t];
|
|
764
|
+
const s = this.store.recommendationProducts[e], i = it(t, this.store.filterList) ? s?.[t] : s?.product_attributes?.[t];
|
|
770
765
|
return typeof i == "string" ? i : typeof i == "number" ? String(i) : r;
|
|
771
766
|
}
|
|
772
767
|
_getGridCellHtml(t, r, e, o = "", s = "", i = "") {
|
|
773
|
-
const n = `${m}${t}`, c =
|
|
768
|
+
const n = `${m}${t}`, c = q(et, [n], this.store.filterList), a = {
|
|
774
769
|
[t]: r,
|
|
775
770
|
product_attributes: { [t]: r }
|
|
776
771
|
};
|
|
777
772
|
let l = c[n](a);
|
|
778
773
|
return l = l.replace("<td", `<td width="${e}%"`), i && (l = l.replace(
|
|
779
|
-
`padding: ${
|
|
774
|
+
`padding: ${rt}`,
|
|
780
775
|
`padding: ${i}`
|
|
781
776
|
)), o && (l = l.replace(/style="table-layout: fixed;"/, `style="table-layout: fixed; ${o}"`)), s && (l = l.replace(/border="0"/, `border="0" bgcolor="${s}"`)), l;
|
|
782
777
|
}
|
|
783
778
|
_getListRowHtml(t, r, e) {
|
|
784
|
-
const o =
|
|
779
|
+
const o = q(ot, [e], this.store.filterList), s = {
|
|
785
780
|
[t]: r,
|
|
786
781
|
product_attributes: { [t]: r }
|
|
787
782
|
}, n = o[e](s).replace(/<tr>/, "").replace(/<\/tr>/, "");
|
|
788
|
-
return `<tr class="recommendation-attribute-row" ${
|
|
783
|
+
return `<tr class="recommendation-attribute-row" ${b}="${e}" ${I}="1">${n}</tr>`;
|
|
789
784
|
}
|
|
790
785
|
}
|
|
791
786
|
export {
|
|
792
|
-
|
|
793
|
-
|
|
787
|
+
pt as COMPOSITION_CONTROL_BLOCK_ID,
|
|
788
|
+
Et as RecommendationCardCompositionControl
|
|
794
789
|
};
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { TextPaddingsBuiltInControl as d, ButtonBackgroundColorBuiltInControl as i, TextFontFamilyBuiltInControl as u, TextStyleBuiltInControl as c, TextSizeBuiltInControl as C, TextColorBuiltInControl as g, TextAlignBuiltInControl as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { CustomAttributeTextTrimControl as A } from "./textTrim.js";
|
|
3
3
|
import { RecommendationControlId as e } from "../../constants/controlIds.js";
|
|
4
|
-
import { BLOCK_ROOT_SELECTOR as
|
|
5
|
-
import {
|
|
4
|
+
import { BLOCK_ROOT_SELECTOR as I, ATTR_PRODUCT_ATTR as l } from "../../constants/selectors.js";
|
|
5
|
+
import { RecommendationBlockId as s } from "../../constants/blockIds.js";
|
|
6
6
|
function o(t) {
|
|
7
|
-
const r = t.closest(
|
|
7
|
+
const r = t.closest(I);
|
|
8
8
|
if (!r)
|
|
9
9
|
return [];
|
|
10
|
-
const n = t.asElement().getAttribute(
|
|
10
|
+
const n = t.asElement().getAttribute(l);
|
|
11
11
|
if (n) {
|
|
12
|
-
const T = `[esd-extension-block-id="${
|
|
12
|
+
const T = `[esd-extension-block-id="${s.CUSTOM_ATTRIBUTE}"][${l}="${n}"]`;
|
|
13
13
|
return r.querySelectorAll(T);
|
|
14
14
|
}
|
|
15
15
|
return r.querySelectorAll(
|
|
16
|
-
`[esd-extension-block-id="${
|
|
16
|
+
`[esd-extension-block-id="${s.CUSTOM_ATTRIBUTE}"]`
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
19
|
const m = class extends a {
|
|
@@ -73,9 +73,9 @@ const m = class extends a {
|
|
|
73
73
|
fontFamily: O,
|
|
74
74
|
background: R,
|
|
75
75
|
paddings: B,
|
|
76
|
-
textTrim:
|
|
76
|
+
textTrim: A
|
|
77
77
|
};
|
|
78
78
|
export {
|
|
79
79
|
p as CustomAttributeControls,
|
|
80
|
-
|
|
80
|
+
A as CustomAttributeTextTrimControl
|
|
81
81
|
};
|