@superbright/indexeddb-orm 1.0.41 → 1.0.43

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.
@@ -19,11 +19,11 @@ export declare const FurnitureModel: z.ZodObject<{
19
19
  status: Status;
20
20
  id: number;
21
21
  name: string;
22
- brand_name: string;
23
22
  category: string;
24
23
  price: string;
25
24
  availability: FurnitureAvailability;
26
25
  currency: Currency;
26
+ brand_name: string;
27
27
  store_name: string;
28
28
  external_url: string;
29
29
  inventory_id: number;
@@ -34,11 +34,11 @@ export declare const FurnitureModel: z.ZodObject<{
34
34
  status: Status;
35
35
  id: number;
36
36
  name: string;
37
- brand_name: string;
38
37
  category: string;
39
38
  price: string;
40
39
  availability: FurnitureAvailability;
41
40
  currency: Currency;
41
+ brand_name: string;
42
42
  store_name: string;
43
43
  external_url: string;
44
44
  inventory_id: number;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../utils/casing.cjs"),q=require("../../utils/collections.cjs"),N=require("./AnalyticsProvider.cjs"),e=require("../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),U=["location","budget","size","other"],S=["cost_low_to_high","cost_high_to_low","newest","relevance"],k=["Skip","Continue","Back"],l=e.object({propertyId:e.string().min(1,"propertyId is required"),propertySlug:e.string().min(1,"propertySlug is required"),propertyName:e.string().min(1,"propertyName is required")}),m=l.extend({propertyName:e.string().min(1,"propertyName is required")}),w=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),E=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),g=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional(),lifestylePreferences:e.unknown().optional()}),p=m.extend({funnelStep:e.number().int().nonnegative(),profileQuestion:e.string().min(1,"profileQuestion is required"),interactedElement:e.enum(k),questionEnum:e.string().optional()}),F=p.extend({selectedAnswersEnumArray:e.any().transform(o=>q.normalizeToStringArray(o)).refine(o=>Array.isArray(o),{message:"selectedAnswersEnumArray must resolve to an array"})});l.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required")});const r=m.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required")}),b=r.extend({buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),unitBedrooms:e.number().int().nonnegative(),favoritedUnit:e.boolean()}),c=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),favoritedUnit:e.boolean()}),P=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),type:e.enum(["click","hover_on","hover_off"]),brand_name:e.string().min(1,"brand_name is required"),category:e.string().min(1,"category is required")}),A=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),link:e.string().min(1,"link is required"),type:e.string().min(1,"type is required"),favoritedUnit:e.boolean(),brand_name:e.string().min(1,"brand_name is required"),category:e.string().min(1,"category is required")}),_=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brand_name:e.string().min(1,"brand_name is required"),category:e.string().min(1,"category is required")}),O=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brand_name:e.string().min(1,"brand_name is required"),category:e.string().min(1,"category is required")}),V=r.extend({method:e.enum(["Prev","Next"]),roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brand_name:e.string().min(1,"brand_name is required"),category:e.string().min(1,"category is required")}),I=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),method:e.enum(["Navigation","Map"])}),M=I.extend({timeInRoom:e.number().int().nonnegative()}),B=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),method:e.enum(["On Click Play"]),videoCurrentTime:e.number().int().nonnegative(),videoDuration:e.number().int().nonnegative(),videoPercent:e.number().int().nonnegative(),videoFilename:e.string().min(1,"videoFilename is required")}),Q=r.extend({utmSource:e.string().min(1,"utm_source is required"),utmMedium:e.string().min(1,"utm_medium is required"),utmName:e.string().min(1,"utm_name is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),favoritedUnit:e.boolean()}),h=r.extend({fullUrl:e.string().min(1,"fullUrl is required"),datestamp:e.string().min(1,"datestamp is required")}),D=h.extend({pageName:e.string().min(1,"pageName is required")}),R=h.extend({roomName:e.string().min(1,"roomName is required")}),L=r.extend({unitBedrooms:e.number().int().nonnegative()}),z=r.extend({utmSource:e.string().min(1,"utm_source is required"),utmMedium:e.string().min(1,"utm_medium is required"),utmName:e.string().min(1,"utm_name is required")}),y=r.extend({toastCopy:e.string().min(1,"toastCopy is required")}),K=r.extend({unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required")}),j=m,W=m.extend({name:e.string().min(1,"name is required")}),G=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:l,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),fieldName:e.string().min(1,"fieldName is required")})}),H=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:l,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),bedrooms:e.array(e.union([e.string(),e.number()])).optional(),price:e.number().nullable().optional()})}),J=m.extend({bedrooms:e.array(e.number()).optional(),price_min:e.number().optional(),price_max:e.number().optional(),highlights:e.array(e.string()).optional(),page_name:e.string().optional()}),$=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),C=e.any().transform(o=>q.normalizeToStringArray(o)).refine(o=>Array.isArray(o),{message:"Selection must resolve to an array"}),X=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:C,filterName:e.string().optional()}),f=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:C}),v=l.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(S)}),Y=m.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(S),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),Z=l.extend({fullQuestionnaireSchemaJson:e.unknown().optional(),resultsJson:e.object({type:e.string().optional(),total:e.number().int().nonnegative().optional(),units:e.array(e.object({unitId:e.string().min(1,"unitId is required"),unitName:e.string().optional()})).optional()}).optional()}),ee=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),ne=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),te=m.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required"),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional(),unitIndex:e.number().int().nonnegative()});function x(){const o=N.useAnalytics();return(s,u)=>{const n=u==null?u:d.convertKeysToSnakeCase(u);o.track(s,n)}}const ie=(o,s,u,n)=>i=>{const a=d.convertKeysToCamelCase(i),t=s.safeParse(a);if(!t.success){n!=null&&n.isDev&&console.warn(`[Analytics] Invalid payload for "${o}":`,t.error.issues);return}u(o,i)};function T(o,s=!1){const u=(i,a)=>{const t=d.convertKeysToSnakeCase(a);o(i,t)},n=(i,a)=>ie(i,a,u,{isDev:s});return{trackViewAllUnits:i=>{const a=d.convertKeysToCamelCase(i),t=w.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "View All Units":',t.error.flatten());return}u("View All Units",t.data)},trackQuestionnaireSkip:i=>{const a=d.convertKeysToCamelCase(i),t=p.safeParse({...a,interactedElement:"Skip"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Skip):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackQuestionnaireContinue:i=>{const a=d.convertKeysToCamelCase(i),t=F.safeParse({...a,interactedElement:"Continue"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Continue):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackQuestionnaireBack:i=>{const a=d.convertKeysToCamelCase(i),t=p.safeParse({...a,interactedElement:"Back"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Back):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackClickUnit:n("Unit Card Clicked",ee),trackHoverUnit:n("Unit Hovered",$),trackLoadMore:i=>{const a=d.convertKeysToCamelCase(i),t=E.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "More Units Loaded":',t.error.flatten());return}u("More Units Loaded",t.data)},trackFilterOpened:n("Filter Opened",X),trackFilterCanceled:n("Filter Cleared",f),trackFilterApplied:n("Filter Applied",f),trackOpenSort:i=>{const a=d.convertKeysToCamelCase(i),t=Y.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Sort Opened":',t.error.flatten());return}u("Sort Opened",t.data)},trackSelectSort:n("Sort Applied",v),trackCancelSort:n("Sort Canceled",v),trackClickUnitFavorites:n("Unit Favorited",ne),trackUnitUnfavorited:n("Unit Unfavorited",te),trackQuestionnaireResult:n("Questionnaire Submitted",Z),trackScheduleTourFormInteracted:n("Schedule Tour Form Interacted",g),trackScheduleTourFormSubmitted:n("Schedule Tour Form Submitted",g),trackScheduleTourUrlClicked:n("Schedule Tour URL Clicked",g),trackGetInTouchFormOpened:n("Form Opened",b),trackGetInTouchFormSubmitted:n("Form Submitted",b),trackStyleDrawerOpened:n("Style Menu Opened",c),trackStyleDrawerChanged:n("Style Changed",c),trackOpeningStyleImpression:n("Opening Style Modal Impression",c),trackOpeningStyleSlected:n("Opening Style Selected",c),trackFurnitureViewed:n("Furniture Viewed",P),trackFurnitureExternalUrlClicked:n("Purchase Link Clicked",A),trackFurnitureSaved:n("Furniture Saved",_),trackFurnitureModalOpened:n("Furniture Modal Opened",O),trackFurnitureCarouselToggled:n("Furniture Carousel Toggled",V),trackRoomEntered:n("Room Entered",I),trackRoomLeft:n("Room Left",M),trackVideoStarted:n("Video Started",B),trackEmailRedirect:n("Email Tracked",Q),trackToastImpression:n("Toast Impression",y),trackToastClicked:n("Toast Clicked",y),trackToastClosed:n("Toast Closed",y),trackContentModalOpened:n("Content Modal Opened",K),trackBuildingDetailsModalOpened:n("Building Details Modal",j),trackSubscriptionImpression:n("Subscription Impression",W),trackSubscriptionInteracted:n("Subscription Interacted",G),trackSubscriptionSubmitted:n("Subscription Submitted",H),trackSubscriptionRemoved:n("Subscription Removed",J),trackWebPageViewed:n("Page Viewed",D),trackWebPageRoomViewed:n("Page Viewed",R),trackEmbedPageViewed:n("Embed Impression",L),trackEmailClick:i=>n(`Email Interaction - ${i.event_name}`,z)}}function re(){const{isDev:o}=N.useAnalytics(),s=x();return T(s,o)}exports.QuestionEnumValues=U;exports.QuestionnaireInteractionValues=k;exports.SortEnumValues=S;exports.buildTrackingEvents=T;exports.useTrackEvent=x;exports.useTrackingEvents=re;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../utils/casing.cjs"),q=require("../../utils/collections.cjs"),k=require("./AnalyticsProvider.cjs"),e=require("../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),E=["location","budget","size","other"],f=["cost_low_to_high","cost_high_to_low","newest","relevance"],I=["Skip","Continue","Back"],c=e.object({propertyId:e.string().min(1,"propertyId is required"),propertySlug:e.string().min(1,"propertySlug is required"),propertyName:e.string().min(1,"propertyName is required")}),m=c.extend({propertyName:e.string().min(1,"propertyName is required")}),w=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),F=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),g=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional(),lifestylePreferences:e.unknown().optional()}),S=m.extend({funnelStep:e.number().int().nonnegative(),profileQuestion:e.string().min(1,"profileQuestion is required"),interactedElement:e.enum(I),questionEnum:e.string().optional()}),P=S.extend({selectedAnswersEnumArray:e.any().transform(o=>q.normalizeToStringArray(o)).refine(o=>Array.isArray(o),{message:"selectedAnswersEnumArray must resolve to an array"})});c.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required")});const r=m.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required")}),b=r.extend({buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),unitBedrooms:e.number().int().nonnegative(),favoritedUnit:e.boolean()}),l=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),favoritedUnit:e.boolean()}),A=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),type:e.enum(["click","hover_on","hover_off"]),brandName:e.string().min(1,"brandName is required"),category:e.string().min(1,"category is required")}),O=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),link:e.string().min(1,"link is required"),type:e.string().min(1,"type is required"),favoritedUnit:e.boolean(),brandName:e.string().min(1,"brandName is required"),category:e.string().min(1,"category is required")}),V=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brandName:e.string().min(1,"brandName is required"),category:e.string().min(1,"category is required")}),M=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brandName:e.string().min(1,"brandName is required"),category:e.string().min(1,"category is required")}),B=r.extend({method:e.enum(["Prev","Next"]),roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),furnitureId:e.string().min(1,"furnitureId is required"),furnitureName:e.string().min(1,"furnitureName is required"),brandName:e.string().min(1,"brandName is required"),category:e.string().min(1,"category is required")}),h=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),method:e.enum(["Navigation","Map"])}),Q=h.extend({timeInRoom:e.number().int().nonnegative()}),_=r.extend({roomName:e.string().min(1,"roomName is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),method:e.enum(["On Click Play"]),videoCurrentTime:e.number().int().nonnegative(),videoDuration:e.number().int().nonnegative(),videoPercent:e.number().int().nonnegative(),videoFilename:e.string().min(1,"videoFilename is required")}),D=r.extend({utmSource:e.string().min(1,"utm_source is required"),utmMedium:e.string().min(1,"utm_medium is required"),utmName:e.string().min(1,"utm_name is required"),unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),favoritedUnit:e.boolean()}),C=r.extend({fullUrl:e.string().min(1,"fullUrl is required"),datestamp:e.string().min(1,"datestamp is required")}),R=C.extend({pageName:e.string().min(1,"pageName is required")}),L=C.extend({roomName:e.string().min(1,"roomName is required")}),z=r.extend({unitBedrooms:e.number().int().nonnegative()}),y=r.extend({utmSource:e.string().min(1,"utm_source is required"),utmMedium:e.string().min(1,"utm_medium is required"),utmName:e.string().min(1,"utm_name is required")}),p=r.extend({toastCopy:e.string().min(1,"toastCopy is required")}),K=r.extend({unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required")}),j=m,W=m.extend({name:e.string().min(1,"name is required")}),G=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:c,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),fieldName:e.string().min(1,"fieldName is required")})}),H=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:c,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),bedrooms:e.array(e.union([e.string(),e.number()])).optional(),price:e.number().nullable().optional()})}),J=m.extend({bedrooms:e.array(e.number()).optional(),price_min:e.number().optional(),price_max:e.number().optional(),highlights:e.array(e.string()).optional(),page_name:e.string().optional()}),$=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),x=e.any().transform(o=>q.normalizeToStringArray(o)).refine(o=>Array.isArray(o),{message:"Selection must resolve to an array"}),X=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:x,filterName:e.string().optional()}),N=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:x}),v=c.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(f)}),Y=m.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(f),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),Z=c.extend({fullQuestionnaireSchemaJson:e.unknown().optional(),resultsJson:e.object({type:e.string().optional(),total:e.number().int().nonnegative().optional(),units:e.array(e.object({unitId:e.string().min(1,"unitId is required"),unitName:e.string().optional()})).optional()}).optional()}),ee=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),ne=r.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),te=m.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required"),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional(),unitIndex:e.number().int().nonnegative()});function T(){const o=k.useAnalytics();return(s,u)=>{const n=u==null?u:d.convertKeysToSnakeCase(u);o.track(s,n)}}const ie=(o,s,u,n)=>i=>{const a=d.convertKeysToCamelCase(i),t=s.safeParse(a);if(!t.success){n!=null&&n.isDev&&console.warn(`[Analytics] Invalid payload for "${o}":`,t.error.issues);return}u(o,i)};function U(o,s=!1){const u=(i,a)=>{const t=d.convertKeysToSnakeCase(a);o(i,t)},n=(i,a)=>ie(i,a,u,{isDev:s});return{trackViewAllUnits:i=>{const a=d.convertKeysToCamelCase(i),t=w.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "View All Units":',t.error.flatten());return}u("View All Units",t.data)},trackQuestionnaireSkip:i=>{const a=d.convertKeysToCamelCase(i),t=S.safeParse({...a,interactedElement:"Skip"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Skip):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackQuestionnaireContinue:i=>{const a=d.convertKeysToCamelCase(i),t=P.safeParse({...a,interactedElement:"Continue"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Continue):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackQuestionnaireBack:i=>{const a=d.convertKeysToCamelCase(i),t=S.safeParse({...a,interactedElement:"Back"});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Back):',t.error.flatten());return}u("Questionnaire Navigated",t.data)},trackClickUnit:n("Unit Card Clicked",ee),trackHoverUnit:n("Unit Hovered",$),trackLoadMore:i=>{const a=d.convertKeysToCamelCase(i),t=F.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "More Units Loaded":',t.error.flatten());return}u("More Units Loaded",t.data)},trackFilterOpened:n("Filter Opened",X),trackFilterCanceled:n("Filter Cleared",N),trackFilterApplied:n("Filter Applied",N),trackOpenSort:i=>{const a=d.convertKeysToCamelCase(i),t=Y.safeParse({unitCountDate:new Date().toISOString(),...a});if(!t.success){s&&console.warn('[Analytics] Invalid payload for "Sort Opened":',t.error.flatten());return}u("Sort Opened",t.data)},trackSelectSort:n("Sort Applied",v),trackCancelSort:n("Sort Canceled",v),trackClickUnitFavorites:n("Unit Favorited",ne),trackUnitUnfavorited:n("Unit Unfavorited",te),trackQuestionnaireResult:n("Questionnaire Submitted",Z),trackScheduleTourFormInteracted:n("Schedule Tour Form Interacted",g),trackScheduleTourFormSubmitted:n("Schedule Tour Form Submitted",g),trackScheduleTourUrlClicked:n("Schedule Tour URL Clicked",g),trackGetInTouchFormOpened:n("Form Opened",b),trackGetInTouchFormSubmitted:n("Form Submitted",b),trackStyleDrawerOpened:n("Style Menu Opened",l),trackStyleDrawerChanged:n("Style Changed",l),trackOpeningStyleImpression:n("Opening Style Modal Impression",l),trackOpeningStyleSlected:n("Opening Style Selected",l),trackFurnitureViewed:n("Furniture Viewed",A),trackFurnitureExternalUrlClicked:n("Purchase Link Clicked",O),trackFurnitureSaved:n("Furniture Saved",V),trackFurnitureModalOpened:n("Furniture Modal Opened",M),trackFurnitureCarouselToggled:n("Furniture Carousel Toggled",B),trackRoomEntered:n("Room Entered",h),trackRoomLeft:n("Room Left",Q),trackVideoStarted:n("Video Started",_),trackEmailRedirect:n("Email Tracked",D),trackToastImpression:n("Toast Impression",p),trackToastClicked:n("Toast Clicked",p),trackToastClosed:n("Toast Closed",p),trackContentModalOpened:n("Content Modal Opened",K),trackBuildingDetailsModalOpened:n("Building Details Modal",j),trackSubscriptionImpression:n("Subscription Impression",W),trackSubscriptionInteracted:n("Subscription Interacted",G),trackSubscriptionSubmitted:n("Subscription Submitted",H),trackSubscriptionRemoved:n("Subscription Removed",J),trackWebPageViewed:n("Page Viewed",R),trackWebPageRoomViewed:n("Page Viewed",L),trackEmbedPageViewed:n("Embed Impression",z),trackEmailClickGeneric:i=>n(`Email Interaction - ${i.event_name}`,y),trackEmailClickConfirmation:()=>n("Notify Me Email Confirmation",y),trackEmailClickNotification:()=>n("Notify Me Email Notification",y)}}function re(){const{isDev:o}=k.useAnalytics(),s=T();return U(s,o)}exports.QuestionEnumValues=E;exports.QuestionnaireInteractionValues=I;exports.SortEnumValues=f;exports.buildTrackingEvents=U;exports.useTrackEvent=T;exports.useTrackingEvents=re;
2
2
  //# sourceMappingURL=analytics.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.cjs","sources":["../../../src/features/analytics/analytics.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n convertKeysToCamelCase,\n convertKeysToSnakeCase,\n} from \"../../utils/casing\";\nimport { normalizeToStringArray } from \"../../utils/collections\";\nimport { useAnalytics } from \"./AnalyticsProvider\";\n\ntype AnalyticsPayload<Schema extends z.ZodTypeAny> = z.input<Schema>;\n\ntype AnalyticsPayloadWithout<\n Schema extends z.ZodTypeAny,\n Keys extends PropertyKey,\n> = Omit<AnalyticsPayload<Schema>, Keys>;\n\nexport const QuestionEnumValues = [\"location\", \"budget\", \"size\", \"other\"] as const;\nexport type QuestionEnum = (typeof QuestionEnumValues)[number];\nexport type FilterEnum = string;\nexport const SortEnumValues = [\n \"cost_low_to_high\",\n \"cost_high_to_low\",\n \"newest\",\n \"relevance\",\n] as const;\nexport type SortEnum = (typeof SortEnumValues)[number];\nexport const QuestionnaireInteractionValues = [\n \"Skip\",\n \"Continue\",\n \"Back\",\n] as const;\nexport type QuestionnaireInteraction =\n (typeof QuestionnaireInteractionValues)[number];\n\nconst propertyContextSchema = z.object({\n propertyId: z.string().min(1, \"propertyId is required\"),\n propertySlug: z.string().min(1, \"propertySlug is required\"),\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst propertyWithNameSchema = propertyContextSchema.extend({\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst viewAllUnitsSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst loadMoreSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst scheduleTourFormSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n lifestylePreferences: z.unknown().optional(),\n});\n\nconst questionnaireEventSchema = propertyWithNameSchema.extend({\n funnelStep: z.number().int().nonnegative(),\n profileQuestion: z.string().min(1, \"profileQuestion is required\"),\n interactedElement: z.enum(QuestionnaireInteractionValues),\n questionEnum: z.string().optional(),\n});\n\nconst continueQuestionnaireEventSchema = questionnaireEventSchema.extend({\n selectedAnswersEnumArray: z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"selectedAnswersEnumArray must resolve to an array\",\n }),\n});\n\nconst unitEventSchema = propertyContextSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst unitWithPropertyNameSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst getInTouchFormSchema = unitWithPropertyNameSchema.extend({\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n favoritedUnit: z.boolean(),\n});\nconst styleDrawerSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n favoritedUnit: z.boolean(),\n});\nconst furnitureInteractionSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n type: z.enum([\"click\", \"hover_on\", \"hover_off\"]),\n brand_name: z.string().min(1, \"brand_name is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureExternalUrlSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n link: z.string().min(1, \"link is required\"),\n type: z.string().min(1, \"type is required\"),\n favoritedUnit: z.boolean(),\n brand_name: z.string().min(1, \"brand_name is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureSavedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brand_name: z.string().min(1, \"brand_name is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureModalOpenedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brand_name: z.string().min(1, \"brand_name is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureCarouselSchema = unitWithPropertyNameSchema.extend({\n method: z.enum([\"Prev\", \"Next\"]),\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brand_name: z.string().min(1, \"brand_name is required\"),\n category: z.string().min(1, \"category is required\"),\n})\n\nconst roomEnteredSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"Navigation\", \"Map\"]),\n})\nconst roomLeftSchema = roomEnteredSchema.extend({\n timeInRoom: z.number().int().nonnegative(),\n})\n\nconst videoStartedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"On Click Play\"]),\n videoCurrentTime: z.number().int().nonnegative(),\n videoDuration: z.number().int().nonnegative(),\n videoPercent: z.number().int().nonnegative(),\n videoFilename: z.string().min(1, \"videoFilename is required\"),\n})\nconst emailTrackedSchema = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n favoritedUnit: z.boolean(),\n})\nconst webPageViewedBaseSchema = unitWithPropertyNameSchema.extend({\n fullUrl: z.string().min(1, \"fullUrl is required\"),\n datestamp: z.string().min(1, \"datestamp is required\"),\n})\n// 360 app only\nconst webPageViewedSchema = webPageViewedBaseSchema.extend({\n pageName: z.string().min(1, \"pageName is required\"),\n})\nconst webPageRoomViewedSchema = webPageViewedBaseSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n})\nconst embedPageViewedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n})\nconst embedPageViewSchemaWithUTM = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n})\n\n// property_slug, property_id, property_name, unit_id, unit_slug, unit_title, unit_bedrooms\n\nconst toastSchema = unitWithPropertyNameSchema.extend({\n toastCopy: z.string().min(1, \"toastCopy is required\"),\n})\nconst contentModalOpenedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n})\n\nconst buildingDetailsModalSchema = propertyWithNameSchema;\n\nconst subscriptionImpressionSchema = propertyWithNameSchema.extend({\n name: z.string().min(1, \"name is required\"),\n\n})\n\nconst subscriptionInteractedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({\n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n fieldName: z.string().min(1, \"fieldName is required\"),\n }),\n});\n\nconst subscriptionSubmittedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({\n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n bedrooms: z.array(z.union([z.string(), z.number()])).optional(),\n price: z.number().nullable().optional(),\n }),\n});\n\nconst subscriptionRemovedSchema = propertyWithNameSchema.extend({\n\n bedrooms: z.array(z.number()).optional(),\n price_min: z.number().optional(),\n price_max: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n\n\n page_name: z.string().optional(),\n});\n\nconst hoverUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst selectionSchema = z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"Selection must resolve to an array\",\n });\n\nconst filterOpenSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n filterName: z.string().optional(),\n});\n\nconst filterMutationSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n});\n\nconst sortEventSchema = propertyContextSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n});\n\nconst sortOpenSchema = propertyWithNameSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst questionnaireResultSchema = propertyContextSchema.extend({\n fullQuestionnaireSchemaJson: z.unknown().optional(),\n resultsJson: z\n .object({\n type: z.string().optional(),\n total: z.number().int().nonnegative().optional(),\n units: z\n .array(\n z.object({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().optional(),\n })\n )\n .optional(),\n })\n .optional(),\n});\n\nconst clickUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst clickUnitFavoritesSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n\n});\n\nconst unitUnfavoritedSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nexport type BaseEvent = z.infer<typeof propertyContextSchema>;\nexport type ViewAllUnitsEvent = z.infer<typeof viewAllUnitsSchema>;\nexport type LoadMoreEvent = z.infer<typeof loadMoreSchema>;\nexport type QuestionnaireEvent = z.infer<typeof questionnaireEventSchema>;\nexport type ContinueQuestionnaireEvent = z.infer<\n typeof continueQuestionnaireEventSchema\n>;\nexport type ClickUnitEvent = z.infer<typeof clickUnitSchema>;\nexport type UnitEvent = z.infer<typeof unitEventSchema>;\nexport type HoverUnitEvent = z.infer<typeof hoverUnitSchema>;\nexport type FilterEvent = z.infer<typeof filterMutationSchema>;\nexport type FilterOpenEvent = z.infer<typeof filterOpenSchema>;\nexport type SortEvent = z.infer<typeof sortEventSchema>;\nexport type SortOpenEvent = z.infer<typeof sortOpenSchema>;\nexport type QuestionnaireResultEvent = z.infer<\n typeof questionnaireResultSchema\n>;\nexport type ClickUnitFavoritesEvent = z.infer<typeof clickUnitFavoritesSchema>;\nexport type ScheduleTourFormEvent = z.infer<typeof scheduleTourFormSchema>;\nexport type UnitUnfavoritedEvent = z.infer<typeof unitUnfavoritedSchema>;\n\nexport type GetInTouchFormEvent = z.infer<typeof getInTouchFormSchema>;\nexport type StyleDrawerEvent = z.infer<typeof styleDrawerSchema>;\nexport type FurnitureInteractionEvent = z.infer<typeof furnitureInteractionSchema>;\nexport type FurnitureExternalUrlClickedEvent = z.infer<typeof furnitureExternalUrlSchema>;\nexport type FurnitureSavedEvent = z.infer<typeof furnitureSavedSchema>;\nexport type FurnitureModalOpenedEvent = z.infer<typeof furnitureModalOpenedSchema>;\nexport type FurnitureCarouselEvent = z.infer<typeof furnitureCarouselSchema>;\nexport type RoomEnteredEvent = z.infer<typeof roomEnteredSchema>;\nexport type RoomLeftEvent = z.infer<typeof roomLeftSchema>;\nexport type VideoStartedEvent = z.infer<typeof videoStartedSchema>;\nexport type EmailTrackedEvent = z.infer<typeof emailTrackedSchema>;\nexport type ToastEvent = z.infer<typeof toastSchema>;\nexport type ContentModalOpenedEvent = z.infer<typeof contentModalOpenedSchema>;\nexport type BuildingDetailsModalEvent = z.infer<typeof buildingDetailsModalSchema>;\nexport type SubscriptionImpressionEvent = z.infer<typeof subscriptionImpressionSchema>;\nexport type SubscriptionInteractedEvent = z.infer<typeof subscriptionInteractedSchema>;\nexport type SubscriptionSubmittedEvent = z.infer<typeof subscriptionSubmittedSchema>;\nexport type SubscriptionRemovedEvent = z.infer<typeof subscriptionRemovedSchema>;\nexport type WebPageViewedEvent = z.infer<typeof webPageViewedSchema>;\nexport type WebPageRoomViewedEvent = z.infer<typeof webPageRoomViewedSchema>;\n\n\nexport type TrackingEventWithUnits = FilterEvent & {\n trackingEvent: (payload: FilterEvent) => void;\n [metadata: string]: unknown;\n};\n\nexport type TrackEventFn = (eventName: string, data?: Record<string, any>) => void;\n\nexport function useTrackEvent() {\n const analytics = useAnalytics();\n return (eventName: string, data?: Record<string, any>) => {\n const payload =\n data == null ? data : (convertKeysToSnakeCase(data) as Record<string, any>);\n analytics.track(eventName, payload);\n };\n}\n\nconst createStrictTrackerInternal =\n <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n dispatch: (eventName: string, payload: unknown) => void,\n options?: { isDev?: boolean },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const payloadToValidate = convertKeysToCamelCase(payload) as z.input<Schema>;\n const result = schema.safeParse(payloadToValidate);\n if (!result.success) {\n if (options?.isDev) {\n // eslint-disable-next-line no-console\n console.warn(`[Analytics] Invalid payload for \"${eventName}\":`, result.error.issues);\n }\n return;\n }\n dispatch(eventName, payload);\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn, isDev = false) {\n const dispatch = (eventName: string, payload: unknown) => {\n const finalPayload = convertKeysToSnakeCase(payload) as Record<string, any>;\n trackEvent(eventName, finalPayload);\n };\n\n const createStrictTracker = <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n ) =>\n createStrictTrackerInternal(eventName, schema, dispatch, { isDev });\n\n return {\n trackViewAllUnits: (\n payload: AnalyticsPayload<typeof viewAllUnitsSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof viewAllUnitsSchema>;\n const result = viewAllUnitsSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"View All Units\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"View All Units\", result.data);\n },\n trackQuestionnaireSkip: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Skip\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Skip):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireContinue: (\n payload: AnalyticsPayloadWithout<\n typeof continueQuestionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof continueQuestionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = continueQuestionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Continue\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Continue):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireBack: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Back\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Back):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackClickUnit: createStrictTracker(\"Unit Card Clicked\", clickUnitSchema),\n trackHoverUnit: createStrictTracker(\"Unit Hovered\", hoverUnitSchema, ),\n trackLoadMore: (\n payload: AnalyticsPayload<typeof loadMoreSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof loadMoreSchema>;\n const result = loadMoreSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"More Units Loaded\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"More Units Loaded\", result.data);\n },\n trackFilterOpened: createStrictTracker(\"Filter Opened\", filterOpenSchema),\n trackFilterCanceled: createStrictTracker(\n \"Filter Cleared\",\n filterMutationSchema,\n ),\n trackFilterApplied: createStrictTracker(\n \"Filter Applied\",\n filterMutationSchema,\n ),\n trackOpenSort: (\n payload: AnalyticsPayload<typeof sortOpenSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof sortOpenSchema>;\n const result = sortOpenSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Sort Opened\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Sort Opened\", result.data);\n },\n trackSelectSort: createStrictTracker(\"Sort Applied\", sortEventSchema),\n trackCancelSort: createStrictTracker(\"Sort Canceled\", sortEventSchema),\n trackClickUnitFavorites: createStrictTracker(\n \"Unit Favorited\",\n clickUnitFavoritesSchema,\n ),\n trackUnitUnfavorited: createStrictTracker(\n \"Unit Unfavorited\",\n unitUnfavoritedSchema,\n ),\n trackQuestionnaireResult: createStrictTracker(\n \"Questionnaire Submitted\",\n questionnaireResultSchema,\n ),\n trackScheduleTourFormInteracted: createStrictTracker(\n \"Schedule Tour Form Interacted\",\n scheduleTourFormSchema,\n ),\n trackScheduleTourFormSubmitted: createStrictTracker(\n \"Schedule Tour Form Submitted\",\n scheduleTourFormSchema,\n ),\n trackScheduleTourUrlClicked: createStrictTracker(\n \"Schedule Tour URL Clicked\",\n scheduleTourFormSchema,\n ),\n trackGetInTouchFormOpened: createStrictTracker(\n \"Form Opened\",\n getInTouchFormSchema,\n ),\n trackGetInTouchFormSubmitted: createStrictTracker(\n \"Form Submitted\",\n getInTouchFormSchema,\n ),\n trackStyleDrawerOpened: createStrictTracker(\n \"Style Menu Opened\",\n styleDrawerSchema,\n ),\n trackStyleDrawerChanged: createStrictTracker(\n \"Style Changed\",\n styleDrawerSchema,\n ),\n trackOpeningStyleImpression: createStrictTracker(\n \"Opening Style Modal Impression\",\n styleDrawerSchema,\n ),\n trackOpeningStyleSlected: createStrictTracker(\n \"Opening Style Selected\",\n styleDrawerSchema,\n ),\n trackFurnitureViewed: createStrictTracker(\n \"Furniture Viewed\",\n furnitureInteractionSchema,\n ),\n trackFurnitureExternalUrlClicked: createStrictTracker(\n \"Purchase Link Clicked\",\n furnitureExternalUrlSchema,\n ),\n trackFurnitureSaved: createStrictTracker(\n \"Furniture Saved\",\n furnitureSavedSchema,\n ),\n trackFurnitureModalOpened: createStrictTracker(\n \"Furniture Modal Opened\",\n furnitureModalOpenedSchema,\n ),\n trackFurnitureCarouselToggled: createStrictTracker(\n \"Furniture Carousel Toggled\",\n furnitureCarouselSchema,\n ),\n trackRoomEntered: createStrictTracker(\n \"Room Entered\",\n roomEnteredSchema,\n ),\n trackRoomLeft: createStrictTracker(\n \"Room Left\",\n roomLeftSchema,\n ),\n trackVideoStarted: createStrictTracker(\n \"Video Started\",\n videoStartedSchema,\n ),\n trackEmailRedirect: createStrictTracker(\n \"Email Tracked\",\n emailTrackedSchema,\n ),\n trackToastImpression: createStrictTracker(\n \"Toast Impression\",\n toastSchema,\n ),\n trackToastClicked: createStrictTracker(\n \"Toast Clicked\",\n toastSchema,\n ),\n trackToastClosed: createStrictTracker(\n \"Toast Closed\",\n toastSchema,\n ),\n trackContentModalOpened: createStrictTracker(\n \"Content Modal Opened\",\n contentModalOpenedSchema,\n ),\n trackBuildingDetailsModalOpened: createStrictTracker(\n \"Building Details Modal\",\n buildingDetailsModalSchema,\n ),\n trackSubscriptionImpression: createStrictTracker(\n \"Subscription Impression\",\n subscriptionImpressionSchema,\n ),\n trackSubscriptionInteracted: createStrictTracker(\n \"Subscription Interacted\",\n subscriptionInteractedSchema,\n ),\n trackSubscriptionSubmitted: createStrictTracker(\n \"Subscription Submitted\",\n subscriptionSubmittedSchema,\n ),\n trackSubscriptionRemoved: createStrictTracker(\n \"Subscription Removed\",\n subscriptionRemovedSchema,\n ),\n trackWebPageViewed: createStrictTracker(\n \"Page Viewed\",\n webPageViewedSchema,\n ),\n trackWebPageRoomViewed: createStrictTracker(\n \"Page Viewed\",\n webPageRoomViewedSchema,\n ),\n trackEmbedPageViewed: createStrictTracker(\n \"Embed Impression\",\n embedPageViewedSchema,\n ),\n trackEmailClick: (data: { event_name: string }) => createStrictTracker(\n `Email Interaction - ${data.event_name}`,\n embedPageViewSchemaWithUTM,\n ),\n };\n}\n\nexport function useTrackingEvents() {\n const { isDev } = useAnalytics();\n const trackEvent = useTrackEvent();\n return buildTrackingEvents(trackEvent, isDev);\n}\n"],"names":["QuestionEnumValues","SortEnumValues","QuestionnaireInteractionValues","propertyContextSchema","z.object","z.string","propertyWithNameSchema","viewAllUnitsSchema","z.number","loadMoreSchema","scheduleTourFormSchema","z.unknown","questionnaireEventSchema","z.enum","continueQuestionnaireEventSchema","z.any","value","normalizeToStringArray","unitWithPropertyNameSchema","getInTouchFormSchema","z.boolean","styleDrawerSchema","furnitureInteractionSchema","furnitureExternalUrlSchema","furnitureSavedSchema","furnitureModalOpenedSchema","furnitureCarouselSchema","roomEnteredSchema","roomLeftSchema","videoStartedSchema","emailTrackedSchema","webPageViewedBaseSchema","webPageViewedSchema","webPageRoomViewedSchema","embedPageViewedSchema","embedPageViewSchemaWithUTM","toastSchema","contentModalOpenedSchema","buildingDetailsModalSchema","subscriptionImpressionSchema","subscriptionInteractedSchema","subscriptionSubmittedSchema","z.array","z.union","subscriptionRemovedSchema","hoverUnitSchema","selectionSchema","filterOpenSchema","filterMutationSchema","sortEventSchema","sortOpenSchema","questionnaireResultSchema","clickUnitSchema","clickUnitFavoritesSchema","unitUnfavoritedSchema","useTrackEvent","analytics","useAnalytics","eventName","data","payload","convertKeysToSnakeCase","createStrictTrackerInternal","schema","dispatch","options","payloadToValidate","convertKeysToCamelCase","result","buildTrackingEvents","trackEvent","isDev","finalPayload","createStrictTracker","normalizedPayload","useTrackingEvents"],"mappings":"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"}
1
+ {"version":3,"file":"analytics.cjs","sources":["../../../src/features/analytics/analytics.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n convertKeysToCamelCase,\n convertKeysToSnakeCase,\n} from \"../../utils/casing\";\nimport { normalizeToStringArray } from \"../../utils/collections\";\nimport { useAnalytics } from \"./AnalyticsProvider\";\n\ntype AnalyticsPayload<Schema extends z.ZodTypeAny> = z.input<Schema>;\n\ntype AnalyticsPayloadWithout<\n Schema extends z.ZodTypeAny,\n Keys extends PropertyKey,\n> = Omit<AnalyticsPayload<Schema>, Keys>;\n\nexport const QuestionEnumValues = [\"location\", \"budget\", \"size\", \"other\"] as const;\nexport type QuestionEnum = (typeof QuestionEnumValues)[number];\nexport type FilterEnum = string;\nexport const SortEnumValues = [\n \"cost_low_to_high\",\n \"cost_high_to_low\",\n \"newest\",\n \"relevance\",\n] as const;\nexport type SortEnum = (typeof SortEnumValues)[number];\nexport const QuestionnaireInteractionValues = [\n \"Skip\",\n \"Continue\",\n \"Back\",\n] as const;\nexport type QuestionnaireInteraction =\n (typeof QuestionnaireInteractionValues)[number];\n\nconst propertyContextSchema = z.object({\n propertyId: z.string().min(1, \"propertyId is required\"),\n propertySlug: z.string().min(1, \"propertySlug is required\"),\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst propertyWithNameSchema = propertyContextSchema.extend({\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst viewAllUnitsSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst loadMoreSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst scheduleTourFormSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n lifestylePreferences: z.unknown().optional(),\n});\n\nconst questionnaireEventSchema = propertyWithNameSchema.extend({\n funnelStep: z.number().int().nonnegative(),\n profileQuestion: z.string().min(1, \"profileQuestion is required\"),\n interactedElement: z.enum(QuestionnaireInteractionValues),\n questionEnum: z.string().optional(),\n});\n\nconst continueQuestionnaireEventSchema = questionnaireEventSchema.extend({\n selectedAnswersEnumArray: z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"selectedAnswersEnumArray must resolve to an array\",\n }),\n});\n\nconst unitEventSchema = propertyContextSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst unitWithPropertyNameSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst getInTouchFormSchema = unitWithPropertyNameSchema.extend({\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n favoritedUnit: z.boolean(),\n});\nconst styleDrawerSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n favoritedUnit: z.boolean(),\n});\nconst furnitureInteractionSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n type: z.enum([\"click\", \"hover_on\", \"hover_off\"]),\n brandName: z.string().min(1, \"brandName is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureExternalUrlSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n link: z.string().min(1, \"link is required\"),\n type: z.string().min(1, \"type is required\"),\n favoritedUnit: z.boolean(),\n brandName: z.string().min(1, \"brandName is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureSavedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brandName: z.string().min(1, \"brandName is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureModalOpenedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brandName: z.string().min(1, \"brandName is required\"),\n category: z.string().min(1, \"category is required\"),\n})\nconst furnitureCarouselSchema = unitWithPropertyNameSchema.extend({\n method: z.enum([\"Prev\", \"Next\"]),\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n brandName: z.string().min(1, \"brandName is required\"),\n category: z.string().min(1, \"category is required\"),\n})\n\nconst roomEnteredSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"Navigation\", \"Map\"]),\n})\nconst roomLeftSchema = roomEnteredSchema.extend({\n timeInRoom: z.number().int().nonnegative(),\n})\n\nconst videoStartedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"On Click Play\"]),\n videoCurrentTime: z.number().int().nonnegative(),\n videoDuration: z.number().int().nonnegative(),\n videoPercent: z.number().int().nonnegative(),\n videoFilename: z.string().min(1, \"videoFilename is required\"),\n})\nconst emailTrackedSchema = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n favoritedUnit: z.boolean(),\n})\nconst webPageViewedBaseSchema = unitWithPropertyNameSchema.extend({\n fullUrl: z.string().min(1, \"fullUrl is required\"),\n datestamp: z.string().min(1, \"datestamp is required\"),\n})\n// 360 app only\nconst webPageViewedSchema = webPageViewedBaseSchema.extend({\n pageName: z.string().min(1, \"pageName is required\"),\n})\nconst webPageRoomViewedSchema = webPageViewedBaseSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n})\nconst embedPageViewedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n})\nconst embedPageViewSchemaWithUTM = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n})\n\n// property_slug, property_id, property_name, unit_id, unit_slug, unit_title, unit_bedrooms\n\nconst toastSchema = unitWithPropertyNameSchema.extend({\n toastCopy: z.string().min(1, \"toastCopy is required\"),\n})\nconst contentModalOpenedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n})\n\nconst buildingDetailsModalSchema = propertyWithNameSchema;\n\nconst subscriptionImpressionSchema = propertyWithNameSchema.extend({\n name: z.string().min(1, \"name is required\"),\n\n})\n\nconst subscriptionInteractedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({\n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n fieldName: z.string().min(1, \"fieldName is required\"),\n }),\n});\n\nconst subscriptionSubmittedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({\n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n bedrooms: z.array(z.union([z.string(), z.number()])).optional(),\n price: z.number().nullable().optional(),\n }),\n});\n\nconst subscriptionRemovedSchema = propertyWithNameSchema.extend({\n\n bedrooms: z.array(z.number()).optional(),\n price_min: z.number().optional(),\n price_max: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n\n\n page_name: z.string().optional(),\n});\n\nconst hoverUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst selectionSchema = z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"Selection must resolve to an array\",\n });\n\nconst filterOpenSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n filterName: z.string().optional(),\n});\n\nconst filterMutationSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n});\n\nconst sortEventSchema = propertyContextSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n});\n\nconst sortOpenSchema = propertyWithNameSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst questionnaireResultSchema = propertyContextSchema.extend({\n fullQuestionnaireSchemaJson: z.unknown().optional(),\n resultsJson: z\n .object({\n type: z.string().optional(),\n total: z.number().int().nonnegative().optional(),\n units: z\n .array(\n z.object({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().optional(),\n })\n )\n .optional(),\n })\n .optional(),\n});\n\nconst clickUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst clickUnitFavoritesSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n\n});\n\nconst unitUnfavoritedSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nexport type BaseEvent = z.infer<typeof propertyContextSchema>;\nexport type ViewAllUnitsEvent = z.infer<typeof viewAllUnitsSchema>;\nexport type LoadMoreEvent = z.infer<typeof loadMoreSchema>;\nexport type QuestionnaireEvent = z.infer<typeof questionnaireEventSchema>;\nexport type ContinueQuestionnaireEvent = z.infer<\n typeof continueQuestionnaireEventSchema\n>;\nexport type ClickUnitEvent = z.infer<typeof clickUnitSchema>;\nexport type UnitEvent = z.infer<typeof unitEventSchema>;\nexport type HoverUnitEvent = z.infer<typeof hoverUnitSchema>;\nexport type FilterEvent = z.infer<typeof filterMutationSchema>;\nexport type FilterOpenEvent = z.infer<typeof filterOpenSchema>;\nexport type SortEvent = z.infer<typeof sortEventSchema>;\nexport type SortOpenEvent = z.infer<typeof sortOpenSchema>;\nexport type QuestionnaireResultEvent = z.infer<\n typeof questionnaireResultSchema\n>;\nexport type ClickUnitFavoritesEvent = z.infer<typeof clickUnitFavoritesSchema>;\nexport type ScheduleTourFormEvent = z.infer<typeof scheduleTourFormSchema>;\nexport type UnitUnfavoritedEvent = z.infer<typeof unitUnfavoritedSchema>;\n\nexport type GetInTouchFormEvent = z.infer<typeof getInTouchFormSchema>;\nexport type StyleDrawerEvent = z.infer<typeof styleDrawerSchema>;\nexport type FurnitureInteractionEvent = z.infer<typeof furnitureInteractionSchema>;\nexport type FurnitureExternalUrlClickedEvent = z.infer<typeof furnitureExternalUrlSchema>;\nexport type FurnitureSavedEvent = z.infer<typeof furnitureSavedSchema>;\nexport type FurnitureModalOpenedEvent = z.infer<typeof furnitureModalOpenedSchema>;\nexport type FurnitureCarouselEvent = z.infer<typeof furnitureCarouselSchema>;\nexport type RoomEnteredEvent = z.infer<typeof roomEnteredSchema>;\nexport type RoomLeftEvent = z.infer<typeof roomLeftSchema>;\nexport type VideoStartedEvent = z.infer<typeof videoStartedSchema>;\nexport type EmailTrackedEvent = z.infer<typeof emailTrackedSchema>;\nexport type ToastEvent = z.infer<typeof toastSchema>;\nexport type ContentModalOpenedEvent = z.infer<typeof contentModalOpenedSchema>;\nexport type BuildingDetailsModalEvent = z.infer<typeof buildingDetailsModalSchema>;\nexport type SubscriptionImpressionEvent = z.infer<typeof subscriptionImpressionSchema>;\nexport type SubscriptionInteractedEvent = z.infer<typeof subscriptionInteractedSchema>;\nexport type SubscriptionSubmittedEvent = z.infer<typeof subscriptionSubmittedSchema>;\nexport type SubscriptionRemovedEvent = z.infer<typeof subscriptionRemovedSchema>;\nexport type WebPageViewedEvent = z.infer<typeof webPageViewedSchema>;\nexport type WebPageRoomViewedEvent = z.infer<typeof webPageRoomViewedSchema>;\n\n\nexport type TrackingEventWithUnits = FilterEvent & {\n trackingEvent: (payload: FilterEvent) => void;\n [metadata: string]: unknown;\n};\n\nexport type TrackEventFn = (eventName: string, data?: Record<string, any>) => void;\n\nexport function useTrackEvent() {\n const analytics = useAnalytics();\n return (eventName: string, data?: Record<string, any>) => {\n const payload =\n data == null ? data : (convertKeysToSnakeCase(data) as Record<string, any>);\n analytics.track(eventName, payload);\n };\n}\n\nconst createStrictTrackerInternal =\n <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n dispatch: (eventName: string, payload: unknown) => void,\n options?: { isDev?: boolean },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const payloadToValidate = convertKeysToCamelCase(payload) as z.input<Schema>;\n const result = schema.safeParse(payloadToValidate);\n if (!result.success) {\n if (options?.isDev) {\n // eslint-disable-next-line no-console\n console.warn(`[Analytics] Invalid payload for \"${eventName}\":`, result.error.issues);\n }\n return;\n }\n dispatch(eventName, payload);\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn, isDev = false) {\n const dispatch = (eventName: string, payload: unknown) => {\n const finalPayload = convertKeysToSnakeCase(payload) as Record<string, any>;\n trackEvent(eventName, finalPayload);\n };\n\n const createStrictTracker = <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n ) =>\n createStrictTrackerInternal(eventName, schema, dispatch, { isDev });\n\n return {\n trackViewAllUnits: (\n payload: AnalyticsPayload<typeof viewAllUnitsSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof viewAllUnitsSchema>;\n const result = viewAllUnitsSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"View All Units\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"View All Units\", result.data);\n },\n trackQuestionnaireSkip: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Skip\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Skip):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireContinue: (\n payload: AnalyticsPayloadWithout<\n typeof continueQuestionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof continueQuestionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = continueQuestionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Continue\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Continue):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireBack: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Back\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Back):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackClickUnit: createStrictTracker(\"Unit Card Clicked\", clickUnitSchema),\n trackHoverUnit: createStrictTracker(\"Unit Hovered\", hoverUnitSchema, ),\n trackLoadMore: (\n payload: AnalyticsPayload<typeof loadMoreSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof loadMoreSchema>;\n const result = loadMoreSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"More Units Loaded\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"More Units Loaded\", result.data);\n },\n trackFilterOpened: createStrictTracker(\"Filter Opened\", filterOpenSchema),\n trackFilterCanceled: createStrictTracker(\n \"Filter Cleared\",\n filterMutationSchema,\n ),\n trackFilterApplied: createStrictTracker(\n \"Filter Applied\",\n filterMutationSchema,\n ),\n trackOpenSort: (\n payload: AnalyticsPayload<typeof sortOpenSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof sortOpenSchema>;\n const result = sortOpenSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Sort Opened\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Sort Opened\", result.data);\n },\n trackSelectSort: createStrictTracker(\"Sort Applied\", sortEventSchema),\n trackCancelSort: createStrictTracker(\"Sort Canceled\", sortEventSchema),\n trackClickUnitFavorites: createStrictTracker(\n \"Unit Favorited\",\n clickUnitFavoritesSchema,\n ),\n trackUnitUnfavorited: createStrictTracker(\n \"Unit Unfavorited\",\n unitUnfavoritedSchema,\n ),\n trackQuestionnaireResult: createStrictTracker(\n \"Questionnaire Submitted\",\n questionnaireResultSchema,\n ),\n trackScheduleTourFormInteracted: createStrictTracker(\n \"Schedule Tour Form Interacted\",\n scheduleTourFormSchema,\n ),\n trackScheduleTourFormSubmitted: createStrictTracker(\n \"Schedule Tour Form Submitted\",\n scheduleTourFormSchema,\n ),\n trackScheduleTourUrlClicked: createStrictTracker(\n \"Schedule Tour URL Clicked\",\n scheduleTourFormSchema,\n ),\n trackGetInTouchFormOpened: createStrictTracker(\n \"Form Opened\",\n getInTouchFormSchema,\n ),\n trackGetInTouchFormSubmitted: createStrictTracker(\n \"Form Submitted\",\n getInTouchFormSchema,\n ),\n trackStyleDrawerOpened: createStrictTracker(\n \"Style Menu Opened\",\n styleDrawerSchema,\n ),\n trackStyleDrawerChanged: createStrictTracker(\n \"Style Changed\",\n styleDrawerSchema,\n ),\n trackOpeningStyleImpression: createStrictTracker(\n \"Opening Style Modal Impression\",\n styleDrawerSchema,\n ),\n trackOpeningStyleSlected: createStrictTracker(\n \"Opening Style Selected\",\n styleDrawerSchema,\n ),\n trackFurnitureViewed: createStrictTracker(\n \"Furniture Viewed\",\n furnitureInteractionSchema,\n ),\n trackFurnitureExternalUrlClicked: createStrictTracker(\n \"Purchase Link Clicked\",\n furnitureExternalUrlSchema,\n ),\n trackFurnitureSaved: createStrictTracker(\n \"Furniture Saved\",\n furnitureSavedSchema,\n ),\n trackFurnitureModalOpened: createStrictTracker(\n \"Furniture Modal Opened\",\n furnitureModalOpenedSchema,\n ),\n trackFurnitureCarouselToggled: createStrictTracker(\n \"Furniture Carousel Toggled\",\n furnitureCarouselSchema,\n ),\n trackRoomEntered: createStrictTracker(\n \"Room Entered\",\n roomEnteredSchema,\n ),\n trackRoomLeft: createStrictTracker(\n \"Room Left\",\n roomLeftSchema,\n ),\n trackVideoStarted: createStrictTracker(\n \"Video Started\",\n videoStartedSchema,\n ),\n trackEmailRedirect: createStrictTracker(\n \"Email Tracked\",\n emailTrackedSchema,\n ),\n trackToastImpression: createStrictTracker(\n \"Toast Impression\",\n toastSchema,\n ),\n trackToastClicked: createStrictTracker(\n \"Toast Clicked\",\n toastSchema,\n ),\n trackToastClosed: createStrictTracker(\n \"Toast Closed\",\n toastSchema,\n ),\n trackContentModalOpened: createStrictTracker(\n \"Content Modal Opened\",\n contentModalOpenedSchema,\n ),\n trackBuildingDetailsModalOpened: createStrictTracker(\n \"Building Details Modal\",\n buildingDetailsModalSchema,\n ),\n trackSubscriptionImpression: createStrictTracker(\n \"Subscription Impression\",\n subscriptionImpressionSchema,\n ),\n trackSubscriptionInteracted: createStrictTracker(\n \"Subscription Interacted\",\n subscriptionInteractedSchema,\n ),\n trackSubscriptionSubmitted: createStrictTracker(\n \"Subscription Submitted\",\n subscriptionSubmittedSchema,\n ),\n trackSubscriptionRemoved: createStrictTracker(\n \"Subscription Removed\",\n subscriptionRemovedSchema,\n ),\n trackWebPageViewed: createStrictTracker(\n \"Page Viewed\",\n webPageViewedSchema,\n ),\n trackWebPageRoomViewed: createStrictTracker(\n \"Page Viewed\",\n webPageRoomViewedSchema,\n ),\n trackEmbedPageViewed: createStrictTracker(\n \"Embed Impression\",\n embedPageViewedSchema,\n ),\n trackEmailClickGeneric: (data: { event_name: string }) => createStrictTracker(\n `Email Interaction - ${data.event_name}`,\n embedPageViewSchemaWithUTM,\n ),\n trackEmailClickConfirmation: () => createStrictTracker(\n \"Notify Me Email Confirmation\",\n embedPageViewSchemaWithUTM,\n ),\n trackEmailClickNotification: () => createStrictTracker(\n \"Notify Me Email Notification\",\n embedPageViewSchemaWithUTM,\n ),\n };\n}\n\nexport function useTrackingEvents() {\n const { isDev } = useAnalytics();\n const trackEvent = useTrackEvent();\n return buildTrackingEvents(trackEvent, isDev);\n}\n"],"names":["QuestionEnumValues","SortEnumValues","QuestionnaireInteractionValues","propertyContextSchema","z.object","z.string","propertyWithNameSchema","viewAllUnitsSchema","z.number","loadMoreSchema","scheduleTourFormSchema","z.unknown","questionnaireEventSchema","z.enum","continueQuestionnaireEventSchema","z.any","value","normalizeToStringArray","unitWithPropertyNameSchema","getInTouchFormSchema","z.boolean","styleDrawerSchema","furnitureInteractionSchema","furnitureExternalUrlSchema","furnitureSavedSchema","furnitureModalOpenedSchema","furnitureCarouselSchema","roomEnteredSchema","roomLeftSchema","videoStartedSchema","emailTrackedSchema","webPageViewedBaseSchema","webPageViewedSchema","webPageRoomViewedSchema","embedPageViewedSchema","embedPageViewSchemaWithUTM","toastSchema","contentModalOpenedSchema","buildingDetailsModalSchema","subscriptionImpressionSchema","subscriptionInteractedSchema","subscriptionSubmittedSchema","z.array","z.union","subscriptionRemovedSchema","hoverUnitSchema","selectionSchema","filterOpenSchema","filterMutationSchema","sortEventSchema","sortOpenSchema","questionnaireResultSchema","clickUnitSchema","clickUnitFavoritesSchema","unitUnfavoritedSchema","useTrackEvent","analytics","useAnalytics","eventName","data","payload","convertKeysToSnakeCase","createStrictTrackerInternal","schema","dispatch","options","payloadToValidate","convertKeysToCamelCase","result","buildTrackingEvents","trackEvent","isDev","finalPayload","createStrictTracker","normalizedPayload","useTrackingEvents"],"mappings":"wRAgBaA,EAAqB,CAAC,WAAY,SAAU,OAAQ,OAAO,EAG3DC,EAAiB,CAC5B,mBACA,mBACA,SACA,WACF,EAEaC,EAAiC,CAC5C,OACA,WACA,MACF,EAIMC,EAAwBC,EAAAA,OAAS,CACrC,WAAYC,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACtD,aAAcA,EAAAA,OAAE,EAAS,IAAI,EAAG,0BAA0B,EAC1D,aAAcA,EAAAA,OAAE,EAAS,IAAI,EAAG,0BAA0B,CAC5D,CAAC,EAEKC,EAAyBH,EAAsB,OAAO,CAC1D,aAAcE,EAAAA,OAAE,EAAS,IAAI,EAAG,0BAA0B,CAC5D,CAAC,EAEKE,EAAqBD,EAAuB,OAAO,CACvD,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC5B,CAAC,EAEKI,EAAiBH,EAAuB,OAAO,CACnD,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC5B,CAAC,EAEKK,EAAyBJ,EAAuB,OAAO,CAC3D,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,EAC1B,qBAAsBM,EAAAA,QAAE,EAAU,SAAA,CACpC,CAAC,EAEKC,EAA2BN,EAAuB,OAAO,CAC7D,WAAYE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC7B,gBAAiBH,EAAAA,OAAE,EAAS,IAAI,EAAG,6BAA6B,EAChE,kBAAmBQ,EAAAA,KAAOX,CAA8B,EACxD,aAAcG,EAAAA,OAAE,EAAS,SAAA,CAC3B,CAAC,EAEKS,EAAmCF,EAAyB,OAAO,CACvE,yBAA0BG,EAAAA,IACvB,EACA,UAAWC,GAAUC,EAAAA,uBAAuBD,CAAK,CAAC,EAClD,OAAQA,GAA6B,MAAM,QAAQA,CAAK,EAAG,CAC1D,QAAS,mDAAA,CACV,CACL,CAAC,EAEuBb,EAAsB,OAAO,CACnD,OAAQE,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACD,MAAMa,EAA6BZ,EAAuB,OAAO,CAC/D,OAAQD,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACKc,EAAuBD,EAA2B,OAAO,CAC7D,WAAYb,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACtD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAElD,QAASA,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC/B,cAAeY,EAAAA,QAAE,CACnB,CAAC,EACKC,EAAoBH,EAA2B,OAAO,CAC1D,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,cAAee,EAAAA,QAAE,CACnB,CAAC,EACKE,EAA6BJ,EAA2B,OAAO,CACnE,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,YAAaA,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,cAAeA,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,EAC5D,KAAMQ,EAAAA,KAAO,CAAC,QAAS,WAAY,WAAW,CAAC,EAC/C,UAAWR,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACKkB,EAA6BL,EAA2B,OAAO,CACnE,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,YAAaA,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,cAAeA,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,EAC5D,KAAMA,EAAAA,OAAE,EAAS,IAAI,EAAG,kBAAkB,EAC1C,KAAMA,EAAAA,OAAE,EAAS,IAAI,EAAG,kBAAkB,EAC1C,cAAee,EAAAA,QAAE,EACjB,UAAWf,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACKmB,EAAuBN,EAA2B,OAAO,CAC7D,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,YAAaA,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,cAAeA,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,EAC5D,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACKoB,EAA6BP,EAA2B,OAAO,CACnE,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,YAAaA,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,cAAeA,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,EAC5D,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACKqB,EAA0BR,EAA2B,OAAO,CAChE,OAAQL,EAAAA,KAAO,CAAC,OAAQ,MAAM,CAAC,EAC/B,SAAUR,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,YAAaA,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,cAAeA,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,EAC5D,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EAEKsB,EAAoBT,EAA2B,OAAO,CAC1D,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,OAAQQ,EAAAA,KAAO,CAAC,aAAc,KAAK,CAAC,CACtC,CAAC,EACKe,EAAiBD,EAAkB,OAAO,CAC9C,WAAYnB,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CAC/B,CAAC,EAEKqB,EAAqBX,EAA2B,OAAO,CAC3D,SAAUb,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,OAAQQ,EAAAA,KAAO,CAAC,eAAe,CAAC,EAChC,iBAAkBL,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAChC,aAAcA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC/B,cAAeH,EAAAA,OAAE,EAAS,IAAI,EAAG,2BAA2B,CAC9D,CAAC,EACKyB,EAAqBZ,EAA2B,OAAO,CAC3D,UAAWb,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACrD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACrD,QAASA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAEjD,aAAcG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EAEpD,cAAee,EAAAA,QAAE,CACnB,CAAC,EACKW,EAA0Bb,EAA2B,OAAO,CAChE,QAASb,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,CACtD,CAAC,EAEK2B,EAAsBD,EAAwB,OAAO,CACzD,SAAU1B,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACK4B,EAA0BF,EAAwB,OAAO,CAC7D,SAAU1B,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EACK6B,EAAwBhB,EAA2B,OAAO,CAC9D,aAAcV,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CACjC,CAAC,EACK2B,EAA6BjB,EAA2B,OAAO,CACnE,UAAWb,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACrD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACrD,QAASA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACnD,CAAC,EAIK+B,EAAclB,EAA2B,OAAO,CACpD,UAAWb,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,CACtD,CAAC,EACKgC,EAA2BnB,EAA2B,OAAO,CACjE,aAAcV,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAE/B,QAASH,EAAAA,OAAE,EAAS,IAAI,EAAG,qBAAqB,EAChD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,CACtD,CAAC,EAEKiC,EAA6BhC,EAE7BiC,EAA+BjC,EAAuB,OAAO,CACjE,KAAMD,EAAAA,OAAE,EAAS,IAAI,EAAG,kBAAkB,CAE5C,CAAC,EAEKmC,EAA+BpC,EAAAA,OAAS,CAC5C,KAAMC,EAAAA,OAAE,EAAS,IAAI,EAAG,kBAAkB,EAC1C,WAAYD,EAAAA,OAAS,CACnB,sBAAAD,EACA,WAAYE,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACtD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,CAAA,CACrD,CACH,CAAC,EAEKoC,EAA8BrC,EAAAA,OAAS,CAC3C,KAAMC,EAAAA,OAAE,EAAS,IAAI,EAAG,kBAAkB,EAC1C,WAAYD,EAAAA,OAAS,CACnB,sBAAAD,EACA,WAAYE,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACtD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUqC,EAAAA,MAAQC,EAAAA,MAAQ,CAACtC,EAAAA,OAAE,EAAUG,SAAE,CAAQ,CAAC,CAAC,EAAE,SAAA,EACrD,MAAOA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,CAAS,CACvC,CACH,CAAC,EAEKoC,EAA4BtC,EAAuB,OAAO,CAE9D,SAAUoC,EAAAA,MAAQlC,SAAE,CAAQ,EAAE,SAAA,EAC9B,UAAWA,EAAAA,OAAE,EAAS,SAAA,EACtB,UAAWA,EAAAA,OAAE,EAAS,SAAA,EACtB,WAAYkC,EAAAA,MAAQrC,SAAE,CAAQ,EAAE,SAAA,EAGhC,UAAWA,EAAAA,OAAE,EAAS,SAAA,CACxB,CAAC,EAEKwC,EAAkB3B,EAA2B,OAAO,CACxD,cAAeE,EAAAA,QAAE,EACjB,UAAWZ,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CAC9B,CAAC,EAEKsC,EAAkB/B,EAAAA,IACrB,EACA,UAAWC,GAAUC,EAAAA,uBAAuBD,CAAK,CAAC,EAClD,OAAQA,GAA6B,MAAM,QAAQA,CAAK,EAAG,CAC1D,QAAS,oCACX,CAAC,EAEG+B,EAAmBzC,EAAuB,OAAO,CACrD,YAAaE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC9B,YAAaH,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,oBAAqByC,EACrB,WAAYzC,EAAAA,OAAE,EAAS,SAAA,CACzB,CAAC,EAEK2C,EAAuB1C,EAAuB,OAAO,CACzD,YAAaE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC9B,YAAaH,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,oBAAqByC,CACvB,CAAC,EAEKG,EAAkB9C,EAAsB,OAAO,CACnD,UAAWK,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC5B,SAAUK,EAAAA,KAAOZ,CAAc,CACjC,CAAC,EAEKiD,EAAiB5C,EAAuB,OAAO,CAClD,UAAWE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC5B,SAAUK,EAAAA,KAAOZ,CAAc,EAC/B,iBAAkBO,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC7B,CAAC,EAEK8C,EAA4BhD,EAAsB,OAAO,CAC7D,4BAA6BQ,EAAAA,QAAE,EAAU,SAAA,EACzC,YAAaP,EAAAA,OACH,CACN,KAAMC,EAAAA,OAAE,EAAS,SAAA,EACjB,MAAOG,EAAAA,OAAE,EAAS,MAAM,YAAA,EAAc,SAAA,EACtC,MAAOkC,EAAAA,MAEHtC,SAAS,CACP,OAAQC,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,SAAUA,EAAAA,OAAE,EAAS,SAAA,CAAS,CAC/B,CAAA,EAEF,SAAA,CAAS,CACb,EACA,SAAA,CACL,CAAC,EAEK+C,GAAkBlC,EAA2B,OAAO,CACxD,cAAeE,EAAAA,QAAE,EACjB,UAAWZ,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CAC9B,CAAC,EAEK6C,GAA2BnC,EAA2B,OAAO,CACjE,cAAeE,EAAAA,QAAE,EACjB,UAAWZ,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CAE9B,CAAC,EAEK8C,GAAwBhD,EAAuB,OAAO,CAC1D,OAAQD,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,iBAAkBG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,EAC1B,UAAWG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,CAC9B,CAAC,EAoDM,SAAS+C,GAAgB,CAC9B,MAAMC,EAAYC,EAAAA,aAAA,EAClB,MAAO,CAACC,EAAmBC,IAA+B,CACxD,MAAMC,EACJD,GAAQ,KAAOA,EAAQE,EAAAA,uBAAuBF,CAAI,EACpDH,EAAU,MAAME,EAAWE,CAAO,CACpC,CACF,CAEA,MAAME,GACJ,CACEJ,EACAK,EACAC,EACAC,IAEDL,GAAsC,CACrC,MAAMM,EAAoBC,EAAAA,uBAAuBP,CAAO,EAClDQ,EAASL,EAAO,UAAUG,CAAiB,EACjD,GAAI,CAACE,EAAO,QAAS,CACfH,GAAA,MAAAA,EAAS,OAEX,QAAQ,KAAK,oCAAoCP,CAAS,KAAMU,EAAO,MAAM,MAAM,EAErF,MACF,CACAJ,EAASN,EAAWE,CAAO,CAC7B,EAEK,SAASS,EAAoBC,EAA0BC,EAAQ,GAAO,CAC3E,MAAMP,EAAW,CAACN,EAAmBE,IAAqB,CACxD,MAAMY,EAAeX,EAAAA,uBAAuBD,CAAO,EACnDU,EAAWZ,EAAWc,CAAY,CACpC,EAEMC,EAAsB,CAC1Bf,EACAK,IAEAD,GAA4BJ,EAAWK,EAAQC,EAAU,CAAE,MAAAO,EAAO,EAEpE,MAAO,CACL,kBACEX,GACG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAEIQ,EAAS7D,EAAmB,UAAU,CAC1C,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGmE,CAAA,CACJ,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,oDAAuDH,EAAO,MAAM,SAAS,EACrG,MACF,CACAJ,EAAS,iBAAkBI,EAAO,IAAI,CACxC,EACA,uBACER,GAIG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAKIQ,EAASxD,EAAyB,UAAU,CAChD,GAAG8D,EACH,kBAAmB,MAAA,CACpB,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,oEAAuEH,EAAO,MAAM,SAAS,EACrH,MACF,CACAJ,EAAS,0BAA2BI,EAAO,IAAI,CACjD,EACA,2BACER,GAIG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAKIQ,EAAStD,EAAiC,UAAU,CACxD,GAAG4D,EACH,kBAAmB,UAAA,CACpB,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,wEAA2EH,EAAO,MAAM,SAAS,EACzH,MACF,CACAJ,EAAS,0BAA2BI,EAAO,IAAI,CACjD,EACA,uBACER,GAIG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAKIQ,EAASxD,EAAyB,UAAU,CAChD,GAAG8D,EACH,kBAAmB,MAAA,CACpB,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,oEAAuEH,EAAO,MAAM,SAAS,EACrH,MACF,CACAJ,EAAS,0BAA2BI,EAAO,IAAI,CACjD,EACA,eAAgBK,EAAoB,oBAAqBrB,EAAe,EACxE,eAAgBqB,EAAoB,eAAgB5B,CAAiB,EACrE,cACEe,GACG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAEIQ,EAAS3D,EAAe,UAAU,CACtC,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGiE,CAAA,CACJ,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,uDAA0DH,EAAO,MAAM,SAAS,EACxG,MACF,CACAJ,EAAS,oBAAqBI,EAAO,IAAI,CAC3C,EACA,kBAAmBK,EAAoB,gBAAiB1B,CAAgB,EACxE,oBAAqB0B,EACnB,iBACAzB,CAAA,EAEF,mBAAoByB,EAClB,iBACAzB,CAAA,EAEF,cACEY,GACG,CACH,MAAMc,EAAoBP,EAAAA,uBACxBP,CAAA,EAEIQ,EAASlB,EAAe,UAAU,CACtC,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGwB,CAAA,CACJ,EACD,GAAI,CAACN,EAAO,QAAS,CACfG,GAAO,QAAQ,KAAK,iDAAoDH,EAAO,MAAM,SAAS,EAClG,MACF,CACAJ,EAAS,cAAeI,EAAO,IAAI,CACrC,EACA,gBAAiBK,EAAoB,eAAgBxB,CAAe,EACpE,gBAAiBwB,EAAoB,gBAAiBxB,CAAe,EACrE,wBAAyBwB,EACvB,iBACApB,EAAA,EAEF,qBAAsBoB,EACpB,mBACAnB,EAAA,EAEF,yBAA0BmB,EACxB,0BACAtB,CAAA,EAEF,gCAAiCsB,EAC/B,gCACA/D,CAAA,EAEF,+BAAgC+D,EAC9B,+BACA/D,CAAA,EAEF,4BAA6B+D,EAC3B,4BACA/D,CAAA,EAEF,0BAA2B+D,EACzB,cACAtD,CAAA,EAEF,6BAA8BsD,EAC5B,iBACAtD,CAAA,EAEF,uBAAwBsD,EACtB,oBACApD,CAAA,EAEF,wBAAyBoD,EACvB,gBACApD,CAAA,EAEF,4BAA6BoD,EAC3B,iCACApD,CAAA,EAEF,yBAA0BoD,EACxB,yBACApD,CAAA,EAEF,qBAAsBoD,EACpB,mBACAnD,CAAA,EAEF,iCAAkCmD,EAChC,wBACAlD,CAAA,EAEF,oBAAqBkD,EACnB,kBACAjD,CAAA,EAEF,0BAA2BiD,EACzB,yBACAhD,CAAA,EAEF,8BAA+BgD,EAC7B,6BACA/C,CAAA,EAEF,iBAAkB+C,EAChB,eACA9C,CAAA,EAEF,cAAe8C,EACb,YACA7C,CAAA,EAEF,kBAAmB6C,EACjB,gBACA5C,CAAA,EAEF,mBAAoB4C,EAClB,gBACA3C,CAAA,EAEF,qBAAsB2C,EACpB,mBACArC,CAAA,EAEF,kBAAmBqC,EACjB,gBACArC,CAAA,EAEF,iBAAkBqC,EAChB,eACArC,CAAA,EAEF,wBAAyBqC,EACvB,uBACApC,CAAA,EAEF,gCAAiCoC,EAC/B,yBACAnC,CAAA,EAEF,4BAA6BmC,EAC3B,0BACAlC,CAAA,EAEF,4BAA6BkC,EAC3B,0BACAjC,CAAA,EAEF,2BAA4BiC,EAC1B,yBACAhC,CAAA,EAED,yBAA0BgC,EACzB,uBACA7B,CAAA,EAEF,mBAAoB6B,EAClB,cACAzC,CAAA,EAEF,uBAAwByC,EACtB,cACAxC,CAAA,EAEF,qBAAsBwC,EACpB,mBACAvC,CAAA,EAEF,uBAAyByB,GAAiCc,EACxD,uBAAuBd,EAAK,UAAU,GACtCxB,CAAA,EAEF,4BAA6B,IAAMsC,EACjC,+BACAtC,CAAA,EAEF,4BAA6B,IAAMsC,EACjC,+BACAtC,CAAA,CACF,CAEJ,CAEO,SAASwC,IAAoB,CAClC,KAAM,CAAE,MAAAJ,CAAA,EAAUd,eAAA,EACZa,EAAaf,EAAA,EACnB,OAAOc,EAAoBC,EAAYC,CAAK,CAC9C"}
@@ -277,7 +277,7 @@ declare const furnitureInteractionSchema: z.ZodObject<{
277
277
  furnitureId: z.ZodString;
278
278
  furnitureName: z.ZodString;
279
279
  type: z.ZodEnum<["click", "hover_on", "hover_off"]>;
280
- brand_name: z.ZodString;
280
+ brandName: z.ZodString;
281
281
  category: z.ZodString;
282
282
  }, "strip", z.ZodTypeAny, {
283
283
  type: "click" | "hover_on" | "hover_off";
@@ -293,7 +293,7 @@ declare const furnitureInteractionSchema: z.ZodObject<{
293
293
  unitBedrooms: number;
294
294
  roomName: string;
295
295
  furnitureName: string;
296
- brand_name: string;
296
+ brandName: string;
297
297
  category: string;
298
298
  }, {
299
299
  type: "click" | "hover_on" | "hover_off";
@@ -309,7 +309,7 @@ declare const furnitureInteractionSchema: z.ZodObject<{
309
309
  unitBedrooms: number;
310
310
  roomName: string;
311
311
  furnitureName: string;
312
- brand_name: string;
312
+ brandName: string;
313
313
  category: string;
314
314
  }>;
315
315
  declare const furnitureExternalUrlSchema: z.ZodObject<{
@@ -331,7 +331,7 @@ declare const furnitureExternalUrlSchema: z.ZodObject<{
331
331
  link: z.ZodString;
332
332
  type: z.ZodString;
333
333
  favoritedUnit: z.ZodBoolean;
334
- brand_name: z.ZodString;
334
+ brandName: z.ZodString;
335
335
  category: z.ZodString;
336
336
  }, "strip", z.ZodTypeAny, {
337
337
  type: string;
@@ -349,7 +349,7 @@ declare const furnitureExternalUrlSchema: z.ZodObject<{
349
349
  favoritedUnit: boolean;
350
350
  roomName: string;
351
351
  furnitureName: string;
352
- brand_name: string;
352
+ brandName: string;
353
353
  category: string;
354
354
  }, {
355
355
  type: string;
@@ -367,7 +367,7 @@ declare const furnitureExternalUrlSchema: z.ZodObject<{
367
367
  favoritedUnit: boolean;
368
368
  roomName: string;
369
369
  furnitureName: string;
370
- brand_name: string;
370
+ brandName: string;
371
371
  category: string;
372
372
  }>;
373
373
  declare const furnitureSavedSchema: z.ZodObject<{
@@ -386,7 +386,7 @@ declare const furnitureSavedSchema: z.ZodObject<{
386
386
  styleName: z.ZodString;
387
387
  furnitureId: z.ZodString;
388
388
  furnitureName: z.ZodString;
389
- brand_name: z.ZodString;
389
+ brandName: z.ZodString;
390
390
  category: z.ZodString;
391
391
  }, "strip", z.ZodTypeAny, {
392
392
  propertyId: string;
@@ -401,7 +401,7 @@ declare const furnitureSavedSchema: z.ZodObject<{
401
401
  unitBedrooms: number;
402
402
  roomName: string;
403
403
  furnitureName: string;
404
- brand_name: string;
404
+ brandName: string;
405
405
  category: string;
406
406
  }, {
407
407
  propertyId: string;
@@ -416,7 +416,7 @@ declare const furnitureSavedSchema: z.ZodObject<{
416
416
  unitBedrooms: number;
417
417
  roomName: string;
418
418
  furnitureName: string;
419
- brand_name: string;
419
+ brandName: string;
420
420
  category: string;
421
421
  }>;
422
422
  declare const furnitureModalOpenedSchema: z.ZodObject<{
@@ -435,7 +435,7 @@ declare const furnitureModalOpenedSchema: z.ZodObject<{
435
435
  styleName: z.ZodString;
436
436
  furnitureId: z.ZodString;
437
437
  furnitureName: z.ZodString;
438
- brand_name: z.ZodString;
438
+ brandName: z.ZodString;
439
439
  category: z.ZodString;
440
440
  }, "strip", z.ZodTypeAny, {
441
441
  propertyId: string;
@@ -450,7 +450,7 @@ declare const furnitureModalOpenedSchema: z.ZodObject<{
450
450
  unitBedrooms: number;
451
451
  roomName: string;
452
452
  furnitureName: string;
453
- brand_name: string;
453
+ brandName: string;
454
454
  category: string;
455
455
  }, {
456
456
  propertyId: string;
@@ -465,7 +465,7 @@ declare const furnitureModalOpenedSchema: z.ZodObject<{
465
465
  unitBedrooms: number;
466
466
  roomName: string;
467
467
  furnitureName: string;
468
- brand_name: string;
468
+ brandName: string;
469
469
  category: string;
470
470
  }>;
471
471
  declare const furnitureCarouselSchema: z.ZodObject<{
@@ -485,7 +485,7 @@ declare const furnitureCarouselSchema: z.ZodObject<{
485
485
  styleName: z.ZodString;
486
486
  furnitureId: z.ZodString;
487
487
  furnitureName: z.ZodString;
488
- brand_name: z.ZodString;
488
+ brandName: z.ZodString;
489
489
  category: z.ZodString;
490
490
  }, "strip", z.ZodTypeAny, {
491
491
  propertyId: string;
@@ -500,7 +500,7 @@ declare const furnitureCarouselSchema: z.ZodObject<{
500
500
  unitBedrooms: number;
501
501
  roomName: string;
502
502
  furnitureName: string;
503
- brand_name: string;
503
+ brandName: string;
504
504
  category: string;
505
505
  method: "Prev" | "Next";
506
506
  }, {
@@ -516,7 +516,7 @@ declare const furnitureCarouselSchema: z.ZodObject<{
516
516
  unitBedrooms: number;
517
517
  roomName: string;
518
518
  furnitureName: string;
519
- brand_name: string;
519
+ brandName: string;
520
520
  category: string;
521
521
  method: "Prev" | "Next";
522
522
  }>;
@@ -1586,7 +1586,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1586
1586
  unitBedrooms: number;
1587
1587
  roomName: string;
1588
1588
  furnitureName: string;
1589
- brand_name: string;
1589
+ brandName: string;
1590
1590
  category: string;
1591
1591
  }) => void;
1592
1592
  trackFurnitureExternalUrlClicked: (payload: {
@@ -1605,7 +1605,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1605
1605
  favoritedUnit: boolean;
1606
1606
  roomName: string;
1607
1607
  furnitureName: string;
1608
- brand_name: string;
1608
+ brandName: string;
1609
1609
  category: string;
1610
1610
  }) => void;
1611
1611
  trackFurnitureSaved: (payload: {
@@ -1621,7 +1621,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1621
1621
  unitBedrooms: number;
1622
1622
  roomName: string;
1623
1623
  furnitureName: string;
1624
- brand_name: string;
1624
+ brandName: string;
1625
1625
  category: string;
1626
1626
  }) => void;
1627
1627
  trackFurnitureModalOpened: (payload: {
@@ -1637,7 +1637,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1637
1637
  unitBedrooms: number;
1638
1638
  roomName: string;
1639
1639
  furnitureName: string;
1640
- brand_name: string;
1640
+ brandName: string;
1641
1641
  category: string;
1642
1642
  }) => void;
1643
1643
  trackFurnitureCarouselToggled: (payload: {
@@ -1653,7 +1653,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1653
1653
  unitBedrooms: number;
1654
1654
  roomName: string;
1655
1655
  furnitureName: string;
1656
- brand_name: string;
1656
+ brandName: string;
1657
1657
  category: string;
1658
1658
  method: "Prev" | "Next";
1659
1659
  }) => void;
@@ -1835,7 +1835,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1835
1835
  unitSlug: string;
1836
1836
  unitBedrooms: number;
1837
1837
  }) => void;
1838
- trackEmailClick: (data: {
1838
+ trackEmailClickGeneric: (data: {
1839
1839
  event_name: string;
1840
1840
  }) => (payload: {
1841
1841
  propertyId: string;
@@ -1848,6 +1848,28 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn, isDev?: bo
1848
1848
  utmMedium: string;
1849
1849
  utmName: string;
1850
1850
  }) => void;
1851
+ trackEmailClickConfirmation: () => (payload: {
1852
+ propertyId: string;
1853
+ propertySlug: string;
1854
+ unitId: string;
1855
+ propertyName: string;
1856
+ unitName: string;
1857
+ unitSlug: string;
1858
+ utmSource: string;
1859
+ utmMedium: string;
1860
+ utmName: string;
1861
+ }) => void;
1862
+ trackEmailClickNotification: () => (payload: {
1863
+ propertyId: string;
1864
+ propertySlug: string;
1865
+ unitId: string;
1866
+ propertyName: string;
1867
+ unitName: string;
1868
+ unitSlug: string;
1869
+ utmSource: string;
1870
+ utmMedium: string;
1871
+ utmName: string;
1872
+ }) => void;
1851
1873
  };
1852
1874
  export declare function useTrackingEvents(): {
1853
1875
  trackViewAllUnits: (payload: AnalyticsPayload<typeof viewAllUnitsSchema>) => void;
@@ -2071,7 +2093,7 @@ export declare function useTrackingEvents(): {
2071
2093
  unitBedrooms: number;
2072
2094
  roomName: string;
2073
2095
  furnitureName: string;
2074
- brand_name: string;
2096
+ brandName: string;
2075
2097
  category: string;
2076
2098
  }) => void;
2077
2099
  trackFurnitureExternalUrlClicked: (payload: {
@@ -2090,7 +2112,7 @@ export declare function useTrackingEvents(): {
2090
2112
  favoritedUnit: boolean;
2091
2113
  roomName: string;
2092
2114
  furnitureName: string;
2093
- brand_name: string;
2115
+ brandName: string;
2094
2116
  category: string;
2095
2117
  }) => void;
2096
2118
  trackFurnitureSaved: (payload: {
@@ -2106,7 +2128,7 @@ export declare function useTrackingEvents(): {
2106
2128
  unitBedrooms: number;
2107
2129
  roomName: string;
2108
2130
  furnitureName: string;
2109
- brand_name: string;
2131
+ brandName: string;
2110
2132
  category: string;
2111
2133
  }) => void;
2112
2134
  trackFurnitureModalOpened: (payload: {
@@ -2122,7 +2144,7 @@ export declare function useTrackingEvents(): {
2122
2144
  unitBedrooms: number;
2123
2145
  roomName: string;
2124
2146
  furnitureName: string;
2125
- brand_name: string;
2147
+ brandName: string;
2126
2148
  category: string;
2127
2149
  }) => void;
2128
2150
  trackFurnitureCarouselToggled: (payload: {
@@ -2138,7 +2160,7 @@ export declare function useTrackingEvents(): {
2138
2160
  unitBedrooms: number;
2139
2161
  roomName: string;
2140
2162
  furnitureName: string;
2141
- brand_name: string;
2163
+ brandName: string;
2142
2164
  category: string;
2143
2165
  method: "Prev" | "Next";
2144
2166
  }) => void;
@@ -2320,7 +2342,7 @@ export declare function useTrackingEvents(): {
2320
2342
  unitSlug: string;
2321
2343
  unitBedrooms: number;
2322
2344
  }) => void;
2323
- trackEmailClick: (data: {
2345
+ trackEmailClickGeneric: (data: {
2324
2346
  event_name: string;
2325
2347
  }) => (payload: {
2326
2348
  propertyId: string;
@@ -2333,5 +2355,27 @@ export declare function useTrackingEvents(): {
2333
2355
  utmMedium: string;
2334
2356
  utmName: string;
2335
2357
  }) => void;
2358
+ trackEmailClickConfirmation: () => (payload: {
2359
+ propertyId: string;
2360
+ propertySlug: string;
2361
+ unitId: string;
2362
+ propertyName: string;
2363
+ unitName: string;
2364
+ unitSlug: string;
2365
+ utmSource: string;
2366
+ utmMedium: string;
2367
+ utmName: string;
2368
+ }) => void;
2369
+ trackEmailClickNotification: () => (payload: {
2370
+ propertyId: string;
2371
+ propertySlug: string;
2372
+ unitId: string;
2373
+ propertyName: string;
2374
+ unitName: string;
2375
+ unitSlug: string;
2376
+ utmSource: string;
2377
+ utmMedium: string;
2378
+ utmName: string;
2379
+ }) => void;
2336
2380
  };
2337
2381
  export {};