@superbright/indexeddb-orm 1.0.40 → 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.
- package/README.md +4 -15
- package/dist/base/furniture.d.ts +2 -2
- package/dist/features/analytics/analytics.cjs +1 -1
- package/dist/features/analytics/analytics.cjs.map +1 -1
- package/dist/features/analytics/analytics.d.ts +25 -25
- package/dist/features/analytics/analytics.mjs +181 -228
- package/dist/features/analytics/analytics.mjs.map +1 -1
- package/package.json +18 -20
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Shared state and analytics layer for InResi apps. Built on Dexie (IndexedDB), Zustand, and Zod.
|
|
4
4
|
|
|
5
|
+
Docs: [https://superbright.github.io/inResi-indexedDB-ORM/](https://superbright.github.io/inResi-indexedDB-ORM/)
|
|
6
|
+
|
|
5
7
|
## Install
|
|
6
8
|
|
|
7
9
|
```bash
|
|
@@ -70,22 +72,9 @@ Events are validated via Zod before dispatch. Invalid payloads are **silently dr
|
|
|
70
72
|
|
|
71
73
|
### Key transform behaviour
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- **Before validation** — keys are converted to camelCase (`brand_name` → `brandName`), so schemas must use camelCase field names.
|
|
76
|
-
- **Before dispatch** — keys are converted back to snake_case for Mixpanel/PostHog.
|
|
77
|
-
|
|
78
|
-
### `skipKeyTransform`
|
|
79
|
-
|
|
80
|
-
Pass `{ skipKeyTransform: true }` to `createStrictTracker` to opt out of both transforms. Use this when the caller already provides the payload in the exact shape required by the schema and the analytics destination (i.e. neither normalisation step should run).
|
|
81
|
-
|
|
82
|
-
```ts
|
|
83
|
-
createStrictTracker("My Event", mySchema, { skipKeyTransform: true })
|
|
84
|
-
```
|
|
75
|
+
Always pass `snake_case` to tracking helpers. Internally, payloads are normalised to camelCase for Zod validation, then converted to snake_case before dispatch — so both snake_case and camelCase inputs are accepted, but snake_case is the convention.
|
|
85
76
|
|
|
86
|
-
|
|
87
|
-
- The payload is validated as-is (no camelCase conversion).
|
|
88
|
-
- The payload is dispatched as-is (no snake_case conversion).
|
|
77
|
+
> **Deprecated:** `skipKeyTransform` has been removed. It was a no-op because `convertKeysToSnakeCase` is idempotent for snake_case inputs.
|
|
89
78
|
|
|
90
79
|
|
|
91
80
|
## Development
|
package/dist/base/furniture.d.ts
CHANGED
|
@@ -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"),v=require("../../utils/collections.cjs"),q=require("./AnalyticsProvider.cjs"),e=require("../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),K=["location","budget","size","other"],f=["cost_low_to_high","cost_high_to_low","newest","relevance"],N=["Skip","Continue","Back"],c=e.object({propertyId:e.string().min(1,"propertyId is required"),propertySlug:e.string().min(1,"propertySlug is required"),propertyName:e.string().min(1,"propertyName is required")}),m=c.extend({propertyName:e.string().min(1,"propertyName is required")}),w=m.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),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(N),questionEnum:e.string().optional()}),F=p.extend({selectedAnswersEnumArray:e.any().transform(s=>v.normalizeToStringArray(s)).refine(s=>Array.isArray(s),{message:"selectedAnswersEnumArray must resolve to an array"})});c.extend({unitId:e.string().min(1,"unitId is required"),unitName:e.string().min(1,"unitName is required"),unitSlug:e.string().min(1,"unitSlug is required")});const a=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")}),k=a.extend({buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required"),unitBedrooms:e.number().int().nonnegative(),favoritedUnit:e.boolean()}),l=a.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=a.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=a.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")}),_=a.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=a.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=a.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=a.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=a.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=a.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()}),T=a.extend({fullUrl:e.string().min(1,"fullUrl is required"),datestamp:e.string().min(1,"datestamp is required")}),D=T.extend({pageName:e.string().min(1,"pageName is required")}),R=T.extend({roomName:e.string().min(1,"roomName is required")}),L=a.extend({unitBedrooms:e.number().int().nonnegative()}),z=a.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=a.extend({toastCopy:e.string().min(1,"toastCopy is required")}),j=a.extend({unitBedrooms:e.number().int().nonnegative(),styleId:e.string().min(1,"styleId is required"),styleName:e.string().min(1,"styleName is required")}),W=m,G=m.extend({name:e.string().min(1,"name is required")}),H=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:c,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),fieldName:e.string().min(1,"fieldName is required")})}),J=e.object({name:e.string().min(1,"name is required"),properties:e.object({propertyContextSchema:c,buttonName:e.string().min(1,"buttonName is required"),formName:e.string().min(1,"formName is required"),pageName:e.string().min(1,"pageName is required"),bedrooms:e.array(e.union([e.string(),e.number()])).optional(),price:e.number().nullable().optional()})}),$=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()}),X=a.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),h=e.any().transform(s=>v.normalizeToStringArray(s)).refine(s=>Array.isArray(s),{message:"Selection must resolve to an array"}),Y=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:h,filterName:e.string().optional()}),S=m.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:h}),b=c.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(f)}),Z=m.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(f),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),ee=c.extend({fullQuestionnaireSchemaJson:e.unknown().optional(),resultsJson:e.object({type:e.string().optional(),total:e.number().int().nonnegative().optional(),units:e.array(e.object({unitId:e.string().min(1,"unitId is required"),unitName:e.string().optional()})).optional()}).optional()}),ne=a.extend({favoritedUnit:e.boolean(),unitIndex:e.number().int().nonnegative()}),re=a.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 C(){const s=q.useAnalytics();return(o,u)=>{const n=u==null?u:d.convertKeysToSnakeCase(u);s.track(o,n)}}const ie=(s,o,u,n)=>t=>{const i=n!=null&&n.skipKeyTransform?t:d.convertKeysToCamelCase(t),r=o.safeParse(i);if(!r.success){n!=null&&n.isDev&&console.warn(`[Analytics] Invalid payload for "${s}":`,r.error.flatten());return}u(s,t,{skipKeyTransform:n==null?void 0:n.skipKeyTransform})};function x(s,o=!1){const u=(t,i,r)=>{const U=r!=null&&r.skipKeyTransform?i:d.convertKeysToSnakeCase(i);s(t,U)},n=(t,i,r)=>ie(t,i,u,{...r,isDev:o});return{trackViewAllUnits:t=>{const i=d.convertKeysToCamelCase(t),r=w.safeParse({unitCountDate:new Date().toISOString(),...i});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "View All Units":',r.error.flatten());return}u("View All Units",r.data)},trackQuestionnaireSkip:t=>{const i=d.convertKeysToCamelCase(t),r=p.safeParse({...i,interactedElement:"Skip"});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Skip):',r.error.flatten());return}u("Questionnaire Navigated",r.data)},trackQuestionnaireContinue:t=>{const i=d.convertKeysToCamelCase(t),r=F.safeParse({...i,interactedElement:"Continue"});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Continue):',r.error.flatten());return}u("Questionnaire Navigated",r.data)},trackQuestionnaireBack:t=>{const i=d.convertKeysToCamelCase(t),r=p.safeParse({...i,interactedElement:"Back"});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "Questionnaire Navigated" (Back):',r.error.flatten());return}u("Questionnaire Navigated",r.data)},trackClickUnit:n("Unit Card Clicked",ne,{skipKeyTransform:!0}),trackHoverUnit:n("Unit Hovered",X,{skipKeyTransform:!0}),trackLoadMore:t=>{const i=d.convertKeysToCamelCase(t),r=E.safeParse({unitCountDate:new Date().toISOString(),...i});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "More Units Loaded":',r.error.flatten());return}u("More Units Loaded",r.data)},trackFilterOpened:n("Filter Opened",Y),trackFilterCanceled:n("Filter Cleared",S),trackFilterApplied:n("Filter Applied",S),trackOpenSort:t=>{const i=d.convertKeysToCamelCase(t),r=Z.safeParse({unitCountDate:new Date().toISOString(),...i});if(!r.success){o&&console.warn('[Analytics] Invalid payload for "Sort Opened":',r.error.flatten());return}u("Sort Opened",r.data)},trackSelectSort:n("Sort Applied",b),trackCancelSort:n("Sort Canceled",b),trackClickUnitFavorites:n("Unit Favorited",re),trackUnitUnfavorited:n("Unit Unfavorited",te),trackQuestionnaireResult:n("Questionnaire Submitted",ee),trackScheduleTourFormInteracted:n("Schedule Tour Form Interacted",g,{skipKeyTransform:!0}),trackScheduleTourFormSubmitted:n("Schedule Tour Form Submitted",g,{skipKeyTransform:!0}),trackScheduleTourUrlClicked:n("Schedule Tour URL Clicked",g,{skipKeyTransform:!0}),trackGetInTouchFormOpened:n("Form Opened",k,{skipKeyTransform:!0}),trackGetInTouchFormSubmitted:n("Form Submitted",k,{skipKeyTransform:!0}),trackStyleDrawerOpened:n("Style Menu Opened",l,{skipKeyTransform:!0}),trackStyleDrawerChanged:n("Style Changed",l,{skipKeyTransform:!0}),trackOpeningStyleImpression:n("Opening Style Modal Impression",l,{skipKeyTransform:!0}),trackOpeningStyleSlected:n("Opening Style Selected",l,{skipKeyTransform:!0}),trackFurnitureViewed:n("Furniture Viewed",P,{skipKeyTransform:!0}),trackFurnitureExternalUrlClicked:n("Purchase Link Clicked",A,{skipKeyTransform:!0}),trackFurnitureSaved:n("Furniture Saved",_,{skipKeyTransform:!0}),trackFurnitureModalOpened:n("Furniture Modal Opened",O,{skipKeyTransform:!0}),trackFurnitureCarouselToggled:n("Furniture Carousel Toggled",V,{skipKeyTransform:!0}),trackRoomEntered:n("Room Entered",I,{skipKeyTransform:!0}),trackRoomLeft:n("Room Left",M,{skipKeyTransform:!0}),trackVideoStarted:n("Video Started",B,{skipKeyTransform:!0}),trackEmailRedirect:n("Email Tracked",Q,{skipKeyTransform:!0}),trackToastImpression:n("Toast Impression",y,{skipKeyTransform:!0}),trackToastClicked:n("Toast Clicked",y,{skipKeyTransform:!0}),trackToastClosed:n("Toast Closed",y,{skipKeyTransform:!0}),trackContentModalOpened:n("Content Modal Opened",j,{skipKeyTransform:!0}),trackBuildingDetailsModalOpened:n("Building Details Modal",W),trackSubscriptionImpression:n("Subscription Impression",G),trackSubscriptionInteracted:n("Subscription Interacted",H),trackSubscriptionSubmitted:n("Subscription Submitted",J),trackSubscriptionRemoved:n("Subscription Removed",$),trackWebPageViewed:n("Page Viewed",D,{skipKeyTransform:!0}),trackWebPageRoomViewed:n("Page Viewed",R,{skipKeyTransform:!0}),trackEmbedPageViewed:n("Embed Impression",L,{skipKeyTransform:!0}),trackEmailClick:t=>n(`Email Interaction - ${t.event_name}`,z,{skipKeyTransform:!0})}}function ae(){const{isDev:s}=q.useAnalytics(),o=C();return x(o,s)}exports.QuestionEnumValues=K;exports.QuestionnaireInteractionValues=N;exports.SortEnumValues=f;exports.buildTrackingEvents=x;exports.useTrackEvent=C;exports.useTrackingEvents=ae;
|
|
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: (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => void,\n options?: {\n skipKeyTransform?: boolean;\n isDev?: boolean;\n },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const payloadToValidate = options?.skipKeyTransform\n ? (payload as z.input<Schema>)\n : (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(\n `[Analytics] Invalid payload for \"${eventName}\":`,\n result.error.flatten(),\n );\n }\n return;\n }\n dispatch(eventName, payload, {\n skipKeyTransform: options?.skipKeyTransform,\n });\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn, isDev = false) {\n const dispatch = (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => {\n const finalPayload = options?.skipKeyTransform\n ? (payload as Record<string, any>)\n : (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 options?: { skipKeyTransform?: boolean },\n ) =>\n createStrictTrackerInternal(eventName, schema, dispatch, { ...options, 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 skipKeyTransform: true,\n }),\n trackHoverUnit: createStrictTracker(\"Unit Hovered\", hoverUnitSchema, {\n skipKeyTransform: true,\n }),\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 { skipKeyTransform: true },\n ),\n trackScheduleTourFormSubmitted: createStrictTracker(\n \"Schedule Tour Form Submitted\",\n scheduleTourFormSchema,\n { skipKeyTransform: true },\n ),\n trackScheduleTourUrlClicked: createStrictTracker(\n \"Schedule Tour URL Clicked\",\n scheduleTourFormSchema,\n { skipKeyTransform: true },\n ),\n trackGetInTouchFormOpened: createStrictTracker(\n \"Form Opened\",\n getInTouchFormSchema,\n { skipKeyTransform: true },\n ),\n trackGetInTouchFormSubmitted: createStrictTracker(\n \"Form Submitted\",\n getInTouchFormSchema,\n { skipKeyTransform: true },\n ),\n trackStyleDrawerOpened: createStrictTracker(\n \"Style Menu Opened\",\n styleDrawerSchema,\n { skipKeyTransform: true },\n ),\n trackStyleDrawerChanged: createStrictTracker(\n \"Style Changed\",\n styleDrawerSchema,\n { skipKeyTransform: true },\n ),\n trackOpeningStyleImpression: createStrictTracker(\n \"Opening Style Modal Impression\",\n styleDrawerSchema,\n { skipKeyTransform: true },\n ),\n trackOpeningStyleSlected: createStrictTracker(\n \"Opening Style Selected\",\n styleDrawerSchema,\n { skipKeyTransform: true },\n ),\n trackFurnitureViewed: createStrictTracker(\n \"Furniture Viewed\",\n furnitureInteractionSchema,\n { skipKeyTransform: true },\n ),\n // for debugging:\n\n // trackFurnitureViewed: (payload: AnalyticsPayload<typeof furnitureInteractionSchema>) => {\n // // eslint-disable-next-line no-console\n // console.log(\"[trackFurnitureViewed] received:\", payload);\n // // eslint-disable-next-line no-console\n // console.log(\"[trackFurnitureViewed] after camelCase transform:\", convertKeysToCamelCase(payload));\n // createStrictTracker(\n // \"Furniture Viewed\",\n // furnitureInteractionSchema,\n // { skipKeyTransform: true },\n // )(payload);\n // },\n trackFurnitureExternalUrlClicked: createStrictTracker(\n \"Purchase Link Clicked\",\n furnitureExternalUrlSchema,\n { skipKeyTransform: true },\n ),\n trackFurnitureSaved: createStrictTracker(\n \"Furniture Saved\",\n furnitureSavedSchema,\n { skipKeyTransform: true },\n ),\n trackFurnitureModalOpened: createStrictTracker(\n \"Furniture Modal Opened\",\n furnitureModalOpenedSchema,\n { skipKeyTransform: true },\n ),\n trackFurnitureCarouselToggled: createStrictTracker(\n \"Furniture Carousel Toggled\",\n furnitureCarouselSchema,\n { skipKeyTransform: true },\n ),\n trackRoomEntered: createStrictTracker(\n \"Room Entered\",\n roomEnteredSchema,\n { skipKeyTransform: true },\n ),\n trackRoomLeft: createStrictTracker(\n \"Room Left\",\n roomLeftSchema,\n { skipKeyTransform: true },\n ),\n trackVideoStarted: createStrictTracker(\n \"Video Started\",\n videoStartedSchema,\n { skipKeyTransform: true },\n ),\n trackEmailRedirect: createStrictTracker(\n \"Email Tracked\",\n emailTrackedSchema,\n { skipKeyTransform: true },\n ),\n trackToastImpression: createStrictTracker(\n \"Toast Impression\",\n toastSchema,\n { skipKeyTransform: true },\n ),\n trackToastClicked: createStrictTracker(\n \"Toast Clicked\",\n toastSchema,\n { skipKeyTransform: true },\n ),\n trackToastClosed: createStrictTracker(\n \"Toast Closed\",\n toastSchema,\n { skipKeyTransform: true },\n ),\n trackContentModalOpened: createStrictTracker(\n \"Content Modal Opened\",\n contentModalOpenedSchema,\n { skipKeyTransform: true },\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 { skipKeyTransform: true },\n ),\n trackWebPageRoomViewed: createStrictTracker(\n \"Page Viewed\",\n webPageRoomViewedSchema,\n { skipKeyTransform: true },\n ),\n trackEmbedPageViewed: createStrictTracker(\n \"Embed Impression\",\n embedPageViewedSchema,\n { skipKeyTransform: true },\n ),\n trackEmailClick: (data: { event_name: string }) => createStrictTracker(\n `Email Interaction - ${data.event_name}`,\n embedPageViewSchemaWithUTM,\n { skipKeyTransform: true },\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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2141
|
+
brandName: string;
|
|
2142
2142
|
category: string;
|
|
2143
2143
|
method: "Prev" | "Next";
|
|
2144
2144
|
}) => void;
|