posthog-js 1.347.2 → 1.349.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/array.full.es5.js +1 -1
  2. package/dist/array.full.js +1 -1
  3. package/dist/array.full.no-external.js +1 -1
  4. package/dist/array.js +1 -1
  5. package/dist/array.no-external.js +1 -1
  6. package/dist/conversations.js +1 -1
  7. package/dist/conversations.js.map +1 -1
  8. package/dist/customizations.full.js +1 -1
  9. package/dist/lazy-recorder.js +1 -1
  10. package/dist/main.js +1 -1
  11. package/dist/main.js.map +1 -1
  12. package/dist/module.d.ts +56 -2
  13. package/dist/module.full.d.ts +56 -2
  14. package/dist/module.full.js +1 -1
  15. package/dist/module.full.js.map +1 -1
  16. package/dist/module.full.no-external.d.ts +56 -2
  17. package/dist/module.full.no-external.js +1 -1
  18. package/dist/module.full.no-external.js.map +1 -1
  19. package/dist/module.js +1 -1
  20. package/dist/module.js.map +1 -1
  21. package/dist/module.no-external.d.ts +56 -2
  22. package/dist/module.no-external.js +1 -1
  23. package/dist/module.no-external.js.map +1 -1
  24. package/dist/posthog-recorder.js +1 -1
  25. package/dist/product-tours-preview.d.ts +14 -0
  26. package/dist/product-tours-preview.js +1 -1
  27. package/dist/product-tours-preview.js.map +1 -1
  28. package/dist/product-tours.js +1 -1
  29. package/dist/product-tours.js.map +1 -1
  30. package/dist/src/extensions/conversations/external/components/ConversationsWidget.d.ts +43 -2
  31. package/dist/src/extensions/conversations/external/components/TicketListItem.d.ts +13 -0
  32. package/dist/src/extensions/conversations/external/components/TicketListView.d.ts +15 -0
  33. package/dist/src/extensions/conversations/external/components/styles.d.ts +184 -0
  34. package/dist/src/extensions/conversations/external/components/utils.d.ts +8 -0
  35. package/dist/src/extensions/conversations/external/index.d.ts +39 -1
  36. package/dist/src/extensions/product-tours/product-tours-utils.d.ts +1 -0
  37. package/dist/src/extensions/product-tours/product-tours.d.ts +3 -0
  38. package/dist/src/posthog-product-tours-types.d.ts +54 -0
  39. package/dist/surveys-preview.d.ts +14 -0
  40. package/lib/package.json +1 -1
  41. package/lib/src/extensions/conversations/external/components/ConversationsWidget.d.ts +43 -2
  42. package/lib/src/extensions/conversations/external/components/ConversationsWidget.js +96 -28
  43. package/lib/src/extensions/conversations/external/components/ConversationsWidget.js.map +1 -1
  44. package/lib/src/extensions/conversations/external/components/TicketListItem.d.ts +13 -0
  45. package/lib/src/extensions/conversations/external/components/TicketListItem.js +47 -0
  46. package/lib/src/extensions/conversations/external/components/TicketListItem.js.map +1 -0
  47. package/lib/src/extensions/conversations/external/components/TicketListView.d.ts +15 -0
  48. package/lib/src/extensions/conversations/external/components/TicketListView.js +75 -0
  49. package/lib/src/extensions/conversations/external/components/TicketListView.js.map +1 -0
  50. package/lib/src/extensions/conversations/external/components/styles.d.ts +184 -0
  51. package/lib/src/extensions/conversations/external/components/styles.js +189 -0
  52. package/lib/src/extensions/conversations/external/components/styles.js.map +1 -1
  53. package/lib/src/extensions/conversations/external/components/utils.d.ts +8 -0
  54. package/lib/src/extensions/conversations/external/components/utils.js +49 -0
  55. package/lib/src/extensions/conversations/external/components/utils.js.map +1 -0
  56. package/lib/src/extensions/conversations/external/index.d.ts +39 -1
  57. package/lib/src/extensions/conversations/external/index.js +253 -31
  58. package/lib/src/extensions/conversations/external/index.js.map +1 -1
  59. package/lib/src/extensions/product-tours/components/ProductTourSurveyStepInner.js +1 -1
  60. package/lib/src/extensions/product-tours/components/ProductTourSurveyStepInner.js.map +1 -1
  61. package/lib/src/extensions/product-tours/product-tours-utils.d.ts +1 -0
  62. package/lib/src/extensions/product-tours/product-tours-utils.js +34 -0
  63. package/lib/src/extensions/product-tours/product-tours-utils.js.map +1 -1
  64. package/lib/src/extensions/product-tours/product-tours.d.ts +3 -0
  65. package/lib/src/extensions/product-tours/product-tours.js +104 -75
  66. package/lib/src/extensions/product-tours/product-tours.js.map +1 -1
  67. package/lib/src/posthog-product-tours-types.d.ts +54 -0
  68. package/lib/src/posthog-product-tours-types.js +43 -1
  69. package/lib/src/posthog-product-tours-types.js.map +1 -1
  70. package/lib/src/utils/product-tour-event-receiver.js +2 -1
  71. package/lib/src/utils/product-tour-event-receiver.js.map +1 -1
  72. package/lib/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +3 -3
  74. package/react/dist/esm/index.js +25 -1
  75. package/react/dist/esm/index.js.map +1 -1
  76. package/react/dist/types/index.d.ts +4 -2
  77. package/react/dist/umd/index.js +25 -0
  78. package/react/dist/umd/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"product-tours.js","sourceRoot":"","sources":["../../../../src/extensions/product-tours/product-tours.tsx"],"names":[],"mappings":"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","sourcesContent":["import { render } from 'preact'\nimport { PostHog } from '../../posthog-core'\nimport {\n ProductTour,\n ProductTourBannerConfig,\n ProductTourCallback,\n ProductTourDismissReason,\n ProductTourRenderReason,\n ProductTourStepButton,\n ShowTourOptions,\n} from '../../posthog-product-tours-types'\nimport { SurveyEventName, SurveyEventProperties } from '../../posthog-surveys-types'\nimport {\n addProductTourCSSVariablesToElement,\n findStepElement,\n getElementMetadata,\n getProductTourStylesheet,\n getStepImageUrls,\n hasElementTarget,\n normalizeUrl,\n} from './product-tours-utils'\nimport { ProductTourTooltip } from './components/ProductTourTooltip'\nimport { ProductTourBanner } from './components/ProductTourBanner'\nimport { createLogger } from '../../utils/logger'\nimport { document as _document, window as _window } from '../../utils/globals'\nimport { localStore, sessionStore } from '../../storage'\nimport { addEventListener } from '../../utils'\nimport { isNull, SurveyMatchType } from '@posthog/core'\nimport { propertyComparisons } from '../../utils/property-utils'\nimport {\n TOUR_SHOWN_KEY_PREFIX,\n TOUR_COMPLETED_KEY_PREFIX,\n TOUR_DISMISSED_KEY_PREFIX,\n ACTIVE_TOUR_SESSION_KEY,\n} from './constants'\nimport { doesTourActivateByAction, doesTourActivateByEvent } from '../../utils/product-tour-utils'\nimport { TOOLBAR_ID } from '../../constants'\nimport { ProductTourEventReceiver } from '../../utils/product-tour-event-receiver'\n\nconst logger = createLogger('[Product Tours]')\n\nconst document = _document as Document\nconst window = _window as Window & typeof globalThis\n\n// Tour condition checking - reuses the same URL matching logic as surveys\nfunction doesTourUrlMatch(tour: ProductTour): boolean {\n const conditions = tour.conditions\n if (!conditions?.url) {\n return true\n }\n\n const href = window?.location?.href\n if (!href) {\n return false\n }\n\n const matchType = conditions.urlMatchType || SurveyMatchType.Icontains\n\n if (matchType === SurveyMatchType.Exact) {\n return normalizeUrl(href) === normalizeUrl(conditions.url)\n }\n\n const targets = [conditions.url]\n return propertyComparisons[matchType](targets, [href])\n}\n\nfunction isTourInDateRange(tour: ProductTour): boolean {\n const now = new Date()\n\n if (tour.start_date) {\n const startDate = new Date(tour.start_date)\n if (now < startDate) {\n return false\n }\n }\n\n if (tour.end_date) {\n const endDate = new Date(tour.end_date)\n if (now > endDate) {\n return false\n }\n }\n\n return true\n}\n\nfunction checkTourConditions(tour: ProductTour): boolean {\n return isTourInDateRange(tour) && doesTourUrlMatch(tour)\n}\n\nconst CONTAINER_CLASS = 'ph-product-tour-container'\nconst TRIGGER_LISTENER_ATTRIBUTE = 'data-ph-tour-trigger'\nconst CHECK_INTERVAL_MS = 1000\n\ninterface TriggerListenerData {\n element: Element\n listener: (event: Event) => void\n tour: ProductTour\n}\n\nfunction retrieveTourShadow(tour: ProductTour): { shadow: ShadowRoot; isNewlyCreated: boolean } {\n const containerClass = `${CONTAINER_CLASS}-${tour.id}`\n const existingDiv = document.querySelector(`.${containerClass}`)\n\n if (existingDiv && existingDiv.shadowRoot) {\n return {\n shadow: existingDiv.shadowRoot,\n isNewlyCreated: false,\n }\n }\n\n const div = document.createElement('div')\n div.className = containerClass\n\n addProductTourCSSVariablesToElement(div, tour.appearance)\n\n const shadow = div.attachShadow({ mode: 'open' })\n\n const stylesheet = getProductTourStylesheet()\n if (stylesheet) {\n shadow.appendChild(stylesheet)\n }\n\n document.body.appendChild(div)\n\n return {\n shadow,\n isNewlyCreated: true,\n }\n}\n\nfunction retrieveBannerShadow(\n tour: ProductTour,\n bannerConfig?: ProductTourBannerConfig\n): { shadow: ShadowRoot; isNewlyCreated: boolean } | null {\n const containerClass = `${CONTAINER_CLASS}-${tour.id}`\n const existingDiv = document.querySelector(`.${containerClass}`)\n\n if (existingDiv && existingDiv.shadowRoot) {\n return {\n shadow: existingDiv.shadowRoot,\n isNewlyCreated: false,\n }\n }\n\n const div = document.createElement('div')\n div.className = containerClass\n\n addProductTourCSSVariablesToElement(div, tour.appearance)\n\n const shadow = div.attachShadow({ mode: 'open' })\n\n const stylesheet = getProductTourStylesheet()\n if (stylesheet) {\n shadow.appendChild(stylesheet)\n }\n\n if (bannerConfig?.behavior === 'custom' && bannerConfig.selector) {\n const customContainer = document.querySelector(bannerConfig.selector)\n if (customContainer) {\n customContainer.appendChild(div)\n } else {\n logger.warn(`Custom banner container not found: ${bannerConfig.selector}. Banner will not be displayed.`)\n return null\n }\n } else {\n document.body.insertBefore(div, document.body.firstChild)\n }\n\n return {\n shadow,\n isNewlyCreated: true,\n }\n}\n\nfunction removeTourFromDom(tourId: string): void {\n const containerClass = `${CONTAINER_CLASS}-${tourId}`\n const container = document.querySelector(`.${containerClass}`)\n if (container?.shadowRoot) {\n render(null, container.shadowRoot)\n }\n container?.remove()\n}\n\nconst PRODUCT_TOUR_TARGETING_FLAG_PREFIX = 'product-tour-targeting-'\n\nexport class ProductTourManager {\n private _instance: PostHog\n private _activeTour: ProductTour | null = null\n private _currentStepIndex: number = 0\n private _isPreviewMode: boolean = false\n private _isResuming: boolean = false\n private _checkInterval: ReturnType<typeof setInterval> | null = null\n private _triggerSelectorListeners: Map<string, TriggerListenerData> = new Map()\n private _pendingTourTimeouts: Map<string, ReturnType<typeof setTimeout>> = new Map()\n private _eventReceiver: ProductTourEventReceiver\n private _registeredEventTourIds: Set<string> = new Set()\n private _preloadedImageUrls: Set<string> = new Set()\n\n constructor(instance: PostHog) {\n this._instance = instance\n this._eventReceiver = new ProductTourEventReceiver(instance)\n }\n\n private _preloadTourImages(tours: ProductTour[]): void {\n const urls = tours\n .filter((tour) => !tour.disable_image_preload)\n .flatMap((tour) => tour.steps.flatMap(getStepImageUrls))\n\n for (const url of urls) {\n if (!this._preloadedImageUrls.has(url)) {\n this._preloadedImageUrls.add(url)\n new Image().src = url\n }\n }\n }\n\n private _setStepIndex(index: number): void {\n this._currentStepIndex = index\n this._saveSessionState()\n }\n\n private _saveSessionState(): void {\n if (!this._activeTour || this._isPreviewMode) {\n return\n }\n sessionStore._set(ACTIVE_TOUR_SESSION_KEY, {\n tourId: this._activeTour.id,\n stepIndex: this._currentStepIndex,\n })\n }\n\n private _clearSessionState(): void {\n sessionStore._remove(ACTIVE_TOUR_SESSION_KEY)\n }\n\n private _getSessionState(): { tourId: string; stepIndex: number } | null {\n const stored = sessionStore._get(ACTIVE_TOUR_SESSION_KEY)\n if (!stored) {\n return null\n }\n try {\n return JSON.parse(stored)\n } catch {\n return null\n }\n }\n\n start(): void {\n if (this._checkInterval) {\n return\n }\n\n // Check for saved session state before starting the evaluation loop\n const savedState = this._getSessionState()\n if (savedState) {\n this._resumeSavedTour(savedState.tourId, savedState.stepIndex, () => {\n this._startEvaluationLoop()\n })\n } else {\n this._startEvaluationLoop()\n }\n }\n\n private _startEvaluationLoop(): void {\n this._checkInterval = setInterval(() => {\n this._evaluateAndDisplayTours()\n }, CHECK_INTERVAL_MS)\n\n this._evaluateAndDisplayTours(true)\n addEventListener(document, 'visibilitychange', this._handleVisibilityChange)\n }\n\n private _resumeSavedTour(tourId: string, stepIndex: number, onComplete: () => void): void {\n this._instance.productTours?.getProductTours((tours) => {\n const tour = tours.find((t) => t.id === tourId)\n\n if (!tour) {\n if (tours.length > 0) {\n this._clearSessionState()\n }\n } else {\n this._activeTour = tour\n this._currentStepIndex = stepIndex\n this._isResuming = true\n this._renderCurrentStep()\n }\n\n onComplete()\n })\n }\n\n stop(): void {\n if (this._checkInterval) {\n clearInterval(this._checkInterval)\n this._checkInterval = null\n }\n document.removeEventListener('visibilitychange', this._handleVisibilityChange)\n this._removeAllTriggerListeners()\n this._cancelAllPendingTours()\n this._cleanup()\n }\n\n private _handleVisibilityChange = (): void => {\n if (document.hidden && this._checkInterval) {\n clearInterval(this._checkInterval)\n this._checkInterval = null\n } else if (!document.hidden && !this._checkInterval) {\n this._checkInterval = setInterval(() => {\n this._evaluateAndDisplayTours()\n }, CHECK_INTERVAL_MS)\n this._evaluateAndDisplayTours()\n }\n }\n\n private _evaluateAndDisplayTours(forceReload?: boolean): void {\n if (document?.getElementById(TOOLBAR_ID)) {\n return\n }\n\n // Use getProductTours (not getActiveProductTours) because selector-triggered tours\n // should work even if completed/dismissed\n this._instance.productTours?.getProductTours((tours) => {\n if (tours.length === 0) {\n this._removeAllTriggerListeners()\n return\n }\n\n this._preloadTourImages(tours)\n\n const activeTriggerTourIds = new Set<string>()\n\n const unregisteredEventTours = tours.filter(\n (tour: ProductTour) =>\n !this._registeredEventTourIds.has(tour.id) &&\n (doesTourActivateByEvent(tour) || doesTourActivateByAction(tour))\n )\n if (unregisteredEventTours.length > 0) {\n this._eventReceiver.register(unregisteredEventTours)\n unregisteredEventTours.forEach((tour) => this._registeredEventTourIds.add(tour.id))\n }\n\n const eventActivatedTourIds = this._activeTour ? [] : this._eventReceiver.getTours()\n\n /**\n * tours can be shown three ways, really:\n *\n * 1) selector clicks\n * 2a) auto-show immediately\n * 2b) auto-show after event/action\n *\n * (1) and (2[a|b]) are fully independent of each other\n */\n for (const tour of tours) {\n // 1) SELECTOR CLICK TRIGGER - just attach an event listener and keep going\n const triggerSelector = tour.conditions?.selector\n if (triggerSelector) {\n activeTriggerTourIds.add(tour.id)\n this._manageTriggerSelectorListener(tour, triggerSelector)\n }\n\n // skip auto-launch checks if a tour is already active\n if (this._activeTour) {\n continue\n }\n\n // 2) AUTO-LAUNCH\n const hasEventOrActionTriggers = doesTourActivateByAction(tour) || doesTourActivateByEvent(tour)\n\n if (tour.auto_launch && this._isTourEligible(tour)) {\n // tour should auto-launch, and the current session is eligible\n\n if (!hasEventOrActionTriggers) {\n // 2a) AUTO-SHOW WITH NO EVENT/ACTION\n this._showOrQueueTour(tour, 'auto')\n continue\n }\n\n // 2b) AUTO-SHOW, BUT WAIT FOR EVENT/ACTION\n if (eventActivatedTourIds.includes(tour.id)) {\n this._showOrQueueTour(tour, 'event')\n }\n }\n }\n\n this._triggerSelectorListeners.forEach(({ tour }) => {\n if (!activeTriggerTourIds.has(tour.id)) {\n this._removeTriggerSelectorListener(tour.id)\n }\n })\n }, forceReload)\n }\n\n private _showOrQueueTour(tour: ProductTour, reason: ProductTourRenderReason): void {\n const delaySeconds = tour.conditions?.autoShowDelaySeconds || 0\n if (delaySeconds > 0) {\n if (!this.isTourPending(tour.id)) {\n this.queueTourWithDelay(tour.id, delaySeconds, reason)\n }\n } else {\n this.showTour(tour, { reason })\n }\n }\n\n private _isTourEligible(tour: ProductTour): boolean {\n if (!checkTourConditions(tour)) {\n logger.info(`Tour ${tour.id} failed conditions check`)\n return false\n }\n\n const displayFrequency = tour.display_frequency ?? 'until_interacted'\n const shownKey = `${TOUR_SHOWN_KEY_PREFIX}${tour.id}`\n const completedKey = `${TOUR_COMPLETED_KEY_PREFIX}${tour.id}`\n const dismissedKey = `${TOUR_DISMISSED_KEY_PREFIX}${tour.id}`\n\n switch (displayFrequency) {\n case 'show_once':\n if (localStore._get(shownKey)) {\n logger.info(`Tour ${tour.id} already shown (show_once frequency)`)\n return false\n }\n break\n\n case 'until_interacted':\n if (localStore._get(completedKey) || localStore._get(dismissedKey)) {\n logger.info(`Tour ${tour.id} already completed or dismissed`)\n return false\n }\n break\n\n case 'always':\n default:\n break\n }\n\n if (!this._isProductToursFeatureFlagEnabled({ flagKey: tour.internal_targeting_flag_key })) {\n logger.info(`Tour ${tour.id} failed feature flag check: ${tour.internal_targeting_flag_key}`)\n return false\n }\n\n const linkedFlagVariant = tour.conditions?.linkedFlagVariant\n if (\n !this._isProductToursFeatureFlagEnabled({ flagKey: tour.linked_flag_key, flagVariant: linkedFlagVariant })\n ) {\n logger.info(\n `Tour ${tour.id} failed feature flag check: ${tour.linked_flag_key}, variant: ${linkedFlagVariant}`\n )\n return false\n }\n\n return true\n }\n\n showTour(tour: ProductTour, options?: ShowTourOptions): boolean {\n const renderReason: ProductTourRenderReason = options?.reason ?? 'auto'\n\n this.cancelPendingTour(tour.id)\n\n this._activeTour = tour\n this._setStepIndex(0)\n\n const rendered = this._renderCurrentStep()\n\n if (rendered) {\n this._captureEvent('product tour shown', {\n $product_tour_id: tour.id,\n $product_tour_name: tour.name,\n $product_tour_iteration: tour.current_iteration || 1,\n $product_tour_render_reason: renderReason,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_SHOWN_KEY_PREFIX}${tour.id}`, true)\n\n this._instance.capture('$set', {\n $set: { [`$product_tour_shown/${tour.id}`]: true },\n })\n }\n } else {\n this._cleanup()\n }\n\n return rendered\n }\n\n showTourById(tourId: string, reason?: ProductTourRenderReason): void {\n logger.info(`showTourById(${tourId})`)\n this._instance.productTours?.getProductTours((tours) => {\n const tour = tours.find((t) => t.id === tourId)\n if (tour) {\n this.showTour(tour, { reason: reason ?? 'api' })\n } else {\n logger.warn('could not find tour', tourId)\n }\n })\n }\n\n previewTour(tour: ProductTour): void {\n logger.info(`Previewing tour ${tour.id}`)\n\n this._cleanup()\n\n this._isPreviewMode = true\n this._activeTour = tour\n this._currentStepIndex = 0\n\n this._renderCurrentStep()\n }\n\n nextStep = (): void => {\n if (!this._activeTour) {\n return\n }\n\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n\n this._captureEvent('product tour step completed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: currentStep.id,\n $product_tour_step_order: this._currentStepIndex,\n })\n\n if (this._currentStepIndex < this._activeTour.steps.length - 1) {\n this._setStepIndex(this._currentStepIndex + 1)\n this._renderCurrentStep()\n } else {\n this._completeTour()\n }\n }\n\n previousStep = (): void => {\n if (!this._activeTour || this._currentStepIndex === 0) {\n return\n }\n\n this._setStepIndex(this._currentStepIndex - 1)\n this._renderCurrentStep()\n }\n\n dismissTour = (reason: ProductTourDismissReason = 'user_clicked_skip'): void => {\n if (!this._activeTour) {\n return\n }\n\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n\n this._captureEvent('product tour dismissed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: currentStep.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_dismiss_reason: reason,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_DISMISSED_KEY_PREFIX}${this._activeTour.id}`, true)\n\n this._instance.capture('$set', {\n $set: { [`$product_tour_dismissed/${this._activeTour.id}`]: true },\n })\n }\n\n window.dispatchEvent(\n new CustomEvent('PHProductTourDismissed', { detail: { tourId: this._activeTour.id, reason } })\n )\n\n this._cleanup()\n }\n\n private _handleButtonClick = (button: ProductTourStepButton): void => {\n if (this._activeTour) {\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n if (currentStep) {\n this._captureEvent('product tour button clicked', {\n $product_tour_id: this._activeTour.id,\n $product_tour_name: this._activeTour.name,\n $product_tour_iteration: this._activeTour.current_iteration || 1,\n $product_tour_step_id: currentStep.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_button_text: button.text,\n $product_tour_button_action: button.action,\n ...(button.link && { $product_tour_button_link: button.link }),\n ...(button.tourId && { $product_tour_button_tour_id: button.tourId }),\n })\n }\n }\n\n switch (button.action) {\n case 'dismiss':\n this.dismissTour('user_clicked_skip')\n break\n case 'next_step':\n this.nextStep()\n break\n case 'previous_step':\n this.previousStep()\n break\n case 'link':\n this._completeTour()\n break\n case 'trigger_tour':\n if (button.tourId) {\n this._completeTour()\n this.showTourById(button.tourId)\n }\n break\n }\n }\n\n private _completeTour(): void {\n if (!this._activeTour) {\n return\n }\n\n this._captureEvent('product tour completed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_steps_count: this._activeTour.steps.length,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_COMPLETED_KEY_PREFIX}${this._activeTour.id}`, true)\n\n this._instance.capture('$set', {\n $set: {\n [`$product_tour_completed/${this._activeTour.id}`]: true,\n },\n })\n }\n\n window.dispatchEvent(new CustomEvent('PHProductTourCompleted', { detail: { tourId: this._activeTour.id } }))\n\n this._cleanup()\n }\n\n private _renderCurrentStep(retryCount: number = 0): boolean {\n if (!this._activeTour) {\n return false\n }\n\n const step = this._activeTour.steps[this._currentStepIndex]\n if (!step) {\n logger.warn(`Step ${this._currentStepIndex} not found in tour ${this._activeTour.id}`)\n this._cleanup()\n return false\n }\n\n // Banner step - render full-width banner\n if (step.type === 'banner') {\n this._captureEvent('product tour step shown', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_type: 'banner',\n })\n\n this._isResuming = false\n this._renderBanner()\n return true\n }\n\n // Survey step - render native survey step component\n if (step.type === 'survey') {\n if (step.survey) {\n this._renderSurveyStep()\n return true\n }\n\n logger.warn('Unable to render survey step - survey data not found')\n return false\n }\n\n // Screen-positioned step (no element targeting) - render without a target element\n if (!hasElementTarget(step)) {\n this._captureEvent('product tour step shown', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_type: step.type,\n })\n\n this._isResuming = false\n this._renderTooltipWithPreact(null)\n return true\n }\n\n const result = findStepElement(step)\n\n const inferenceProps = {\n $use_manual_selector: step.useManualSelector ?? false,\n $inference_data_present: !!step.inferenceData,\n }\n\n const previousStep = this._currentStepIndex > 0 ? this._activeTour.steps[this._currentStepIndex - 1] : null\n const shouldWaitForElement = previousStep?.progressionTrigger === 'click' || this._isResuming\n\n // 2s total timeout\n const maxRetries = 20\n const retryTimeout = 100\n\n if (result.error === 'not_found' || result.error === 'not_visible') {\n // if previous step was click-to-progress, or we are resuming a tour,\n // give some time for the next element\n if (shouldWaitForElement && retryCount < maxRetries) {\n setTimeout(() => {\n this._renderCurrentStep(retryCount + 1)\n }, retryTimeout)\n\n return false\n }\n\n const waitDurationMs = retryCount * retryTimeout\n\n this._captureEvent('product tour step selector failed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_selector: step.selector,\n $product_tour_error: result.error,\n $product_tour_matches_count: result.matchCount,\n $product_tour_failure_phase: 'runtime',\n $product_tour_waited_for_element: shouldWaitForElement,\n $product_tour_wait_duration_ms: waitDurationMs,\n ...inferenceProps,\n })\n\n if (this._currentStepIndex === 0 && !this._isResuming) {\n logger.warn(\n `Tour \"${this._activeTour.name}\" failed to show: element for first step not found (${result.error})`\n )\n return false\n }\n\n logger.warn(\n `Tour \"${this._activeTour.name}\" dismissed: element for step ${this._currentStepIndex} became unavailable (${result.error})` +\n (shouldWaitForElement ? ` after waiting ${waitDurationMs}ms` : '')\n )\n this.dismissTour('element_unavailable')\n return false\n }\n\n if (result.error === 'multiple_matches') {\n this._captureEvent('product tour step selector failed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_selector: step.selector,\n $product_tour_error: result.error,\n $product_tour_matches_count: result.matchCount,\n $product_tour_failure_phase: 'runtime',\n ...inferenceProps,\n })\n // Continue with first match for multiple_matches case\n }\n\n if (!result.element) {\n return false\n }\n\n const element = result.element\n const metadata = getElementMetadata(element)\n\n this._captureEvent('product tour step shown', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_selector: step.selector,\n $product_tour_step_selector_found: true,\n $product_tour_step_element_tag: metadata.tag,\n $product_tour_step_element_id: metadata.id,\n $product_tour_step_element_classes: metadata.classes,\n $product_tour_step_element_text: metadata.text,\n ...inferenceProps,\n })\n\n this._isResuming = false\n this._renderTooltipWithPreact(element)\n return true\n }\n\n private _renderTooltipWithPreact(\n element: HTMLElement | null,\n onSurveySubmit?: (response: string | number | null) => void,\n onDismissOverride?: (reason: ProductTourDismissReason) => void\n ): void {\n if (!this._activeTour) {\n return\n }\n\n const step = this._activeTour.steps[this._currentStepIndex]\n const { shadow } = retrieveTourShadow(this._activeTour)\n\n render(\n <ProductTourTooltip\n tour={this._activeTour}\n step={step}\n stepIndex={this._currentStepIndex}\n totalSteps={this._activeTour.steps.length}\n targetElement={element}\n onNext={this.nextStep}\n onPrevious={this.previousStep}\n onDismiss={onDismissOverride || this.dismissTour}\n onSurveySubmit={onSurveySubmit}\n onButtonClick={this._handleButtonClick}\n />,\n shadow\n )\n }\n\n private _renderBanner(): void {\n if (!this._activeTour) {\n return\n }\n\n const step = this._activeTour.steps[this._currentStepIndex]\n const result = retrieveBannerShadow(this._activeTour, step.bannerConfig)\n\n if (!result) {\n this._captureEvent('product tour banner container selector failed', {\n $product_tour_id: this._activeTour.id,\n $product_tour_banner_selector: step?.bannerConfig?.selector,\n })\n this.dismissTour('container_unavailable')\n return\n }\n\n const { shadow } = result\n\n const handleTriggerTour = () => {\n const tourId = step.bannerConfig?.action?.tourId\n if (tourId) {\n this._cleanup()\n this.showTourById(tourId)\n }\n }\n\n render(\n <ProductTourBanner\n step={step}\n onDismiss={() => this.dismissTour('user_clicked_skip')}\n onTriggerTour={handleTriggerTour}\n displayFrequency={this._activeTour.display_frequency}\n />,\n shadow\n )\n }\n\n private _renderSurveyStep(): void {\n if (!this._activeTour) {\n return\n }\n\n const tourId = this._activeTour.id\n const step = this._activeTour.steps[this._currentStepIndex]\n const surveyId = step.linkedSurveyId\n const questionId = step.linkedSurveyQuestionId\n const questionText = step.survey?.questionText || ''\n\n this._captureEvent('product tour step shown', {\n $product_tour_id: this._activeTour.id,\n $product_tour_step_id: step.id,\n $product_tour_step_order: this._currentStepIndex,\n $product_tour_step_type: 'survey',\n $product_tour_linked_survey_id: surveyId,\n })\n\n this._captureEvent(SurveyEventName.SHOWN, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n })\n\n const handleSubmit = (response: string | number | null) => {\n const responseKey = questionId ? `$survey_response_${questionId}` : '$survey_response'\n this._captureEvent(SurveyEventName.SENT, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n [SurveyEventProperties.SURVEY_QUESTIONS]: [\n {\n id: questionId,\n question: questionText,\n response: response,\n },\n ],\n [SurveyEventProperties.SURVEY_COMPLETED]: true,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n ...(!isNull(response) && { [responseKey]: response }),\n })\n\n logger.info(`Survey ${surveyId} completed`, !isNull(response) ? `with response: ${response}` : '(skipped)')\n this.nextStep()\n }\n\n const handleDismiss = (reason: ProductTourDismissReason) => {\n this._captureEvent(SurveyEventName.DISMISSED, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n [SurveyEventProperties.SURVEY_QUESTIONS]: [\n {\n id: questionId,\n question: questionText,\n response: null,\n },\n ],\n [SurveyEventProperties.SURVEY_PARTIALLY_COMPLETED]: false,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n })\n\n logger.info(`Survey ${surveyId} dismissed`)\n this.dismissTour(reason)\n }\n\n this._renderTooltipWithPreact(null, handleSubmit, handleDismiss)\n\n logger.info(`Rendered survey step for tour step ${this._currentStepIndex}`)\n }\n\n private _isProductToursFeatureFlagEnabled({ flagKey, flagVariant }: { flagKey?: string; flagVariant?: string }) {\n if (!flagKey) {\n return true\n }\n const isFeatureEnabled = !!this._instance.featureFlags.isFeatureEnabled(flagKey, {\n send_event: !flagKey.startsWith(PRODUCT_TOUR_TARGETING_FLAG_PREFIX),\n })\n let flagVariantCheck = true\n if (flagVariant) {\n const flagVariantValue = this._instance.featureFlags.getFeatureFlag(flagKey, { send_event: false })\n flagVariantCheck = flagVariantValue === flagVariant || flagVariant === 'any'\n }\n return isFeatureEnabled && flagVariantCheck\n }\n\n private _cleanup(): void {\n if (this._activeTour) {\n removeTourFromDom(this._activeTour.id)\n }\n\n this._activeTour = null\n this._currentStepIndex = 0\n this._isPreviewMode = false\n this._isResuming = false\n this._clearSessionState()\n }\n\n private _manageTriggerSelectorListener(tour: ProductTour, selector: string): void {\n const currentElement = document.querySelector(selector)\n const existingListenerData = this._triggerSelectorListeners.get(tour.id)\n\n if (!currentElement) {\n if (existingListenerData) {\n this._removeTriggerSelectorListener(tour.id)\n }\n return\n }\n\n if (existingListenerData) {\n if (currentElement !== existingListenerData.element) {\n logger.info(`Trigger element changed for tour ${tour.id}. Re-attaching listener.`)\n this._removeTriggerSelectorListener(tour.id)\n } else {\n return\n }\n }\n\n if (!currentElement.hasAttribute(TRIGGER_LISTENER_ATTRIBUTE)) {\n const listener = (event: Event) => {\n if (this._activeTour) {\n logger.info(`Tour ${tour.id} trigger clicked but another tour is active`)\n return\n }\n\n let currentTour: ProductTour | undefined\n this._instance.productTours?.getProductTours((tours) => {\n currentTour = tours.find((t) => t.id === tour.id)\n })\n\n if (!currentTour) {\n logger.warn(`Tour ${tour.id} no longer exists. Removing stale listener.`)\n this._removeTriggerSelectorListener(tour.id)\n return\n }\n\n if (!isTourInDateRange(currentTour)) {\n logger.warn(`Tour ${tour.id} trigger clicked, but tour is not launched - not showing tour.`)\n return\n }\n\n logger.info(`Tour ${tour.id} triggered by click on ${selector}`)\n\n if (this.showTour(currentTour, { reason: 'trigger' })) {\n event.preventDefault()\n } else {\n logger.info(`Tour ${tour.id} failed to show; not intercepting click.`)\n }\n }\n\n addEventListener(currentElement, 'click', listener)\n currentElement.setAttribute(TRIGGER_LISTENER_ATTRIBUTE, tour.id)\n this._triggerSelectorListeners.set(tour.id, { element: currentElement, listener, tour })\n logger.info(`Attached trigger listener for tour ${tour.id} on ${selector}`)\n }\n }\n\n private _removeTriggerSelectorListener(tourId: string): void {\n const existing = this._triggerSelectorListeners.get(tourId)\n if (existing) {\n existing.element.removeEventListener('click', existing.listener)\n existing.element.removeAttribute(TRIGGER_LISTENER_ATTRIBUTE)\n this._triggerSelectorListeners.delete(tourId)\n logger.info(`Removed trigger listener for tour ${tourId}`)\n }\n }\n\n private _removeAllTriggerListeners(): void {\n this._triggerSelectorListeners.forEach((_, tourId) => {\n this._removeTriggerSelectorListener(tourId)\n })\n }\n\n private _captureEvent(eventName: string, properties: Record<string, any>): void {\n if (this._isPreviewMode) {\n return\n }\n this._instance.capture(eventName, properties)\n }\n\n // Public API methods delegated from PostHogProductTours\n getActiveProductTours(callback: ProductTourCallback): void {\n this._instance.productTours?.getProductTours((tours, context) => {\n if (!context?.isLoaded) {\n callback([], context)\n return\n }\n\n const activeTours = tours.filter((tour) => this._isTourEligible(tour))\n callback(activeTours, context)\n })\n }\n\n resetTour(tourId: string): void {\n localStore._remove(`${TOUR_SHOWN_KEY_PREFIX}${tourId}`)\n localStore._remove(`${TOUR_COMPLETED_KEY_PREFIX}${tourId}`)\n localStore._remove(`${TOUR_DISMISSED_KEY_PREFIX}${tourId}`)\n }\n\n resetAllTours(): void {\n const storage = window?.localStorage\n if (!storage) {\n return\n }\n const keysToRemove: string[] = []\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (\n key?.startsWith(TOUR_SHOWN_KEY_PREFIX) ||\n key?.startsWith(TOUR_COMPLETED_KEY_PREFIX) ||\n key?.startsWith(TOUR_DISMISSED_KEY_PREFIX)\n ) {\n keysToRemove.push(key)\n }\n }\n keysToRemove.forEach((key) => localStore._remove(key))\n }\n\n cancelPendingTour(tourId: string): void {\n const timeout = this._pendingTourTimeouts.get(tourId)\n if (timeout) {\n clearTimeout(timeout)\n this._pendingTourTimeouts.delete(tourId)\n logger.info(`Cancelled pending tour: ${tourId}`)\n }\n }\n\n private _cancelAllPendingTours(): void {\n this._pendingTourTimeouts.forEach((timeout) => clearTimeout(timeout))\n this._pendingTourTimeouts.clear()\n }\n\n isTourPending(tourId: string): boolean {\n return this._pendingTourTimeouts.has(tourId)\n }\n\n queueTourWithDelay(tourId: string, delaySeconds: number, reason?: ProductTourRenderReason): void {\n logger.info(`Queueing tour ${tourId} with ${delaySeconds}s delay`)\n\n const timeoutId = setTimeout(() => {\n this._pendingTourTimeouts.delete(tourId)\n logger.info(`Delay elapsed for tour ${tourId}, showing now`)\n this.showTourById(tourId, reason)\n }, delaySeconds * 1000)\n\n this._pendingTourTimeouts.set(tourId, timeoutId)\n }\n}\n"]}
1
+ {"version":3,"file":"product-tours.js","sourceRoot":"","sources":["../../../../src/extensions/product-tours/product-tours.tsx"],"names":[],"mappings":"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","sourcesContent":["import { render } from 'preact'\nimport { PostHog } from '../../posthog-core'\nimport {\n ProductTour,\n ProductTourBannerConfig,\n ProductTourCallback,\n ProductTourDismissReason,\n ProductTourEventName,\n ProductTourEventProperties,\n ProductTourRenderReason,\n ProductTourStep,\n ProductTourStepButton,\n ShowTourOptions,\n} from '../../posthog-product-tours-types'\nimport { SurveyEventName, SurveyEventProperties } from '../../posthog-surveys-types'\nimport {\n addProductTourCSSVariablesToElement,\n ElementFindResult,\n findStepElement,\n getElementMetadata,\n getProductTourStylesheet,\n getStepImageUrls,\n hasElementTarget,\n normalizeUrl,\n resolveStepTranslation,\n} from './product-tours-utils'\nimport { ProductTourTooltip } from './components/ProductTourTooltip'\nimport { ProductTourBanner } from './components/ProductTourBanner'\nimport { createLogger } from '../../utils/logger'\nimport { document as _document, window as _window } from '../../utils/globals'\nimport { localStore, sessionStore } from '../../storage'\nimport { addEventListener } from '../../utils'\nimport { isNull, SurveyMatchType } from '@posthog/core'\nimport { propertyComparisons } from '../../utils/property-utils'\nimport {\n TOUR_SHOWN_KEY_PREFIX,\n TOUR_COMPLETED_KEY_PREFIX,\n TOUR_DISMISSED_KEY_PREFIX,\n ACTIVE_TOUR_SESSION_KEY,\n} from './constants'\nimport { doesTourActivateByAction, doesTourActivateByEvent } from '../../utils/product-tour-utils'\nimport { TOOLBAR_ID } from '../../constants'\nimport { ProductTourEventReceiver } from '../../utils/product-tour-event-receiver'\nimport { getBrowserLanguage } from '../../utils/event-utils'\n\nconst logger = createLogger('[Product Tours]')\n\nconst document = _document as Document\nconst window = _window as Window & typeof globalThis\n\n// Tour condition checking - reuses the same URL matching logic as surveys\nfunction doesTourUrlMatch(tour: ProductTour): boolean {\n const conditions = tour.conditions\n if (!conditions?.url) {\n return true\n }\n\n const href = window?.location?.href\n if (!href) {\n return false\n }\n\n const matchType = conditions.urlMatchType || SurveyMatchType.Icontains\n\n if (matchType === SurveyMatchType.Exact) {\n return normalizeUrl(href) === normalizeUrl(conditions.url)\n }\n\n const targets = [conditions.url]\n return propertyComparisons[matchType](targets, [href])\n}\n\nfunction isTourInDateRange(tour: ProductTour): boolean {\n const now = new Date()\n\n if (tour.start_date) {\n const startDate = new Date(tour.start_date)\n if (now < startDate) {\n return false\n }\n }\n\n if (tour.end_date) {\n const endDate = new Date(tour.end_date)\n if (now > endDate) {\n return false\n }\n }\n\n return true\n}\n\nfunction checkTourConditions(tour: ProductTour): boolean {\n return isTourInDateRange(tour) && doesTourUrlMatch(tour)\n}\n\nconst CONTAINER_CLASS = 'ph-product-tour-container'\nconst TRIGGER_LISTENER_ATTRIBUTE = 'data-ph-tour-trigger'\nconst CHECK_INTERVAL_MS = 1000\n\ninterface TriggerListenerData {\n element: Element\n listener: (event: Event) => void\n tour: ProductTour\n}\n\nfunction retrieveTourShadow(tour: ProductTour): { shadow: ShadowRoot; isNewlyCreated: boolean } {\n const containerClass = `${CONTAINER_CLASS}-${tour.id}`\n const existingDiv = document.querySelector(`.${containerClass}`)\n\n if (existingDiv && existingDiv.shadowRoot) {\n return {\n shadow: existingDiv.shadowRoot,\n isNewlyCreated: false,\n }\n }\n\n const div = document.createElement('div')\n div.className = containerClass\n\n addProductTourCSSVariablesToElement(div, tour.appearance)\n\n const shadow = div.attachShadow({ mode: 'open' })\n\n const stylesheet = getProductTourStylesheet()\n if (stylesheet) {\n shadow.appendChild(stylesheet)\n }\n\n document.body.appendChild(div)\n\n return {\n shadow,\n isNewlyCreated: true,\n }\n}\n\nfunction retrieveBannerShadow(\n tour: ProductTour,\n bannerConfig?: ProductTourBannerConfig\n): { shadow: ShadowRoot; isNewlyCreated: boolean } | null {\n const containerClass = `${CONTAINER_CLASS}-${tour.id}`\n const existingDiv = document.querySelector(`.${containerClass}`)\n\n if (existingDiv && existingDiv.shadowRoot) {\n return {\n shadow: existingDiv.shadowRoot,\n isNewlyCreated: false,\n }\n }\n\n const div = document.createElement('div')\n div.className = containerClass\n\n addProductTourCSSVariablesToElement(div, tour.appearance)\n\n const shadow = div.attachShadow({ mode: 'open' })\n\n const stylesheet = getProductTourStylesheet()\n if (stylesheet) {\n shadow.appendChild(stylesheet)\n }\n\n if (bannerConfig?.behavior === 'custom' && bannerConfig.selector) {\n const customContainer = document.querySelector(bannerConfig.selector)\n if (customContainer) {\n customContainer.appendChild(div)\n } else {\n logger.warn(`Custom banner container not found: ${bannerConfig.selector}. Banner will not be displayed.`)\n return null\n }\n } else {\n document.body.insertBefore(div, document.body.firstChild)\n }\n\n return {\n shadow,\n isNewlyCreated: true,\n }\n}\n\nfunction removeTourFromDom(tourId: string): void {\n const containerClass = `${CONTAINER_CLASS}-${tourId}`\n const container = document.querySelector(`.${containerClass}`)\n if (container?.shadowRoot) {\n render(null, container.shadowRoot)\n }\n container?.remove()\n}\n\nconst PRODUCT_TOUR_TARGETING_FLAG_PREFIX = 'product-tour-targeting-'\n\nexport class ProductTourManager {\n private _instance: PostHog\n private _activeTour: ProductTour | null = null\n private _currentStepIndex: number = 0\n private _isPreviewMode: boolean = false\n private _isResuming: boolean = false\n private _checkInterval: ReturnType<typeof setInterval> | null = null\n private _triggerSelectorListeners: Map<string, TriggerListenerData> = new Map()\n private _pendingTourTimeouts: Map<string, ReturnType<typeof setTimeout>> = new Map()\n private _eventReceiver: ProductTourEventReceiver\n private _registeredEventTourIds: Set<string> = new Set()\n private _preloadedImageUrls: Set<string> = new Set()\n\n constructor(instance: PostHog) {\n this._instance = instance\n this._eventReceiver = new ProductTourEventReceiver(instance)\n }\n\n private _preloadTourImages(tours: ProductTour[]): void {\n const urls = tours\n .filter((tour) => !tour.disable_image_preload)\n .flatMap((tour) => tour.steps.flatMap(getStepImageUrls))\n\n for (const url of urls) {\n if (!this._preloadedImageUrls.has(url)) {\n this._preloadedImageUrls.add(url)\n new Image().src = url\n }\n }\n }\n\n private _getCurrentStep(): ProductTourStep | null {\n if (!this._activeTour) {\n return null\n }\n const rawStep = this._activeTour.steps[this._currentStepIndex]\n if (!rawStep) {\n return null\n }\n const language = this._instance.config.override_display_language ?? getBrowserLanguage()\n return resolveStepTranslation(rawStep, language ?? null)\n }\n\n private _setStepIndex(index: number): void {\n this._currentStepIndex = index\n this._saveSessionState()\n }\n\n private _saveSessionState(): void {\n if (!this._activeTour || this._isPreviewMode) {\n return\n }\n sessionStore._set(ACTIVE_TOUR_SESSION_KEY, {\n tourId: this._activeTour.id,\n stepIndex: this._currentStepIndex,\n })\n }\n\n private _clearSessionState(): void {\n sessionStore._remove(ACTIVE_TOUR_SESSION_KEY)\n }\n\n private _getSessionState(): { tourId: string; stepIndex: number } | null {\n const stored = sessionStore._get(ACTIVE_TOUR_SESSION_KEY)\n if (!stored) {\n return null\n }\n try {\n return JSON.parse(stored)\n } catch {\n return null\n }\n }\n\n start(): void {\n if (this._checkInterval) {\n return\n }\n\n // Check for saved session state before starting the evaluation loop\n const savedState = this._getSessionState()\n if (savedState) {\n this._resumeSavedTour(savedState.tourId, savedState.stepIndex, () => {\n this._startEvaluationLoop()\n })\n } else {\n this._startEvaluationLoop()\n }\n }\n\n private _startEvaluationLoop(): void {\n this._checkInterval = setInterval(() => {\n this._evaluateAndDisplayTours()\n }, CHECK_INTERVAL_MS)\n\n this._evaluateAndDisplayTours(true)\n addEventListener(document, 'visibilitychange', this._handleVisibilityChange)\n }\n\n private _resumeSavedTour(tourId: string, stepIndex: number, onComplete: () => void): void {\n this._instance.productTours?.getProductTours((tours) => {\n const tour = tours.find((t) => t.id === tourId)\n\n if (!tour) {\n if (tours.length > 0) {\n this._clearSessionState()\n }\n } else {\n this._activeTour = tour\n this._currentStepIndex = stepIndex\n this._isResuming = true\n this._renderCurrentStep()\n }\n\n onComplete()\n })\n }\n\n stop(): void {\n if (this._checkInterval) {\n clearInterval(this._checkInterval)\n this._checkInterval = null\n }\n document.removeEventListener('visibilitychange', this._handleVisibilityChange)\n this._removeAllTriggerListeners()\n this._cancelAllPendingTours()\n this._cleanup()\n }\n\n private _handleVisibilityChange = (): void => {\n if (document.hidden && this._checkInterval) {\n clearInterval(this._checkInterval)\n this._checkInterval = null\n } else if (!document.hidden && !this._checkInterval) {\n this._checkInterval = setInterval(() => {\n this._evaluateAndDisplayTours()\n }, CHECK_INTERVAL_MS)\n this._evaluateAndDisplayTours()\n }\n }\n\n private _evaluateAndDisplayTours(forceReload?: boolean): void {\n if (document?.getElementById(TOOLBAR_ID)) {\n return\n }\n\n // Use getProductTours (not getActiveProductTours) because selector-triggered tours\n // should work even if completed/dismissed\n this._instance.productTours?.getProductTours((tours) => {\n if (tours.length === 0) {\n this._removeAllTriggerListeners()\n return\n }\n\n this._preloadTourImages(tours)\n\n const activeTriggerTourIds = new Set<string>()\n\n const unregisteredEventTours = tours.filter(\n (tour: ProductTour) =>\n !this._registeredEventTourIds.has(tour.id) &&\n (doesTourActivateByEvent(tour) || doesTourActivateByAction(tour))\n )\n if (unregisteredEventTours.length > 0) {\n this._eventReceiver.register(unregisteredEventTours)\n unregisteredEventTours.forEach((tour) => this._registeredEventTourIds.add(tour.id))\n }\n\n const eventActivatedTourIds = this._activeTour ? [] : this._eventReceiver.getTours()\n\n /**\n * tours can be shown three ways, really:\n *\n * 1) selector clicks\n * 2a) auto-show immediately\n * 2b) auto-show after event/action\n *\n * (1) and (2[a|b]) are fully independent of each other\n */\n for (const tour of tours) {\n // 1) SELECTOR CLICK TRIGGER - just attach an event listener and keep going\n const triggerSelector = tour.conditions?.selector\n if (triggerSelector) {\n activeTriggerTourIds.add(tour.id)\n this._manageTriggerSelectorListener(tour, triggerSelector)\n }\n\n // skip auto-launch checks if a tour is already active\n if (this._activeTour) {\n continue\n }\n\n // 2) AUTO-LAUNCH\n const hasEventOrActionTriggers = doesTourActivateByAction(tour) || doesTourActivateByEvent(tour)\n\n if (tour.auto_launch && this._isTourEligible(tour)) {\n // tour should auto-launch, and the current session is eligible\n\n if (!hasEventOrActionTriggers) {\n // 2a) AUTO-SHOW WITH NO EVENT/ACTION\n this._showOrQueueTour(tour, 'auto')\n continue\n }\n\n // 2b) AUTO-SHOW, BUT WAIT FOR EVENT/ACTION\n if (eventActivatedTourIds.includes(tour.id)) {\n this._showOrQueueTour(tour, 'event')\n }\n }\n }\n\n this._triggerSelectorListeners.forEach(({ tour }) => {\n if (!activeTriggerTourIds.has(tour.id)) {\n this._removeTriggerSelectorListener(tour.id)\n }\n })\n }, forceReload)\n }\n\n private _showOrQueueTour(tour: ProductTour, reason: ProductTourRenderReason): void {\n const delaySeconds = tour.conditions?.autoShowDelaySeconds || 0\n if (delaySeconds > 0) {\n if (!this.isTourPending(tour.id)) {\n this.queueTourWithDelay(tour.id, delaySeconds, reason)\n }\n } else {\n this.showTour(tour, { reason })\n }\n }\n\n private _isTourEligible(tour: ProductTour): boolean {\n if (!checkTourConditions(tour)) {\n logger.info(`Tour ${tour.id} failed conditions check`)\n return false\n }\n\n const displayFrequency = tour.display_frequency ?? 'until_interacted'\n const shownKey = `${TOUR_SHOWN_KEY_PREFIX}${tour.id}`\n const completedKey = `${TOUR_COMPLETED_KEY_PREFIX}${tour.id}`\n const dismissedKey = `${TOUR_DISMISSED_KEY_PREFIX}${tour.id}`\n\n switch (displayFrequency) {\n case 'show_once':\n if (localStore._get(shownKey)) {\n logger.info(`Tour ${tour.id} already shown (show_once frequency)`)\n return false\n }\n break\n\n case 'until_interacted':\n if (localStore._get(completedKey) || localStore._get(dismissedKey)) {\n logger.info(`Tour ${tour.id} already completed or dismissed`)\n return false\n }\n break\n\n case 'always':\n default:\n break\n }\n\n if (!this._isProductToursFeatureFlagEnabled({ flagKey: tour.internal_targeting_flag_key })) {\n logger.info(`Tour ${tour.id} failed feature flag check: ${tour.internal_targeting_flag_key}`)\n return false\n }\n\n const linkedFlagVariant = tour.conditions?.linkedFlagVariant\n if (\n !this._isProductToursFeatureFlagEnabled({ flagKey: tour.linked_flag_key, flagVariant: linkedFlagVariant })\n ) {\n logger.info(\n `Tour ${tour.id} failed feature flag check: ${tour.linked_flag_key}, variant: ${linkedFlagVariant}`\n )\n return false\n }\n\n return true\n }\n\n showTour(tour: ProductTour, options?: ShowTourOptions): boolean {\n const renderReason: ProductTourRenderReason = options?.reason ?? 'auto'\n\n this.cancelPendingTour(tour.id)\n\n this._activeTour = tour\n this._setStepIndex(0)\n\n const rendered = this._renderCurrentStep()\n\n if (rendered) {\n this._captureEvent(ProductTourEventName.SHOWN, {\n [ProductTourEventProperties.TOUR_ID]: tour.id,\n [ProductTourEventProperties.TOUR_NAME]: tour.name,\n [ProductTourEventProperties.TOUR_ITERATION]: tour.current_iteration || 1,\n [ProductTourEventProperties.TOUR_RENDER_REASON]: renderReason,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_SHOWN_KEY_PREFIX}${tour.id}`, true)\n\n this._instance.capture('$set', {\n $set: { [`$product_tour_shown/${tour.id}`]: true },\n })\n }\n } else {\n this._cleanup()\n }\n\n return rendered\n }\n\n showTourById(tourId: string, reason?: ProductTourRenderReason): void {\n logger.info(`showTourById(${tourId})`)\n this._instance.productTours?.getProductTours((tours) => {\n const tour = tours.find((t) => t.id === tourId)\n if (tour) {\n this.showTour(tour, { reason: reason ?? 'api' })\n } else {\n logger.warn('could not find tour', tourId)\n }\n })\n }\n\n previewTour(tour: ProductTour): void {\n logger.info(`Previewing tour ${tour.id}`)\n\n this._cleanup()\n\n this._isPreviewMode = true\n this._activeTour = tour\n this._currentStepIndex = 0\n\n this._renderCurrentStep()\n }\n\n nextStep = (): void => {\n if (!this._activeTour) {\n return\n }\n\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n\n this._captureEvent(ProductTourEventName.STEP_COMPLETED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_STEP_ID]: currentStep.id,\n [ProductTourEventProperties.TOUR_STEP_ORDER]: this._currentStepIndex,\n })\n\n if (this._currentStepIndex < this._activeTour.steps.length - 1) {\n this._setStepIndex(this._currentStepIndex + 1)\n this._renderCurrentStep()\n } else {\n this._completeTour()\n }\n }\n\n previousStep = (): void => {\n if (!this._activeTour || this._currentStepIndex === 0) {\n return\n }\n\n this._setStepIndex(this._currentStepIndex - 1)\n this._renderCurrentStep()\n }\n\n dismissTour = (reason: ProductTourDismissReason = 'user_clicked_skip'): void => {\n if (!this._activeTour) {\n return\n }\n\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n\n this._captureEvent(ProductTourEventName.DISMISSED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_STEP_ID]: currentStep.id,\n [ProductTourEventProperties.TOUR_STEP_ORDER]: this._currentStepIndex,\n [ProductTourEventProperties.TOUR_DISMISS_REASON]: reason,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_DISMISSED_KEY_PREFIX}${this._activeTour.id}`, true)\n\n this._instance.capture('$set', {\n $set: { [`$product_tour_dismissed/${this._activeTour.id}`]: true },\n })\n }\n\n window.dispatchEvent(\n new CustomEvent('PHProductTourDismissed', { detail: { tourId: this._activeTour.id, reason } })\n )\n\n this._cleanup()\n }\n\n private _handleButtonClick = (button: ProductTourStepButton): void => {\n if (this._activeTour) {\n const currentStep = this._activeTour.steps[this._currentStepIndex]\n if (currentStep) {\n this._captureEvent(ProductTourEventName.BUTTON_CLICKED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_NAME]: this._activeTour.name,\n [ProductTourEventProperties.TOUR_ITERATION]: this._activeTour.current_iteration || 1,\n [ProductTourEventProperties.TOUR_STEP_ID]: currentStep.id,\n [ProductTourEventProperties.TOUR_STEP_ORDER]: this._currentStepIndex,\n [ProductTourEventProperties.TOUR_BUTTON_TEXT]: button.text,\n [ProductTourEventProperties.TOUR_BUTTON_ACTION]: button.action,\n ...(button.link && { [ProductTourEventProperties.TOUR_BUTTON_LINK]: button.link }),\n ...(button.tourId && { [ProductTourEventProperties.TOUR_BUTTON_TOUR_ID]: button.tourId }),\n })\n }\n }\n\n switch (button.action) {\n case 'dismiss':\n this.dismissTour('user_clicked_skip')\n break\n case 'next_step':\n this.nextStep()\n break\n case 'previous_step':\n this.previousStep()\n break\n case 'link':\n this._completeTour()\n break\n case 'trigger_tour':\n if (button.tourId) {\n this._completeTour()\n this.showTourById(button.tourId)\n }\n break\n }\n }\n\n private _completeTour(): void {\n if (!this._activeTour) {\n return\n }\n\n this._captureEvent(ProductTourEventName.COMPLETED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_STEPS_COUNT]: this._activeTour.steps.length,\n })\n\n if (!this._isPreviewMode) {\n localStore._set(`${TOUR_COMPLETED_KEY_PREFIX}${this._activeTour.id}`, true)\n\n this._instance.capture('$set', {\n $set: {\n [`$product_tour_completed/${this._activeTour.id}`]: true,\n },\n })\n }\n\n window.dispatchEvent(new CustomEvent('PHProductTourCompleted', { detail: { tourId: this._activeTour.id } }))\n\n this._cleanup()\n }\n\n private _renderCurrentStep(retryCount: number = 0): boolean {\n if (!this._activeTour) {\n return false\n }\n\n const step = this._getCurrentStep()\n if (!step) {\n logger.warn(`Step ${this._currentStepIndex} not found in tour ${this._activeTour.id}`)\n this._cleanup()\n return false\n }\n\n // Banner step - render full-width banner\n if (step.type === 'banner') {\n this._captureStepShown()\n\n this._isResuming = false\n this._renderBanner()\n return true\n }\n\n // Survey step - render native survey step component\n if (step.type === 'survey') {\n if (step.survey) {\n this._renderSurveyStep()\n return true\n }\n\n logger.warn('Unable to render survey step - survey data not found')\n return false\n }\n\n // Screen-positioned step (no element targeting) - render without a target element\n if (!hasElementTarget(step)) {\n this._captureStepShown()\n\n this._isResuming = false\n this._renderTooltipWithPreact(null)\n return true\n }\n\n const result = findStepElement(step)\n\n const inferenceProps = {\n [ProductTourEventProperties.USE_MANUAL_SELECTOR]: step.useManualSelector ?? false,\n [ProductTourEventProperties.INFERENCE_DATA_PRESENT]: !!step.inferenceData,\n }\n\n const previousStep = this._currentStepIndex > 0 ? this._activeTour.steps[this._currentStepIndex - 1] : null\n const shouldWaitForElement = previousStep?.progressionTrigger === 'click' || this._isResuming\n\n // 2s total timeout\n const maxRetries = 20\n const retryTimeout = 100\n\n if (result.error === 'not_found' || result.error === 'not_visible') {\n // if previous step was click-to-progress, or we are resuming a tour,\n // give some time for the next element\n if (shouldWaitForElement && retryCount < maxRetries) {\n setTimeout(() => {\n this._renderCurrentStep(retryCount + 1)\n }, retryTimeout)\n\n return false\n }\n\n const waitDurationMs = retryCount * retryTimeout\n\n this._captureStepSelectorFailed(result, {\n [ProductTourEventProperties.TOUR_WAITED_FOR_ELEMENT]: shouldWaitForElement,\n [ProductTourEventProperties.TOUR_WAIT_DURATION_MS]: waitDurationMs,\n ...inferenceProps,\n })\n\n if (this._currentStepIndex === 0 && !this._isResuming) {\n logger.warn(\n `Tour \"${this._activeTour.name}\" failed to show: element for first step not found (${result.error})`\n )\n return false\n }\n\n logger.warn(\n `Tour \"${this._activeTour.name}\" dismissed: element for step ${this._currentStepIndex} became unavailable (${result.error})` +\n (shouldWaitForElement ? ` after waiting ${waitDurationMs}ms` : '')\n )\n this.dismissTour('element_unavailable')\n return false\n }\n\n if (result.error === 'multiple_matches') {\n this._captureStepSelectorFailed(result, inferenceProps)\n // Continue with first match for multiple_matches case\n }\n\n if (!result.element) {\n return false\n }\n\n const element = result.element\n const metadata = getElementMetadata(element)\n\n this._captureStepShown({\n [ProductTourEventProperties.TOUR_STEP_SELECTOR]: step.selector,\n [ProductTourEventProperties.TOUR_STEP_SELECTOR_FOUND]: true,\n [ProductTourEventProperties.TOUR_STEP_ELEMENT_TAG]: metadata.tag,\n [ProductTourEventProperties.TOUR_STEP_ELEMENT_ID]: metadata.id,\n [ProductTourEventProperties.TOUR_STEP_ELEMENT_CLASSES]: metadata.classes,\n [ProductTourEventProperties.TOUR_STEP_ELEMENT_TEXT]: metadata.text,\n ...inferenceProps,\n })\n\n this._isResuming = false\n this._renderTooltipWithPreact(element)\n return true\n }\n\n private _renderTooltipWithPreact(\n element: HTMLElement | null,\n onSurveySubmit?: (response: string | number | null) => void,\n onDismissOverride?: (reason: ProductTourDismissReason) => void\n ): void {\n if (!this._activeTour) {\n return\n }\n\n const step = this._getCurrentStep()\n if (!step) {\n return\n }\n\n const { shadow } = retrieveTourShadow(this._activeTour)\n\n render(\n <ProductTourTooltip\n tour={this._activeTour}\n step={step}\n stepIndex={this._currentStepIndex}\n totalSteps={this._activeTour.steps.length}\n targetElement={element}\n onNext={this.nextStep}\n onPrevious={this.previousStep}\n onDismiss={onDismissOverride || this.dismissTour}\n onSurveySubmit={onSurveySubmit}\n onButtonClick={this._handleButtonClick}\n />,\n shadow\n )\n }\n\n private _renderBanner(): void {\n if (!this._activeTour) {\n return\n }\n\n const step = this._getCurrentStep()\n if (!step) {\n return\n }\n\n const result = retrieveBannerShadow(this._activeTour, step.bannerConfig)\n\n if (!result) {\n this._captureEvent(ProductTourEventName.BANNER_CONTAINER_SELECTOR_FAILED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_BANNER_SELECTOR]: step?.bannerConfig?.selector,\n })\n this.dismissTour('container_unavailable')\n return\n }\n\n const { shadow } = result\n\n const handleTriggerTour = () => {\n const tourId = step.bannerConfig?.action?.tourId\n if (tourId) {\n this._cleanup()\n this.showTourById(tourId)\n }\n }\n\n render(\n <ProductTourBanner\n step={step}\n onDismiss={() => this.dismissTour('user_clicked_skip')}\n onTriggerTour={handleTriggerTour}\n displayFrequency={this._activeTour.display_frequency}\n />,\n shadow\n )\n }\n\n private _renderSurveyStep(): void {\n if (!this._activeTour) {\n return\n }\n\n const tourId = this._activeTour.id\n const step = this._getCurrentStep()\n if (!step) {\n return\n }\n\n const surveyId = step.linkedSurveyId\n const questionId = step.linkedSurveyQuestionId\n const questionText = step.survey?.questionText || ''\n\n this._captureStepShown({\n [ProductTourEventProperties.TOUR_LINKED_SURVEY_ID]: surveyId,\n })\n\n this._captureEvent(SurveyEventName.SHOWN, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n })\n\n const handleSubmit = (response: string | number | null) => {\n const responseKey = questionId ? `$survey_response_${questionId}` : '$survey_response'\n this._captureEvent(SurveyEventName.SENT, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n [SurveyEventProperties.SURVEY_QUESTIONS]: [\n {\n id: questionId,\n question: questionText,\n response: response,\n },\n ],\n [SurveyEventProperties.SURVEY_COMPLETED]: true,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n ...(!isNull(response) && { [responseKey]: response }),\n })\n\n logger.info(`Survey ${surveyId} completed`, !isNull(response) ? `with response: ${response}` : '(skipped)')\n this.nextStep()\n }\n\n const handleDismiss = (reason: ProductTourDismissReason) => {\n this._captureEvent(SurveyEventName.DISMISSED, {\n [SurveyEventProperties.SURVEY_ID]: surveyId,\n [SurveyEventProperties.PRODUCT_TOUR_ID]: tourId,\n [SurveyEventProperties.SURVEY_QUESTIONS]: [\n {\n id: questionId,\n question: questionText,\n response: null,\n },\n ],\n [SurveyEventProperties.SURVEY_PARTIALLY_COMPLETED]: false,\n sessionRecordingUrl: this._instance.get_session_replay_url?.(),\n })\n\n logger.info(`Survey ${surveyId} dismissed`)\n this.dismissTour(reason)\n }\n\n this._renderTooltipWithPreact(null, handleSubmit, handleDismiss)\n\n logger.info(`Rendered survey step for tour step ${this._currentStepIndex}`)\n }\n\n private _isProductToursFeatureFlagEnabled({ flagKey, flagVariant }: { flagKey?: string; flagVariant?: string }) {\n if (!flagKey) {\n return true\n }\n const isFeatureEnabled = !!this._instance.featureFlags.isFeatureEnabled(flagKey, {\n send_event: !flagKey.startsWith(PRODUCT_TOUR_TARGETING_FLAG_PREFIX),\n })\n let flagVariantCheck = true\n if (flagVariant) {\n const flagVariantValue = this._instance.featureFlags.getFeatureFlag(flagKey, { send_event: false })\n flagVariantCheck = flagVariantValue === flagVariant || flagVariant === 'any'\n }\n return isFeatureEnabled && flagVariantCheck\n }\n\n private _cleanup(): void {\n if (this._activeTour) {\n removeTourFromDom(this._activeTour.id)\n }\n\n this._activeTour = null\n this._currentStepIndex = 0\n this._isPreviewMode = false\n this._isResuming = false\n this._clearSessionState()\n }\n\n private _manageTriggerSelectorListener(tour: ProductTour, selector: string): void {\n const currentElement = document.querySelector(selector)\n const existingListenerData = this._triggerSelectorListeners.get(tour.id)\n\n if (!currentElement) {\n if (existingListenerData) {\n this._removeTriggerSelectorListener(tour.id)\n }\n return\n }\n\n if (existingListenerData) {\n if (currentElement !== existingListenerData.element) {\n logger.info(`Trigger element changed for tour ${tour.id}. Re-attaching listener.`)\n this._removeTriggerSelectorListener(tour.id)\n } else {\n return\n }\n }\n\n if (!currentElement.hasAttribute(TRIGGER_LISTENER_ATTRIBUTE)) {\n const listener = (event: Event) => {\n if (this._activeTour) {\n logger.info(`Tour ${tour.id} trigger clicked but another tour is active`)\n return\n }\n\n let currentTour: ProductTour | undefined\n this._instance.productTours?.getProductTours((tours) => {\n currentTour = tours.find((t) => t.id === tour.id)\n })\n\n if (!currentTour) {\n logger.warn(`Tour ${tour.id} no longer exists. Removing stale listener.`)\n this._removeTriggerSelectorListener(tour.id)\n return\n }\n\n if (!isTourInDateRange(currentTour)) {\n logger.warn(`Tour ${tour.id} trigger clicked, but tour is not launched - not showing tour.`)\n return\n }\n\n logger.info(`Tour ${tour.id} triggered by click on ${selector}`)\n\n if (this.showTour(currentTour, { reason: 'trigger' })) {\n event.preventDefault()\n } else {\n logger.info(`Tour ${tour.id} failed to show; not intercepting click.`)\n }\n }\n\n addEventListener(currentElement, 'click', listener)\n currentElement.setAttribute(TRIGGER_LISTENER_ATTRIBUTE, tour.id)\n this._triggerSelectorListeners.set(tour.id, { element: currentElement, listener, tour })\n logger.info(`Attached trigger listener for tour ${tour.id} on ${selector}`)\n }\n }\n\n private _removeTriggerSelectorListener(tourId: string): void {\n const existing = this._triggerSelectorListeners.get(tourId)\n if (existing) {\n existing.element.removeEventListener('click', existing.listener)\n existing.element.removeAttribute(TRIGGER_LISTENER_ATTRIBUTE)\n this._triggerSelectorListeners.delete(tourId)\n logger.info(`Removed trigger listener for tour ${tourId}`)\n }\n }\n\n private _removeAllTriggerListeners(): void {\n this._triggerSelectorListeners.forEach((_, tourId) => {\n this._removeTriggerSelectorListener(tourId)\n })\n }\n\n private _captureEvent(eventName: ProductTourEventName | SurveyEventName, properties: Record<string, any>): void {\n if (this._isPreviewMode) {\n return\n }\n this._instance.capture(eventName, properties)\n }\n\n private _captureStepShown(extraProps?: Record<string, any>): void {\n if (!this._activeTour) {\n return\n }\n const step = this._activeTour.steps[this._currentStepIndex]\n this._captureEvent(ProductTourEventName.STEP_SHOWN, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_STEP_ID]: step.id,\n [ProductTourEventProperties.TOUR_STEP_ORDER]: this._currentStepIndex,\n [ProductTourEventProperties.TOUR_STEP_TYPE]: step.type,\n ...extraProps,\n })\n }\n\n private _captureStepSelectorFailed(result: ElementFindResult, extraProps?: Record<string, any>): void {\n if (!this._activeTour) {\n return\n }\n const step = this._activeTour.steps[this._currentStepIndex]\n this._captureEvent(ProductTourEventName.STEP_SELECTOR_FAILED, {\n [ProductTourEventProperties.TOUR_ID]: this._activeTour.id,\n [ProductTourEventProperties.TOUR_STEP_ID]: step.id,\n [ProductTourEventProperties.TOUR_STEP_ORDER]: this._currentStepIndex,\n [ProductTourEventProperties.TOUR_STEP_SELECTOR]: step.selector,\n [ProductTourEventProperties.TOUR_ERROR]: result.error,\n [ProductTourEventProperties.TOUR_MATCHES_COUNT]: result.matchCount,\n [ProductTourEventProperties.TOUR_FAILURE_PHASE]: 'runtime',\n ...extraProps,\n })\n }\n\n // Public API methods delegated from PostHogProductTours\n getActiveProductTours(callback: ProductTourCallback): void {\n this._instance.productTours?.getProductTours((tours, context) => {\n if (!context?.isLoaded) {\n callback([], context)\n return\n }\n\n const activeTours = tours.filter((tour) => this._isTourEligible(tour))\n callback(activeTours, context)\n })\n }\n\n resetTour(tourId: string): void {\n localStore._remove(`${TOUR_SHOWN_KEY_PREFIX}${tourId}`)\n localStore._remove(`${TOUR_COMPLETED_KEY_PREFIX}${tourId}`)\n localStore._remove(`${TOUR_DISMISSED_KEY_PREFIX}${tourId}`)\n }\n\n resetAllTours(): void {\n const storage = window?.localStorage\n if (!storage) {\n return\n }\n const keysToRemove: string[] = []\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (\n key?.startsWith(TOUR_SHOWN_KEY_PREFIX) ||\n key?.startsWith(TOUR_COMPLETED_KEY_PREFIX) ||\n key?.startsWith(TOUR_DISMISSED_KEY_PREFIX)\n ) {\n keysToRemove.push(key)\n }\n }\n keysToRemove.forEach((key) => localStore._remove(key))\n }\n\n cancelPendingTour(tourId: string): void {\n const timeout = this._pendingTourTimeouts.get(tourId)\n if (timeout) {\n clearTimeout(timeout)\n this._pendingTourTimeouts.delete(tourId)\n logger.info(`Cancelled pending tour: ${tourId}`)\n }\n }\n\n private _cancelAllPendingTours(): void {\n this._pendingTourTimeouts.forEach((timeout) => clearTimeout(timeout))\n this._pendingTourTimeouts.clear()\n }\n\n isTourPending(tourId: string): boolean {\n return this._pendingTourTimeouts.has(tourId)\n }\n\n queueTourWithDelay(tourId: string, delaySeconds: number, reason?: ProductTourRenderReason): void {\n logger.info(`Queueing tour ${tourId} with ${delaySeconds}s delay`)\n\n const timeoutId = setTimeout(() => {\n this._pendingTourTimeouts.delete(tourId)\n logger.info(`Delay elapsed for tour ${tourId}, showing now`)\n this.showTourById(tourId, reason)\n }, delaySeconds * 1000)\n\n this._pendingTourTimeouts.set(tourId, timeoutId)\n }\n}\n"]}
@@ -48,6 +48,8 @@ export interface ProductTourSurveyQuestion {
48
48
  lowerBoundLabel?: string;
49
49
  /** Label for high end of rating scale (e.g., "Very likely") */
50
50
  upperBoundLabel?: string;
51
+ submitButtonText?: string;
52
+ backButtonText?: string;
51
53
  }
52
54
  export interface ProductTourStep {
53
55
  id: string;
@@ -75,6 +77,18 @@ export interface ProductTourStep {
75
77
  buttons?: ProductTourStepButtons;
76
78
  /** Banner configuration (only for banner steps) */
77
79
  bannerConfig?: ProductTourBannerConfig;
80
+ /** translation data for this tour step */
81
+ translations?: Record<string, ProductTourStepTranslation>;
82
+ }
83
+ /** all translatable content for a given tour step */
84
+ export interface ProductTourStepTranslation {
85
+ content?: ProductTourStep['content'];
86
+ contentHtml?: ProductTourStep['contentHtml'];
87
+ buttons?: {
88
+ primary?: Pick<ProductTourStepButton, 'text'>;
89
+ secondary?: Pick<ProductTourStepButton, 'text'>;
90
+ };
91
+ survey?: Pick<ProductTourSurveyQuestion, 'questionText' | 'lowerBoundLabel' | 'upperBoundLabel' | 'submitButtonText' | 'backButtonText'>;
78
92
  }
79
93
  export interface ProductTourConditions {
80
94
  url?: string;
@@ -137,3 +151,43 @@ export interface ShowTourOptions {
137
151
  reason?: ProductTourRenderReason;
138
152
  enableStrictValidation?: boolean;
139
153
  }
154
+ export declare enum ProductTourEventName {
155
+ SHOWN = "product tour shown",
156
+ DISMISSED = "product tour dismissed",
157
+ COMPLETED = "product tour completed",
158
+ STEP_SHOWN = "product tour step shown",
159
+ STEP_COMPLETED = "product tour step completed",
160
+ BUTTON_CLICKED = "product tour button clicked",
161
+ STEP_SELECTOR_FAILED = "product tour step selector failed",
162
+ BANNER_CONTAINER_SELECTOR_FAILED = "product tour banner container selector failed"
163
+ }
164
+ export declare enum ProductTourEventProperties {
165
+ TOUR_ID = "$product_tour_id",
166
+ TOUR_NAME = "$product_tour_name",
167
+ TOUR_ITERATION = "$product_tour_iteration",
168
+ TOUR_RENDER_REASON = "$product_tour_render_reason",
169
+ TOUR_STEP_ID = "$product_tour_step_id",
170
+ TOUR_STEP_ORDER = "$product_tour_step_order",
171
+ TOUR_STEP_TYPE = "$product_tour_step_type",
172
+ TOUR_DISMISS_REASON = "$product_tour_dismiss_reason",
173
+ TOUR_BUTTON_TEXT = "$product_tour_button_text",
174
+ TOUR_BUTTON_ACTION = "$product_tour_button_action",
175
+ TOUR_BUTTON_LINK = "$product_tour_button_link",
176
+ TOUR_BUTTON_TOUR_ID = "$product_tour_button_tour_id",
177
+ TOUR_STEPS_COUNT = "$product_tour_steps_count",
178
+ TOUR_STEP_SELECTOR = "$product_tour_step_selector",
179
+ TOUR_STEP_SELECTOR_FOUND = "$product_tour_step_selector_found",
180
+ TOUR_STEP_ELEMENT_TAG = "$product_tour_step_element_tag",
181
+ TOUR_STEP_ELEMENT_ID = "$product_tour_step_element_id",
182
+ TOUR_STEP_ELEMENT_CLASSES = "$product_tour_step_element_classes",
183
+ TOUR_STEP_ELEMENT_TEXT = "$product_tour_step_element_text",
184
+ TOUR_ERROR = "$product_tour_error",
185
+ TOUR_MATCHES_COUNT = "$product_tour_matches_count",
186
+ TOUR_FAILURE_PHASE = "$product_tour_failure_phase",
187
+ TOUR_WAITED_FOR_ELEMENT = "$product_tour_waited_for_element",
188
+ TOUR_WAIT_DURATION_MS = "$product_tour_wait_duration_ms",
189
+ TOUR_BANNER_SELECTOR = "$product_tour_banner_selector",
190
+ TOUR_LINKED_SURVEY_ID = "$product_tour_linked_survey_id",
191
+ USE_MANUAL_SELECTOR = "$use_manual_selector",
192
+ INFERENCE_DATA_PRESENT = "$inference_data_present"
193
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_PRODUCT_TOUR_APPEARANCE = void 0;
3
+ exports.ProductTourEventProperties = exports.ProductTourEventName = exports.DEFAULT_PRODUCT_TOUR_APPEARANCE = void 0;
4
4
  var constants_1 = require("./constants");
5
5
  exports.DEFAULT_PRODUCT_TOUR_APPEARANCE = {
6
6
  backgroundColor: '#ffffff',
@@ -16,4 +16,46 @@ exports.DEFAULT_PRODUCT_TOUR_APPEARANCE = {
16
16
  dismissOnClickOutside: true,
17
17
  zIndex: constants_1.Z_INDEX_TOURS,
18
18
  };
19
+ var ProductTourEventName;
20
+ (function (ProductTourEventName) {
21
+ ProductTourEventName["SHOWN"] = "product tour shown";
22
+ ProductTourEventName["DISMISSED"] = "product tour dismissed";
23
+ ProductTourEventName["COMPLETED"] = "product tour completed";
24
+ ProductTourEventName["STEP_SHOWN"] = "product tour step shown";
25
+ ProductTourEventName["STEP_COMPLETED"] = "product tour step completed";
26
+ ProductTourEventName["BUTTON_CLICKED"] = "product tour button clicked";
27
+ ProductTourEventName["STEP_SELECTOR_FAILED"] = "product tour step selector failed";
28
+ ProductTourEventName["BANNER_CONTAINER_SELECTOR_FAILED"] = "product tour banner container selector failed";
29
+ })(ProductTourEventName || (exports.ProductTourEventName = ProductTourEventName = {}));
30
+ var ProductTourEventProperties;
31
+ (function (ProductTourEventProperties) {
32
+ ProductTourEventProperties["TOUR_ID"] = "$product_tour_id";
33
+ ProductTourEventProperties["TOUR_NAME"] = "$product_tour_name";
34
+ ProductTourEventProperties["TOUR_ITERATION"] = "$product_tour_iteration";
35
+ ProductTourEventProperties["TOUR_RENDER_REASON"] = "$product_tour_render_reason";
36
+ ProductTourEventProperties["TOUR_STEP_ID"] = "$product_tour_step_id";
37
+ ProductTourEventProperties["TOUR_STEP_ORDER"] = "$product_tour_step_order";
38
+ ProductTourEventProperties["TOUR_STEP_TYPE"] = "$product_tour_step_type";
39
+ ProductTourEventProperties["TOUR_DISMISS_REASON"] = "$product_tour_dismiss_reason";
40
+ ProductTourEventProperties["TOUR_BUTTON_TEXT"] = "$product_tour_button_text";
41
+ ProductTourEventProperties["TOUR_BUTTON_ACTION"] = "$product_tour_button_action";
42
+ ProductTourEventProperties["TOUR_BUTTON_LINK"] = "$product_tour_button_link";
43
+ ProductTourEventProperties["TOUR_BUTTON_TOUR_ID"] = "$product_tour_button_tour_id";
44
+ ProductTourEventProperties["TOUR_STEPS_COUNT"] = "$product_tour_steps_count";
45
+ ProductTourEventProperties["TOUR_STEP_SELECTOR"] = "$product_tour_step_selector";
46
+ ProductTourEventProperties["TOUR_STEP_SELECTOR_FOUND"] = "$product_tour_step_selector_found";
47
+ ProductTourEventProperties["TOUR_STEP_ELEMENT_TAG"] = "$product_tour_step_element_tag";
48
+ ProductTourEventProperties["TOUR_STEP_ELEMENT_ID"] = "$product_tour_step_element_id";
49
+ ProductTourEventProperties["TOUR_STEP_ELEMENT_CLASSES"] = "$product_tour_step_element_classes";
50
+ ProductTourEventProperties["TOUR_STEP_ELEMENT_TEXT"] = "$product_tour_step_element_text";
51
+ ProductTourEventProperties["TOUR_ERROR"] = "$product_tour_error";
52
+ ProductTourEventProperties["TOUR_MATCHES_COUNT"] = "$product_tour_matches_count";
53
+ ProductTourEventProperties["TOUR_FAILURE_PHASE"] = "$product_tour_failure_phase";
54
+ ProductTourEventProperties["TOUR_WAITED_FOR_ELEMENT"] = "$product_tour_waited_for_element";
55
+ ProductTourEventProperties["TOUR_WAIT_DURATION_MS"] = "$product_tour_wait_duration_ms";
56
+ ProductTourEventProperties["TOUR_BANNER_SELECTOR"] = "$product_tour_banner_selector";
57
+ ProductTourEventProperties["TOUR_LINKED_SURVEY_ID"] = "$product_tour_linked_survey_id";
58
+ ProductTourEventProperties["USE_MANUAL_SELECTOR"] = "$use_manual_selector";
59
+ ProductTourEventProperties["INFERENCE_DATA_PRESENT"] = "$inference_data_present";
60
+ })(ProductTourEventProperties || (exports.ProductTourEventProperties = ProductTourEventProperties = {}));
19
61
  //# sourceMappingURL=posthog-product-tours-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"posthog-product-tours-types.js","sourceRoot":"","sources":["../../src/posthog-product-tours-types.ts"],"names":[],"mappings":";;;AAIA,yCAA2C;AAoJ9B,QAAA,+BAA+B,GAAoC;IAC5E,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,WAAW;IACvB,SAAS,EAAE,gCAAgC;IAC3C,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;IACjB,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,yBAAa;CACxB,CAAA","sourcesContent":["import { PropertyMatchType } from './types'\nimport { SurveyActionType, SurveyEventWithFilters } from './posthog-surveys-types'\nimport type { InferredSelector } from './extensions/product-tours/element-inference'\nimport { SurveyPosition } from '@posthog/core'\nimport { Z_INDEX_TOURS } from './constants'\n\nexport interface JSONContent {\n type?: string\n attrs?: Record<string, any>\n content?: JSONContent[]\n marks?: { type: string; attrs?: Record<string, any> }[]\n text?: string\n}\n\nexport type ProductTourStepType = 'element' | 'modal' | 'survey' | 'banner'\n\nexport interface ProductTourBannerConfig {\n behavior: 'sticky' | 'static' | 'custom'\n selector?: string\n action?: {\n type: 'none' | 'link' | 'trigger_tour'\n link?: string\n tourId?: string\n }\n}\n\n/** Button actions available on modal steps */\nexport type ProductTourButtonAction = 'dismiss' | 'link' | 'next_step' | 'previous_step' | 'trigger_tour'\n\nexport interface ProductTourStepButton {\n text: string\n action: ProductTourButtonAction\n /** URL to open when action is 'link' */\n link?: string\n /** Tour ID to trigger when action is 'trigger_tour' */\n tourId?: string\n}\n\nexport interface ProductTourStepButtons {\n primary?: ProductTourStepButton\n secondary?: ProductTourStepButton\n}\n\nexport type ProductTourSurveyQuestionType = 'open' | 'rating'\n\nexport interface ProductTourSurveyQuestion {\n type: ProductTourSurveyQuestionType\n questionText: string\n /** Rating display type - emoji or number */\n display?: 'emoji' | 'number'\n /** Rating scale - 3 or 5 for emoji, 5 or 10 for number */\n scale?: 3 | 5 | 10\n /** Label for low end of rating scale (e.g., \"Not likely\") */\n lowerBoundLabel?: string\n /** Label for high end of rating scale (e.g., \"Very likely\") */\n upperBoundLabel?: string\n}\n\nexport interface ProductTourStep {\n id: string\n type: ProductTourStepType\n selector?: string\n progressionTrigger: 'button' | 'click'\n content: JSONContent | null\n /** Pre-rendered HTML content from the editor. If present, SDK should use this instead of rendering from JSONContent. */\n contentHtml?: string\n /** Inline survey question config - if present, this is a survey step */\n survey?: ProductTourSurveyQuestion\n /** ID of the auto-created survey for this step (set by backend) */\n linkedSurveyId?: string\n /** ID of the survey question (set by backend, used for event tracking) */\n linkedSurveyQuestionId?: string\n /** Enhanced element data for more reliable lookup at runtime */\n inferenceData?: InferredSelector\n /** Use CSS selector instead of inference. Defaults to false (use inference). */\n useManualSelector?: boolean\n /** Maximum tooltip width in pixels (defaults to 320px) */\n maxWidth?: number\n /** Position for modal/survey steps (defaults to middle_center) */\n modalPosition?: SurveyPosition\n /** Button configuration for modal steps */\n buttons?: ProductTourStepButtons\n /** Banner configuration (only for banner steps) */\n bannerConfig?: ProductTourBannerConfig\n}\n\nexport interface ProductTourConditions {\n url?: string\n urlMatchType?: PropertyMatchType\n selector?: string\n autoShowDelaySeconds?: number\n events?: {\n values: SurveyEventWithFilters[]\n } | null\n cancelEvents?: {\n values: SurveyEventWithFilters[]\n } | null\n actions?: {\n values: SurveyActionType[]\n } | null\n linkedFlagVariant?: string\n}\n\nexport interface ProductTourAppearance {\n backgroundColor?: string\n textColor?: string\n buttonColor?: string\n borderRadius?: number\n buttonBorderRadius?: number\n borderColor?: string\n fontFamily?: string\n boxShadow?: string\n showOverlay?: boolean\n whiteLabel?: boolean\n /** defaults to true, auto-set to false for announcements/banners */\n dismissOnClickOutside?: boolean\n zIndex?: number\n}\n\nexport type ProductTourDisplayFrequency = 'show_once' | 'until_interacted' | 'always'\n\nexport interface ProductTour {\n id: string\n name: string\n description?: string\n type: 'product_tour'\n auto_launch?: boolean\n start_date: string | null\n end_date: string | null\n current_iteration?: number\n conditions?: ProductTourConditions\n appearance?: ProductTourAppearance\n steps: ProductTourStep[]\n internal_targeting_flag_key?: string\n linked_flag_key?: string\n display_frequency?: ProductTourDisplayFrequency\n disable_image_preload?: boolean\n}\n\nexport type ProductTourCallback = (tours: ProductTour[], context?: { isLoaded: boolean; error?: string }) => void\n\nexport type ProductTourSelectorError = 'not_found' | 'multiple_matches' | 'not_visible'\n\nexport type ProductTourDismissReason =\n | 'user_clicked_skip'\n | 'user_clicked_outside'\n | 'escape_key'\n | 'element_unavailable'\n | 'container_unavailable'\n\nexport type ProductTourRenderReason = 'auto' | 'api' | 'trigger' | 'event'\n\nexport const DEFAULT_PRODUCT_TOUR_APPEARANCE: Required<ProductTourAppearance> = {\n backgroundColor: '#ffffff',\n textColor: '#1d1f27',\n buttonColor: '#1d1f27',\n borderRadius: 8,\n buttonBorderRadius: 6,\n borderColor: '#e5e7eb',\n fontFamily: 'system-ui',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n showOverlay: true,\n whiteLabel: false,\n dismissOnClickOutside: true,\n zIndex: Z_INDEX_TOURS,\n}\n\nexport interface ShowTourOptions {\n reason?: ProductTourRenderReason\n enableStrictValidation?: boolean\n}\n"]}
1
+ {"version":3,"file":"posthog-product-tours-types.js","sourceRoot":"","sources":["../../src/posthog-product-tours-types.ts"],"names":[],"mappings":";;;AAIA,yCAA2C;AAsK9B,QAAA,+BAA+B,GAAoC;IAC5E,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,WAAW;IACvB,SAAS,EAAE,gCAAgC;IAC3C,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;IACjB,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,yBAAa;CACxB,CAAA;AAOD,IAAY,oBASX;AATD,WAAY,oBAAoB;IAC5B,oDAA4B,CAAA;IAC5B,4DAAoC,CAAA;IACpC,4DAAoC,CAAA;IACpC,8DAAsC,CAAA;IACtC,sEAA8C,CAAA;IAC9C,sEAA8C,CAAA;IAC9C,kFAA0D,CAAA;IAC1D,0GAAkF,CAAA;AACtF,CAAC,EATW,oBAAoB,oCAApB,oBAAoB,QAS/B;AAED,IAAY,0BA6BX;AA7BD,WAAY,0BAA0B;IAClC,0DAA4B,CAAA;IAC5B,8DAAgC,CAAA;IAChC,wEAA0C,CAAA;IAC1C,gFAAkD,CAAA;IAClD,oEAAsC,CAAA;IACtC,0EAA4C,CAAA;IAC5C,wEAA0C,CAAA;IAC1C,kFAAoD,CAAA;IACpD,4EAA8C,CAAA;IAC9C,gFAAkD,CAAA;IAClD,4EAA8C,CAAA;IAC9C,kFAAoD,CAAA;IACpD,4EAA8C,CAAA;IAC9C,gFAAkD,CAAA;IAClD,4FAA8D,CAAA;IAC9D,sFAAwD,CAAA;IACxD,oFAAsD,CAAA;IACtD,8FAAgE,CAAA;IAChE,wFAA0D,CAAA;IAC1D,gEAAkC,CAAA;IAClC,gFAAkD,CAAA;IAClD,gFAAkD,CAAA;IAClD,0FAA4D,CAAA;IAC5D,sFAAwD,CAAA;IACxD,oFAAsD,CAAA;IACtD,sFAAwD,CAAA;IACxD,0EAA4C,CAAA;IAC5C,gFAAkD,CAAA;AACtD,CAAC,EA7BW,0BAA0B,0CAA1B,0BAA0B,QA6BrC","sourcesContent":["import { PropertyMatchType } from './types'\nimport { SurveyActionType, SurveyEventWithFilters } from './posthog-surveys-types'\nimport type { InferredSelector } from './extensions/product-tours/element-inference'\nimport { SurveyPosition } from '@posthog/core'\nimport { Z_INDEX_TOURS } from './constants'\n\nexport interface JSONContent {\n type?: string\n attrs?: Record<string, any>\n content?: JSONContent[]\n marks?: { type: string; attrs?: Record<string, any> }[]\n text?: string\n}\n\nexport type ProductTourStepType = 'element' | 'modal' | 'survey' | 'banner'\n\nexport interface ProductTourBannerConfig {\n behavior: 'sticky' | 'static' | 'custom'\n selector?: string\n action?: {\n type: 'none' | 'link' | 'trigger_tour'\n link?: string\n tourId?: string\n }\n}\n\n/** Button actions available on modal steps */\nexport type ProductTourButtonAction = 'dismiss' | 'link' | 'next_step' | 'previous_step' | 'trigger_tour'\n\nexport interface ProductTourStepButton {\n text: string\n action: ProductTourButtonAction\n /** URL to open when action is 'link' */\n link?: string\n /** Tour ID to trigger when action is 'trigger_tour' */\n tourId?: string\n}\n\nexport interface ProductTourStepButtons {\n primary?: ProductTourStepButton\n secondary?: ProductTourStepButton\n}\n\nexport type ProductTourSurveyQuestionType = 'open' | 'rating'\n\nexport interface ProductTourSurveyQuestion {\n type: ProductTourSurveyQuestionType\n questionText: string\n /** Rating display type - emoji or number */\n display?: 'emoji' | 'number'\n /** Rating scale - 3 or 5 for emoji, 5 or 10 for number */\n scale?: 3 | 5 | 10\n /** Label for low end of rating scale (e.g., \"Not likely\") */\n lowerBoundLabel?: string\n /** Label for high end of rating scale (e.g., \"Very likely\") */\n upperBoundLabel?: string\n submitButtonText?: string\n backButtonText?: string\n}\n\nexport interface ProductTourStep {\n id: string\n type: ProductTourStepType\n selector?: string\n progressionTrigger: 'button' | 'click'\n content: JSONContent | null\n /** Pre-rendered HTML content from the editor. If present, SDK should use this instead of rendering from JSONContent. */\n contentHtml?: string\n /** Inline survey question config - if present, this is a survey step */\n survey?: ProductTourSurveyQuestion\n /** ID of the auto-created survey for this step (set by backend) */\n linkedSurveyId?: string\n /** ID of the survey question (set by backend, used for event tracking) */\n linkedSurveyQuestionId?: string\n /** Enhanced element data for more reliable lookup at runtime */\n inferenceData?: InferredSelector\n /** Use CSS selector instead of inference. Defaults to false (use inference). */\n useManualSelector?: boolean\n /** Maximum tooltip width in pixels (defaults to 320px) */\n maxWidth?: number\n /** Position for modal/survey steps (defaults to middle_center) */\n modalPosition?: SurveyPosition\n /** Button configuration for modal steps */\n buttons?: ProductTourStepButtons\n /** Banner configuration (only for banner steps) */\n bannerConfig?: ProductTourBannerConfig\n /** translation data for this tour step */\n translations?: Record<string, ProductTourStepTranslation>\n}\n\n/** all translatable content for a given tour step */\nexport interface ProductTourStepTranslation {\n content?: ProductTourStep['content']\n contentHtml?: ProductTourStep['contentHtml']\n buttons?: {\n primary?: Pick<ProductTourStepButton, 'text'>\n secondary?: Pick<ProductTourStepButton, 'text'>\n }\n survey?: Pick<\n ProductTourSurveyQuestion,\n 'questionText' | 'lowerBoundLabel' | 'upperBoundLabel' | 'submitButtonText' | 'backButtonText'\n >\n}\n\nexport interface ProductTourConditions {\n url?: string\n urlMatchType?: PropertyMatchType\n selector?: string\n autoShowDelaySeconds?: number\n events?: {\n values: SurveyEventWithFilters[]\n } | null\n cancelEvents?: {\n values: SurveyEventWithFilters[]\n } | null\n actions?: {\n values: SurveyActionType[]\n } | null\n linkedFlagVariant?: string\n}\n\nexport interface ProductTourAppearance {\n backgroundColor?: string\n textColor?: string\n buttonColor?: string\n borderRadius?: number\n buttonBorderRadius?: number\n borderColor?: string\n fontFamily?: string\n boxShadow?: string\n showOverlay?: boolean\n whiteLabel?: boolean\n /** defaults to true, auto-set to false for announcements/banners */\n dismissOnClickOutside?: boolean\n zIndex?: number\n}\n\nexport type ProductTourDisplayFrequency = 'show_once' | 'until_interacted' | 'always'\n\nexport interface ProductTour {\n id: string\n name: string\n description?: string\n type: 'product_tour'\n auto_launch?: boolean\n start_date: string | null\n end_date: string | null\n current_iteration?: number\n conditions?: ProductTourConditions\n appearance?: ProductTourAppearance\n steps: ProductTourStep[]\n internal_targeting_flag_key?: string\n linked_flag_key?: string\n display_frequency?: ProductTourDisplayFrequency\n disable_image_preload?: boolean\n}\n\nexport type ProductTourCallback = (tours: ProductTour[], context?: { isLoaded: boolean; error?: string }) => void\n\nexport type ProductTourSelectorError = 'not_found' | 'multiple_matches' | 'not_visible'\n\nexport type ProductTourDismissReason =\n | 'user_clicked_skip'\n | 'user_clicked_outside'\n | 'escape_key'\n | 'element_unavailable'\n | 'container_unavailable'\n\nexport type ProductTourRenderReason = 'auto' | 'api' | 'trigger' | 'event'\n\nexport const DEFAULT_PRODUCT_TOUR_APPEARANCE: Required<ProductTourAppearance> = {\n backgroundColor: '#ffffff',\n textColor: '#1d1f27',\n buttonColor: '#1d1f27',\n borderRadius: 8,\n buttonBorderRadius: 6,\n borderColor: '#e5e7eb',\n fontFamily: 'system-ui',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n showOverlay: true,\n whiteLabel: false,\n dismissOnClickOutside: true,\n zIndex: Z_INDEX_TOURS,\n}\n\nexport interface ShowTourOptions {\n reason?: ProductTourRenderReason\n enableStrictValidation?: boolean\n}\n\nexport enum ProductTourEventName {\n SHOWN = 'product tour shown',\n DISMISSED = 'product tour dismissed',\n COMPLETED = 'product tour completed',\n STEP_SHOWN = 'product tour step shown',\n STEP_COMPLETED = 'product tour step completed',\n BUTTON_CLICKED = 'product tour button clicked',\n STEP_SELECTOR_FAILED = 'product tour step selector failed',\n BANNER_CONTAINER_SELECTOR_FAILED = 'product tour banner container selector failed',\n}\n\nexport enum ProductTourEventProperties {\n TOUR_ID = '$product_tour_id',\n TOUR_NAME = '$product_tour_name',\n TOUR_ITERATION = '$product_tour_iteration',\n TOUR_RENDER_REASON = '$product_tour_render_reason',\n TOUR_STEP_ID = '$product_tour_step_id',\n TOUR_STEP_ORDER = '$product_tour_step_order',\n TOUR_STEP_TYPE = '$product_tour_step_type',\n TOUR_DISMISS_REASON = '$product_tour_dismiss_reason',\n TOUR_BUTTON_TEXT = '$product_tour_button_text',\n TOUR_BUTTON_ACTION = '$product_tour_button_action',\n TOUR_BUTTON_LINK = '$product_tour_button_link',\n TOUR_BUTTON_TOUR_ID = '$product_tour_button_tour_id',\n TOUR_STEPS_COUNT = '$product_tour_steps_count',\n TOUR_STEP_SELECTOR = '$product_tour_step_selector',\n TOUR_STEP_SELECTOR_FOUND = '$product_tour_step_selector_found',\n TOUR_STEP_ELEMENT_TAG = '$product_tour_step_element_tag',\n TOUR_STEP_ELEMENT_ID = '$product_tour_step_element_id',\n TOUR_STEP_ELEMENT_CLASSES = '$product_tour_step_element_classes',\n TOUR_STEP_ELEMENT_TEXT = '$product_tour_step_element_text',\n TOUR_ERROR = '$product_tour_error',\n TOUR_MATCHES_COUNT = '$product_tour_matches_count',\n TOUR_FAILURE_PHASE = '$product_tour_failure_phase',\n TOUR_WAITED_FOR_ELEMENT = '$product_tour_waited_for_element',\n TOUR_WAIT_DURATION_MS = '$product_tour_wait_duration_ms',\n TOUR_BANNER_SELECTOR = '$product_tour_banner_selector',\n TOUR_LINKED_SURVEY_ID = '$product_tour_linked_survey_id',\n USE_MANUAL_SELECTOR = '$use_manual_selector',\n INFERENCE_DATA_PRESENT = '$inference_data_present',\n}\n"]}
@@ -17,6 +17,7 @@ var __extends = (this && this.__extends) || (function () {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.ProductTourEventReceiver = void 0;
19
19
  var constants_1 = require("../constants");
20
+ var posthog_product_tours_types_1 = require("../posthog-product-tours-types");
20
21
  var event_receiver_1 = require("./event-receiver");
21
22
  var logger_1 = require("./logger");
22
23
  var storage_1 = require("../storage");
@@ -31,7 +32,7 @@ var ProductTourEventReceiver = /** @class */ (function (_super) {
31
32
  return constants_1.PRODUCT_TOURS_ACTIVATED;
32
33
  };
33
34
  ProductTourEventReceiver.prototype._getShownEventName = function () {
34
- return 'product tour shown';
35
+ return posthog_product_tours_types_1.ProductTourEventName.SHOWN;
35
36
  };
36
37
  ProductTourEventReceiver.prototype._getItems = function (callback) {
37
38
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"product-tour-event-receiver.js","sourceRoot":"","sources":["../../../src/utils/product-tour-event-receiver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAsD;AAGtD,mDAAgD;AAChD,mCAAuC;AACvC,sCAAuC;AACvC,mEAA4G;AAE5G,IAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,+BAA+B,CAAC,CAAA;AAE5D;IAA8C,4CAA0B;IACpE,kCAAY,QAAiB;QACzB,OAAA,MAAK,YAAC,QAAQ,CAAC,SAAA;IACnB,CAAC;IAES,mDAAgB,GAA1B;QACI,OAAO,mCAAuB,CAAA;IAClC,CAAC;IAES,qDAAkB,GAA5B;QACI,OAAO,oBAAoB,CAAA;IAC/B,CAAC;IAES,4CAAS,GAAnB,UAAoB,QAAwC;;QACxD,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,YAAY,0CAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAES,qDAAkB,GAA5B,UAA6B,MAAc;;QACvC,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,YAAY,0CAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAES,6CAAU,GAApB;QACI,OAAO,MAAM,CAAA;IACjB,CAAC;IAES,+DAA4B,GAAtC,UAAuC,MAAe;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,IAAM,YAAY,GAAG,UAAG,qCAAyB,SAAG,MAAM,CAAE,CAAA;QAC5D,IAAM,YAAY,GAAG,UAAG,qCAAyB,SAAG,MAAM,CAAE,CAAA;QAC5D,OAAO,CAAC,CAAC,CAAC,oBAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,oBAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,2CAAQ,GAAR;QACI,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IACjC,CAAC;IACL,+BAAC;AAAD,CAAC,AAnCD,CAA8C,8BAAa,GAmC1D;AAnCY,4DAAwB","sourcesContent":["import { PRODUCT_TOURS_ACTIVATED } from '../constants'\nimport { ProductTour } from '../posthog-product-tours-types'\nimport { PostHog } from '../posthog-core'\nimport { EventReceiver } from './event-receiver'\nimport { createLogger } from './logger'\nimport { localStore } from '../storage'\nimport { TOUR_COMPLETED_KEY_PREFIX, TOUR_DISMISSED_KEY_PREFIX } from '../extensions/product-tours/constants'\n\nconst logger = createLogger('[Product Tour Event Receiver]')\n\nexport class ProductTourEventReceiver extends EventReceiver<ProductTour> {\n constructor(instance: PostHog) {\n super(instance)\n }\n\n protected _getActivatedKey(): string {\n return PRODUCT_TOURS_ACTIVATED\n }\n\n protected _getShownEventName(): string {\n return 'product tour shown'\n }\n\n protected _getItems(callback: (items: ProductTour[]) => void): void {\n this._instance?.productTours?.getProductTours(callback)\n }\n\n protected _cancelPendingItem(itemId: string): void {\n this._instance?.productTours?.cancelPendingTour(itemId)\n }\n\n protected _getLogger(): ReturnType<typeof createLogger> {\n return logger\n }\n\n protected _isItemPermanentlyIneligible(itemId?: string): boolean {\n if (!itemId) return true\n const completedKey = `${TOUR_COMPLETED_KEY_PREFIX}${itemId}`\n const dismissedKey = `${TOUR_DISMISSED_KEY_PREFIX}${itemId}`\n return !!(localStore._get(completedKey) || localStore._get(dismissedKey))\n }\n\n getTours(): string[] {\n return this.getActivatedIds()\n }\n}\n"]}
1
+ {"version":3,"file":"product-tour-event-receiver.js","sourceRoot":"","sources":["../../../src/utils/product-tour-event-receiver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAsD;AACtD,8EAAkF;AAElF,mDAAgD;AAChD,mCAAuC;AACvC,sCAAuC;AACvC,mEAA4G;AAE5G,IAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,+BAA+B,CAAC,CAAA;AAE5D;IAA8C,4CAA0B;IACpE,kCAAY,QAAiB;QACzB,OAAA,MAAK,YAAC,QAAQ,CAAC,SAAA;IACnB,CAAC;IAES,mDAAgB,GAA1B;QACI,OAAO,mCAAuB,CAAA;IAClC,CAAC;IAES,qDAAkB,GAA5B;QACI,OAAO,kDAAoB,CAAC,KAAK,CAAA;IACrC,CAAC;IAES,4CAAS,GAAnB,UAAoB,QAAwC;;QACxD,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,YAAY,0CAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAES,qDAAkB,GAA5B,UAA6B,MAAc;;QACvC,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,YAAY,0CAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAES,6CAAU,GAApB;QACI,OAAO,MAAM,CAAA;IACjB,CAAC;IAES,+DAA4B,GAAtC,UAAuC,MAAe;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,IAAM,YAAY,GAAG,UAAG,qCAAyB,SAAG,MAAM,CAAE,CAAA;QAC5D,IAAM,YAAY,GAAG,UAAG,qCAAyB,SAAG,MAAM,CAAE,CAAA;QAC5D,OAAO,CAAC,CAAC,CAAC,oBAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,oBAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,2CAAQ,GAAR;QACI,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IACjC,CAAC;IACL,+BAAC;AAAD,CAAC,AAnCD,CAA8C,8BAAa,GAmC1D;AAnCY,4DAAwB","sourcesContent":["import { PRODUCT_TOURS_ACTIVATED } from '../constants'\nimport { ProductTour, ProductTourEventName } from '../posthog-product-tours-types'\nimport { PostHog } from '../posthog-core'\nimport { EventReceiver } from './event-receiver'\nimport { createLogger } from './logger'\nimport { localStore } from '../storage'\nimport { TOUR_COMPLETED_KEY_PREFIX, TOUR_DISMISSED_KEY_PREFIX } from '../extensions/product-tours/constants'\n\nconst logger = createLogger('[Product Tour Event Receiver]')\n\nexport class ProductTourEventReceiver extends EventReceiver<ProductTour> {\n constructor(instance: PostHog) {\n super(instance)\n }\n\n protected _getActivatedKey(): string {\n return PRODUCT_TOURS_ACTIVATED\n }\n\n protected _getShownEventName(): string {\n return ProductTourEventName.SHOWN\n }\n\n protected _getItems(callback: (items: ProductTour[]) => void): void {\n this._instance?.productTours?.getProductTours(callback)\n }\n\n protected _cancelPendingItem(itemId: string): void {\n this._instance?.productTours?.cancelPendingTour(itemId)\n }\n\n protected _getLogger(): ReturnType<typeof createLogger> {\n return logger\n }\n\n protected _isItemPermanentlyIneligible(itemId?: string): boolean {\n if (!itemId) return true\n const completedKey = `${TOUR_COMPLETED_KEY_PREFIX}${itemId}`\n const dismissedKey = `${TOUR_DISMISSED_KEY_PREFIX}${itemId}`\n return !!(localStore._get(completedKey) || localStore._get(dismissedKey))\n }\n\n getTours(): string[] {\n return this.getActivatedIds()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"root":["../src/autocapture-utils.ts","../src/autocapture.ts","../src/config.ts","../src/consent.ts","../src/constants.ts","../src/declaration.d.ts","../src/heatmaps.ts","../src/page-view.ts","../src/posthog-conversations-types.ts","../src/posthog-core.ts","../src/posthog-exceptions.ts","../src/posthog-featureflags.ts","../src/posthog-logs.ts","../src/posthog-persistence.ts","../src/posthog-product-tours-types.ts","../src/posthog-product-tours.ts","../src/posthog-surveys-types.ts","../src/posthog-surveys.ts","../src/rate-limiter.ts","../src/remote-config.ts","../src/request-queue.ts","../src/request.ts","../src/retry-queue.ts","../src/scroll-manager.ts","../src/session-props.ts","../src/sessionid.ts","../src/site-apps.ts","../src/storage.ts","../src/types.ts","../src/uuidv7.ts","../src/web-experiments-types.ts","../src/web-experiments.ts","../src/web-types.d.ts","../src/customizations/before-send.ts","../src/customizations/index.ts","../src/customizations/posthogReduxLogger.ts","../src/customizations/setAllPersonProfilePropertiesAsPersonPropertiesForFlags.ts","../src/entrypoints/all-external-dependencies.ts","../src/entrypoints/array.full.es5.ts","../src/entrypoints/array.full.no-external.ts","../src/entrypoints/array.full.ts","../src/entrypoints/array.no-external.ts","../src/entrypoints/array.ts","../src/entrypoints/conversations.ts","../src/entrypoints/crisp-chat-integration.ts","../src/entrypoints/customizations.full.ts","../src/entrypoints/dead-clicks-autocapture.ts","../src/entrypoints/element-inference.es.ts","../src/entrypoints/exception-autocapture.ts","../src/entrypoints/external-scripts-loader.ts","../src/entrypoints/intercom-integration.ts","../src/entrypoints/lazy-recorder.ts","../src/entrypoints/logs.ts","../src/entrypoints/main.cjs.ts","../src/entrypoints/module.es.ts","../src/entrypoints/module.full.es.ts","../src/entrypoints/module.full.no-external.es.ts","../src/entrypoints/module.no-external.es.ts","../src/entrypoints/posthog-recorder.ts","../src/entrypoints/product-tours-preview.es.ts","../src/entrypoints/product-tours.ts","../src/entrypoints/recorder-v2.ts","../src/entrypoints/recorder.ts","../src/entrypoints/surveys-preview.es.ts","../src/entrypoints/surveys.ts","../src/entrypoints/tracing-headers.ts","../src/entrypoints/web-vitals-with-attribution.ts","../src/entrypoints/web-vitals.ts","../src/extensions/dead-clicks-autocapture.ts","../src/extensions/external-integration.ts","../src/extensions/history-autocapture.ts","../src/extensions/rageclick.ts","../src/extensions/sampling.ts","../src/extensions/segment-integration.ts","../src/extensions/sentry-integration.ts","../src/extensions/surveys.tsx","../src/extensions/toolbar.ts","../src/extensions/tracing-headers.ts","../src/extensions/conversations/posthog-conversations.ts","../src/extensions/conversations/external/index.tsx","../src/extensions/conversations/external/persistence.ts","../src/extensions/conversations/external/components/CloseChatButton.tsx","../src/extensions/conversations/external/components/ConversationsWidget.tsx","../src/extensions/conversations/external/components/OpenChatButton.tsx","../src/extensions/conversations/external/components/RichContent.tsx","../src/extensions/conversations/external/components/SendMessageButton.tsx","../src/extensions/conversations/external/components/styles.ts","../src/extensions/exception-autocapture/index.ts","../src/extensions/product-tours/constants.ts","../src/extensions/product-tours/element-inference.ts","../src/extensions/product-tours/index.ts","../src/extensions/product-tours/preview.tsx","../src/extensions/product-tours/product-tours-utils.ts","../src/extensions/product-tours/product-tours.tsx","../src/extensions/product-tours/components/ProductTourBanner.tsx","../src/extensions/product-tours/components/ProductTourSurveyStepInner.tsx","../src/extensions/product-tours/components/ProductTourTooltip.tsx","../src/extensions/product-tours/components/ProductTourTooltipInner.tsx","../src/extensions/replay/session-recording.ts","../src/extensions/replay/external/config.ts","../src/extensions/replay/external/denylist.ts","../src/extensions/replay/external/flushed-size-tracker.ts","../src/extensions/replay/external/lazy-loaded-session-recorder.ts","../src/extensions/replay/external/mutation-throttler.ts","../src/extensions/replay/external/network-plugin.ts","../src/extensions/replay/external/sessionrecording-utils.ts","../src/extensions/replay/external/triggerMatching.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/types/rrweb-types.ts","../src/extensions/replay/types/rrweb.ts","../src/extensions/surveys/action-matcher.ts","../src/extensions/surveys/icons.tsx","../src/extensions/surveys/surveys-extension-utils.tsx","../src/extensions/surveys/components/BottomSection.tsx","../src/extensions/surveys/components/ConfirmationMessage.tsx","../src/extensions/surveys/components/PostHogLogo.tsx","../src/extensions/surveys/components/QuestionHeader.tsx","../src/extensions/surveys/components/QuestionTypes.tsx","../src/extensions/utils/stylesheet-loader.ts","../src/extensions/web-vitals/index.ts","../src/utils/blocked-uas.ts","../src/utils/element-utils.ts","../src/utils/elements-chain-utils.ts","../src/utils/encode-utils.ts","../src/utils/event-receiver.ts","../src/utils/event-utils.ts","../src/utils/globals.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/product-tour-event-receiver.ts","../src/utils/product-tour-utils.ts","../src/utils/property-utils.ts","../src/utils/prototype-utils.ts","../src/utils/regex-utils.ts","../src/utils/request-router.ts","../src/utils/request-utils.ts","../src/utils/simple-event-emitter.ts","../src/utils/survey-branching.ts","../src/utils/survey-event-receiver.ts","../src/utils/survey-url-prefill.ts","../src/utils/survey-utils.ts","../src/utils/type-utils.ts"],"version":"5.8.2"}
1
+ {"root":["../src/autocapture-utils.ts","../src/autocapture.ts","../src/config.ts","../src/consent.ts","../src/constants.ts","../src/declaration.d.ts","../src/heatmaps.ts","../src/page-view.ts","../src/posthog-conversations-types.ts","../src/posthog-core.ts","../src/posthog-exceptions.ts","../src/posthog-featureflags.ts","../src/posthog-logs.ts","../src/posthog-persistence.ts","../src/posthog-product-tours-types.ts","../src/posthog-product-tours.ts","../src/posthog-surveys-types.ts","../src/posthog-surveys.ts","../src/rate-limiter.ts","../src/remote-config.ts","../src/request-queue.ts","../src/request.ts","../src/retry-queue.ts","../src/scroll-manager.ts","../src/session-props.ts","../src/sessionid.ts","../src/site-apps.ts","../src/storage.ts","../src/types.ts","../src/uuidv7.ts","../src/web-experiments-types.ts","../src/web-experiments.ts","../src/web-types.d.ts","../src/customizations/before-send.ts","../src/customizations/index.ts","../src/customizations/posthogReduxLogger.ts","../src/customizations/setAllPersonProfilePropertiesAsPersonPropertiesForFlags.ts","../src/entrypoints/all-external-dependencies.ts","../src/entrypoints/array.full.es5.ts","../src/entrypoints/array.full.no-external.ts","../src/entrypoints/array.full.ts","../src/entrypoints/array.no-external.ts","../src/entrypoints/array.ts","../src/entrypoints/conversations.ts","../src/entrypoints/crisp-chat-integration.ts","../src/entrypoints/customizations.full.ts","../src/entrypoints/dead-clicks-autocapture.ts","../src/entrypoints/element-inference.es.ts","../src/entrypoints/exception-autocapture.ts","../src/entrypoints/external-scripts-loader.ts","../src/entrypoints/intercom-integration.ts","../src/entrypoints/lazy-recorder.ts","../src/entrypoints/logs.ts","../src/entrypoints/main.cjs.ts","../src/entrypoints/module.es.ts","../src/entrypoints/module.full.es.ts","../src/entrypoints/module.full.no-external.es.ts","../src/entrypoints/module.no-external.es.ts","../src/entrypoints/posthog-recorder.ts","../src/entrypoints/product-tours-preview.es.ts","../src/entrypoints/product-tours.ts","../src/entrypoints/recorder-v2.ts","../src/entrypoints/recorder.ts","../src/entrypoints/surveys-preview.es.ts","../src/entrypoints/surveys.ts","../src/entrypoints/tracing-headers.ts","../src/entrypoints/web-vitals-with-attribution.ts","../src/entrypoints/web-vitals.ts","../src/extensions/dead-clicks-autocapture.ts","../src/extensions/external-integration.ts","../src/extensions/history-autocapture.ts","../src/extensions/rageclick.ts","../src/extensions/sampling.ts","../src/extensions/segment-integration.ts","../src/extensions/sentry-integration.ts","../src/extensions/surveys.tsx","../src/extensions/toolbar.ts","../src/extensions/tracing-headers.ts","../src/extensions/conversations/posthog-conversations.ts","../src/extensions/conversations/external/index.tsx","../src/extensions/conversations/external/persistence.ts","../src/extensions/conversations/external/components/CloseChatButton.tsx","../src/extensions/conversations/external/components/ConversationsWidget.tsx","../src/extensions/conversations/external/components/OpenChatButton.tsx","../src/extensions/conversations/external/components/RichContent.tsx","../src/extensions/conversations/external/components/SendMessageButton.tsx","../src/extensions/conversations/external/components/TicketListItem.tsx","../src/extensions/conversations/external/components/TicketListView.tsx","../src/extensions/conversations/external/components/styles.ts","../src/extensions/conversations/external/components/utils.ts","../src/extensions/exception-autocapture/index.ts","../src/extensions/product-tours/constants.ts","../src/extensions/product-tours/element-inference.ts","../src/extensions/product-tours/index.ts","../src/extensions/product-tours/preview.tsx","../src/extensions/product-tours/product-tours-utils.ts","../src/extensions/product-tours/product-tours.tsx","../src/extensions/product-tours/components/ProductTourBanner.tsx","../src/extensions/product-tours/components/ProductTourSurveyStepInner.tsx","../src/extensions/product-tours/components/ProductTourTooltip.tsx","../src/extensions/product-tours/components/ProductTourTooltipInner.tsx","../src/extensions/replay/session-recording.ts","../src/extensions/replay/external/config.ts","../src/extensions/replay/external/denylist.ts","../src/extensions/replay/external/flushed-size-tracker.ts","../src/extensions/replay/external/lazy-loaded-session-recorder.ts","../src/extensions/replay/external/mutation-throttler.ts","../src/extensions/replay/external/network-plugin.ts","../src/extensions/replay/external/sessionrecording-utils.ts","../src/extensions/replay/external/triggerMatching.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/types/rrweb-types.ts","../src/extensions/replay/types/rrweb.ts","../src/extensions/surveys/action-matcher.ts","../src/extensions/surveys/icons.tsx","../src/extensions/surveys/surveys-extension-utils.tsx","../src/extensions/surveys/components/BottomSection.tsx","../src/extensions/surveys/components/ConfirmationMessage.tsx","../src/extensions/surveys/components/PostHogLogo.tsx","../src/extensions/surveys/components/QuestionHeader.tsx","../src/extensions/surveys/components/QuestionTypes.tsx","../src/extensions/utils/stylesheet-loader.ts","../src/extensions/web-vitals/index.ts","../src/utils/blocked-uas.ts","../src/utils/element-utils.ts","../src/utils/elements-chain-utils.ts","../src/utils/encode-utils.ts","../src/utils/event-receiver.ts","../src/utils/event-utils.ts","../src/utils/globals.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/product-tour-event-receiver.ts","../src/utils/product-tour-utils.ts","../src/utils/property-utils.ts","../src/utils/prototype-utils.ts","../src/utils/regex-utils.ts","../src/utils/request-router.ts","../src/utils/request-utils.ts","../src/utils/simple-event-emitter.ts","../src/utils/survey-branching.ts","../src/utils/survey-event-receiver.ts","../src/utils/survey-url-prefill.ts","../src/utils/survey-utils.ts","../src/utils/type-utils.ts"],"version":"5.8.2"}