@builder.io/sdk-vue 4.0.8 → 4.0.9

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 (82) hide show
  1. package/lib/browser/{awaiter-isRx9Yhd.js → awaiter-NGUZx5Ql.js} +1 -1
  2. package/lib/browser/{awaiter-OLNb_n6-.cjs → awaiter-QQ0ayrjs.cjs} +1 -1
  3. package/lib/browser/{block-styles-gW8iE3NH.js → block-styles-1ljGw6Mj.js} +1 -1
  4. package/lib/browser/{block-styles-6C_KdO7n.cjs → block-styles-brcVdkhf.cjs} +1 -1
  5. package/lib/browser/{block-wrapper--UA6l0DJ.js → block-wrapper-DtVkLhgy.js} +3 -3
  6. package/lib/browser/{block-wrapper-VXy583MG.cjs → block-wrapper-Kqaoo_JN.cjs} +1 -1
  7. package/lib/browser/blocks/personalization-container/helpers/inlined-fns.d.ts +4 -1
  8. package/lib/browser/blocks/personalization-container/helpers.d.ts +24 -4
  9. package/lib/browser/blocks/personalization-container/personalization-container.types.d.ts +2 -2
  10. package/lib/browser/blocks/personalization-container/personalization-container.vue.d.ts +13 -2
  11. package/lib/browser/{component-ref-PKi5zQLG.js → component-ref-8jA-nznS.js} +3 -3
  12. package/lib/browser/{component-ref-BSoLNe8a.cjs → component-ref-mlq-HO5q.cjs} +1 -1
  13. package/lib/browser/components/blocks/blocks-wrapper.vue.d.ts +13 -1
  14. package/lib/browser/components/blocks/blocks.types.d.ts +1 -1
  15. package/lib/browser/components/blocks/blocks.vue.d.ts +3 -0
  16. package/lib/browser/components/content-variants/content-variants.vue.d.ts +3 -3
  17. package/lib/browser/constants/sdk-version.d.ts +1 -1
  18. package/lib/browser/{get-block-properties-IAHDaK7X.js → get-block-properties-80VdsSqT.js} +1 -1
  19. package/lib/browser/{get-block-properties-MbA9feRS.cjs → get-block-properties-IBTEr28C.cjs} +1 -1
  20. package/lib/{node/index-dUsR-LUC.js → browser/index-KjzWfqlO.js} +1716 -1073
  21. package/lib/browser/index-Vp6MzDwO.cjs +334 -0
  22. package/lib/browser/index.cjs +1 -1
  23. package/lib/browser/index.mjs +1 -1
  24. package/lib/browser/{repeated-block-lYIzWwqT.cjs → repeated-block-O3ZIMaDN.cjs} +1 -1
  25. package/lib/browser/{repeated-block-UdGwjbN4.js → repeated-block-dPRvzhlz.js} +2 -2
  26. package/lib/browser/style.css +1 -1
  27. package/lib/edge/{awaiter-yQhCDL0p.js → awaiter-BmZPvTmY.js} +1 -1
  28. package/lib/edge/{awaiter-q73ktXnL.cjs → awaiter-zZkUYGfP.cjs} +1 -1
  29. package/lib/edge/{block-styles-krtvZ4wJ.cjs → block-styles-lDMPr9Nu.cjs} +1 -1
  30. package/lib/edge/{block-styles-cQqc9t0g.js → block-styles-md18lVIN.js} +1 -1
  31. package/lib/{node/block-wrapper-a-O0UYvU.js → edge/block-wrapper-BmDWBasR.js} +3 -3
  32. package/lib/{node/block-wrapper-dUYQEu6i.cjs → edge/block-wrapper-S-4nMmEu.cjs} +1 -1
  33. package/lib/edge/blocks/personalization-container/helpers/inlined-fns.d.ts +4 -1
  34. package/lib/edge/blocks/personalization-container/helpers.d.ts +24 -4
  35. package/lib/edge/blocks/personalization-container/personalization-container.types.d.ts +2 -2
  36. package/lib/edge/blocks/personalization-container/personalization-container.vue.d.ts +13 -2
  37. package/lib/edge/{component-ref-EDola72k.cjs → component-ref-Fio8pmyO.cjs} +1 -1
  38. package/lib/{node/component-ref-6ZTfRWNi.js → edge/component-ref-uMAm0HOc.js} +3 -3
  39. package/lib/edge/components/blocks/blocks-wrapper.vue.d.ts +13 -1
  40. package/lib/edge/components/blocks/blocks.types.d.ts +1 -1
  41. package/lib/edge/components/blocks/blocks.vue.d.ts +3 -0
  42. package/lib/edge/components/content-variants/content-variants.vue.d.ts +3 -3
  43. package/lib/edge/constants/sdk-version.d.ts +1 -1
  44. package/lib/edge/{get-block-properties-UnxPA054.js → get-block-properties-pXjgMFIB.js} +1 -1
  45. package/lib/edge/{get-block-properties-fD4qNRB9.cjs → get-block-properties-y7g7BBRa.cjs} +1 -1
  46. package/lib/edge/index-1mTahtIN.cjs +352 -0
  47. package/lib/edge/{index-Phh5QI1z.js → index-X90Q9UQG.js} +2432 -1910
  48. package/lib/edge/index.cjs +1 -1
  49. package/lib/edge/index.mjs +1 -1
  50. package/lib/{node/repeated-block-Mn3MoYF9.cjs → edge/repeated-block-ErVtBhOC.cjs} +1 -1
  51. package/lib/{node/repeated-block-WusuFFLd.js → edge/repeated-block-KbgL394o.js} +2 -2
  52. package/lib/edge/style.css +1 -1
  53. package/lib/node/{awaiter-rTNOaG9i.cjs → awaiter-0qrXexFR.cjs} +1 -1
  54. package/lib/node/{awaiter--eXt1zCI.js → awaiter-K4aVGux4.js} +1 -1
  55. package/lib/node/{block-styles-CnYwZPG8.js → block-styles-Oh7Ayznk.js} +1 -1
  56. package/lib/node/{block-styles-X1zBe4K-.cjs → block-styles-R1qZ8Iq4.cjs} +1 -1
  57. package/lib/{edge/block-wrapper-9DbpMl_d.js → node/block-wrapper-gIzRaEXS.js} +3 -3
  58. package/lib/{edge/block-wrapper-P2ngZuRV.cjs → node/block-wrapper-hJaocbqY.cjs} +1 -1
  59. package/lib/node/blocks/personalization-container/helpers/inlined-fns.d.ts +4 -1
  60. package/lib/node/blocks/personalization-container/helpers.d.ts +24 -4
  61. package/lib/node/blocks/personalization-container/personalization-container.types.d.ts +2 -2
  62. package/lib/node/blocks/personalization-container/personalization-container.vue.d.ts +13 -2
  63. package/lib/node/{component-ref-J2vcSy4E.cjs → component-ref-9IWpSBOs.cjs} +1 -1
  64. package/lib/{edge/component-ref-FzpAjKWx.js → node/component-ref-_nVVmv4u.js} +3 -3
  65. package/lib/node/components/blocks/blocks-wrapper.vue.d.ts +13 -1
  66. package/lib/node/components/blocks/blocks.types.d.ts +1 -1
  67. package/lib/node/components/blocks/blocks.vue.d.ts +3 -0
  68. package/lib/node/components/content-variants/content-variants.vue.d.ts +3 -3
  69. package/lib/node/constants/sdk-version.d.ts +1 -1
  70. package/lib/node/{get-block-properties-wNo96juQ.js → get-block-properties-HwvhgeYy.js} +1 -1
  71. package/lib/node/{get-block-properties-ZXWvNMFQ.cjs → get-block-properties-VA9jzftm.cjs} +1 -1
  72. package/lib/node/index-99n7C6i4.cjs +334 -0
  73. package/lib/{browser/index-3lnsErPD.js → node/index-MK7zO-UY.js} +1476 -1075
  74. package/lib/node/index.cjs +1 -1
  75. package/lib/node/index.mjs +1 -1
  76. package/lib/{edge/repeated-block-pUBaF3y8.js → node/repeated-block-5x_zeXZk.js} +2 -2
  77. package/lib/{edge/repeated-block-19TN96p4.cjs → node/repeated-block-njhj1fu8.cjs} +1 -1
  78. package/lib/node/style.css +1 -1
  79. package/package.json +1 -1
  80. package/lib/browser/index-4YDWt2GA.cjs +0 -169
  81. package/lib/edge/index-W-IYWIQ9.cjs +0 -187
  82. package/lib/node/index-yWUac5KF.cjs +0 -169
@@ -1,6 +1,6 @@
1
1
  import "./style.css";
2
2
  import { defineComponent as t, renderSlot as o } from "vue";
3
- import { e as r } from "./index-3lnsErPD.js";
3
+ import { e as r } from "./index-KjzWfqlO.js";
4
4
  const n = t({
5
5
  name: "awaiter",
6
6
  props: [],
@@ -1 +1 @@
1
- var p=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("./index-4YDWt2GA.cjs"),n=e.defineComponent({name:"awaiter",props:[],mounted(){}});function o(t,a,i,c,u,d){return e.renderSlot(t.$slots,"default")}const s=r._export_sfc(n,[["render",o]]);exports.default=s;
1
+ var p=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("./index-Vp6MzDwO.cjs"),n=e.defineComponent({name:"awaiter",props:[],mounted(){}});function o(t,a,i,c,u,d){return e.renderSlot(t.$slots,"default")}const s=r._export_sfc(n,[["render",o]]);exports.default=s;
@@ -1,6 +1,6 @@
1
1
  import "./style.css";
2
2
  import { defineComponent as _, resolveComponent as x, openBlock as T, createBlock as w, createCommentVNode as I } from "vue";
3
- import { _ as N, T as Q, c as C, g as z, a, b as m, d as A, e as D } from "./index-3lnsErPD.js";
3
+ import { _ as N, T as Q, c as C, g as z, a, b as m, d as A, e as D } from "./index-KjzWfqlO.js";
4
4
  const E = _({
5
5
  name: "block-styles",
6
6
  components: { InlinedStyles: N },
@@ -1 +1 @@
1
- var _=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),s=require("./index-4YDWt2GA.cjs"),x=a.defineComponent({name:"block-styles",components:{InlinedStyles:s._sfc_main},props:["block","context"],data(){return{TARGET:s.TARGET}},computed:{canShowBlock(){const e=this.block;return s.checkIsDefined(e.hide)?!e.hide:s.checkIsDefined(e.show)?e.show:!0},css(){var S,h,k,C,f;const e=this.block,t=e.responsiveStyles,o=this.context.content,r=s.getSizesForBreakpoints(((S=o==null?void 0:o.meta)==null?void 0:S.breakpoints)||{}),d=!!((k=(h=o==null?void 0:o.meta)==null?void 0:h.breakpoints)!=null&&k.xsmall),i=t==null?void 0:t.large,c=t==null?void 0:t.medium,u=t==null?void 0:t.small,y=t==null?void 0:t.xsmall,n=e.id;if(!n)return"";const b=i?s.createCssClass({className:n,styles:i}):"",g=c?s.createCssClass({className:n,styles:c,mediaQuery:s.getMaxWidthQueryForSize("medium",r)}):"",v=u?s.createCssClass({className:n,styles:u,mediaQuery:s.getMaxWidthQueryForSize("small",r)}):"",B=y&&d?s.createCssClass({className:n,styles:y,mediaQuery:s.getMaxWidthQueryForSize("xsmall",r)}):"",l=e.animations&&e.animations.find(m=>m.trigger==="hover");let p="";if(l){const m=((f=(C=l.steps)==null?void 0:C[1])==null?void 0:f.styles)||{};p=s.createCssClass({className:`${n}:hover`,styles:{...m,transition:`all ${l.duration}s ${s.camelToKebabCase(l.easing)}`,transitionDelay:l.delay?`${l.delay}s`:"0s"}})||""}return[b,g,v,B,p].join(" ")}}});function T(e,t,o,r,d,i){const c=a.resolveComponent("InlinedStyles");return e.TARGET!=="reactNative"&&e.css&&e.canShowBlock?(a.openBlock(),a.createBlock(c,{key:0,id:"builderio-block",styles:e.css,nonce:e.context.nonce},null,8,["styles","nonce"])):a.createCommentVNode("",!0)}const $=s._export_sfc(x,[["render",T]]);exports.default=$;
1
+ var _=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),s=require("./index-Vp6MzDwO.cjs"),x=a.defineComponent({name:"block-styles",components:{InlinedStyles:s._sfc_main},props:["block","context"],data(){return{TARGET:s.TARGET}},computed:{canShowBlock(){const e=this.block;return s.checkIsDefined(e.hide)?!e.hide:s.checkIsDefined(e.show)?e.show:!0},css(){var S,h,k,C,f;const e=this.block,t=e.responsiveStyles,o=this.context.content,r=s.getSizesForBreakpoints(((S=o==null?void 0:o.meta)==null?void 0:S.breakpoints)||{}),d=!!((k=(h=o==null?void 0:o.meta)==null?void 0:h.breakpoints)!=null&&k.xsmall),i=t==null?void 0:t.large,c=t==null?void 0:t.medium,u=t==null?void 0:t.small,y=t==null?void 0:t.xsmall,n=e.id;if(!n)return"";const b=i?s.createCssClass({className:n,styles:i}):"",g=c?s.createCssClass({className:n,styles:c,mediaQuery:s.getMaxWidthQueryForSize("medium",r)}):"",v=u?s.createCssClass({className:n,styles:u,mediaQuery:s.getMaxWidthQueryForSize("small",r)}):"",B=y&&d?s.createCssClass({className:n,styles:y,mediaQuery:s.getMaxWidthQueryForSize("xsmall",r)}):"",l=e.animations&&e.animations.find(m=>m.trigger==="hover");let p="";if(l){const m=((f=(C=l.steps)==null?void 0:C[1])==null?void 0:f.styles)||{};p=s.createCssClass({className:`${n}:hover`,styles:{...m,transition:`all ${l.duration}s ${s.camelToKebabCase(l.easing)}`,transitionDelay:l.delay?`${l.delay}s`:"0s"}})||""}return[b,g,v,B,p].join(" ")}}});function T(e,t,o,r,d,i){const c=a.resolveComponent("InlinedStyles");return e.TARGET!=="reactNative"&&e.css&&e.canShowBlock?(a.openBlock(),a.createBlock(c,{key:0,id:"builderio-block",styles:e.css,nonce:e.context.nonce},null,8,["styles","nonce"])):a.createCommentVNode("",!0)}const $=s._export_sfc(x,[["render",T]]);exports.default=$;
@@ -1,8 +1,8 @@
1
1
  import "./style.css";
2
2
  import { defineComponent as o, defineAsyncComponent as r, resolveComponent as n, openBlock as a, createBlock as c, withCtx as i, renderSlot as p } from "vue";
3
- import { g as s, a as l } from "./get-block-properties-IAHDaK7X.js";
4
- import { e as m } from "./index-3lnsErPD.js";
5
- const d = () => import("./index-3lnsErPD.js").then((e) => e.G).then((e) => e.default).catch((e) => {
3
+ import { g as s, a as l } from "./get-block-properties-80VdsSqT.js";
4
+ import { e as m } from "./index-KjzWfqlO.js";
5
+ const d = () => import("./index-KjzWfqlO.js").then((e) => e.G).then((e) => e.default).catch((e) => {
6
6
  throw console.error(
7
7
  "Error while attempting to dynamically import component DynamicRenderer at ../../dynamic-renderer/dynamic-renderer.vue",
8
8
  e
@@ -1 +1 @@
1
- var k=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),o=require("./get-block-properties-MbA9feRS.cjs"),n=require("./index-4YDWt2GA.cjs"),c=()=>Promise.resolve().then(()=>require("./index-4YDWt2GA.cjs")).then(e=>e.dynamicRenderer).then(e=>e.default).catch(e=>{throw console.error("Error while attempting to dynamically import component DynamicRenderer at ../../dynamic-renderer/dynamic-renderer.vue",e),e}),a=t.defineComponent({name:"block-wrapper",components:{DynamicRenderer:t.defineAsyncComponent(c)},props:["Wrapper","block","context"],data(){return{getBlockActions:o.getBlockActions,getBlockProperties:o.getBlockProperties}}});function i(e,l,p,d,m,u){const r=t.resolveComponent("DynamicRenderer");return t.openBlock(),t.createBlock(r,{TagName:e.Wrapper,attributes:e.getBlockProperties({block:e.block,context:e.context}),actionAttributes:e.getBlockActions({block:e.block,rootState:e.context.rootState,rootSetState:e.context.rootSetState,localState:e.context.localState,context:e.context.context,stripPrefix:!0})},{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},8,["TagName","attributes","actionAttributes"])}const s=n._export_sfc(a,[["render",i]]);exports.default=s;
1
+ var k=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),o=require("./get-block-properties-IBTEr28C.cjs"),n=require("./index-Vp6MzDwO.cjs"),c=()=>Promise.resolve().then(()=>require("./index-Vp6MzDwO.cjs")).then(e=>e.dynamicRenderer).then(e=>e.default).catch(e=>{throw console.error("Error while attempting to dynamically import component DynamicRenderer at ../../dynamic-renderer/dynamic-renderer.vue",e),e}),a=t.defineComponent({name:"block-wrapper",components:{DynamicRenderer:t.defineAsyncComponent(c)},props:["Wrapper","block","context"],data(){return{getBlockActions:o.getBlockActions,getBlockProperties:o.getBlockProperties}}});function i(e,l,p,d,m,u){const r=t.resolveComponent("DynamicRenderer");return t.openBlock(),t.createBlock(r,{TagName:e.Wrapper,attributes:e.getBlockProperties({block:e.block,context:e.context}),actionAttributes:e.getBlockActions({block:e.block,rootState:e.context.rootState,rootSetState:e.context.rootSetState,localState:e.context.localState,context:e.context.context,stripPrefix:!0})},{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},8,["TagName","attributes","actionAttributes"])}const s=n._export_sfc(a,[["render",i]]);exports.default=s;
@@ -3,6 +3,9 @@
3
3
  * They cannot import anything.
4
4
  */
5
5
  import type { Query, UserAttributes } from '../helpers';
6
+ import { type PersonalizationContainerProps } from '../personalization-container.types';
6
7
  export declare function filterWithCustomTargeting(userAttributes: UserAttributes, query: Query[], startDate?: string, endDate?: string): boolean;
7
- export declare const PERSONALIZATION_SCRIPT = "function getPersonalizedVariant(variants, blockId, locale) {\n if (!navigator.cookieEnabled) {\n return;\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n function removeVariants() {\n variants?.forEach(function (_, index) {\n document.querySelector('template[data-variant-id=\"' + blockId + '-' + index + '\"]')?.remove();\n });\n document.querySelector('script[data-id=\"variants-script-' + blockId + '\"]')?.remove();\n document.querySelector('style[data-id=\"variants-styles-' + blockId + '\"]')?.remove();\n }\n const attributes = JSON.parse(getCookie('builder.userAttributes') || '{}');\n if (locale) {\n attributes.locale = locale;\n }\n const winningVariantIndex = variants?.findIndex(function (variant) {\n return filterWithCustomTargeting(attributes, variant.query, variant.startDate, variant.endDate);\n });\n const isDebug = location.href.includes('builder.debug=true');\n if (isDebug) {\n console.debug('PersonalizationContainer', {\n attributes,\n variants,\n winningVariantIndex\n });\n }\n if (winningVariantIndex !== -1) {\n const winningVariant = document.querySelector('template[data-variant-id=\"' + blockId + '-' + winningVariantIndex + '\"]');\n if (winningVariant) {\n const parentNode = winningVariant.parentNode;\n if (parentNode) {\n const newParent = parentNode.cloneNode(false);\n newParent.appendChild(winningVariant.content.firstChild);\n newParent.appendChild(winningVariant.content.lastChild);\n parentNode.parentNode?.replaceChild(newParent, parentNode);\n }\n if (isDebug) {\n console.debug('PersonalizationContainer', 'Winning variant Replaced:', winningVariant);\n }\n }\n } else if (variants && variants.length > 0) {\n removeVariants();\n }\n}";
8
+ export declare function updateVisibilityStylesScript(variants: PersonalizationContainerProps['variants'], blockId: string, isHydrationTarget: boolean, locale?: string): void;
9
+ export declare const PERSONALIZATION_SCRIPT = "function getPersonalizedVariant(variants, blockId, isHydrationTarget, locale) {\n if (!navigator.cookieEnabled) {\n return;\n }\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const attributes = JSON.parse(getCookie('builder.userAttributes') || '{}');\n if (locale) {\n attributes.locale = locale;\n }\n const winningVariantIndex = variants?.findIndex(function (variant) {\n return window.filterWithCustomTargeting(attributes, variant.query, variant.startDate, variant.endDate);\n });\n const parentDiv = document.currentScript?.parentElement;\n const variantId = parentDiv?.getAttribute('data-variant-id');\n const isDefaultVariant = variantId === `${blockId}-default`;\n const isWinningVariant = winningVariantIndex !== -1 && variantId === `${blockId}-${winningVariantIndex}` || winningVariantIndex === -1 && isDefaultVariant;\n if (isWinningVariant && !isDefaultVariant) {\n parentDiv?.removeAttribute('hidden');\n parentDiv?.removeAttribute('aria-hidden');\n } else if (!isWinningVariant && isDefaultVariant) {\n parentDiv?.setAttribute('hidden', 'true');\n parentDiv?.setAttribute('aria-hidden', 'true');\n }\n if (isHydrationTarget) {\n if (!isWinningVariant) {\n const itsStyleEl = parentDiv?.previousElementSibling;\n if (itsStyleEl) {\n itsStyleEl.remove();\n }\n parentDiv?.remove();\n }\n const thisScript = document.currentScript;\n if (thisScript) {\n thisScript.remove();\n }\n }\n}";
8
10
  export declare const FILTER_WITH_CUSTOM_TARGETING_SCRIPT = "function filterWithCustomTargeting(userAttributes, query, startDate, endDate) {\n function isString(val) {\n return typeof val === 'string';\n }\n function isNumber(val) {\n return typeof val === 'number';\n }\n function objectMatchesQuery(userattr, query) {\n const result = (() => {\n const property = query.property;\n const operator = query.operator;\n let testValue = query.value;\n if (query && query.property === 'urlPath' && query.value && typeof query.value === 'string' && query.value !== '/' && query.value.endsWith('/')) {\n testValue = query.value.slice(0, -1);\n }\n if (!(property && operator)) {\n return true;\n }\n if (Array.isArray(testValue)) {\n if (operator === 'isNot') {\n return testValue.every(val => objectMatchesQuery(userattr, {\n property,\n operator,\n value: val\n }));\n }\n return !!testValue.find(val => objectMatchesQuery(userattr, {\n property,\n operator,\n value: val\n }));\n }\n const value = userattr[property];\n if (Array.isArray(value)) {\n return value.includes(testValue);\n }\n switch (operator) {\n case 'is':\n return value === testValue;\n case 'isNot':\n return value !== testValue;\n case 'contains':\n return (isString(value) || Array.isArray(value)) && value.includes(String(testValue));\n case 'startsWith':\n return isString(value) && value.startsWith(String(testValue));\n case 'endsWith':\n return isString(value) && value.endsWith(String(testValue));\n case 'greaterThan':\n return isNumber(value) && isNumber(testValue) && value > testValue;\n case 'lessThan':\n return isNumber(value) && isNumber(testValue) && value < testValue;\n case 'greaterThanOrEqualTo':\n return isNumber(value) && isNumber(testValue) && value >= testValue;\n case 'lessThanOrEqualTo':\n return isNumber(value) && isNumber(testValue) && value <= testValue;\n default:\n return false;\n }\n })();\n return result;\n }\n const item = {\n query,\n startDate,\n endDate\n };\n const now = userAttributes.date && new Date(userAttributes.date) || new Date();\n if (item.startDate && new Date(item.startDate) > now) {\n return false;\n } else if (item.endDate && new Date(item.endDate) < now) {\n return false;\n }\n if (!item.query || !item.query.length) {\n return true;\n }\n return item.query.every(filter => {\n return objectMatchesQuery(userAttributes, filter);\n });\n}";
11
+ export declare const UPDATE_VISIBILITY_STYLES_SCRIPT = "function updateVisibilityStylesScript(variants, blockId, isHydrationTarget, locale) {\n function getCookie(name) {\n const nameEQ = name + '=';\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n const visibilityStylesEl = document.currentScript?.previousElementSibling;\n if (!visibilityStylesEl) {\n return;\n }\n if (isHydrationTarget) {\n visibilityStylesEl.remove();\n const currentScript = document.currentScript;\n if (currentScript) {\n currentScript.remove();\n }\n } else {\n const attributes = JSON.parse(getCookie('builder.userAttributes') || '{}');\n if (locale) {\n attributes.locale = locale;\n }\n const winningVariantIndex = variants?.findIndex(function (variant) {\n return window.filterWithCustomTargeting(attributes, variant.query, variant.startDate, variant.endDate);\n });\n if (winningVariantIndex !== -1) {\n let newStyleStr = variants?.map((_, index) => {\n if (index === winningVariantIndex) return '';\n return `div[data-variant-id=\"${blockId}-${index}\"] { display: none !important; } `;\n }).join('') || '';\n newStyleStr += `div[data-variant-id=\"${blockId}-default\"] { display: none !important; } `;\n visibilityStylesEl.innerHTML = newStyleStr;\n }\n }\n}";
@@ -1,5 +1,7 @@
1
1
  import type { BuilderBlock } from '../../types/builder-block';
2
+ import type { Target } from '../../types/targets';
2
3
  import type { PersonalizationContainerProps } from './personalization-container.types';
4
+ export declare const DEFAULT_INDEX = "default";
3
5
  export type UserAttributes = {
4
6
  date?: string | Date;
5
7
  urlPath?: string;
@@ -12,6 +14,25 @@ export type Query = {
12
14
  operator: QueryOperator;
13
15
  value: QueryValue;
14
16
  };
17
+ type BlocksToRenderReturnType = {
18
+ blocks: BuilderBlock[];
19
+ path: string;
20
+ index: number | typeof DEFAULT_INDEX;
21
+ };
22
+ /**
23
+ * SDKs that support Variant Containers
24
+ */
25
+ export declare const SDKS_SUPPORTING_PERSONALIZATION: Target[];
26
+ /**
27
+ * After hydration, we reset the tree
28
+ * These SDKs handle Personalization Container in a special way:
29
+ * - first, the inlined script will help us add `display: none`, `aria-hidden: true` and `hidden: true` to the non-winning variants
30
+ * - then, on mount / when the component is hydrated - we reset the tree with only the winning variant and deleting the entire tree
31
+ *
32
+ * This helps us to avoid flicker and show the correct / winning variant initially and then once we've hydrated we show the winning variant
33
+ * and keep a track of the cookies to update to the correct variant dynamically when the cookie updates.
34
+ */
35
+ export declare const SDKS_REQUIRING_RESET_APPROACH: Target[];
15
36
  export declare function checkShouldRenderVariants(variants: PersonalizationContainerProps['variants'], canTrack: boolean): boolean;
16
37
  export declare function getBlocksToRender({ variants, previewingIndex, isHydrated, filteredVariants, fallbackBlocks }: {
17
38
  variants: PersonalizationContainerProps['variants'];
@@ -19,9 +40,8 @@ export declare function getBlocksToRender({ variants, previewingIndex, isHydrate
19
40
  isHydrated: boolean;
20
41
  filteredVariants: PersonalizationContainerProps['variants'];
21
42
  fallbackBlocks?: BuilderBlock[];
22
- }): {
23
- blocks: BuilderBlock[];
24
- path: string | undefined;
25
- };
43
+ }): BlocksToRenderReturnType;
44
+ export declare const getInitPersonalizationVariantsFnsScriptString: () => string;
26
45
  export declare const getPersonalizationScript: (variants: PersonalizationContainerProps['variants'], blockId: string, locale?: string) => string;
46
+ export declare const getUpdateVisibilityStylesScript: (variants: PersonalizationContainerProps['variants'], blockId: string, locale?: string) => string;
27
47
  export { filterWithCustomTargeting } from './helpers/inlined-fns';
@@ -1,5 +1,5 @@
1
1
  import type { BuilderBlock } from '../../types/builder-block';
2
- import type { BuilderDataProps } from '../../types/builder-props';
2
+ import type { BuilderComponentsProp, BuilderDataProps } from '../../types/builder-props';
3
3
  import type { Query } from './helpers';
4
4
  export type PersonalizationContainerProps = {
5
5
  children?: any;
@@ -11,4 +11,4 @@ export type PersonalizationContainerProps = {
11
11
  startDate?: string;
12
12
  endDate?: string;
13
13
  }>;
14
- } & BuilderDataProps;
14
+ } & BuilderDataProps & BuilderComponentsProp;
@@ -1,31 +1,42 @@
1
1
  declare const _default: import("vue").DefineComponent<Readonly<{
2
2
  builderContext?: any;
3
3
  attributes?: any;
4
+ builderComponents?: any;
4
5
  builderBlock?: any;
5
6
  variants?: any;
6
7
  previewingIndex?: any;
7
8
  }>, unknown, {
8
9
  userAttributes: any;
9
10
  scriptStr: string;
11
+ updateVisibilityStylesScript: string;
10
12
  unsubscribers: never[];
11
13
  shouldRenderVariants: boolean;
12
- isHydrated: boolean;
14
+ shouldResetVariants: boolean;
15
+ TARGET: import("../../types/targets").Target;
16
+ DEFAULT_INDEX: string;
17
+ SDKS_REQUIRING_RESET_APPROACH: import("../../types/targets").Target[];
13
18
  }, {
19
+ attrs(): {
20
+ [x: string]: any;
21
+ };
14
22
  filteredVariants(): any;
15
23
  blocksToRender(): {
16
24
  blocks: import("../..").BuilderBlock[];
17
- path: string | undefined;
25
+ path: string;
26
+ index: number | "default";
18
27
  };
19
28
  hideVariantsStyleString(): any;
20
29
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<Readonly<{
21
30
  builderContext?: any;
22
31
  attributes?: any;
32
+ builderComponents?: any;
23
33
  builderBlock?: any;
24
34
  variants?: any;
25
35
  previewingIndex?: any;
26
36
  }>>>, {
27
37
  readonly builderContext?: any;
28
38
  readonly attributes?: any;
39
+ readonly builderComponents?: any;
29
40
  readonly builderBlock?: any;
30
41
  readonly variants?: any;
31
42
  readonly previewingIndex?: any;
@@ -1,8 +1,8 @@
1
1
  import "./style.css";
2
2
  import { defineComponent as u, defineAsyncComponent as g, resolveComponent as k, openBlock as n, createBlock as a, withCtx as l, renderSlot as m, resolveDynamicComponent as h, normalizeProps as f, mergeProps as b, createElementBlock as B, Fragment as W, renderList as $, createCommentVNode as v } from "vue";
3
- import { e as C, B as y, w as S } from "./index-3lnsErPD.js";
4
- import { a as w, g as A } from "./get-block-properties-IAHDaK7X.js";
5
- const R = () => import("./awaiter-isRx9Yhd.js").then((e) => e.default).catch((e) => {
3
+ import { e as C, B as y, w as S } from "./index-KjzWfqlO.js";
4
+ import { a as w, g as A } from "./get-block-properties-80VdsSqT.js";
5
+ const R = () => import("./awaiter-NGUZx5Ql.js").then((e) => e.default).catch((e) => {
6
6
  throw console.error(
7
7
  "Error while attempting to dynamically import component Awaiter at ../../awaiter.vue",
8
8
  e
@@ -1 +1 @@
1
- var B=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),s=require("./index-4YDWt2GA.cjs"),l=require("./get-block-properties-MbA9feRS.cjs"),u=()=>Promise.resolve().then(()=>require("./awaiter-OLNb_n6-.cjs")).then(e=>e.default).catch(e=>{throw console.error("Error while attempting to dynamically import component Awaiter at ../../awaiter.vue",e),e}),k=t.defineComponent({name:"interactive-element",components:{Awaiter:t.defineAsyncComponent(u)},props:["wrapperProps","block","includeBlockProps","context","Wrapper"],data(){return{forceRenderCount:0}},watch:{onUpdateHook0:{handler(){},immediate:!0}},computed:{attributes(){return this.includeBlockProps?{...l.getBlockProperties({block:this.block,context:this.context}),...l.getBlockActions({block:this.block,rootState:this.context.rootState,rootSetState:this.context.rootSetState,localState:this.context.localState,context:this.context.context})}:{}},targetWrapperProps(){return{...this.wrapperProps,...Object.keys(this.attributes).length>0?{attributes:this.attributes}:{}}},onUpdateHook0(){var e,o;return{0:this.wrapperProps,1:(o=(e=this.block)==null?void 0:e.component)==null?void 0:o.options}}}});function h(e,o,a,c,r,i){const n=t.resolveComponent("Awaiter");return e.Wrapper.load?(t.openBlock(),t.createBlock(n,{key:0,load:e.Wrapper.load,fallback:e.Wrapper.fallback,props:e.wrapperProps,attributes:e.attributes},{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},8,["load","fallback","props","attributes"])):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.Wrapper),t.normalizeProps(t.mergeProps({key:1},e.targetWrapperProps)),{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},16))}const m=s._export_sfc(k,[["render",h]]),f=({componentOptions:e,builderBlock:o,context:a,componentRef:c,includeBlockProps:r,isInteractive:i,contextValue:n})=>{const p={...e,...r?{attributes:l.getBlockProperties({block:o,context:n})}:{}};return i?{Wrapper:c,block:o,context:a,wrapperProps:e,includeBlockProps:r}:p},b=t.defineComponent({name:"component-ref",components:{Block:s.Block,InteractiveElement:m},props:["componentOptions","blockChildren","isInteractive","componentRef","builderBlock","context","linkComponent","includeBlockProps","registeredComponents"],data(){return{shouldUpdate:!1,Wrapper:this.isInteractive?s.wrapComponentRef(m):this.componentRef,getWrapperProps:f}},watch:{onUpdateHook0:{handler(){},immediate:!0}},computed:{onUpdateHook0(){return{0:this.componentOptions,1:this.blockChildren}}}});function C(e,o,a,c,r,i){const n=t.resolveComponent("Block");return e.componentRef?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.Wrapper),t.normalizeProps(t.mergeProps({key:0},e.getWrapperProps({componentOptions:e.componentOptions,builderBlock:e.builderBlock,context:e.context,componentRef:e.componentRef,linkComponent:e.linkComponent,includeBlockProps:e.includeBlockProps,isInteractive:e.isInteractive,contextValue:e.context}))),{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.blockChildren,(p,d)=>(t.openBlock(),t.createBlock(n,{key:p.id,block:p,context:e.context,registeredComponents:e.registeredComponents,linkComponent:e.linkComponent},null,8,["block","context","registeredComponents","linkComponent"]))),128))]),_:1},16)):t.createCommentVNode("",!0)}const P=s._export_sfc(b,[["render",C]]);exports.default=P;
1
+ var B=require("./style.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),s=require("./index-Vp6MzDwO.cjs"),l=require("./get-block-properties-IBTEr28C.cjs"),u=()=>Promise.resolve().then(()=>require("./awaiter-QQ0ayrjs.cjs")).then(e=>e.default).catch(e=>{throw console.error("Error while attempting to dynamically import component Awaiter at ../../awaiter.vue",e),e}),k=t.defineComponent({name:"interactive-element",components:{Awaiter:t.defineAsyncComponent(u)},props:["wrapperProps","block","includeBlockProps","context","Wrapper"],data(){return{forceRenderCount:0}},watch:{onUpdateHook0:{handler(){},immediate:!0}},computed:{attributes(){return this.includeBlockProps?{...l.getBlockProperties({block:this.block,context:this.context}),...l.getBlockActions({block:this.block,rootState:this.context.rootState,rootSetState:this.context.rootSetState,localState:this.context.localState,context:this.context.context})}:{}},targetWrapperProps(){return{...this.wrapperProps,...Object.keys(this.attributes).length>0?{attributes:this.attributes}:{}}},onUpdateHook0(){var e,o;return{0:this.wrapperProps,1:(o=(e=this.block)==null?void 0:e.component)==null?void 0:o.options}}}});function h(e,o,a,c,r,i){const n=t.resolveComponent("Awaiter");return e.Wrapper.load?(t.openBlock(),t.createBlock(n,{key:0,load:e.Wrapper.load,fallback:e.Wrapper.fallback,props:e.wrapperProps,attributes:e.attributes},{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},8,["load","fallback","props","attributes"])):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.Wrapper),t.normalizeProps(t.mergeProps({key:1},e.targetWrapperProps)),{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},16))}const m=s._export_sfc(k,[["render",h]]),f=({componentOptions:e,builderBlock:o,context:a,componentRef:c,includeBlockProps:r,isInteractive:i,contextValue:n})=>{const p={...e,...r?{attributes:l.getBlockProperties({block:o,context:n})}:{}};return i?{Wrapper:c,block:o,context:a,wrapperProps:e,includeBlockProps:r}:p},b=t.defineComponent({name:"component-ref",components:{Block:s.Block,InteractiveElement:m},props:["componentOptions","blockChildren","isInteractive","componentRef","builderBlock","context","linkComponent","includeBlockProps","registeredComponents"],data(){return{shouldUpdate:!1,Wrapper:this.isInteractive?s.wrapComponentRef(m):this.componentRef,getWrapperProps:f}},watch:{onUpdateHook0:{handler(){},immediate:!0}},computed:{onUpdateHook0(){return{0:this.componentOptions,1:this.blockChildren}}}});function C(e,o,a,c,r,i){const n=t.resolveComponent("Block");return e.componentRef?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.Wrapper),t.normalizeProps(t.mergeProps({key:0},e.getWrapperProps({componentOptions:e.componentOptions,builderBlock:e.builderBlock,context:e.context,componentRef:e.componentRef,linkComponent:e.linkComponent,includeBlockProps:e.includeBlockProps,isInteractive:e.isInteractive,contextValue:e.context}))),{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.blockChildren,(p,d)=>(t.openBlock(),t.createBlock(n,{key:p.id,block:p,context:e.context,registeredComponents:e.registeredComponents,linkComponent:e.linkComponent},null,8,["block","context","registeredComponents","linkComponent"]))),128))]),_:1},16)):t.createCommentVNode("",!0)}const P=s._export_sfc(b,[["render",C]]);exports.default=P;
@@ -9,7 +9,19 @@ export type BlocksWrapperProps = {
9
9
  */
10
10
  BlocksWrapper: any;
11
11
  /**
12
- * Additonal props to pass to `blocksWrapper`. Defaults to `{}`.
12
+ * Props to be applied to the wrapping element of blocks. Can be set in two ways:
13
+ * 1. Globally via `<Content blocksWrapperProps={{...}}/>` - applies to all blocks wrappers in the Content
14
+ * 2. Locally via `<Blocks BlocksWrapperProps={{...}}/>` - applies only to this specific blocks instance and overrides global props
15
+ *
16
+ * For merging both global and local props, spread the context props before adding your own:
17
+ * ```
18
+ * <Blocks
19
+ * BlocksWrapperProps={{
20
+ * ...builderContext.BlocksWrapperProps,
21
+ * 'data-test-id': 'my-test-id'
22
+ * }}
23
+ * />
24
+ * ```
13
25
  */
14
26
  BlocksWrapperProps: any;
15
27
  children?: any;
@@ -1,6 +1,6 @@
1
1
  import type { BuilderContextInterface, RegisteredComponents } from '../../context/types';
2
2
  import type { BlocksWrapperProps } from './blocks-wrapper.vue';
3
- export type BlocksProps = Partial<Omit<BlocksWrapperProps, 'BlocksWrapper' | 'BlocksWrapperProps' | 'classNameProp'>> & {
3
+ export type BlocksProps = Partial<Omit<BlocksWrapperProps, 'BlocksWrapper' | 'classNameProp'>> & {
4
4
  context?: BuilderContextInterface;
5
5
  registeredComponents?: RegisteredComponents;
6
6
  linkComponent?: any;
@@ -3,6 +3,7 @@ declare const _default: import("vue").DefineComponent<Readonly<{
3
3
  blocks?: any;
4
4
  parent?: any;
5
5
  styleProp?: any;
6
+ BlocksWrapperProps?: any;
6
7
  className?: any;
7
8
  context?: any;
8
9
  linkComponent?: any;
@@ -12,6 +13,7 @@ declare const _default: import("vue").DefineComponent<Readonly<{
12
13
  blocks?: any;
13
14
  parent?: any;
14
15
  styleProp?: any;
16
+ BlocksWrapperProps?: any;
15
17
  className?: any;
16
18
  context?: any;
17
19
  linkComponent?: any;
@@ -21,6 +23,7 @@ declare const _default: import("vue").DefineComponent<Readonly<{
21
23
  readonly blocks?: any;
22
24
  readonly parent?: any;
23
25
  readonly styleProp?: any;
26
+ readonly BlocksWrapperProps?: any;
24
27
  readonly className?: any;
25
28
  readonly context?: any;
26
29
  readonly linkComponent?: any;
@@ -20,6 +20,8 @@ declare const _default: import("vue").DefineComponent<Readonly<{
20
20
  isNestedRender?: any;
21
21
  }>, unknown, {
22
22
  shouldRenderVariants: boolean;
23
+ SDKS_SUPPORTING_PERSONALIZATION: import("../../types/targets").Target[];
24
+ getInitPersonalizationVariantsFnsScriptString: () => string;
23
25
  TARGET: import("../../types/targets").Target;
24
26
  getInitVariantsFnsScriptString: () => string;
25
27
  getVariants: (content: import("../../helpers/nullable").Nullable<import("../..").BuilderContent>) => {
@@ -44,9 +46,7 @@ declare const _default: import("vue").DefineComponent<Readonly<{
44
46
  meta?: {
45
47
  [key: string]: any;
46
48
  breakpoints?: import("../../types/typescript").Nullable<import("../../types/builder-content").Breakpoints>;
47
- } | undefined; /**
48
- * For internal use only. Do not provide this prop.
49
- */
49
+ } | undefined;
50
50
  }[];
51
51
  }, {
52
52
  updateCookieAndStylesScriptStr(): string;
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "4.0.8";
1
+ export declare const SDK_VERSION = "4.0.9";
@@ -1,5 +1,5 @@
1
1
  import "./style.css";
2
- import { f as n, T as c, h as i, i as l } from "./index-3lnsErPD.js";
2
+ import { f as n, T as c, h as i, i as l } from "./index-KjzWfqlO.js";
3
3
  const f = (e) => `v-on:${e.toLowerCase()}`, p = (e, t) => (r) => n({
4
4
  code: e,
5
5
  context: t.context,
@@ -1 +1 @@
1
- var d=require("./style.css");const s=require("./index-4YDWt2GA.cjs"),c=e=>`v-on:${e.toLowerCase()}`,i=(e,t)=>r=>s.evaluate({code:e,context:t.context,localState:t.localState,rootState:t.rootState,rootSetState:t.rootSetState,event:r,isExpression:!1});function l(e){const t={},r=e.block.actions??{};for(const o in r){if(!r.hasOwnProperty(o))continue;const a=r[o];let n=c(o);if(e.stripPrefix)switch(s.TARGET){case"vue":n=n.replace("v-on:","");break;case"svelte":n=n.replace("on:","");break}t[n]=i(a,e)}return t}function u({properties:e}){return e}const p=e=>({href:e.href});function f({block:e,context:t}){var o;const r={...p(e),...e.properties,"builder-id":e.id,style:s.getStyle({block:e,context:t}),[s.getClassPropName()]:[e.id,"builder-block",e.class,(o=e.properties)==null?void 0:o.class].filter(Boolean).join(" ")};return u({properties:r,context:t,block:e})}exports.getBlockActions=l;exports.getBlockProperties=f;
1
+ var d=require("./style.css");const s=require("./index-Vp6MzDwO.cjs"),c=e=>`v-on:${e.toLowerCase()}`,i=(e,t)=>r=>s.evaluate({code:e,context:t.context,localState:t.localState,rootState:t.rootState,rootSetState:t.rootSetState,event:r,isExpression:!1});function l(e){const t={},r=e.block.actions??{};for(const o in r){if(!r.hasOwnProperty(o))continue;const a=r[o];let n=c(o);if(e.stripPrefix)switch(s.TARGET){case"vue":n=n.replace("v-on:","");break;case"svelte":n=n.replace("on:","");break}t[n]=i(a,e)}return t}function u({properties:e}){return e}const p=e=>({href:e.href});function f({block:e,context:t}){var o;const r={...p(e),...e.properties,"builder-id":e.id,style:s.getStyle({block:e,context:t}),[s.getClassPropName()]:[e.id,"builder-block",e.class,(o=e.properties)==null?void 0:o.class].filter(Boolean).join(" ")};return u({properties:r,context:t,block:e})}exports.getBlockActions=l;exports.getBlockProperties=f;