@superbright/indexeddb-orm 1.0.41 → 1.0.42

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"),N=require("../../utils/collections.cjs"),q=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=>N.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"]),brandName:e.string().min(1,"brandName 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(),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"),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({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")}),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"])}),B=I.extend({timeInRoom:e.number().int().nonnegative()}),Q=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")}),_=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=>N.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=q.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",O),trackFurnitureModalOpened:n("Furniture Modal Opened",V),trackFurnitureCarouselToggled:n("Furniture Carousel Toggled",M),trackRoomEntered:n("Room Entered",I),trackRoomLeft:n("Room Left",B),trackVideoStarted:n("Video Started",Q),trackEmailRedirect:n("Email Tracked",_),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}=q.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;
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 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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"}
@@ -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;
@@ -2071,7 +2071,7 @@ export declare function useTrackingEvents(): {
2071
2071
  unitBedrooms: number;
2072
2072
  roomName: string;
2073
2073
  furnitureName: string;
2074
- brand_name: string;
2074
+ brandName: string;
2075
2075
  category: string;
2076
2076
  }) => void;
2077
2077
  trackFurnitureExternalUrlClicked: (payload: {
@@ -2090,7 +2090,7 @@ export declare function useTrackingEvents(): {
2090
2090
  favoritedUnit: boolean;
2091
2091
  roomName: string;
2092
2092
  furnitureName: string;
2093
- brand_name: string;
2093
+ brandName: string;
2094
2094
  category: string;
2095
2095
  }) => void;
2096
2096
  trackFurnitureSaved: (payload: {
@@ -2106,7 +2106,7 @@ export declare function useTrackingEvents(): {
2106
2106
  unitBedrooms: number;
2107
2107
  roomName: string;
2108
2108
  furnitureName: string;
2109
- brand_name: string;
2109
+ brandName: string;
2110
2110
  category: string;
2111
2111
  }) => void;
2112
2112
  trackFurnitureModalOpened: (payload: {
@@ -2122,7 +2122,7 @@ export declare function useTrackingEvents(): {
2122
2122
  unitBedrooms: number;
2123
2123
  roomName: string;
2124
2124
  furnitureName: string;
2125
- brand_name: string;
2125
+ brandName: string;
2126
2126
  category: string;
2127
2127
  }) => void;
2128
2128
  trackFurnitureCarouselToggled: (payload: {
@@ -2138,7 +2138,7 @@ export declare function useTrackingEvents(): {
2138
2138
  unitBedrooms: number;
2139
2139
  roomName: string;
2140
2140
  furnitureName: string;
2141
- brand_name: string;
2141
+ brandName: string;
2142
2142
  category: string;
2143
2143
  method: "Prev" | "Next";
2144
2144
  }) => void;
@@ -1,13 +1,13 @@
1
1
  import { convertKeysToSnakeCase as b, convertKeysToCamelCase as l } from "../../utils/casing.mjs";
2
2
  import { normalizeToStringArray as x } from "../../utils/collections.mjs";
3
3
  import { useAnalytics as C } from "./AnalyticsProvider.mjs";
4
- import { object as c, string as e, number as t, enum as p, any as U, unknown as T, boolean as y, array as g, union as _ } from "../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
4
+ import { object as c, string as e, number as t, enum as p, any as U, unknown as T, boolean as y, array as g, union as A } from "../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
5
5
  const fe = ["location", "budget", "size", "other"], w = [
6
6
  "cost_low_to_high",
7
7
  "cost_high_to_low",
8
8
  "newest",
9
9
  "relevance"
10
- ], A = [
10
+ ], O = [
11
11
  "Skip",
12
12
  "Continue",
13
13
  "Back"
@@ -17,15 +17,15 @@ const fe = ["location", "budget", "size", "other"], w = [
17
17
  propertyName: e().min(1, "propertyName is required")
18
18
  }), d = S.extend({
19
19
  propertyName: e().min(1, "propertyName is required")
20
- }), O = d.extend({
20
+ }), V = d.extend({
21
21
  totalUnitsAvailable: t().int().nonnegative(),
22
22
  resultsUnitCount: t().int().nonnegative(),
23
23
  unitCountDate: e().optional()
24
- }), V = d.extend({
24
+ }), M = d.extend({
25
25
  totalUnitsAvailable: t().int().nonnegative(),
26
26
  resultsUnitCount: t().int().nonnegative(),
27
27
  unitCountDate: e().optional()
28
- }), q = d.extend({
28
+ }), N = d.extend({
29
29
  totalUnitsAvailable: t().int().nonnegative(),
30
30
  resultsUnitCount: t().int().nonnegative(),
31
31
  unitCountDate: e().optional(),
@@ -33,9 +33,9 @@ const fe = ["location", "budget", "size", "other"], w = [
33
33
  }), v = d.extend({
34
34
  funnelStep: t().int().nonnegative(),
35
35
  profileQuestion: e().min(1, "profileQuestion is required"),
36
- interactedElement: p(A),
36
+ interactedElement: p(O),
37
37
  questionEnum: e().optional()
38
- }), M = v.extend({
38
+ }), B = v.extend({
39
39
  selectedAnswersEnumArray: U().transform((s) => x(s)).refine((s) => Array.isArray(s), {
40
40
  message: "selectedAnswersEnumArray must resolve to an array"
41
41
  })
@@ -62,7 +62,7 @@ const a = d.extend({
62
62
  styleId: e().min(1, "styleId is required"),
63
63
  styleName: e().min(1, "styleName is required"),
64
64
  favoritedUnit: y()
65
- }), B = a.extend({
65
+ }), _ = a.extend({
66
66
  roomName: e().min(1, "roomName is required"),
67
67
  unitBedrooms: t().int().nonnegative(),
68
68
  styleId: e().min(1, "styleId is required"),
@@ -70,7 +70,7 @@ const a = d.extend({
70
70
  furnitureId: e().min(1, "furnitureId is required"),
71
71
  furnitureName: e().min(1, "furnitureName is required"),
72
72
  type: p(["click", "hover_on", "hover_off"]),
73
- brand_name: e().min(1, "brand_name is required"),
73
+ brandName: e().min(1, "brandName is required"),
74
74
  category: e().min(1, "category is required")
75
75
  }), Q = a.extend({
76
76
  roomName: e().min(1, "roomName is required"),
@@ -82,7 +82,7 @@ const a = d.extend({
82
82
  link: e().min(1, "link is required"),
83
83
  type: e().min(1, "type is required"),
84
84
  favoritedUnit: y(),
85
- brand_name: e().min(1, "brand_name is required"),
85
+ brandName: e().min(1, "brandName is required"),
86
86
  category: e().min(1, "category is required")
87
87
  }), D = a.extend({
88
88
  roomName: e().min(1, "roomName is required"),
@@ -91,7 +91,7 @@ const a = d.extend({
91
91
  styleName: e().min(1, "styleName is required"),
92
92
  furnitureId: e().min(1, "furnitureId is required"),
93
93
  furnitureName: e().min(1, "furnitureName is required"),
94
- brand_name: e().min(1, "brand_name is required"),
94
+ brandName: e().min(1, "brandName is required"),
95
95
  category: e().min(1, "category is required")
96
96
  }), R = a.extend({
97
97
  roomName: e().min(1, "roomName is required"),
@@ -100,7 +100,7 @@ const a = d.extend({
100
100
  styleName: e().min(1, "styleName is required"),
101
101
  furnitureId: e().min(1, "furnitureId is required"),
102
102
  furnitureName: e().min(1, "furnitureName is required"),
103
- brand_name: e().min(1, "brand_name is required"),
103
+ brandName: e().min(1, "brandName is required"),
104
104
  category: e().min(1, "category is required")
105
105
  }), L = a.extend({
106
106
  method: p(["Prev", "Next"]),
@@ -110,7 +110,7 @@ const a = d.extend({
110
110
  styleName: e().min(1, "styleName is required"),
111
111
  furnitureId: e().min(1, "furnitureId is required"),
112
112
  furnitureName: e().min(1, "furnitureName is required"),
113
- brand_name: e().min(1, "brand_name is required"),
113
+ brandName: e().min(1, "brandName is required"),
114
114
  category: e().min(1, "category is required")
115
115
  }), F = a.extend({
116
116
  roomName: e().min(1, "roomName is required"),
@@ -151,7 +151,7 @@ const a = d.extend({
151
151
  utmSource: e().min(1, "utm_source is required"),
152
152
  utmMedium: e().min(1, "utm_medium is required"),
153
153
  utmName: e().min(1, "utm_name is required")
154
- }), N = a.extend({
154
+ }), q = a.extend({
155
155
  toastCopy: e().min(1, "toastCopy is required")
156
156
  }), $ = a.extend({
157
157
  unitBedrooms: t().int().nonnegative(),
@@ -175,7 +175,7 @@ const a = d.extend({
175
175
  buttonName: e().min(1, "buttonName is required"),
176
176
  formName: e().min(1, "formName is required"),
177
177
  pageName: e().min(1, "pageName is required"),
178
- bedrooms: g(_([e(), t()])).optional(),
178
+ bedrooms: g(A([e(), t()])).optional(),
179
179
  price: t().nullable().optional()
180
180
  })
181
181
  }), ne = d.extend({
@@ -256,7 +256,7 @@ function le(s, u = !1) {
256
256
  trackViewAllUnits: (r) => {
257
257
  const o = l(
258
258
  r
259
- ), i = O.safeParse({
259
+ ), i = V.safeParse({
260
260
  unitCountDate: (/* @__PURE__ */ new Date()).toISOString(),
261
261
  ...o
262
262
  });
@@ -282,7 +282,7 @@ function le(s, u = !1) {
282
282
  trackQuestionnaireContinue: (r) => {
283
283
  const o = l(
284
284
  r
285
- ), i = M.safeParse({
285
+ ), i = B.safeParse({
286
286
  ...o,
287
287
  interactedElement: "Continue"
288
288
  });
@@ -310,7 +310,7 @@ function le(s, u = !1) {
310
310
  trackLoadMore: (r) => {
311
311
  const o = l(
312
312
  r
313
- ), i = V.safeParse({
313
+ ), i = M.safeParse({
314
314
  unitCountDate: (/* @__PURE__ */ new Date()).toISOString(),
315
315
  ...o
316
316
  });
@@ -358,15 +358,15 @@ function le(s, u = !1) {
358
358
  ),
359
359
  trackScheduleTourFormInteracted: n(
360
360
  "Schedule Tour Form Interacted",
361
- q
361
+ N
362
362
  ),
363
363
  trackScheduleTourFormSubmitted: n(
364
364
  "Schedule Tour Form Submitted",
365
- q
365
+ N
366
366
  ),
367
367
  trackScheduleTourUrlClicked: n(
368
368
  "Schedule Tour URL Clicked",
369
- q
369
+ N
370
370
  ),
371
371
  trackGetInTouchFormOpened: n(
372
372
  "Form Opened",
@@ -394,7 +394,7 @@ function le(s, u = !1) {
394
394
  ),
395
395
  trackFurnitureViewed: n(
396
396
  "Furniture Viewed",
397
- B
397
+ _
398
398
  ),
399
399
  trackFurnitureExternalUrlClicked: n(
400
400
  "Purchase Link Clicked",
@@ -430,15 +430,15 @@ function le(s, u = !1) {
430
430
  ),
431
431
  trackToastImpression: n(
432
432
  "Toast Impression",
433
- N
433
+ q
434
434
  ),
435
435
  trackToastClicked: n(
436
436
  "Toast Clicked",
437
- N
437
+ q
438
438
  ),
439
439
  trackToastClosed: n(
440
440
  "Toast Closed",
441
- N
441
+ q
442
442
  ),
443
443
  trackContentModalOpened: n(
444
444
  "Content Modal Opened",
@@ -488,7 +488,7 @@ function ge() {
488
488
  }
489
489
  export {
490
490
  fe as QuestionEnumValues,
491
- A as QuestionnaireInteractionValues,
491
+ O as QuestionnaireInteractionValues,
492
492
  w as SortEnumValues,
493
493
  le as buildTrackingEvents,
494
494
  me as useTrackEvent,
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.mjs","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.mjs","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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superbright/indexeddb-orm",
3
- "version": "1.0.41",
3
+ "version": "1.0.42",
4
4
  "description": "Vite + TypeScript IndexedDB ORM.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -28,24 +28,6 @@
28
28
  "files": [
29
29
  "dist"
30
30
  ],
31
- "scripts": {
32
- "clean": "rimraf dist",
33
- "build": "pnpm clean && vite build && tsc -p tsconfig.build.json",
34
- "prepare": "pnpm build",
35
- "start": "vite --clearScreen false",
36
- "dev": "concurrently -k -n PLAY,BUILD \"pnpm:start\" \"pnpm:watch\"",
37
- "watch": "concurrently -k -n TYPES,BUNDLE \"pnpm:watch:types\" \"pnpm:watch:bundle\"",
38
- "watch:types": "tsc -w -p tsconfig.build.json",
39
- "watch:bundle": "vite build --watch",
40
- "test": "vitest run",
41
- "test:watch": "vitest",
42
- "format": "pnpm format:write",
43
- "format:write": "prettier --write .",
44
- "format:check": "prettier --check .",
45
- "docs:api": "typedoc --plugin typedoc-plugin-markdown --entryPoints src/docs/property.ts src/docs/unit.ts src/docs/filters.ts --tsconfig tsconfig.json --out autodocs/docs/api/schema --readme none"
46
- ,
47
- "analyze": "pnpm clean && ANALYZE=1 vite build && tsc -p tsconfig.build.json"
48
- },
49
31
  "dependencies": {
50
32
  "dexie": "^4.0.8",
51
33
  "zod": "^3.23.8"
@@ -86,5 +68,21 @@
86
68
  "posthog-js": {
87
69
  "optional": true
88
70
  }
71
+ },
72
+ "scripts": {
73
+ "clean": "rimraf dist",
74
+ "build": "pnpm clean && vite build && tsc -p tsconfig.build.json",
75
+ "start": "vite --clearScreen false",
76
+ "dev": "concurrently -k -n PLAY,BUILD \"pnpm:start\" \"pnpm:watch\"",
77
+ "watch": "concurrently -k -n TYPES,BUNDLE \"pnpm:watch:types\" \"pnpm:watch:bundle\"",
78
+ "watch:types": "tsc -w -p tsconfig.build.json",
79
+ "watch:bundle": "vite build --watch",
80
+ "test": "vitest run",
81
+ "test:watch": "vitest",
82
+ "format": "pnpm format:write",
83
+ "format:write": "prettier --write .",
84
+ "format:check": "prettier --check .",
85
+ "docs:api": "typedoc --plugin typedoc-plugin-markdown --entryPoints src/docs/property.ts src/docs/unit.ts src/docs/filters.ts --tsconfig tsconfig.json --out autodocs/docs/api/schema --readme none",
86
+ "analyze": "pnpm clean && ANALYZE=1 vite build && tsc -p tsconfig.build.json"
89
87
  }
90
- }
88
+ }