@twick/timeline 0.15.8 → 0.15.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +143 -121
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +143 -121
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/constants.ts","../../media-utils/dist/index.mjs","../src/core/elements/base.element.ts","../src/core/elements/video.element.ts","../src/utils/timeline.utils.ts","../src/core/elements/audio.element.ts","../src/core/elements/image.element.ts","../src/core/elements/text.element.ts","../src/core/elements/caption.element.ts","../src/core/elements/icon.element.ts","../src/core/elements/circle.element.ts","../src/core/elements/rect.element.ts","../src/core/addOns/animation.ts","../src/core/addOns/frame-effect.ts","../src/core/addOns/text-effect.ts","../src/core/visitor/element-deserializer.ts","../src/core/visitor/element-serializer.ts","../src/core/visitor/element-validator.ts","../src/core/track/track.friend.ts","../src/core/track/track.ts","../src/services/data.service.ts","../src/core/visitor/element-adder.ts","../src/core/visitor/element-remover.ts","../src/core/visitor/element-updater.ts","../src/core/visitor/element-cloner.ts","../src/core/visitor/element-splitter.ts","../src/core/editor/timeline.editor.ts","../src/context/undo-redo-context.tsx","../src/utils/register-editor.ts","../../../node_modules/.pnpm/posthog-js@1.321.2/node_modules/posthog-js/dist/module.js","../../../node_modules/.pnpm/posthog-js@1.321.2/node_modules/posthog-js/react/dist/esm/index.js","../src/utils/version.ts","../src/utils/analytics.ts","../src/context/timeline-context.tsx","../src/index.ts"],"sourcesContent":["/**\n * Initial timeline data structure for new video editor projects.\n * Provides a default timeline with a sample text element to get started.\n * \n * @example\n * ```js\n * import { INITIAL_TIMELINE_DATA } from '@twick/timeline';\n * \n * // Use as starting point for new projects\n * const newProject = {\n * ...INITIAL_TIMELINE_DATA,\n * tracks: [...INITIAL_TIMELINE_DATA.tracks, newTrack]\n * };\n * ```\n */\nexport const INITIAL_TIMELINE_DATA = {\n tracks: [\n {\n type: \"element\",\n id: \"t-sample\",\n name: \"sample\",\n elements: [\n {\n id: \"e-sample\",\n trackId: \"t-sample\",\n name: \"sample\",\n type: \"text\",\n s: 0,\n e: 5,\n props: {\n text: \"Twick SDK\",\n fill: \"#FFFFFF\",\n },\n },\n ],\n },\n ],\n version: 1,\n};\n\n/**\n * Player state constants for timeline playback control.\n * Defines the different states that a timeline player can be in during playback.\n * \n * @example\n * ```js\n * import { PLAYER_STATE } from '@twick/timeline';\n * \n * if (playerState === PLAYER_STATE.PLAYING) {\n * console.log('Timeline is currently playing');\n * }\n * ```\n */\nexport const PLAYER_STATE = {\n /** Player is refreshing/reloading content */\n REFRESH: \"Refresh\",\n /** Player is actively playing content */\n PLAYING: \"Playing\",\n /** Player is paused */\n PAUSED: \"Paused\",\n} as const;\n\n/**\n * Caption styling options for text elements.\n * Defines different visual styles for caption text rendering.\n * \n * @example\n * ```js\n * import { CAPTION_STYLE } from '@twick/timeline';\n * \n * const captionElement = new CaptionElement({\n * style: CAPTION_STYLE.WORD_BY_WORD\n * });\n * ```\n */\nexport const CAPTION_STYLE = {\n /** Highlights background of each word */\n WORD_BG_HIGHLIGHT: \"highlight_bg\",\n /** Animates text word by word */\n WORD_BY_WORD: \"word_by_word\",\n /** Animates text word by word with background highlighting */\n WORD_BY_WORD_WITH_BG: \"word_by_word_with_bg\",\n} as const;\n\n/**\n * Human-readable options for caption styles.\n * Provides user-friendly labels for caption style selection.\n * \n * @example\n * ```js\n * import { CAPTION_STYLE_OPTIONS } from '@twick/timeline';\n * \n * const options = Object.values(CAPTION_STYLE_OPTIONS);\n * // Returns array of style options with labels\n * ```\n */\nexport const CAPTION_STYLE_OPTIONS = {\n [CAPTION_STYLE.WORD_BG_HIGHLIGHT]: {\n label: \"Highlight Background\",\n value: CAPTION_STYLE.WORD_BG_HIGHLIGHT,\n },\n [CAPTION_STYLE.WORD_BY_WORD]: {\n label: \"Word by Word\",\n value: CAPTION_STYLE.WORD_BY_WORD,\n },\n [CAPTION_STYLE.WORD_BY_WORD_WITH_BG]: {\n label: \"Word with Background\",\n value: CAPTION_STYLE.WORD_BY_WORD_WITH_BG,\n },\n} as const;\n\n/**\n * Default font settings for caption elements.\n * Defines the standard typography configuration for captions.\n * \n * @example\n * ```js\n * import { CAPTION_FONT } from '@twick/timeline';\n * \n * const fontSize = CAPTION_FONT.size; // 40\n * ```\n */\nexport const CAPTION_FONT = {\n /** Font size in pixels */\n size: 40,\n} as const;\n\n/**\n * Default color scheme for caption elements.\n * Defines the standard color palette for caption text and backgrounds.\n * \n * @example\n * ```js\n * import { CAPTION_COLOR } from '@twick/timeline';\n * \n * const textColor = CAPTION_COLOR.text; // \"#ffffff\"\n * const highlightColor = CAPTION_COLOR.highlight; // \"#ff4081\"\n * ```\n */\nexport const CAPTION_COLOR = {\n /** Text color in hex format */\n text: \"#ffffff\",\n /** Highlight color in hex format */\n highlight: \"#ff4081\",\n /** Background color in hex format */\n bgColor: \"#8C52FF\",\n} as const;\n\n/**\n * Number of words to display per phrase in caption animations.\n * Controls the chunking of text for word-by-word animations.\n * \n * @example\n * ```js\n * import { WORDS_PER_PHRASE } from '@twick/timeline';\n * \n * const phraseLength = WORDS_PER_PHRASE; // 4\n * ```\n */\nexport const WORDS_PER_PHRASE = 4;\n\n/**\n * Timeline action types for state management.\n * Defines the different actions that can be performed on the timeline.\n * \n * @example\n * ```js\n * import { TIMELINE_ACTION } from '@twick/timeline';\n * \n * if (action.type === TIMELINE_ACTION.SET_PLAYER_STATE) {\n * // Handle player state change\n * }\n * ```\n */\nexport const TIMELINE_ACTION = {\n /** No action being performed */\n NONE: \"none\",\n /** Setting the player state (play/pause) */\n SET_PLAYER_STATE: \"setPlayerState\",\n /** Updating player data */\n UPDATE_PLAYER_DATA: \"updatePlayerData\",\n /** Player has been updated */\n ON_PLAYER_UPDATED: \"onPlayerUpdated\",\n} as const;\n\n/**\n * Element type constants for timeline elements.\n * Defines the different types of elements that can be added to timeline tracks.\n * \n * @example\n * ```js\n * import { TIMELINE_ELEMENT_TYPE } from '@twick/timeline';\n * \n * if (element.type === TIMELINE_ELEMENT_TYPE.VIDEO) {\n * // Handle video element\n * }\n * ```\n */\nexport const TIMELINE_ELEMENT_TYPE = {\n /** Video element type */\n VIDEO: \"video\",\n /** Caption element type */\n CAPTION: \"caption\",\n /** Image element type */\n IMAGE: \"image\",\n /** Audio element type */\n AUDIO: \"audio\",\n /** Text element type */\n TEXT: \"text\",\n /** Rectangle element type */\n RECT: \"rect\",\n /** Circle element type */\n CIRCLE: \"circle\",\n /** Icon element type */\n ICON: \"icon\",\n} as const;\n\n/**\n * Process state constants for async operations.\n * Defines the different states of background processing operations.\n * \n * @example\n * ```js\n * import { PROCESS_STATE } from '@twick/timeline';\n * \n * if (processState === PROCESS_STATE.PROCESSING) {\n * // Show loading indicator\n * }\n * ```\n */\nexport const PROCESS_STATE = {\n /** Process is idle */\n IDLE: \"Idle\",\n /** Process is currently running */\n PROCESSING: \"Processing\",\n /** Process has completed successfully */\n COMPLETED: \"Completed\",\n /** Process has failed */\n FAILED: \"Failed\",\n} as const; ","const imageDimensionsCache = {};\nconst videoMetaCache = {};\nconst audioDurationCache = {};\n\nconst getAudioDuration = (audioSrc) => {\n if (audioDurationCache[audioSrc]) {\n return Promise.resolve(audioDurationCache[audioSrc]);\n }\n return new Promise((resolve, reject) => {\n const audio = document.createElement(\"audio\");\n audio.preload = \"metadata\";\n const isSafeUrl = /^(https?:|blob:|data:audio\\/)/i.test(audioSrc);\n if (!isSafeUrl) {\n throw new Error(\"Unsafe audio source URL\");\n }\n audio.src = audioSrc;\n audio.onloadedmetadata = () => {\n const duration = audio.duration;\n audioDurationCache[audioSrc] = duration;\n resolve(duration);\n };\n audio.onerror = () => {\n reject(new Error(\"Failed to load audio metadata\"));\n };\n });\n};\n\nconst concurrencyLimit = 5;\nlet activeCount = 0;\nconst queue = [];\nfunction runNext() {\n if (queue.length === 0 || activeCount >= concurrencyLimit) return;\n const next = queue.shift();\n if (next) {\n activeCount++;\n next();\n }\n}\nfunction limit(fn) {\n return new Promise((resolve, reject) => {\n const task = () => {\n fn().then(resolve).catch(reject).finally(() => {\n activeCount--;\n runNext();\n });\n };\n if (activeCount < concurrencyLimit) {\n activeCount++;\n task();\n } else {\n queue.push(task);\n }\n });\n}\n\nconst loadImageDimensions = (url) => {\n return new Promise((resolve, reject) => {\n if (typeof document === \"undefined\") {\n reject(new Error(\"getImageDimensions() is only available in the browser.\"));\n return;\n }\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.naturalWidth, height: img.naturalHeight });\n };\n img.onerror = reject;\n img.src = url;\n });\n};\nconst getImageDimensions = (url) => {\n if (imageDimensionsCache[url]) {\n return Promise.resolve(imageDimensionsCache[url]);\n }\n return limit(() => loadImageDimensions(url)).then((dimensions) => {\n imageDimensionsCache[url] = dimensions;\n return dimensions;\n });\n};\n\nconst getVideoMeta = (videoSrc) => {\n if (videoMetaCache[videoSrc]) {\n return Promise.resolve(videoMetaCache[videoSrc]);\n }\n return new Promise((resolve, reject) => {\n const isSafeUrl = /^(https?:|blob:|data:video\\/)/i.test(videoSrc);\n if (!isSafeUrl) {\n reject(new Error(\"Unsafe video source URL\"));\n return;\n }\n const tryLoadVideo = (useCors) => {\n const video = document.createElement(\"video\");\n video.preload = \"metadata\";\n video.crossOrigin = useCors ? \"anonymous\" : null;\n video.src = videoSrc;\n video.onloadedmetadata = () => {\n const meta = {\n width: video.videoWidth,\n height: video.videoHeight,\n duration: video.duration\n };\n videoMetaCache[videoSrc] = meta;\n resolve(meta);\n };\n video.onerror = () => {\n if (useCors) {\n video.src = \"\";\n tryLoadVideo(false);\n } else {\n reject(new Error(\"Failed to load video metadata. This may be due to CORS restrictions or an invalid video URL.\"));\n }\n };\n };\n tryLoadVideo(true);\n });\n};\n\nconst getThumbnail = async (videoUrl, seekTime = 0.1, playbackRate = 1) => {\n return new Promise((resolve, reject) => {\n const tryLoadThumbnail = (useCors) => {\n const video = document.createElement(\"video\");\n video.crossOrigin = useCors ? \"anonymous\" : null;\n video.muted = true;\n video.playsInline = true;\n video.autoplay = false;\n video.preload = \"auto\";\n video.playbackRate = playbackRate;\n video.style.position = \"absolute\";\n video.style.left = \"-9999px\";\n video.style.top = \"-9999px\";\n video.style.width = \"1px\";\n video.style.height = \"1px\";\n video.style.opacity = \"0\";\n video.style.pointerEvents = \"none\";\n video.style.zIndex = \"-1\";\n let timeoutId;\n const cleanup = () => {\n if (video.parentNode) video.remove();\n if (timeoutId) clearTimeout(timeoutId);\n };\n const handleError = () => {\n cleanup();\n if (useCors) {\n tryLoadThumbnail(false);\n } else {\n reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error. This may be due to CORS restrictions or an invalid video URL.\"}`));\n }\n };\n const handleSeeked = () => {\n try {\n video.pause();\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n cleanup();\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", 0.8);\n cleanup();\n resolve(dataUrl);\n } catch {\n canvas.toBlob((blob) => {\n if (!blob) {\n cleanup();\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n cleanup();\n resolve(blobUrl);\n }, \"image/jpeg\", 0.8);\n }\n } catch (err) {\n cleanup();\n reject(new Error(`Error creating thumbnail: ${err}`));\n }\n };\n video.addEventListener(\"error\", handleError, { once: true });\n video.addEventListener(\"seeked\", handleSeeked, { once: true });\n video.addEventListener(\"loadedmetadata\", () => {\n const playPromise = video.play();\n if (playPromise !== void 0) {\n playPromise.then(() => {\n video.currentTime = seekTime || 0.1;\n }).catch(() => {\n video.currentTime = seekTime || 0.1;\n });\n } else {\n video.currentTime = seekTime || 0.1;\n }\n }, { once: true });\n timeoutId = window.setTimeout(() => {\n cleanup();\n reject(new Error(\"Video loading timed out\"));\n }, 15e3);\n video.src = videoUrl;\n document.body.appendChild(video);\n };\n tryLoadThumbnail(true);\n });\n};\n\nclass LRUCache {\n constructor(maxSize = 100) {\n if (maxSize <= 0) {\n throw new Error(\"maxSize must be greater than 0\");\n }\n this.maxSize = maxSize;\n this.cache = /* @__PURE__ */ new Map();\n }\n /**\n * Get a value from the cache.\n * Moves the item to the end (most recently used).\n */\n get(key) {\n const value = this.cache.get(key);\n if (value === void 0) {\n return void 0;\n }\n this.cache.delete(key);\n this.cache.set(key, value);\n return value;\n }\n /**\n * Set a value in the cache.\n * If cache is full, removes the least recently used item.\n */\n set(key, value) {\n if (this.cache.has(key)) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== void 0) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n /**\n * Check if a key exists in the cache.\n */\n has(key) {\n return this.cache.has(key);\n }\n /**\n * Delete a key from the cache.\n */\n delete(key) {\n return this.cache.delete(key);\n }\n /**\n * Clear all entries from the cache.\n */\n clear() {\n this.cache.clear();\n }\n /**\n * Get the current size of the cache.\n */\n get size() {\n return this.cache.size;\n }\n}\n\nclass VideoFrameExtractor {\n constructor(options = {}) {\n this.frameCache = new LRUCache(\n options.maxCacheSize ?? 50\n );\n this.videoElements = /* @__PURE__ */ new Map();\n this.maxVideoElements = options.maxVideoElements ?? 5;\n this.loadTimeout = options.loadTimeout ?? 15e3;\n this.jpegQuality = options.jpegQuality ?? 0.8;\n this.playbackRate = options.playbackRate ?? 1;\n }\n /**\n * Get a frame thumbnail from a video at a specific time.\n * Uses caching and reuses video elements for optimal performance.\n * Uses 0.1s instead of 0 when seekTime is 0, since frames at t=0 are often blank.\n *\n * @param videoUrl - The URL of the video\n * @param seekTime - The time in seconds to extract the frame (0 is treated as 0.1)\n * @returns Promise resolving to a thumbnail image URL (data URL or blob URL)\n */\n async getFrame(videoUrl, seekTime = 0.1) {\n const effectiveSeekTime = seekTime === 0 ? 0.1 : seekTime;\n const cacheKey = this.getCacheKey(videoUrl, effectiveSeekTime);\n const cached = this.frameCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n const videoState = await this.getVideoElement(videoUrl);\n const thumbnail = await this.extractFrame(videoState.video, effectiveSeekTime);\n this.frameCache.set(cacheKey, thumbnail);\n return thumbnail;\n }\n /**\n * Get or create a video element for the given URL.\n * Reuses existing elements and manages cleanup.\n */\n async getVideoElement(videoUrl) {\n let videoState = this.videoElements.get(videoUrl);\n if (videoState && videoState.isReady) {\n videoState.lastUsed = Date.now();\n return videoState;\n }\n if (videoState && videoState.isLoading && videoState.loadPromise) {\n await videoState.loadPromise;\n if (videoState.isReady) {\n videoState.lastUsed = Date.now();\n return videoState;\n }\n }\n if (this.videoElements.size >= this.maxVideoElements) {\n this.cleanupOldVideoElements();\n }\n videoState = await this.createVideoElement(videoUrl);\n this.videoElements.set(videoUrl, videoState);\n videoState.lastUsed = Date.now();\n return videoState;\n }\n /**\n * Create and initialize a new video element.\n */\n async createVideoElement(videoUrl) {\n const video = document.createElement(\"video\");\n video.crossOrigin = \"anonymous\";\n video.muted = true;\n video.playsInline = true;\n video.autoplay = false;\n video.preload = \"auto\";\n video.playbackRate = this.playbackRate;\n video.style.position = \"absolute\";\n video.style.left = \"-9999px\";\n video.style.top = \"-9999px\";\n video.style.width = \"1px\";\n video.style.height = \"1px\";\n video.style.opacity = \"0\";\n video.style.pointerEvents = \"none\";\n video.style.zIndex = \"-1\";\n const state = {\n video,\n isReady: false,\n isLoading: true,\n loadPromise: null,\n lastUsed: Date.now()\n };\n state.loadPromise = new Promise((resolve, reject) => {\n let timeoutId;\n const cleanup = () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n const handleError = () => {\n cleanup();\n state.isLoading = false;\n reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error\"}`));\n };\n const handleLoadedMetadata = () => {\n cleanup();\n state.isReady = true;\n state.isLoading = false;\n resolve();\n };\n video.addEventListener(\"error\", handleError, { once: true });\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata, { once: true });\n timeoutId = window.setTimeout(() => {\n cleanup();\n state.isLoading = false;\n reject(new Error(\"Video loading timed out\"));\n }, this.loadTimeout);\n video.src = videoUrl;\n document.body.appendChild(video);\n });\n try {\n await state.loadPromise;\n } catch (error) {\n if (video.parentNode) {\n video.remove();\n }\n throw error;\n }\n return state;\n }\n /**\n * Extract a frame from a video at the specified time.\n */\n async extractFrame(video, seekTime) {\n return new Promise((resolve, reject) => {\n video.pause();\n const timeThreshold = 0.1;\n if (Math.abs(video.currentTime - seekTime) < timeThreshold) {\n try {\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", this.jpegQuality);\n resolve(dataUrl);\n } catch {\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n resolve(blobUrl);\n },\n \"image/jpeg\",\n this.jpegQuality\n );\n }\n return;\n } catch (err) {\n reject(new Error(`Error creating thumbnail: ${err}`));\n return;\n }\n }\n const handleSeeked = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", this.jpegQuality);\n resolve(dataUrl);\n } catch {\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n resolve(blobUrl);\n },\n \"image/jpeg\",\n this.jpegQuality\n );\n }\n } catch (err) {\n reject(new Error(`Error creating thumbnail: ${err}`));\n }\n };\n video.addEventListener(\"seeked\", handleSeeked, { once: true });\n const playPromise = video.play();\n if (playPromise !== void 0) {\n playPromise.then(() => {\n video.currentTime = seekTime;\n }).catch(() => {\n video.currentTime = seekTime;\n });\n } else {\n video.currentTime = seekTime;\n }\n });\n }\n /**\n * Generate cache key for a video URL and seek time.\n */\n getCacheKey(videoUrl, seekTime) {\n const roundedTime = Math.round(seekTime * 100) / 100;\n return `${videoUrl}:${roundedTime}`;\n }\n /**\n * Cleanup least recently used video elements.\n */\n cleanupOldVideoElements() {\n if (this.videoElements.size < this.maxVideoElements) {\n return;\n }\n const entries = Array.from(this.videoElements.entries());\n entries.sort((a, b) => a[1].lastUsed - b[1].lastUsed);\n const toRemove = entries.slice(0, entries.length - this.maxVideoElements + 1);\n for (const [url, state] of toRemove) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n this.videoElements.delete(url);\n }\n }\n /**\n * Clear the frame cache.\n */\n clearCache() {\n this.frameCache.clear();\n }\n /**\n * Remove a specific video element and clear its cached frames.\n */\n removeVideo(videoUrl) {\n const state = this.videoElements.get(videoUrl);\n if (state) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n this.videoElements.delete(videoUrl);\n }\n this.frameCache.clear();\n }\n /**\n * Dispose of all video elements and clear caches.\n * Removes all video elements from the DOM and clears both the frame cache\n * and video element cache. Call this when the extractor is no longer needed\n * to prevent memory leaks.\n */\n dispose() {\n for (const state of this.videoElements.values()) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n }\n this.videoElements.clear();\n this.frameCache.clear();\n }\n}\nlet defaultExtractor = null;\nfunction getDefaultVideoFrameExtractor(options) {\n if (!defaultExtractor) {\n defaultExtractor = new VideoFrameExtractor(options);\n }\n return defaultExtractor;\n}\nasync function getThumbnailCached(videoUrl, seekTime = 0.1, playbackRate) {\n const extractor = getDefaultVideoFrameExtractor(\n playbackRate !== void 0 ? { playbackRate } : void 0\n );\n return extractor.getFrame(videoUrl, seekTime);\n}\n\nconst extractAudio = async ({\n src,\n playbackRate = 1,\n start = 0,\n end\n}) => {\n if (!src) throw new Error(\"src is required\");\n if (playbackRate <= 0) throw new Error(\"playbackRate must be > 0\");\n const isSafeUrl = /^(https?:|blob:|data:)/i.test(src);\n if (!isSafeUrl) throw new Error(\"Unsafe media source URL\");\n const audioBuffer = await fetchAndDecodeAudio(src);\n if (audioBuffer.duration === 0 || audioBuffer.length === 0) {\n throw new Error(\"No audio track found in the media source\");\n }\n if (isAudioSilent(audioBuffer)) {\n throw new Error(\"Audio track is silent (no audio content detected)\");\n }\n const clampedStart = Math.max(0, start || 0);\n const fullDuration = audioBuffer.duration;\n const clampedEnd = Math.min(\n typeof end === \"number\" ? end : fullDuration,\n fullDuration\n );\n if (clampedEnd <= clampedStart)\n throw new Error(\"Invalid range: end must be greater than start\");\n const renderedBuffer = await renderAudioSegment(\n audioBuffer,\n clampedStart,\n clampedEnd,\n playbackRate\n );\n const mp3Blob = await audioBufferToMp3(renderedBuffer);\n return URL.createObjectURL(mp3Blob);\n};\nconst hasAudio = async (src) => {\n if (!src) return false;\n const isSafeUrl = /^(https?:|blob:|data:)/i.test(src);\n if (!isSafeUrl) return false;\n try {\n const audioBuffer = await fetchAndDecodeAudio(src);\n if (audioBuffer.duration === 0 || audioBuffer.length === 0) {\n return false;\n }\n if (isAudioSilent(audioBuffer)) {\n return false;\n }\n return true;\n } catch (error) {\n return false;\n }\n};\nconst stitchAudio = async (segments, totalDuration) => {\n if (!segments || segments.length === 0) {\n throw new Error(\"At least one audio segment is required\");\n }\n const duration = totalDuration || Math.max(...segments.map((s) => s.e));\n const renderedBuffer = await createAudioTimeline(segments, duration);\n const mp3Blob = await audioBufferToMp3(renderedBuffer);\n return URL.createObjectURL(mp3Blob);\n};\nconst fetchAndDecodeAudio = async (src) => {\n const response = await fetch(src);\n if (!response.ok) throw new Error(`Failed to fetch source: ${response.status}`);\n const arrayBuffer = await response.arrayBuffer();\n return decodeAudioData(arrayBuffer);\n};\nconst decodeAudioData = async (arrayBuffer) => {\n const AudioContextCtor = window.AudioContext || window.webkitAudioContext;\n if (!AudioContextCtor) throw new Error(\"Web Audio API not supported\");\n const audioContext = new AudioContextCtor();\n try {\n return await new Promise((resolve, reject) => {\n audioContext.decodeAudioData(\n arrayBuffer.slice(0),\n (buf) => resolve(buf),\n (err) => reject(err || new Error(\"Failed to decode audio: no audio track found or unsupported format\"))\n );\n });\n } finally {\n audioContext.close();\n }\n};\nconst isAudioSilent = (buffer, threshold = 1e-3) => {\n for (let channel = 0; channel < buffer.numberOfChannels; channel++) {\n const channelData = buffer.getChannelData(channel);\n for (let i = 0; i < channelData.length; i += 100) {\n if (Math.abs(channelData[i]) > threshold) {\n return false;\n }\n }\n }\n return true;\n};\nconst renderAudioSegment = async (audioBuffer, start, end, playbackRate) => {\n const OfflineAudioContextCtor = window.OfflineAudioContext || window.webkitOfflineAudioContext;\n if (!OfflineAudioContextCtor) throw new Error(\"OfflineAudioContext not supported\");\n const sampleRate = audioBuffer.sampleRate;\n const numChannels = audioBuffer.numberOfChannels;\n const sourceDuration = end - start;\n const renderedFrames = Math.max(\n 1,\n Math.ceil(sourceDuration / playbackRate * sampleRate)\n );\n const offline = new OfflineAudioContextCtor(numChannels, renderedFrames, sampleRate);\n const sourceNode = offline.createBufferSource();\n sourceNode.buffer = audioBuffer;\n sourceNode.playbackRate.value = playbackRate;\n sourceNode.connect(offline.destination);\n sourceNode.start(0, start, sourceDuration);\n return await offline.startRendering();\n};\nconst createAudioTimeline = async (segments, duration) => {\n const OfflineAudioContextCtor = window.OfflineAudioContext || window.webkitOfflineAudioContext;\n if (!OfflineAudioContextCtor) throw new Error(\"OfflineAudioContext not supported\");\n const sampleRate = 44100;\n const totalFrames = Math.ceil(duration * sampleRate);\n const offline = new OfflineAudioContextCtor(2, totalFrames, sampleRate);\n for (const segment of segments) {\n if (segment.s >= segment.e) continue;\n const volume = segment.volume ?? 1;\n if (volume <= 0) continue;\n try {\n const audioBuffer = await fetchAndDecodeAudio(segment.src);\n const segmentDuration = segment.e - segment.s;\n const sourceDuration = Math.min(segmentDuration, audioBuffer.duration);\n const source = offline.createBufferSource();\n source.buffer = audioBuffer;\n if (volume !== 1) {\n const gainNode = offline.createGain();\n gainNode.gain.value = volume;\n source.connect(gainNode);\n gainNode.connect(offline.destination);\n } else {\n source.connect(offline.destination);\n }\n source.start(segment.s, 0, sourceDuration);\n } catch {\n }\n }\n return await offline.startRendering();\n};\nconst audioBufferToMp3 = async (buffer) => {\n try {\n const wavArrayBuffer = audioBufferToWavArrayBuffer(buffer);\n const pcmBuffer = await decodeAudioData(wavArrayBuffer);\n return await encodePcmToMp3(pcmBuffer);\n } catch (error) {\n return audioBufferToWavBlob(buffer);\n }\n};\nconst audioBufferToWavArrayBuffer = (buffer) => {\n const numChannels = buffer.numberOfChannels;\n const sampleRate = buffer.sampleRate;\n const numFrames = buffer.length;\n const interleaved = interleave(buffer, numChannels, numFrames);\n const bytesPerSample = 2;\n const blockAlign = numChannels * bytesPerSample;\n const byteRate = sampleRate * blockAlign;\n const dataSize = interleaved.length * bytesPerSample;\n const bufferSize = 44 + dataSize;\n const arrayBuffer = new ArrayBuffer(bufferSize);\n const view = new DataView(arrayBuffer);\n writeString(view, 0, \"RIFF\");\n view.setUint32(4, 36 + dataSize, true);\n writeString(view, 8, \"WAVE\");\n writeString(view, 12, \"fmt \");\n view.setUint32(16, 16, true);\n view.setUint16(20, 1, true);\n view.setUint16(22, numChannels, true);\n view.setUint32(24, sampleRate, true);\n view.setUint32(28, byteRate, true);\n view.setUint16(32, blockAlign, true);\n view.setUint16(34, 16, true);\n writeString(view, 36, \"data\");\n view.setUint32(40, dataSize, true);\n floatTo16BitPCM(view, 44, interleaved);\n return arrayBuffer;\n};\nconst encodePcmToMp3 = async (buffer) => {\n const lamejs = await import('./index-CXhwwSX-.mjs').then(n => n.i);\n const channels = buffer.numberOfChannels >= 2 ? 2 : 1;\n const targetSampleRate = 22050;\n const downsampledBuffer = downsampleAudioBuffer(buffer, targetSampleRate);\n const kbps = 48;\n const mp3encoder = new lamejs.default.Mp3Encoder(channels, targetSampleRate, kbps);\n const samplesPerFrame = 1152;\n const leftFloat = downsampledBuffer.getChannelData(0);\n const left = floatTo16(leftFloat);\n let right;\n if (channels === 2) {\n const rightFloat = downsampledBuffer.getChannelData(1);\n right = floatTo16(rightFloat);\n }\n const mp3Chunks = [];\n for (let i = 0; i < left.length; i += samplesPerFrame) {\n const leftChunk = left.subarray(i, Math.min(i + samplesPerFrame, left.length));\n let mp3buf;\n if (channels === 2 && right) {\n const rightChunk = right.subarray(i, Math.min(i + samplesPerFrame, right.length));\n mp3buf = mp3encoder.encodeBuffer(leftChunk, rightChunk);\n } else {\n mp3buf = mp3encoder.encodeBuffer(leftChunk);\n }\n if (mp3buf.length > 0) mp3Chunks.push(mp3buf);\n }\n const end = mp3encoder.flush();\n if (end.length > 0) mp3Chunks.push(end);\n return new Blob(mp3Chunks, { type: \"audio/mpeg\" });\n};\nconst audioBufferToWavBlob = (buffer) => {\n const arrayBuffer = audioBufferToWavArrayBuffer(buffer);\n return new Blob([arrayBuffer], { type: \"audio/wav\" });\n};\nconst downsampleAudioBuffer = (buffer, targetSampleRate) => {\n if (buffer.sampleRate === targetSampleRate) {\n return buffer;\n }\n const ratio = buffer.sampleRate / targetSampleRate;\n const newLength = Math.round(buffer.length / ratio);\n const newBuffer = new AudioContext().createBuffer(\n buffer.numberOfChannels,\n newLength,\n targetSampleRate\n );\n for (let channel = 0; channel < buffer.numberOfChannels; channel++) {\n const oldData = buffer.getChannelData(channel);\n const newData = newBuffer.getChannelData(channel);\n for (let i = 0; i < newLength; i++) {\n const oldIndex = Math.floor(i * ratio);\n newData[i] = oldData[oldIndex];\n }\n }\n return newBuffer;\n};\nconst interleave = (buffer, numChannels, numFrames) => {\n if (numChannels === 1) {\n return buffer.getChannelData(0).slice(0, numFrames);\n }\n const result = new Float32Array(numFrames * numChannels);\n const channelData = [];\n for (let ch = 0; ch < numChannels; ch++) {\n channelData[ch] = buffer.getChannelData(ch);\n }\n let writeIndex = 0;\n for (let i = 0; i < numFrames; i++) {\n for (let ch = 0; ch < numChannels; ch++) {\n result[writeIndex++] = channelData[ch][i];\n }\n }\n return result;\n};\nconst floatTo16BitPCM = (view, offset, input) => {\n let pos = offset;\n for (let i = 0; i < input.length; i++, pos += 2) {\n let s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(pos, s < 0 ? s * 32768 : s * 32767, true);\n }\n};\nconst floatTo16 = (input) => {\n const output = new Int16Array(input.length);\n for (let i = 0; i < input.length; i++) {\n const s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 32768 : s * 32767;\n }\n return output;\n};\nconst writeString = (view, offset, str) => {\n for (let i = 0; i < str.length; i++) {\n view.setUint8(offset + i, str.charCodeAt(i));\n }\n};\n\nconst getScaledDimensions = (width, height, maxWidth, maxHeight) => {\n if (width <= maxWidth && height <= maxHeight) {\n return {\n width: width % 2 === 0 ? width : width - 1,\n height: height % 2 === 0 ? height : height - 1\n };\n }\n const widthRatio = maxWidth / width;\n const heightRatio = maxHeight / height;\n const scale = Math.min(widthRatio, heightRatio);\n let scaledWidth = Math.round(width * scale);\n let scaledHeight = Math.round(height * scale);\n if (scaledWidth % 2 !== 0) {\n scaledWidth -= 1;\n }\n if (scaledHeight % 2 !== 0) {\n scaledHeight -= 1;\n }\n return {\n width: Math.min(scaledWidth, maxWidth),\n height: Math.min(scaledHeight, maxHeight)\n };\n};\nconst getObjectFitSize = (objectFit, elementSize, containerSize) => {\n const elementAspectRatio = elementSize.width / elementSize.height;\n const containerAspectRatio = containerSize.width / containerSize.height;\n switch (objectFit) {\n case \"contain\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n } else {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n }\n case \"cover\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n } else {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n }\n case \"fill\":\n return {\n width: containerSize.width,\n height: containerSize.height\n };\n default:\n return {\n width: elementSize.width,\n height: elementSize.height\n };\n }\n};\n\nconst blobUrlToFile = async (blobUrl, fileName) => {\n const response = await fetch(blobUrl);\n const blob = await response.blob();\n return new File([blob], fileName, { type: blob.type });\n};\nconst loadFile = (accept) => {\n return new Promise((resolve, reject) => {\n try {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = accept;\n input.style.display = \"none\";\n document.body.appendChild(input);\n const cleanup = () => {\n input.value = \"\";\n document.body.removeChild(input);\n };\n input.onchange = () => {\n const file = input.files && input.files[0];\n cleanup();\n if (!file) {\n reject(new Error(\"No file selected\"));\n return;\n }\n resolve(file);\n };\n input.click();\n } catch (error) {\n reject(error);\n }\n });\n};\nconst saveAsFile = (content, type, name) => {\n const blob = typeof content === \"string\" ? new Blob([content], { type }) : content;\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = name;\n a.click();\n URL.revokeObjectURL(url);\n};\nconst downloadFile = async (url, filename) => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const downloadUrl = window.URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = downloadUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(downloadUrl);\n } catch (error) {\n throw error;\n }\n};\n\nconst detectMediaTypeFromUrl = async (url) => {\n try {\n const response = await fetch(url, { method: \"HEAD\" });\n const contentType = response.headers.get(\"Content-Type\");\n if (!contentType) return null;\n if (contentType.startsWith(\"image/\")) return \"image\";\n if (contentType.startsWith(\"video/\")) return \"video\";\n if (contentType.startsWith(\"audio/\")) return \"audio\";\n return null;\n } catch {\n return null;\n }\n};\n\nexport { VideoFrameExtractor, blobUrlToFile, detectMediaTypeFromUrl, downloadFile, extractAudio, getAudioDuration, getDefaultVideoFrameExtractor, getImageDimensions, getObjectFitSize, getScaledDimensions, getThumbnail, getThumbnailCached, getVideoMeta, hasAudio, limit, loadFile, saveAsFile, stitchAudio };\n//# sourceMappingURL=index.mjs.map\n","import { generateShortUuid } from \"../../utils/timeline.utils\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { ElementAnimation } from \"../addOns/animation\";\nimport { Position } from \"../../types\";\n\nexport abstract class TrackElement {\n protected id: string;\n protected type: string;\n protected s!: number;\n protected e!: number;\n protected trackId!: string;\n protected name!: string;\n protected animation?: ElementAnimation;\n protected props: Record<string, any>;\n\n constructor(type: string, id?: string) {\n this.id = id ?? `e-${generateShortUuid()}`;\n this.type = type;\n this.props = {\n x: 0,\n y: 0,\n opacity: 1,\n rotation: 0\n };\n }\n\n abstract accept<T>(visitor: ElementVisitor<T>): T;\n\n getId(): string {\n return this.id;\n }\n\n getType(): string {\n return this.type;\n }\n\n getStart(): number {\n return this.s;\n }\n\n getEnd(): number {\n return this.e;\n }\n\n getDuration(): number {\n return this.e - this.s;\n }\n\n getTrackId(): string {\n return this.trackId;\n }\n\n getProps(): Record<string, any> {\n return this.props;\n }\n\n getName(): string {\n return this.name;\n }\n\n getAnimation(): ElementAnimation | undefined {\n return this.animation;\n }\n\n getPosition(): Position {\n return {\n x: this.props?.x ?? 0,\n y: this.props?.y ?? 0\n };\n }\n\n getRotation(): number {\n return this.props.rotation ?? 0;\n }\n\n getOpacity(): number {\n return this.props.opacity ?? 1;\n }\n\n setId(id: string) {\n this.id = id;\n return this;\n }\n\n setType(type: string) {\n this.type = type;\n return this;\n }\n\n setStart(s: number) {\n this.s = Math.max(0, s);\n return this;\n }\n\n setEnd(e: number) {\n this.e = Math.max(this.s ?? 0, e);\n return this;\n }\n\n setTrackId(trackId: string) {\n this.trackId = trackId;\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n return this;\n }\n\n setAnimation(animation?: ElementAnimation) {\n this.animation = animation;\n return this;\n }\n\n setPosition(position: Position) {\n this.props.x = position.x;\n this.props.y = position.y;\n return this;\n }\n\n setRotation(rotation: number) { \n this.props.rotation = rotation;\n return this;\n }\n\n setOpacity(opacity: number) {\n this.props.opacity = opacity;\n return this;\n }\n\n setProps(props: Record<string, any>) {\n this.props = structuredClone(props);\n return this;\n }\n}\n","import { getObjectFitSize, getVideoMeta } from \"@twick/media-utils\";\nimport { Frame, ObjectFit, Position, Size, VideoProps } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\n\nexport class VideoElement extends TrackElement {\n protected baseSize!: Size;\n protected mediaDuration!: number;\n protected parentSize: Size;\n protected backgroundColor!: string;\n protected objectFit: ObjectFit;\n protected frameEffects?: ElementFrameEffect[];\n protected frame!: Frame;\n protected declare props: VideoProps;\n\n constructor(src: string, parentSize: Size) {\n super(TIMELINE_ELEMENT_TYPE.VIDEO);\n this.objectFit = \"cover\";\n this.frameEffects = [];\n this.parentSize = parentSize;\n this.props = {\n src,\n playbackRate: 1,\n time: 0,\n mediaFilter: \"none\",\n volume: 1,\n };\n }\n\n getParentSize() {\n return this.parentSize;\n }\n\n getFrame() {\n return this.frame;\n }\n\n getFrameEffects() {\n return this.frameEffects;\n }\n\n getBackgroundColor() {\n return this.backgroundColor;\n }\n\n getObjectFit() {\n return this.objectFit;\n }\n\n getMediaDuration() {\n return this.mediaDuration;\n }\n\n getStartAt(): number {\n return this.props.time || 0;\n }\n\n getEndAt(): number {\n return this.getDuration() * this.getPlaybackRate();\n }\n\n getSrc(): string {\n return this.props.src;\n }\n\n getPlaybackRate(): number {\n return this.props.playbackRate ?? 1;\n }\n\n getVolume(): number {\n return this.props.volume ?? 1;\n } \n\n override getRotation(): number {\n return this.frame?.rotation ?? 0;\n }\n\n override setRotation(rotation: number) {\n this.frame.rotation = rotation;\n return this;\n }\n \n override getPosition(): Position {\n return {\n x: this.frame.x ?? 0,\n y: this.frame.y ?? 0\n };\n }\n\n\n async updateVideoMeta(updateFrame: boolean = true) {\n const meta = await getVideoMeta(this.props.src);\n\n if (updateFrame) {\n const baseSize = getObjectFitSize(\n \"contain\",\n { width: meta.width, height: meta.height },\n this.parentSize\n );\n this.frame = {\n ...this.frame,\n size: [baseSize.width, baseSize.height],\n };\n }\n this.mediaDuration = meta.duration;\n }\n\n override setPosition(position: Position) {\n this.frame.x = position.x;\n this.frame.y = position.y;\n return this;\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateVideoMeta();\n return this;\n }\n\n setMediaDuration(mediaDuration: number) {\n this.mediaDuration = mediaDuration;\n return this;\n }\n\n setParentSize(parentSize: Size) {\n this.parentSize = structuredClone(parentSize);\n return this;\n }\n\n setObjectFit(objectFit: ObjectFit) {\n this.objectFit = objectFit;\n return this;\n }\n\n setFrame(frame: Frame) {\n this.frame = structuredClone(frame);\n return this;\n }\n\n setPlaybackRate(playbackRate: number) {\n this.props.playbackRate = playbackRate;\n return this;\n }\n\n setStartAt(time: number) {\n this.props.time = Math.max(0, time);\n return this;\n }\n\n setMediaFilter(mediaFilter: string) {\n this.props.mediaFilter = mediaFilter;\n return this;\n }\n\n setVolume(volume: number) {\n this.props.volume = volume;\n return this;\n }\n\n setBackgroundColor(backgroundColor: string) {\n this.backgroundColor = backgroundColor;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {\n ...structuredClone(props),\n src: this.props.src,\n };\n return this;\n }\n\n setFrameEffects(frameEffects?: ElementFrameEffect[]) {\n this.frameEffects = frameEffects;\n return this;\n }\n\n addFrameEffect(frameEffect: ElementFrameEffect) {\n this.frameEffects?.push(frameEffect);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitVideoElement(this);\n }\n}\n","import { extractAudio, stitchAudio } from \"@twick/media-utils\";\nimport { TrackElement } from \"../core/elements/base.element\";\nimport { VideoElement } from \"../core/elements/video.element\";\nimport { Track } from \"../core/track/track\";\nimport { TrackJSON } from \"../types\";\n\n/**\n * Rounds a number to a specified decimal precision.\n * Useful for ensuring consistent decimal places in timeline calculations.\n *\n * @param num - The number to round\n * @param precision - The number of decimal places to round to\n * @returns The rounded number\n * \n * @example\n * ```js\n * const rounded = getDecimalNumber(3.14159, 2);\n * // rounded = 3.14\n * ```\n */\nexport const getDecimalNumber = (num: number, precision = 3) => {\n return Number(num.toFixed(precision));\n};\n\n/**\n * Calculates the total duration of all tracks in a timeline.\n * Finds the maximum end time across all elements in all tracks\n * to determine the overall timeline duration.\n *\n * @param tracks - Array of track data containing elements\n * @returns The total duration in seconds\n * \n * @example\n * ```js\n * const duration = getTotalDuration(tracks);\n * // duration = 120.5 (2 minutes and 0.5 seconds)\n * ```\n */\nexport const getTotalDuration = (tracks: TrackJSON[]) => {\n return (tracks || []).reduce(\n (maxDuration, timeline) =>\n Math.max(\n maxDuration,\n (timeline?.elements || []).reduce(\n (timelineDuration, element) => Math.max(timelineDuration, element.e),\n 0\n )\n ),\n 0\n );\n};\n\n/**\n * Generates a short UUID for element and track identification.\n * Creates a 12-character unique identifier using a simplified\n * UUID generation algorithm.\n *\n * @returns A 12-character unique identifier string\n * \n * @example\n * ```js\n * const id = generateShortUuid();\n * // id = \"a1b2c3d4e5f6\"\n * ```\n */\nexport const generateShortUuid = (): string => {\n return \"xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * Gets all elements that are currently active at the specified time.\n * Searches through all tracks to find elements whose time range\n * includes the current playback time.\n *\n * @param currentTime - The current playback time in seconds\n * @param tracks - Array of track objects to search through\n * @returns Array of elements currently active at the specified time\n * \n * @example\n * ```js\n * const activeElements = getCurrentElements(5.5, tracks);\n * // Returns all elements active at 5.5 seconds\n * ```\n */\nexport const getCurrentElements = (\n currentTime: number,\n tracks: Track[]\n): Array<Readonly<TrackElement>> => {\n const currentElements: Array<Readonly<TrackElement>> = [];\n if (tracks?.length) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i]) {\n const elements = tracks[i].getElements();\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n if (\n element.getStart() <= currentTime &&\n element.getEnd() >= currentTime\n ) {\n currentElements.push(element);\n }\n }\n }\n }\n }\n return currentElements;\n};\n\n/**\n * Checks if an element can be split at the specified time.\n * Determines if the current time falls within the element's\n * start and end time range.\n *\n * @param element - The element to check for splitting\n * @param currentTime - The time at which to check if splitting is possible\n * @returns True if the element can be split at the specified time\n * \n * @example\n * ```js\n * const canSplit = canSplitElement(videoElement, 10.5);\n * // canSplit = true if element spans across 10.5 seconds\n * ```\n */\nexport const canSplitElement = (element: TrackElement, currentTime: number) => {\n return element.getStart() <= currentTime && element.getEnd() >= currentTime;\n};\n\n/**\n * Checks if an ID represents an element.\n * Validates if the ID follows the element naming convention.\n *\n * @param id - The ID to check\n * @returns True if the ID represents an element\n * \n * @example\n * ```js\n * const isElement = isElementId(\"e-abc123\");\n * // isElement = true\n * ```\n */\nexport const isElementId = (id: string) => id.startsWith(\"e-\");\n\n/**\n * Checks if an ID represents a track.\n * Validates if the ID follows the track naming convention.\n *\n * @param id - The ID to check\n * @returns True if the ID represents a track\n * \n * @example\n * ```js\n * const isTrack = isTrackId(\"t-xyz789\");\n * // isTrack = true\n * ```\n */\nexport const isTrackId = (id: string) => id.startsWith(\"t-\");\n\n/**\n * Extracts and stitches audio from video elements across all tracks.\n * Processes all video elements in the timeline, extracts their audio segments,\n * and combines them into a single audio file with proper timing.\n *\n * @param tracks - Array of track objects containing video elements\n * @param duration - The total duration of the output audio\n * @returns Promise resolving to a Blob URL of the combined audio\n * \n * @example\n * ```js\n * const audioUrl = await extractVideoAudio(tracks, 120);\n * // audioUrl = \"blob:http://localhost:3000/abc123\"\n * ```\n */\nexport const extractVideoAudio = async (tracks: Track[], duration: number) => {\n const videoSegments: {\n src: string;\n startAt: number;\n endAt: number;\n s: number;\n e: number;\n volume: number;\n playbackRate: number;\n }[] = [];\n tracks.forEach((track) =>\n track.getElements().forEach((element) => {\n if (element instanceof VideoElement) {\n videoSegments.push({\n src: element.getSrc(),\n startAt: element.getStartAt(),\n endAt: element.getEndAt(),\n s: element.getStart(),\n e: element.getEnd(),\n volume: element.getVolume(),\n playbackRate: element.getPlaybackRate(),\n });\n }\n })\n );\n\n const videoAudioPromises = videoSegments.map((segment) => {\n return extractAudio({\n src: segment.src,\n startAt: segment.startAt,\n endAt: segment.endAt,\n volume: segment.volume,\n playbackRate: segment.playbackRate,\n });\n });\n\n const audioUrls = await Promise.all(videoAudioPromises);\n const extractedAudio = await stitchAudio(\n audioUrls.map((url: string, index: number) => ({\n src: url,\n s: videoSegments[index].s,\n e: videoSegments[index].e,\n volume: videoSegments[index].volume,\n })),\n duration\n );\n\n return extractedAudio;\n};\n","import { getAudioDuration } from \"@twick/media-utils\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { AudioProps } from \"../../types\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class AudioElement extends TrackElement {\n protected mediaDuration!: number;\n protected declare props: AudioProps;\n\n constructor(src: string) {\n super(TIMELINE_ELEMENT_TYPE.AUDIO);\n this.props = {\n src,\n time: 0,\n playbackRate: 1,\n volume: 1,\n loop: false,\n };\n }\n\n getMediaDuration() {\n return this.mediaDuration;\n }\n\n getStartAt(): number {\n return this.props.time || 0;\n }\n\n getEndAt(): number {\n return this.getDuration() * this.getPlaybackRate();\n }\n\n getSrc(): string {\n return this.props.src;\n }\n\n getPlaybackRate(): number {\n return this.props.playbackRate ?? 1;\n }\n\n getVolume(): number {\n return this.props.volume ?? 1;\n } \n\n async updateAudioMeta() {\n this.mediaDuration = await getAudioDuration(this.props.src);\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateAudioMeta();\n return this;\n }\n\n setMediaDuration(mediaDuration: number) {\n this.mediaDuration = mediaDuration;\n return this;\n }\n\n setVolume(volume: number) {\n this.props.volume = volume;\n return this;\n }\n\n setLoop(loop: boolean) {\n this.props.loop = loop;\n return this;\n }\n\n setStartAt(time: number) {\n this.props.time = Math.max(0, time);\n return this;\n }\n\n setPlaybackRate(playbackRate: number) {\n this.props.playbackRate = playbackRate;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {\n ...structuredClone(props),\n src: this.props.src,\n };\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitAudioElement(this);\n }\n}\n","import { getObjectFitSize, getImageDimensions } from \"@twick/media-utils\";\nimport { Frame, ImageProps, ObjectFit, Position, Size } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\n\nexport class ImageElement extends TrackElement {\n protected backgroundColor!: string;\n protected parentSize: Size;\n protected objectFit: ObjectFit;\n frameEffects?: ElementFrameEffect[];\n frame!: Frame;\n protected declare props: ImageProps;\n\n constructor(src: string, parentSize: Size) {\n super(TIMELINE_ELEMENT_TYPE.IMAGE);\n this.parentSize = parentSize;\n this.objectFit = \"cover\";\n this.frameEffects = [];\n this.props = {\n src,\n mediaFilter: \"none\",\n };\n this.frame = {\n x: 0,\n y: 0\n }\n }\n\n getParentSize() {\n return this.parentSize;\n }\n\n getFrame() {\n return this.frame;\n }\n\n getFrameEffects() {\n return this.frameEffects;\n } \n\n getBackgroundColor() {\n return this.backgroundColor;\n }\n\n getObjectFit() {\n return this.objectFit;\n }\n\n override getRotation(): number {\n return this.frame?.rotation ?? 0;\n }\n\n override setRotation(rotation: number) {\n this.frame.rotation = rotation;\n return this;\n }\n\n override getPosition(): Position {\n return {\n x: this.frame.x ?? 0,\n y: this.frame.y ?? 0\n };\n }\n\n async updateImageMeta(updateFrame: boolean = true) {\n const meta = await getImageDimensions(this.props.src);\n if (updateFrame) {\n const baseSize = getObjectFitSize(\n \"contain\",\n { width: meta.width, height: meta.height },\n this.parentSize\n );\n this.frame = {\n size: [baseSize.width, baseSize.height],\n ...this.frame,\n }\n }\n }\n\n override setPosition(position: Position) {\n this.frame.x = position.x;\n this.frame.y = position.y;\n return this;\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateImageMeta();\n return this;\n }\n\n setObjectFit(objectFit: ObjectFit) {\n this.objectFit = objectFit;\n return this;\n }\n\n setFrame(frame: Frame) {\n this.frame = structuredClone(frame);\n return this;\n }\n\n\n setParentSize(parentSize: Size) {\n this.parentSize = structuredClone(parentSize);\n return this;\n }\n\n setMediaFilter(mediaFilter: string) {\n this.props.mediaFilter = mediaFilter;\n return this;\n }\n\n setBackgroundColor(backgroundColor: string) {\n this.backgroundColor = backgroundColor;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {...structuredClone(props), src: this.props.src};\n return this;\n }\n\n setFrameEffects(frameEffects? : ElementFrameEffect[]) {\n this.frameEffects = frameEffects;\n return this;\n }\n\n addFrameEffect(frameEffect: ElementFrameEffect) {\n this.frameEffects?.push(frameEffect);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitImageElement(this);\n }\n\n}\n","import { TextAlign, TextProps } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementTextEffect } from \"../addOns/text-effect\";\n\nexport class TextElement extends TrackElement {\n protected textEffect?: ElementTextEffect;\n protected declare props: TextProps;\n\n constructor(text: string, props?: Omit<TextProps, 'text'>) {\n super(TIMELINE_ELEMENT_TYPE.TEXT);\n this.props = {\n text,\n fill: \"#888888\", //default-grey,\n ...(props || {})\n };\n }\n\n getTextEffect() {\n return this.textEffect;\n }\n\n getText(): string {\n return this.props.text;\n }\n\n getStrokeColor() {\n return this.props.stroke;\n }\n\n getLineWidth() {\n return this.props.lineWidth;\n }\n\n getProps(): TextProps {\n return this.props;\n }\n\n setText(text: string) {\n this.props.text = text;\n return this;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setRotation(rotation: number) {\n this.props.rotation = rotation;\n return this;\n }\n\n setFontSize(fontSize: number) {\n this.props.fontSize = fontSize;\n return this;\n }\n\n setFontFamily(fontFamily: string) {\n this.props.fontFamily = fontFamily;\n return this;\n }\n\n setFontWeight(fontWeight: number) {\n this.props.fontWeight = fontWeight;\n return this;\n }\n\n setFontStyle(fontStyle: \"normal\" | \"italic\") {\n this.props.fontStyle = fontStyle;\n return this;\n }\n\n setTextEffect(textEffect?: ElementTextEffect) {\n this.textEffect = textEffect;\n return this;\n }\n\n setTextAlign(textAlign: TextAlign) {\n this.props.textAlign = textAlign;\n return this;\n }\n\n setStrokeColor(stroke: string) {\n this.props.stroke = stroke;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n }\n\n setProps(props: TextProps) {\n this.props = structuredClone(props);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitTextElement(this);\n }\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class CaptionElement extends TrackElement {\n protected t: string;\n\n constructor(t: string, start: number, end: number) {\n super(TIMELINE_ELEMENT_TYPE.CAPTION);\n this.t = t;\n this.s = start;\n this.e = end;\n }\n\n getText(): string {\n return this.t;\n }\n\n setText(t: string) {\n this.t = t;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitCaptionElement(this);\n }\n\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { Size } from \"../../types\";\n\nexport class IconElement extends TrackElement {\n constructor(src: string, size: Size, fill: string = \"#866bbf\") {\n super(TIMELINE_ELEMENT_TYPE.ICON);\n this.props = {\n src: src,\n fill: fill,\n size: size,\n };\n }\n\n getSrc(): string {\n return this.props.src;\n } \n\n getFill(): string {\n return this.props.fill;\n }\n\n getSize(): Size | undefined {\n return this.props.size;\n }\n\n setSrc(src: string) {\n this.props.src = src;\n return this;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setSize(size: Size) {\n this.props.size = size;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitIconElement(this);\n }\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { CircleProps } from \"../../types\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class CircleElement extends TrackElement {\n protected declare props: CircleProps;\n constructor(fill: string, radius: number) {\n super(TIMELINE_ELEMENT_TYPE.CIRCLE);\n this.props = {\n radius,\n height: radius*2,\n width: radius*2,\n fill,\n strokeColor: fill,\n lineWidth: 1\n };\n }\n\n getFill(): string {\n return this.props.fill;\n }\n\n getRadius(): number {\n return this.props.radius;\n }\n\n getStrokeColor(): string {\n return this.props.strokeColor || this.props.fill;\n }\n\n getLineWidth(): number {\n return this.props.lineWidth ?? 0;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setRadius(radius: number) {\n this.props.radius = radius;\n this.props.width = radius*2;\n this.props.height = radius*2;\n return this;\n }\n \n setStrokeColor(strokeColor: string) {\n this.props.strokeColor = strokeColor;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n } \n\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitCircleElement(this);\n }\n}\n","import { RectProps, Size } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class RectElement extends TrackElement {\n protected declare props: RectProps;\n\n constructor(fill: string, size: Size) {\n super(TIMELINE_ELEMENT_TYPE.RECT);\n this.props = {\n width: size.width,\n height: size.height,\n fill,\n radius: 0,\n strokeColor: fill,\n lineWidth: 1 \n };\n }\n\n getFill(): string {\n return this.props.fill;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n getSize(): Size {\n return { width: this.props.width, height: this.props.height };\n }\n\n getCornerRadius(): number {\n return this.props.radius;\n }\n\n getStrokeColor(): string {\n return this.props.strokeColor || this.props.fill;\n }\n\n getLineWidth(): number {\n return this.props.lineWidth ?? 0;\n }\n\n setSize(size: Size) {\n this.props.width = size.width;\n this.props.height = size.height;\n return this;\n }\n\n setCornerRadius(cornerRadius: number) {\n this.props.radius = cornerRadius;\n return this;\n }\n\n setStrokeColor(strokeColor: string) {\n this.props.strokeColor = strokeColor;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitRectElement(this);\n }\n}\n","import { Animation } from \"../../types\";\n\nexport class ElementAnimation {\n private name: string;\n private interval?: number;\n private duration?: number;\n private intensity?: number;\n private animate?: \"enter\" | \"exit\" | \"both\";\n private mode?: \"in\" | \"out\";\n private direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"center\";\n\n constructor(name: string) {\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getInterval() {\n return this.interval;\n } \n\n getDuration() {\n return this.duration;\n }\n\n getIntensity() {\n return this.intensity;\n }\n\n getAnimate() {\n return this.animate;\n }\n\n getMode() {\n return this.mode;\n }\n\n getDirection() {\n return this.direction;\n }\n\n setInterval(interval?: number) {\n this.interval = interval;\n return this;\n }\n\n setDuration(duration?: number) {\n this.duration = duration;\n return this;\n }\n\n setIntensity(intensity?: number) {\n this.intensity = intensity;\n return this;\n }\n\n setAnimate(animate?: \"enter\" | \"exit\" | \"both\") {\n this.animate = animate;\n return this;\n }\n\n setMode(mode?: \"in\" | \"out\") {\n this.mode = mode;\n return this;\n }\n\n setDirection(direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"center\") {\n this.direction = direction;\n return this;\n }\n\n toJSON(): Animation {\n return {\n name: this.name,\n interval: this.interval,\n duration: this.duration,\n intensity: this.intensity,\n animate: this.animate,\n mode: this.mode,\n direction: this.direction,\n };\n }\n\n static fromJSON(json: Animation) {\n const animation = new ElementAnimation(json.name);\n animation.setInterval(json.interval);\n animation.setDuration(json.duration);\n animation.setIntensity(json.intensity);\n animation.setAnimate(json.animate);\n animation.setMode(json.mode);\n animation.setDirection(json.direction);\n return animation;\n };\n}","import { FrameEffect, FrameEffectProps } from \"../../types\";\n\nexport class ElementFrameEffect {\n private s: number;\n private e: number;\n private props!: FrameEffectProps;\n constructor(start: number, end: number) {\n this.s = start;\n this.e = end;\n }\n\n setProps(props: FrameEffectProps) {\n this.props = props;\n return this;\n }\n\n getProps() {\n return this.props;\n }\n\n getStart() {\n return this.s;\n }\n\n getEnd() {\n return this.e;\n }\n\n setStart(start: number) {\n this.s = start;\n return this;\n }\n\n setEnd(end: number) {\n this.e = end;\n return this;\n }\n\n toJSON(): FrameEffect {\n return {\n s: this.s,\n e: this.e,\n props: this.props,\n };\n }\n \n static fromJSON(json: FrameEffect) {\n const effect = new ElementFrameEffect(json.s, json.e);\n effect.setProps(json.props);\n return effect;\n }\n}\n","import { TextEffect } from \"../../types\";\n\nexport class ElementTextEffect {\n private name: string;\n private duration?: number;\n private delay?: number;\n private bufferTime?: number;\n\n constructor(name: string) {\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getDuration() {\n return this.duration;\n } \n\n getDelay() {\n return this.delay;\n }\n\n getBufferTime() {\n return this.bufferTime;\n }\n\n setDuration(duration?: number) {\n this.duration = duration;\n return this;\n }\n\n setDelay(delay?: number) {\n this.delay = delay;\n return this;\n }\n\n setBufferTime(bufferTime?: number) {\n this.bufferTime = bufferTime;\n return this;\n }\n\n toJSON(): TextEffect {\n return {\n name: this.name,\n delay: this.delay,\n duration: this.duration ?? 1,\n bufferTime: this.bufferTime,\n };\n }\n\n static fromJSON(json: TextEffect) {\n const effect = new ElementTextEffect(json.name);\n effect.setDelay(json.delay);\n effect.setDuration(json.duration);\n effect.setBufferTime(json.bufferTime);\n return effect;\n };\n}\n\n\n","import { ElementJSON } from \"../../types\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ElementAnimation } from \"../addOns/animation\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\nimport { ElementTextEffect } from \"../addOns/text-effect\";\n\nexport class ElementDeserializer {\n private static deserializeBaseElement(element: TrackElement, json: ElementJSON): void {\n if (json.id) element.setId(json.id);\n if (json.trackId) element.setTrackId(json.trackId);\n if (json.name) element.setName(json.name);\n if (json.s !== undefined) element.setStart(json.s);\n if (json.e !== undefined) element.setEnd(json.e);\n if (json.props) element.setProps(json.props);\n if (json.animation) element.setAnimation(ElementAnimation.fromJSON(json.animation));\n }\n\n static deserializeVideoElement(json: ElementJSON): VideoElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const videoElement = new VideoElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(videoElement, json);\n \n if (json.mediaDuration !== undefined) videoElement.setMediaDuration(json.mediaDuration);\n if (json.objectFit) videoElement.setObjectFit(json.objectFit);\n if (json.frame) videoElement.setFrame(json.frame);\n if (json.frameEffects) videoElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) videoElement.setBackgroundColor(json.backgroundColor);\n \n return videoElement;\n }\n\n static deserializeAudioElement(json: ElementJSON): AudioElement {\n const audioElement = new AudioElement(json.props?.src || \"\");\n ElementDeserializer.deserializeBaseElement(audioElement, json);\n \n if (json.mediaDuration !== undefined) audioElement.setMediaDuration(json.mediaDuration);\n \n return audioElement;\n }\n\n static deserializeImageElement(json: ElementJSON): ImageElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const imageElement = new ImageElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(imageElement, json);\n \n if (json.objectFit) imageElement.setObjectFit(json.objectFit);\n if (json.frame) imageElement.setFrame(json.frame);\n if (json.frameEffects) imageElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) imageElement.setBackgroundColor(json.backgroundColor);\n \n return imageElement;\n }\n\n static deserializeTextElement(json: ElementJSON): TextElement {\n const textElement = new TextElement(json.props?.text || \"\");\n ElementDeserializer.deserializeBaseElement(textElement, json);\n \n if (json.textEffect) textElement.setTextEffect(ElementTextEffect.fromJSON(json.textEffect));\n \n return textElement;\n }\n\n static deserializeCaptionElement(json: ElementJSON): CaptionElement {\n const captionElement = new CaptionElement(\n json.t || \"\",\n json.s || 0,\n json.e || 0\n );\n ElementDeserializer.deserializeBaseElement(captionElement, json);\n \n return captionElement;\n }\n\n static deserializeIconElement(json: ElementJSON): IconElement {\n const size = json.props?.size ?? { width: 100, height: 100 };\n \n const iconElement = new IconElement(\n json.props?.src || \"\",\n size,\n json.props?.fill\n );\n ElementDeserializer.deserializeBaseElement(iconElement, json);\n \n return iconElement;\n }\n\n static deserializeCircleElement(json: ElementJSON): CircleElement {\n const circleElement = new CircleElement(\n json.props?.fill || \"\",\n json.props?.radius || 0\n );\n ElementDeserializer.deserializeBaseElement(circleElement, json);\n \n return circleElement;\n }\n\n static deserializeRectElement(json: ElementJSON): RectElement {\n const rectElement = new RectElement(\n json.props?.fill || \"\",\n { \n width: json.props?.width || 0, \n height: json.props?.height || 0 \n }\n );\n ElementDeserializer.deserializeBaseElement(rectElement, json);\n \n return rectElement;\n }\n\n static fromJSON(json: ElementJSON): TrackElement | null{\n try {\n switch (json.type) {\n case \"video\":\n return ElementDeserializer.deserializeVideoElement(json);\n case \"audio\":\n return ElementDeserializer.deserializeAudioElement(json);\n case \"image\":\n return ElementDeserializer.deserializeImageElement(json);\n case \"text\":\n return ElementDeserializer.deserializeTextElement(json);\n case \"caption\":\n return ElementDeserializer.deserializeCaptionElement(json);\n case \"icon\":\n return ElementDeserializer.deserializeIconElement(json);\n case \"circle\":\n return ElementDeserializer.deserializeCircleElement(json);\n case \"rect\":\n return ElementDeserializer.deserializeRectElement(json);\n default:\n throw new Error(`Unknown element type: ${json.type}`);\n }\n } catch(error) {\n console.error(\"Error deserializing element:\", error);\n return null;\n }\n }\n}\n","import { ElementJSON } from \"../../types\";\nimport { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementSerializer implements ElementVisitor<ElementJSON> {\n serializeElement(element: TrackElement): ElementJSON {\n return {\n id: element.getId(),\n trackId: element.getTrackId(),\n type: element.getType(),\n name: element.getName(),\n s: element.getStart(),\n e: element.getEnd(),\n props: structuredClone(element.getProps()),\n animation: element.getAnimation()?.toJSON(),\n };\n }\n visitVideoElement(element: VideoElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitAudioElement(element: AudioElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitImageElement(element: ImageElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n };\n }\n\n visitTextElement(element: TextElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n textEffect: element.getTextEffect()?.toJSON(),\n };\n }\n\n visitCaptionElement(element: CaptionElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n t: structuredClone(element.getText()),\n };\n }\n\n visitIconElement(element: IconElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitCircleElement(element: CircleElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitRectElement(element: RectElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\n\nexport const VALIDATION_ERROR_CODE = {\n ELEMENT_NOT_FOUND: \"ELEMENT_NOT_FOUND\",\n ELEMENT_NOT_ADDED: \"ELEMENT_NOT_ADDED\",\n ELEMENT_NOT_UPDATED: \"ELEMENT_NOT_UPDATED\",\n ELEMENT_NOT_REMOVED: \"ELEMENT_NOT_REMOVED\",\n COLLISION_ERROR: \"COLLISION_ERROR\",\n INVALID_TIMING: \"INVALID_TIMING\",\n}\n\nexport class ValidationError extends Error {\n constructor(\n message: string,\n public errors: string[],\n public warnings: string[] = []\n ) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nexport class ElementValidator implements ElementVisitor<boolean> {\n private validateBasicProperties(element: any): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Check required basic properties\n if (!element.getId()) {\n errors.push(\"Element must have an ID\");\n }\n\n if (!element.getType()) {\n errors.push(\"Element must have a type\");\n }\n\n if (element.getStart() === undefined || element.getStart() === null) {\n errors.push(\"Element must have a start time (s)\");\n }\n\n if (element.getEnd() === undefined || element.getEnd() === null) {\n errors.push(\"Element must have an end time (e)\");\n }\n\n if (element.getStart() !== undefined && element.getEnd() !== undefined) {\n if (element.getStart() < 0) {\n errors.push(\"Start time cannot be negative\");\n }\n \n if (element.getEnd() <= element.getStart()) {\n errors.push(\"End time must be greater than start time\");\n }\n }\n\n if (!element.getName()) {\n warnings.push(\"Element should have a name for better identification\");\n }\n\n if (!element.getTrackId()) {\n warnings.push(\"Element should have a track Id\");\n }\n\n return { errors, warnings };\n }\n\n private validateTextElement(element: TextElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check text-specific properties\n const props = element.getProps();\n if (!props?.text) {\n errors.push(\"Text element must have text content\");\n }\n\n if (props?.fontSize !== undefined && props.fontSize <= 0) {\n errors.push(\"Font size must be greater than 0\");\n }\n\n if (props?.fontWeight !== undefined && props.fontWeight < 0) {\n errors.push(\"Font weight cannot be negative\");\n }\n\n return { errors, warnings };\n }\n\n private validateVideoElement(element: VideoElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check video-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Video element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateAudioElement(element: AudioElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check audio-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Audio element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n return { errors, warnings };\n }\n\n private validateImageElement(element: ImageElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check image-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Image element must have a source URL\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateCaptionElement(element: CaptionElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check caption-specific properties\n const text = element.getText();\n if (!text || text.trim() === \"\") {\n errors.push(\"Caption element must have text content\");\n }\n\n return { errors, warnings };\n }\n\n private validateIconElement(element: IconElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n return { errors, warnings };\n }\n\n private validateCircleElement(element: CircleElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check circle-specific properties\n const props = element.getProps();\n if (props?.radius !== undefined && props.radius <= 0) {\n errors.push(\"Circle radius must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateRectElement(element: RectElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check rectangle-specific properties\n const props = element.getProps();\n if (props?.width !== undefined && props.width <= 0) {\n errors.push(\"Rectangle width must be greater than 0\");\n }\n\n if (props?.height !== undefined && props.height <= 0) {\n errors.push(\"Rectangle height must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n visitVideoElement(element: VideoElement): boolean {\n const validation = this.validateVideoElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Video element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n const validation = this.validateAudioElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Audio element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n const validation = this.validateImageElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Image element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n const validation = this.validateTextElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Text element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n const validation = this.validateCaptionElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Caption element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n const validation = this.validateIconElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Icon element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n const validation = this.validateCircleElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Circle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n const validation = this.validateRectElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Rectangle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n} ","import { TrackElement } from \"../elements/base.element\";\nimport { Track } from \"./track\";\n\n/**\n * Friend class that provides explicit access to Track's protected methods\n * This implements the Friend Class Pattern for better encapsulation control\n */\nexport class TrackFriend {\n constructor(private track: Track) {}\n \n /**\n * Add an element to the track with validation\n * @param element The element to add\n * @param skipValidation If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n */\n addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.addElementViaFriend(element, skipValidation);\n }\n \n /**\n * Remove an element from the track\n * @param element The element to remove\n */\n removeElement(element: TrackElement): void {\n // Use the public friend method that delegates to protected method\n this.track.removeElementViaFriend(element);\n }\n \n /**\n * Update an element in the track with validation\n * @param element The element to update\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n */\n updateElement(element: TrackElement): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.updateElementViaFriend(element);\n }\n \n /**\n * Get the track instance (for advanced operations)\n * @returns The track instance\n */\n getTrack(): Track {\n return this.track;\n }\n }","import { ElementJSON, TrackJSON } from \"../../types\";\nimport { generateShortUuid } from \"../../utils/timeline.utils\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ElementDeserializer } from \"../visitor/element-deserializer\";\nimport { ElementSerializer } from \"../visitor/element-serializer\";\nimport {\n ElementValidator,\n ValidationError,\n} from \"../visitor/element-validator\";\nimport { TrackFriend } from \"./track.friend\";\n\n/**\n * Track class represents a timeline track that contains multiple elements.\n * A track is a container for timeline elements (video, audio, text, etc.) that\n * can be arranged sequentially or in parallel. Tracks provide validation,\n * serialization, and element management capabilities.\n * \n * @example\n * ```js\n * import { Track, VideoElement, TextElement } from '@twick/timeline';\n * \n * // Create a new track\n * const videoTrack = new Track(\"Video Track\");\n * \n * // Add elements to the track\n * const videoElement = new VideoElement({\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * });\n * \n * videoTrack.createFriend().addElement(videoElement);\n * \n * // Serialize the track\n * const trackData = videoTrack.serialize();\n * ```\n */\nexport class Track {\n private id: string;\n private name: string;\n private type: string;\n private props: Record<string, any>;\n private elements: TrackElement[];\n private validator: ElementValidator;\n\n /**\n * Creates a new Track instance.\n * \n * @param name - The display name for the track\n * @param type - The type of the track\n * @param id - Optional unique identifier (auto-generated if not provided)\n * \n * @example\n * ```js\n * const track = new Track(\"My Video Track\");\n * const trackWithId = new Track(\"Audio Track\", \"element\", \"video-track-1\");\n * ```\n */\n constructor(name: string, type: string =\"element\", id?: string) {\n this.name = name;\n this.id = id ?? `t-${generateShortUuid()}`;\n this.type = type;\n this.props = {};\n this.elements = [];\n this.validator = new ElementValidator();\n }\n\n /**\n * Creates a friend instance for explicit access to protected methods.\n * This implements the Friend Class Pattern to allow controlled access\n * to protected methods while maintaining encapsulation.\n * \n * @returns TrackFriend instance that can access protected methods\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * \n * // Use friend to add elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * friend.addElement(element);\n * ```\n */\n createFriend(): TrackFriend {\n return new TrackFriend(this);\n }\n\n /**\n * Friend method to add element (called by TrackFriend).\n * Provides controlled access to the protected addElement method.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * const success = track.addElementViaFriend(element);\n * // success = true if element was added successfully\n * ```\n */\n addElementViaFriend(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n return this.addElement(element, skipValidation);\n }\n\n /**\n * Friend method to remove element (called by TrackFriend).\n * Provides controlled access to the protected removeElement method.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * track.removeElementViaFriend(element);\n * // Element is removed from the track\n * ```\n */\n removeElementViaFriend(element: TrackElement): void {\n this.removeElement(element);\n }\n\n /**\n * Friend method to update element (called by TrackFriend).\n * Provides controlled access to the protected updateElement method.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Update the element\n * element.setEnd(15);\n * const success = track.updateElementViaFriend(element);\n * // success = true if element was updated successfully\n * ```\n */\n updateElementViaFriend(element: TrackElement): boolean {\n return this.updateElement(element);\n }\n\n /**\n * Gets the unique identifier of the track.\n * \n * @returns The track's unique ID string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\", \"element\", \"track-123\");\n * const id = track.getId(); // \"track-123\"\n * ```\n */\n getId(): string {\n return this.id;\n }\n\n /**\n * Gets the display name of the track.\n * \n * @returns The track's display name\n * \n * @example\n * ```js\n * const track = new Track(\"Video Track\");\n * const name = track.getName(); // \"Video Track\"\n * ```\n */\n getName(): string {\n return this.name;\n }\n\n /**\n * Gets the type of the track.\n * \n * @returns The track's type string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const type = track.getType(); // \"element\"\n * ```\n */\n getType(): string {\n return this.type;\n }\n\n /**\n * Gets a read-only array of all elements in the track.\n * Returns a copy of the elements array to prevent external modification.\n * \n * @returns Read-only array of track elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const elements = track.getElements();\n * // elements is a read-only array of TrackElement instances\n * \n * elements.forEach(element => {\n * console.log(`Element: ${element.getId()}, Duration: ${element.getEnd() - element.getStart()}`);\n * });\n * ```\n */\n getElements(): ReadonlyArray<TrackElement> {\n return [...this.elements];\n }\n\n getProps(): Record<string, any> {\n return this.props;\n }\n\n setProps(props: Record<string, any>) {\n this.props = structuredClone(props);\n return this;\n }\n\n /**\n * Validates a single element using the track's validator.\n * Checks if the element meets all validation requirements.\n * \n * @param element - The element to validate\n * @returns true if valid, throws ValidationError if invalid\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * try {\n * const isValid = track.validateElement(element);\n * console.log('Element is valid:', isValid);\n * } catch (error) {\n * if (error instanceof ValidationError) {\n * console.log('Validation failed:', error.errors);\n * }\n * }\n * ```\n */\n validateElement(element: TrackElement): boolean {\n return element.accept(this.validator);\n }\n\n /**\n * Gets the total duration of the track.\n * Calculates the duration based on the end time of the last element.\n * \n * @returns The total duration of the track in seconds\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const duration = track.getTrackDuration(); // 0 if no elements\n * \n * // After adding elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 30 });\n * track.createFriend().addElement(element);\n * const newDuration = track.getTrackDuration(); // 30\n * ```\n */\n getTrackDuration(): number {\n return this.elements?.length\n ? this.elements[this.elements.length - 1].getEnd()\n : 0;\n }\n\n /**\n * Adds an element to the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * const success = friend.addElement(element);\n * ```\n */\n protected addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n element.setTrackId(this.id);\n if (skipValidation) {\n this.elements.push(element);\n return true;\n }\n\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n if(this.isElementColliding(element)) {\n throw new ValidationError(\"Element is colliding with another element\", [\"COLLISION_ERROR\"]);\n } else {\n this.elements.push(element);\n return true;\n }\n }\n } catch (error) {\n throw error;\n }\n return false;\n }\n\n public isElementColliding(element: TrackElement): boolean {\n return this.elements.some((e) => e.getStart() < element.getEnd() && e.getEnd() > element.getStart());\n }\n\n /**\n * Removes an element from the track.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * friend.removeElement(element);\n * ```\n */\n protected removeElement(element: TrackElement): void {\n const index = this.elements.findIndex((e) => e.getId() === element.getId());\n if (index !== -1) {\n this.elements.splice(index, 1);\n }\n }\n\n /**\n * Updates an element in the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * element.setEnd(15);\n * const success = friend.updateElement(element);\n * ```\n */\n protected updateElement(element: TrackElement): boolean {\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n const index = this.elements.findIndex(\n (e) => e.getId() === element.getId()\n );\n if (index !== -1) {\n this.elements[index] = element;\n return true;\n }\n }\n } catch (error) {\n if (error instanceof ValidationError) {\n throw error;\n }\n throw error;\n }\n\n return false;\n }\n\n /**\n * Finds an element in the track by its ID.\n * \n * @param id - The unique identifier of the element to find\n * @returns The found element or undefined if not found\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const foundElement = track.getElementById(element.getId());\n * // foundElement is the same element instance\n * ```\n */\n getElementById(id: string): Readonly<TrackElement> | undefined {\n const element = this.elements.find((e) => e.getId() === id);\n if (!element) return undefined;\n return element;\n }\n\n /**\n * Validates all elements in the track and returns combined result and per-element status.\n * Provides detailed validation information for each element including errors and warnings.\n * \n * @returns Object with overall isValid and array of per-element validation results\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element1 = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * const element2 = new TextElement({ text: \"Hello\", start: 5, end: 15 });\n * \n * track.createFriend().addElement(element1);\n * track.createFriend().addElement(element2);\n * \n * const validation = track.validateAllElements();\n * console.log('Overall valid:', validation.isValid);\n * \n * validation.results.forEach(result => {\n * console.log(`Element ${result.element.getId()}: ${result.isValid ? 'Valid' : 'Invalid'}`);\n * if (result.errors) {\n * console.log('Errors:', result.errors);\n * }\n * if (result.warnings) {\n * console.log('Warnings:', result.warnings);\n * }\n * });\n * ```\n */\n validateAllElements(): {\n isValid: boolean;\n results: Array<{\n element: TrackElement;\n isValid: boolean;\n errors?: string[];\n warnings?: string[];\n }>;\n } {\n let validResult = true;\n const results = this.elements.map((element) => {\n try {\n const isValid = this.validateElement(element);\n if (!isValid) {\n validResult = false;\n }\n return { element, isValid };\n } catch (error) {\n if (error instanceof ValidationError) {\n validResult = false;\n return {\n element,\n isValid: false,\n errors: error.errors,\n warnings: error.warnings,\n };\n }\n return {\n element,\n isValid: false,\n errors: [error instanceof Error ? error.message : \"Unknown error\"],\n };\n }\n });\n return { isValid: validResult, results };\n }\n\n /**\n * Serializes the track and all its elements to JSON format.\n * Converts the track structure to a format that can be stored or transmitted.\n * \n * @returns TrackJSON object representing the track and its elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const trackData = track.serialize();\n * // trackData = {\n * // id: \"t-abc123\",\n * // name: \"My Track\",\n * // type: \"element\",\n * // elements: [{ ... }]\n * // }\n * \n * // Save to localStorage\n * localStorage.setItem('track-data', JSON.stringify(trackData));\n * ```\n */\n serialize(): TrackJSON {\n const serializer = new ElementSerializer();\n return {\n id: this.id,\n name: this.name,\n type: this.type,\n props: this.props,\n elements: this.elements.map(\n (element) => element.accept(serializer) as ElementJSON\n ),\n };\n }\n\n /**\n * Creates a Track instance from JSON data.\n * Static factory method for deserializing track data.\n * \n * @param json - JSON object containing track data\n * @returns New Track instance with loaded data\n * \n * @example\n * ```js\n * const trackData = {\n * id: \"t-abc123\",\n * name: \"My Track\",\n * type: \"element\",\n * elements: [\n * {\n * id: \"e-def456\",\n * type: \"video\",\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * }\n * ]\n * };\n * \n * const track = Track.fromJSON(trackData);\n * console.log(track.getName()); // \"My Track\"\n * console.log(track.getElements().length); // 1\n * ```\n */\n static fromJSON(json: any): Track {\n if (!json || typeof json !== 'object') {\n throw new Error('Invalid JSON data for Track deserialization');\n }\n const track = new Track(json.name || '', json.type ?? \"element\", json.id);\n track.type = json.type;\n track.props = json.props || {};\n track.elements = (json.elements || [])\n .map(ElementDeserializer.fromJSON)\n .filter((element: any): element is TrackElement => element !== null);\n return track;\n }\n}\n","import { TrackElement } from \"../core/elements/base.element\";\nimport { Track } from \"../core/track/track\";\n\ntype TimelineStore = {\n tracks: Track[];\n version: number;\n elementMap: Record<string, TrackElement>;\n trackMap: Record<string, any>;\n captionProps: Record<string, any>;\n}\n\nexport type TimelineTrackData = {\n tracks: Track[];\n version: number;\n}\n\nexport class TimelineContextStore {\n private static instance: TimelineContextStore;\n private storeMap: Map<string, TimelineStore>;\n\n private constructor() {\n this.storeMap = new Map();\n }\n\n public static getInstance(): TimelineContextStore {\n if (!TimelineContextStore.instance) {\n TimelineContextStore.instance = new TimelineContextStore();\n }\n return TimelineContextStore.instance;\n }\n\n public initializeContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.storeMap.set(contextId, {\n tracks: [],\n version: 0,\n elementMap: {},\n trackMap: {},\n captionProps: {},\n });\n }\n }\n\n public getTimelineData(contextId: string): TimelineTrackData | null {\n const timelineStore = this.storeMap.get(contextId);\n return timelineStore ? {\n tracks: timelineStore.tracks,\n version: timelineStore.version,\n } : null;\n }\n\n public setTimelineData(contextId: string, timelineData: TimelineTrackData): TimelineTrackData {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.tracks = timelineData.tracks;\n this.storeMap.get(contextId)!.version = timelineData.version;\n return timelineData;\n }\n\n public getElementMap(contextId: string): Record<string, TrackElement> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.elementMap;\n }\n\n public setElementMap(contextId: string, elementMap: Record<string, TrackElement>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.elementMap = elementMap;\n }\n\n public getTrackMap(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.trackMap;\n }\n\n public setTrackMap(contextId: string, trackMap: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.trackMap = trackMap;\n }\n\n public getCaptionProps(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.captionProps;\n }\n\n public setCaptionProps(contextId: string, captionProps: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.captionProps = captionProps;\n }\n\n public clearContext(contextId: string): void {\n this.storeMap.delete(contextId);\n }\n\n private ensureContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.initializeContext(contextId);\n }\n }\n}\n\nexport const timelineContextStore = TimelineContextStore.getInstance();","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementAdder visitor for adding elements to tracks.\n * Uses the visitor pattern to handle different element types\n * and implements the Friend Class Pattern for explicit access control.\n * Automatically calculates start and end times for elements based on\n * existing track content.\n */\nexport class ElementAdder implements ElementVisitor<Promise<boolean>> {\n private track: Track;\n private trackFriend: TrackFriend;\n\n /**\n * Creates a new ElementAdder instance for the specified track.\n *\n * @param track - The track to add elements to\n * \n * @example\n * ```js\n * const adder = new ElementAdder(track);\n * const success = await adder.visitVideoElement(videoElement);\n * ```\n */\n constructor(track: Track) {\n this.track = track;\n this.trackFriend = track.createFriend();\n }\n\n /**\n * Adds a video element to the track.\n * Updates video metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The video element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitVideoElement(videoElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitVideoElement(element: VideoElement): Promise<boolean> {\n await element.updateVideoMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n\n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an audio element to the track.\n * Updates audio metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The audio element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitAudioElement(audioElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitAudioElement(element: AudioElement): Promise<boolean> {\n await element.updateAudioMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an image element to the track.\n * Updates image metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The image element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitImageElement(imageElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitImageElement(element: ImageElement): Promise<boolean> {\n await element.updateImageMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a text element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The text element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitTextElement(textElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitTextElement(element: TextElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a caption element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The caption element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCaptionElement(captionElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCaptionElement(element: CaptionElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an icon element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The icon element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitIconElement(iconElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitIconElement(element: IconElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a circle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The circle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCircleElement(circleElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCircleElement(element: CircleElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a rectangle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The rectangle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitRectElement(rectElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitRectElement(element: RectElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementRemover visitor for removing elements from tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementRemover implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementUpdater visitor for updating elements in tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementUpdater implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitAudioElement(element: AudioElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitImageElement(element: ImageElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitTextElement(element: TextElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitIconElement(element: IconElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCircleElement(element: CircleElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitRectElement(element: RectElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementCloner implements ElementVisitor<TrackElement> {\n cloneElementProperties(srcElement: TrackElement, destElement: TrackElement) {\n return destElement\n .setName(srcElement.getName())\n .setType(srcElement.getType())\n .setStart(srcElement.getStart())\n .setEnd(srcElement.getEnd())\n .setProps(srcElement.getProps())\n .setAnimation(srcElement.getAnimation());\n }\n\n visitVideoElement(element: VideoElement): TrackElement {\n const props = element.getProps();\n const clonedElement = new VideoElement(props!.src, element.getParentSize());\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setMediaDuration(element.getMediaDuration())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects() ?? [])\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n return clonedElement;\n }\n\n visitAudioElement(element: AudioElement): TrackElement {\n const clonedElement = new AudioElement(element.getProps()!.src);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setMediaDuration(element.getMediaDuration());\n return clonedElement;\n }\n\n visitImageElement(element: ImageElement): TrackElement {\n const clonedElement = new ImageElement(\n element.getProps()!.src,\n element.getParentSize()\n );\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects())\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n\n return clonedElement;\n }\n\n visitTextElement(element: TextElement): TrackElement {\n const clonedElement = new TextElement(element.getProps()!.text);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setTextEffect(element.getTextEffect());\n return clonedElement;\n }\n\n visitCaptionElement(element: CaptionElement): TrackElement {\n const clonedElement = new CaptionElement(\n element.getProps()!.text,\n element.getStart(),\n element.getEnd()\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitRectElement(element: RectElement): TrackElement {\n const clonedElement = new RectElement(\n element.getProps()!.fill,\n element.getProps()!.size\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitCircleElement(element: CircleElement): TrackElement {\n const clonedElement = new CircleElement(\n element.getProps()!.fill,\n element.getProps()!.radius\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitIconElement(element: IconElement): TrackElement {\n const clonedElement = new IconElement(\n element.getProps()!.src,\n element.getProps()!.size,\n element.getProps()!.fill\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { ElementCloner } from \"./element-cloner\";\nimport { canSplitElement } from \"../../utils/timeline.utils\";\n\nexport interface SplitResult {\n firstElement: any;\n secondElement: any;\n success: boolean;\n}\n\nexport class ElementSplitter implements ElementVisitor<SplitResult> {\n private splitTime: number;\n private elementCloner: ElementCloner;\n constructor(splitTime: number) {\n this.splitTime = splitTime;\n this.elementCloner = new ElementCloner();\n }\n\n visitVideoElement(element: VideoElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n\n const firstElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n const secondElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitAudioElement(element: AudioElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n const secondElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitImageElement(element: ImageElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n const secondElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitTextElement(element: TextElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCaptionElement(element: CaptionElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitRectElement(element: RectElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n const secondElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCircleElement(element: CircleElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitCircleElement(element);\n const secondElement = this.elementCloner.visitCircleElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitIconElement(element: IconElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitIconElement(element);\n const secondElement = this.elementCloner.visitIconElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n}\n","import {\n extractVideoAudio,\n generateShortUuid,\n getTotalDuration,\n} from \"../../utils/timeline.utils\";\nimport { Track } from \"../track/track\";\nimport {\n timelineContextStore,\n TimelineTrackData,\n} from \"../../services/data.service\";\nimport { PLAYER_STATE, TIMELINE_ACTION } from \"../../utils/constants\";\nimport { ElementAdder } from \"../visitor/element-adder\";\nimport { ElementRemover } from \"../visitor/element-remover\";\nimport { ElementUpdater } from \"../visitor/element-updater\";\nimport { ElementSplitter, SplitResult } from \"../visitor/element-splitter\";\nimport { ElementCloner } from \"../visitor/element-cloner\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ProjectJSON, TrackJSON } from \"../../types\";\nimport { ValidationError } from \"../visitor/element-validator\";\n\n/**\n * Type for timeline operation context\n */\nexport interface TimelineOperationContext {\n contextId: string;\n setTotalDuration: (duration: number) => void;\n setPresent: (data: ProjectJSON) => void;\n handleUndo: () => ProjectJSON | null;\n handleRedo: () => ProjectJSON | null;\n handleResetHistory: () => void;\n updateChangeLog: () => void;\n setTimelineAction?: (action: string, payload?: unknown) => void;\n}\n\n/**\n * TimelineEditor\n *\n * This class provides an interface to execute all timeline operations\n * using a direct, class-based approach with track-based management.\n * It also handles undo/redo operations internally.\n */\nexport class TimelineEditor {\n private context: TimelineOperationContext;\n private totalDuration: number = 0;\n\n constructor(context: TimelineOperationContext) {\n this.context = context;\n // Ensure context is initialized in timelineContextStore\n timelineContextStore.initializeContext(this.context.contextId);\n }\n\n getContext(): TimelineOperationContext {\n return this.context;\n }\n\n pauseVideo(): void {\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(\n TIMELINE_ACTION.SET_PLAYER_STATE,\n PLAYER_STATE.PAUSED\n );\n }\n }\n\n getTimelineData(): TimelineTrackData | null {\n const contextId = this.context.contextId;\n return timelineContextStore.getTimelineData(contextId);\n }\n\n getLatestVersion(): number {\n const contextId = this.context.contextId;\n const timelineData = timelineContextStore.getTimelineData(contextId);\n return timelineData?.version || 0;\n }\n\n protected setTimelineData({\n tracks,\n version,\n updatePlayerData,\n }: {\n tracks: Track[];\n version?: number;\n updatePlayerData?: boolean;\n }) {\n const prevTimelineData = this.getTimelineData();\n const updatedVersion = version ?? (prevTimelineData?.version || 0) + 1;\n const updatedTimelineData = {\n tracks,\n version: updatedVersion,\n };\n timelineContextStore.setTimelineData(\n this.context.contextId,\n updatedTimelineData\n );\n this.updateHistory(updatedTimelineData);\n this.context.updateChangeLog();\n if (updatePlayerData) {\n this.context?.setTimelineAction?.(\n TIMELINE_ACTION.UPDATE_PLAYER_DATA,\n updatedTimelineData\n );\n }\n return updatedTimelineData as TimelineTrackData;\n }\n\n addTrack(name: string, type: string = \"element\"): Track {\n const prevTimelineData = this.getTimelineData();\n const id = `t-${generateShortUuid()}`;\n const track = new Track(name, type, id);\n const updatedTimelines = [...(prevTimelineData?.tracks || []), track];\n this.setTimelineData({ tracks: updatedTimelines, updatePlayerData: true });\n return track;\n }\n\n getTrackById(id: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getId() === id);\n return track as Track | null;\n }\n\n getTrackByName(name: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getName() === name);\n return track as Track | null;\n }\n\n getSubtiltesTrack(): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getType() === \"caption\");\n return track as Track | null;\n }\n\n removeTrackById(id: string): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== id);\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n removeTrack(track: Track): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== track.getId());\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n /**\n * Refresh the timeline data\n */\n refresh(): void {\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({ tracks: currentData.tracks, updatePlayerData: true });\n }\n }\n\n /**\n * Add an element to a specific track using the visitor pattern.\n * @param track The track to add the element to.\n * @param element The element to add.\n * @returns A promise that resolves to `true` if the element was added successfully, otherwise `false`.\n */\n async addElementToTrack(\n track: Track,\n element: TrackElement\n ): Promise<boolean> {\n if (!track) {\n throw new Error(\"TRACK_NOT_FOUND\"); \n }\n try {\n // Use the visitor pattern to handle different element types\n const elementAdder = new ElementAdder(track);\n const result = await element.accept(elementAdder);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n return true;\n } else {\n return false;\n }\n } catch (error) {\n if(error instanceof ValidationError && error.errors?.length > 0) {\n throw error;\n } else {\n throw new Error(\"ELEMENT_NOT_ADDED\");\n }\n }\n }\n\n /**\n * Remove an element from a specific track using the visitor pattern.\n * @param element The element to remove.\n * @returns `true` if the element was removed successfully, otherwise `false`.\n */\n removeElement(element: TrackElement): boolean {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return false;\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementRemover = new ElementRemover(track);\n const result = element.accept(elementRemover);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n }\n\n return result;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Update an element in a specific track using the visitor pattern.\n * @param element The updated element.\n * @returns The updated `TrackElement`.\n */\n updateElement(element: TrackElement): TrackElement {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return element;\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementUpdater = new ElementUpdater(track);\n const result = element.accept(elementUpdater);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks});\n }\n }\n\n return element;\n } catch (error) {\n return element;\n }\n }\n\n /**\n * Split an element at a specific time point using the visitor pattern\n * @param element The element to split\n * @param splitTime The time point to split at\n * @returns SplitResult with first element, second element, and success status\n */\n async splitElement(\n element: TrackElement,\n splitTime: number\n ): Promise<SplitResult> {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return { firstElement: element, secondElement: null, success: false };\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementSplitter = new ElementSplitter(splitTime);\n const result = element.accept(elementSplitter);\n\n if (result.success) {\n const elementRemover = new ElementRemover(track);\n // Remove the original element from the track\n element.accept(elementRemover);\n\n // Add the first split element to the track\n const elementAdder = new ElementAdder(track);\n result.firstElement.accept(elementAdder);\n result.secondElement.accept(elementAdder);\n\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n }\n return result;\n } catch (error) {\n return { firstElement: element, secondElement: null, success: false };\n }\n }\n\n /**\n * Clone an element using the visitor pattern\n * @param element The element to clone\n * @returns TrackElement | null - the cloned element or null if cloning failed\n */\n cloneElement(element: TrackElement): TrackElement | null {\n try {\n const elementCloner = new ElementCloner();\n return element.accept(elementCloner);\n } catch (error) {\n return null;\n }\n }\n\n reorderTracks(tracks: Track[]): void {\n this.setTimelineData({tracks, updatePlayerData: true});\n }\n\n updateHistory(timelineTrackData: TimelineTrackData): void {\n const tracks = timelineTrackData.tracks.map((t) => t.serialize());\n this.totalDuration = getTotalDuration(tracks);\n this.context.setTotalDuration(this.totalDuration);\n const version = timelineTrackData.version;\n this.context.setPresent({\n tracks,\n version,\n });\n }\n\n /**\n * Trigger undo operation and update timeline data\n */\n undo(): void {\n const result = this.context.handleUndo();\n if (result && result.tracks) {\n // Update the timeline data in the editor's store\n const tracks = result.tracks.map((t: TrackJSON) => Track.fromJSON(t));\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks,\n version: result.version,\n });\n\n // Update total duration\n this.totalDuration = getTotalDuration(result.tracks);\n this.context.setTotalDuration(this.totalDuration);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: result.tracks,\n version: result.version,\n });\n }\n }\n }\n\n /**\n * Trigger redo operation and update timeline data\n */\n redo(): void {\n const result = this.context.handleRedo();\n if (result && result.tracks) {\n // Update the timeline data in the editor's store\n const tracks = result.tracks.map((t: TrackJSON) => Track.fromJSON(t));\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks,\n version: result.version,\n });\n\n // Update total duration\n this.totalDuration = getTotalDuration(result.tracks);\n this.context.setTotalDuration(this.totalDuration);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: result.tracks,\n version: result.version,\n });\n }\n }\n }\n\n /**\n * Reset history and clear timeline data\n */\n resetHistory(): void {\n this.context.handleResetHistory();\n\n // Clear the timeline data in the editor's store\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks: [],\n version: 0,\n });\n\n // Reset total duration and version\n this.context.setTotalDuration(0);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: [],\n version: 0,\n });\n }\n }\n\n loadProject({\n tracks,\n version,\n }: {\n tracks: TrackJSON[];\n version: number;\n }): void {\n this.pauseVideo();\n this.context.handleResetHistory();\n // Convert Timeline[] to Track[] and set\n const timelineTracks = tracks.map((t) => Track.fromJSON(t));\n this.setTimelineData({tracks: timelineTracks, version, updatePlayerData: true});\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: tracks,\n version: version,\n forceUpdate: true,\n });\n }\n }\n\n async getVideoAudio(): Promise<string> {\n const tracks = this.getTimelineData()?.tracks || [];\n const audioBlobUrl = await extractVideoAudio(tracks, this.totalDuration);\n return audioBlobUrl;\n }\n}\n","import { createContext, useContext, useState } from \"react\";\nimport { ProjectJSON } from \"../types\";\n\nconst MAX_HISTORY = 20;\n\n// Helper function for deep cloning\nconst deepClone = <T,>(obj: T): T => {\n return JSON.parse(JSON.stringify(obj));\n};\n\ninterface UndoRedoState {\n past: ProjectJSON[];\n present: ProjectJSON | null;\n future: ProjectJSON[];\n}\n\ninterface UndoRedoContextType {\n // State\n canUndo: boolean;\n canRedo: boolean;\n present: ProjectJSON | null;\n // Actions\n setPresent: (data: ProjectJSON) => void;\n undo: () => ProjectJSON | null;\n redo: () => ProjectJSON | null;\n resetHistory: () => void;\n getLastPersistedState: () => ProjectJSON | null;\n // Configuration\n disablePersistence: () => void;\n}\n\nconst UndoRedoContext = createContext<UndoRedoContextType | undefined>(\n undefined\n);\n\n// Local storage utilities\nconst STORAGE_KEY_PREFIX = \"twick_undo_redo_\";\n\nconst saveToStorage = (key: string, state: UndoRedoState): void => {\n try {\n localStorage.setItem(key, JSON.stringify(state));\n } catch (error) {\n console.warn(\"Failed to save undo-redo state to localStorage:\", error);\n }\n};\n\nconst loadFromStorage = (key: string): UndoRedoState | null => {\n try {\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n return JSON.parse(stored);\n } catch (error) {\n console.warn(\"Failed to load undo-redo state from localStorage:\", error);\n return null;\n }\n};\n\nexport interface UndoRedoProviderProps {\n children: React.ReactNode;\n persistenceKey?: string;\n maxHistorySize?: number;\n}\n\nexport const UndoRedoProvider: React.FC<UndoRedoProviderProps> = ({\n children,\n persistenceKey,\n maxHistorySize = MAX_HISTORY,\n}) => {\n const [state, setState] = useState<UndoRedoState>(() => {\n // Load from storage if persistence is enabled\n if (persistenceKey) {\n const stored = loadFromStorage(STORAGE_KEY_PREFIX + persistenceKey);\n if (stored) {\n return {\n past: stored.past,\n present: stored.present,\n future: stored.future,\n };\n }\n }\n\n return {\n past: [],\n present: null,\n future: [],\n };\n });\n\n // Save to storage whenever state changes (if persistence enabled)\n const saveState = (newState: UndoRedoState) => {\n if (persistenceKey) {\n saveToStorage(STORAGE_KEY_PREFIX + persistenceKey, newState);\n }\n };\n\n // When user makes a new change\n const setPresent = (data: ProjectJSON) => {\n setState((prevState) => {\n let newPast = [...prevState.past];\n if (prevState.present) {\n newPast.push(deepClone(prevState.present));\n }\n\n const newState: UndoRedoState = {\n past: newPast,\n present: deepClone(data),\n future: [], // Clear future because it's a new change\n };\n\n // Limit history size\n if (newState.past.length > maxHistorySize) {\n newState.past.shift(); // Remove oldest\n }\n\n saveState(newState);\n return newState;\n });\n };\n\n const undo = (): ProjectJSON | null => {\n let undoResult: ProjectJSON | null = null;\n\n setState((prevState) => {\n if (prevState.past.length === 0) return prevState;\n\n const previous = prevState.past[prevState.past.length - 1];\n const newState: UndoRedoState = {\n past: prevState.past.slice(0, -1), // Remove last item\n present: previous,\n future: prevState.present\n ? [deepClone(prevState.present), ...prevState.future]\n : prevState.future,\n };\n\n undoResult = previous;\n saveState(newState);\n return newState;\n });\n\n return undoResult;\n };\n\n const redo = (): ProjectJSON | null => {\n let redoResult: ProjectJSON | null = null;\n\n setState((prevState) => {\n if (prevState.future.length === 0) return prevState;\n\n const next = prevState.future[0];\n const newState: UndoRedoState = {\n past: prevState.present\n ? [...prevState.past, deepClone(prevState.present)]\n : prevState.past,\n present: next,\n future: prevState.future.slice(1), // Remove first item\n };\n\n // Limit history size\n if (newState.past.length > maxHistorySize) {\n newState.past.shift();\n }\n\n redoResult = next;\n saveState(newState);\n return newState;\n });\n\n return redoResult;\n };\n\n const getLastPersistedState = () => {\n if (persistenceKey) {\n const stored = loadFromStorage(STORAGE_KEY_PREFIX + persistenceKey);\n return stored?.present || null;\n }\n return null;\n };\n\n // Reset all history\n const resetHistory = () => {\n const newState: UndoRedoState = {\n past: [],\n present: null,\n future: [],\n };\n\n setState(newState);\n\n // Clear from storage too\n if (persistenceKey) {\n localStorage.removeItem(STORAGE_KEY_PREFIX + persistenceKey);\n }\n };\n\n const disablePersistence = () => {\n if (persistenceKey) {\n localStorage.removeItem(STORAGE_KEY_PREFIX + persistenceKey);\n }\n };\n\n const contextValue: UndoRedoContextType = {\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n present: state.present,\n setPresent,\n undo,\n redo,\n resetHistory,\n getLastPersistedState,\n disablePersistence,\n };\n\n return (\n <UndoRedoContext.Provider value={contextValue}>\n {children}\n </UndoRedoContext.Provider>\n );\n};\n\nexport const useUndoRedo = (): UndoRedoContextType => {\n const context = useContext(UndoRedoContext);\n if (context === undefined) {\n throw new Error(\"useUndoRedo must be used within an UndoRedoProvider\");\n }\n return context;\n};\n","import { TimelineEditor } from \"../core/editor/timeline.editor\";\n\n// Global registry to store editor instances by contextId\nexport const editorRegistry = new Map<string, TimelineEditor>();\n\n// Expose the registry to the global window object for console access\ndeclare global {\n interface Window {\n twickTimelineEditors: Map<string, TimelineEditor>;\n }\n}\n\n// Initialize the global registry on window\nif (typeof window !== 'undefined') {\n window.twickTimelineEditors = editorRegistry;\n}","var t=\"undefined\"!=typeof window?window:void 0,i=\"undefined\"!=typeof globalThis?globalThis:t;\"undefined\"==typeof self&&(i.self=i),\"undefined\"==typeof File&&(i.File=function(){});var e=Array.prototype,r=e.forEach,s=e.indexOf,n=null==i?void 0:i.navigator,o=null==i?void 0:i.document,a=null==i?void 0:i.location,l=null==i?void 0:i.fetch,u=null!=i&&i.XMLHttpRequest&&\"withCredentials\"in new i.XMLHttpRequest?i.XMLHttpRequest:void 0,h=null==i?void 0:i.AbortController,d=null==n?void 0:n.userAgent,v=null!=t?t:{},c={DEBUG:!1,LIB_VERSION:\"1.321.2\"};function f(t,i,e,r,s,n,o){try{var a=t[n](o),l=a.value}catch(t){return void e(t)}a.done?i(l):Promise.resolve(l).then(r,s)}function p(t){return function(){var i=this,e=arguments;return new Promise((function(r,s){var n=t.apply(i,e);function o(t){f(n,r,s,o,a,\"next\",t)}function a(t){f(n,r,s,o,a,\"throw\",t)}o(void 0)}))}}function g(){return g=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},g.apply(null,arguments)}function _(t,i){if(null==t)return{};var e={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;e[r]=t[r]}return e}var m=[\"amazonbot\",\"amazonproductbot\",\"app.hypefactors.com\",\"applebot\",\"archive.org_bot\",\"awariobot\",\"backlinksextendedbot\",\"baiduspider\",\"bingbot\",\"bingpreview\",\"chrome-lighthouse\",\"dataforseobot\",\"deepscan\",\"duckduckbot\",\"facebookexternal\",\"facebookcatalog\",\"http://yandex.com/bots\",\"hubspot\",\"ia_archiver\",\"leikibot\",\"linkedinbot\",\"meta-externalagent\",\"mj12bot\",\"msnbot\",\"nessus\",\"petalbot\",\"pinterest\",\"prerender\",\"rogerbot\",\"screaming frog\",\"sebot-wa\",\"sitebulb\",\"slackbot\",\"slurp\",\"trendictionbot\",\"turnitin\",\"twitterbot\",\"vercel-screenshot\",\"vercelbot\",\"yahoo! slurp\",\"yandexbot\",\"zoombot\",\"bot.htm\",\"bot.php\",\"(bot;\",\"bot/\",\"crawler\",\"ahrefsbot\",\"ahrefssiteaudit\",\"semrushbot\",\"siteauditbot\",\"splitsignalbot\",\"gptbot\",\"oai-searchbot\",\"chatgpt-user\",\"perplexitybot\",\"better uptime bot\",\"sentryuptimebot\",\"uptimerobot\",\"headlesschrome\",\"cypress\",\"google-hoteladsverifier\",\"adsbot-google\",\"apis-google\",\"duplexweb-google\",\"feedfetcher-google\",\"google favicon\",\"google web preview\",\"google-read-aloud\",\"googlebot\",\"googleother\",\"google-cloudvertexbot\",\"googleweblight\",\"mediapartners-google\",\"storebot-google\",\"google-inspectiontool\",\"bytespider\"],y=function(t,i){if(void 0===i&&(i=[]),!t)return!1;var e=t.toLowerCase();return m.concat(i).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},b=[\"$snapshot\",\"$pageview\",\"$pageleave\",\"$set\",\"survey dismissed\",\"survey sent\",\"survey shown\",\"$identify\",\"$groupidentify\",\"$create_alias\",\"$$client_ingestion_warning\",\"$web_experiment_applied\",\"$feature_enrollment_update\",\"$feature_flag_called\"];function w(t,i){return-1!==t.indexOf(i)}var x=function(t){return t.trim()},E=function(t){return t.replace(/^\\$/,\"\")};var S=Array.isArray,k=Object.prototype,P=k.hasOwnProperty,T=k.toString,I=S||function(t){return\"[object Array]\"===T.call(t)},C=t=>\"function\"==typeof t,R=t=>t===Object(t)&&!I(t),F=t=>{if(R(t)){for(var i in t)if(P.call(t,i))return!1;return!0}return!1},M=t=>void 0===t,O=t=>\"[object String]\"==T.call(t),A=t=>O(t)&&0===t.trim().length,D=t=>null===t,j=t=>M(t)||D(t),L=t=>\"[object Number]\"==T.call(t)&&t==t,N=t=>L(t)&&t>0,U=t=>\"[object Boolean]\"===T.call(t),z=t=>t instanceof FormData,H=t=>w(b,t);function B(t){return null===t||\"object\"!=typeof t}function q(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function W(t){return!M(Event)&&function(t,i){try{return t instanceof i}catch(t){return!1}}(t,Event)}var G=[!0,\"true\",1,\"1\",\"yes\"],V=t=>w(G,t),J=[!1,\"false\",0,\"0\",\"no\"];function K(t,i,e,r,s){return i>e&&(r.warn(\"min cannot be greater than max.\"),i=e),L(t)?t>e?(r.warn(\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r.warn(\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r.warn(\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),K(s||e,i,e,r))}class Y{constructor(t){this.t={},this.i=t.i,this.o=K(t.bucketSize,0,100,t.h),this.m=K(t.refillRate,0,this.o,t.h),this.$=K(t.refillInterval,0,864e5,t.h)}S(t,i){var e=i-t.lastAccess,r=Math.floor(e/this.$);if(r>0){var s=r*this.m;t.tokens=Math.min(t.tokens+s,this.o),t.lastAccess=t.lastAccess+r*this.$}}consumeRateLimit(t){var i,e=Date.now(),r=String(t),s=this.t[r];return s?this.S(s,e):(s={tokens:this.o,lastAccess:e},this.t[r]=s),0===s.tokens||(s.tokens--,0===s.tokens&&(null==(i=this.i)||i.call(this,t)),0===s.tokens)}stop(){this.t={}}}var X=\"Mobile\",Q=\"iOS\",Z=\"Android\",tt=\"Tablet\",it=Z+\" \"+tt,et=\"iPad\",rt=\"Apple\",st=rt+\" Watch\",nt=\"Safari\",ot=\"BlackBerry\",at=\"Samsung\",lt=at+\"Browser\",ut=at+\" Internet\",ht=\"Chrome\",dt=ht+\" OS\",vt=ht+\" \"+Q,ct=\"Internet Explorer\",ft=ct+\" \"+X,pt=\"Opera\",gt=pt+\" Mini\",_t=\"Edge\",mt=\"Microsoft \"+_t,yt=\"Firefox\",bt=yt+\" \"+Q,wt=\"Nintendo\",xt=\"PlayStation\",Et=\"Xbox\",$t=Z+\" \"+X,St=X+\" \"+nt,kt=\"Windows\",Pt=kt+\" Phone\",Tt=\"Nokia\",It=\"Ouya\",Ct=\"Generic\",Rt=Ct+\" \"+X.toLowerCase(),Ft=Ct+\" \"+tt.toLowerCase(),Mt=\"Konqueror\",Ot=\"(\\\\d+(\\\\.\\\\d+)?)\",At=new RegExp(\"Version/\"+Ot),Dt=new RegExp(Et,\"i\"),jt=new RegExp(xt+\" \\\\w+\",\"i\"),Lt=new RegExp(wt+\" \\\\w+\",\"i\"),Nt=new RegExp(ot+\"|PlayBook|BB10\",\"i\"),Ut={\"NT3.51\":\"NT 3.11\",\"NT4.0\":\"NT 4.0\",\"5.0\":\"2000\",5.1:\"XP\",5.2:\"XP\",\"6.0\":\"Vista\",6.1:\"7\",6.2:\"8\",6.3:\"8.1\",6.4:\"10\",\"10.0\":\"10\"};var zt,Ht,Bt,qt=(t,i)=>i&&w(i,rt)||function(t){return w(t,nt)&&!w(t,ht)&&!w(t,Z)}(t),Wt=function(t,i){return i=i||\"\",w(t,\" OPR/\")&&w(t,\"Mini\")?gt:w(t,\" OPR/\")?pt:Nt.test(t)?ot:w(t,\"IE\"+X)||w(t,\"WPDesktop\")?ft:w(t,lt)?ut:w(t,_t)||w(t,\"Edg/\")?mt:w(t,\"FBIOS\")?\"Facebook \"+X:w(t,\"UCWEB\")||w(t,\"UCBrowser\")?\"UC Browser\":w(t,\"CriOS\")?vt:w(t,\"CrMo\")||w(t,ht)?ht:w(t,Z)&&w(t,nt)?$t:w(t,\"FxiOS\")?bt:w(t.toLowerCase(),Mt.toLowerCase())?Mt:qt(t,i)?w(t,X)?St:nt:w(t,yt)?yt:w(t,\"MSIE\")||w(t,\"Trident/\")?ct:w(t,\"Gecko\")?yt:\"\"},Gt={[ft]:[new RegExp(\"rv:\"+Ot)],[mt]:[new RegExp(_t+\"?\\\\/\"+Ot)],[ht]:[new RegExp(\"(\"+ht+\"|CrMo)\\\\/\"+Ot)],[vt]:[new RegExp(\"CriOS\\\\/\"+Ot)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Ot)],[nt]:[At],[St]:[At],[pt]:[new RegExp(\"(Opera|OPR)\\\\/\"+Ot)],[yt]:[new RegExp(yt+\"\\\\/\"+Ot)],[bt]:[new RegExp(\"FxiOS\\\\/\"+Ot)],[Mt]:[new RegExp(\"Konqueror[:/]?\"+Ot,\"i\")],[ot]:[new RegExp(ot+\" \"+Ot),At],[$t]:[new RegExp(\"android\\\\s\"+Ot,\"i\")],[ut]:[new RegExp(lt+\"\\\\/\"+Ot)],[ct]:[new RegExp(\"(rv:|MSIE )\"+Ot)],Mozilla:[new RegExp(\"rv:\"+Ot)]},Vt=function(t,i){var e=Wt(t,i),r=Gt[e];if(M(r))return null;for(var s=0;s<r.length;s++){var n=r[s],o=t.match(n);if(o)return parseFloat(o[o.length-2])}return null},Jt=[[new RegExp(Et+\"; \"+Et+\" (.*?)[);]\",\"i\"),t=>[Et,t&&t[1]||\"\"]],[new RegExp(wt,\"i\"),[wt,\"\"]],[new RegExp(xt,\"i\"),[xt,\"\"]],[Nt,[ot,\"\"]],[new RegExp(kt,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[Pt,\"\"];if(new RegExp(X).test(i)&&!/IEMobile\\b/.test(i))return[kt+\" \"+X,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Ut[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[kt,s]}return[kt,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[Q,i.join(\".\")]}return[Q,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=M(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+Z+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+Z+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[Z,i.join(\".\")]}return[Z,\"\"]}],[/Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,t=>{var i=[\"Mac OS X\",\"\"];if(t&&t[1]){var e=[t[1],t[2],t[3]||\"0\"];i[1]=e.join(\".\")}return i}],[/Mac/i,[\"Mac OS X\",\"\"]],[/CrOS/,[dt,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],Kt=function(t){return Lt.test(t)?wt:jt.test(t)?xt:Dt.test(t)?Et:new RegExp(It,\"i\").test(t)?It:new RegExp(\"(\"+Pt+\"|WPDesktop)\",\"i\").test(t)?Pt:/iPad/.test(t)?et:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?st:Nt.test(t)?ot:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(Tt,\"i\").test(t)?Tt:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(t)||/(kf[a-z]+)( bui|\\)).+silk\\//i.test(t)?\"Kindle Fire\":/(Android|ZTE)/i.test(t)?new RegExp(X).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Z:it:new RegExp(\"(pda|\"+X+\")\",\"i\").test(t)?Rt:new RegExp(tt,\"i\").test(t)&&!new RegExp(tt+\" pc\",\"i\").test(t)?Ft:\"\"},Yt=t=>t instanceof Error;function Xt(t){var i=globalThis._posthogChunkIds;if(i){var e=Object.keys(i);return Bt&&e.length===Ht||(Ht=e.length,Bt=e.reduce(((e,r)=>{zt||(zt={});var s=zt[r];if(s)e[s[0]]=s[1];else for(var n=t(r),o=n.length-1;o>=0;o--){var a=n[o],l=null==a?void 0:a.filename,u=i[r];if(l&&u){e[l]=u,zt[r]=[l,u];break}}return e}),{})),Bt}}class Qt{constructor(t,i,e){void 0===e&&(e=[]),this.coercers=t,this.stackParser=i,this.modifiers=e}buildFromUnknown(t,i){void 0===i&&(i={});var e=i&&i.mechanism||{handled:!0,type:\"generic\"},r=this.buildCoercingContext(e,i,0).apply(t),s=this.buildParsingContext(),n=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(n,e),$exception_level:\"error\"}}modifyFrames(t){var i=this;return p((function*(){for(var e of t)e.stacktrace&&e.stacktrace.frames&&I(e.stacktrace.frames)&&(e.stacktrace.frames=yield i.applyModifiers(e.stacktrace.frames));return t}))()}coerceFallback(t){var i;return{type:\"Error\",value:\"Unknown error\",stack:null==(i=t.syntheticException)?void 0:i.stack,synthetic:!0}}parseStacktrace(t,i){var e,r;return null!=t.cause&&(e=this.parseStacktrace(t.cause,i)),\"\"!=t.stack&&null!=t.stack&&(r=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?1:0),i.chunkIdMap)),g({},t,{cause:e,stack:r})}applyChunkIds(t,i){return t.map((t=>(t.filename&&i&&(t.chunk_id=i[t.filename]),t)))}applyCoercers(t,i){for(var e of this.coercers)if(e.match(t))return e.coerce(t,i);return this.coerceFallback(i)}applyModifiers(t){var i=this;return p((function*(){var e=t;for(var r of i.modifiers)e=yield r(e);return e}))()}convertToExceptionList(t,i){var e,r,s,n={type:t.type,value:t.value,mechanism:{type:null!==(e=i.type)&&void 0!==e?e:\"generic\",handled:null===(r=i.handled)||void 0===r||r,synthetic:null!==(s=t.synthetic)&&void 0!==s&&s}};t.stack&&(n.stacktrace={type:\"raw\",frames:t.stack});var o=[n];return null!=t.cause&&o.push(...this.convertToExceptionList(t.cause,g({},i,{handled:!0}))),o}buildParsingContext(){return{chunkIdMap:Xt(this.stackParser)}}buildCoercingContext(t,i,e){void 0===e&&(e=0);var r=(e,r)=>{if(r<=4){var s=this.buildCoercingContext(t,i,r);return this.applyCoercers(e,s)}};return g({},i,{syntheticException:0==e?i.syntheticException:void 0,mechanism:t,apply:t=>r(t,e),next:t=>r(t,e+1)})}}var Zt=\"?\";function ti(t,i,e,r,s){var n={platform:t,filename:i,function:\"<anonymous>\"===e?Zt:e,in_app:!0};return M(r)||(n.lineno=r),M(s)||(n.colno=s),n}var ii=(t,i)=>{var e=-1!==t.indexOf(\"safari-extension\"),r=-1!==t.indexOf(\"safari-web-extension\");return e||r?[-1!==t.indexOf(\"@\")?t.split(\"@\")[0]:Zt,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]},ei=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,ri=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,si=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,ni=(t,i)=>{var e=ei.exec(t);if(e){var[,r,s,n]=e;return ti(i,r,Zt,+s,+n)}var o=ri.exec(t);if(o){if(o[2]&&0===o[2].indexOf(\"eval\")){var a=si.exec(o[2]);a&&(o[2]=a[1],o[3]=a[2],o[4]=a[3])}var[l,u]=ii(o[1]||Zt,o[2]);return ti(i,u,l,o[3]?+o[3]:void 0,o[4]?+o[4]:void 0)}},oi=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,ai=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,li=(t,i)=>{var e=oi.exec(t);if(e){if(e[3]&&e[3].indexOf(\" > eval\")>-1){var r=ai.exec(e[3]);r&&(e[1]=e[1]||\"eval\",e[3]=r[1],e[4]=r[2],e[5]=\"\")}var s=e[3],n=e[1]||Zt;return[n,s]=ii(n,s),ti(i,s,n,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},ui=/\\(error: (.*)\\)/,hi=50;function di(){return function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return function(i,r){void 0===r&&(r=0);for(var s=[],n=i.split(\"\\n\"),o=r;o<n.length;o++){var a=n[o];if(!(a.length>1024)){var l=ui.test(a)?a.replace(ui,\"$1\"):a;if(!l.match(/\\S*Error: /)){for(var u of e){var h=u(l,t);if(h){s.push(h);break}}if(s.length>=hi)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,hi).map((t=>{return g({},t,{filename:t.filename||(e=i,e[e.length-1]||{}).filename,function:t.function||Zt});var e}))}(s)}}(\"web:javascript\",ni,li)}class vi{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,i){var e=O(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:e?t.stack:void 0,cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?\"DOMError\":\"DOMException\"}getValue(t){var i=t.name||(this.isDOMError(t)?\"DOMError\":\"DOMException\");return t.message?i+\": \"+t.message:i}isDOMException(t){return q(t,\"DOMException\")}isDOMError(t){return q(t,\"DOMError\")}}class ci{match(t){return(t=>t instanceof Error)(t)}coerce(t,i){return{type:this.getType(t),value:this.getMessage(t,i),stack:this.getStack(t),cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,i){var e=t.message;return e.error&&\"string\"==typeof e.error.message?String(e.error.message):String(e)}getStack(t){return t.stacktrace||t.stack||void 0}}class fi{constructor(){}match(t){return q(t,\"ErrorEvent\")&&null!=t.error}coerce(t,i){var e,r=i.apply(t.error);return r||{type:\"ErrorEvent\",value:t.message,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}var pi=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class gi{match(t){return\"string\"==typeof t}coerce(t,i){var e,[r,s]=this.getInfos(t);return{type:null!=r?r:\"Error\",value:null!=s?s:t,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}getInfos(t){var i=\"Error\",e=t,r=t.match(pi);return r&&(i=r[1],e=r[2]),[i,e]}}var _i=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function mi(t,i){void 0===i&&(i=40);var e=Object.keys(t);if(e.sort(),!e.length)return\"[object has no keys]\";for(var r=e.length;r>0;r--){var s=e.slice(0,r).join(\", \");if(!(s.length>i))return r===e.length||s.length<=i?s:s.slice(0,i)+\"...\"}return\"\"}class yi{match(t){return\"object\"==typeof t&&null!==t}coerce(t,i){var e,r=this.getErrorPropertyFromObject(t);return r?i.apply(r):{type:this.getType(t),value:this.getValue(t),stack:null==(e=i.syntheticException)?void 0:e.stack,level:this.isSeverityLevel(t.level)?t.level:\"error\",synthetic:!0}}getType(t){return W(t)?t.constructor.name:\"Error\"}getValue(t){if(\"name\"in t&&\"string\"==typeof t.name){var i=\"'\"+t.name+\"' captured as exception\";return\"message\"in t&&\"string\"==typeof t.message&&(i+=\" with message: '\"+t.message+\"'\"),i}if(\"message\"in t&&\"string\"==typeof t.message)return t.message;var e=this.getObjectClassName(t);return(e&&\"Object\"!==e?\"'\"+e+\"'\":\"Object\")+\" captured as exception with keys: \"+mi(t)}isSeverityLevel(t){return O(t)&&!A(t)&&_i.indexOf(t)>=0}getErrorPropertyFromObject(t){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var e=t[i];if(Yt(e))return e}}getObjectClassName(t){try{var i=Object.getPrototypeOf(t);return i?i.constructor.name:void 0}catch(t){return}}}class bi{match(t){return W(t)}coerce(t,i){var e,r=t.constructor.name;return{type:r,value:r+\" captured as exception with keys: \"+mi(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class wi{match(t){return B(t)}coerce(t,i){var e;return{type:\"Error\",value:\"Primitive value captured as exception: \"+String(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class xi{match(t){return q(t,\"PromiseRejectionEvent\")}coerce(t,i){var e,r=this.getUnhandledRejectionReason(t);return B(r)?{type:\"UnhandledRejection\",value:\"Non-Error promise rejection captured with value: \"+String(r),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}:i.apply(r)}getUnhandledRejectionReason(t){if(B(t))return t;try{if(\"reason\"in t)return t.reason;if(\"detail\"in t&&\"reason\"in t.detail)return t.detail.reason}catch(t){}return t}}var Ei=function(i,e){var{debugEnabled:r}=void 0===e?{}:e,s={k:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG||r)&&!M(t.console)&&t.console){for(var s=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];s(i,...o)}},info:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"error\",...i)},critical:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];console.error(i,...e)},uninitializedWarning:t=>{s.error(\"You must initialize PostHog before calling \"+t)},createLogger:(t,e)=>Ei(i+\" \"+t,e)};return s},$i=Ei(\"[PostHog.js]\"),Si=$i.createLogger,ki=Si(\"[ExternalScriptsLoader]\"),Pi=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return ki.warn(i+\" was requested but loading of external scripts is disabled.\"),e(\"Loading of external scripts is disabled\");var r=null==o?void 0:o.querySelectorAll(\"script\");if(r)for(var s,n=function(){if(r[a].src===i){var t=r[a];return t.__posthog_loading_callback_fired?{v:e()}:(t.addEventListener(\"load\",(i=>{t.__posthog_loading_callback_fired=!0,e(void 0,i)})),t.onerror=t=>e(t),{v:void 0})}},a=0;a<r.length;a++)if(s=n())return s.v;var l=()=>{if(!o)return e(\"document not found\");var r=o.createElement(\"script\");if(r.type=\"text/javascript\",r.crossOrigin=\"anonymous\",r.src=i,r.onload=t=>{r.__posthog_loading_callback_fired=!0,e(void 0,t)},r.onerror=t=>e(t),t.config.prepare_external_dependency_script&&(r=t.config.prepare_external_dependency_script(r)),!r)return e(\"prepare_external_dependency_script returned null\");var s,n=o.querySelectorAll(\"body > script\");n.length>0?null==(s=n[0].parentNode)||s.insertBefore(r,n[0]):o.body.appendChild(r)};null!=o&&o.body?l():null==o||o.addEventListener(\"DOMContentLoaded\",l)};v.__PosthogExtensions__=v.__PosthogExtensions__||{},v.__PosthogExtensions__.loadExternalDependency=(t,i,e)=>{var r=\"/static/\"+i+\".js?v=\"+t.version;if(\"remote-config\"===i&&(r=\"/array/\"+t.config.token+\"/config.js\"),\"toolbar\"===i){var s=3e5;r=r+\"&t=\"+Math.floor(Date.now()/s)*s}var n=t.requestRouter.endpointFor(\"assets\",r);Pi(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);Pi(t,r,e)};var Ti={};function Ii(t,i,e){if(I(t))if(r&&t.forEach===r)t.forEach(i,e);else if(\"length\"in t&&t.length===+t.length)for(var s=0,n=t.length;s<n;s++)if(s in t&&i.call(e,t[s],s)===Ti)return}function Ci(t,i,e){if(!j(t)){if(I(t))return Ii(t,i,e);if(z(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===Ti)return}else for(var s in t)if(P.call(t,s)&&i.call(e,t[s],s)===Ti)return}}var Ri=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ii(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},Fi=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ii(e,(function(i){Ii(i,(function(i){t.push(i)}))})),t};function Mi(t){for(var i=Object.keys(t),e=i.length,r=new Array(e);e--;)r[e]=[i[e],t[i[e]]];return r}var Oi=function(t){try{return t()}catch(t){return}},Ai=function(t){return function(){try{for(var i=arguments.length,e=new Array(i),r=0;r<i;r++)e[r]=arguments[r];return t.apply(this,e)}catch(t){$i.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),$i.critical(t)}}},Di=function(t){var i={};return Ci(t,(function(t,e){(O(t)&&t.length>0||L(t))&&(i[e]=t)})),i};function ji(t,i){return e=t,r=t=>O(t)&&!D(i)?t.slice(0,i):t,s=new Set,function t(i,e){return i!==Object(i)?r?r(i,e):i:s.has(i)?void 0:(s.add(i),I(i)?(n=[],Ii(i,(i=>{n.push(t(i))}))):(n={},Ci(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var Li=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function Ni(t){var i=null==t?void 0:t.hostname;if(!O(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of Li)if(e===r)return!1;return!0}function Ui(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function zi(t,i,e,r){var{capture:s=!1,passive:n=!0}=null!=r?r:{};null==t||t.addEventListener(i,e,{capture:s,passive:n})}var Hi=\"$people_distinct_id\",Bi=\"__alias\",qi=\"__timers\",Wi=\"$autocapture_disabled_server_side\",Gi=\"$heatmaps_enabled_server_side\",Vi=\"$exception_capture_enabled_server_side\",Ji=\"$error_tracking_suppression_rules\",Ki=\"$error_tracking_capture_extension_exceptions\",Yi=\"$web_vitals_enabled_server_side\",Xi=\"$dead_clicks_enabled_server_side\",Qi=\"$product_tours_enabled_server_side\",Zi=\"$web_vitals_allowed_metrics\",te=\"$session_recording_remote_config\",ie=\"$sesid\",ee=\"$session_is_sampled\",re=\"$enabled_feature_flags\",se=\"$early_access_features\",ne=\"$feature_flag_details\",oe=\"$stored_person_properties\",ae=\"$stored_group_properties\",le=\"$surveys\",ue=\"$flag_call_reported\",he=\"$user_state\",de=\"$client_session_props\",ve=\"$capture_rate_limit\",ce=\"$initial_campaign_params\",fe=\"$initial_referrer_info\",pe=\"$initial_person_info\",ge=\"$epp\",_e=\"__POSTHOG_TOOLBAR__\",me=\"$posthog_cookieless\",ye=[Hi,Bi,\"__cmpns\",qi,\"$session_recording_enabled_server_side\",Gi,ie,re,Ji,he,se,ne,ae,oe,le,ue,de,ve,ce,fe,ge,pe,\"$conversations_widget_session_id\",\"$conversations_ticket_id\",\"$conversations_widget_state\",\"$conversations_user_traits\"];function be(t){return t instanceof Element&&(t.id===_e||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function we(t){return!!t&&1===t.nodeType}function xe(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function Ee(t){return!!t&&3===t.nodeType}function $e(t){return!!t&&11===t.nodeType}function Se(t){return t?x(t).split(/\\s+/):[]}function ke(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function Pe(t){var i=\"\";switch(typeof t.className){case\"string\":i=t.className;break;case\"object\":i=(t.className&&\"baseVal\"in t.className?t.className.baseVal:null)||t.getAttribute(\"class\")||\"\";break;default:i=\"\"}return Se(i)}function Te(t){return j(t)?null:x(t).split(/(\\s+)/).filter((t=>Ke(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function Ie(t){var i=\"\";return ze(t)&&!He(t)&&t.childNodes&&t.childNodes.length&&Ci(t.childNodes,(function(t){var e;Ee(t)&&t.textContent&&(i+=null!==(e=Te(t.textContent))&&void 0!==e?e:\"\")})),x(i)}function Ce(t){return M(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var Re=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function Fe(t,i){if(M(i))return!0;var e,r=function(t){if(i.some((i=>t.matches(i))))return{v:!0}};for(var s of t)if(e=r(s))return e.v;return!1}function Me(t){var i=t.parentNode;return!(!i||!we(i))&&i}var Oe=[\"next\",\"previous\",\"prev\",\">\",\"<\"],Ae=10;var De=[\".ph-no-rageclick\",\".ph-no-capture\"];function je(i,e){if(!t||Le(i))return!1;var r,s,n;U(e)?(r=!!e&&De,s=void 0):(r=null!==(n=null==e?void 0:e.css_selector_ignorelist)&&void 0!==n?n:De,s=null==e?void 0:e.content_ignorelist);if(!1===r)return!1;var{targetElementList:o}=Ne(i,!1);return!function(t,i){if(!1===t||M(t))return!1;var e;if(!0===t)e=Oe;else{if(!I(t))return!1;if(t.length>Ae)return $i.error(\"[PostHog] content_ignorelist array cannot exceed \"+Ae+\" items. Use css_selector_ignorelist for more complex matching.\"),!1;e=t.map((t=>t.toLowerCase()))}return i.some((t=>{var{safeText:i,ariaLabel:r}=t;return e.some((t=>i.includes(t)||r.includes(t)))}))}(s,o.map((t=>{var i;return{safeText:Ie(t).toLowerCase(),ariaLabel:(null==(i=t.getAttribute(\"aria-label\"))?void 0:i.toLowerCase().trim())||\"\"}})))&&!Fe(o,r)}var Le=t=>!t||xe(t,\"html\")||!we(t),Ne=(i,e)=>{if(!t||Le(i))return{parentIsUsefulElement:!1,targetElementList:[]};for(var r=!1,s=[i],n=i;n.parentNode&&!xe(n,\"body\");)if($e(n.parentNode))s.push(n.parentNode.host),n=n.parentNode.host;else{var o=Me(n);if(!o)break;if(e||Re.indexOf(o.tagName.toLowerCase())>-1)r=!0;else{var a=t.getComputedStyle(o);a&&\"pointer\"===a.getPropertyValue(\"cursor\")&&(r=!0)}s.push(o),n=o}return{parentIsUsefulElement:r,targetElementList:s}};function Ue(i,e,r,s,n){var o,a,l,u;if(void 0===r&&(r=void 0),!t||Le(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!ke(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&ke(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var h=r.dom_event_allowlist;if(h&&!h.some((t=>e.type===t)))return!1}var{parentIsUsefulElement:d,targetElementList:v}=Ne(i,s);if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(M(e))return!0;var r,s=function(t){if(e.some((i=>t.tagName.toLowerCase()===i)))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(v,r))return!1;if(!Fe(v,null==(u=r)?void 0:u.css_selector_allowlist))return!1;var c=t.getComputedStyle(i);if(c&&\"pointer\"===c.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var f=i.tagName.toLowerCase();switch(f){case\"html\":return!1;case\"form\":return(n||[\"submit\"]).indexOf(e.type)>=0;case\"input\":case\"select\":case\"textarea\":return(n||[\"change\",\"click\"]).indexOf(e.type)>=0;default:return d?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(Re.indexOf(f)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function ze(t){for(var i=t;i.parentNode&&!xe(i,\"body\");i=i.parentNode){var e=Pe(i);if(w(e,\"ph-sensitive\")||w(e,\"ph-no-capture\"))return!1}if(w(Pe(t),\"ph-include\"))return!0;var r=t.type||\"\";if(O(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(O(s)){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(s.replace(/[^a-zA-Z0-9]/g,\"\")))return!1}return!0}function He(t){return!!(xe(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||xe(t,\"select\")||xe(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var Be=\"(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})\",qe=new RegExp(\"^(?:\"+Be+\")$\"),We=new RegExp(Be),Ge=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",Ve=new RegExp(\"^(\"+Ge+\")$\"),Je=new RegExp(\"(\"+Ge+\")\");function Ke(t,i){if(void 0===i&&(i=!0),j(t))return!1;if(O(t)){if(t=x(t),(i?qe:We).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?Ve:Je).test(t))return!1}return!0}function Ye(t){var i=Ie(t);return Ke(i=(i+\" \"+Xe(t)).trim())?i:\"\"}function Xe(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&Ci(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=Ie(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+Xe(t)).trim())}catch(t){$i.error(\"[AutoCapture]\",t)}})),i}function Qe(t){return function(t){var i=t.map((t=>{var i,e,r=\"\";if(t.tag_name&&(r+=t.tag_name),t.attr_class)for(var s of(t.attr_class.sort(),t.attr_class))r+=\".\"+s.replace(/\"/g,\"\");var n=g({},t.text?{text:t.text}:{},{\"nth-child\":null!==(i=t.nth_child)&&void 0!==i?i:0,\"nth-of-type\":null!==(e=t.nth_of_type)&&void 0!==e?e:0},t.href?{href:t.href}:{},t.attr_id?{attr_id:t.attr_id}:{},t.attributes),o={};return Mi(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[Ze(i.toString())]=Ze(e.toString())})),r+=\":\",r+=Mi(o).map((t=>{var[i,e]=t;return i+'=\"'+e+'\"'})).join(\"\")}));return i.join(\";\")}(function(t){return t.map((t=>{var i,e,r={text:null==(i=t.$el_text)?void 0:i.slice(0,400),tag_name:t.tag_name,href:null==(e=t.attr__href)?void 0:e.slice(0,2048),attr_class:tr(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Mi(t).filter((t=>{var[i]=t;return 0===i.indexOf(\"attr__\")})).forEach((t=>{var[i,e]=t;return r.attributes[i]=e})),r}))}(t))}function Ze(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function tr(t){var i=t.attr__class;return i?I(i)?i:Se(i):void 0}class ir{constructor(t){this.disabled=!1===t;var i=R(t)?t:{};this.thresholdPx=i.threshold_px||30,this.timeoutMs=i.timeout_ms||1e3,this.clickCount=i.click_count||3,this.clicks=[]}isRageClick(t,i,e){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<this.thresholdPx&&e-r.timestamp<this.timeoutMs){if(this.clicks.push({x:t,y:i,timestamp:e}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var er=t=>{var i=null==o?void 0:o.createElement(\"a\");return M(i)?null:(i.href=t,i)},rr=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return Ci(t,(function(t,i){M(t)||M(i)||\"undefined\"===i||(e=encodeURIComponent((t=>t instanceof File)(t)?t.name:t.toString()),r=encodeURIComponent(i),s[s.length]=r+\"=\"+e)})),s.join(i)},sr=function(t,i){for(var e,r=((t.split(\"#\")[0]||\"\").split(/\\?(.*)/)[1]||\"\").replace(/^\\?+/g,\"\").split(\"&\"),s=0;s<r.length;s++){var n=r[s].split(\"=\");if(n[0]===i){e=n;break}}if(!I(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){$i.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},nr=function(t,i,e){if(!t||!i||!i.length)return t;for(var r=t.split(\"#\"),s=r[0]||\"\",n=r[1],o=s.split(\"?\"),a=o[1],l=o[0],u=(a||\"\").split(\"&\"),h=[],d=0;d<u.length;d++){var v=u[d].split(\"=\");I(v)&&(i.includes(v[0])?h.push(v[0]+\"=\"+e):h.push(u[d]))}var c=l;return null!=a&&(c+=\"?\"+h.join(\"&\")),null!=n&&(c+=\"#\"+n),c},or=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},ar=\"$copy_autocapture\",lr=Si(\"[AutoCapture]\");function ur(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function hr(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!we(i));return i}function dr(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};Re.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=ur(1024,Ye(t)):n.$el_text=ur(1024,Ie(t)));var o=Pe(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),Ci(t.attributes,(function(e){var s;if((!He(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&Ke(e.value)&&(s=e.name,!O(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=Se(o).join(\" \")),n[\"attr__\"+e.name]=ur(1024,o)}}));for(var a=1,l=1,u=t;u=hr(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function vr(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!xe(d,\"body\");)$e(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,g=!1;if(Ci(h,(t=>{var i=ze(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&Ke(p)&&p),w(Pe(t),\"ph-no-capture\")&&(g=!0),c.push(dr(t,o,a,l));var e=function(t){if(!ze(t))return{};var i={};return Ci(t.attributes,(function(t){if(t.name&&0===t.name.indexOf(\"data-ph-capture-attribute\")){var e=t.name.replace(\"data-ph-capture-attribute-\",\"\"),r=t.value;e&&r&&Ke(r)&&(i[e]=r)}})),i}(t);Ri(f,e)})),g)return{props:{},explicitNoCapture:g};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=Ye(i):c[0].$el_text=Ie(i)),p){var _,m;c[0].attr__href=p;var y=null==(_=er(p))?void 0:_.host,b=null==t||null==(m=t.location)?void 0:m.host;y&&b&&y!==b&&(v=p)}return{props:Ri({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:Qe(c)},null!=(r=c[0])&&r.$el_text?{$el_text:null==(s=c[0])?void 0:s.$el_text}:{},v&&\"click\"===n.type?{$external_click_url:v}:{},f)}}class cr{constructor(t){this.P=!1,this.T=null,this.I=!1,this.instance=t,this.rageclicks=new ir(t.config.rageclick),this.C=null}get R(){var t,i,e=R(this.instance.config.autocapture)?this.instance.config.autocapture:{};return e.url_allowlist=null==(t=e.url_allowlist)?void 0:t.map((t=>new RegExp(t))),e.url_ignorelist=null==(i=e.url_ignorelist)?void 0:i.map((t=>new RegExp(t))),e}F(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.M(i)}catch(t){lr.error(\"Failed to capture event\",t)}};if(zi(o,\"submit\",i,{capture:!0}),zi(o,\"change\",i,{capture:!0}),zi(o,\"click\",i,{capture:!0}),this.R.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.M(i,ar)};zi(o,\"copy\",e,{capture:!0}),zi(o,\"cut\",e,{capture:!0})}}}else lr.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.P&&(this.F(),this.P=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.I=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[Wi]:!!t.autocapture_opt_out}),this.T=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.C=t}getElementSelectors(t){var i,e=[];return null==(i=this.C)||i.forEach((i=>{var r=null==o?void 0:o.querySelectorAll(i);null==r||r.forEach((r=>{t===r&&e.push(i)}))})),e}get isEnabled(){var t,i,e=null==(t=this.instance.persistence)?void 0:t.props[Wi],r=this.T;if(D(r)&&!U(e)&&!this.instance.O())return!1;var s=null!==(i=this.T)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}M(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=Ce(i);if(Ee(s)&&(s=s.parentNode||null),\"$autocapture\"===e&&\"click\"===i.type&&i instanceof MouseEvent)this.instance.config.rageclick&&null!=(r=this.rageclicks)&&r.isRageClick(i.clientX,i.clientY,i.timeStamp||(new Date).getTime())&&je(s,this.instance.config.rageclick)&&this.M(i,\"$rageclick\");var n=e===ar;if(s&&Ue(s,i,this.R,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=vr(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.R.element_attribute_ignorelist,elementsChainAsString:this.I});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===ar){var u,h=Te(null==t||null==(u=t.getSelection())?void 0:u.toString()),d=i.type||\"clipboard\";if(!h)return!1;o.$selected_content=h,o.$copy_type=d}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return C(null==o?void 0:o.querySelectorAll)}}Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return L(t)&&isFinite(t)&&Math.floor(t)===t});var fr=\"0123456789abcdef\";class pr{constructor(t){if(this.bytes=t,16!==t.length)throw new TypeError(\"not 128-bit length\")}static fromFieldsV7(t,i,e,r){if(!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(e)||!Number.isInteger(r)||t<0||i<0||e<0||r<0||t>0xffffffffffff||i>4095||e>1073741823||r>4294967295)throw new RangeError(\"invalid field value\");var s=new Uint8Array(16);return s[0]=t/Math.pow(2,40),s[1]=t/Math.pow(2,32),s[2]=t/Math.pow(2,24),s[3]=t/Math.pow(2,16),s[4]=t/Math.pow(2,8),s[5]=t,s[6]=112|i>>>8,s[7]=i,s[8]=128|e>>>24,s[9]=e>>>16,s[10]=e>>>8,s[11]=e,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new pr(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+fr.charAt(this.bytes[i]>>>4)+fr.charAt(15&this.bytes[i]),3!==i&&5!==i&&7!==i&&9!==i||(t+=\"-\");if(36!==t.length)throw new Error(\"Invalid UUIDv7 was generated\");return t}clone(){return new pr(this.bytes.slice(0))}equals(t){return 0===this.compareTo(t)}compareTo(t){for(var i=0;i<16;i++){var e=this.bytes[i]-t.bytes[i];if(0!==e)return Math.sign(e)}return 0}}class gr{constructor(){this.A=0,this.D=0,this.j=new yr}generate(){var t=this.generateOrAbort();if(M(t)){this.A=0;var i=this.generateOrAbort();if(M(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.A)this.A=t,this.L();else{if(!(t+1e4>this.A))return;this.D++,this.D>4398046511103&&(this.A++,this.L())}return pr.fromFieldsV7(this.A,Math.trunc(this.D/Math.pow(2,30)),this.D&Math.pow(2,30)-1,this.j.nextUint32())}L(){this.D=1024*this.j.nextUint32()+(1023&this.j.nextUint32())}}var _r,mr=t=>{if(\"undefined\"!=typeof UUIDV7_DENY_WEAK_RNG&&UUIDV7_DENY_WEAK_RNG)throw new Error(\"no cryptographically strong RNG available\");for(var i=0;i<t.length;i++)t[i]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};t&&!M(t.crypto)&&crypto.getRandomValues&&(mr=t=>crypto.getRandomValues(t));class yr{constructor(){this.N=new Uint32Array(8),this.U=1/0}nextUint32(){return this.U>=this.N.length&&(mr(this.N),this.U=0),this.N[this.U++]}}var br=()=>wr().toString(),wr=()=>(_r||(_r=new gr)).generate(),xr=\"\";var Er=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function $r(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),xr)return xr;if(!i)return\"\";if([\"localhost\",\"127.0.0.1\"].includes(t))return\"\";for(var e=t.split(\".\"),r=Math.min(e.length,8),s=\"dmn_chk_\"+br();!xr&&r--;){var n=e.slice(r).join(\".\"),a=s+\"=1;domain=.\"+n+\";path=/\";i.cookie=a+\";max-age=3\",i.cookie.includes(s)&&(i.cookie=a+\";max-age=0\",xr=n)}return xr}(t);if(!e){var r=(t=>{var i=t.match(Er);return i?i[0]:\"\"})(t);r!==e&&$i.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var Sr={H:()=>!!o,B:function(t){$i.error(\"cookieStore error: \"+t)},q:function(t){if(o){try{for(var i=t+\"=\",e=o.cookie.split(\";\").filter((t=>t.length)),r=0;r<e.length;r++){for(var s=e[r];\" \"==s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(i))return decodeURIComponent(s.substring(i.length,s.length))}}catch(t){}return null}},W:function(t){var i;try{i=JSON.parse(Sr.q(t))||{}}catch(t){}return i},G:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=$r(o.location.hostname,r);if(e){var u=new Date;u.setTime(u.getTime()+24*e*60*60*1e3),n=\"; expires=\"+u.toUTCString()}s&&(a=\"; secure\");var h=t+\"=\"+encodeURIComponent(JSON.stringify(i))+n+\"; SameSite=Lax; path=/\"+l+a;return h.length>3686.4&&$i.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},V:function(t,i){if(null!=o&&o.cookie)try{Sr.G(t,\"\",-1,i)}catch(t){return}}},kr=null,Pr={H:function(){if(!D(kr))return kr;var i=!0;if(M(t))i=!1;else try{var e=\"__mplssupport__\";Pr.G(e,\"xyz\"),'\"xyz\"'!==Pr.q(e)&&(i=!1),Pr.V(e)}catch(t){i=!1}return i||$i.error(\"localStorage unsupported; falling back to cookie store\"),kr=i,i},B:function(t){$i.error(\"localStorage error: \"+t)},q:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Pr.B(t)}return null},W:function(t){try{return JSON.parse(Pr.q(t))||{}}catch(t){}return null},G:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Pr.B(t)}},V:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Pr.B(t)}}},Tr=[\"$device_id\",\"distinct_id\",ie,ee,ge,pe],Ir={},Cr={H:function(){return!0},B:function(t){$i.error(\"memoryStorage error: \"+t)},q:function(t){return Ir[t]||null},W:function(t){return Ir[t]||null},G:function(t,i){Ir[t]=i},V:function(t){delete Ir[t]}},Rr=null,Fr={H:function(){if(!D(Rr))return Rr;if(Rr=!0,M(t))Rr=!1;else try{var i=\"__support__\";Fr.G(i,\"xyz\"),'\"xyz\"'!==Fr.q(i)&&(Rr=!1),Fr.V(i)}catch(t){Rr=!1}return Rr},B:function(t){$i.error(\"sessionStorage error: \",t)},q:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Fr.B(t)}return null},W:function(t){try{return JSON.parse(Fr.q(t))||null}catch(t){}return null},G:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Fr.B(t)}},V:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Fr.B(t)}}},Mr=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class Or{constructor(t){this._instance=t}get R(){return this._instance.config}get consent(){return this.J()?Mr.DENIED:this.K}isOptedOut(){return\"always\"===this.R.cookieless_mode||(this.consent===Mr.DENIED||this.consent===Mr.PENDING&&(this.R.opt_out_capturing_by_default||\"on_reject\"===this.R.cookieless_mode))}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===Mr.DENIED}optInOut(t){this.Y.G(this.X,t?1:0,this.R.cookie_expiration,this.R.cross_subdomain_cookie,this.R.secure_cookie)}reset(){this.Y.V(this.X,this.R.cross_subdomain_cookie)}get X(){var{token:t,opt_out_capturing_cookie_prefix:i,consent_persistence_name:e}=this._instance.config;return e||(i?i+t:\"__ph_opt_in_out_\"+t)}get K(){var t=this.Y.q(this.X);return V(t)?Mr.GRANTED:w(J,t)?Mr.DENIED:Mr.PENDING}get Y(){if(!this.Z){var t=this.R.opt_out_capturing_persistence_type;this.Z=\"localStorage\"===t?Pr:Sr;var i=\"localStorage\"===t?Sr:Pr;i.q(this.X)&&(this.Z.q(this.X)||this.optInOut(V(i.q(this.X))),i.V(this.X,this.R.cross_subdomain_cookie))}return this.Z}J(){return!!this.R.respect_dnt&&!!Ui([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>V(t)))}}var Ar=Si(\"[Dead Clicks]\"),Dr=()=>!0,jr=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(Xi)),r=t.instance.config.capture_dead_clicks;return U(r)?r:!!R(r)||e};class Lr{get lazyLoadedDeadClicksAutocapture(){return this.tt}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[Xi]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.it((()=>{this.et()}))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.initDeadClicksAutocapture&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this.instance,\"dead-clicks-autocapture\",(i=>{i?Ar.error(\"failed to load script\",i):t()}))}et(){var t;if(o){if(!this.tt&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=R(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.tt=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.tt.start(o),Ar.info(\"starting...\")}}else Ar.error(\"`document` not found. Cannot start.\")}stop(){this.tt&&(this.tt.stop(),this.tt=void 0,Ar.info(\"stopping...\"))}}var Nr=Si(\"[ExceptionAutocapture]\");class Ur{constructor(i){var e,r,s;this.rt=()=>{var i;if(t&&this.isEnabled&&null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions){var e=v.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=v.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=v.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.st&&this.R.capture_unhandled_errors&&(this.st=e(this.captureException.bind(this))),!this.nt&&this.R.capture_unhandled_rejections&&(this.nt=r(this.captureException.bind(this))),!this.ot&&this.R.capture_console_errors&&(this.ot=s(this.captureException.bind(this)))}catch(t){Nr.error(\"failed to start\",t),this.ut()}}},this._instance=i,this.ht=!(null==(e=this._instance.persistence)||!e.props[Vi]),this.dt=new Y({refillRate:null!==(r=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)&&void 0!==r?r:1,bucketSize:null!==(s=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)&&void 0!==s?s:10,refillInterval:1e4,h:Nr}),this.R=this.vt(),this.startIfEnabledOrStop()}vt(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return R(t)?i=g({},i,t):(M(t)?this.ht:t)&&(i=g({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.R.capture_console_errors||this.R.capture_unhandled_errors||this.R.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Nr.info(\"enabled\"),this.ut(),this.it(this.rt)):this.ut()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"exception-autocapture\",(i=>{if(i)return Nr.error(\"failed to load script\",i);t()}))}ut(){var t,i,e;null==(t=this.st)||t.call(this),this.st=void 0,null==(i=this.nt)||i.call(this),this.nt=void 0,null==(e=this.ot)||e.call(this),this.ot=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.ht=!!i||!1,this._instance.persistence&&this._instance.persistence.register({[Vi]:this.ht}),this.R=this.vt(),this.startIfEnabledOrStop()}onConfigChange(){this.R=this.vt()}captureException(t){var i,e,r=null!==(i=null==t||null==(e=t.$exception_list)||null==(e=e[0])?void 0:e.type)&&void 0!==i?i:\"Exception\";this.dt.consumeRateLimit(r)?Nr.info(\"Skipping exception capture because of client rate limiting.\",{exception:r}):this._instance.exceptions.sendExceptionEvent(t)}}function zr(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return C(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class Hr{constructor(i){var e;this._instance=i,this.ct=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&($i.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this.ft&&this.ft(),this.ft=void 0,$i.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||zr(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||zr(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"replaceState\")})),this.yt()}}_t(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.ct&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.ct=r}catch(t){$i.error(\"Error capturing \"+i+\" pageview\",t)}}yt(){if(!this.ft){var i=()=>{this._t(\"popstate\")};zi(t,\"popstate\",i),this.ft=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}var Br=Si(\"[SegmentIntegration]\");function qr(t,i){var e=t.config.segment;if(!e)return i();!function(t,i){var e=t.config.segment;if(!e)return i();var r=e=>{var r=()=>e.anonymousId()||br();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(he,\"identified\")),i()},s=e.user();\"then\"in s&&C(s.then)?s.then(r):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||Br.warn(\"This browser does not have Promise support, and can not use the segment integration\");var i=(i,e)=>{if(!e)return i;i.event.userId||i.event.anonymousId===t.get_distinct_id()||(Br.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(Br.info(\"UserId set, identifying with PostHog\"),t.identify(i.event.userId));var r=t.calculateEventProperties(e,i.event.properties);return i.event.properties=Object.assign({},r,i.event.properties),i};return{name:\"PostHog JS\",type:\"enrichment\",version:\"1.0.0\",isLoaded:()=>!0,load:()=>Promise.resolve(),track:t=>i(t,t.event.event),page:t=>i(t,\"$pageview\"),identify:t=>i(t,\"$identify\"),screen:t=>i(t,\"$screen\")}})(t)).then((()=>{i()}))}))}var Wr=\"posthog-js\";function Gr(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"],sendExceptionsToPostHog:o=!0}=void 0===i?{}:i;return i=>{var a,l,u,h,d;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var v=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=v,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var c=(null==(a=i.exception)?void 0:a.values)||[],f=c.map((t=>g({},t,{stacktrace:t.stacktrace?g({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>g({},t,{platform:\"web:javascript\"})))}):void 0}))),p={$exception_message:(null==(l=c[0])?void 0:l.value)||i.message,$exception_type:null==(u=c[0])?void 0:u.type,$exception_level:i.level,$exception_list:f,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(h=c[0])?void 0:h.value)||i.message,$sentry_exception_type:null==(d=c[0])?void 0:d.type,$sentry_tags:i.tags};return e&&r&&(p.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),o&&t.exceptions.sendExceptionEvent(p),i}}class Vr{constructor(t,i,e,r,s,n){this.name=Wr,this.setupOnce=function(o){o(Gr(t,{organization:i,projectId:e,prefix:r,severityAllowList:s,sendExceptionsToPostHog:null==n||n}))}}}var Jr=null!=t&&t.location?or(t.location.hash,\"__posthog\")||or(location.hash,\"state\"):null,Kr=\"_postHogToolbarParams\",Yr=Si(\"[Toolbar]\"),Xr=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(Xr||{});class Qr{constructor(t){this.instance=t}bt(t){v.ph_toolbar_state=t}wt(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:Xr.UNINITIALIZED}maybeLoadToolbar(i,e,r){if(void 0===i&&(i=void 0),void 0===e&&(e=void 0),void 0===r&&(r=void 0),!t||!o)return!1;i=null!=i?i:t.location,r=null!=r?r:t.history;try{if(!e){try{t.localStorage.setItem(\"test\",\"test\"),t.localStorage.removeItem(\"test\")}catch(t){return!1}e=null==t?void 0:t.localStorage}var s,n=Jr||or(i.hash,\"__posthog\")||or(i.hash,\"state\"),a=n?Oi((()=>JSON.parse(atob(decodeURIComponent(n)))))||Oi((()=>JSON.parse(decodeURIComponent(n)))):null;return a&&\"ph_authorize\"===a.action?((s=a).source=\"url\",s&&Object.keys(s).length>0&&(a.desiredHash?i.hash=a.desiredHash:r?r.replaceState(r.state,\"\",i.pathname+i.search):i.hash=\"\")):((s=JSON.parse(e.getItem(Kr)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}xt(t){var i=v.ph_load_toolbar||v.ph_load_editor;!j(i)&&C(i)?i(t,this.instance):Yr.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(_e));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=g({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(Kr,JSON.stringify(g({},s,{source:void 0}))),this.wt()===Xr.LOADED)this.xt(s);else if(this.wt()===Xr.UNINITIALIZED){var n;this.bt(Xr.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return Yr.error(\"[Toolbar] Failed to load\",t),void this.bt(Xr.UNINITIALIZED);this.bt(Xr.LOADED),this.xt(s)})),zi(t,\"turbolinks:load\",(()=>{this.bt(Xr.UNINITIALIZED),this.loadToolbar(s)}))}return!0}Et(t){return this.loadToolbar(t)}maybeLoadEditor(t,i,e){return void 0===t&&(t=void 0),void 0===i&&(i=void 0),void 0===e&&(e=void 0),this.maybeLoadToolbar(t,i,e)}}var Zr=Si(\"[TracingHeaders]\");class ts{constructor(t){this.$t=void 0,this.St=void 0,this.rt=()=>{var t,i;M(this.$t)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));M(this.St)&&(null==(i=v.__PosthogExtensions__)||null==(i=i.tracingHeadersPatchFns)||i._patchFetch(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager))},this._instance=t}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.tracingHeadersPatchFns&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"tracing-headers\",(i=>{if(i)return Zr.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.it(this.rt):(null==(t=this.$t)||t.call(this),null==(i=this.St)||i.call(this),this.$t=void 0,this.St=void 0)}}var is=\"https?://(.*)\",es=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],rs=Fi([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],es),ss=\"<masked>\",ns=[\"li_fat_id\"];function os(t,i,e){if(!o)return{};var r,s=i?Fi([],es,e||[]):[],n=as(nr(o.URL,s,ss),t),a=(r={},Ci(ns,(function(t){var i=Sr.q(t);r[t]=i||null})),r);return Ri(a,n)}function as(t,i){var e=rs.concat(i||[]),r={};return Ci(e,(function(i){var e=sr(t,i);r[i]=e||null})),r}function ls(t){var i=function(t){return t?0===t.search(is+\"google.([^/?]*)\")?\"google\":0===t.search(is+\"bing.com\")?\"bing\":0===t.search(is+\"yahoo.com\")?\"yahoo\":0===t.search(is+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!D(i)){r.$search_engine=i;var s=o?sr(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function us(){return navigator.language||navigator.userLanguage}function hs(){return(null==o?void 0:o.referrer)||\"$direct\"}function ds(t,i){var e=t?Fi([],es,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:hs().substring(0,1e3),u:r?nr(r,e,ss):void 0}}function vs(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=er(e))?void 0:i.host};if(r){s.$current_url=r;var n=er(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=as(r);Ri(s,o)}if(e){var a=ls(e);Ri(s,a)}return s}function cs(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function fs(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function ps(i,e){if(!d)return{};var r,s,n,o=i?Fi([],es,e||[]):[],[l,u]=function(t){for(var i=0;i<Jt.length;i++){var[e,r]=Jt[i],s=e.exec(t),n=s&&(C(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return Ri(Di({$os:l,$os_version:u,$browser:Wt(d,navigator.vendor),$device:Kt(d),$device_type:(s=d,n=Kt(s),n===et||n===it||\"Kobo\"===n||\"Kindle Fire\"===n||n===Ft?tt:n===wt||n===Et||n===xt||n===It?\"Console\":n===st?\"Wearable\":n?X:\"Desktop\"),$timezone:cs(),$timezone_offset:fs()}),{$current_url:nr(null==a?void 0:a.href,o,ss),$host:null==a?void 0:a.host,$pathname:null==a?void 0:a.pathname,$raw_user_agent:d.length>1e3?d.substring(0,997)+\"...\":d,$browser_version:Vt(d,navigator.vendor),$browser_language:us(),$browser_language_prefix:(r=us(),\"string\"==typeof r?r.split(\"-\")[0]:void 0),$screen_height:null==t?void 0:t.screen.height,$screen_width:null==t?void 0:t.screen.width,$viewport_height:null==t?void 0:t.innerHeight,$viewport_width:null==t?void 0:t.innerWidth,$lib:\"web\",$lib_version:c.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3})}var gs=Si(\"[Web Vitals]\"),_s=9e5;class ms{constructor(t){var i;this.kt=!1,this.P=!1,this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Pt=()=>{clearTimeout(this.Tt),0!==this.N.metrics.length&&(this._instance.capture(\"$web_vitals\",this.N.metrics.reduce(((t,i)=>g({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:g({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.It=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(M(e))gs.error(\"Could not read session ID. Dropping metrics!\");else{this.N=this.N||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.Ct();if(!M(r))if(j(null==t?void 0:t.name)||j(null==t?void 0:t.value))gs.error(\"Invalid metric received\",t);else if(this.Rt&&t.value>=this.Rt)gs.error(\"Ignoring metric with value >= \"+this.Rt,t);else this.N.url!==r&&(this.Pt(),this.Tt=setTimeout(this.Pt,this.flushToCaptureTimeoutMs)),M(this.N.url)&&(this.N.url=r),this.N.firstMetricTimestamp=M(this.N.firstMetricTimestamp)?Date.now():this.N.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.N.metrics.push(g({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.N.metrics.length===this.allowedMetrics.length&&this.Pt()}},this.rt=()=>{var t,i,e,r,s=v.__PosthogExtensions__;M(s)||M(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.It.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.It.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.It.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.It.bind(this)),this.P=!0):gs.error(\"web vitals callbacks not loaded - not starting\")},this._instance=t,this.kt=!(null==(i=this._instance.persistence)||!i.props[Yi]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=R(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return M(e)?(null==(i=this._instance.persistence)?void 0:i.props[Zi])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get Rt(){var t=R(this._instance.config.capture_performance)&&L(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:_s;return 0<t&&t<=6e4?_s:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return gs.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:U(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return U(i)?i:this.kt}startIfEnabled(){this.isEnabled&&!this.P&&(gs.info(\"enabled, starting...\"),this.it(this.rt))}onRemoteConfig(t){var i=R(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=R(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Yi]:i}),this._instance.persistence.register({[Zi]:e})),this.kt=i,this.startIfEnabled()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.postHogWebVitalsCallbacks&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"web-vitals\",(i=>{i?gs.error(\"failed to load script\",i):t()}))}Ct(){var i=t?t.location.href:void 0;if(i){var e=this._instance.config.mask_personal_data_properties,r=this._instance.config.custom_personal_data_properties,s=e?Fi([],es,r||[]):[];return nr(i,s,ss)}gs.error(\"Could not determine current URL\")}}var ys=Si(\"[Heatmaps]\");function bs(t){return R(t)&&\"clientX\"in t&&\"clientY\"in t&&L(t.clientX)&&L(t.clientY)}class ws{constructor(t){var i;this.kt=!1,this.P=!1,this.Ft=null,this.instance=t,this.kt=!(null==(i=this.instance.persistence)||!i.props[Gi]),this.rageclicks=new ir(t.config.rageclick)}get flushIntervalMilliseconds(){var t=5e3;return R(this.instance.config.capture_heatmaps)&&this.instance.config.capture_heatmaps.flush_interval_milliseconds&&(t=this.instance.config.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return M(this.instance.config.capture_heatmaps)?M(this.instance.config.enable_heatmaps)?this.kt:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.P)return;ys.info(\"starting...\"),this.Mt(),this.Ot()}else{var t;clearInterval(null!==(t=this.Ft)&&void 0!==t?t:void 0),this.At(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[Gi]:i}),this.kt=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.N;return this.N=void 0,t}Dt(t){this.jt(t.originalEvent,\"deadclick\")}Ot(){this.Ft&&clearInterval(this.Ft),this.Ft=function(t){return\"visible\"===(null==t?void 0:t.visibilityState)}(o)?setInterval(this.Lt.bind(this),this.flushIntervalMilliseconds):null}Mt(){t&&o&&(this.Nt=this.Lt.bind(this),zi(t,\"beforeunload\",this.Nt),this.Ut=i=>this.jt(i||(null==t?void 0:t.event)),zi(o,\"click\",this.Ut,{capture:!0}),this.zt=i=>this.Ht(i||(null==t?void 0:t.event)),zi(o,\"mousemove\",this.zt,{capture:!0}),this.Bt=new Lr(this.instance,Dr,this.Dt.bind(this)),this.Bt.startIfEnabled(),this.qt=this.Ot.bind(this),zi(o,\"visibilitychange\",this.qt),this.P=!0)}At(){var i;t&&o&&(this.Nt&&t.removeEventListener(\"beforeunload\",this.Nt),this.Ut&&o.removeEventListener(\"click\",this.Ut,{capture:!0}),this.zt&&o.removeEventListener(\"mousemove\",this.zt,{capture:!0}),this.qt&&o.removeEventListener(\"visibilitychange\",this.qt),clearTimeout(this.Wt),null==(i=this.Bt)||i.stop(),this.P=!1)}Gt(i,e){var r=this.instance.scrollManager.scrollY(),s=this.instance.scrollManager.scrollX(),n=this.instance.scrollManager.scrollElement(),o=function(i,e,r){for(var s=i;s&&we(s)&&!xe(s,\"body\");){if(s===r)return!1;if(w(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=Me(s)}return!1}(Ce(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}jt(t,i){var e;if(void 0===i&&(i=\"click\"),!be(t.target)&&bs(t)){var r=this.Gt(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.Vt(g({},r,{type:\"rageclick\"})),this.Vt(r)}}Ht(t){!be(t.target)&&bs(t)&&(clearTimeout(this.Wt),this.Wt=setTimeout((()=>{this.Vt(this.Gt(t,\"mousemove\"))}),500))}Vt(i){if(t){var e=t.location.href,r=this.instance.config.mask_personal_data_properties,s=this.instance.config.custom_personal_data_properties,n=r?Fi([],es,s||[]):[],o=nr(e,n,ss);this.N=this.N||{},this.N[o]||(this.N[o]=[]),this.N[o].push(i)}}Lt(){this.N&&!F(this.N)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class xs{constructor(t){this.Jt=(t,i,e)=>{e&&(e.noSessionId||e.activityTimeout||e.sessionPastMaximumLength)&&($i.info(\"[PageViewManager] Session rotated, clearing pageview state\",{sessionId:t,changeReason:e}),this.Kt=void 0,this._instance.scrollManager.resetContext())},this._instance=t,this.Yt()}Yt(){var t;this.Xt=null==(t=this._instance.sessionManager)?void 0:t.onSessionId(this.Jt)}destroy(){var t;null==(t=this.Xt)||t.call(this),this.Xt=void 0}doPageView(i,e){var r,s=this.Qt(i,e);return this.Kt={pathname:null!==(r=null==t?void 0:t.location.pathname)&&void 0!==r?r:\"\",pageViewId:e,timestamp:i},this._instance.scrollManager.resetContext(),s}doPageLeave(t){var i;return this.Qt(t,null==(i=this.Kt)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.Kt)?void 0:t.pageViewId}}Qt(t,i){var e=this.Kt;if(!e)return{$pageview_id:i};var r={$pageview_id:i,$prev_pageview_id:e.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:n,lastScrollY:o,maxScrollY:a,maxContentHeight:l,lastContentY:u,maxContentY:h}=s;if(!(M(n)||M(o)||M(a)||M(l)||M(u)||M(h))){n=Math.ceil(n),o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),h=Math.ceil(h);var d=n<=1?1:K(o/n,0,1,$i),v=n<=1?1:K(a/n,0,1,$i),c=l<=1?1:K(u/l,0,1,$i),f=l<=1?1:K(h/l,0,1,$i);r=Ri(r,{$prev_pageview_last_scroll:o,$prev_pageview_last_scroll_percentage:d,$prev_pageview_max_scroll:a,$prev_pageview_max_scroll_percentage:v,$prev_pageview_last_content:u,$prev_pageview_last_content_percentage:c,$prev_pageview_max_content:h,$prev_pageview_max_content_percentage:f})}}return e.pathname&&(r.$prev_pageview_pathname=e.pathname),e.timestamp&&(r.$prev_pageview_duration=(t.getTime()-e.timestamp.getTime())/1e3),r}}var Es=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"],$s=function(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),Ss=Uint8Array,ks=Uint16Array,Ps=Uint32Array,Ts=new Ss([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Is=new Ss([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Cs=new Ss([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Rs=function(t,i){for(var e=new ks(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new Ps(e[30]);for(r=1;r<30;++r)for(var n=e[r];n<e[r+1];++n)s[n]=n-e[r]<<5|r;return[e,s]},Fs=Rs(Ts,2),Ms=Fs[0],Os=Fs[1];Ms[28]=258,Os[258]=28;for(var As=Rs(Is,0)[1],Ds=new ks(32768),js=0;js<32768;++js){var Ls=(43690&js)>>>1|(21845&js)<<1;Ls=(61680&(Ls=(52428&Ls)>>>2|(13107&Ls)<<2))>>>4|(3855&Ls)<<4,Ds[js]=((65280&Ls)>>>8|(255&Ls)<<8)>>>1}var Ns=function(t,i,e){for(var r=t.length,s=0,n=new ks(i);s<r;++s)++n[t[s]-1];var o,a=new ks(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new ks(1<<i);var l=15-i;for(s=0;s<r;++s)if(t[s])for(var u=s<<4|t[s],h=i-t[s],d=a[t[s]-1]++<<h,v=d|(1<<h)-1;d<=v;++d)o[Ds[d]>>>l]=u}else for(o=new ks(r),s=0;s<r;++s)o[s]=Ds[a[t[s]-1]++]>>>15-t[s];return o},Us=new Ss(288);for(js=0;js<144;++js)Us[js]=8;for(js=144;js<256;++js)Us[js]=9;for(js=256;js<280;++js)Us[js]=7;for(js=280;js<288;++js)Us[js]=8;var zs=new Ss(32);for(js=0;js<32;++js)zs[js]=5;var Hs=Ns(Us,9,0),Bs=Ns(zs,5,0),qs=function(t){return(t/8>>0)+(7&t&&1)},Ws=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof ks?ks:t instanceof Ps?Ps:Ss)(e-i);return r.set(t.subarray(i,e)),r},Gs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},Vs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8,t[r+2]|=e>>>16},Js=function(t,i){for(var e=[],r=0;r<t.length;++r)t[r]&&e.push({s:r,f:t[r]});var s=e.length,n=e.slice();if(!s)return[new Ss(0),0];if(1==s){var o=new Ss(e[0].s+1);return o[e[0].s]=1,[o,1]}e.sort((function(t,i){return t.f-i.f})),e.push({s:-1,f:25001});var a=e[0],l=e[1],u=0,h=1,d=2;for(e[0]={s:-1,f:a.f+l.f,l:a,r:l};h!=s-1;)a=e[e[u].f<e[d].f?u++:d++],l=e[u!=h&&e[u].f<e[d].f?u++:d++],e[h++]={s:-1,f:a.f+l.f,l:a,r:l};var v=n[0].s;for(r=1;r<s;++r)n[r].s>v&&(v=n[r].s);var c=new ks(v+1),f=Ks(e[h-1],c,0);if(f>i){r=0;var p=0,g=f-i,_=1<<g;for(n.sort((function(t,i){return c[i.s]-c[t.s]||t.f-i.f}));r<s;++r){var m=n[r].s;if(!(c[m]>i))break;p+=_-(1<<f-c[m]),c[m]=i}for(p>>>=g;p>0;){var y=n[r].s;c[y]<i?p-=1<<i-c[y]++-1:++r}for(;r>=0&&p;--r){var b=n[r].s;c[b]==i&&(--c[b],++p)}f=i}return[new Ss(c),f]},Ks=function(t,i,e){return-1==t.s?Math.max(Ks(t.l,i,e+1),Ks(t.r,i,e+1)):i[t.s]=e},Ys=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new ks(++i),r=0,s=t[0],n=1,o=function(t){e[r++]=t},a=1;a<=i;++a)if(t[a]==s&&a!=i)++n;else{if(!s&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(s),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(s);n=1,s=t[a]}return[e.subarray(0,r),i]},Xs=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Qs=function(t,i,e){var r=e.length,s=qs(i+2);t[s]=255&r,t[s+1]=r>>>8,t[s+2]=255^t[s],t[s+3]=255^t[s+1];for(var n=0;n<r;++n)t[s+n+4]=e[n];return 8*(s+4+r)},Zs=function(t,i,e,r,s,n,o,a,l,u,h){Gs(i,h++,e),++s[256];for(var d=Js(s,15),v=d[0],c=d[1],f=Js(n,15),p=f[0],g=f[1],_=Ys(v),m=_[0],y=_[1],b=Ys(p),w=b[0],x=b[1],E=new ks(19),S=0;S<m.length;++S)E[31&m[S]]++;for(S=0;S<w.length;++S)E[31&w[S]]++;for(var k=Js(E,7),P=k[0],T=k[1],I=19;I>4&&!P[Cs[I-1]];--I);var C,R,F,M,O=u+5<<3,A=Xs(s,Us)+Xs(n,zs)+o,D=Xs(s,v)+Xs(n,p)+o+14+3*I+Xs(E,P)+(2*E[16]+3*E[17]+7*E[18]);if(O<=A&&O<=D)return Qs(i,h,t.subarray(l,l+u));if(Gs(i,h,1+(D<A)),h+=2,D<A){C=Ns(v,c,0),R=v,F=Ns(p,g,0),M=p;var j=Ns(P,T,0);Gs(i,h,y-257),Gs(i,h+5,x-1),Gs(i,h+10,I-4),h+=14;for(S=0;S<I;++S)Gs(i,h+3*S,P[Cs[S]]);h+=3*I;for(var L=[m,w],N=0;N<2;++N){var U=L[N];for(S=0;S<U.length;++S){var z=31&U[S];Gs(i,h,j[z]),h+=P[z],z>15&&(Gs(i,h,U[S]>>>5&127),h+=U[S]>>>12)}}}else C=Hs,R=Us,F=Bs,M=zs;for(S=0;S<a;++S)if(r[S]>255){z=r[S]>>>18&31;Vs(i,h,C[z+257]),h+=R[z+257],z>7&&(Gs(i,h,r[S]>>>23&31),h+=Ts[z]);var H=31&r[S];Vs(i,h,F[H]),h+=M[H],H>3&&(Vs(i,h,r[S]>>>5&8191),h+=Is[H])}else Vs(i,h,C[r[S]]),h+=R[r[S]];return Vs(i,h,C[256]),h+R[256]},tn=new Ps([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),en=function(){for(var t=new Ps(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),rn=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new Ss(r+o+5*(1+Math.floor(o/7e3))+s),l=a.subarray(r,a.length-s),u=0;if(!i||o<8)for(var h=0;h<=o;h+=65535){var d=h+65535;d<o?u=Qs(l,u,t.subarray(h,d)):(l[h]=n,u=Qs(l,u,t.subarray(h,o)))}else{for(var v=tn[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,g=new ks(32768),_=new ks(p+1),m=Math.ceil(e/3),y=2*m,b=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<y)&p},w=new Ps(25e3),x=new ks(288),E=new ks(32),S=0,k=0,P=(h=0,0),T=0,I=0;h<o;++h){var C=b(h),R=32767&h,F=_[C];if(g[R]=F,_[C]=R,T<=h){var M=o-h;if((S>7e3||P>24576)&&M>423){u=Zs(t,l,0,w,x,E,k,P,I,h-I,u),P=S=k=0,I=h;for(var O=0;O<286;++O)x[O]=0;for(O=0;O<30;++O)E[O]=0}var A=2,D=0,j=f,L=R-F&32767;if(M>2&&C==b(h-L))for(var N=Math.min(c,M)-1,U=Math.min(32767,h),z=Math.min(258,M);L<=U&&--j&&R!=F;){if(t[h+A]==t[h+A-L]){for(var H=0;H<z&&t[h+H]==t[h+H-L];++H);if(H>A){if(A=H,D=L,H>N)break;var B=Math.min(L,H-2),q=0;for(O=0;O<B;++O){var W=h-L+O+32768&32767,G=W-g[W]+32768&32767;G>q&&(q=G,F=W)}}}L+=(R=F)-(F=g[R])+32768&32767}if(D){w[P++]=268435456|Os[A]<<18|As[D];var V=31&Os[A],J=31&As[D];k+=Ts[V]+Is[J],++x[257+V],++E[J],T=h+A,++S}else w[P++]=t[h],++x[t[h]]}}u=Zs(t,l,n,w,x,E,k,P,I,h-I,u)}return Ws(a,0,r+qs(u)+s)}(t,null==i.level?6:i.level,null==i.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+i.mem,e,r,!0)},sn=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8};function nn(t,i){void 0===i&&(i={});var e=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=en[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}}(),r=t.length;e.p(t);var s,n=rn(t,i,10+((s=i).filename&&s.filename.length+1||0),8),o=n.length;return function(t,i){var e=i.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=i.level<2?4:9==i.level?2:0,t[9]=3,0!=i.mtime&&sn(t,4,Math.floor(new Date(i.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}}(n,i),sn(n,o-8,e.d()),sn(n,o-4,r),n}var on=function(t){var i,e,r,s,n=\"\";for(i=e=0,r=(t=(t+\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\")).length,s=0;s<r;s++){var o=t.charCodeAt(s),a=null;o<128?e++:a=o>127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),D(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},an=!!u||!!l,ln=\"text/plain\",un=function(t,i,e){var r;void 0===e&&(e=!0);var[s,n]=t.split(\"?\"),o=g({},i),a=null!==(r=null==n?void 0:n.split(\"&\").map((t=>{var i,[r,s]=t.split(\"=\"),n=e&&null!==(i=o[r])&&void 0!==i?i:s;return delete o[r],r+\"=\"+n})))&&void 0!==r?r:[],l=rr(o);return l&&a.push(l),s+\"?\"+a.join(\"&\")},hn=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),dn=t=>{var{data:i,compression:e}=t;if(i){if(e===$s.GZipJS){var r=nn(function(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new Ss(t.length+(t.length>>>1)),s=0,n=function(t){r[s++]=t},o=0;o<e;++o){if(s+5>r.length){var a=new Ss(s+8+(e-o<<1));a.set(r),r=a}var l=t.charCodeAt(o);l<128||i?n(l):l<2048?(n(192|l>>>6),n(128|63&l)):l>55295&&l<57344?(n(240|(l=65536+(1047552&l)|1023&t.charCodeAt(++o))>>>18),n(128|l>>>12&63),n(128|l>>>6&63),n(128|63&l)):(n(224|l>>>12),n(128|l>>>6&63),n(128|63&l))}return Ws(r,0,s)}(hn(i)),{mtime:0}),s=new Blob([r],{type:ln});return{contentType:ln,body:s,estimatedSize:s.size}}if(e===$s.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=on(t);do{i=(n=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63,e=n>>12&63,r=n>>6&63,s=63&n,h[l++]=o.charAt(i)+o.charAt(e)+o.charAt(r)+o.charAt(s)}while(a<t.length);switch(u=h.join(\"\"),t.length%3){case 1:u=u.slice(0,-2)+\"==\";break;case 2:u=u.slice(0,-1)+\"=\"}return u}(hn(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:hn(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=hn(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},vn=[];l&&vn.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=dn(t))&&void 0!==i?i:{},o=new Headers;Ci(t.headers,(function(t,i){o.append(i,t)})),r&&o.append(\"Content-Type\",r);var a=t.url,u=null;if(h){var d=new h;u={signal:d.signal,timeout:setTimeout((()=>d.abort()),t.timeout)}}l(a,g({method:(null==t?void 0:t.method)||\"GET\",headers:o,keepalive:\"POST\"===t.method&&(n||0)<52428.8,body:s,signal:null==(e=u)?void 0:e.signal},t.fetchOptions)).then((i=>i.text().then((e=>{var r={statusCode:i.status,text:e};if(200===i.status)try{r.json=JSON.parse(e)}catch(t){$i.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{$i.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&vn.push({transport:\"XHR\",method:t=>{var i,e=new u;e.open(t.method||\"GET\",t.url,!0);var{contentType:r,body:s}=null!==(i=dn(t))&&void 0!==i?i:{};Ci(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),t.disableXHRCredentials||(e.withCredentials=!0),e.onreadystatechange=()=>{if(4===e.readyState){var i={statusCode:e.status,text:e.responseText};if(200===e.status)try{i.json=JSON.parse(e.responseText)}catch(t){}null==t.callback||t.callback(i)}},e.send(s)}}),null!=n&&n.sendBeacon&&vn.push({transport:\"sendBeacon\",method:t=>{var i=un(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=dn(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var cn=function(t,i){if(!function(t){try{new RegExp(t)}catch(t){return!1}return!0}(i))return!1;try{return new RegExp(i).test(t)}catch(t){return!1}};function fn(t,i,e){return hn({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var pn={exact:(t,i)=>i.some((i=>t.some((t=>i===t)))),is_not:(t,i)=>i.every((i=>t.every((t=>i!==t)))),regex:(t,i)=>i.some((i=>t.some((t=>cn(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!cn(i,t))))),icontains:(t,i)=>i.map(gn).some((i=>t.map(gn).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(gn).every((i=>t.map(gn).every((t=>!i.includes(t))))),gt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e>parseFloat(t)))})),lt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e<parseFloat(t)))}))},gn=t=>t.toLowerCase();function _n(t,i){return!t||Object.entries(t).every((t=>{var[e,r]=t,s=null==i?void 0:i[e];if(M(s)||D(s))return!1;var n=[String(s)],o=pn[r.operator];return!!o&&o(r.values,n)}))}var mn=Si(\"[Error tracking]\");class yn{constructor(t){var i,e;this.Zt=[],this.ti=new Qt([new vi,new xi,new fi,new ci,new bi,new yi,new gi,new wi],di()),this._instance=t,this.Zt=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(Ji))&&void 0!==i?i:[]}onRemoteConfig(t){var i,e,r,s=null!==(i=null==(e=t.errorTracking)?void 0:e.suppressionRules)&&void 0!==i?i:[],n=null==(r=t.errorTracking)?void 0:r.captureExtensionExceptions;this.Zt=s,this._instance.persistence&&this._instance.persistence.register({[Ji]:this.Zt,[Ki]:n})}get ii(){var t,i=!!this._instance.get_property(Ki),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}buildProperties(t,i){return this.ti.buildFromUnknown(t,{syntheticException:null==i?void 0:i.syntheticException,mechanism:{handled:null==i?void 0:i.handled}})}sendExceptionEvent(t){var i=t.$exception_list;if(this.ei(i)){if(this.ri(i))return void mn.info(\"Skipping exception capture because a suppression rule matched\");if(!this.ii&&this.si(i))return void mn.info(\"Skipping exception capture because it was thrown by an extension\");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.ni(i))return void mn.info(\"Skipping exception capture because it was thrown by the PostHog SDK\")}return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"})}ri(t){if(0===t.length)return!1;var i=t.reduce(((t,i)=>{var{type:e,value:r}=i;return O(e)&&e.length>0&&t.$exception_types.push(e),O(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.Zt.some((t=>{var e=t.values.map((t=>{var e,r=pn[t.operator],s=I(t.value)?t.value:[t.value],n=null!==(e=i[t.key])&&void 0!==e?e:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?e.some(Boolean):e.every(Boolean)}))}si(t){return t.flatMap((t=>{var i,e;return null!==(i=null==(e=t.stacktrace)?void 0:e.frames)&&void 0!==i?i:[]})).some((t=>t.filename&&t.filename.startsWith(\"chrome-extension://\")))}ni(t){if(t.length>0){var i,e,r,s,n=null!==(i=null==(e=t[0].stacktrace)?void 0:e.frames)&&void 0!==i?i:[],o=n[n.length-1];return null!==(r=null==o||null==(s=o.filename)?void 0:s.includes(\"posthog.com/static\"))&&void 0!==r&&r}return!1}ei(t){return!j(t)&&I(t)}}var bn=Si(\"[FeatureFlags]\"),wn=Si(\"[FeatureFlags]\",{debugEnabled:!0}),xn=\"$active_feature_flags\",En=\"$override_feature_flags\",$n=\"$feature_flag_payloads\",Sn=\"$override_feature_flag_payloads\",kn=\"$feature_flag_request_id\",Pn=\"$feature_flag_evaluated_at\",Tn=t=>{var i={};for(var[e,r]of Mi(t||{}))r&&(i[e]=r);return i},In=t=>{var i=t.flags;return i?(t.featureFlags=Object.fromEntries(Object.keys(i).map((t=>{var e;return[t,null!==(e=i[t].variant)&&void 0!==e?e:i[t].enabled]}))),t.featureFlagPayloads=Object.fromEntries(Object.keys(i).filter((t=>i[t].enabled)).filter((t=>{var e;return null==(e=i[t].metadata)?void 0:e.payload})).map((t=>{var e;return[t,null==(e=i[t].metadata)?void 0:e.payload]})))):bn.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},Cn=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class Rn{constructor(t){this.oi=!1,this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this._instance=t,this.featureFlagEventHandlers=[]}ci(){var t=this._instance.config.evaluation_environments;return null!=t&&t.length?t.filter((t=>{var i=t&&\"string\"==typeof t&&t.trim().length>0;return i||bn.error(\"Invalid evaluation environment found:\",t,\"Expected non-empty string\"),i})):[]}fi(){return this.ci().length>0}flags(){if(this._instance.config.__preview_remote_config)this.di=!0;else{var t=!this.pi&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.gi({disableFlags:t})}}get hasLoadedFlags(){return this.ai}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(ne),i=this._instance.get_property(En),e=this._instance.get_property(Sn);if(!e&&!i)return t||{};var r=Ri({},t||{}),s=[...new Set([...Object.keys(e||{}),...Object.keys(i||{})])];for(var n of s){var o,a,l=r[n],u=null==i?void 0:i[n],h=M(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=M(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=g({},l,{enabled:h,variant:h?null!=d?d:null==l?void 0:l.variant:void 0});if(h!==(null==l?void 0:l.enabled)&&(c.original_enabled=null==l?void 0:l.enabled),d!==(null==l?void 0:l.variant)&&(c.original_variant=null==l?void 0:l.variant),v)c.metadata=g({},null==l?void 0:l.metadata,{payload:v,original_payload:null==l||null==(a=l.metadata)?void 0:a.payload});r[n]=c}return this.oi||(bn.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.oi=!0),r}getFlagVariants(){var t=this._instance.get_property(re),i=this._instance.get_property(En);if(!i)return t||{};for(var e=Ri({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(bn.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.oi=!0),e}getFlagPayloads(){var t=this._instance.get_property($n),i=this._instance.get_property(Sn);if(!i)return t||{};for(var e=Ri({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(bn.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.oi=!0),e}reloadFeatureFlags(){this.ui||this._instance.config.advanced_disable_feature_flags||this.pi||(this.pi=setTimeout((()=>{this.gi()}),5))}mi(){clearTimeout(this.pi),this.pi=void 0}ensureFlagsLoaded(){this.ai||this.li||this.pi||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.ui=t}gi(t){var i;if(this.mi(),!this._instance.O())if(this.li)this.hi=!0;else{var e=this._instance.config.token,r=this._instance.get_property(\"$device_id\"),s={token:e,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:g({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(oe)||{}),group_properties:this._instance.get_property(ae)};D(r)||M(r)||(s.$device_id=r),(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(s.disable_flags=!0),this.fi()&&(s.evaluation_environments=this.ci());var n=this._instance.config.__preview_remote_config,o=n?\"/flags/?v=2\":\"/flags/?v=2&config=true\",a=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",l=this._instance.requestRouter.endpointFor(\"flags\",o+a);n&&(s.timezone=cs()),this.li=!0,this._instance._send_request({method:\"POST\",url:l,data:s,compression:this._instance.config.disable_compression?void 0:$s.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,e,r=!0;(200===t.statusCode&&(this.hi||(this.$anon_distinct_id=void 0),r=!1),this.li=!1,this.di)||(this.di=!0,this._instance.yi(null!==(e=t.json)&&void 0!==e?e:{}));if(!s.disable_flags||this.hi)if(this.vi=!r,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(Cn.FeatureFlags))bn.warn(\"You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more.\");else{var n;if(!s.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},r);this.hi&&(this.hi=!1,this.gi())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(kn)||void 0,n=this._instance.get_property(Pn)||void 0,o=this._instance.get_property(ue)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in o)||!o[t].includes(r))){var a,l,u,h,d,v,c,f,p;I(o[t])?o[t].push(r):o[t]=[r],null==(a=this._instance.persistence)||a.register({[ue]:o});var g=this.getFeatureFlagDetails(t),_={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_evaluated_at:n,$feature_flag_bootstrapped_response:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlags)?void 0:l[t])||null,$feature_flag_bootstrapped_payload:(null==(u=this._instance.config.bootstrap)||null==(u=u.featureFlagPayloads)?void 0:u[t])||null,$used_bootstrap_value:!this.vi};M(null==g||null==(h=g.metadata)?void 0:h.version)||(_.$feature_flag_version=g.metadata.version);var m,y=null!==(d=null==g||null==(v=g.reason)?void 0:v.description)&&void 0!==d?d:null==g||null==(c=g.reason)?void 0:c.code;if(y&&(_.$feature_flag_reason=y),null!=g&&null!=(f=g.metadata)&&f.id&&(_.$feature_flag_id=g.metadata.id),M(null==g?void 0:g.original_variant)&&M(null==g?void 0:g.original_enabled)||(_.$feature_flag_original_response=M(g.original_variant)?g.original_enabled:g.original_variant),null!=g&&null!=(p=g.metadata)&&p.original_payload)_.$feature_flag_original_payload=null==g||null==(m=g.metadata)?void 0:m.original_payload;this._instance.capture(\"$feature_flag_called\",_)}return e}bn.warn('getFeatureFlag for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){return this.getFlagPayloads()[t]}getRemoteConfigPayload(t,i){var e=this._instance.config.token,r={distinct_id:this._instance.get_distinct_id(),token:e};this.fi()&&(r.evaluation_environments=this.ci()),this._instance._send_request({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"flags\",\"/flags/?v=2&config=true\"),data:r,compression:this._instance.config.disable_compression?void 0:$s.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:e=>{var r,s=null==(r=e.json)?void 0:r.featureFlagPayloads;i((null==s?void 0:s[t])||void 0)}})}isFeatureEnabled(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFeatureFlag(t,i);return M(e)?void 0:!!e}bn.warn('isFeatureEnabled for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((i=>i!==t))}receivedFeatureFlags(t,i){if(this._instance.persistence){this.ai=!0;var e=this.getFlagVariants(),r=this.getFlagPayloads(),s=this.getFlagsWithDetails();!function(t,i,e,r,s){void 0===e&&(e={}),void 0===r&&(r={}),void 0===s&&(s={});var n=In(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId,h=t.evaluatedAt;if(I(a)){bn.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var d={};if(a)for(var v=0;v<a.length;v++)d[a[v]]=!0;i&&i.register({[xn]:a,[re]:d})}else{var c=a,f=l,p=o;t.errorsWhileComputingFlags&&(c=g({},e,c),f=g({},r,f),p=g({},s,p)),i&&i.register(g({[xn]:Object.keys(Tn(c)),[re]:c||{},[$n]:f||{},[ne]:p||{}},u?{[kn]:u}:{},h?{[Pn]:h}:{}))}}}(t,this._instance.persistence,e,r,s),this.bi(i)}}override(t,i){void 0===i&&(i=!1),bn.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return bn.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(En),this._instance.persistence.unregister(Sn),this.bi(),wn.info(\"All overrides cleared\");if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.oi=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(En),wn.info(\"Flag overrides cleared\");else if(e.flags){if(I(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[En]:r})}else this._instance.persistence.register({[En]:e.flags});wn.info(\"Flag overrides set\",{flags:e.flags})}return\"payloads\"in e&&(!1===e.payloads?(this._instance.persistence.unregister(Sn),wn.info(\"Payload overrides cleared\")):e.payloads&&(this._instance.persistence.register({[Sn]:e.payloads}),wn.info(\"Payload overrides set\",{payloads:e.payloads}))),void this.bi()}this.bi()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ai){var{flags:i,flagVariants:e}=this.wi();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(se)||[]).find((i=>i.flagKey===t)),n={[\"$feature_enrollment/\"+t]:i},o={$feature_flag:t,$feature_enrollment:i,$set:n};s&&(o.$early_access_feature_name=s.name),e&&(o.$feature_enrollment_stage=e),this._instance.capture(\"$feature_enrollment_update\",o),this.setPersonPropertiesForFlags(n,!1);var a=g({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[xn]:Object.keys(Tn(a)),[re]:a}),this.bi()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(se),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/early_access_features/?token=\"+this._instance.config.token+s),method:\"GET\",callback:i=>{var e,r;if(i.json){var s=i.json.earlyAccessFeatures;return null==(e=this._instance.persistence)||e.unregister(se),null==(r=this._instance.persistence)||r.register({[se]:s}),t(s)}}})}wi(){var t=this.getFlags(),i=this.getFlagVariants();return{flags:t.filter((t=>i[t])),flagVariants:Object.keys(i).filter((t=>i[t])).reduce(((t,e)=>(t[e]=i[e],t)),{})}}bi(t){var{flags:i,flagVariants:e}=this.wi();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(oe)||{};this._instance.register({[oe]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(oe)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(ae)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=g({},e[i],t[i]),delete t[i]})),this._instance.register({[ae]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(ae)||{};this._instance.register({[ae]:g({},i,{[t]:{}})})}else this._instance.unregister(ae)}reset(){this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.$anon_distinct_id=void 0,this.mi(),this.oi=!1}}var Fn=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class Mn{constructor(t,i){this.R=t,this.props={},this.xi=!1,this.Ei=(t=>{var i=\"\";return t.token&&(i=t.token.replace(/\\+/g,\"PL\").replace(/\\//g,\"SL\").replace(/=/g,\"EQ\")),t.persistence_name?\"ph_\"+t.persistence_name:\"ph_\"+i+\"_posthog\"})(t),this.Y=this.$i(t),this.load(),t.debug&&$i.info(\"Persistence loaded\",t.persistence,g({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.Si}$i(i){-1===Fn.indexOf(i.persistence.toLowerCase())&&($i.critical(\"Unknown persistence type \"+i.persistence+\"; falling back to localStorage+cookie\"),i.persistence=\"localStorage+cookie\");var e=function(i){void 0===i&&(i=[]);var e=[...Tr,...i];return g({},Pr,{W:function(t){try{var i={};try{i=Sr.W(t)||{}}catch(t){}var e=Ri(i,JSON.parse(Pr.q(t)||\"{}\"));return Pr.G(t,e),e}catch(t){}return null},G:function(t,i,r,s,n,o){try{Pr.G(t,i,void 0,void 0,o);var a={};e.forEach((t=>{i[t]&&(a[t]=i[t])})),Object.keys(a).length&&Sr.G(t,a,r,s,n,o)}catch(t){Pr.B(t)}},V:function(i,e){try{null==t||t.localStorage.removeItem(i),Sr.V(i,e)}catch(t){Pr.B(t)}}})}(i.cookie_persisted_properties||[]),r=i.persistence.toLowerCase();return\"localstorage\"===r&&Pr.H()?Pr:\"localstorage+cookie\"===r&&e.H()?e:\"sessionstorage\"===r&&Fr.H()?Fr:\"memory\"===r?Cr:\"cookie\"===r?Sr:e.H()?e:Sr}properties(){var t={};return Ci(this.props,(function(i,e){if(e===re&&R(i))for(var r=Object.keys(i),n=0;n<r.length;n++)t[\"$feature/\"+r[n]]=i[r[n]];else a=e,l=!1,(D(o=ye)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(Ci(o,(function(t){if(l||(l=t===a))return Ti})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.Si){var t=this.Y.W(this.Ei);t&&(this.props=Ri({},t))}}save(){this.Si||this.Y.G(this.Ei,this.props,this.ki,this.Pi,this.Ti,this.R.debug)}remove(){this.Y.V(this.Ei,!1),this.Y.V(this.Ei,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(R(t)){M(i)&&(i=\"None\"),this.ki=M(e)?this.Ii:e;var r=!1;if(Ci(t,((t,e)=>{this.props.hasOwnProperty(e)&&this.props[e]!==i||(this.props[e]=t,r=!0)})),r)return this.save(),!0}return!1}register(t,i){if(R(t)){this.ki=M(i)?this.Ii:i;var e=!1;if(Ci(t,((i,r)=>{t.hasOwnProperty(r)&&this.props[r]!==i&&(this.props[r]=i,e=!0)})),e)return this.save(),!0}return!1}unregister(t){t in this.props&&(delete this.props[t],this.save())}update_campaign_params(){if(!this.xi){var t=os(this.R.custom_campaign_params,this.R.mask_personal_data_properties,this.R.custom_personal_data_properties);F(Di(t))||this.register(t),this.xi=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?ls(t):{})}update_referrer_info(){var t;this.register_once({$referrer:hs(),$referring_domain:null!=o&&o.referrer&&(null==(t=er(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[ce]||this.props[fe]||this.register_once({[pe]:ds(this.R.mask_personal_data_properties,this.R.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};Ci([fe,ce],(i=>{var e=this.props[i];e&&Ci(e,(function(i,e){t[\"$initial_\"+E(e)]=i}))}));var i,e,r=this.props[pe];if(r){var s=(i=vs(r),e={},Ci(i,(function(t,i){e[\"$initial_\"+E(i)]=t})),e);Ri(t,s)}return t}safe_merge(t){return Ci(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ii=this.ki=t.cookie_expiration,this.set_disabled(t.disable_persistence||!!e),this.set_cross_subdomain(t.cross_subdomain_cookie),this.set_secure(t.secure_cookie),t.persistence!==i.persistence||!((t,i)=>{if(t.length!==i.length)return!1;var e=[...t].sort(),r=[...i].sort();return e.every(((t,i)=>t===r[i]))})(t.cookie_persisted_properties||[],i.cookie_persisted_properties||[])){var r=this.$i(t),s=this.props;this.clear(),this.Y=r,this.props=s,this.save()}}set_disabled(t){this.Si=t,this.Si?this.remove():this.save()}set_cross_subdomain(t){t!==this.Pi&&(this.Pi=t,this.remove(),this.save())}set_secure(t){t!==this.Ti&&(this.Ti=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[qi]||{};e[t]=i,this.props[qi]=e,this.save()}remove_event_timer(t){var i=(this.props[qi]||{})[t];return M(i)||(delete this.props[qi][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}var On=Si(\"[Product Tours]\"),An=\"ph_product_tours\";class Dn{constructor(t){this.Ci=null,this.Ri=null,this._instance=t}onRemoteConfig(t){this._instance.persistence&&this._instance.persistence.register({[Qi]:!(null==t||!t.productTours)}),this.loadIfEnabled()}loadIfEnabled(){var t,i;this.Ci||((t=this._instance).config.disable_product_tours||null==(i=t.persistence)||!i.get_property(Qi))||this.it((()=>this.Fi()))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.generateProductTours?t():null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"product-tours\",(i=>{i?On.error(\"Could not load product tours script\",i):t()}))}Fi(){var t;!this.Ci&&null!=(t=v.__PosthogExtensions__)&&t.generateProductTours&&(this.Ci=v.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,i){if(void 0===i&&(i=!1),!I(this.Ri)||i){var e=this._instance.persistence;if(e){var r=e.props[An];if(I(r)&&!i)return this.Ri=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/product_tours/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{var r=i.statusCode;if(200!==r||!i.json){var s=\"Product Tours API could not be loaded, status: \"+r;return On.error(s),void t([],{isLoaded:!1,error:s})}var n=I(i.json.product_tours)?i.json.product_tours:[];this.Ri=n,e&&e.register({[An]:n}),t(n,{isLoaded:!0})}})}else t(this.Ri,{isLoaded:!0})}getActiveProductTours(t){j(this.Ci)?t([],{isLoaded:!1,error:\"Product tours not loaded\"}):this.Ci.getActiveProductTours(t)}showProductTour(t){var i;null==(i=this.Ci)||i.showTourById(t)}previewTour(t){this.Ci?this.Ci.previewTour(t):this.it((()=>{var i;this.Fi(),null==(i=this.Ci)||i.previewTour(t)}))}dismissProductTour(){var t;null==(t=this.Ci)||t.dismissTour(\"user_clicked_skip\")}nextStep(){var t;null==(t=this.Ci)||t.nextStep()}previousStep(){var t;null==(t=this.Ci)||t.previousStep()}clearCache(){var t;this.Ri=null,null==(t=this._instance.persistence)||t.unregister(An)}resetTour(t){var i;null==(i=this.Ci)||i.resetTour(t)}resetAllTours(){var t;null==(t=this.Ci)||t.resetAllTours()}cancelPendingTour(t){var i;null==(i=this.Ci)||i.cancelPendingTour(t)}}var jn=function(t){return t.Activation=\"events\",t.Cancellation=\"cancelEvents\",t}({}),Ln=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),Nn=function(t){return t.TopLeft=\"top_left\",t.TopRight=\"top_right\",t.TopCenter=\"top_center\",t.MiddleLeft=\"middle_left\",t.MiddleRight=\"middle_right\",t.MiddleCenter=\"middle_center\",t.Left=\"left\",t.Center=\"center\",t.Right=\"right\",t.NextToTrigger=\"next_to_trigger\",t}({}),Un=function(t){return t.Top=\"top\",t.Left=\"left\",t.Right=\"right\",t.Bottom=\"bottom\",t}({}),zn=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),Hn=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),Bn=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),qn=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),Wn=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t.ABANDONED=\"survey abandoned\",t}({}),Gn=function(t){return t.SURVEY_ID=\"$survey_id\",t.SURVEY_NAME=\"$survey_name\",t.SURVEY_RESPONSE=\"$survey_response\",t.SURVEY_ITERATION=\"$survey_iteration\",t.SURVEY_ITERATION_START_DATE=\"$survey_iteration_start_date\",t.SURVEY_PARTIALLY_COMPLETED=\"$survey_partially_completed\",t.SURVEY_SUBMISSION_ID=\"$survey_submission_id\",t.SURVEY_QUESTIONS=\"$survey_questions\",t.SURVEY_COMPLETED=\"$survey_completed\",t.PRODUCT_TOUR_ID=\"$product_tour_id\",t.SURVEY_LAST_SEEN_DATE=\"$survey_last_seen_date\",t}({}),Vn=function(t){return t.Popover=\"popover\",t.Inline=\"inline\",t}({}),Jn=Si(\"[Surveys]\");var Kn=\"seenSurvey_\",Yn=(t,i)=>{var e=\"$survey_\"+i+\"/\"+t.id;return t.current_iteration&&t.current_iteration>0&&(e=\"$survey_\"+i+\"/\"+t.id+\"/\"+t.current_iteration),e},Xn=t=>((t,i)=>{var e=\"\"+t+i.id;return i.current_iteration&&i.current_iteration>0&&(e=\"\"+t+i.id+\"_\"+i.current_iteration),e})(Kn,t),Qn=[zn.Popover,zn.Widget,zn.API],Zn={ignoreConditions:!1,ignoreDelay:!1,displayType:Vn.Popover};class to{constructor(){this.Mi={},this.Mi={}}on(t,i){return this.Mi[t]||(this.Mi[t]=[]),this.Mi[t].push(i),()=>{this.Mi[t]=this.Mi[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.Mi[t]||[])e(i);for(var r of this.Mi[\"*\"]||[])r(t,i)}}function io(t,i,e){if(j(t))return!1;switch(e){case\"exact\":return t===i;case\"contains\":var r=i.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\").replace(/_/g,\".\").replace(/%/g,\".*\");return new RegExp(r,\"i\").test(t);case\"regex\":try{return new RegExp(i).test(t)}catch(t){return!1}default:return!1}}class eo{constructor(t){this.Oi=new to,this.Ai=(t,i)=>this.Di(t,i)&&this.ji(t,i)&&this.Li(t,i)&&this.Ni(t,i),this.Di=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.Ui=new Set,this.zi=new Set}init(){var t;if(!M(null==(t=this._instance)?void 0:t.Hi)){var i;null==(i=this._instance)||i.Hi(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!M(null==(i=this._instance)?void 0:i.Hi)&&(t.forEach((t=>{var i,e;null==(i=this.zi)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.Ui)||i.add((null==t?void 0:t.event)||\"\")}))})),null!=(e=this._instance)&&e.autocapture)){var r,s=new Set;t.forEach((t=>{var i;null==(i=t.steps)||i.forEach((t=>{null!=t&&t.selector&&s.add(null==t?void 0:t.selector)}))})),null==(r=this._instance)||r.autocapture.setElementSelectors(s)}}on(t,i){var e;null!=i&&0!=t.length&&(this.Ui.has(t)||this.Ui.has(null==i?void 0:i.event))&&this.zi&&(null==(e=this.zi)?void 0:e.size)>0&&this.zi.forEach((t=>{this.Bi(i,t)&&this.Oi.emit(\"actionCaptured\",t.name)}))}qi(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Bi(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.Ai(t,e))return!0;return!1}onAction(t,i){return this.Oi.on(t,i)}ji(t,i){if(null!=i&&i.url){var e,r=null==t||null==(e=t.properties)?void 0:e.$current_url;if(!r||\"string\"!=typeof r)return!1;if(!io(r,i.url,i.url_matching||\"contains\"))return!1}return!0}Li(t,i){return!!this.Wi(t,i)&&(!!this.Gi(t,i)&&!!this.Vi(t,i))}Wi(t,i){var e;if(null==i||!i.href)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>io(t.href,i.href,i.href_matching||\"exact\")));var s,n=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!n&&io((s=n.match(/(?::|\")href=\"(.*?)\"/))?s[1]:\"\",i.href,i.href_matching||\"exact\")}Gi(t,i){var e;if(null==i||!i.text)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>io(t.text,i.text,i.text_matching||\"exact\")||io(t.$el_text,i.text,i.text_matching||\"exact\")));var s,n,o,a=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!a&&(s=function(t){for(var i,e=[],r=/(?::|\")text=\"(.*?)\"/g;!j(i=r.exec(t));)e.includes(i[1])||e.push(i[1]);return e}(a),n=i.text,o=i.text_matching||\"exact\",s.some((t=>io(t,n,o))))}Vi(t,i){var e,r;if(null==i||!i.selector)return!0;var s=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(null!=s&&s.includes(i.selector))return!0;var n=(null==t||null==(r=t.properties)?void 0:r.$elements_chain)||\"\";if(i.selector_regex&&n)try{return new RegExp(i.selector_regex).test(n)}catch(t){return!1}return!1}Ji(t){var i;return null==(null==t||null==(i=t.properties)?void 0:i.$elements)?[]:null==t?void 0:t.properties.$elements}Ni(t,i){return null==i||!i.properties||0===i.properties.length||_n(i.properties.reduce(((t,i)=>{var e=I(i.value)?i.value.map(String):null!=i.value?[String(i.value)]:[];return t[i.key]={values:e,operator:i.operator||\"exact\"},t}),{}),null==t?void 0:t.properties)}}class ro{constructor(t){this._instance=t,this.Ki=new Map,this.Yi=new Map,this.Xi=new Map}Qi(t,i){return!!t&&_n(t.propertyFilters,null==i?void 0:i.properties)}Zi(t,i){var e=new Map;return t.forEach((t=>{var r;null==(r=t.conditions)||null==(r=r[i])||null==(r=r.values)||r.forEach((i=>{if(null!=i&&i.name){var r=e.get(i.name)||[];r.push(t.id),e.set(i.name,r)}}))})),e}te(t,i,e){var r=(e===jn.Activation?this.Ki:this.Yi).get(t),s=[];return this.ie((t=>{s=t.filter((t=>null==r?void 0:r.includes(t.id)))})),s.filter((r=>{var s,n=null==(s=r.conditions)||null==(s=s[e])||null==(s=s.values)?void 0:s.find((i=>i.name===t));return this.Qi(n,i)}))}register(t){var i;M(null==(i=this._instance)?void 0:i.Hi)||(this.ee(t),this.re(t))}re(t){var i=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.actions)&&(null==(e=t.conditions)||null==(e=e.actions)||null==(e=e.values)?void 0:e.length)>0}));if(0!==i.length){if(null==this.se){this.se=new eo(this._instance),this.se.init();this.se.qi((t=>{this.onAction(t)}))}i.forEach((t=>{var i,e,r,s,n;t.conditions&&null!=(i=t.conditions)&&i.actions&&null!=(e=t.conditions)&&null!=(e=e.actions)&&e.values&&(null==(r=t.conditions)||null==(r=r.actions)||null==(r=r.values)?void 0:r.length)>0&&(null==(s=this.se)||s.register(t.conditions.actions.values),null==(n=t.conditions)||null==(n=n.actions)||null==(n=n.values)||n.forEach((i=>{if(i&&i.name){var e=this.Xi.get(i.name);e&&e.push(t.id),this.Xi.set(i.name,e||[t.id])}})))}))}}ee(t){var i,e=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.events)&&(null==(e=t.conditions)||null==(e=e.events)||null==(e=e.values)?void 0:e.length)>0})),r=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.cancelEvents)&&(null==(e=t.conditions)||null==(e=e.cancelEvents)||null==(e=e.values)?void 0:e.length)>0}));if(0!==e.length||0!==r.length){null==(i=this._instance)||i.Hi(((t,i)=>{this.onEvent(t,i)})),this.Ki=this.Zi(t,jn.Activation),this.Yi=this.Zi(t,jn.Cancellation)}}onEvent(t,i){var e,r=this.ne(),s=this.oe(),n=this.ae(),o=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[s])||[];if(n===t&&i&&o.length>0){var a,l;r.info(\"event matched, removing item from activated items\",{event:t,eventPayload:i,existingActivatedItems:o});var u=(null==i||null==(a=i.properties)?void 0:a.$survey_id)||(null==i||null==(l=i.properties)?void 0:l.$product_tour_id);if(u){var h=o.indexOf(u);h>=0&&(o.splice(h,1),this.le(o))}}else{if(this.Yi.has(t)){var d=this.te(t,i,jn.Cancellation);d.length>0&&(r.info(\"cancel event matched, cancelling items\",{event:t,itemsToCancel:d.map((t=>t.id))}),d.forEach((t=>{var i=o.indexOf(t.id);i>=0&&o.splice(i,1),this.ue(t.id)})),this.le(o))}if(this.Ki.has(t)){r.info(\"event name matched\",{event:t,eventPayload:i,items:this.Ki.get(t)});var v=this.te(t,i,jn.Activation);this.le(o.concat(v.map((t=>t.id))||[]))}}}onAction(t){var i,e=this.oe(),r=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[e])||[];this.Xi.has(t)&&this.le(r.concat(this.Xi.get(t)||[]))}le(t){var i,e=this.ne(),r=this.oe(),s=[...new Set(t)].filter((t=>!this.he(t)));e.info(\"updating activated items\",{activatedItems:s}),null==(i=this._instance)||null==(i=i.persistence)||i.register({[r]:s})}getActivatedIds(){var t,i=this.oe(),e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[i];return e||[]}getEventToItemsMap(){return this.Ki}de(){return this.se}}class so extends ro{constructor(t){super(t)}oe(){return\"$surveys_activated\"}ae(){return Wn.SHOWN}ie(t){var i;null==(i=this._instance)||i.getSurveys(t)}ue(t){var i;null==(i=this._instance)||i.cancelPendingSurvey(t)}ne(){return Jn}he(){return!1}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}class no{constructor(t){this.ve=void 0,this._surveyManager=null,this.ce=!1,this.fe=[],this.pe=null,this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){if(!this._instance.config.disable_surveys){var i=t.surveys;if(j(i))return Jn.warn(\"Flags not loaded yet. Not loading surveys.\");var e=I(i);this.ve=e?i.length>0:i,Jn.info(\"flags response received, isSurveysEnabled: \"+this.ve),this.loadIfEnabled()}}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Kn)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.ce)Jn.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Jn.info(\"Disabled. Not loading surveys.\");else if(this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())Jn.info(\"Not loading surveys in cookieless mode without consent.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!M(this.ve)||this._instance.config.advanced_enable_surveys){var i=this.ve||this._instance.config.advanced_enable_surveys;this.ce=!0;try{var e=t.generateSurveys;if(e)return void this.ge(e,i);var r=t.loadExternalDependency;if(!r)return void this._e(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this._e(\"Could not load surveys script\",e):this.ge(t.generateSurveys,i)}))}catch(t){throw this._e(\"Error initializing surveys\",t),t}finally{this.ce=!1}}}else Jn.error(\"PostHog Extensions not found.\")}}ge(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new so(this._instance),Jn.info(\"Surveys loaded successfully\"),this.me({isLoaded:!0})}_e(t,i){Jn.error(t,i),this.me({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.fe.push(t),this._surveyManager&&this.me({isLoaded:!0}),()=>{this.fe=this.fe.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Jn.info(\"Disabled. Not loading surveys.\"),t([]);var e,r=this._instance.get_property(le);if(r&&!i)return t(r,{isLoaded:!0});\"undefined\"!=typeof Promise&&this.pe?this.pe.then((i=>{var{surveys:e,context:r}=i;return t(e,r)})):(\"undefined\"!=typeof Promise&&(this.pe=new Promise((t=>{e=t}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/surveys/?token=\"+this._instance.config.token),method:\"GET\",timeout:this._instance.config.surveys_request_timeout_ms,callback:i=>{var r;this.pe=null;var s=i.statusCode;if(200!==s||!i.json){var n=\"Surveys API could not be loaded, status: \"+s;Jn.error(n);var o={isLoaded:!1,error:n};return t([],o),void(null==e||e({surveys:[],context:o}))}var a,l=i.json.surveys||[],u=l.filter((t=>function(t){return!(!t.start_date||t.end_date)}(t)&&(function(t){var i;return!(null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||!i.length)}(t)||function(t){var i;return!(null==(i=t.conditions)||null==(i=i.actions)||null==(i=i.values)||!i.length)}(t))));u.length>0&&(null==(a=this._surveyEventReceiver)||a.register(u));null==(r=this._instance.persistence)||r.register({[le]:l});var h={isLoaded:!0};t(l,h),null==e||e({surveys:l,context:h})}}))}me(t){for(var i of this.fe)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Jn.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!j(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Jn.warn(\"init was not called\")}ye(t){var i=null;return this.getSurveys((e=>{var r;i=null!==(r=e.find((i=>i.id===t)))&&void 0!==r?r:null})),i}be(t){if(j(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this.ye(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(j(this._surveyManager))return Jn.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.be(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return j(this._surveyManager)?(Jn.warn(\"init was not called\"),Promise.resolve({visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"})):new Promise((e=>{this.getSurveys((i=>{var r,s=null!==(r=i.find((i=>i.id===t)))&&void 0!==r?r:null;if(s){var n=this.be(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i,e){var r;if(j(this._surveyManager))Jn.warn(\"init was not called\");else{var s=\"string\"==typeof t?this.ye(t):t;if(null!=s&&s.id)if(Qn.includes(s.type)){var n=null==o?void 0:o.querySelector(i);if(n)return null!=(r=s.appearance)&&r.surveyPopupDelaySeconds?(Jn.info(\"Rendering survey \"+s.id+\" with delay of \"+s.appearance.surveyPopupDelaySeconds+\" seconds\"),void setTimeout((()=>{var t,i;Jn.info(\"Rendering survey \"+s.id+\" with delay of \"+(null==(t=s.appearance)?void 0:t.surveyPopupDelaySeconds)+\" seconds\"),null==(i=this._surveyManager)||i.renderSurvey(s,n,e),Jn.info(\"Survey \"+s.id+\" rendered\")}),1e3*s.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(s,n,e);Jn.warn(\"Survey element not found\")}else Jn.warn(\"Surveys of type \"+s.type+\" cannot be rendered in the app\");else Jn.warn(\"Survey not found\")}}displaySurvey(t,i){var e;if(j(this._surveyManager))Jn.warn(\"init was not called\");else{var r=this.ye(t);if(r){var s=r;if(null!=(e=r.appearance)&&e.surveyPopupDelaySeconds&&i.ignoreDelay&&(s=g({},r,{appearance:g({},r.appearance,{surveyPopupDelaySeconds:0})})),!1===i.ignoreConditions){var n=this.canRenderSurvey(r);if(!n.visible)return void Jn.warn(\"Survey is not eligible to be displayed: \",n.disabledReason)}i.displayType!==Vn.Inline?this._surveyManager.handlePopoverSurvey(s,i.properties):this.renderSurvey(s,i.selector,i.properties)}else Jn.warn(\"Survey not found\")}}cancelPendingSurvey(t){j(this._surveyManager)?Jn.warn(\"init was not called\"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;null==(t=this._surveyManager)||t.handlePageUnload()}}var oo=Si(\"[Conversations]\");class ao{constructor(t){this.we=void 0,this._conversationsManager=null,this.xe=!1,this.Ee=null,this._instance=t}onRemoteConfig(t){if(!this._instance.config.disable_conversations){var i=t.conversations;j(i)||(U(i)?this.we=i:(this.we=i.enabled,this.Ee=i),this.loadIfEnabled())}}reset(){var t;null==(t=this._conversationsManager)||t.reset(),this._conversationsManager=null,this.we=void 0,this.Ee=null}loadIfEnabled(){if(!this._conversationsManager&&!this.xe&&!(this._instance.config.disable_conversations||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=null==v?void 0:v.__PosthogExtensions__;if(t&&!M(this.we)&&this.we)if(this.Ee&&this.Ee.token){this.xe=!0;try{var i=t.initConversations;if(i)return this.$e(i),void(this.xe=!1);var e=t.loadExternalDependency;if(!e)return void this.Se(\"PostHog loadExternalDependency extension not found.\");e(this._instance,\"conversations\",(i=>{i||!t.initConversations?this.Se(\"Could not load conversations script\",i):this.$e(t.initConversations),this.xe=!1}))}catch(t){this.Se(\"Error initializing conversations\",t),this.xe=!1}}else oo.error(\"Conversations enabled but missing token in remote config.\")}}$e(t){if(this.Ee)try{this._conversationsManager=t(this.Ee,this._instance),oo.info(\"Conversations loaded successfully\")}catch(t){this.Se(\"Error completing conversations initialization\",t)}else oo.error(\"Cannot complete initialization: remote config is null\")}Se(t,i){oo.error(t,i),this._conversationsManager=null,this.xe=!1}show(){this._conversationsManager?this._conversationsManager.show():oo.warn(\"Conversations not loaded yet.\")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return!0===this.we&&!D(this._conversationsManager)}isVisible(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.isVisible())&&void 0!==t&&t}sendMessage(t,i,e){var r=this;return p((function*(){return r._conversationsManager?r._conversationsManager.sendMessage(t,i,e):(oo.warn(\"Conversations not available yet.\"),null)}))()}getMessages(t,i){var e=this;return p((function*(){return e._conversationsManager?e._conversationsManager.getMessages(t,i):(oo.warn(\"Conversations not available yet.\"),null)}))()}markAsRead(t){var i=this;return p((function*(){return i._conversationsManager?i._conversationsManager.markAsRead(t):(oo.warn(\"Conversations not available yet.\"),null)}))()}getTickets(t){var i=this;return p((function*(){return i._conversationsManager?i._conversationsManager.getTickets(t):(oo.warn(\"Conversations not available yet.\"),null)}))()}getCurrentTicketId(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.getCurrentTicketId())&&void 0!==t?t:null}getWidgetSessionId(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.getWidgetSessionId())&&void 0!==t?t:null}}class lo{constructor(t){var i;this.ke=!1,this.Pe=!1,this._instance=t,this._instance&&null!=(i=this._instance.config.logs)&&i.captureConsoleLogs&&(this.ke=!0)}onRemoteConfig(t){var i,e=null==(i=t.logs)?void 0:i.captureConsoleLogs;!j(e)&&e&&(this.ke=!0,this.loadIfEnabled())}reset(){}loadIfEnabled(){if(this.ke&&!this.Pe){var t=Si(\"[logs]\"),i=null==v?void 0:v.__PosthogExtensions__;if(i){var e=i.loadExternalDependency;e?e(this._instance,\"logs\",(e=>{var r;e||null==(r=i.logs)||!r.initializeLogs?t.error(\"Could not load logs script\",e):(i.logs.initializeLogs(this._instance),this.Pe=!0)})):t.error(\"PostHog loadExternalDependency extension not found.\")}else t.error(\"PostHog Extensions not found.\")}}}var uo=Si(\"[RateLimiter]\");class ho{constructor(t){var i,e;this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=t=>{var i=t.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((t=>{uo.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void uo.warn('could not rate limit - continuing. Error: \"'+(null==t?void 0:t.message)+'\"',{text:i})}},this.instance=t,this.captureEventsPerSecond=(null==(i=t.config.rate_limiting)?void 0:i.events_per_second)||10,this.captureEventsBurstLimit=Math.max((null==(e=t.config.rate_limiting)?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond),this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}clientRateLimitContext(t){var i,e,r;void 0===t&&(t=!1);var s=(new Date).getTime(),n=null!==(i=null==(e=this.instance.persistence)?void 0:e.get_property(ve))&&void 0!==i?i:{tokens:this.captureEventsBurstLimit,last:s};n.tokens+=(s-n.last)/1e3*this.captureEventsPerSecond,n.last=s,n.tokens>this.captureEventsBurstLimit&&(n.tokens=this.captureEventsBurstLimit);var o=n.tokens<1;return o||t||(n.tokens=Math.max(0,n.tokens-1)),!o||this.lastEventRateLimited||t||this.instance.capture(\"$$client_ingestion_warning\",{$$client_ingestion_warning_message:\"posthog-js client rate limited. Config is set to \"+this.captureEventsPerSecond+\" events per second and \"+this.captureEventsBurstLimit+\" events burst limit.\"},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=o,null==(r=this.instance.persistence)||r.set_property(ve,n),{isRateLimited:o,remainingTokens:n.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var vo=Si(\"[RemoteConfig]\");class co{constructor(t){this._instance=t}get remoteConfig(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.config}Te(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.loadExternalDependency?null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"remote-config\",(()=>t(this.remoteConfig))):(vo.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}Ie(t){this._instance._send_request({method:\"GET\",url:this._instance.requestRouter.endpointFor(\"assets\",\"/array/\"+this._instance.config.token+\"/config\"),callback:i=>{t(i.json)}})}load(){try{if(this.remoteConfig)return vo.info(\"Using preloaded remote config\",this.remoteConfig),void this.yi(this.remoteConfig);if(this._instance.O())return void vo.warn(\"Remote config is disabled. Falling back to local config.\");this.Te((t=>{if(!t)return vo.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.Ie((t=>{this.yi(t)}));this.yi(t)}))}catch(t){vo.error(\"Error loading remote config\",t)}}yi(t){t?this._instance.config.__preview_remote_config?(this._instance.yi(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):vo.info(\"__preview_remote_config is disabled. Logging config instead\",t):vo.error(\"Failed to fetch remote config from PostHog.\")}}var fo=3e3;class po{constructor(t,i){this.Ce=!0,this.Re=[],this.Fe=K((null==i?void 0:i.flush_interval_ms)||fo,250,5e3,$i.createLogger(\"flush interval\"),fo),this.Me=t}enqueue(t){this.Re.push(t),this.Oe||this.Ae()}unload(){this.De();var t=this.Re.length>0?this.je():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.Me(g({},t,{transport:\"sendBeacon\"}))}))}enable(){this.Ce=!1,this.Ae()}Ae(){var t=this;this.Ce||(this.Oe=setTimeout((()=>{if(this.De(),this.Re.length>0){var i=this.je(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&I(e.data)&&Ci(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.Me(e)};for(var r in i)e()}}),this.Fe))}De(){clearTimeout(this.Oe),this.Oe=void 0}je(){var t={};return Ci(this.Re,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;M(t[s])&&(t[s]=g({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.Re=[],t}}var go=[\"retriesPerformedSoFar\"];class _o{constructor(i){this.Le=!1,this.Ne=3e3,this.Re=[],this._instance=i,this.Re=[],this.Ue=!0,!M(t)&&\"onLine\"in t.navigator&&(this.Ue=t.navigator.onLine,this.ze=()=>{this.Ue=!0,this.Lt()},this.He=()=>{this.Ue=!1},zi(t,\"online\",this.ze),zi(t,\"offline\",this.He))}get length(){return this.Re.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=_(t,go);N(i)&&(e.url=un(e.url,{retry_count:i})),this._instance._send_request(g({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this.Be(g({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}Be(t){var i=t.retriesPerformedSoFar||0;t.retriesPerformedSoFar=i+1;var e=function(t){var i=3e3*Math.pow(2,t),e=i/2,r=Math.min(18e5,i),s=(Math.random()-.5)*(r-e);return Math.ceil(r+s)}(i),r=Date.now()+e;this.Re.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),$i.warn(s),this.Le||(this.Le=!0,this.qe())}qe(){if(this.We&&clearTimeout(this.We),0===this.Re.length)return this.Le=!1,void(this.We=void 0);this.We=setTimeout((()=>{this.Ue&&this.Re.length>0&&this.Lt(),this.qe()}),this.Ne)}Lt(){var t=Date.now(),i=[],e=this.Re.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.Re=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:i}of(this.We&&(clearTimeout(this.We),this.We=void 0),this.Le=!1,M(t)||(this.ze&&(t.removeEventListener(\"online\",this.ze),this.ze=void 0),this.He&&(t.removeEventListener(\"offline\",this.He),this.He=void 0)),this.Re))try{this._instance._send_request(g({},i,{transport:\"sendBeacon\"}))}catch(t){$i.error(t)}this.Re=[]}}class mo{constructor(t){this.Ge=()=>{var t,i,e,r;this.Ve||(this.Ve={});var s=this.scrollElement(),n=this.scrollY(),o=s?Math.max(0,s.scrollHeight-s.clientHeight):0,a=n+((null==s?void 0:s.clientHeight)||0),l=(null==s?void 0:s.scrollHeight)||0;this.Ve.lastScrollY=Math.ceil(n),this.Ve.maxScrollY=Math.max(n,null!==(t=this.Ve.maxScrollY)&&void 0!==t?t:0),this.Ve.maxScrollHeight=Math.max(o,null!==(i=this.Ve.maxScrollHeight)&&void 0!==i?i:0),this.Ve.lastContentY=a,this.Ve.maxContentY=Math.max(a,null!==(e=this.Ve.maxContentY)&&void 0!==e?e:0),this.Ve.maxContentHeight=Math.max(l,null!==(r=this.Ve.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.Ve}resetContext(){var t=this.Ve;return setTimeout(this.Ge,0),t}startMeasuringScrollPosition(){zi(t,\"scroll\",this.Ge,{capture:!0}),zi(t,\"scrollend\",this.Ge,{capture:!0}),zi(t,\"resize\",this.Ge)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=I(this._instance.config.scroll_root_selector)?this._instance.config.scroll_root_selector:[this._instance.config.scroll_root_selector];for(var e of i){var r=null==t?void 0:t.document.querySelector(e);if(r)return r}}scrollY(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollTop||0}return t&&(t.scrollY||t.pageYOffset||t.document.documentElement.scrollTop)||0}scrollX(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollLeft||0}return t&&(t.scrollX||t.pageXOffset||t.document.documentElement.scrollLeft)||0}}var yo=t=>ds(null==t?void 0:t.config.mask_personal_data_properties,null==t?void 0:t.config.custom_personal_data_properties);class bo{constructor(t,i,e,r){this.Je=t=>{var i=this.Ke();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Ye(this._instance)};this.Xe.register({[de]:e})}},this._instance=t,this.Qe=i,this.Xe=e,this.Ye=r||yo,this.Qe.onSessionId(this.Je)}Ke(){return this.Xe.props[de]}getSetOnceProps(){var t,i=null==(t=this.Ke())?void 0:t.props;return i?\"r\"in i?vs(i):{$referring_domain:i.referringDomain,$pathname:i.initialPathName,utm_source:i.utm_source,utm_campaign:i.utm_campaign,utm_medium:i.utm_medium,utm_content:i.utm_content,utm_term:i.utm_term}:{}}getSessionProps(){var t={};return Ci(Di(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+E(e)]=i})),t}}var wo=Si(\"[SessionId]\");class xo{on(t,i){return this.Ze.on(t,i)}constructor(t,i,e){var r;if(this.tr=[],this.ir=void 0,this.Ze=new to,this.er=(t,i)=>!(!N(t)||!N(i))&&Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(\"always\"===t.config.cookieless_mode)throw new Error('SessionIdManager cannot be used with cookieless_mode=\"always\"');this.R=t.config,this.Xe=t.persistence,this.rr=void 0,this.sr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.nr=i||br,this.ar=e||br;var s=this.R.persistence_name||this.R.token,n=this.R.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*K(n,60,36e3,wo.createLogger(\"session_idle_timeout_seconds\"),1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.lr(),this.ur=\"ph_\"+s+\"_window_id\",this.hr=\"ph_\"+s+\"_primary_window_exists\",this.dr()){var o=Fr.W(this.ur),a=Fr.W(this.hr);o&&!a?this.rr=o:Fr.V(this.ur),Fr.G(this.hr,!0)}if(null!=(r=this.R.bootstrap)&&r.sessionID)try{var l=(t=>{var i=t.replace(/-/g,\"\");if(32!==i.length)throw new Error(\"Not a valid UUID\");if(\"7\"!==i[12])throw new Error(\"Not a UUIDv7\");return parseInt(i.substring(0,12),16)})(this.R.bootstrap.sessionID);this.vr(this.R.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){wo.error(\"Invalid sessionID in bootstrap\",t)}this.cr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return M(this.tr)&&(this.tr=[]),this.tr.push(t),this.sr&&t(this.sr,this.rr),()=>{this.tr=this.tr.filter((i=>i!==t))}}dr(){return\"memory\"!==this.R.persistence&&!this.Xe.Si&&Fr.H()}pr(t){t!==this.rr&&(this.rr=t,this.dr()&&Fr.G(this.ur,t))}gr(){return this.rr?this.rr:this.dr()?Fr.W(this.ur):null}vr(t,i,e){t===this.sr&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.sr=t,this.Xe.register({[ie]:[i,t,e]}))}_r(){var t=this.Xe.props[ie];return I(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.vr(null,null,null)}destroy(){clearTimeout(this.mr),this.mr=void 0,this.ir&&t&&(t.removeEventListener(\"beforeunload\",this.ir,{capture:!1}),this.ir=void 0),this.tr=[]}cr(){this.ir=()=>{this.dr()&&Fr.V(this.hr)},zi(t,\"beforeunload\",this.ir,{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),\"always\"===this.R.cookieless_mode)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode=\"always\"');var e=i||(new Date).getTime(),[r,s,n]=this._r(),o=this.gr(),a=N(n)&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!u&&!t&&this.er(e,r);u||h||a?(s=this.nr(),o=this.ar(),wo.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.ar(),l=!0);var d=!!N(r)&&t&&!a?r:e,v=!N(n)?(new Date).getTime():n;return this.pr(o),this.vr(s,d,v),t||this.lr(),l&&this.tr.forEach((t=>t(s,o,l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0))),{sessionId:s,windowId:o,sessionStartTimestamp:v,changeReason:l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0,lastActivityTimestamp:r}}lr(){clearTimeout(this.mr),this.mr=setTimeout((()=>{var[t]=this._r();if(this.er((new Date).getTime(),t)){var i=this.sr;this.resetSessionId(),this.Ze.emit(\"forcedIdleReset\",{idleSessionId:i})}}),1.1*this.sessionTimeoutMs)}}var Eo=[\"$set_once\",\"$set\"],$o=Si(\"[SiteApps]\");class So{constructor(t){this._instance=t,this.yr=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}br(t,i){if(i){var e=this.globalsForEvent(i);this.yr.push(e),this.yr.length>1e3&&(this.yr=this.yr.slice(10))}}get siteAppLoaders(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.siteApps}init(){if(this.isEnabled){var t=this._instance.Hi(this.br.bind(this));this.wr=()=>{t(),this.yr=[],this.wr=void 0}}}globalsForEvent(t){var i,e,r,s,n,o,a;if(!t)throw new Error(\"Event payload is required\");var l={},u=this._instance.get_property(\"$groups\")||[],h=this._instance.get_property(\"$stored_group_properties\")||{};for(var[d,v]of Object.entries(h))l[d]={id:u[d],type:d,properties:v};var{$set_once:c,$set:f}=t;return{event:g({},_(t,Eo),{properties:g({},t.properties,f?{$set:g({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:g({},null!==(r=null==(s=t.properties)?void 0:s.$set_once)&&void 0!==r?r:{},c)}:{}),elements_chain:null!==(n=null==(o=t.properties)?void 0:o.$elements_chain)&&void 0!==n?n:\"\",distinct_id:null==(a=t.properties)?void 0:a.distinct_id}),person:{properties:this._instance.get_property(\"$stored_person_properties\")},groups:l}}setupSiteApp(t){var i=this.apps[t.id],e=()=>{var e;(!i.errored&&this.yr.length&&($o.info(\"Processing \"+this.yr.length+\" events for site app with id \"+t.id),this.yr.forEach((t=>null==i.processEvent?void 0:i.processEvent(t))),i.processedBuffer=!0),Object.values(this.apps).every((t=>t.processedBuffer||t.errored)))&&(null==(e=this.wr)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,$o.info(\"Site app with id \"+t.id+\" \"+(s?\"loaded\":\"errored\")),r&&e()};try{var{processEvent:n}=t.init({posthog:this._instance,callback:t=>{s(t)}});n&&(i.processEvent=n),r=!0}catch(i){$o.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){$o.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}Er(){var t=this.siteAppLoaders||[];for(var i of t)this.apps[i.id]={id:i.id,loaded:!1,errored:!1,processedBuffer:!1};for(var e of t)this.setupSiteApp(e)}$r(t){if(0!==Object.keys(this.apps).length){var i=this.globalsForEvent(t);for(var e of Object.values(this.apps))try{null==e.processEvent||e.processEvent(i)}catch(i){$o.error(\"Error while processing event \"+t.event+\" for site app \"+e.id,i)}}}onRemoteConfig(t){var i,e,r,s=this;if(null!=(i=this.siteAppLoaders)&&i.length)return this.isEnabled?(this.Er(),void this._instance.on(\"eventCaptured\",(t=>this.$r(t)))):void $o.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.wr)||e.call(this),null!=(r=t.siteApps)&&r.length)if(this.isEnabled){var n=function(t){var i;v[\"__$$ph_site_app_\"+t]=s._instance,null==(i=v.__PosthogExtensions__)||null==i.loadSiteApp||i.loadSiteApp(s._instance,a,(i=>{if(i)return $o.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else $o.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var ko=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&y(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>y(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},Po=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),To=\"i.posthog.com\";class Io{constructor(t){this.Sr={},this.instance=t}get apiHost(){var t=this.instance.config.api_host.trim().replace(/\\/$/,\"\");return\"https://app.posthog.com\"===t?\"https://us.i.posthog.com\":t}get flagsApiHost(){var t=this.instance.config.flags_api_host;return t?t.trim().replace(/\\/$/,\"\"):this.apiHost}get uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+To,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.Sr[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Sr[this.apiHost]=Po.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Sr[this.apiHost]=Po.EU:this.Sr[this.apiHost]=Po.CUSTOM),this.Sr[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(\"flags\"===t)return this.flagsApiHost+i;if(this.region===Po.CUSTOM)return this.apiHost+i;var e=To+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var Co={icontains:(i,e)=>!!t&&e.href.toLowerCase().indexOf(i.toLowerCase())>-1,not_icontains:(i,e)=>!!t&&-1===e.href.toLowerCase().indexOf(i.toLowerCase()),regex:(i,e)=>!!t&&cn(e.href,i),not_regex:(i,e)=>!!t&&!cn(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class Ro{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{Ro.kr(\"retrieved web experiments from the server\"),i.Pr=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.Pr)Ro.kr(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.Pr)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);O(r)&&t.variants[r]&&i.Tr(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];Ro.Ir(n)&&i.Tr(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())Ro.kr(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(j(this.Pr))return this.Pr=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Ro.kr(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.Pr&&null!=(i=this.Pr)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.Pr)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.Tr(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=Ro.getWindowLocation();if(null!=t&&t.search){var i=sr(null==t?void 0:t.search,\"__experiment_id\"),e=sr(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(Ro.kr(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.Cr(parseInt(i),e,t)}),!1,!0))}}loadIfEnabled(){this._instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(t,i,e){if(this._instance.config.disable_web_experiments&&!e)return t([]);var r=this._instance.get_property(\"$web_experiments\");if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/web_experiments/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{if(200!==i.statusCode||!i.json)return t([]);var e=i.json.experiments||[];return t(e)}})}Cr(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(Ro.kr(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.Tr(r[0].name,i,r[0].variants[i].transforms))}static Ir(t){return!j(t.conditions)&&(Ro.Rr(t)&&Ro.Fr(t))}static Rr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=Ro.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||Co[null!==(r=null==(s=t.conditions)?void 0:s.urlMatchType)&&void 0!==r?r:\"icontains\"](t.conditions.url,n))}static getWindowLocation(){return null==t?void 0:t.location}static Fr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.utm))return!0;var e=os();if(e.utm_source){var r,s,n,o,a,l,u,h,d=null==(r=t.conditions)||null==(r=r.utm)||!r.utm_campaign||(null==(s=t.conditions)||null==(s=s.utm)?void 0:s.utm_campaign)==e.utm_campaign,v=null==(n=t.conditions)||null==(n=n.utm)||!n.utm_source||(null==(o=t.conditions)||null==(o=o.utm)?void 0:o.utm_source)==e.utm_source,c=null==(a=t.conditions)||null==(a=a.utm)||!a.utm_medium||(null==(l=t.conditions)||null==(l=l.utm)?void 0:l.utm_medium)==e.utm_medium,f=null==(u=t.conditions)||null==(u=u.utm)||!u.utm_term||(null==(h=t.conditions)||null==(h=h.utm)?void 0:h.utm_term)==e.utm_term;return d&&c&&f&&v}return!1}static kr(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];$i.info(\"[WebExperiments] \"+t,e)}Tr(t,i,e){this._is_bot()?Ro.kr(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;Ro.kr(\"applying transform of variant \"+i+\" for experiment \"+t+\" \",e);var s=null==(r=document)?void 0:r.querySelectorAll(e.selector);null==s||s.forEach((t=>{var i=t;e.html&&(i.innerHTML=e.html),e.css&&i.setAttribute(\"style\",e.css)}))}})):Ro.kr(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?ko(n,this._instance.config.custom_blocked_useragents):void 0}}var Fo=Si(\"[PostHog ExternalIntegrations]\"),Mo={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class Oo{constructor(t){this._instance=t}it(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return Fo.error(\"failed to load script\",t);i()}))}startIfEnabledOrStop(){var t=this,i=function(i){var e,s,n;(!r||null!=(e=v.__PosthogExtensions__)&&null!=(e=e.integrations)&&e[i]||t.it(Mo[i],(()=>{var e;null==(e=v.__PosthogExtensions__)||null==(e=e.integrations)||null==(e=e[i])||e.start(t._instance)})),!r&&null!=(s=v.__PosthogExtensions__)&&null!=(s=s.integrations)&&s[i])&&(null==(n=v.__PosthogExtensions__)||null==(n=n.integrations)||null==(n=n[i])||n.stop())};for(var[e,r]of Object.entries(null!==(s=this._instance.config.integrations)&&void 0!==s?s:{})){var s;i(e)}}}var Ao=\"[SessionRecording]\",Do=Si(Ao);class jo{get started(){var t;return!(null==(t=this.Mr)||!t.isStarted)}get status(){return this.Mr?this.Mr.status:this.Or&&!this.Ar?\"disabled\":\"lazy_loading\"}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Or=!1,this.Dr=void 0,this._instance=t,!this._instance.sessionManager)throw Do.error(\"started without valid sessionManager\"),new Error(Ao+\" started without valid sessionManager. This is a bug.\");if(\"always\"===this._instance.config.cookieless_mode)throw new Error(Ao+' cannot be used with cookieless_mode=\"always\"')}get Ar(){var i,e=!(null==(i=this._instance.get_property(te))||!i.enabled),r=!this._instance.config.disable_session_recording,s=this._instance.config.disable_session_recording||this._instance.consent.isOptedOut();return t&&e&&r&&!s}startIfEnabledOrStop(t){var i;if(!this.Ar||null==(i=this.Mr)||!i.isStarted){var e=!M(Object.assign)&&!M(Array.from);this.Ar&&e?(this.jr(t),Do.info(\"starting\")):this.stopRecording()}}jr(t){var i,e,r;this.Ar&&(null!=v&&null!=(i=v.__PosthogExtensions__)&&null!=(i=i.rrweb)&&i.record&&null!=(e=v.__PosthogExtensions__)&&e.initSessionRecording?this.Lr(t):null==(r=v.__PosthogExtensions__)||null==r.loadExternalDependency||r.loadExternalDependency(this._instance,this.Nr,(i=>{if(i)return Do.error(\"could not load recorder\",i);this.Lr(t)})))}stopRecording(){var t,i;null==(t=this.Dr)||t.call(this),this.Dr=void 0,null==(i=this.Mr)||i.stop()}Ur(){var t;null==(t=this._instance.persistence)||t.unregister(ee)}zr(t){if(this._instance.persistence){var i,e,r=this._instance.persistence,s=()=>{var i=!1===t.sessionRecording?void 0:t.sessionRecording,e=null==i?void 0:i.sampleRate,s=j(e)?null:parseFloat(e);j(s)&&this.Ur();var n=null==i?void 0:i.minimumDurationMilliseconds;r.register({[te]:g({enabled:!!i},i,{networkPayloadCapture:g({capturePerformance:t.capturePerformance},null==i?void 0:i.networkPayloadCapture),canvasRecording:{enabled:null==i?void 0:i.recordCanvas,fps:null==i?void 0:i.canvasFps,quality:null==i?void 0:i.canvasQuality},sampleRate:s,minimumDurationMilliseconds:M(n)?null:n,endpoint:null==i?void 0:i.endpoint,triggerMatchType:null==i?void 0:i.triggerMatchType,masking:null==i?void 0:i.masking,urlTriggers:null==i?void 0:i.urlTriggers})})};s(),null==(i=this.Dr)||i.call(this),this.Dr=null==(e=this._instance.sessionManager)?void 0:e.onSessionId(s)}}onRemoteConfig(t){\"sessionRecording\"in t?!1!==t.sessionRecording?(this.zr(t),this.Or=!0,this.startIfEnabledOrStop()):this.Or=!0:Do.info(\"skipping remote config with no sessionRecording\",t)}log(t,i){var e;void 0===i&&(i=\"log\"),null!=(e=this.Mr)&&e.log?this.Mr.log(t,i):Do.warn(\"log called before recorder was ready\")}get Nr(){var t,i,e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.get_property(te);return(null==e||null==(i=e.scriptConfig)?void 0:i.script)||\"lazy-recorder\"}Lr(t){var i,e;if(null==(i=v.__PosthogExtensions__)||!i.initSessionRecording)throw Error(\"Called on script loaded before session recording is available\");this.Mr||(this.Mr=null==(e=v.__PosthogExtensions__)?void 0:e.initSessionRecording(this._instance),this.Mr._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture);this.Mr.start(t)}onRRwebEmit(t){var i;null==(i=this.Mr)||null==i.onRRwebEmit||i.onRRwebEmit(t)}overrideLinkedFlag(){var t,i;this.Mr||(null==(i=this._instance.persistence)||i.register({$replay_override_linked_flag:!0}));null==(t=this.Mr)||t.overrideLinkedFlag()}overrideSampling(){var t,i;this.Mr||(null==(i=this._instance.persistence)||i.register({$replay_override_sampling:!0}));null==(t=this.Mr)||t.overrideSampling()}overrideTrigger(t){var i,e;this.Mr||(null==(e=this._instance.persistence)||e.register({[\"url\"===t?\"$replay_override_url_trigger\":\"$replay_override_event_trigger\"]:!0}));null==(i=this.Mr)||i.overrideTrigger(t)}get sdkDebugProperties(){var t;return(null==(t=this.Mr)?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,i){var e;return!(null==(e=this.Mr)||!e.tryAddCustomEvent(t,i))}}var Lo={},No=()=>{},Uo=\"posthog\",zo=!an&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),Ho=i=>{var e;return g({api_host:\"https://us.i.posthog.com\",flags_api_host:null,ui_host:null,token:\"\",autocapture:!0,cross_subdomain_cookie:Ni(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",cookie_persisted_properties:[],loaded:No,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",__preview_deferred_init_extensions:!1,debug:a&&O(null==a?void 0:a.search)&&-1!==a.search.indexOf(\"__posthog_debug=true\")||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!0,disable_external_dependency_loading:!1,enable_recording_console_log:void 0,secure_cookie:\"https:\"===(null==t||null==(e=t.location)?void 0:e.protocol),ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:\"localStorage\",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error:t=>{var i=\"Bad HTTP status: \"+t.statusCode+\" \"+t.text;$i.error(i)},get_device_id:t=>t,capture_performance:void 0,name:\"posthog\",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:\"identified_only\",before_send:void 0,request_queue_config:{flush_interval_ms:fo},error_tracking:{},_onCapture:No,__preview_eager_load_replay:!1},(t=>({rageclick:!(t&&t>=\"2025-11-30\")||{content_ignorelist:!0},capture_pageview:!(t&&t>=\"2025-05-24\")||\"history_change\",session_recording:t&&t>=\"2025-11-30\"?{strictMinimumDuration:!0}:{}}))(i))},Bo=t=>{var i={};M(t.process_person)||(i.person_profiles=t.process_person),M(t.xhr_headers)||(i.request_headers=t.xhr_headers),M(t.cookie_name)||(i.persistence_name=t.cookie_name),M(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),M(t.store_google)||(i.save_campaign_params=t.store_google),M(t.verbose)||(i.debug=t.verbose);var e=Ri({},i,t);return I(t.property_blacklist)&&(M(t.property_denylist)?e.property_denylist=t.property_blacklist:I(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:$i.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class qo{constructor(){this.__forceAllowLocalhost=!1}get Hr(){return this.__forceAllowLocalhost}set Hr(t){$i.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class Wo{get decideEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}get flagsEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}constructor(){this.webPerformance=new qo,this.Br=!1,this.version=c.LIB_VERSION,this.qr=new to,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=Ho(),this.SentryIntegration=Vr,this.sentryIntegration=t=>function(t,i){var e=Gr(t,i);return{name:Wr,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.Wr=!1,this.Gr=null,this.Vr=null,this.Jr=null,this.featureFlags=new Rn(this),this.toolbar=new Qr(this),this.scrollManager=new mo(this),this.pageViewManager=new xs(this),this.surveys=new no(this),this.conversations=new ao(this),this.logs=new lo(this),this.experiments=new Ro(this),this.exceptions=new yn(this),this.rateLimiter=new ho(this),this.requestRouter=new Io(this),this.consent=new Or(this),this.externalIntegrations=new Oo(this),this.people={set:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>$i.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==Uo){var r,s=null!==(r=Lo[e])&&void 0!==r?r:new Wo;return s._init(t,i,e),Lo[e]=s,Lo[Uo][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s;if(void 0===e&&(e={}),M(i)||A(i))return $i.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"),this;if(this.__loaded)return console.warn(\"[PostHog.js]\",\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},e.debug=this.Kr(e.debug),this.Yr=e,this.Xr=[],e.person_profiles&&(this.Vr=e.person_profiles),this.set_config(Ri({},Ho(e.defaults),Bo(e),{name:r,token:i})),this.config.on_xhr_error&&$i.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:$s.GZipJS;var n=this.Qr();this.persistence=new Mn(this.config,n),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Mn(g({},this.config,{persistence:\"sessionStorage\"}),n);var o=g({},this.persistence.props),a=g({},this.sessionPersistence.props);this.register({$initialization_time:(new Date).toISOString()}),this.Zr=new po((t=>this.ts(t)),this.config.request_queue_config),this.es=new _o(this),this.__request_queue=[];var l=\"always\"===this.config.cookieless_mode||\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut();if(l||(this.sessionManager=new xo(this),this.sessionPropsManager=new bo(this,this.sessionManager,this.persistence)),this.config.__preview_deferred_init_extensions?($i.info(\"Deferring extension initialization to improve startup performance\"),setTimeout((()=>{this.rs(l)}),0)):($i.info(\"Initializing extensions synchronously\"),this.rs(l)),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&$i.info(\"Starting in debug mode\",{this:this,config:e,thisC:g({},this.config),p:o,s:a}),void 0!==(null==(s=e.bootstrap)?void 0:s.distinctID)){var u,h,d=this.config.get_device_id(br()),v=null!=(u=e.bootstrap)&&u.isIdentifiedID?d:e.bootstrap.distinctID;this.persistence.set_property(he,null!=(h=e.bootstrap)&&h.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:v})}if(this.ss()){var f,p,_=Object.keys((null==(f=e.bootstrap)?void 0:f.featureFlags)||{}).filter((t=>{var i;return!(null==(i=e.bootstrap)||null==(i=i.featureFlags)||!i[t])})).reduce(((t,i)=>{var r;return t[i]=(null==(r=e.bootstrap)||null==(r=r.featureFlags)?void 0:r[i])||!1,t}),{}),m=Object.keys((null==(p=e.bootstrap)?void 0:p.featureFlagPayloads)||{}).filter((t=>_[t])).reduce(((t,i)=>{var r,s;null!=(r=e.bootstrap)&&null!=(r=r.featureFlagPayloads)&&r[i]&&(t[i]=null==(s=e.bootstrap)||null==(s=s.featureFlagPayloads)?void 0:s[i]);return t}),{});this.featureFlags.receivedFeatureFlags({featureFlags:_,featureFlagPayloads:m})}if(l)this.register_once({distinct_id:me,$device_id:null},\"\");else if(!this.get_distinct_id()){var y=this.config.get_device_id(br());this.register_once({distinct_id:y,$device_id:y},\"\"),this.persistence.set_property(he,\"anonymous\")}return zi(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?qr(this,(()=>this.ns())):this.ns(),C(this.config._onCapture)&&this.config._onCapture!==No&&($i.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&$i.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or \"Discard IP data\" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this}rs(t){var i=performance.now();this.historyAutocapture=new Hr(this),this.historyAutocapture.startIfEnabled();var e=[];e.push((()=>{new ts(this).startIfEnabledOrStop()})),e.push((()=>{var t;this.siteApps=new So(this),null==(t=this.siteApps)||t.init()})),t||e.push((()=>{this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop()})),this.config.disable_scroll_properties||e.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),e.push((()=>{this.autocapture=new cr(this),this.autocapture.startIfEnabled()})),e.push((()=>{this.surveys.loadIfEnabled()})),e.push((()=>{this.logs.loadIfEnabled()})),e.push((()=>{this.conversations.loadIfEnabled()})),e.push((()=>{this.productTours=new Dn(this),this.productTours.loadIfEnabled()})),e.push((()=>{this.heatmaps=new ws(this),this.heatmaps.startIfEnabled()})),e.push((()=>{this.webVitalsAutocapture=new ms(this)})),e.push((()=>{this.exceptionObserver=new Ur(this),this.exceptionObserver.startIfEnabledOrStop()})),e.push((()=>{this.deadClicksAutocapture=new Lr(this,jr),this.deadClicksAutocapture.startIfEnabled()})),e.push((()=>{if(this.os){var t=this.os;this.os=void 0,this.yi(t)}})),this.ls(e,i)}ls(t,i){for(;t.length>0;){if(this.config.__preview_deferred_init_extensions)if(performance.now()-i>=30&&t.length>0)return void setTimeout((()=>{this.ls(t,i)}),0);var e=t.shift();if(e)try{e()}catch(t){$i.error(\"Error initializing extension:\",t)}}var r=Math.round(performance.now()-i);this.register_for_session({$sdk_debug_extensions_init_method:this.config.__preview_deferred_init_extensions?\"deferred\":\"synchronous\",$sdk_debug_extensions_init_time_ms:r}),this.config.__preview_deferred_init_extensions&&$i.info(\"PostHog extensions initialized (\"+r+\"ms)\")}yi(t){var i,e,r,s,n,a,l,u,h;if(!o||!o.body)return $i.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.yi(t)}),500);this.config.__preview_deferred_init_extensions&&(this.os=t),this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=w(t.supportedCompression,$s.GZipJS)?$s.GZipJS:w(t.supportedCompression,$s.Base64)?$s.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.Vr?this.Vr:\"identified_only\"}),null==(e=this.siteApps)||e.onRemoteConfig(t),null==(r=this.sessionRecording)||r.onRemoteConfig(t),null==(s=this.autocapture)||s.onRemoteConfig(t),null==(n=this.heatmaps)||n.onRemoteConfig(t),this.surveys.onRemoteConfig(t),this.logs.onRemoteConfig(t),this.conversations.onRemoteConfig(t),null==(a=this.productTours)||a.onRemoteConfig(t),null==(l=this.webVitalsAutocapture)||l.onRemoteConfig(t),null==(u=this.exceptionObserver)||u.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(h=this.deadClicksAutocapture)||h.onRemoteConfig(t)}ns(){try{this.config.loaded(this)}catch(t){$i.critical(\"`loaded` function failed\",t)}this.us(),this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||\"always\"===this.config.cookieless_mode)&&this.hs()}),1),new co(this).load(),this.featureFlags.flags()}us(){var t;this.is_capturing()&&(this.config.request_batching&&(null==(t=this.Zr)||t.enable()))}_dom_loaded(){this.is_capturing()&&Ii(this.__request_queue,(t=>this.ts(t))),this.__request_queue=[],this.us()}_handle_unload(){var t,i;this.surveys.handlePageUnload(),this.config.request_batching?(this.ds()&&this.capture(\"$pageleave\"),null==(t=this.Zr)||t.unload(),null==(i=this.es)||i.unload()):this.ds()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}_send_request(t){this.__loaded&&(zo?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=un(t.url,{ip:this.config.ip?1:0}),t.headers=g({},this.config.request_headers,t.headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.disableXHRCredentials=this.config.__preview_disable_xhr_credentials,this.config.__preview_disable_beacon&&(t.disableTransport=[\"sendBeacon\"]),t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=g({},t);s.timeout=s.timeout||6e4,s.url=un(s.url,{_:(new Date).getTime().toString(),ver:c.LIB_VERSION,compression:s.compression});var n=null!==(i=s.transport)&&void 0!==i?i:\"fetch\",o=vn.filter((t=>!s.disableTransport||!t.transport||!s.disableTransport.includes(t.transport))),a=null!==(e=null==(r=Ui(o,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:o[0].method;if(!a)throw new Error(\"No available transport method\");a(s)})(g({},t,{callback:i=>{var e,r;(this.rateLimiter.checkForLimiting(i),i.statusCode>=400)&&(null==(e=(r=this.config).on_request_error)||e.call(r,i));null==t.callback||t.callback(i)}}))))}ts(t){this.es?this.es.retriableRequest(t):this._send_request(t)}_execute_array(t){var i,e=[],r=[],s=[];Ii(t,(t=>{t&&(i=t[0],I(i)?s.push(t):C(t)?t.call(this):I(t)&&\"alias\"===i?e.push(t):I(t)&&-1!==i.indexOf(\"capture\")&&C(this[i])?s.push(t):r.push(t))}));var n=function(t,i){Ii(t,(function(t){if(I(t[0])){var e=i;Ci(t,(function(t){e=e[t[0]].apply(e,t.slice(1))}))}else this[t[0]].apply(this,t.slice(1))}),i)};n(e,this),n(r,this),n(s,this)}ss(){var t,i;return(null==(t=this.config.bootstrap)?void 0:t.featureFlags)&&Object.keys(null==(i=this.config.bootstrap)?void 0:i.featureFlags).length>0||!1}push(t){this._execute_array([t])}capture(t,i,e){var r;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.Zr){if(this.is_capturing())if(!M(t)&&O(t)){var s=!this.config.opt_out_useragent_filter&&this._is_bot();if(!(s&&!this.config.__preview_capture_bot_pageviews)){var n=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==n||!n.isRateLimited){null!=i&&i.$current_url&&!O(null==i?void 0:i.$current_url)&&($i.error(\"Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value.\"),null==i||delete i.$current_url),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var o=new Date,a=(null==e?void 0:e.timestamp)||o,l=br(),u={uuid:l,event:t,properties:this.calculateEventProperties(t,i||{},a,l)};\"$pageview\"===t&&this.config.__preview_capture_bot_pageviews&&s&&(u.event=\"$bot_pageview\",u.properties.$browser_type=\"bot\"),n&&(u.properties.$lib_rate_limit_remaining_tokens=n.remainingTokens),(null==e?void 0:e.$set)&&(u.$set=null==e?void 0:e.$set);var h,d=\"$groupidentify\"!==t,v=this.vs(null==e?void 0:e.$set_once,d);if(v&&(u.$set_once=v),(u=ji(u,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=a,M(null==e?void 0:e.timestamp)||(u.properties.$event_time_override_provided=!0,u.properties.$event_time_override_system_time=o),t===Wn.DISMISSED||t===Wn.SENT){var c=null==i?void 0:i[Gn.SURVEY_ID],f=null==i?void 0:i[Gn.SURVEY_ITERATION];h={id:c,current_iteration:f},localStorage.getItem(Xn(h))||localStorage.setItem(Xn(h),\"true\"),u.$set=g({},u.$set,{[Yn({id:c,current_iteration:f},t===Wn.SENT?\"responded\":\"dismissed\")]:!0})}else t===Wn.SHOWN&&(u.$set=g({},u.$set,{[Gn.SURVEY_LAST_SEEN_DATE]:(new Date).toISOString()}));var p=g({},u.properties.$set,u.$set);if(F(p)||this.setPersonPropertiesForFlags(p),!j(this.config.before_send)){var _=this.cs(u);if(!_)return;u=_}this.qr.emit(\"eventCaptured\",u);var m={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:u,compression:\"best-available\",batchKey:null==e?void 0:e._batchKey};return!this.config.request_batching||e&&(null==e||!e._batchKey)||null!=e&&e.send_instantly?this.ts(m):this.Zr.enqueue(m),u}$i.critical(\"This capture call is ignored due to client rate limiting.\")}}else $i.error(\"No event name provided to posthog.capture\")}else $i.uninitializedWarning(\"posthog.capture\")}Hi(t){return this.on(\"eventCaptured\",(i=>t(i.event,i)))}calculateEventProperties(t,i,e,r,s){if(e=e||new Date,!this.persistence||!this.sessionPersistence)return i;var n=s?void 0:this.persistence.remove_event_timer(t),a=g({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,(\"always\"==this.config.cookieless_mode||\"on_reject\"==this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=g({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!O(a.distinct_id)&&!L(a.distinct_id)||A(a.distinct_id))&&$i.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=ps(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties);if(this.sessionManager){var{sessionId:v,windowId:c}=this.sessionManager.checkAndGetSessionAndWindowId(s,e.getTime());a.$session_id=v,a.$window_id=c}this.sessionPropsManager&&Ri(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&Ri(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.es)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===Po.CUSTOM&&(a.$lib_custom_api_host=this.config.api_host),u=\"$pageview\"!==t||s?\"$pageleave\"!==t||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(e):this.pageViewManager.doPageView(e,r),a=Ri(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!M(n)){var p=e.getTime()-n;a.$duration=parseFloat((p/1e3).toFixed(3))}d&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?\"bot\":\"browser\"),(a=Ri({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),I(this.config.property_denylist)?Ci(this.config.property_denylist,(function(t){delete a[t]})):$i.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&($i.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var m=this.fs();return a.$process_person_profile=m,m&&!s&&this.ps(\"_calculate_event_properties\"),a}vs(t,i){var e;if(void 0===i&&(i=!0),!this.persistence||!this.fs())return t;if(this.Br)return t;var r=this.persistence.get_initial_props(),s=null==(e=this.sessionPropsManager)?void 0:e.getSetOnceProps(),n=Ri({},r,s||{},t||{}),o=this.config.sanitize_properties;return o&&($i.error(\"sanitize_properties is deprecated. Use before_send instead\"),n=o(n,\"$set_once\")),i&&(this.Br=!0),F(n)?void 0:n}register(t,i){var e;null==(e=this.persistence)||e.register(t,i)}register_once(t,i,e){var r;null==(r=this.persistence)||r.register_once(t,i,e)}register_for_session(t){var i;null==(i=this.sessionPersistence)||i.register(t)}unregister(t){var i;null==(i=this.persistence)||i.unregister(t)}unregister_for_session(t){var i;null==(i=this.sessionPersistence)||i.unregister(t)}gs(t,i){this.register({[t]:i})}getFeatureFlag(t,i){return this.featureFlags.getFeatureFlag(t,i)}getFeatureFlagPayload(t){var i=this.featureFlags.getFeatureFlagPayload(t);try{return JSON.parse(i)}catch(t){return i}}isFeatureEnabled(t,i){return this.featureFlags.isFeatureEnabled(t,i)}reloadFeatureFlags(){this.featureFlags.reloadFeatureFlags()}updateFlags(t,i,e){var r=null!=e&&e.merge?this.featureFlags.getFlagVariants():{},s=null!=e&&e.merge?this.featureFlags.getFlagPayloads():{},n=g({},r,t),o=g({},s,i),a={};for(var[l,u]of Object.entries(n)){var h=\"string\"==typeof u;a[l]={key:l,enabled:!!h||Boolean(u),variant:h?u:void 0,reason:void 0,metadata:M(null==o?void 0:o[l])?void 0:{id:0,version:void 0,description:void 0,payload:o[l]}}}this.featureFlags.receivedFeatureFlags({flags:a})}updateEarlyAccessFeatureEnrollment(t,i,e){this.featureFlags.updateEarlyAccessFeatureEnrollment(t,i,e)}getEarlyAccessFeatures(t,i,e){return void 0===i&&(i=!1),this.featureFlags.getEarlyAccessFeatures(t,i,e)}on(t,i){return this.qr.on(t,i)}onFeatureFlags(t){return this.featureFlags.onFeatureFlags(t)}onSurveysLoaded(t){return this.surveys.onSurveysLoaded(t)}onSessionId(t){var i,e;return null!==(i=null==(e=this.sessionManager)?void 0:e.onSessionId(t))&&void 0!==i?i:()=>{}}getSurveys(t,i){void 0===i&&(i=!1),this.surveys.getSurveys(t,i)}getActiveMatchingSurveys(t,i){void 0===i&&(i=!1),this.surveys.getActiveMatchingSurveys(t,i)}renderSurvey(t,i){this.surveys.renderSurvey(t,i)}displaySurvey(t,i){void 0===i&&(i=Zn),this.surveys.displaySurvey(t,i)}cancelPendingSurvey(t){this.surveys.cancelPendingSurvey(t)}canRenderSurvey(t){return this.surveys.canRenderSurvey(t)}canRenderSurveyAsync(t,i){return void 0===i&&(i=!1),this.surveys.canRenderSurveyAsync(t,i)}identify(t,i,e){if(!this.__loaded||!this.persistence)return $i.uninitializedWarning(\"posthog.identify\");if(L(t)&&(t=t.toString(),$i.warn(\"The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.\")),t)if([\"distinct_id\",\"distinctid\"].includes(t.toLowerCase()))$i.critical('The string \"'+t+'\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.');else if(t!==me){if(this.ps(\"posthog.identify\")){var r=this.get_distinct_id();if(this.register({$user_id:t}),!this.get_property(\"$device_id\")){var s=r;this.register_once({$had_persisted_distinct_id:!0,$device_id:s},\"\")}t!==r&&t!==this.get_property(Bi)&&(this.unregister(Bi),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(he)||\"anonymous\");t!==r&&n?(this.persistence.set_property(he,\"identified\"),this.setPersonPropertiesForFlags(g({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.Jr=fn(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(ue))}}else $i.critical('The string \"'+me+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else $i.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.ps(\"posthog.setPersonProperties\")){var e=fn(this.get_distinct_id(),t,i);this.Jr!==e?(this.setPersonPropertiesForFlags(g({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.Jr=e):$i.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:g({},r,{[t]:i})}),e&&(this.capture(\"$groupidentify\",{$group_type:t,$group_key:i,$group_set:e}),this.setGroupPropertiesForFlags({[t]:e})),r[t]===i||e||this.reloadFeatureFlags()}else $i.error(\"posthog.group requires a group type and group key\")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0),this.featureFlags.setPersonPropertiesForFlags(t,i)}resetPersonPropertiesForFlags(){this.featureFlags.resetPersonPropertiesForFlags()}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0),this.ps(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if($i.info(\"reset\"),!this.__loaded)return $i.uninitializedWarning(\"posthog.reset\");var n=this.get_property(\"$device_id\");if(this.consent.reset(),null==(i=this.persistence)||i.clear(),null==(e=this.sessionPersistence)||e.clear(),this.surveys.reset(),this.featureFlags.reset(),null==(r=this.persistence)||r.set_property(he,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.Jr=null,\"always\"===this.config.cookieless_mode)this.register_once({distinct_id:me,$device_id:null},\"\");else{var o=this.config.get_device_id(br());this.register_once({distinct_id:o,$device_id:t?o:n},\"\")}this.register({$last_posthog_reset:(new Date).toISOString()},1)}get_distinct_id(){return this.get_property(\"distinct_id\")}getGroups(){return this.get_property(\"$groups\")||{}}get_session_id(){var t,i;return null!==(t=null==(i=this.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0).sessionId)&&void 0!==t?t:\"\"}get_session_replay_url(t){if(!this.sessionManager)return\"\";var{sessionId:i,sessionStartTimestamp:e}=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=this.requestRouter.endpointFor(\"ui\",\"/project/\"+this.config.token+\"/replay/\"+i);if(null!=t&&t.withTimestamp&&e){var s,n=null!==(s=t.timestampLookBack)&&void 0!==s?s:10;if(!e)return r;r+=\"?t=\"+Math.max(Math.floor(((new Date).getTime()-e)/1e3)-n,0)}return r}alias(t,i){return t===this.get_property(Hi)?($i.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.ps(\"posthog.alias\")?(M(i)&&(i=this.get_distinct_id()),t!==i?(this.gs(Bi,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):($i.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=g({},this.config);if(R(t)){var e,r,s,n,o,a,l;Ri(this.config,Bo(t));var u=this.Qr();null==(e=this.persistence)||e.update_config(this.config,i,u),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Mn(g({},this.config,{persistence:\"sessionStorage\"}),u);var h=this.Kr(this.config.debug);U(h)&&(this.config.debug=h),U(this.config.debug)&&(this.config.debug?(c.DEBUG=!0,Pr.H()&&Pr.G(\"ph_debug\",\"true\"),$i.info(\"set_config\",{config:t,oldConfig:i,newConfig:g({},this.config)})):(c.DEBUG=!1,Pr.H()&&Pr.V(\"ph_debug\"))),null==(r=this.exceptionObserver)||r.onConfigChange(),null==(s=this.sessionRecording)||s.startIfEnabledOrStop(),null==(n=this.autocapture)||n.startIfEnabled(),null==(o=this.heatmaps)||o.startIfEnabled(),null==(a=this.exceptionObserver)||a.startIfEnabledOrStop(),this.surveys.loadIfEnabled(),this._s(),null==(l=this.externalIntegrations)||l.startIfEnabledOrStop()}}startSessionRecording(t){var i=!0===t,e={sampling:i||!(null==t||!t.sampling),linked_flag:i||!(null==t||!t.linked_flag),url_trigger:i||!(null==t||!t.url_trigger),event_trigger:i||!(null==t||!t.event_trigger)};if(Object.values(e).some(Boolean)){var r,s,n,o,a;if(null==(r=this.sessionManager)||r.checkAndGetSessionAndWindowId(),e.sampling)null==(s=this.sessionRecording)||s.overrideSampling();if(e.linked_flag)null==(n=this.sessionRecording)||n.overrideLinkedFlag();if(e.url_trigger)null==(o=this.sessionRecording)||o.overrideTrigger(\"url\");if(e.event_trigger)null==(a=this.sessionRecording)||a.overrideTrigger(\"event\")}this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var t;return!(null==(t=this.sessionRecording)||!t.started)}captureException(t,i){var e=new Error(\"PostHog syntheticException\"),r=this.exceptions.buildProperties(t,{handled:!0,syntheticException:e});return this.exceptions.sendExceptionEvent(g({},r,i))}startExceptionAutocapture(t){this.set_config({capture_exceptions:null==t||t})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(t){return this.toolbar.loadToolbar(t)}get_property(t){var i;return null==(i=this.persistence)?void 0:i.props[t]}getSessionProperty(t){var i;return null==(i=this.sessionPersistence)?void 0:i.props[t]}toString(){var t,i=null!==(t=this.config.name)&&void 0!==t?t:Uo;return i!==Uo&&(i=Uo+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(he))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(he))}fs(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&F(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[Bi])&&(null==(i=this.persistence)||null==(i=i.props)||!i[ge]))}ds(){return!0===this.config.capture_pageleave||\"if_capture_pageview\"===this.config.capture_pageleave&&(!0===this.config.capture_pageview||\"history_change\"===this.config.capture_pageview)}createPersonProfile(){this.fs()||this.ps(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}ps(t){return\"never\"===this.config.person_profiles?($i.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.gs(ge,!0),!0)}Qr(){if(\"always\"===this.config.cookieless_mode)return!0;var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default||\"on_reject\"===this.config.cookieless_mode;return this.config.disable_persistence||t&&!!i}_s(){var t,i,e,r,s=this.Qr();(null==(t=this.persistence)?void 0:t.Si)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.Si)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){var i;if(\"always\"!==this.config.cookieless_mode){var e,r,s;if(\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())this.reset(!0),null==(e=this.sessionManager)||e.destroy(),null==(r=this.pageViewManager)||r.destroy(),this.sessionManager=new xo(this),this.pageViewManager=new xs(this),this.persistence&&(this.sessionPropsManager=new bo(this,this.sessionManager,this.persistence)),this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop();if(this.consent.optInOut(!0),this._s(),this.us(),null==(i=this.sessionRecording)||i.startIfEnabledOrStop(),\"on_reject\"==this.config.cookieless_mode&&this.surveys.loadIfEnabled(),M(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)this.capture(null!==(s=null==t?void 0:t.captureEventName)&&void 0!==s?s:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.hs()}else $i.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}opt_out_capturing(){var t,i,e;\"always\"!==this.config.cookieless_mode?(\"on_reject\"===this.config.cookieless_mode&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this._s(),\"on_reject\"===this.config.cookieless_mode&&(this.register({distinct_id:me,$device_id:null}),null==(t=this.sessionManager)||t.destroy(),null==(i=this.pageViewManager)||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,null==(e=this.sessionRecording)||e.stopRecording(),this.sessionRecording=void 0,this.hs())):$i.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var t=this.consent.consent;return t===Mr.GRANTED?\"granted\":t===Mr.DENIED?\"denied\":\"pending\"}is_capturing(){return\"always\"===this.config.cookieless_mode||(\"on_reject\"===this.config.cookieless_mode?this.consent.isExplicitlyOptedOut()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this._s()}_is_bot(){return n?ko(n,this.config.custom_blocked_useragents):void 0}hs(){o&&(\"visible\"===o.visibilityState?this.Wr||(this.Wr=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.Gr&&(o.removeEventListener(\"visibilitychange\",this.Gr),this.Gr=null)):this.Gr||(this.Gr=this.hs.bind(this),zi(o,\"visibilitychange\",this.Gr)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),this.set_config({debug:!1})):(null==t||t.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"),this.set_config({debug:!0}))}O(){var t,i,e,r,s,n,o,a=this.Yr||{};return\"advanced_disable_flags\"in a?!!a.advanced_disable_flags:!1!==this.config.advanced_disable_flags?!!this.config.advanced_disable_flags:!0===this.config.advanced_disable_decide?($i.warn(\"Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version.\"),!0):(e=\"advanced_disable_decide\",r=!1,s=$i,n=(i=\"advanced_disable_flags\")in(t=a)&&!M(t[i]),o=e in t&&!M(t[e]),n?t[i]:o?(s&&s.warn(\"Config field '\"+e+\"' is deprecated. Please use '\"+i+\"' instead. The old field will be removed in a future major version.\"),t[e]):r)}cs(t){if(j(this.config.before_send))return t;var i=I(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),j(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return H(t.event)?$i.warn(s+\". This can cause unexpected behavior.\"):$i.info(s),null}e.properties&&!F(e.properties)||$i.warn(\"Event '\"+t.event+\"' has no properties after beforeSend function, this is likely an error.\")}return e}getPageViewId(){var t;return null==(t=this.pageViewManager.Kt)?void 0:t.pageViewId}captureTraceFeedback(t,i){this.capture(\"$ai_feedback\",{$ai_trace_id:String(t),$ai_feedback_text:i})}captureTraceMetric(t,i,e){this.capture(\"$ai_metric\",{$ai_trace_id:String(t),$ai_metric_name:i,$ai_metric_value:String(e)})}Kr(t){var i=U(t)&&!t,e=Pr.H()&&\"true\"===Pr.q(\"ph_debug\");return!i&&(!!e||t)}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Ai(t.prototype[i[e]])}(Wo,[\"identify\"]);var Go,Vo={backgroundColor:\"#ffffff\",textColor:\"#1d1f27\",buttonColor:\"#1d1f27\",borderRadius:8,buttonBorderRadius:6,borderColor:\"#e5e7eb\",fontFamily:\"system-ui\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",showOverlay:!0,whiteLabel:!1,dismissOnClickOutside:!0},Jo=(Go=Lo[Uo]=new Wo,function(){function i(){i.done||(i.done=!0,zo=!1,Ci(Lo,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():zi(o,\"DOMContentLoaded\",i,{capture:!1}):t&&$i.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),Go);export{$s as Compression,Vo as DEFAULT_PRODUCT_TOUR_APPEARANCE,Vn as DisplaySurveyType,Wo as PostHog,Wn as SurveyEventName,Gn as SurveyEventProperties,jn as SurveyEventType,Nn as SurveyPosition,Bn as SurveyQuestionBranchingType,Hn as SurveyQuestionType,qn as SurveySchedule,Un as SurveyTabPosition,zn as SurveyType,Ln as SurveyWidgetType,Jo as default,Jo as posthog,Es as severityLevels};\n//# sourceMappingURL=module.js.map\n","import posthogJs from 'posthog-js';\nimport React, { createContext, useRef, useMemo, useEffect, useContext, useState, useCallback, Children } from 'react';\n\nvar PostHogContext = createContext({\n client: posthogJs,\n bootstrap: undefined,\n});\n\nfunction isDeepEqual(obj1, obj2, visited) {\n if (visited === void 0) { visited = new WeakMap(); }\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n if (visited.has(obj1) && visited.get(obj1) === obj2) {\n return true;\n }\n visited.set(obj1, obj2);\n var keys1 = Object.keys(obj1);\n var keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {\n var key = keys1_1[_i];\n if (!keys2.includes(key)) {\n return false;\n }\n if (!isDeepEqual(obj1[key], obj2[key], visited)) {\n return false;\n }\n }\n return true;\n}\n\nfunction PostHogProvider(_a) {\n var _b, _c;\n var children = _a.children, client = _a.client, apiKey = _a.apiKey, options = _a.options;\n var previousInitializationRef = useRef(null);\n var posthog = useMemo(function () {\n if (client) {\n if (apiKey) {\n console.warn('[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`.');\n }\n if (options) {\n console.warn('[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`.');\n }\n return client;\n }\n if (apiKey) {\n return posthogJs;\n }\n console.warn('[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior.');\n return posthogJs;\n }, [client, apiKey, JSON.stringify(options)]);\n useEffect(function () {\n if (client) {\n return;\n }\n var previousInitialization = previousInitializationRef.current;\n if (!previousInitialization) {\n if (posthogJs.__loaded) {\n console.warn('[PostHog.js] `posthog` was already loaded elsewhere. This may cause issues.');\n }\n posthogJs.init(apiKey, options);\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n else {\n if (apiKey !== previousInitialization.apiKey) {\n console.warn(\"[PostHog.js] You have provided a different `apiKey` to `PostHogProvider` than the one that was already initialized. This is not supported by our provider and we'll keep using the previous key. If you need to toggle between API Keys you need to control the `client` yourself and pass it in as a prop rather than an `apiKey` prop.\");\n }\n if (options && !isDeepEqual(options, previousInitialization.options)) {\n posthogJs.set_config(options);\n }\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n }, [client, apiKey, JSON.stringify(options)]);\n return (React.createElement(PostHogContext.Provider, { value: { client: posthog, bootstrap: (_b = options === null || options === void 0 ? void 0 : options.bootstrap) !== null && _b !== void 0 ? _b : (_c = client === null || client === void 0 ? void 0 : client.config) === null || _c === void 0 ? void 0 : _c.bootstrap } }, children));\n}\n\nvar isFunction = function (f) {\n return typeof f === 'function';\n};\nvar isUndefined = function (x) {\n return x === void 0;\n};\nvar isNull = function (x) {\n return x === null;\n};\n\nfunction useFeatureFlagEnabled(flag) {\n var _a, _b;\n var _c = useContext(PostHogContext), client = _c.client, bootstrap = _c.bootstrap;\n var _d = useState(function () { return client.isFeatureEnabled(flag); }), featureEnabled = _d[0], setFeatureEnabled = _d[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureEnabled(client.isFeatureEnabled(flag));\n });\n }, [client, flag]);\n var bootstrapped = (_a = bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags) === null || _a === void 0 ? void 0 : _a[flag];\n if (!((_b = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _b === void 0 ? void 0 : _b.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return isUndefined(bootstrapped) ? undefined : !!bootstrapped;\n }\n return featureEnabled;\n}\n\nfunction useFeatureFlagPayload(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.getFeatureFlagPayload(flag); }), featureFlagPayload = _c[0], setFeatureFlagPayload = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagPayload(client.getFeatureFlagPayload(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlagPayloads)) {\n return bootstrap.featureFlagPayloads[flag];\n }\n return featureFlagPayload;\n}\n\nfunction useActiveFeatureFlags() {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.featureFlags.getFlags(); }), featureFlags = _c[0], setFeatureFlags = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function (flags) {\n setFeatureFlags(flags);\n });\n }, [client]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return Object.keys(bootstrap.featureFlags);\n }\n return featureFlags;\n}\n\nfunction useFeatureFlagVariantKey(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () {\n return client.getFeatureFlag(flag);\n }), featureFlagVariantKey = _c[0], setFeatureFlagVariantKey = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagVariantKey(client.getFeatureFlag(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return bootstrap.featureFlags[flag];\n }\n return featureFlagVariantKey;\n}\n\nvar usePostHog = function () {\n var client = useContext(PostHogContext).client;\n return client;\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction VisibilityAndClickTracker(_a) {\n var children = _a.children, onIntersect = _a.onIntersect, onClick = _a.onClick, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"children\", \"onIntersect\", \"onClick\", \"trackView\", \"options\"]);\n var ref = useRef(null);\n var observerOptions = useMemo(function () { return (__assign({ threshold: 0.1 }, options)); }, [options === null || options === void 0 ? void 0 : options.threshold, options === null || options === void 0 ? void 0 : options.root, options === null || options === void 0 ? void 0 : options.rootMargin]);\n useEffect(function () {\n if (isNull(ref.current) || !trackView)\n return;\n var observer = new IntersectionObserver(function (_a) {\n var entry = _a[0];\n return onIntersect(entry);\n }, observerOptions);\n observer.observe(ref.current);\n return function () { return observer.disconnect(); };\n }, [observerOptions, trackView, onIntersect]);\n return (React.createElement(\"div\", __assign({ ref: ref }, props, { onClick: onClick }), children));\n}\n\nfunction VisibilityAndClickTrackers(_a) {\n var children = _a.children, trackInteraction = _a.trackInteraction, trackView = _a.trackView, options = _a.options, onInteract = _a.onInteract, onView = _a.onView, props = __rest(_a, [\"children\", \"trackInteraction\", \"trackView\", \"options\", \"onInteract\", \"onView\"]);\n var clickTrackedRef = useRef(false);\n var visibilityTrackedRef = useRef(false);\n var cachedOnClick = useCallback(function () {\n if (!clickTrackedRef.current && trackInteraction && onInteract) {\n onInteract();\n clickTrackedRef.current = true;\n }\n }, [trackInteraction, onInteract]);\n var onIntersect = function (entry) {\n if (!visibilityTrackedRef.current && entry.isIntersecting && onView) {\n onView();\n visibilityTrackedRef.current = true;\n }\n };\n var trackedChildren = Children.map(children, function (child) {\n return (React.createElement(VisibilityAndClickTracker, __assign({ onClick: cachedOnClick, onIntersect: onIntersect, trackView: trackView, options: options }, props), child));\n });\n return React.createElement(React.Fragment, null, trackedChildren);\n}\n\nfunction PostHogFeature(_a) {\n var flag = _a.flag, match = _a.match, children = _a.children, fallback = _a.fallback, visibilityObserverOptions = _a.visibilityObserverOptions, trackInteraction = _a.trackInteraction, trackView = _a.trackView, props = __rest(_a, [\"flag\", \"match\", \"children\", \"fallback\", \"visibilityObserverOptions\", \"trackInteraction\", \"trackView\"]);\n var payload = useFeatureFlagPayload(flag);\n var variant = useFeatureFlagVariantKey(flag);\n var posthog = usePostHog();\n var shouldTrackInteraction = trackInteraction !== null && trackInteraction !== void 0 ? trackInteraction : true;\n var shouldTrackView = trackView !== null && trackView !== void 0 ? trackView : true;\n if (isUndefined(match) || variant === match) {\n var childNode = isFunction(children) ? children(payload) : children;\n return (React.createElement(VisibilityAndClickTrackers, __assign({ flag: flag, options: visibilityObserverOptions, trackInteraction: shouldTrackInteraction, trackView: shouldTrackView, onInteract: function () { return captureFeatureInteraction({ flag: flag, posthog: posthog, flagVariant: variant }); }, onView: function () { return captureFeatureView({ flag: flag, posthog: posthog, flagVariant: variant }); } }, props), childNode));\n }\n return React.createElement(React.Fragment, null, fallback);\n}\nfunction captureFeatureInteraction(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_interaction/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_interaction', properties);\n}\nfunction captureFeatureView(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_view/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_view', properties);\n}\n\nfunction TrackedChild(_a) {\n var child = _a.child, index = _a.index, name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions;\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name, child_index: index }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, index, properties]);\n return (React.createElement(VisibilityAndClickTracker, { onIntersect: onIntersect, trackView: true, options: observerOptions }, child));\n}\nfunction PostHogCaptureOnViewed(_a) {\n var name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions, trackAllChildren = _a.trackAllChildren, children = _a.children, props = __rest(_a, [\"name\", \"properties\", \"observerOptions\", \"trackAllChildren\", \"children\"]);\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, properties]);\n if (trackAllChildren) {\n var trackedChildren = Children.map(children, function (child, index) {\n return (React.createElement(TrackedChild, { key: index, child: child, index: index, name: name, properties: properties, observerOptions: observerOptions }));\n });\n return React.createElement(\"div\", __assign({}, props), trackedChildren);\n }\n return (React.createElement(VisibilityAndClickTracker, __assign({ onIntersect: onIntersect, trackView: true, options: observerOptions }, props), children));\n}\n\nvar INITIAL_STATE = {\n componentStack: null,\n exceptionEvent: null,\n error: null,\n};\nvar __POSTHOG_ERROR_MESSAGES = {\n INVALID_FALLBACK: '[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element.',\n};\nvar PostHogErrorBoundary = (function (_super) {\n __extends(PostHogErrorBoundary, _super);\n function PostHogErrorBoundary(props) {\n var _this = _super.call(this, props) || this;\n _this.state = INITIAL_STATE;\n return _this;\n }\n PostHogErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {\n var additionalProperties = this.props.additionalProperties;\n var currentProperties;\n if (isFunction(additionalProperties)) {\n currentProperties = additionalProperties(error);\n }\n else if (typeof additionalProperties === 'object') {\n currentProperties = additionalProperties;\n }\n var client = this.context.client;\n var exceptionEvent = client.captureException(error, currentProperties);\n var componentStack = errorInfo.componentStack;\n this.setState({\n error: error,\n componentStack: componentStack !== null && componentStack !== void 0 ? componentStack : null,\n exceptionEvent: exceptionEvent,\n });\n };\n PostHogErrorBoundary.prototype.render = function () {\n var _a = this.props, children = _a.children, fallback = _a.fallback;\n var state = this.state;\n if (state.componentStack == null) {\n return isFunction(children) ? children() : children;\n }\n var element = isFunction(fallback)\n ? React.createElement(fallback, {\n error: state.error,\n componentStack: state.componentStack,\n exceptionEvent: state.exceptionEvent,\n })\n : fallback;\n if (React.isValidElement(element)) {\n return element;\n }\n console.warn(__POSTHOG_ERROR_MESSAGES.INVALID_FALLBACK);\n return React.createElement(React.Fragment, null);\n };\n PostHogErrorBoundary.contextType = PostHogContext;\n return PostHogErrorBoundary;\n}(React.Component));\n\nvar setupReactErrorHandler = function (client, callback) {\n return function (error, errorInfo) {\n var event = client.captureException(error);\n if (callback) {\n callback(event, error, errorInfo);\n }\n };\n};\n\nexport { PostHogCaptureOnViewed, PostHogContext, PostHogErrorBoundary, PostHogFeature, PostHogProvider, captureFeatureInteraction, captureFeatureView, setupReactErrorHandler, useActiveFeatureFlags, useFeatureFlagEnabled, useFeatureFlagPayload, useFeatureFlagVariantKey, usePostHog };\n//# sourceMappingURL=index.js.map\n","/**\n * Package version constant.\n * Imports version directly from package.json\n * \n * @example\n * ```typescript\n * import { getPackageVersion } from './utils/version';\n * console.log(getPackageVersion()); // \"0.14.11\"\n * ```\n */\n\nimport packageJson from '../../package.json';\n\n/**\n * Get the package version from package.json\n * @returns The package version from package.json\n */\nexport function getPackageVersion(): string {\n return packageJson.version;\n}\n\n/**\n * Get the package name\n * @returns The package name from package.json\n */\nexport function getPackageName(): string {\n return packageJson.name;\n}\n","/**\n * Analytics utility for tracking Twick package usage.\n * Provides a safe wrapper around PostHog that respects opt-out preferences.\n * \n * @example\n * ```typescript\n * // Disable analytics via environment variable\n * // VITE_TWICK_ANALYTICS_ENABLED=false\n * \n * // Or via config\n * <TimelineProvider analytics={{ enabled: false }} />\n * ```\n */\n\nimport { PostHog } from \"posthog-js\";\nimport { getPackageVersion, getPackageName } from \"./version\";\n\n/**\n * Configuration for analytics tracking\n */\nexport interface AnalyticsConfig {\n /** Whether analytics is enabled */\n enabled?: boolean;\n /** PostHog API key (optional, can use environment variable) */\n apiKey?: string;\n /** PostHog API host */\n apiHost?: string;\n /** Disable session recording */\n disableSessionRecording?: boolean;\n}\n\n/**\n * Check if analytics should be enabled\n */\nexport function isAnalyticsEnabled(config?: AnalyticsConfig): boolean {\n // Check environment variable first\n if (typeof window !== \"undefined\") {\n const envDisabled = \n (window as any).__TWICK_ANALYTICS_DISABLED__ === true ||\n (import.meta as any).env?.VITE_TWICK_ANALYTICS_ENABLED === \"false\" ||\n (typeof process !== \"undefined\" && (process as any).env?.TWICK_ANALYTICS_ENABLED === \"false\");\n \n if (envDisabled) return false;\n }\n\n // Check config prop\n if (config?.enabled === false) return false;\n \n // return true by default\n return true;\n}\n\n/**\n * Get PostHog API key from config or environment\n */\nexport function getPostHogApiKey(config?: AnalyticsConfig): string | undefined {\n // Priority: config prop > environment variable > default\n return (\n config?.apiKey ||\n (typeof window !== \"undefined\" && (import.meta as any).env?.VITE_POSTHOG_API_KEY) ||\n (typeof process !== \"undefined\" && (process as any).env?.POSTHOG_API_KEY) ||\n \"phc_v92Ybiir6eGbEOXmI60g7n0MhUZ1zSknfaf9a3wpAU0\" // Default key\n );\n}\n\n/**\n * Get PostHog API host\n */\nexport function getPostHogApiHost(config?: AnalyticsConfig): string {\n return config?.apiHost || \"https://us.i.posthog.com\";\n}\n\n/**\n * Safely capture an event if analytics is enabled\n */\nexport function trackEvent(\n posthog: PostHog,\n eventName: string,\n properties?: Record<string, any>,\n config?: AnalyticsConfig\n): void {\n if (!isAnalyticsEnabled(config)) {\n return;\n }\n\n try {\n // Get package version and name dynamically from package.json\n const packageVersion = getPackageVersion();\n const packageName = getPackageName();\n\n posthog.capture(eventName, {\n ...properties,\n packageName,\n packageVersion,\n timestamp: new Date().toISOString(),\n });\n } catch (error) {\n // Silently fail to avoid breaking user's application\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.warn(\"[Twick Analytics] Failed to track event:\", error);\n }\n }\n}\n\n/**\n * Get PostHog options based on config\n */\nexport function getPostHogOptions(config?: AnalyticsConfig, onLoaded?: (posthog: PostHog) => void) {\n return {\n api_host: getPostHogApiHost(config),\n disable_session_recording: config?.disableSessionRecording ?? true,\n loaded: onLoaded,\n };\n}\n","import {\n createContext,\n useContext,\n useState,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { TIMELINE_ACTION } from \"../utils/constants\";\nimport { UndoRedoProvider, useUndoRedo } from \"./undo-redo-context\";\nimport { Track } from \"../core/track/track\";\nimport { TrackElement } from \"../core/elements/base.element\";\nimport { ProjectJSON, Size, TrackJSON } from \"../types\";\nimport { TimelineEditor } from \"../core/editor/timeline.editor\";\nimport { editorRegistry } from \"../utils/register-editor\";\nimport { PostHogProvider } from \"posthog-js/react\";\nimport {\n AnalyticsConfig,\n isAnalyticsEnabled,\n getPostHogApiKey,\n getPostHogOptions,\n trackEvent,\n} from \"../utils/analytics\";\nimport { PostHog, PostHogConfig } from \"posthog-js\";\n\n/**\n * Type definition for the Timeline context.\n * Contains all the state and functions needed to manage a timeline instance.\n * Provides access to the timeline editor, selected items, undo/redo functionality,\n * and timeline actions.\n *\n * @example\n * ```js\n * const {\n * editor,\n * selectedItem,\n * totalDuration,\n * canUndo,\n * canRedo,\n * setSelectedItem,\n * setTimelineAction\n * } = useTimelineContext();\n * ```\n */\nexport type TimelineContextType = {\n /** Unique identifier for this timeline context */\n contextId: string;\n /** The timeline editor instance for this context */\n editor: TimelineEditor;\n /** Currently selected track or element */\n selectedItem: Track | TrackElement | null;\n /** Change counter for tracking modifications */\n changeLog: number;\n /** Current timeline action being performed */\n timelineAction: {\n type: string;\n payload: any;\n };\n /** Resolution of the video */\n videoResolution: Size;\n /** Total duration of the timeline in seconds */\n totalDuration: number;\n /** Current project state */\n present: ProjectJSON | null;\n /** Whether undo operation is available */\n canUndo: boolean;\n /** Whether redo operation is available */\n canRedo: boolean;\n /** Function to set the selected item */\n setSelectedItem: (item: Track | TrackElement | null) => void;\n /** Function to set timeline actions */\n setTimelineAction: (type: string, payload: any) => void;\n /** Function to set the video resolution */\n setVideoResolution: (size: Size) => void;\n};\n\nconst TimelineContext = createContext<TimelineContextType | undefined>(\n undefined\n);\n\n/**\n * Props for the TimelineProvider component.\n * Defines the configuration options for timeline context initialization.\n *\n * @example\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * initialData={{ tracks: [], version: 1 }}\n * undoRedoPersistenceKey=\"timeline-state\"\n * maxHistorySize={50}\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n */\nexport interface TimelineProviderProps {\n /** React children to wrap with timeline context */\n children: React.ReactNode;\n /** Unique identifier for this timeline context */\n contextId: string;\n /** resolution of the video */\n resolution?: Size;\n /** Initial timeline data to load */\n initialData?: {\n tracks: TrackJSON[];\n version: number;\n };\n /** Key for persisting undo/redo state */\n undoRedoPersistenceKey?: string;\n /** Maximum number of history states to keep */\n maxHistorySize?: number;\n /**\n * Analytics configuration.\n * Set to `{ enabled: false }` to disable tracking.\n */\n analytics?: AnalyticsConfig;\n}\n\n/**\n * Inner component that uses the UndoRedo context.\n * Manages the timeline state and provides the timeline editor instance.\n * Handles initialization of timeline data and editor setup.\n *\n * @param props - Timeline provider configuration\n * @returns Timeline context provider with state management\n *\n * @example\n * ```jsx\n * <TimelineProviderInner\n * contextId=\"my-timeline\"\n * resolution={{ width: 1920, height: 1080 }}\n * initialData={{ tracks: [], version: 1 }}\n * >\n * <YourApp />\n * </TimelineProviderInner>\n * ```\n */\nconst TimelineProviderInner = ({\n contextId,\n children,\n resolution,\n initialData,\n}: TimelineProviderProps) => {\n const [timelineAction, setTimelineActionState] = useState<{\n type: string;\n payload: any;\n }>({\n type: TIMELINE_ACTION.NONE,\n payload: null,\n });\n\n const [selectedItem, setSelectedItem] = useState<Track | TrackElement | null>(\n null\n );\n\n const [videoResolution, setVideoResolution] = useState<Size>(\n resolution ?? { width: 720, height: 1280 }\n );\n\n const [totalDuration, setTotalDuration] = useState(0);\n\n const [changeLog, setChangeLog] = useState(0);\n\n const undoRedoContext = useUndoRedo();\n\n const dataInitialized = useRef(false);\n\n /**\n * Updates the change log counter.\n * Called whenever the timeline is modified to track changes.\n *\n * @example\n * ```js\n * updateChangeLog();\n * // Increments the change counter\n * ```\n */\n const updateChangeLog = () => {\n setChangeLog((prev) => prev + 1);\n };\n\n // Create a single editor instance that's shared across all components\n const editor = useMemo(() => {\n if (editorRegistry.has(contextId)) {\n editorRegistry.delete(contextId);\n }\n const newEditor = new TimelineEditor({\n contextId,\n setTotalDuration,\n setPresent: undoRedoContext.setPresent,\n handleUndo: undoRedoContext.undo,\n handleRedo: undoRedoContext.redo,\n handleResetHistory: undoRedoContext.resetHistory,\n updateChangeLog: updateChangeLog,\n setTimelineAction: (action: string, payload?: unknown) => {\n setTimelineActionState({ type: action, payload });\n },\n });\n\n // Register the editor instance in the global registry\n editorRegistry.set(contextId, newEditor);\n\n return newEditor;\n }, [contextId]);\n\n /**\n * Sets a timeline action with optional payload.\n * Used to trigger timeline state changes and actions.\n *\n * @param type - The type of action to perform\n * @param payload - Optional data for the action\n *\n * @example\n * ```js\n * setTimelineAction(TIMELINE_ACTION.SET_PLAYER_STATE, { playing: true });\n * ```\n */\n const setTimelineAction = (type: string, payload: any) => {\n setTimelineActionState({ type, payload });\n };\n\n /**\n * Initializes the timeline with project data.\n * Loads either persisted state or initial data into the editor.\n *\n * @param data - Project data to initialize with\n *\n * @example\n * ```js\n * initialize(projectData);\n * // Loads project data into the timeline editor\n * ```\n */\n const initialize = (data: ProjectJSON) => {\n const lastPersistedState = undoRedoContext.getLastPersistedState();\n if (lastPersistedState) {\n editor.loadProject(lastPersistedState);\n return;\n } else {\n editor.loadProject(data);\n }\n };\n\n // Initialize timeline data if provided\n useEffect(() => {\n if (initialData && !dataInitialized.current) {\n initialize(initialData);\n dataInitialized.current = true;\n }\n }, [initialData]);\n\n const contextValue: TimelineContextType = {\n contextId,\n selectedItem,\n timelineAction,\n totalDuration,\n changeLog,\n videoResolution,\n present: undoRedoContext.present,\n canUndo: undoRedoContext.canUndo,\n canRedo: undoRedoContext.canRedo,\n setVideoResolution,\n setSelectedItem,\n setTimelineAction,\n editor, // Include the editor instance\n };\n\n return (\n <TimelineContext.Provider value={contextValue}>\n {children}\n </TimelineContext.Provider>\n );\n};\n\n/**\n * Provider component for the Timeline context.\n * Wraps the timeline functionality with PostHog analytics and undo/redo support.\n * Manages the global state for timeline instances including tracks, elements,\n * playback state, and history management.\n *\n * @param props - Timeline provider configuration\n * @returns Context provider with timeline state management\n *\n * @example\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * initialData={{ tracks: [], version: 1 }}\n * undoRedoPersistenceKey=\"timeline-state\"\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n *\n * @example\n * Disable analytics:\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * analytics={{ enabled: false }}\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n */\nexport const TimelineProvider = ({\n contextId,\n children,\n resolution = { width: 720, height: 1280 },\n initialData,\n undoRedoPersistenceKey,\n maxHistorySize,\n analytics,\n}: TimelineProviderProps) => {\n // Determine if analytics is enabled\n const analyticsEnabled = isAnalyticsEnabled(analytics);\n const apiKey = getPostHogApiKey(analytics);\n const onPostHogLoaded = (posthog: PostHog) => {\n trackEvent(posthog, \"timeline_editor_created\", {\n contextId,\n url: typeof window !== \"undefined\" ? window.location.href : undefined,\n timestamp: new Date().toISOString(),\n });\n };\n\n const postHogOptions = getPostHogOptions(analytics, onPostHogLoaded);\n\n // If analytics is disabled, skip PostHogProvider\n if (!analyticsEnabled || !apiKey) {\n return (\n <UndoRedoProvider\n persistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n >\n <TimelineProviderInner\n resolution={resolution}\n initialData={initialData}\n contextId={contextId}\n undoRedoPersistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n analytics={analytics}\n >\n {children}\n </TimelineProviderInner>\n </UndoRedoProvider>\n );\n }\n\n // If undo/redo is enabled, wrap with UndoRedoProvider\n return (\n <PostHogProvider\n apiKey={apiKey}\n options={postHogOptions as Partial<PostHogConfig>}\n >\n <UndoRedoProvider\n persistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n >\n <TimelineProviderInner\n resolution={resolution}\n initialData={initialData}\n contextId={contextId}\n undoRedoPersistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n analytics={analytics}\n >\n {children}\n </TimelineProviderInner>\n </UndoRedoProvider>\n </PostHogProvider>\n );\n};\n\n/**\n * Hook to access the Timeline context.\n * Provides access to timeline state, editor instance, and timeline management functions.\n * Must be used within a TimelineProvider component.\n *\n * @returns TimelineContextType object with all timeline state and controls\n * @throws Error if used outside of TimelineProvider\n *\n * @example\n * ```js\n * const {\n * editor,\n * selectedItem,\n * totalDuration,\n * canUndo,\n * canRedo,\n * setSelectedItem,\n * setTimelineAction\n * } = useTimelineContext();\n *\n * // Access the timeline editor\n * const tracks = editor.getTracks();\n *\n * // Check if undo is available\n * if (canUndo) {\n * editor.undo();\n * }\n *\n * // Set timeline action\n * setTimelineAction(TIMELINE_ACTION.SET_PLAYER_STATE, { playing: true });\n * ```\n */\nexport const useTimelineContext = () => {\n const context = useContext(TimelineContext);\n if (context === undefined) {\n throw new Error(\n \"useTimelineContext must be used within a TimelineProvider\"\n );\n }\n return context;\n};\n","/**\n * @twick/timeline - Timeline Package\n * \n * A comprehensive timeline management system for the Twick video platform.\n * Provides track-based video editing capabilities with support for multiple\n * element types, undo/redo functionality, and real-time timeline manipulation.\n * \n * @example\n * ```jsx\n * import { \n * TimelineProvider, \n * TimelineEditor, \n * Track, \n * VideoElement,\n * TextElement \n * } from '@twick/timeline';\n * \n * function App() {\n * return (\n * <TimelineProvider contextId=\"my-timeline\">\n * <TimelineEditor />\n * </TimelineProvider>\n * );\n * }\n * ```\n */\n\nimport { TIMELINE_ELEMENT_TYPE } from \"./utils/constants\";\nimport { TimelineEditor } from \"./core/editor/timeline.editor\";\nimport {\n TimelineProvider,\n TimelineProviderProps,\n} from \"./context/timeline-context\";\nimport { Track } from \"./core/track/track\";\nimport { ElementDeserializer } from \"./core/visitor/element-deserializer\";\nimport { ElementSerializer } from \"./core/visitor/element-serializer\";\nimport { ElementValidator } from \"./core/visitor/element-validator\";\nimport { ElementAdder } from \"./core/visitor/element-adder\";\nimport { ElementRemover } from \"./core/visitor/element-remover\";\nimport { ElementUpdater } from \"./core/visitor/element-updater\";\nimport { ElementSplitter } from \"./core/visitor/element-splitter\";\nimport { ElementCloner } from \"./core/visitor/element-cloner\";\nimport { CaptionElement } from \"./core/elements/caption.element\";\nimport { RectElement } from \"./core/elements/rect.element\";\nimport { TextElement } from \"./core/elements/text.element\";\nimport { ImageElement } from \"./core/elements/image.element\";\nimport { AudioElement } from \"./core/elements/audio.element\";\nimport { CircleElement } from \"./core/elements/circle.element\";\nimport { IconElement } from \"./core/elements/icon.element\";\nimport { VideoElement } from \"./core/elements/video.element\";\nimport {\n generateShortUuid,\n getTotalDuration,\n getCurrentElements,\n isTrackId,\n isElementId,\n} from \"./utils/timeline.utils\";\nimport { TrackElement } from \"./core/elements/base.element\";\nimport { ElementAnimation } from \"./core/addOns/animation\";\nimport { ElementFrameEffect } from \"./core/addOns/frame-effect\";\nimport { ElementTextEffect } from \"./core/addOns/text-effect\";\n\n// Core element types\nexport {\n TrackElement,\n Track,\n CaptionElement,\n RectElement,\n TextElement,\n ImageElement,\n IconElement,\n AudioElement,\n CircleElement,\n VideoElement,\n ElementAnimation,\n ElementFrameEffect,\n ElementTextEffect\n};\n\n// Timeline management\nexport {\n TimelineProvider,\n TimelineEditor,\n};\n\n// Types and interfaces\nexport type { TimelineProviderProps };\nexport { TIMELINE_ELEMENT_TYPE };\n\n// Utilities and helpers\nexport * from \"./types\";\nexport * from \"./utils/constants\";\nexport * from \"./utils/timeline.utils\";\nexport * from \"./context/timeline-context\";\n\n// Core components\nexport * from \"./core/track/track\";\nexport * from \"./core/elements/base.element\";\nexport * from \"./core/visitor/element-visitor\";\nexport * from \"./core/visitor/element-serializer\";\nexport * from \"./core/visitor/element-deserializer\";\nexport * from \"./core/visitor/element-validator\";\nexport * from \"./core/visitor/element-adder\";\nexport * from \"./core/visitor/element-remover\";\nexport * from \"./core/visitor/element-updater\";\nexport * from \"./core/visitor/element-splitter\";\nexport * from \"./core/visitor/element-cloner\";\n\n// Expose classes globally on window object for browser access\nif (typeof window !== \"undefined\") {\n // Also expose the main exports\n (window as any).Twick = {\n Track: Track,\n TrackElement,\n ElementDeserializer,\n ElementSerializer,\n ElementValidator,\n ElementAdder,\n ElementRemover,\n ElementUpdater,\n ElementSplitter,\n ElementCloner,\n TimelineEditor,\n TimelineProvider,\n TIMELINE_ELEMENT_TYPE,\n // Element types\n CaptionElement,\n RectElement,\n TextElement,\n ImageElement,\n AudioElement,\n CircleElement,\n IconElement,\n VideoElement,\n ElementAnimation,\n ElementFrameEffect,\n ElementTextEffect,\n // Utility functions\n generateShortUuid,\n getTotalDuration,\n getCurrentElements,\n isTrackId,\n isElementId,\n };\n}\n"],"names":["fn","s","i","n","e","name","c","r","v","j","t","version","createContext","useState","useContext","o","a","l","u","h","d","f","p","g","_","m","y","b","w","x","E","S","k","P","T","I","C","R","F","M","O","A","D","L","N","U","z","H","B","q","W","G","V","J","posthogJs","_i","useRef","useMemo","useEffect","jsx"],"mappings":"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","x_google_ignoreList":[29,30]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/constants.ts","../../media-utils/dist/index.mjs","../src/core/elements/base.element.ts","../src/core/elements/video.element.ts","../src/utils/timeline.utils.ts","../src/core/elements/audio.element.ts","../src/core/elements/image.element.ts","../src/core/elements/text.element.ts","../src/core/elements/caption.element.ts","../src/core/elements/icon.element.ts","../src/core/elements/circle.element.ts","../src/core/elements/rect.element.ts","../src/core/addOns/animation.ts","../src/core/addOns/frame-effect.ts","../src/core/addOns/text-effect.ts","../src/core/visitor/element-deserializer.ts","../src/core/visitor/element-serializer.ts","../src/core/visitor/element-validator.ts","../src/core/track/track.friend.ts","../src/core/track/track.ts","../src/services/data.service.ts","../src/core/visitor/element-adder.ts","../src/core/visitor/element-remover.ts","../src/core/visitor/element-updater.ts","../src/core/visitor/element-cloner.ts","../src/core/visitor/element-splitter.ts","../src/core/editor/timeline.editor.ts","../src/context/undo-redo-context.tsx","../src/utils/register-editor.ts","../../../node_modules/.pnpm/posthog-js@1.335.5/node_modules/posthog-js/dist/module.js","../../../node_modules/.pnpm/posthog-js@1.335.5/node_modules/posthog-js/react/dist/esm/index.js","../src/utils/version.ts","../src/utils/analytics.ts","../src/context/timeline-context.tsx","../src/index.ts"],"sourcesContent":["/**\n * Initial timeline data structure for new video editor projects.\n * Provides a default timeline with a sample text element to get started.\n * \n * @example\n * ```js\n * import { INITIAL_TIMELINE_DATA } from '@twick/timeline';\n * \n * // Use as starting point for new projects\n * const newProject = {\n * ...INITIAL_TIMELINE_DATA,\n * tracks: [...INITIAL_TIMELINE_DATA.tracks, newTrack]\n * };\n * ```\n */\nexport const INITIAL_TIMELINE_DATA = {\n tracks: [\n {\n type: \"element\",\n id: \"t-sample\",\n name: \"sample\",\n elements: [\n {\n id: \"e-sample\",\n trackId: \"t-sample\",\n name: \"sample\",\n type: \"text\",\n s: 0,\n e: 5,\n props: {\n text: \"Twick SDK\",\n fill: \"#FFFFFF\",\n },\n },\n ],\n },\n ],\n version: 1,\n};\n\n/**\n * Player state constants for timeline playback control.\n * Defines the different states that a timeline player can be in during playback.\n * \n * @example\n * ```js\n * import { PLAYER_STATE } from '@twick/timeline';\n * \n * if (playerState === PLAYER_STATE.PLAYING) {\n * console.log('Timeline is currently playing');\n * }\n * ```\n */\nexport const PLAYER_STATE = {\n /** Player is refreshing/reloading content */\n REFRESH: \"Refresh\",\n /** Player is actively playing content */\n PLAYING: \"Playing\",\n /** Player is paused */\n PAUSED: \"Paused\",\n} as const;\n\n/**\n * Caption styling options for text elements.\n * Defines different visual styles for caption text rendering.\n * \n * @example\n * ```js\n * import { CAPTION_STYLE } from '@twick/timeline';\n * \n * const captionElement = new CaptionElement({\n * style: CAPTION_STYLE.WORD_BY_WORD\n * });\n * ```\n */\nexport const CAPTION_STYLE = {\n /** Highlights background of each word */\n WORD_BG_HIGHLIGHT: \"highlight_bg\",\n /** Animates text word by word */\n WORD_BY_WORD: \"word_by_word\",\n /** Animates text word by word with background highlighting */\n WORD_BY_WORD_WITH_BG: \"word_by_word_with_bg\",\n} as const;\n\n/**\n * Human-readable options for caption styles.\n * Provides user-friendly labels for caption style selection.\n * \n * @example\n * ```js\n * import { CAPTION_STYLE_OPTIONS } from '@twick/timeline';\n * \n * const options = Object.values(CAPTION_STYLE_OPTIONS);\n * // Returns array of style options with labels\n * ```\n */\nexport const CAPTION_STYLE_OPTIONS = {\n [CAPTION_STYLE.WORD_BG_HIGHLIGHT]: {\n label: \"Highlight Background\",\n value: CAPTION_STYLE.WORD_BG_HIGHLIGHT,\n },\n [CAPTION_STYLE.WORD_BY_WORD]: {\n label: \"Word by Word\",\n value: CAPTION_STYLE.WORD_BY_WORD,\n },\n [CAPTION_STYLE.WORD_BY_WORD_WITH_BG]: {\n label: \"Word with Background\",\n value: CAPTION_STYLE.WORD_BY_WORD_WITH_BG,\n },\n} as const;\n\n/**\n * Default font settings for caption elements.\n * Defines the standard typography configuration for captions.\n * \n * @example\n * ```js\n * import { CAPTION_FONT } from '@twick/timeline';\n * \n * const fontSize = CAPTION_FONT.size; // 40\n * ```\n */\nexport const CAPTION_FONT = {\n /** Font size in pixels */\n size: 40,\n} as const;\n\n/**\n * Default color scheme for caption elements.\n * Defines the standard color palette for caption text and backgrounds.\n * \n * @example\n * ```js\n * import { CAPTION_COLOR } from '@twick/timeline';\n * \n * const textColor = CAPTION_COLOR.text; // \"#ffffff\"\n * const highlightColor = CAPTION_COLOR.highlight; // \"#ff4081\"\n * ```\n */\nexport const CAPTION_COLOR = {\n /** Text color in hex format */\n text: \"#ffffff\",\n /** Highlight color in hex format */\n highlight: \"#ff4081\",\n /** Background color in hex format */\n bgColor: \"#8C52FF\",\n} as const;\n\n/**\n * Number of words to display per phrase in caption animations.\n * Controls the chunking of text for word-by-word animations.\n * \n * @example\n * ```js\n * import { WORDS_PER_PHRASE } from '@twick/timeline';\n * \n * const phraseLength = WORDS_PER_PHRASE; // 4\n * ```\n */\nexport const WORDS_PER_PHRASE = 4;\n\n/**\n * Timeline action types for state management.\n * Defines the different actions that can be performed on the timeline.\n * \n * @example\n * ```js\n * import { TIMELINE_ACTION } from '@twick/timeline';\n * \n * if (action.type === TIMELINE_ACTION.SET_PLAYER_STATE) {\n * // Handle player state change\n * }\n * ```\n */\nexport const TIMELINE_ACTION = {\n /** No action being performed */\n NONE: \"none\",\n /** Setting the player state (play/pause) */\n SET_PLAYER_STATE: \"setPlayerState\",\n /** Updating player data */\n UPDATE_PLAYER_DATA: \"updatePlayerData\",\n /** Player has been updated */\n ON_PLAYER_UPDATED: \"onPlayerUpdated\",\n} as const;\n\n/**\n * Element type constants for timeline elements.\n * Defines the different types of elements that can be added to timeline tracks.\n * \n * @example\n * ```js\n * import { TIMELINE_ELEMENT_TYPE } from '@twick/timeline';\n * \n * if (element.type === TIMELINE_ELEMENT_TYPE.VIDEO) {\n * // Handle video element\n * }\n * ```\n */\nexport const TIMELINE_ELEMENT_TYPE = {\n /** Video element type */\n VIDEO: \"video\",\n /** Caption element type */\n CAPTION: \"caption\",\n /** Image element type */\n IMAGE: \"image\",\n /** Audio element type */\n AUDIO: \"audio\",\n /** Text element type */\n TEXT: \"text\",\n /** Rectangle element type */\n RECT: \"rect\",\n /** Circle element type */\n CIRCLE: \"circle\",\n /** Icon element type */\n ICON: \"icon\",\n} as const;\n\n/**\n * Process state constants for async operations.\n * Defines the different states of background processing operations.\n * \n * @example\n * ```js\n * import { PROCESS_STATE } from '@twick/timeline';\n * \n * if (processState === PROCESS_STATE.PROCESSING) {\n * // Show loading indicator\n * }\n * ```\n */\nexport const PROCESS_STATE = {\n /** Process is idle */\n IDLE: \"Idle\",\n /** Process is currently running */\n PROCESSING: \"Processing\",\n /** Process has completed successfully */\n COMPLETED: \"Completed\",\n /** Process has failed */\n FAILED: \"Failed\",\n} as const; ","const imageDimensionsCache = {};\nconst videoMetaCache = {};\nconst audioDurationCache = {};\n\nconst getAudioDuration = (audioSrc) => {\n if (audioDurationCache[audioSrc]) {\n return Promise.resolve(audioDurationCache[audioSrc]);\n }\n return new Promise((resolve, reject) => {\n const audio = document.createElement(\"audio\");\n audio.preload = \"metadata\";\n const isSafeUrl = /^(https?:|blob:|data:audio\\/)/i.test(audioSrc);\n if (!isSafeUrl) {\n throw new Error(\"Unsafe audio source URL\");\n }\n audio.src = audioSrc;\n audio.onloadedmetadata = () => {\n const duration = audio.duration;\n audioDurationCache[audioSrc] = duration;\n resolve(duration);\n };\n audio.onerror = () => {\n reject(new Error(\"Failed to load audio metadata\"));\n };\n });\n};\n\nconst concurrencyLimit = 5;\nlet activeCount = 0;\nconst queue = [];\nfunction runNext() {\n if (queue.length === 0 || activeCount >= concurrencyLimit) return;\n const next = queue.shift();\n if (next) {\n activeCount++;\n next();\n }\n}\nfunction limit(fn) {\n return new Promise((resolve, reject) => {\n const task = () => {\n fn().then(resolve).catch(reject).finally(() => {\n activeCount--;\n runNext();\n });\n };\n if (activeCount < concurrencyLimit) {\n activeCount++;\n task();\n } else {\n queue.push(task);\n }\n });\n}\n\nconst loadImageDimensions = (url) => {\n return new Promise((resolve, reject) => {\n if (typeof document === \"undefined\") {\n reject(new Error(\"getImageDimensions() is only available in the browser.\"));\n return;\n }\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.naturalWidth, height: img.naturalHeight });\n };\n img.onerror = reject;\n img.src = url;\n });\n};\nconst getImageDimensions = (url) => {\n if (imageDimensionsCache[url]) {\n return Promise.resolve(imageDimensionsCache[url]);\n }\n return limit(() => loadImageDimensions(url)).then((dimensions) => {\n imageDimensionsCache[url] = dimensions;\n return dimensions;\n });\n};\n\nconst getVideoMeta = (videoSrc) => {\n if (videoMetaCache[videoSrc]) {\n return Promise.resolve(videoMetaCache[videoSrc]);\n }\n return new Promise((resolve, reject) => {\n const isSafeUrl = /^(https?:|blob:|data:video\\/)/i.test(videoSrc);\n if (!isSafeUrl) {\n reject(new Error(\"Unsafe video source URL\"));\n return;\n }\n const tryLoadVideo = (useCors) => {\n const video = document.createElement(\"video\");\n video.preload = \"metadata\";\n video.crossOrigin = useCors ? \"anonymous\" : null;\n video.src = videoSrc;\n video.onloadedmetadata = () => {\n const meta = {\n width: video.videoWidth,\n height: video.videoHeight,\n duration: video.duration\n };\n videoMetaCache[videoSrc] = meta;\n resolve(meta);\n };\n video.onerror = () => {\n if (useCors) {\n video.src = \"\";\n tryLoadVideo(false);\n } else {\n reject(new Error(\"Failed to load video metadata. This may be due to CORS restrictions or an invalid video URL.\"));\n }\n };\n };\n tryLoadVideo(true);\n });\n};\n\nconst getThumbnail = async (videoUrl, seekTime = 0.1, playbackRate = 1) => {\n return new Promise((resolve, reject) => {\n const tryLoadThumbnail = (useCors) => {\n const video = document.createElement(\"video\");\n video.crossOrigin = useCors ? \"anonymous\" : null;\n video.muted = true;\n video.playsInline = true;\n video.autoplay = false;\n video.preload = \"auto\";\n video.playbackRate = playbackRate;\n video.style.position = \"absolute\";\n video.style.left = \"-9999px\";\n video.style.top = \"-9999px\";\n video.style.width = \"1px\";\n video.style.height = \"1px\";\n video.style.opacity = \"0\";\n video.style.pointerEvents = \"none\";\n video.style.zIndex = \"-1\";\n let timeoutId;\n const cleanup = () => {\n if (video.parentNode) video.remove();\n if (timeoutId) clearTimeout(timeoutId);\n };\n const handleError = () => {\n cleanup();\n if (useCors) {\n tryLoadThumbnail(false);\n } else {\n reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error. This may be due to CORS restrictions or an invalid video URL.\"}`));\n }\n };\n const handleSeeked = () => {\n try {\n video.pause();\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n cleanup();\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", 0.8);\n cleanup();\n resolve(dataUrl);\n } catch {\n canvas.toBlob((blob) => {\n if (!blob) {\n cleanup();\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n cleanup();\n resolve(blobUrl);\n }, \"image/jpeg\", 0.8);\n }\n } catch (err) {\n cleanup();\n reject(new Error(`Error creating thumbnail: ${err}`));\n }\n };\n video.addEventListener(\"error\", handleError, { once: true });\n video.addEventListener(\"seeked\", handleSeeked, { once: true });\n video.addEventListener(\"loadedmetadata\", () => {\n const playPromise = video.play();\n if (playPromise !== void 0) {\n playPromise.then(() => {\n video.currentTime = seekTime || 0.1;\n }).catch(() => {\n video.currentTime = seekTime || 0.1;\n });\n } else {\n video.currentTime = seekTime || 0.1;\n }\n }, { once: true });\n timeoutId = window.setTimeout(() => {\n cleanup();\n reject(new Error(\"Video loading timed out\"));\n }, 15e3);\n video.src = videoUrl;\n document.body.appendChild(video);\n };\n tryLoadThumbnail(true);\n });\n};\n\nclass LRUCache {\n constructor(maxSize = 100) {\n if (maxSize <= 0) {\n throw new Error(\"maxSize must be greater than 0\");\n }\n this.maxSize = maxSize;\n this.cache = /* @__PURE__ */ new Map();\n }\n /**\n * Get a value from the cache.\n * Moves the item to the end (most recently used).\n */\n get(key) {\n const value = this.cache.get(key);\n if (value === void 0) {\n return void 0;\n }\n this.cache.delete(key);\n this.cache.set(key, value);\n return value;\n }\n /**\n * Set a value in the cache.\n * If cache is full, removes the least recently used item.\n */\n set(key, value) {\n if (this.cache.has(key)) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== void 0) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n /**\n * Check if a key exists in the cache.\n */\n has(key) {\n return this.cache.has(key);\n }\n /**\n * Delete a key from the cache.\n */\n delete(key) {\n return this.cache.delete(key);\n }\n /**\n * Clear all entries from the cache.\n */\n clear() {\n this.cache.clear();\n }\n /**\n * Get the current size of the cache.\n */\n get size() {\n return this.cache.size;\n }\n}\n\nclass VideoFrameExtractor {\n constructor(options = {}) {\n this.frameCache = new LRUCache(\n options.maxCacheSize ?? 50\n );\n this.videoElements = /* @__PURE__ */ new Map();\n this.maxVideoElements = options.maxVideoElements ?? 5;\n this.loadTimeout = options.loadTimeout ?? 15e3;\n this.jpegQuality = options.jpegQuality ?? 0.8;\n this.playbackRate = options.playbackRate ?? 1;\n }\n /**\n * Get a frame thumbnail from a video at a specific time.\n * Uses caching and reuses video elements for optimal performance.\n * Uses 0.1s instead of 0 when seekTime is 0, since frames at t=0 are often blank.\n *\n * @param videoUrl - The URL of the video\n * @param seekTime - The time in seconds to extract the frame (0 is treated as 0.1)\n * @returns Promise resolving to a thumbnail image URL (data URL or blob URL)\n */\n async getFrame(videoUrl, seekTime = 0.1) {\n const effectiveSeekTime = seekTime === 0 ? 0.1 : seekTime;\n const cacheKey = this.getCacheKey(videoUrl, effectiveSeekTime);\n const cached = this.frameCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n const videoState = await this.getVideoElement(videoUrl);\n const thumbnail = await this.extractFrame(videoState.video, effectiveSeekTime);\n this.frameCache.set(cacheKey, thumbnail);\n return thumbnail;\n }\n /**\n * Get or create a video element for the given URL.\n * Reuses existing elements and manages cleanup.\n */\n async getVideoElement(videoUrl) {\n let videoState = this.videoElements.get(videoUrl);\n if (videoState && videoState.isReady) {\n videoState.lastUsed = Date.now();\n return videoState;\n }\n if (videoState && videoState.isLoading && videoState.loadPromise) {\n await videoState.loadPromise;\n if (videoState.isReady) {\n videoState.lastUsed = Date.now();\n return videoState;\n }\n }\n if (this.videoElements.size >= this.maxVideoElements) {\n this.cleanupOldVideoElements();\n }\n videoState = await this.createVideoElement(videoUrl);\n this.videoElements.set(videoUrl, videoState);\n videoState.lastUsed = Date.now();\n return videoState;\n }\n /**\n * Create and initialize a new video element.\n */\n async createVideoElement(videoUrl) {\n const video = document.createElement(\"video\");\n video.crossOrigin = \"anonymous\";\n video.muted = true;\n video.playsInline = true;\n video.autoplay = false;\n video.preload = \"auto\";\n video.playbackRate = this.playbackRate;\n video.style.position = \"absolute\";\n video.style.left = \"-9999px\";\n video.style.top = \"-9999px\";\n video.style.width = \"1px\";\n video.style.height = \"1px\";\n video.style.opacity = \"0\";\n video.style.pointerEvents = \"none\";\n video.style.zIndex = \"-1\";\n const state = {\n video,\n isReady: false,\n isLoading: true,\n loadPromise: null,\n lastUsed: Date.now()\n };\n state.loadPromise = new Promise((resolve, reject) => {\n let timeoutId;\n const cleanup = () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n const handleError = () => {\n cleanup();\n state.isLoading = false;\n reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error\"}`));\n };\n const handleLoadedMetadata = () => {\n cleanup();\n state.isReady = true;\n state.isLoading = false;\n resolve();\n };\n video.addEventListener(\"error\", handleError, { once: true });\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata, { once: true });\n timeoutId = window.setTimeout(() => {\n cleanup();\n state.isLoading = false;\n reject(new Error(\"Video loading timed out\"));\n }, this.loadTimeout);\n video.src = videoUrl;\n document.body.appendChild(video);\n });\n try {\n await state.loadPromise;\n } catch (error) {\n if (video.parentNode) {\n video.remove();\n }\n throw error;\n }\n return state;\n }\n /**\n * Extract a frame from a video at the specified time.\n */\n async extractFrame(video, seekTime) {\n return new Promise((resolve, reject) => {\n video.pause();\n const timeThreshold = 0.1;\n if (Math.abs(video.currentTime - seekTime) < timeThreshold) {\n try {\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", this.jpegQuality);\n resolve(dataUrl);\n } catch {\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n resolve(blobUrl);\n },\n \"image/jpeg\",\n this.jpegQuality\n );\n }\n return;\n } catch (err) {\n reject(new Error(`Error creating thumbnail: ${err}`));\n return;\n }\n }\n const handleSeeked = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n const width = video.videoWidth || 640;\n const height = video.videoHeight || 360;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Failed to get canvas context\"));\n return;\n }\n ctx.drawImage(video, 0, 0, width, height);\n try {\n const dataUrl = canvas.toDataURL(\"image/jpeg\", this.jpegQuality);\n resolve(dataUrl);\n } catch {\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n reject(new Error(\"Failed to create Blob\"));\n return;\n }\n const blobUrl = URL.createObjectURL(blob);\n resolve(blobUrl);\n },\n \"image/jpeg\",\n this.jpegQuality\n );\n }\n } catch (err) {\n reject(new Error(`Error creating thumbnail: ${err}`));\n }\n };\n video.addEventListener(\"seeked\", handleSeeked, { once: true });\n const playPromise = video.play();\n if (playPromise !== void 0) {\n playPromise.then(() => {\n video.currentTime = seekTime;\n }).catch(() => {\n video.currentTime = seekTime;\n });\n } else {\n video.currentTime = seekTime;\n }\n });\n }\n /**\n * Generate cache key for a video URL and seek time.\n */\n getCacheKey(videoUrl, seekTime) {\n const roundedTime = Math.round(seekTime * 100) / 100;\n return `${videoUrl}:${roundedTime}`;\n }\n /**\n * Cleanup least recently used video elements.\n */\n cleanupOldVideoElements() {\n if (this.videoElements.size < this.maxVideoElements) {\n return;\n }\n const entries = Array.from(this.videoElements.entries());\n entries.sort((a, b) => a[1].lastUsed - b[1].lastUsed);\n const toRemove = entries.slice(0, entries.length - this.maxVideoElements + 1);\n for (const [url, state] of toRemove) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n this.videoElements.delete(url);\n }\n }\n /**\n * Clear the frame cache.\n */\n clearCache() {\n this.frameCache.clear();\n }\n /**\n * Remove a specific video element and clear its cached frames.\n */\n removeVideo(videoUrl) {\n const state = this.videoElements.get(videoUrl);\n if (state) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n this.videoElements.delete(videoUrl);\n }\n this.frameCache.clear();\n }\n /**\n * Dispose of all video elements and clear caches.\n * Removes all video elements from the DOM and clears both the frame cache\n * and video element cache. Call this when the extractor is no longer needed\n * to prevent memory leaks.\n */\n dispose() {\n for (const state of this.videoElements.values()) {\n if (state.video.parentNode) {\n state.video.remove();\n }\n }\n this.videoElements.clear();\n this.frameCache.clear();\n }\n}\nlet defaultExtractor = null;\nfunction getDefaultVideoFrameExtractor(options) {\n if (!defaultExtractor) {\n defaultExtractor = new VideoFrameExtractor(options);\n }\n return defaultExtractor;\n}\nasync function getThumbnailCached(videoUrl, seekTime = 0.1, playbackRate) {\n const extractor = getDefaultVideoFrameExtractor(\n playbackRate !== void 0 ? { playbackRate } : void 0\n );\n return extractor.getFrame(videoUrl, seekTime);\n}\n\nconst extractAudio = async ({\n src,\n playbackRate = 1,\n start = 0,\n end\n}) => {\n if (!src) throw new Error(\"src is required\");\n if (playbackRate <= 0) throw new Error(\"playbackRate must be > 0\");\n const isSafeUrl = /^(https?:|blob:|data:)/i.test(src);\n if (!isSafeUrl) throw new Error(\"Unsafe media source URL\");\n const audioBuffer = await fetchAndDecodeAudio(src);\n if (audioBuffer.duration === 0 || audioBuffer.length === 0) {\n throw new Error(\"No audio track found in the media source\");\n }\n if (isAudioSilent(audioBuffer)) {\n throw new Error(\"Audio track is silent (no audio content detected)\");\n }\n const clampedStart = Math.max(0, start || 0);\n const fullDuration = audioBuffer.duration;\n const clampedEnd = Math.min(\n typeof end === \"number\" ? end : fullDuration,\n fullDuration\n );\n if (clampedEnd <= clampedStart)\n throw new Error(\"Invalid range: end must be greater than start\");\n const renderedBuffer = await renderAudioSegment(\n audioBuffer,\n clampedStart,\n clampedEnd,\n playbackRate\n );\n const mp3Blob = await audioBufferToMp3(renderedBuffer);\n return URL.createObjectURL(mp3Blob);\n};\nconst hasAudio = async (src) => {\n if (!src) return false;\n const isSafeUrl = /^(https?:|blob:|data:)/i.test(src);\n if (!isSafeUrl) return false;\n try {\n const audioBuffer = await fetchAndDecodeAudio(src);\n if (audioBuffer.duration === 0 || audioBuffer.length === 0) {\n return false;\n }\n if (isAudioSilent(audioBuffer)) {\n return false;\n }\n return true;\n } catch (error) {\n return false;\n }\n};\nconst stitchAudio = async (segments, totalDuration) => {\n if (!segments || segments.length === 0) {\n throw new Error(\"At least one audio segment is required\");\n }\n const duration = totalDuration || Math.max(...segments.map((s) => s.e));\n const renderedBuffer = await createAudioTimeline(segments, duration);\n const mp3Blob = await audioBufferToMp3(renderedBuffer);\n return URL.createObjectURL(mp3Blob);\n};\nconst fetchAndDecodeAudio = async (src) => {\n const response = await fetch(src);\n if (!response.ok) throw new Error(`Failed to fetch source: ${response.status}`);\n const arrayBuffer = await response.arrayBuffer();\n return decodeAudioData(arrayBuffer);\n};\nconst decodeAudioData = async (arrayBuffer) => {\n const AudioContextCtor = window.AudioContext || window.webkitAudioContext;\n if (!AudioContextCtor) throw new Error(\"Web Audio API not supported\");\n const audioContext = new AudioContextCtor();\n try {\n return await new Promise((resolve, reject) => {\n audioContext.decodeAudioData(\n arrayBuffer.slice(0),\n (buf) => resolve(buf),\n (err) => reject(err || new Error(\"Failed to decode audio: no audio track found or unsupported format\"))\n );\n });\n } finally {\n audioContext.close();\n }\n};\nconst isAudioSilent = (buffer, threshold = 1e-3) => {\n for (let channel = 0; channel < buffer.numberOfChannels; channel++) {\n const channelData = buffer.getChannelData(channel);\n for (let i = 0; i < channelData.length; i += 100) {\n if (Math.abs(channelData[i]) > threshold) {\n return false;\n }\n }\n }\n return true;\n};\nconst renderAudioSegment = async (audioBuffer, start, end, playbackRate) => {\n const OfflineAudioContextCtor = window.OfflineAudioContext || window.webkitOfflineAudioContext;\n if (!OfflineAudioContextCtor) throw new Error(\"OfflineAudioContext not supported\");\n const sampleRate = audioBuffer.sampleRate;\n const numChannels = audioBuffer.numberOfChannels;\n const sourceDuration = end - start;\n const renderedFrames = Math.max(\n 1,\n Math.ceil(sourceDuration / playbackRate * sampleRate)\n );\n const offline = new OfflineAudioContextCtor(numChannels, renderedFrames, sampleRate);\n const sourceNode = offline.createBufferSource();\n sourceNode.buffer = audioBuffer;\n sourceNode.playbackRate.value = playbackRate;\n sourceNode.connect(offline.destination);\n sourceNode.start(0, start, sourceDuration);\n return await offline.startRendering();\n};\nconst createAudioTimeline = async (segments, duration) => {\n const OfflineAudioContextCtor = window.OfflineAudioContext || window.webkitOfflineAudioContext;\n if (!OfflineAudioContextCtor) throw new Error(\"OfflineAudioContext not supported\");\n const sampleRate = 44100;\n const totalFrames = Math.ceil(duration * sampleRate);\n const offline = new OfflineAudioContextCtor(2, totalFrames, sampleRate);\n for (const segment of segments) {\n if (segment.s >= segment.e) continue;\n const volume = segment.volume ?? 1;\n if (volume <= 0) continue;\n try {\n const audioBuffer = await fetchAndDecodeAudio(segment.src);\n const segmentDuration = segment.e - segment.s;\n const sourceDuration = Math.min(segmentDuration, audioBuffer.duration);\n const source = offline.createBufferSource();\n source.buffer = audioBuffer;\n if (volume !== 1) {\n const gainNode = offline.createGain();\n gainNode.gain.value = volume;\n source.connect(gainNode);\n gainNode.connect(offline.destination);\n } else {\n source.connect(offline.destination);\n }\n source.start(segment.s, 0, sourceDuration);\n } catch {\n }\n }\n return await offline.startRendering();\n};\nconst audioBufferToMp3 = async (buffer) => {\n try {\n const wavArrayBuffer = audioBufferToWavArrayBuffer(buffer);\n const pcmBuffer = await decodeAudioData(wavArrayBuffer);\n return await encodePcmToMp3(pcmBuffer);\n } catch (error) {\n return audioBufferToWavBlob(buffer);\n }\n};\nconst audioBufferToWavArrayBuffer = (buffer) => {\n const numChannels = buffer.numberOfChannels;\n const sampleRate = buffer.sampleRate;\n const numFrames = buffer.length;\n const interleaved = interleave(buffer, numChannels, numFrames);\n const bytesPerSample = 2;\n const blockAlign = numChannels * bytesPerSample;\n const byteRate = sampleRate * blockAlign;\n const dataSize = interleaved.length * bytesPerSample;\n const bufferSize = 44 + dataSize;\n const arrayBuffer = new ArrayBuffer(bufferSize);\n const view = new DataView(arrayBuffer);\n writeString(view, 0, \"RIFF\");\n view.setUint32(4, 36 + dataSize, true);\n writeString(view, 8, \"WAVE\");\n writeString(view, 12, \"fmt \");\n view.setUint32(16, 16, true);\n view.setUint16(20, 1, true);\n view.setUint16(22, numChannels, true);\n view.setUint32(24, sampleRate, true);\n view.setUint32(28, byteRate, true);\n view.setUint16(32, blockAlign, true);\n view.setUint16(34, 16, true);\n writeString(view, 36, \"data\");\n view.setUint32(40, dataSize, true);\n floatTo16BitPCM(view, 44, interleaved);\n return arrayBuffer;\n};\nconst encodePcmToMp3 = async (buffer) => {\n const lamejs = await import('./index-CXhwwSX-.mjs').then(n => n.i);\n const channels = buffer.numberOfChannels >= 2 ? 2 : 1;\n const targetSampleRate = 22050;\n const downsampledBuffer = downsampleAudioBuffer(buffer, targetSampleRate);\n const kbps = 48;\n const mp3encoder = new lamejs.default.Mp3Encoder(channels, targetSampleRate, kbps);\n const samplesPerFrame = 1152;\n const leftFloat = downsampledBuffer.getChannelData(0);\n const left = floatTo16(leftFloat);\n let right;\n if (channels === 2) {\n const rightFloat = downsampledBuffer.getChannelData(1);\n right = floatTo16(rightFloat);\n }\n const mp3Chunks = [];\n for (let i = 0; i < left.length; i += samplesPerFrame) {\n const leftChunk = left.subarray(i, Math.min(i + samplesPerFrame, left.length));\n let mp3buf;\n if (channels === 2 && right) {\n const rightChunk = right.subarray(i, Math.min(i + samplesPerFrame, right.length));\n mp3buf = mp3encoder.encodeBuffer(leftChunk, rightChunk);\n } else {\n mp3buf = mp3encoder.encodeBuffer(leftChunk);\n }\n if (mp3buf.length > 0) mp3Chunks.push(mp3buf);\n }\n const end = mp3encoder.flush();\n if (end.length > 0) mp3Chunks.push(end);\n return new Blob(mp3Chunks, { type: \"audio/mpeg\" });\n};\nconst audioBufferToWavBlob = (buffer) => {\n const arrayBuffer = audioBufferToWavArrayBuffer(buffer);\n return new Blob([arrayBuffer], { type: \"audio/wav\" });\n};\nconst downsampleAudioBuffer = (buffer, targetSampleRate) => {\n if (buffer.sampleRate === targetSampleRate) {\n return buffer;\n }\n const ratio = buffer.sampleRate / targetSampleRate;\n const newLength = Math.round(buffer.length / ratio);\n const newBuffer = new AudioContext().createBuffer(\n buffer.numberOfChannels,\n newLength,\n targetSampleRate\n );\n for (let channel = 0; channel < buffer.numberOfChannels; channel++) {\n const oldData = buffer.getChannelData(channel);\n const newData = newBuffer.getChannelData(channel);\n for (let i = 0; i < newLength; i++) {\n const oldIndex = Math.floor(i * ratio);\n newData[i] = oldData[oldIndex];\n }\n }\n return newBuffer;\n};\nconst interleave = (buffer, numChannels, numFrames) => {\n if (numChannels === 1) {\n return buffer.getChannelData(0).slice(0, numFrames);\n }\n const result = new Float32Array(numFrames * numChannels);\n const channelData = [];\n for (let ch = 0; ch < numChannels; ch++) {\n channelData[ch] = buffer.getChannelData(ch);\n }\n let writeIndex = 0;\n for (let i = 0; i < numFrames; i++) {\n for (let ch = 0; ch < numChannels; ch++) {\n result[writeIndex++] = channelData[ch][i];\n }\n }\n return result;\n};\nconst floatTo16BitPCM = (view, offset, input) => {\n let pos = offset;\n for (let i = 0; i < input.length; i++, pos += 2) {\n let s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(pos, s < 0 ? s * 32768 : s * 32767, true);\n }\n};\nconst floatTo16 = (input) => {\n const output = new Int16Array(input.length);\n for (let i = 0; i < input.length; i++) {\n const s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 32768 : s * 32767;\n }\n return output;\n};\nconst writeString = (view, offset, str) => {\n for (let i = 0; i < str.length; i++) {\n view.setUint8(offset + i, str.charCodeAt(i));\n }\n};\n\nconst getScaledDimensions = (width, height, maxWidth, maxHeight) => {\n if (width <= maxWidth && height <= maxHeight) {\n return {\n width: width % 2 === 0 ? width : width - 1,\n height: height % 2 === 0 ? height : height - 1\n };\n }\n const widthRatio = maxWidth / width;\n const heightRatio = maxHeight / height;\n const scale = Math.min(widthRatio, heightRatio);\n let scaledWidth = Math.round(width * scale);\n let scaledHeight = Math.round(height * scale);\n if (scaledWidth % 2 !== 0) {\n scaledWidth -= 1;\n }\n if (scaledHeight % 2 !== 0) {\n scaledHeight -= 1;\n }\n return {\n width: Math.min(scaledWidth, maxWidth),\n height: Math.min(scaledHeight, maxHeight)\n };\n};\nconst getObjectFitSize = (objectFit, elementSize, containerSize) => {\n const elementAspectRatio = elementSize.width / elementSize.height;\n const containerAspectRatio = containerSize.width / containerSize.height;\n switch (objectFit) {\n case \"contain\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n } else {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n }\n case \"cover\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n } else {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n }\n case \"fill\":\n return {\n width: containerSize.width,\n height: containerSize.height\n };\n default:\n return {\n width: elementSize.width,\n height: elementSize.height\n };\n }\n};\n\nconst blobUrlToFile = async (blobUrl, fileName) => {\n const response = await fetch(blobUrl);\n const blob = await response.blob();\n return new File([blob], fileName, { type: blob.type });\n};\nconst loadFile = (accept) => {\n return new Promise((resolve, reject) => {\n try {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = accept;\n input.style.display = \"none\";\n document.body.appendChild(input);\n const cleanup = () => {\n input.value = \"\";\n document.body.removeChild(input);\n };\n input.onchange = () => {\n const file = input.files && input.files[0];\n cleanup();\n if (!file) {\n reject(new Error(\"No file selected\"));\n return;\n }\n resolve(file);\n };\n input.click();\n } catch (error) {\n reject(error);\n }\n });\n};\nconst saveAsFile = (content, type, name) => {\n const blob = typeof content === \"string\" ? new Blob([content], { type }) : content;\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = name;\n a.click();\n URL.revokeObjectURL(url);\n};\nconst downloadFile = async (url, filename) => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const downloadUrl = window.URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = downloadUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(downloadUrl);\n } catch (error) {\n throw error;\n }\n};\n\nconst detectMediaTypeFromUrl = async (url) => {\n try {\n const response = await fetch(url, { method: \"HEAD\" });\n const contentType = response.headers.get(\"Content-Type\");\n if (!contentType) return null;\n if (contentType.startsWith(\"image/\")) return \"image\";\n if (contentType.startsWith(\"video/\")) return \"video\";\n if (contentType.startsWith(\"audio/\")) return \"audio\";\n return null;\n } catch {\n return null;\n }\n};\n\nexport { VideoFrameExtractor, blobUrlToFile, detectMediaTypeFromUrl, downloadFile, extractAudio, getAudioDuration, getDefaultVideoFrameExtractor, getImageDimensions, getObjectFitSize, getScaledDimensions, getThumbnail, getThumbnailCached, getVideoMeta, hasAudio, limit, loadFile, saveAsFile, stitchAudio };\n//# sourceMappingURL=index.mjs.map\n","import { generateShortUuid } from \"../../utils/timeline.utils\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { ElementAnimation } from \"../addOns/animation\";\nimport { Position } from \"../../types\";\n\nexport abstract class TrackElement {\n protected id: string;\n protected type: string;\n protected s!: number;\n protected e!: number;\n protected trackId!: string;\n protected name!: string;\n protected animation?: ElementAnimation;\n protected props: Record<string, any>;\n\n constructor(type: string, id?: string) {\n this.id = id ?? `e-${generateShortUuid()}`;\n this.type = type;\n this.props = {\n x: 0,\n y: 0,\n opacity: 1,\n rotation: 0\n };\n }\n\n abstract accept<T>(visitor: ElementVisitor<T>): T;\n\n getId(): string {\n return this.id;\n }\n\n getType(): string {\n return this.type;\n }\n\n getStart(): number {\n return this.s;\n }\n\n getEnd(): number {\n return this.e;\n }\n\n getDuration(): number {\n return this.e - this.s;\n }\n\n getTrackId(): string {\n return this.trackId;\n }\n\n getProps(): Record<string, any> {\n return this.props;\n }\n\n getName(): string {\n return this.name;\n }\n\n getAnimation(): ElementAnimation | undefined {\n return this.animation;\n }\n\n getPosition(): Position {\n return {\n x: this.props?.x ?? 0,\n y: this.props?.y ?? 0\n };\n }\n\n getRotation(): number {\n return this.props.rotation ?? 0;\n }\n\n getOpacity(): number {\n return this.props.opacity ?? 1;\n }\n\n setId(id: string) {\n this.id = id;\n return this;\n }\n\n setType(type: string) {\n this.type = type;\n return this;\n }\n\n setStart(s: number) {\n this.s = Math.max(0, s);\n return this;\n }\n\n setEnd(e: number) {\n this.e = Math.max(this.s ?? 0, e);\n return this;\n }\n\n setTrackId(trackId: string) {\n this.trackId = trackId;\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n return this;\n }\n\n setAnimation(animation?: ElementAnimation) {\n this.animation = animation;\n return this;\n }\n\n setPosition(position: Position) {\n this.props.x = position.x;\n this.props.y = position.y;\n return this;\n }\n\n setRotation(rotation: number) { \n this.props.rotation = rotation;\n return this;\n }\n\n setOpacity(opacity: number) {\n this.props.opacity = opacity;\n return this;\n }\n\n setProps(props: Record<string, any>) {\n this.props = structuredClone(props);\n return this;\n }\n}\n","import { getObjectFitSize, getVideoMeta } from \"@twick/media-utils\";\nimport { Frame, ObjectFit, Position, Size, VideoProps } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\n\nexport class VideoElement extends TrackElement {\n protected baseSize!: Size;\n protected mediaDuration!: number;\n protected parentSize: Size;\n protected backgroundColor!: string;\n protected objectFit: ObjectFit;\n protected frameEffects?: ElementFrameEffect[];\n protected frame!: Frame;\n protected declare props: VideoProps;\n\n constructor(src: string, parentSize: Size) {\n super(TIMELINE_ELEMENT_TYPE.VIDEO);\n this.objectFit = \"cover\";\n this.frameEffects = [];\n this.parentSize = parentSize;\n this.props = {\n src,\n playbackRate: 1,\n time: 0,\n mediaFilter: \"none\",\n volume: 1,\n };\n }\n\n getParentSize() {\n return this.parentSize;\n }\n\n getFrame() {\n return this.frame;\n }\n\n getFrameEffects() {\n return this.frameEffects;\n }\n\n getBackgroundColor() {\n return this.backgroundColor;\n }\n\n getObjectFit() {\n return this.objectFit;\n }\n\n getMediaDuration() {\n return this.mediaDuration;\n }\n\n getStartAt(): number {\n return this.props.time || 0;\n }\n\n getEndAt(): number {\n return this.getDuration() * this.getPlaybackRate();\n }\n\n getSrc(): string {\n return this.props.src;\n }\n\n getPlaybackRate(): number {\n return this.props.playbackRate ?? 1;\n }\n\n getVolume(): number {\n return this.props.volume ?? 1;\n } \n\n override getRotation(): number {\n return this.frame?.rotation ?? 0;\n }\n\n override setRotation(rotation: number) {\n this.frame.rotation = rotation;\n return this;\n }\n \n override getPosition(): Position {\n return {\n x: this.frame.x ?? 0,\n y: this.frame.y ?? 0\n };\n }\n\n\n async updateVideoMeta(updateFrame: boolean = true) {\n const meta = await getVideoMeta(this.props.src);\n\n if (updateFrame) {\n const baseSize = getObjectFitSize(\n \"contain\",\n { width: meta.width, height: meta.height },\n this.parentSize\n );\n this.frame = {\n ...this.frame,\n size: [baseSize.width, baseSize.height],\n };\n }\n this.mediaDuration = meta.duration;\n }\n\n override setPosition(position: Position) {\n this.frame.x = position.x;\n this.frame.y = position.y;\n return this;\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateVideoMeta();\n return this;\n }\n\n setMediaDuration(mediaDuration: number) {\n this.mediaDuration = mediaDuration;\n return this;\n }\n\n setParentSize(parentSize: Size) {\n this.parentSize = structuredClone(parentSize);\n return this;\n }\n\n setObjectFit(objectFit: ObjectFit) {\n this.objectFit = objectFit;\n return this;\n }\n\n setFrame(frame: Frame) {\n this.frame = structuredClone(frame);\n return this;\n }\n\n setPlaybackRate(playbackRate: number) {\n this.props.playbackRate = playbackRate;\n return this;\n }\n\n setStartAt(time: number) {\n this.props.time = Math.max(0, time);\n return this;\n }\n\n setMediaFilter(mediaFilter: string) {\n this.props.mediaFilter = mediaFilter;\n return this;\n }\n\n setVolume(volume: number) {\n this.props.volume = volume;\n return this;\n }\n\n setBackgroundColor(backgroundColor: string) {\n this.backgroundColor = backgroundColor;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {\n ...structuredClone(props),\n src: this.props.src,\n };\n return this;\n }\n\n setFrameEffects(frameEffects?: ElementFrameEffect[]) {\n this.frameEffects = frameEffects;\n return this;\n }\n\n addFrameEffect(frameEffect: ElementFrameEffect) {\n this.frameEffects?.push(frameEffect);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitVideoElement(this);\n }\n}\n","import { extractAudio, stitchAudio } from \"@twick/media-utils\";\nimport { TrackElement } from \"../core/elements/base.element\";\nimport { VideoElement } from \"../core/elements/video.element\";\nimport { Track } from \"../core/track/track\";\nimport { TrackJSON } from \"../types\";\n\n/**\n * Rounds a number to a specified decimal precision.\n * Useful for ensuring consistent decimal places in timeline calculations.\n *\n * @param num - The number to round\n * @param precision - The number of decimal places to round to\n * @returns The rounded number\n * \n * @example\n * ```js\n * const rounded = getDecimalNumber(3.14159, 2);\n * // rounded = 3.14\n * ```\n */\nexport const getDecimalNumber = (num: number, precision = 3) => {\n return Number(num.toFixed(precision));\n};\n\n/**\n * Calculates the total duration of all tracks in a timeline.\n * Finds the maximum end time across all elements in all tracks\n * to determine the overall timeline duration.\n *\n * @param tracks - Array of track data containing elements\n * @returns The total duration in seconds\n * \n * @example\n * ```js\n * const duration = getTotalDuration(tracks);\n * // duration = 120.5 (2 minutes and 0.5 seconds)\n * ```\n */\nexport const getTotalDuration = (tracks: TrackJSON[]) => {\n return (tracks || []).reduce(\n (maxDuration, timeline) =>\n Math.max(\n maxDuration,\n (timeline?.elements || []).reduce(\n (timelineDuration, element) => Math.max(timelineDuration, element.e),\n 0\n )\n ),\n 0\n );\n};\n\n/**\n * Generates a short UUID for element and track identification.\n * Creates a 12-character unique identifier using a simplified\n * UUID generation algorithm.\n *\n * @returns A 12-character unique identifier string\n * \n * @example\n * ```js\n * const id = generateShortUuid();\n * // id = \"a1b2c3d4e5f6\"\n * ```\n */\nexport const generateShortUuid = (): string => {\n return \"xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * Gets all elements that are currently active at the specified time.\n * Searches through all tracks to find elements whose time range\n * includes the current playback time.\n *\n * @param currentTime - The current playback time in seconds\n * @param tracks - Array of track objects to search through\n * @returns Array of elements currently active at the specified time\n * \n * @example\n * ```js\n * const activeElements = getCurrentElements(5.5, tracks);\n * // Returns all elements active at 5.5 seconds\n * ```\n */\nexport const getCurrentElements = (\n currentTime: number,\n tracks: Track[]\n): Array<Readonly<TrackElement>> => {\n const currentElements: Array<Readonly<TrackElement>> = [];\n if (tracks?.length) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i]) {\n const elements = tracks[i].getElements();\n for (let j = 0; j < elements.length; j++) {\n const element = elements[j];\n if (\n element.getStart() <= currentTime &&\n element.getEnd() >= currentTime\n ) {\n currentElements.push(element);\n }\n }\n }\n }\n }\n return currentElements;\n};\n\n/**\n * Checks if an element can be split at the specified time.\n * Determines if the current time falls within the element's\n * start and end time range.\n *\n * @param element - The element to check for splitting\n * @param currentTime - The time at which to check if splitting is possible\n * @returns True if the element can be split at the specified time\n * \n * @example\n * ```js\n * const canSplit = canSplitElement(videoElement, 10.5);\n * // canSplit = true if element spans across 10.5 seconds\n * ```\n */\nexport const canSplitElement = (element: TrackElement, currentTime: number) => {\n return element.getStart() <= currentTime && element.getEnd() >= currentTime;\n};\n\n/**\n * Checks if an ID represents an element.\n * Validates if the ID follows the element naming convention.\n *\n * @param id - The ID to check\n * @returns True if the ID represents an element\n * \n * @example\n * ```js\n * const isElement = isElementId(\"e-abc123\");\n * // isElement = true\n * ```\n */\nexport const isElementId = (id: string) => id.startsWith(\"e-\");\n\n/**\n * Checks if an ID represents a track.\n * Validates if the ID follows the track naming convention.\n *\n * @param id - The ID to check\n * @returns True if the ID represents a track\n * \n * @example\n * ```js\n * const isTrack = isTrackId(\"t-xyz789\");\n * // isTrack = true\n * ```\n */\nexport const isTrackId = (id: string) => id.startsWith(\"t-\");\n\n/**\n * Extracts and stitches audio from video elements across all tracks.\n * Processes all video elements in the timeline, extracts their audio segments,\n * and combines them into a single audio file with proper timing.\n *\n * @param tracks - Array of track objects containing video elements\n * @param duration - The total duration of the output audio\n * @returns Promise resolving to a Blob URL of the combined audio\n * \n * @example\n * ```js\n * const audioUrl = await extractVideoAudio(tracks, 120);\n * // audioUrl = \"blob:http://localhost:3000/abc123\"\n * ```\n */\nexport const extractVideoAudio = async (tracks: Track[], duration: number) => {\n const videoSegments: {\n src: string;\n startAt: number;\n endAt: number;\n s: number;\n e: number;\n volume: number;\n playbackRate: number;\n }[] = [];\n tracks.forEach((track) =>\n track.getElements().forEach((element) => {\n if (element instanceof VideoElement) {\n videoSegments.push({\n src: element.getSrc(),\n startAt: element.getStartAt(),\n endAt: element.getEndAt(),\n s: element.getStart(),\n e: element.getEnd(),\n volume: element.getVolume(),\n playbackRate: element.getPlaybackRate(),\n });\n }\n })\n );\n\n const videoAudioPromises = videoSegments.map((segment) => {\n return extractAudio({\n src: segment.src,\n startAt: segment.startAt,\n endAt: segment.endAt,\n volume: segment.volume,\n playbackRate: segment.playbackRate,\n });\n });\n\n const audioUrls = await Promise.all(videoAudioPromises);\n const extractedAudio = await stitchAudio(\n audioUrls.map((url: string, index: number) => ({\n src: url,\n s: videoSegments[index].s,\n e: videoSegments[index].e,\n volume: videoSegments[index].volume,\n })),\n duration\n );\n\n return extractedAudio;\n};\n","import { getAudioDuration } from \"@twick/media-utils\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { AudioProps } from \"../../types\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class AudioElement extends TrackElement {\n protected mediaDuration!: number;\n protected declare props: AudioProps;\n\n constructor(src: string) {\n super(TIMELINE_ELEMENT_TYPE.AUDIO);\n this.props = {\n src,\n time: 0,\n playbackRate: 1,\n volume: 1,\n loop: false,\n };\n }\n\n getMediaDuration() {\n return this.mediaDuration;\n }\n\n getStartAt(): number {\n return this.props.time || 0;\n }\n\n getEndAt(): number {\n return this.getDuration() * this.getPlaybackRate();\n }\n\n getSrc(): string {\n return this.props.src;\n }\n\n getPlaybackRate(): number {\n return this.props.playbackRate ?? 1;\n }\n\n getVolume(): number {\n return this.props.volume ?? 1;\n } \n\n async updateAudioMeta() {\n this.mediaDuration = await getAudioDuration(this.props.src);\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateAudioMeta();\n return this;\n }\n\n setMediaDuration(mediaDuration: number) {\n this.mediaDuration = mediaDuration;\n return this;\n }\n\n setVolume(volume: number) {\n this.props.volume = volume;\n return this;\n }\n\n setLoop(loop: boolean) {\n this.props.loop = loop;\n return this;\n }\n\n setStartAt(time: number) {\n this.props.time = Math.max(0, time);\n return this;\n }\n\n setPlaybackRate(playbackRate: number) {\n this.props.playbackRate = playbackRate;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {\n ...structuredClone(props),\n src: this.props.src,\n };\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitAudioElement(this);\n }\n}\n","import { getObjectFitSize, getImageDimensions } from \"@twick/media-utils\";\nimport { Frame, ImageProps, ObjectFit, Position, Size } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\n\nexport class ImageElement extends TrackElement {\n protected backgroundColor!: string;\n protected parentSize: Size;\n protected objectFit: ObjectFit;\n frameEffects?: ElementFrameEffect[];\n frame!: Frame;\n protected declare props: ImageProps;\n\n constructor(src: string, parentSize: Size) {\n super(TIMELINE_ELEMENT_TYPE.IMAGE);\n this.parentSize = parentSize;\n this.objectFit = \"cover\";\n this.frameEffects = [];\n this.props = {\n src,\n mediaFilter: \"none\",\n };\n this.frame = {\n x: 0,\n y: 0\n }\n }\n\n getParentSize() {\n return this.parentSize;\n }\n\n getFrame() {\n return this.frame;\n }\n\n getFrameEffects() {\n return this.frameEffects;\n } \n\n getBackgroundColor() {\n return this.backgroundColor;\n }\n\n getObjectFit() {\n return this.objectFit;\n }\n\n override getRotation(): number {\n return this.frame?.rotation ?? 0;\n }\n\n override setRotation(rotation: number) {\n this.frame.rotation = rotation;\n return this;\n }\n\n override getPosition(): Position {\n return {\n x: this.frame.x ?? 0,\n y: this.frame.y ?? 0\n };\n }\n\n async updateImageMeta(updateFrame: boolean = true) {\n const meta = await getImageDimensions(this.props.src);\n if (updateFrame) {\n const baseSize = getObjectFitSize(\n \"contain\",\n { width: meta.width, height: meta.height },\n this.parentSize\n );\n this.frame = {\n size: [baseSize.width, baseSize.height],\n ...this.frame,\n }\n }\n }\n\n override setPosition(position: Position) {\n this.frame.x = position.x;\n this.frame.y = position.y;\n return this;\n }\n\n async setSrc(src: string) {\n this.props.src = src;\n await this.updateImageMeta();\n return this;\n }\n\n setObjectFit(objectFit: ObjectFit) {\n this.objectFit = objectFit;\n return this;\n }\n\n setFrame(frame: Frame) {\n this.frame = structuredClone(frame);\n return this;\n }\n\n\n setParentSize(parentSize: Size) {\n this.parentSize = structuredClone(parentSize);\n return this;\n }\n\n setMediaFilter(mediaFilter: string) {\n this.props.mediaFilter = mediaFilter;\n return this;\n }\n\n setBackgroundColor(backgroundColor: string) {\n this.backgroundColor = backgroundColor;\n return this;\n }\n\n override setProps(props: Omit<any, \"src\">) {\n this.props = {...structuredClone(props), src: this.props.src};\n return this;\n }\n\n setFrameEffects(frameEffects? : ElementFrameEffect[]) {\n this.frameEffects = frameEffects;\n return this;\n }\n\n addFrameEffect(frameEffect: ElementFrameEffect) {\n this.frameEffects?.push(frameEffect);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitImageElement(this);\n }\n\n}\n","import { TextAlign, TextProps } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { ElementTextEffect } from \"../addOns/text-effect\";\n\nexport class TextElement extends TrackElement {\n protected textEffect?: ElementTextEffect;\n protected declare props: TextProps;\n\n constructor(text: string, props?: Omit<TextProps, 'text'>) {\n super(TIMELINE_ELEMENT_TYPE.TEXT);\n this.props = {\n text,\n fill: \"#888888\", //default-grey,\n ...(props || {})\n };\n }\n\n getTextEffect() {\n return this.textEffect;\n }\n\n getText(): string {\n return this.props.text;\n }\n\n getStrokeColor() {\n return this.props.stroke;\n }\n\n getLineWidth() {\n return this.props.lineWidth;\n }\n\n getProps(): TextProps {\n return this.props;\n }\n\n setText(text: string) {\n this.props.text = text;\n return this;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setRotation(rotation: number) {\n this.props.rotation = rotation;\n return this;\n }\n\n setFontSize(fontSize: number) {\n this.props.fontSize = fontSize;\n return this;\n }\n\n setFontFamily(fontFamily: string) {\n this.props.fontFamily = fontFamily;\n return this;\n }\n\n setFontWeight(fontWeight: number) {\n this.props.fontWeight = fontWeight;\n return this;\n }\n\n setFontStyle(fontStyle: \"normal\" | \"italic\") {\n this.props.fontStyle = fontStyle;\n return this;\n }\n\n setTextEffect(textEffect?: ElementTextEffect) {\n this.textEffect = textEffect;\n return this;\n }\n\n setTextAlign(textAlign: TextAlign) {\n this.props.textAlign = textAlign;\n return this;\n }\n\n setStrokeColor(stroke: string) {\n this.props.stroke = stroke;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n }\n\n setProps(props: TextProps) {\n this.props = structuredClone(props);\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitTextElement(this);\n }\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class CaptionElement extends TrackElement {\n protected t: string;\n\n constructor(t: string, start: number, end: number) {\n super(TIMELINE_ELEMENT_TYPE.CAPTION);\n this.t = t;\n this.s = start;\n this.e = end;\n }\n\n getText(): string {\n return this.t;\n }\n\n setText(t: string) {\n this.t = t;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitCaptionElement(this);\n }\n\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\nimport { Size } from \"../../types\";\n\nexport class IconElement extends TrackElement {\n constructor(src: string, size: Size, fill: string = \"#866bbf\") {\n super(TIMELINE_ELEMENT_TYPE.ICON);\n this.props = {\n src: src,\n fill: fill,\n size: size,\n };\n }\n\n getSrc(): string {\n return this.props.src;\n } \n\n getFill(): string {\n return this.props.fill;\n }\n\n getSize(): Size | undefined {\n return this.props.size;\n }\n\n setSrc(src: string) {\n this.props.src = src;\n return this;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setSize(size: Size) {\n this.props.size = size;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitIconElement(this);\n }\n}\n","import { TrackElement } from \"./base.element\";\nimport type { ElementVisitor } from \"../visitor/element-visitor\";\nimport { CircleProps } from \"../../types\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class CircleElement extends TrackElement {\n protected declare props: CircleProps;\n constructor(fill: string, radius: number) {\n super(TIMELINE_ELEMENT_TYPE.CIRCLE);\n this.props = {\n radius,\n height: radius*2,\n width: radius*2,\n fill,\n strokeColor: fill,\n lineWidth: 1\n };\n }\n\n getFill(): string {\n return this.props.fill;\n }\n\n getRadius(): number {\n return this.props.radius;\n }\n\n getStrokeColor(): string {\n return this.props.strokeColor || this.props.fill;\n }\n\n getLineWidth(): number {\n return this.props.lineWidth ?? 0;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n setRadius(radius: number) {\n this.props.radius = radius;\n this.props.width = radius*2;\n this.props.height = radius*2;\n return this;\n }\n \n setStrokeColor(strokeColor: string) {\n this.props.strokeColor = strokeColor;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n } \n\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitCircleElement(this);\n }\n}\n","import { RectProps, Size } from \"../../types\";\nimport { TrackElement } from \"./base.element\";\nimport { ElementVisitor } from \"../visitor/element-visitor\";\nimport { TIMELINE_ELEMENT_TYPE } from \"../../utils/constants\";\n\nexport class RectElement extends TrackElement {\n protected declare props: RectProps;\n\n constructor(fill: string, size: Size) {\n super(TIMELINE_ELEMENT_TYPE.RECT);\n this.props = {\n width: size.width,\n height: size.height,\n fill,\n radius: 0,\n strokeColor: fill,\n lineWidth: 1 \n };\n }\n\n getFill(): string {\n return this.props.fill;\n }\n\n setFill(fill: string) {\n this.props.fill = fill;\n return this;\n }\n\n getSize(): Size {\n return { width: this.props.width, height: this.props.height };\n }\n\n getCornerRadius(): number {\n return this.props.radius;\n }\n\n getStrokeColor(): string {\n return this.props.strokeColor || this.props.fill;\n }\n\n getLineWidth(): number {\n return this.props.lineWidth ?? 0;\n }\n\n setSize(size: Size) {\n this.props.width = size.width;\n this.props.height = size.height;\n return this;\n }\n\n setCornerRadius(cornerRadius: number) {\n this.props.radius = cornerRadius;\n return this;\n }\n\n setStrokeColor(strokeColor: string) {\n this.props.strokeColor = strokeColor;\n return this;\n }\n\n setLineWidth(lineWidth: number) {\n this.props.lineWidth = lineWidth;\n return this;\n }\n\n accept<T>(visitor: ElementVisitor<T>): T {\n return visitor.visitRectElement(this);\n }\n}\n","import { Animation } from \"../../types\";\n\nexport class ElementAnimation {\n private name: string;\n private interval?: number;\n private duration?: number;\n private intensity?: number;\n private animate?: \"enter\" | \"exit\" | \"both\";\n private mode?: \"in\" | \"out\";\n private direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"center\";\n\n constructor(name: string) {\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getInterval() {\n return this.interval;\n } \n\n getDuration() {\n return this.duration;\n }\n\n getIntensity() {\n return this.intensity;\n }\n\n getAnimate() {\n return this.animate;\n }\n\n getMode() {\n return this.mode;\n }\n\n getDirection() {\n return this.direction;\n }\n\n setInterval(interval?: number) {\n this.interval = interval;\n return this;\n }\n\n setDuration(duration?: number) {\n this.duration = duration;\n return this;\n }\n\n setIntensity(intensity?: number) {\n this.intensity = intensity;\n return this;\n }\n\n setAnimate(animate?: \"enter\" | \"exit\" | \"both\") {\n this.animate = animate;\n return this;\n }\n\n setMode(mode?: \"in\" | \"out\") {\n this.mode = mode;\n return this;\n }\n\n setDirection(direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"center\") {\n this.direction = direction;\n return this;\n }\n\n toJSON(): Animation {\n return {\n name: this.name,\n interval: this.interval,\n duration: this.duration,\n intensity: this.intensity,\n animate: this.animate,\n mode: this.mode,\n direction: this.direction,\n };\n }\n\n static fromJSON(json: Animation) {\n const animation = new ElementAnimation(json.name);\n animation.setInterval(json.interval);\n animation.setDuration(json.duration);\n animation.setIntensity(json.intensity);\n animation.setAnimate(json.animate);\n animation.setMode(json.mode);\n animation.setDirection(json.direction);\n return animation;\n };\n}","import { FrameEffect, FrameEffectProps } from \"../../types\";\n\nexport class ElementFrameEffect {\n private s: number;\n private e: number;\n private props!: FrameEffectProps;\n constructor(start: number, end: number) {\n this.s = start;\n this.e = end;\n }\n\n setProps(props: FrameEffectProps) {\n this.props = props;\n return this;\n }\n\n getProps() {\n return this.props;\n }\n\n getStart() {\n return this.s;\n }\n\n getEnd() {\n return this.e;\n }\n\n setStart(start: number) {\n this.s = start;\n return this;\n }\n\n setEnd(end: number) {\n this.e = end;\n return this;\n }\n\n toJSON(): FrameEffect {\n return {\n s: this.s,\n e: this.e,\n props: this.props,\n };\n }\n \n static fromJSON(json: FrameEffect) {\n const effect = new ElementFrameEffect(json.s, json.e);\n effect.setProps(json.props);\n return effect;\n }\n}\n","import { TextEffect } from \"../../types\";\n\nexport class ElementTextEffect {\n private name: string;\n private duration?: number;\n private delay?: number;\n private bufferTime?: number;\n\n constructor(name: string) {\n this.name = name;\n }\n\n getName() {\n return this.name;\n }\n\n getDuration() {\n return this.duration;\n } \n\n getDelay() {\n return this.delay;\n }\n\n getBufferTime() {\n return this.bufferTime;\n }\n\n setDuration(duration?: number) {\n this.duration = duration;\n return this;\n }\n\n setDelay(delay?: number) {\n this.delay = delay;\n return this;\n }\n\n setBufferTime(bufferTime?: number) {\n this.bufferTime = bufferTime;\n return this;\n }\n\n toJSON(): TextEffect {\n return {\n name: this.name,\n delay: this.delay,\n duration: this.duration ?? 1,\n bufferTime: this.bufferTime,\n };\n }\n\n static fromJSON(json: TextEffect) {\n const effect = new ElementTextEffect(json.name);\n effect.setDelay(json.delay);\n effect.setDuration(json.duration);\n effect.setBufferTime(json.bufferTime);\n return effect;\n };\n}\n\n\n","import { ElementJSON } from \"../../types\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ElementAnimation } from \"../addOns/animation\";\nimport { ElementFrameEffect } from \"../addOns/frame-effect\";\nimport { ElementTextEffect } from \"../addOns/text-effect\";\n\nexport class ElementDeserializer {\n private static deserializeBaseElement(element: TrackElement, json: ElementJSON): void {\n if (json.id) element.setId(json.id);\n if (json.trackId) element.setTrackId(json.trackId);\n if (json.name) element.setName(json.name);\n if (json.s !== undefined) element.setStart(json.s);\n if (json.e !== undefined) element.setEnd(json.e);\n if (json.props) element.setProps(json.props);\n if (json.animation) element.setAnimation(ElementAnimation.fromJSON(json.animation));\n }\n\n static deserializeVideoElement(json: ElementJSON): VideoElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const videoElement = new VideoElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(videoElement, json);\n \n if (json.mediaDuration !== undefined) videoElement.setMediaDuration(json.mediaDuration);\n if (json.objectFit) videoElement.setObjectFit(json.objectFit);\n if (json.frame) videoElement.setFrame(json.frame);\n if (json.frameEffects) videoElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) videoElement.setBackgroundColor(json.backgroundColor);\n \n return videoElement;\n }\n\n static deserializeAudioElement(json: ElementJSON): AudioElement {\n const audioElement = new AudioElement(json.props?.src || \"\");\n ElementDeserializer.deserializeBaseElement(audioElement, json);\n \n if (json.mediaDuration !== undefined) audioElement.setMediaDuration(json.mediaDuration);\n \n return audioElement;\n }\n\n static deserializeImageElement(json: ElementJSON): ImageElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const imageElement = new ImageElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(imageElement, json);\n \n if (json.objectFit) imageElement.setObjectFit(json.objectFit);\n if (json.frame) imageElement.setFrame(json.frame);\n if (json.frameEffects) imageElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) imageElement.setBackgroundColor(json.backgroundColor);\n \n return imageElement;\n }\n\n static deserializeTextElement(json: ElementJSON): TextElement {\n const textElement = new TextElement(json.props?.text || \"\");\n ElementDeserializer.deserializeBaseElement(textElement, json);\n \n if (json.textEffect) textElement.setTextEffect(ElementTextEffect.fromJSON(json.textEffect));\n \n return textElement;\n }\n\n static deserializeCaptionElement(json: ElementJSON): CaptionElement {\n const captionElement = new CaptionElement(\n json.t || \"\",\n json.s || 0,\n json.e || 0\n );\n ElementDeserializer.deserializeBaseElement(captionElement, json);\n \n return captionElement;\n }\n\n static deserializeIconElement(json: ElementJSON): IconElement {\n const size = json.props?.size ?? { width: 100, height: 100 };\n \n const iconElement = new IconElement(\n json.props?.src || \"\",\n size,\n json.props?.fill\n );\n ElementDeserializer.deserializeBaseElement(iconElement, json);\n \n return iconElement;\n }\n\n static deserializeCircleElement(json: ElementJSON): CircleElement {\n const circleElement = new CircleElement(\n json.props?.fill || \"\",\n json.props?.radius || 0\n );\n ElementDeserializer.deserializeBaseElement(circleElement, json);\n \n return circleElement;\n }\n\n static deserializeRectElement(json: ElementJSON): RectElement {\n const rectElement = new RectElement(\n json.props?.fill || \"\",\n { \n width: json.props?.width || 0, \n height: json.props?.height || 0 \n }\n );\n ElementDeserializer.deserializeBaseElement(rectElement, json);\n \n return rectElement;\n }\n\n static fromJSON(json: ElementJSON): TrackElement | null{\n try {\n switch (json.type) {\n case \"video\":\n return ElementDeserializer.deserializeVideoElement(json);\n case \"audio\":\n return ElementDeserializer.deserializeAudioElement(json);\n case \"image\":\n return ElementDeserializer.deserializeImageElement(json);\n case \"text\":\n return ElementDeserializer.deserializeTextElement(json);\n case \"caption\":\n return ElementDeserializer.deserializeCaptionElement(json);\n case \"icon\":\n return ElementDeserializer.deserializeIconElement(json);\n case \"circle\":\n return ElementDeserializer.deserializeCircleElement(json);\n case \"rect\":\n return ElementDeserializer.deserializeRectElement(json);\n default:\n throw new Error(`Unknown element type: ${json.type}`);\n }\n } catch(error) {\n console.error(\"Error deserializing element:\", error);\n return null;\n }\n }\n}\n","import { ElementJSON } from \"../../types\";\nimport { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementSerializer implements ElementVisitor<ElementJSON> {\n serializeElement(element: TrackElement): ElementJSON {\n return {\n id: element.getId(),\n trackId: element.getTrackId(),\n type: element.getType(),\n name: element.getName(),\n s: element.getStart(),\n e: element.getEnd(),\n props: structuredClone(element.getProps()),\n animation: element.getAnimation()?.toJSON(),\n };\n }\n visitVideoElement(element: VideoElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitAudioElement(element: AudioElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitImageElement(element: ImageElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n };\n }\n\n visitTextElement(element: TextElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n textEffect: element.getTextEffect()?.toJSON(),\n };\n }\n\n visitCaptionElement(element: CaptionElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n t: structuredClone(element.getText()),\n };\n }\n\n visitIconElement(element: IconElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitCircleElement(element: CircleElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitRectElement(element: RectElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\n\nexport const VALIDATION_ERROR_CODE = {\n ELEMENT_NOT_FOUND: \"ELEMENT_NOT_FOUND\",\n ELEMENT_NOT_ADDED: \"ELEMENT_NOT_ADDED\",\n ELEMENT_NOT_UPDATED: \"ELEMENT_NOT_UPDATED\",\n ELEMENT_NOT_REMOVED: \"ELEMENT_NOT_REMOVED\",\n COLLISION_ERROR: \"COLLISION_ERROR\",\n INVALID_TIMING: \"INVALID_TIMING\",\n}\n\nexport class ValidationError extends Error {\n constructor(\n message: string,\n public errors: string[],\n public warnings: string[] = []\n ) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nexport class ElementValidator implements ElementVisitor<boolean> {\n private validateBasicProperties(element: any): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Check required basic properties\n if (!element.getId()) {\n errors.push(\"Element must have an ID\");\n }\n\n if (!element.getType()) {\n errors.push(\"Element must have a type\");\n }\n\n if (element.getStart() === undefined || element.getStart() === null) {\n errors.push(\"Element must have a start time (s)\");\n }\n\n if (element.getEnd() === undefined || element.getEnd() === null) {\n errors.push(\"Element must have an end time (e)\");\n }\n\n if (element.getStart() !== undefined && element.getEnd() !== undefined) {\n if (element.getStart() < 0) {\n errors.push(\"Start time cannot be negative\");\n }\n \n if (element.getEnd() <= element.getStart()) {\n errors.push(\"End time must be greater than start time\");\n }\n }\n\n if (!element.getName()) {\n warnings.push(\"Element should have a name for better identification\");\n }\n\n if (!element.getTrackId()) {\n warnings.push(\"Element should have a track Id\");\n }\n\n return { errors, warnings };\n }\n\n private validateTextElement(element: TextElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check text-specific properties\n const props = element.getProps();\n if (!props?.text) {\n errors.push(\"Text element must have text content\");\n }\n\n if (props?.fontSize !== undefined && props.fontSize <= 0) {\n errors.push(\"Font size must be greater than 0\");\n }\n\n if (props?.fontWeight !== undefined && props.fontWeight < 0) {\n errors.push(\"Font weight cannot be negative\");\n }\n\n return { errors, warnings };\n }\n\n private validateVideoElement(element: VideoElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check video-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Video element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateAudioElement(element: AudioElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check audio-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Audio element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n return { errors, warnings };\n }\n\n private validateImageElement(element: ImageElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check image-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Image element must have a source URL\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateCaptionElement(element: CaptionElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check caption-specific properties\n const text = element.getText();\n if (!text || text.trim() === \"\") {\n errors.push(\"Caption element must have text content\");\n }\n\n return { errors, warnings };\n }\n\n private validateIconElement(element: IconElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n return { errors, warnings };\n }\n\n private validateCircleElement(element: CircleElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check circle-specific properties\n const props = element.getProps();\n if (props?.radius !== undefined && props.radius <= 0) {\n errors.push(\"Circle radius must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateRectElement(element: RectElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check rectangle-specific properties\n const props = element.getProps();\n if (props?.width !== undefined && props.width <= 0) {\n errors.push(\"Rectangle width must be greater than 0\");\n }\n\n if (props?.height !== undefined && props.height <= 0) {\n errors.push(\"Rectangle height must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n visitVideoElement(element: VideoElement): boolean {\n const validation = this.validateVideoElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Video element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n const validation = this.validateAudioElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Audio element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n const validation = this.validateImageElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Image element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n const validation = this.validateTextElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Text element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n const validation = this.validateCaptionElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Caption element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n const validation = this.validateIconElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Icon element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n const validation = this.validateCircleElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Circle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n const validation = this.validateRectElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Rectangle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n} ","import { TrackElement } from \"../elements/base.element\";\nimport { Track } from \"./track\";\n\n/**\n * Friend class that provides explicit access to Track's protected methods\n * This implements the Friend Class Pattern for better encapsulation control\n */\nexport class TrackFriend {\n constructor(private track: Track) {}\n \n /**\n * Add an element to the track with validation\n * @param element The element to add\n * @param skipValidation If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n */\n addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.addElementViaFriend(element, skipValidation);\n }\n \n /**\n * Remove an element from the track\n * @param element The element to remove\n */\n removeElement(element: TrackElement): void {\n // Use the public friend method that delegates to protected method\n this.track.removeElementViaFriend(element);\n }\n \n /**\n * Update an element in the track with validation\n * @param element The element to update\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n */\n updateElement(element: TrackElement): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.updateElementViaFriend(element);\n }\n \n /**\n * Get the track instance (for advanced operations)\n * @returns The track instance\n */\n getTrack(): Track {\n return this.track;\n }\n }","import { ElementJSON, TrackJSON } from \"../../types\";\nimport { generateShortUuid } from \"../../utils/timeline.utils\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ElementDeserializer } from \"../visitor/element-deserializer\";\nimport { ElementSerializer } from \"../visitor/element-serializer\";\nimport {\n ElementValidator,\n ValidationError,\n} from \"../visitor/element-validator\";\nimport { TrackFriend } from \"./track.friend\";\n\n/**\n * Track class represents a timeline track that contains multiple elements.\n * A track is a container for timeline elements (video, audio, text, etc.) that\n * can be arranged sequentially or in parallel. Tracks provide validation,\n * serialization, and element management capabilities.\n * \n * @example\n * ```js\n * import { Track, VideoElement, TextElement } from '@twick/timeline';\n * \n * // Create a new track\n * const videoTrack = new Track(\"Video Track\");\n * \n * // Add elements to the track\n * const videoElement = new VideoElement({\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * });\n * \n * videoTrack.createFriend().addElement(videoElement);\n * \n * // Serialize the track\n * const trackData = videoTrack.serialize();\n * ```\n */\nexport class Track {\n private id: string;\n private name: string;\n private type: string;\n private props: Record<string, any>;\n private elements: TrackElement[];\n private validator: ElementValidator;\n\n /**\n * Creates a new Track instance.\n * \n * @param name - The display name for the track\n * @param type - The type of the track\n * @param id - Optional unique identifier (auto-generated if not provided)\n * \n * @example\n * ```js\n * const track = new Track(\"My Video Track\");\n * const trackWithId = new Track(\"Audio Track\", \"element\", \"video-track-1\");\n * ```\n */\n constructor(name: string, type: string =\"element\", id?: string) {\n this.name = name;\n this.id = id ?? `t-${generateShortUuid()}`;\n this.type = type;\n this.props = {};\n this.elements = [];\n this.validator = new ElementValidator();\n }\n\n /**\n * Creates a friend instance for explicit access to protected methods.\n * This implements the Friend Class Pattern to allow controlled access\n * to protected methods while maintaining encapsulation.\n * \n * @returns TrackFriend instance that can access protected methods\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * \n * // Use friend to add elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * friend.addElement(element);\n * ```\n */\n createFriend(): TrackFriend {\n return new TrackFriend(this);\n }\n\n /**\n * Friend method to add element (called by TrackFriend).\n * Provides controlled access to the protected addElement method.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * const success = track.addElementViaFriend(element);\n * // success = true if element was added successfully\n * ```\n */\n addElementViaFriend(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n return this.addElement(element, skipValidation);\n }\n\n /**\n * Friend method to remove element (called by TrackFriend).\n * Provides controlled access to the protected removeElement method.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * track.removeElementViaFriend(element);\n * // Element is removed from the track\n * ```\n */\n removeElementViaFriend(element: TrackElement): void {\n this.removeElement(element);\n }\n\n /**\n * Friend method to update element (called by TrackFriend).\n * Provides controlled access to the protected updateElement method.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Update the element\n * element.setEnd(15);\n * const success = track.updateElementViaFriend(element);\n * // success = true if element was updated successfully\n * ```\n */\n updateElementViaFriend(element: TrackElement): boolean {\n return this.updateElement(element);\n }\n\n /**\n * Gets the unique identifier of the track.\n * \n * @returns The track's unique ID string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\", \"element\", \"track-123\");\n * const id = track.getId(); // \"track-123\"\n * ```\n */\n getId(): string {\n return this.id;\n }\n\n /**\n * Gets the display name of the track.\n * \n * @returns The track's display name\n * \n * @example\n * ```js\n * const track = new Track(\"Video Track\");\n * const name = track.getName(); // \"Video Track\"\n * ```\n */\n getName(): string {\n return this.name;\n }\n\n /**\n * Gets the type of the track.\n * \n * @returns The track's type string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const type = track.getType(); // \"element\"\n * ```\n */\n getType(): string {\n return this.type;\n }\n\n /**\n * Gets a read-only array of all elements in the track.\n * Returns a copy of the elements array to prevent external modification.\n * \n * @returns Read-only array of track elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const elements = track.getElements();\n * // elements is a read-only array of TrackElement instances\n * \n * elements.forEach(element => {\n * console.log(`Element: ${element.getId()}, Duration: ${element.getEnd() - element.getStart()}`);\n * });\n * ```\n */\n getElements(): ReadonlyArray<TrackElement> {\n return [...this.elements];\n }\n\n getProps(): Record<string, any> {\n return this.props;\n }\n\n setProps(props: Record<string, any>) {\n this.props = structuredClone(props);\n return this;\n }\n\n /**\n * Validates a single element using the track's validator.\n * Checks if the element meets all validation requirements.\n * \n * @param element - The element to validate\n * @returns true if valid, throws ValidationError if invalid\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * try {\n * const isValid = track.validateElement(element);\n * console.log('Element is valid:', isValid);\n * } catch (error) {\n * if (error instanceof ValidationError) {\n * console.log('Validation failed:', error.errors);\n * }\n * }\n * ```\n */\n validateElement(element: TrackElement): boolean {\n return element.accept(this.validator);\n }\n\n /**\n * Gets the total duration of the track.\n * Calculates the duration based on the end time of the last element.\n * \n * @returns The total duration of the track in seconds\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const duration = track.getTrackDuration(); // 0 if no elements\n * \n * // After adding elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 30 });\n * track.createFriend().addElement(element);\n * const newDuration = track.getTrackDuration(); // 30\n * ```\n */\n getTrackDuration(): number {\n return this.elements?.length\n ? this.elements[this.elements.length - 1].getEnd()\n : 0;\n }\n\n /**\n * Adds an element to the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * const success = friend.addElement(element);\n * ```\n */\n protected addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n element.setTrackId(this.id);\n if (skipValidation) {\n this.elements.push(element);\n return true;\n }\n\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n if(this.isElementColliding(element)) {\n throw new ValidationError(\"Element is colliding with another element\", [\"COLLISION_ERROR\"]);\n } else {\n this.elements.push(element);\n return true;\n }\n }\n } catch (error) {\n throw error;\n }\n return false;\n }\n\n public isElementColliding(element: TrackElement): boolean {\n return this.elements.some((e) => e.getStart() < element.getEnd() && e.getEnd() > element.getStart());\n }\n\n /**\n * Removes an element from the track.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * friend.removeElement(element);\n * ```\n */\n protected removeElement(element: TrackElement): void {\n const index = this.elements.findIndex((e) => e.getId() === element.getId());\n if (index !== -1) {\n this.elements.splice(index, 1);\n }\n }\n\n /**\n * Updates an element in the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * element.setEnd(15);\n * const success = friend.updateElement(element);\n * ```\n */\n protected updateElement(element: TrackElement): boolean {\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n const index = this.elements.findIndex(\n (e) => e.getId() === element.getId()\n );\n if (index !== -1) {\n this.elements[index] = element;\n return true;\n }\n }\n } catch (error) {\n if (error instanceof ValidationError) {\n throw error;\n }\n throw error;\n }\n\n return false;\n }\n\n /**\n * Finds an element in the track by its ID.\n * \n * @param id - The unique identifier of the element to find\n * @returns The found element or undefined if not found\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const foundElement = track.getElementById(element.getId());\n * // foundElement is the same element instance\n * ```\n */\n getElementById(id: string): Readonly<TrackElement> | undefined {\n const element = this.elements.find((e) => e.getId() === id);\n if (!element) return undefined;\n return element;\n }\n\n /**\n * Validates all elements in the track and returns combined result and per-element status.\n * Provides detailed validation information for each element including errors and warnings.\n * \n * @returns Object with overall isValid and array of per-element validation results\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element1 = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * const element2 = new TextElement({ text: \"Hello\", start: 5, end: 15 });\n * \n * track.createFriend().addElement(element1);\n * track.createFriend().addElement(element2);\n * \n * const validation = track.validateAllElements();\n * console.log('Overall valid:', validation.isValid);\n * \n * validation.results.forEach(result => {\n * console.log(`Element ${result.element.getId()}: ${result.isValid ? 'Valid' : 'Invalid'}`);\n * if (result.errors) {\n * console.log('Errors:', result.errors);\n * }\n * if (result.warnings) {\n * console.log('Warnings:', result.warnings);\n * }\n * });\n * ```\n */\n validateAllElements(): {\n isValid: boolean;\n results: Array<{\n element: TrackElement;\n isValid: boolean;\n errors?: string[];\n warnings?: string[];\n }>;\n } {\n let validResult = true;\n const results = this.elements.map((element) => {\n try {\n const isValid = this.validateElement(element);\n if (!isValid) {\n validResult = false;\n }\n return { element, isValid };\n } catch (error) {\n if (error instanceof ValidationError) {\n validResult = false;\n return {\n element,\n isValid: false,\n errors: error.errors,\n warnings: error.warnings,\n };\n }\n return {\n element,\n isValid: false,\n errors: [error instanceof Error ? error.message : \"Unknown error\"],\n };\n }\n });\n return { isValid: validResult, results };\n }\n\n /**\n * Serializes the track and all its elements to JSON format.\n * Converts the track structure to a format that can be stored or transmitted.\n * \n * @returns TrackJSON object representing the track and its elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const trackData = track.serialize();\n * // trackData = {\n * // id: \"t-abc123\",\n * // name: \"My Track\",\n * // type: \"element\",\n * // elements: [{ ... }]\n * // }\n * \n * // Save to localStorage\n * localStorage.setItem('track-data', JSON.stringify(trackData));\n * ```\n */\n serialize(): TrackJSON {\n const serializer = new ElementSerializer();\n return {\n id: this.id,\n name: this.name,\n type: this.type,\n props: this.props,\n elements: this.elements.map(\n (element) => element.accept(serializer) as ElementJSON\n ),\n };\n }\n\n /**\n * Creates a Track instance from JSON data.\n * Static factory method for deserializing track data.\n * \n * @param json - JSON object containing track data\n * @returns New Track instance with loaded data\n * \n * @example\n * ```js\n * const trackData = {\n * id: \"t-abc123\",\n * name: \"My Track\",\n * type: \"element\",\n * elements: [\n * {\n * id: \"e-def456\",\n * type: \"video\",\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * }\n * ]\n * };\n * \n * const track = Track.fromJSON(trackData);\n * console.log(track.getName()); // \"My Track\"\n * console.log(track.getElements().length); // 1\n * ```\n */\n static fromJSON(json: any): Track {\n if (!json || typeof json !== 'object') {\n throw new Error('Invalid JSON data for Track deserialization');\n }\n const track = new Track(json.name || '', json.type ?? \"element\", json.id);\n track.type = json.type;\n track.props = json.props || {};\n track.elements = (json.elements || [])\n .map(ElementDeserializer.fromJSON)\n .filter((element: any): element is TrackElement => element !== null);\n return track;\n }\n}\n","import { TrackElement } from \"../core/elements/base.element\";\nimport { Track } from \"../core/track/track\";\n\ntype TimelineStore = {\n tracks: Track[];\n version: number;\n elementMap: Record<string, TrackElement>;\n trackMap: Record<string, any>;\n captionProps: Record<string, any>;\n}\n\nexport type TimelineTrackData = {\n tracks: Track[];\n version: number;\n}\n\nexport class TimelineContextStore {\n private static instance: TimelineContextStore;\n private storeMap: Map<string, TimelineStore>;\n\n private constructor() {\n this.storeMap = new Map();\n }\n\n public static getInstance(): TimelineContextStore {\n if (!TimelineContextStore.instance) {\n TimelineContextStore.instance = new TimelineContextStore();\n }\n return TimelineContextStore.instance;\n }\n\n public initializeContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.storeMap.set(contextId, {\n tracks: [],\n version: 0,\n elementMap: {},\n trackMap: {},\n captionProps: {},\n });\n }\n }\n\n public getTimelineData(contextId: string): TimelineTrackData | null {\n const timelineStore = this.storeMap.get(contextId);\n return timelineStore ? {\n tracks: timelineStore.tracks,\n version: timelineStore.version,\n } : null;\n }\n\n public setTimelineData(contextId: string, timelineData: TimelineTrackData): TimelineTrackData {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.tracks = timelineData.tracks;\n this.storeMap.get(contextId)!.version = timelineData.version;\n return timelineData;\n }\n\n public getElementMap(contextId: string): Record<string, TrackElement> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.elementMap;\n }\n\n public setElementMap(contextId: string, elementMap: Record<string, TrackElement>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.elementMap = elementMap;\n }\n\n public getTrackMap(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.trackMap;\n }\n\n public setTrackMap(contextId: string, trackMap: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.trackMap = trackMap;\n }\n\n public getCaptionProps(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.captionProps;\n }\n\n public setCaptionProps(contextId: string, captionProps: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.captionProps = captionProps;\n }\n\n public clearContext(contextId: string): void {\n this.storeMap.delete(contextId);\n }\n\n private ensureContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.initializeContext(contextId);\n }\n }\n}\n\nexport const timelineContextStore = TimelineContextStore.getInstance();","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementAdder visitor for adding elements to tracks.\n * Uses the visitor pattern to handle different element types\n * and implements the Friend Class Pattern for explicit access control.\n * Automatically calculates start and end times for elements based on\n * existing track content.\n */\nexport class ElementAdder implements ElementVisitor<Promise<boolean>> {\n private track: Track;\n private trackFriend: TrackFriend;\n\n /**\n * Creates a new ElementAdder instance for the specified track.\n *\n * @param track - The track to add elements to\n * \n * @example\n * ```js\n * const adder = new ElementAdder(track);\n * const success = await adder.visitVideoElement(videoElement);\n * ```\n */\n constructor(track: Track) {\n this.track = track;\n this.trackFriend = track.createFriend();\n }\n\n /**\n * Adds a video element to the track.\n * Updates video metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The video element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitVideoElement(videoElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitVideoElement(element: VideoElement): Promise<boolean> {\n await element.updateVideoMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n\n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an audio element to the track.\n * Updates audio metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The audio element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitAudioElement(audioElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitAudioElement(element: AudioElement): Promise<boolean> {\n await element.updateAudioMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an image element to the track.\n * Updates image metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The image element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitImageElement(imageElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitImageElement(element: ImageElement): Promise<boolean> {\n await element.updateImageMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a text element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The text element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitTextElement(textElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitTextElement(element: TextElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a caption element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The caption element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCaptionElement(captionElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCaptionElement(element: CaptionElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an icon element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The icon element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitIconElement(iconElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitIconElement(element: IconElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a circle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The circle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCircleElement(circleElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCircleElement(element: CircleElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a rectangle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The rectangle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitRectElement(rectElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitRectElement(element: RectElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementRemover visitor for removing elements from tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementRemover implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementUpdater visitor for updating elements in tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementUpdater implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitAudioElement(element: AudioElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitImageElement(element: ImageElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitTextElement(element: TextElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitIconElement(element: IconElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCircleElement(element: CircleElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitRectElement(element: RectElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementCloner implements ElementVisitor<TrackElement> {\n cloneElementProperties(srcElement: TrackElement, destElement: TrackElement) {\n return destElement\n .setName(srcElement.getName())\n .setType(srcElement.getType())\n .setStart(srcElement.getStart())\n .setEnd(srcElement.getEnd())\n .setProps(srcElement.getProps())\n .setAnimation(srcElement.getAnimation());\n }\n\n visitVideoElement(element: VideoElement): TrackElement {\n const props = element.getProps();\n const clonedElement = new VideoElement(props!.src, element.getParentSize());\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setMediaDuration(element.getMediaDuration())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects() ?? [])\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n return clonedElement;\n }\n\n visitAudioElement(element: AudioElement): TrackElement {\n const clonedElement = new AudioElement(element.getProps()!.src);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setMediaDuration(element.getMediaDuration());\n return clonedElement;\n }\n\n visitImageElement(element: ImageElement): TrackElement {\n const clonedElement = new ImageElement(\n element.getProps()!.src,\n element.getParentSize()\n );\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects())\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n\n return clonedElement;\n }\n\n visitTextElement(element: TextElement): TrackElement {\n const clonedElement = new TextElement(element.getProps()!.text);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setTextEffect(element.getTextEffect());\n return clonedElement;\n }\n\n visitCaptionElement(element: CaptionElement): TrackElement {\n const clonedElement = new CaptionElement(\n element.getProps()!.text,\n element.getStart(),\n element.getEnd()\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitRectElement(element: RectElement): TrackElement {\n const clonedElement = new RectElement(\n element.getProps()!.fill,\n element.getProps()!.size\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitCircleElement(element: CircleElement): TrackElement {\n const clonedElement = new CircleElement(\n element.getProps()!.fill,\n element.getProps()!.radius\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitIconElement(element: IconElement): TrackElement {\n const clonedElement = new IconElement(\n element.getProps()!.src,\n element.getProps()!.size,\n element.getProps()!.fill\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { ElementCloner } from \"./element-cloner\";\nimport { canSplitElement } from \"../../utils/timeline.utils\";\n\nexport interface SplitResult {\n firstElement: any;\n secondElement: any;\n success: boolean;\n}\n\nexport class ElementSplitter implements ElementVisitor<SplitResult> {\n private splitTime: number;\n private elementCloner: ElementCloner;\n constructor(splitTime: number) {\n this.splitTime = splitTime;\n this.elementCloner = new ElementCloner();\n }\n\n visitVideoElement(element: VideoElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n\n const firstElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n const secondElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitAudioElement(element: AudioElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n const secondElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitImageElement(element: ImageElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n const secondElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitTextElement(element: TextElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCaptionElement(element: CaptionElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitRectElement(element: RectElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n const secondElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCircleElement(element: CircleElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitCircleElement(element);\n const secondElement = this.elementCloner.visitCircleElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitIconElement(element: IconElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitIconElement(element);\n const secondElement = this.elementCloner.visitIconElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n}\n","import {\n extractVideoAudio,\n generateShortUuid,\n getTotalDuration,\n} from \"../../utils/timeline.utils\";\nimport { Track } from \"../track/track\";\nimport {\n timelineContextStore,\n TimelineTrackData,\n} from \"../../services/data.service\";\nimport { PLAYER_STATE, TIMELINE_ACTION } from \"../../utils/constants\";\nimport { ElementAdder } from \"../visitor/element-adder\";\nimport { ElementRemover } from \"../visitor/element-remover\";\nimport { ElementUpdater } from \"../visitor/element-updater\";\nimport { ElementSplitter, SplitResult } from \"../visitor/element-splitter\";\nimport { ElementCloner } from \"../visitor/element-cloner\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ProjectJSON, TrackJSON } from \"../../types\";\nimport { ValidationError } from \"../visitor/element-validator\";\n\n/**\n * Type for timeline operation context\n */\nexport interface TimelineOperationContext {\n contextId: string;\n setTotalDuration: (duration: number) => void;\n setPresent: (data: ProjectJSON) => void;\n handleUndo: () => ProjectJSON | null;\n handleRedo: () => ProjectJSON | null;\n handleResetHistory: () => void;\n updateChangeLog: () => void;\n setTimelineAction?: (action: string, payload?: unknown) => void;\n}\n\n/**\n * TimelineEditor\n *\n * This class provides an interface to execute all timeline operations\n * using a direct, class-based approach with track-based management.\n * It also handles undo/redo operations internally.\n */\nexport class TimelineEditor {\n private context: TimelineOperationContext;\n private totalDuration: number = 0;\n\n constructor(context: TimelineOperationContext) {\n this.context = context;\n // Ensure context is initialized in timelineContextStore\n timelineContextStore.initializeContext(this.context.contextId);\n }\n\n getContext(): TimelineOperationContext {\n return this.context;\n }\n\n pauseVideo(): void {\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(\n TIMELINE_ACTION.SET_PLAYER_STATE,\n PLAYER_STATE.PAUSED\n );\n }\n }\n\n getTimelineData(): TimelineTrackData | null {\n const contextId = this.context.contextId;\n return timelineContextStore.getTimelineData(contextId);\n }\n\n getLatestVersion(): number {\n const contextId = this.context.contextId;\n const timelineData = timelineContextStore.getTimelineData(contextId);\n return timelineData?.version || 0;\n }\n\n protected setTimelineData({\n tracks,\n version,\n updatePlayerData,\n }: {\n tracks: Track[];\n version?: number;\n updatePlayerData?: boolean;\n }) {\n const prevTimelineData = this.getTimelineData();\n const updatedVersion = version ?? (prevTimelineData?.version || 0) + 1;\n const updatedTimelineData = {\n tracks,\n version: updatedVersion,\n };\n timelineContextStore.setTimelineData(\n this.context.contextId,\n updatedTimelineData\n );\n this.updateHistory(updatedTimelineData);\n this.context.updateChangeLog();\n if (updatePlayerData) {\n this.context?.setTimelineAction?.(\n TIMELINE_ACTION.UPDATE_PLAYER_DATA,\n updatedTimelineData\n );\n }\n return updatedTimelineData as TimelineTrackData;\n }\n\n addTrack(name: string, type: string = \"element\"): Track {\n const prevTimelineData = this.getTimelineData();\n const id = `t-${generateShortUuid()}`;\n const track = new Track(name, type, id);\n const updatedTimelines = [...(prevTimelineData?.tracks || []), track];\n this.setTimelineData({ tracks: updatedTimelines, updatePlayerData: true });\n return track;\n }\n\n getTrackById(id: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getId() === id);\n return track as Track | null;\n }\n\n getTrackByName(name: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getName() === name);\n return track as Track | null;\n }\n\n getSubtiltesTrack(): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getType() === \"caption\");\n return track as Track | null;\n }\n\n removeTrackById(id: string): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== id);\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n removeTrack(track: Track): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== track.getId());\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n /**\n * Refresh the timeline data\n */\n refresh(): void {\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({ tracks: currentData.tracks, updatePlayerData: true });\n }\n }\n\n /**\n * Add an element to a specific track using the visitor pattern.\n * @param track The track to add the element to.\n * @param element The element to add.\n * @returns A promise that resolves to `true` if the element was added successfully, otherwise `false`.\n */\n async addElementToTrack(\n track: Track,\n element: TrackElement\n ): Promise<boolean> {\n if (!track) {\n throw new Error(\"TRACK_NOT_FOUND\"); \n }\n try {\n // Use the visitor pattern to handle different element types\n const elementAdder = new ElementAdder(track);\n const result = await element.accept(elementAdder);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n return true;\n } else {\n return false;\n }\n } catch (error) {\n if(error instanceof ValidationError && error.errors?.length > 0) {\n throw error;\n } else {\n throw new Error(\"ELEMENT_NOT_ADDED\");\n }\n }\n }\n\n /**\n * Remove an element from a specific track using the visitor pattern.\n * @param element The element to remove.\n * @returns `true` if the element was removed successfully, otherwise `false`.\n */\n removeElement(element: TrackElement): boolean {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return false;\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementRemover = new ElementRemover(track);\n const result = element.accept(elementRemover);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n }\n\n return result;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Update an element in a specific track using the visitor pattern.\n * @param element The updated element.\n * @returns The updated `TrackElement`.\n */\n updateElement(element: TrackElement): TrackElement {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return element;\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementUpdater = new ElementUpdater(track);\n const result = element.accept(elementUpdater);\n\n if (result) {\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks});\n }\n }\n\n return element;\n } catch (error) {\n return element;\n }\n }\n\n /**\n * Split an element at a specific time point using the visitor pattern\n * @param element The element to split\n * @param splitTime The time point to split at\n * @returns SplitResult with first element, second element, and success status\n */\n async splitElement(\n element: TrackElement,\n splitTime: number\n ): Promise<SplitResult> {\n const track = this.getTrackById(element.getTrackId());\n if (!track) {\n return { firstElement: element, secondElement: null, success: false };\n }\n\n try {\n // Use the visitor pattern to handle different element types\n const elementSplitter = new ElementSplitter(splitTime);\n const result = element.accept(elementSplitter);\n\n if (result.success) {\n const elementRemover = new ElementRemover(track);\n // Remove the original element from the track\n element.accept(elementRemover);\n\n // Add the first split element to the track\n const elementAdder = new ElementAdder(track);\n result.firstElement.accept(elementAdder);\n result.secondElement.accept(elementAdder);\n\n // Update the timeline data to reflect the change\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({tracks: currentData.tracks, updatePlayerData: true});\n }\n }\n return result;\n } catch (error) {\n return { firstElement: element, secondElement: null, success: false };\n }\n }\n\n /**\n * Clone an element using the visitor pattern\n * @param element The element to clone\n * @returns TrackElement | null - the cloned element or null if cloning failed\n */\n cloneElement(element: TrackElement): TrackElement | null {\n try {\n const elementCloner = new ElementCloner();\n return element.accept(elementCloner);\n } catch (error) {\n return null;\n }\n }\n\n reorderTracks(tracks: Track[]): void {\n this.setTimelineData({tracks, updatePlayerData: true});\n }\n\n updateHistory(timelineTrackData: TimelineTrackData): void {\n const tracks = timelineTrackData.tracks.map((t) => t.serialize());\n this.totalDuration = getTotalDuration(tracks);\n this.context.setTotalDuration(this.totalDuration);\n const version = timelineTrackData.version;\n this.context.setPresent({\n tracks,\n version,\n });\n }\n\n /**\n * Trigger undo operation and update timeline data\n */\n undo(): void {\n const result = this.context.handleUndo();\n if (result && result.tracks) {\n // Update the timeline data in the editor's store\n const tracks = result.tracks.map((t: TrackJSON) => Track.fromJSON(t));\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks,\n version: result.version,\n });\n\n // Update total duration\n this.totalDuration = getTotalDuration(result.tracks);\n this.context.setTotalDuration(this.totalDuration);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: result.tracks,\n version: result.version,\n });\n }\n }\n }\n\n /**\n * Trigger redo operation and update timeline data\n */\n redo(): void {\n const result = this.context.handleRedo();\n if (result && result.tracks) {\n // Update the timeline data in the editor's store\n const tracks = result.tracks.map((t: TrackJSON) => Track.fromJSON(t));\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks,\n version: result.version,\n });\n\n // Update total duration\n this.totalDuration = getTotalDuration(result.tracks);\n this.context.setTotalDuration(this.totalDuration);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: result.tracks,\n version: result.version,\n });\n }\n }\n }\n\n /**\n * Reset history and clear timeline data\n */\n resetHistory(): void {\n this.context.handleResetHistory();\n\n // Clear the timeline data in the editor's store\n timelineContextStore.setTimelineData(this.context.contextId, {\n tracks: [],\n version: 0,\n });\n\n // Reset total duration and version\n this.context.setTotalDuration(0);\n this.context.updateChangeLog();\n\n // Trigger timeline action to notify components\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: [],\n version: 0,\n });\n }\n }\n\n loadProject({\n tracks,\n version,\n }: {\n tracks: TrackJSON[];\n version: number;\n }): void {\n this.pauseVideo();\n this.context.handleResetHistory();\n // Convert Timeline[] to Track[] and set\n const timelineTracks = tracks.map((t) => Track.fromJSON(t));\n this.setTimelineData({tracks: timelineTracks, version, updatePlayerData: true});\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {\n tracks: tracks,\n version: version,\n forceUpdate: true,\n });\n }\n }\n\n async getVideoAudio(): Promise<string> {\n const tracks = this.getTimelineData()?.tracks || [];\n const audioBlobUrl = await extractVideoAudio(tracks, this.totalDuration);\n return audioBlobUrl;\n }\n}\n","import { createContext, useContext, useState } from \"react\";\nimport { ProjectJSON } from \"../types\";\n\nconst MAX_HISTORY = 20;\n\n// Helper function for deep cloning\nconst deepClone = <T,>(obj: T): T => {\n return JSON.parse(JSON.stringify(obj));\n};\n\ninterface UndoRedoState {\n past: ProjectJSON[];\n present: ProjectJSON | null;\n future: ProjectJSON[];\n}\n\ninterface UndoRedoContextType {\n // State\n canUndo: boolean;\n canRedo: boolean;\n present: ProjectJSON | null;\n // Actions\n setPresent: (data: ProjectJSON) => void;\n undo: () => ProjectJSON | null;\n redo: () => ProjectJSON | null;\n resetHistory: () => void;\n getLastPersistedState: () => ProjectJSON | null;\n // Configuration\n disablePersistence: () => void;\n}\n\nconst UndoRedoContext = createContext<UndoRedoContextType | undefined>(\n undefined\n);\n\n// Local storage utilities\nconst STORAGE_KEY_PREFIX = \"twick_undo_redo_\";\n\nconst saveToStorage = (key: string, state: UndoRedoState): void => {\n try {\n localStorage.setItem(key, JSON.stringify(state));\n } catch (error) {\n console.warn(\"Failed to save undo-redo state to localStorage:\", error);\n }\n};\n\nconst loadFromStorage = (key: string): UndoRedoState | null => {\n try {\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n return JSON.parse(stored);\n } catch (error) {\n console.warn(\"Failed to load undo-redo state from localStorage:\", error);\n return null;\n }\n};\n\nexport interface UndoRedoProviderProps {\n children: React.ReactNode;\n persistenceKey?: string;\n maxHistorySize?: number;\n}\n\nexport const UndoRedoProvider: React.FC<UndoRedoProviderProps> = ({\n children,\n persistenceKey,\n maxHistorySize = MAX_HISTORY,\n}) => {\n const [state, setState] = useState<UndoRedoState>(() => {\n // Load from storage if persistence is enabled\n if (persistenceKey) {\n const stored = loadFromStorage(STORAGE_KEY_PREFIX + persistenceKey);\n if (stored) {\n return {\n past: stored.past,\n present: stored.present,\n future: stored.future,\n };\n }\n }\n\n return {\n past: [],\n present: null,\n future: [],\n };\n });\n\n // Save to storage whenever state changes (if persistence enabled)\n const saveState = (newState: UndoRedoState) => {\n if (persistenceKey) {\n saveToStorage(STORAGE_KEY_PREFIX + persistenceKey, newState);\n }\n };\n\n // When user makes a new change\n const setPresent = (data: ProjectJSON) => {\n setState((prevState) => {\n let newPast = [...prevState.past];\n if (prevState.present) {\n newPast.push(deepClone(prevState.present));\n }\n\n const newState: UndoRedoState = {\n past: newPast,\n present: deepClone(data),\n future: [], // Clear future because it's a new change\n };\n\n // Limit history size\n if (newState.past.length > maxHistorySize) {\n newState.past.shift(); // Remove oldest\n }\n\n saveState(newState);\n return newState;\n });\n };\n\n const undo = (): ProjectJSON | null => {\n let undoResult: ProjectJSON | null = null;\n\n setState((prevState) => {\n if (prevState.past.length === 0) return prevState;\n\n const previous = prevState.past[prevState.past.length - 1];\n const newState: UndoRedoState = {\n past: prevState.past.slice(0, -1), // Remove last item\n present: previous,\n future: prevState.present\n ? [deepClone(prevState.present), ...prevState.future]\n : prevState.future,\n };\n\n undoResult = previous;\n saveState(newState);\n return newState;\n });\n\n return undoResult;\n };\n\n const redo = (): ProjectJSON | null => {\n let redoResult: ProjectJSON | null = null;\n\n setState((prevState) => {\n if (prevState.future.length === 0) return prevState;\n\n const next = prevState.future[0];\n const newState: UndoRedoState = {\n past: prevState.present\n ? [...prevState.past, deepClone(prevState.present)]\n : prevState.past,\n present: next,\n future: prevState.future.slice(1), // Remove first item\n };\n\n // Limit history size\n if (newState.past.length > maxHistorySize) {\n newState.past.shift();\n }\n\n redoResult = next;\n saveState(newState);\n return newState;\n });\n\n return redoResult;\n };\n\n const getLastPersistedState = () => {\n if (persistenceKey) {\n const stored = loadFromStorage(STORAGE_KEY_PREFIX + persistenceKey);\n return stored?.present || null;\n }\n return null;\n };\n\n // Reset all history\n const resetHistory = () => {\n const newState: UndoRedoState = {\n past: [],\n present: null,\n future: [],\n };\n\n setState(newState);\n\n // Clear from storage too\n if (persistenceKey) {\n localStorage.removeItem(STORAGE_KEY_PREFIX + persistenceKey);\n }\n };\n\n const disablePersistence = () => {\n if (persistenceKey) {\n localStorage.removeItem(STORAGE_KEY_PREFIX + persistenceKey);\n }\n };\n\n const contextValue: UndoRedoContextType = {\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n present: state.present,\n setPresent,\n undo,\n redo,\n resetHistory,\n getLastPersistedState,\n disablePersistence,\n };\n\n return (\n <UndoRedoContext.Provider value={contextValue}>\n {children}\n </UndoRedoContext.Provider>\n );\n};\n\nexport const useUndoRedo = (): UndoRedoContextType => {\n const context = useContext(UndoRedoContext);\n if (context === undefined) {\n throw new Error(\"useUndoRedo must be used within an UndoRedoProvider\");\n }\n return context;\n};\n","import { TimelineEditor } from \"../core/editor/timeline.editor\";\n\n// Global registry to store editor instances by contextId\nexport const editorRegistry = new Map<string, TimelineEditor>();\n\n// Expose the registry to the global window object for console access\ndeclare global {\n interface Window {\n twickTimelineEditors: Map<string, TimelineEditor>;\n }\n}\n\n// Initialize the global registry on window\nif (typeof window !== 'undefined') {\n window.twickTimelineEditors = editorRegistry;\n}","var t=\"undefined\"!=typeof window?window:void 0,i=\"undefined\"!=typeof globalThis?globalThis:t;\"undefined\"==typeof self&&(i.self=i),\"undefined\"==typeof File&&(i.File=function(){});var e=Array.prototype,r=e.forEach,s=e.indexOf,n=null==i?void 0:i.navigator,o=null==i?void 0:i.document,a=null==i?void 0:i.location,l=null==i?void 0:i.fetch,u=null!=i&&i.XMLHttpRequest&&\"withCredentials\"in new i.XMLHttpRequest?i.XMLHttpRequest:void 0,h=null==i?void 0:i.AbortController,d=null==n?void 0:n.userAgent,v=null!=t?t:{},c={DEBUG:!1,LIB_VERSION:\"1.335.5\"};function f(t,i,e,r,s,n,o){try{var a=t[n](o),l=a.value}catch(t){return void e(t)}a.done?i(l):Promise.resolve(l).then(r,s)}function p(t){return function(){var i=this,e=arguments;return new Promise((function(r,s){var n=t.apply(i,e);function o(t){f(n,r,s,o,a,\"next\",t)}function a(t){f(n,r,s,o,a,\"throw\",t)}o(void 0)}))}}function g(){return g=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},g.apply(null,arguments)}function _(t,i){if(null==t)return{};var e={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;e[r]=t[r]}return e}var m=[\"amazonbot\",\"amazonproductbot\",\"app.hypefactors.com\",\"applebot\",\"archive.org_bot\",\"awariobot\",\"backlinksextendedbot\",\"baiduspider\",\"bingbot\",\"bingpreview\",\"chrome-lighthouse\",\"dataforseobot\",\"deepscan\",\"duckduckbot\",\"facebookexternal\",\"facebookcatalog\",\"http://yandex.com/bots\",\"hubspot\",\"ia_archiver\",\"leikibot\",\"linkedinbot\",\"meta-externalagent\",\"mj12bot\",\"msnbot\",\"nessus\",\"petalbot\",\"pinterest\",\"prerender\",\"rogerbot\",\"screaming frog\",\"sebot-wa\",\"sitebulb\",\"slackbot\",\"slurp\",\"trendictionbot\",\"turnitin\",\"twitterbot\",\"vercel-screenshot\",\"vercelbot\",\"yahoo! slurp\",\"yandexbot\",\"zoombot\",\"bot.htm\",\"bot.php\",\"(bot;\",\"bot/\",\"crawler\",\"ahrefsbot\",\"ahrefssiteaudit\",\"semrushbot\",\"siteauditbot\",\"splitsignalbot\",\"gptbot\",\"oai-searchbot\",\"chatgpt-user\",\"perplexitybot\",\"better uptime bot\",\"sentryuptimebot\",\"uptimerobot\",\"headlesschrome\",\"cypress\",\"google-hoteladsverifier\",\"adsbot-google\",\"apis-google\",\"duplexweb-google\",\"feedfetcher-google\",\"google favicon\",\"google web preview\",\"google-read-aloud\",\"googlebot\",\"googleother\",\"google-cloudvertexbot\",\"googleweblight\",\"mediapartners-google\",\"storebot-google\",\"google-inspectiontool\",\"bytespider\"],y=function(t,i){if(void 0===i&&(i=[]),!t)return!1;var e=t.toLowerCase();return m.concat(i).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},b=[\"$snapshot\",\"$pageview\",\"$pageleave\",\"$set\",\"survey dismissed\",\"survey sent\",\"survey shown\",\"$identify\",\"$groupidentify\",\"$create_alias\",\"$$client_ingestion_warning\",\"$web_experiment_applied\",\"$feature_enrollment_update\",\"$feature_flag_called\"];function w(t,i){return-1!==t.indexOf(i)}var x=function(t){return t.trim()},E=function(t){return t.replace(/^\\$/,\"\")};var S=Array.isArray,k=Object.prototype,P=k.hasOwnProperty,T=k.toString,I=S||function(t){return\"[object Array]\"===T.call(t)},C=t=>\"function\"==typeof t,R=t=>t===Object(t)&&!I(t),F=t=>{if(R(t)){for(var i in t)if(P.call(t,i))return!1;return!0}return!1},M=t=>void 0===t,O=t=>\"[object String]\"==T.call(t),A=t=>O(t)&&0===t.trim().length,D=t=>null===t,j=t=>M(t)||D(t),L=t=>\"[object Number]\"==T.call(t)&&t==t,N=t=>L(t)&&t>0,U=t=>\"[object Boolean]\"===T.call(t),z=t=>t instanceof FormData,H=t=>w(b,t);function B(t){return null===t||\"object\"!=typeof t}function q(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function W(t){return!M(Event)&&function(t,i){try{return t instanceof i}catch(t){return!1}}(t,Event)}var G=[!0,\"true\",1,\"1\",\"yes\"],V=t=>w(G,t),J=[!1,\"false\",0,\"0\",\"no\"];function K(t,i,e,r,s){return i>e&&(r.warn(\"min cannot be greater than max.\"),i=e),L(t)?t>e?(r.warn(\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r.warn(\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r.warn(\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),K(s||e,i,e,r))}class Y{constructor(t){this.t={},this.i=t.i,this.o=K(t.bucketSize,0,100,t.h),this.m=K(t.refillRate,0,this.o,t.h),this.$=K(t.refillInterval,0,864e5,t.h)}S(t,i){var e=i-t.lastAccess,r=Math.floor(e/this.$);if(r>0){var s=r*this.m;t.tokens=Math.min(t.tokens+s,this.o),t.lastAccess=t.lastAccess+r*this.$}}consumeRateLimit(t){var i,e=Date.now(),r=String(t),s=this.t[r];return s?this.S(s,e):(s={tokens:this.o,lastAccess:e},this.t[r]=s),0===s.tokens||(s.tokens--,0===s.tokens&&(null==(i=this.i)||i.call(this,t)),0===s.tokens)}stop(){this.t={}}}var X=\"Mobile\",Q=\"iOS\",Z=\"Android\",tt=\"Tablet\",it=Z+\" \"+tt,et=\"iPad\",rt=\"Apple\",st=rt+\" Watch\",nt=\"Safari\",ot=\"BlackBerry\",at=\"Samsung\",lt=at+\"Browser\",ut=at+\" Internet\",ht=\"Chrome\",dt=ht+\" OS\",vt=ht+\" \"+Q,ct=\"Internet Explorer\",ft=ct+\" \"+X,pt=\"Opera\",gt=pt+\" Mini\",_t=\"Edge\",mt=\"Microsoft \"+_t,yt=\"Firefox\",bt=yt+\" \"+Q,wt=\"Nintendo\",xt=\"PlayStation\",Et=\"Xbox\",$t=Z+\" \"+X,St=X+\" \"+nt,kt=\"Windows\",Pt=kt+\" Phone\",Tt=\"Nokia\",It=\"Ouya\",Ct=\"Generic\",Rt=Ct+\" \"+X.toLowerCase(),Ft=Ct+\" \"+tt.toLowerCase(),Mt=\"Konqueror\",Ot=\"(\\\\d+(\\\\.\\\\d+)?)\",At=new RegExp(\"Version/\"+Ot),Dt=new RegExp(Et,\"i\"),jt=new RegExp(xt+\" \\\\w+\",\"i\"),Lt=new RegExp(wt+\" \\\\w+\",\"i\"),Nt=new RegExp(ot+\"|PlayBook|BB10\",\"i\"),Ut={\"NT3.51\":\"NT 3.11\",\"NT4.0\":\"NT 4.0\",\"5.0\":\"2000\",5.1:\"XP\",5.2:\"XP\",\"6.0\":\"Vista\",6.1:\"7\",6.2:\"8\",6.3:\"8.1\",6.4:\"10\",\"10.0\":\"10\"};var zt,Ht,Bt,qt=(t,i)=>i&&w(i,rt)||function(t){return w(t,nt)&&!w(t,ht)&&!w(t,Z)}(t),Wt=function(t,i){return i=i||\"\",w(t,\" OPR/\")&&w(t,\"Mini\")?gt:w(t,\" OPR/\")?pt:Nt.test(t)?ot:w(t,\"IE\"+X)||w(t,\"WPDesktop\")?ft:w(t,lt)?ut:w(t,_t)||w(t,\"Edg/\")?mt:w(t,\"FBIOS\")?\"Facebook \"+X:w(t,\"UCWEB\")||w(t,\"UCBrowser\")?\"UC Browser\":w(t,\"CriOS\")?vt:w(t,\"CrMo\")||w(t,ht)?ht:w(t,Z)&&w(t,nt)?$t:w(t,\"FxiOS\")?bt:w(t.toLowerCase(),Mt.toLowerCase())?Mt:qt(t,i)?w(t,X)?St:nt:w(t,yt)?yt:w(t,\"MSIE\")||w(t,\"Trident/\")?ct:w(t,\"Gecko\")?yt:\"\"},Gt={[ft]:[new RegExp(\"rv:\"+Ot)],[mt]:[new RegExp(_t+\"?\\\\/\"+Ot)],[ht]:[new RegExp(\"(\"+ht+\"|CrMo)\\\\/\"+Ot)],[vt]:[new RegExp(\"CriOS\\\\/\"+Ot)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Ot)],[nt]:[At],[St]:[At],[pt]:[new RegExp(\"(Opera|OPR)\\\\/\"+Ot)],[yt]:[new RegExp(yt+\"\\\\/\"+Ot)],[bt]:[new RegExp(\"FxiOS\\\\/\"+Ot)],[Mt]:[new RegExp(\"Konqueror[:/]?\"+Ot,\"i\")],[ot]:[new RegExp(ot+\" \"+Ot),At],[$t]:[new RegExp(\"android\\\\s\"+Ot,\"i\")],[ut]:[new RegExp(lt+\"\\\\/\"+Ot)],[ct]:[new RegExp(\"(rv:|MSIE )\"+Ot)],Mozilla:[new RegExp(\"rv:\"+Ot)]},Vt=function(t,i){var e=Wt(t,i),r=Gt[e];if(M(r))return null;for(var s=0;s<r.length;s++){var n=r[s],o=t.match(n);if(o)return parseFloat(o[o.length-2])}return null},Jt=[[new RegExp(Et+\"; \"+Et+\" (.*?)[);]\",\"i\"),t=>[Et,t&&t[1]||\"\"]],[new RegExp(wt,\"i\"),[wt,\"\"]],[new RegExp(xt,\"i\"),[xt,\"\"]],[Nt,[ot,\"\"]],[new RegExp(kt,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[Pt,\"\"];if(new RegExp(X).test(i)&&!/IEMobile\\b/.test(i))return[kt+\" \"+X,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Ut[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[kt,s]}return[kt,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[Q,i.join(\".\")]}return[Q,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=M(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+Z+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+Z+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[Z,i.join(\".\")]}return[Z,\"\"]}],[/Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,t=>{var i=[\"Mac OS X\",\"\"];if(t&&t[1]){var e=[t[1],t[2],t[3]||\"0\"];i[1]=e.join(\".\")}return i}],[/Mac/i,[\"Mac OS X\",\"\"]],[/CrOS/,[dt,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],Kt=function(t){return Lt.test(t)?wt:jt.test(t)?xt:Dt.test(t)?Et:new RegExp(It,\"i\").test(t)?It:new RegExp(\"(\"+Pt+\"|WPDesktop)\",\"i\").test(t)?Pt:/iPad/.test(t)?et:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?st:Nt.test(t)?ot:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(Tt,\"i\").test(t)?Tt:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(t)||/(kf[a-z]+)( bui|\\)).+silk\\//i.test(t)?\"Kindle Fire\":/(Android|ZTE)/i.test(t)?new RegExp(X).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Z:it:new RegExp(\"(pda|\"+X+\")\",\"i\").test(t)?Rt:new RegExp(tt,\"i\").test(t)&&!new RegExp(tt+\" pc\",\"i\").test(t)?Ft:\"\"},Yt=t=>t instanceof Error;function Xt(t){var i=globalThis._posthogChunkIds;if(i){var e=Object.keys(i);return Bt&&e.length===Ht||(Ht=e.length,Bt=e.reduce(((e,r)=>{zt||(zt={});var s=zt[r];if(s)e[s[0]]=s[1];else for(var n=t(r),o=n.length-1;o>=0;o--){var a=n[o],l=null==a?void 0:a.filename,u=i[r];if(l&&u){e[l]=u,zt[r]=[l,u];break}}return e}),{})),Bt}}class Qt{constructor(t,i,e){void 0===e&&(e=[]),this.coercers=t,this.stackParser=i,this.modifiers=e}buildFromUnknown(t,i){void 0===i&&(i={});var e=i&&i.mechanism||{handled:!0,type:\"generic\"},r=this.buildCoercingContext(e,i,0).apply(t),s=this.buildParsingContext(),n=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(n,e),$exception_level:\"error\"}}modifyFrames(t){var i=this;return p((function*(){for(var e of t)e.stacktrace&&e.stacktrace.frames&&I(e.stacktrace.frames)&&(e.stacktrace.frames=yield i.applyModifiers(e.stacktrace.frames));return t}))()}coerceFallback(t){var i;return{type:\"Error\",value:\"Unknown error\",stack:null==(i=t.syntheticException)?void 0:i.stack,synthetic:!0}}parseStacktrace(t,i){var e,r;return null!=t.cause&&(e=this.parseStacktrace(t.cause,i)),\"\"!=t.stack&&null!=t.stack&&(r=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?1:0),i.chunkIdMap)),g({},t,{cause:e,stack:r})}applyChunkIds(t,i){return t.map((t=>(t.filename&&i&&(t.chunk_id=i[t.filename]),t)))}applyCoercers(t,i){for(var e of this.coercers)if(e.match(t))return e.coerce(t,i);return this.coerceFallback(i)}applyModifiers(t){var i=this;return p((function*(){var e=t;for(var r of i.modifiers)e=yield r(e);return e}))()}convertToExceptionList(t,i){var e,r,s,n={type:t.type,value:t.value,mechanism:{type:null!==(e=i.type)&&void 0!==e?e:\"generic\",handled:null===(r=i.handled)||void 0===r||r,synthetic:null!==(s=t.synthetic)&&void 0!==s&&s}};t.stack&&(n.stacktrace={type:\"raw\",frames:t.stack});var o=[n];return null!=t.cause&&o.push(...this.convertToExceptionList(t.cause,g({},i,{handled:!0}))),o}buildParsingContext(){return{chunkIdMap:Xt(this.stackParser)}}buildCoercingContext(t,i,e){void 0===e&&(e=0);var r=(e,r)=>{if(r<=4){var s=this.buildCoercingContext(t,i,r);return this.applyCoercers(e,s)}};return g({},i,{syntheticException:0==e?i.syntheticException:void 0,mechanism:t,apply:t=>r(t,e),next:t=>r(t,e+1)})}}var Zt=\"?\";function ti(t,i,e,r,s){var n={platform:t,filename:i,function:\"<anonymous>\"===e?Zt:e,in_app:!0};return M(r)||(n.lineno=r),M(s)||(n.colno=s),n}var ii=(t,i)=>{var e=-1!==t.indexOf(\"safari-extension\"),r=-1!==t.indexOf(\"safari-web-extension\");return e||r?[-1!==t.indexOf(\"@\")?t.split(\"@\")[0]:Zt,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]},ei=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,ri=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,si=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,ni=(t,i)=>{var e=ei.exec(t);if(e){var[,r,s,n]=e;return ti(i,r,Zt,+s,+n)}var o=ri.exec(t);if(o){if(o[2]&&0===o[2].indexOf(\"eval\")){var a=si.exec(o[2]);a&&(o[2]=a[1],o[3]=a[2],o[4]=a[3])}var[l,u]=ii(o[1]||Zt,o[2]);return ti(i,u,l,o[3]?+o[3]:void 0,o[4]?+o[4]:void 0)}},oi=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,ai=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,li=(t,i)=>{var e=oi.exec(t);if(e){if(e[3]&&e[3].indexOf(\" > eval\")>-1){var r=ai.exec(e[3]);r&&(e[1]=e[1]||\"eval\",e[3]=r[1],e[4]=r[2],e[5]=\"\")}var s=e[3],n=e[1]||Zt;return[n,s]=ii(n,s),ti(i,s,n,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},ui=/\\(error: (.*)\\)/,hi=50;function di(){return function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return function(i,r){void 0===r&&(r=0);for(var s=[],n=i.split(\"\\n\"),o=r;o<n.length;o++){var a=n[o];if(!(a.length>1024)){var l=ui.test(a)?a.replace(ui,\"$1\"):a;if(!l.match(/\\S*Error: /)){for(var u of e){var h=u(l,t);if(h){s.push(h);break}}if(s.length>=hi)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,hi).map((t=>{return g({},t,{filename:t.filename||(e=i,e[e.length-1]||{}).filename,function:t.function||Zt});var e}))}(s)}}(\"web:javascript\",ni,li)}class vi{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,i){var e=O(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:e?t.stack:void 0,cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?\"DOMError\":\"DOMException\"}getValue(t){var i=t.name||(this.isDOMError(t)?\"DOMError\":\"DOMException\");return t.message?i+\": \"+t.message:i}isDOMException(t){return q(t,\"DOMException\")}isDOMError(t){return q(t,\"DOMError\")}}class ci{match(t){return(t=>t instanceof Error)(t)}coerce(t,i){return{type:this.getType(t),value:this.getMessage(t,i),stack:this.getStack(t),cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,i){var e=t.message;return e.error&&\"string\"==typeof e.error.message?String(e.error.message):String(e)}getStack(t){return t.stacktrace||t.stack||void 0}}class fi{constructor(){}match(t){return q(t,\"ErrorEvent\")&&null!=t.error}coerce(t,i){var e,r=i.apply(t.error);return r||{type:\"ErrorEvent\",value:t.message,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}var pi=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class gi{match(t){return\"string\"==typeof t}coerce(t,i){var e,[r,s]=this.getInfos(t);return{type:null!=r?r:\"Error\",value:null!=s?s:t,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}getInfos(t){var i=\"Error\",e=t,r=t.match(pi);return r&&(i=r[1],e=r[2]),[i,e]}}var _i=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function mi(t,i){void 0===i&&(i=40);var e=Object.keys(t);if(e.sort(),!e.length)return\"[object has no keys]\";for(var r=e.length;r>0;r--){var s=e.slice(0,r).join(\", \");if(!(s.length>i))return r===e.length||s.length<=i?s:s.slice(0,i)+\"...\"}return\"\"}class yi{match(t){return\"object\"==typeof t&&null!==t}coerce(t,i){var e,r=this.getErrorPropertyFromObject(t);return r?i.apply(r):{type:this.getType(t),value:this.getValue(t),stack:null==(e=i.syntheticException)?void 0:e.stack,level:this.isSeverityLevel(t.level)?t.level:\"error\",synthetic:!0}}getType(t){return W(t)?t.constructor.name:\"Error\"}getValue(t){if(\"name\"in t&&\"string\"==typeof t.name){var i=\"'\"+t.name+\"' captured as exception\";return\"message\"in t&&\"string\"==typeof t.message&&(i+=\" with message: '\"+t.message+\"'\"),i}if(\"message\"in t&&\"string\"==typeof t.message)return t.message;var e=this.getObjectClassName(t);return(e&&\"Object\"!==e?\"'\"+e+\"'\":\"Object\")+\" captured as exception with keys: \"+mi(t)}isSeverityLevel(t){return O(t)&&!A(t)&&_i.indexOf(t)>=0}getErrorPropertyFromObject(t){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var e=t[i];if(Yt(e))return e}}getObjectClassName(t){try{var i=Object.getPrototypeOf(t);return i?i.constructor.name:void 0}catch(t){return}}}class bi{match(t){return W(t)}coerce(t,i){var e,r=t.constructor.name;return{type:r,value:r+\" captured as exception with keys: \"+mi(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class wi{match(t){return B(t)}coerce(t,i){var e;return{type:\"Error\",value:\"Primitive value captured as exception: \"+String(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class xi{match(t){return q(t,\"PromiseRejectionEvent\")}coerce(t,i){var e,r=this.getUnhandledRejectionReason(t);return B(r)?{type:\"UnhandledRejection\",value:\"Non-Error promise rejection captured with value: \"+String(r),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}:i.apply(r)}getUnhandledRejectionReason(t){if(B(t))return t;try{if(\"reason\"in t)return t.reason;if(\"detail\"in t&&\"reason\"in t.detail)return t.detail.reason}catch(t){}return t}}var Ei=function(i,e){var{debugEnabled:r}=void 0===e?{}:e,s={k:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG||r)&&!M(t.console)&&t.console){for(var s=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];s(i,...o)}},info:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"error\",...i)},critical:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];console.error(i,...e)},uninitializedWarning:t=>{s.error(\"You must initialize PostHog before calling \"+t)},createLogger:(t,e)=>Ei(i+\" \"+t,e)};return s},$i=Ei(\"[PostHog.js]\"),Si=$i.createLogger,ki=Si(\"[ExternalScriptsLoader]\"),Pi=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return ki.warn(i+\" was requested but loading of external scripts is disabled.\"),e(\"Loading of external scripts is disabled\");var r=null==o?void 0:o.querySelectorAll(\"script\");if(r)for(var s,n=function(){if(r[a].src===i){var t=r[a];return t.__posthog_loading_callback_fired?{v:e()}:(t.addEventListener(\"load\",(i=>{t.__posthog_loading_callback_fired=!0,e(void 0,i)})),t.onerror=t=>e(t),{v:void 0})}},a=0;a<r.length;a++)if(s=n())return s.v;var l=()=>{if(!o)return e(\"document not found\");var r=o.createElement(\"script\");if(r.type=\"text/javascript\",r.crossOrigin=\"anonymous\",r.src=i,r.onload=t=>{r.__posthog_loading_callback_fired=!0,e(void 0,t)},r.onerror=t=>e(t),t.config.prepare_external_dependency_script&&(r=t.config.prepare_external_dependency_script(r)),!r)return e(\"prepare_external_dependency_script returned null\");if(\"head\"===t.config.external_scripts_inject_target)o.head.appendChild(r);else{var s,n=o.querySelectorAll(\"body > script\");if(n.length>0)null==(s=n[0].parentNode)||s.insertBefore(r,n[0]);else o.body.appendChild(r)}};null!=o&&o.body?l():null==o||o.addEventListener(\"DOMContentLoaded\",l)};v.__PosthogExtensions__=v.__PosthogExtensions__||{},v.__PosthogExtensions__.loadExternalDependency=(t,i,e)=>{var r=\"/static/\"+i+\".js?v=\"+t.version;if(\"remote-config\"===i&&(r=\"/array/\"+t.config.token+\"/config.js\"),\"toolbar\"===i){var s=3e5;r=r+\"&t=\"+Math.floor(Date.now()/s)*s}var n=t.requestRouter.endpointFor(\"assets\",r);Pi(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);Pi(t,r,e)};var Ti={};function Ii(t,i,e){if(I(t))if(r&&t.forEach===r)t.forEach(i,e);else if(\"length\"in t&&t.length===+t.length)for(var s=0,n=t.length;s<n;s++)if(s in t&&i.call(e,t[s],s)===Ti)return}function Ci(t,i,e){if(!j(t)){if(I(t))return Ii(t,i,e);if(z(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===Ti)return}else for(var s in t)if(P.call(t,s)&&i.call(e,t[s],s)===Ti)return}}var Ri=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ii(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},Fi=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ii(e,(function(i){Ii(i,(function(i){t.push(i)}))})),t};function Mi(t){for(var i=Object.keys(t),e=i.length,r=new Array(e);e--;)r[e]=[i[e],t[i[e]]];return r}var Oi=function(t){try{return t()}catch(t){return}},Ai=function(t){return function(){try{for(var i=arguments.length,e=new Array(i),r=0;r<i;r++)e[r]=arguments[r];return t.apply(this,e)}catch(t){$i.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),$i.critical(t)}}},Di=function(t){var i={};return Ci(t,(function(t,e){(O(t)&&t.length>0||L(t))&&(i[e]=t)})),i};function ji(t,i){return e=t,r=t=>O(t)&&!D(i)?t.slice(0,i):t,s=new Set,function t(i,e){return i!==Object(i)?r?r(i,e):i:s.has(i)?void 0:(s.add(i),I(i)?(n=[],Ii(i,(i=>{n.push(t(i))}))):(n={},Ci(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var Li=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function Ni(t){var i=null==t?void 0:t.hostname;if(!O(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of Li)if(e===r)return!1;return!0}function Ui(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function zi(t,i,e,r){var{capture:s=!1,passive:n=!0}=null!=r?r:{};null==t||t.addEventListener(i,e,{capture:s,passive:n})}var Hi=\"$people_distinct_id\",Bi=\"__alias\",qi=\"__timers\",Wi=\"$autocapture_disabled_server_side\",Gi=\"$heatmaps_enabled_server_side\",Vi=\"$exception_capture_enabled_server_side\",Ji=\"$error_tracking_suppression_rules\",Ki=\"$error_tracking_capture_extension_exceptions\",Yi=\"$web_vitals_enabled_server_side\",Xi=\"$dead_clicks_enabled_server_side\",Qi=\"$product_tours_enabled_server_side\",Zi=\"$web_vitals_allowed_metrics\",te=\"$session_recording_remote_config\",ie=\"$sesid\",ee=\"$session_is_sampled\",re=\"$enabled_feature_flags\",se=\"$early_access_features\",ne=\"$feature_flag_details\",oe=\"$stored_person_properties\",ae=\"$stored_group_properties\",le=\"$surveys\",ue=\"$flag_call_reported\",he=\"$user_state\",de=\"$client_session_props\",ve=\"$capture_rate_limit\",ce=\"$initial_campaign_params\",fe=\"$initial_referrer_info\",pe=\"$initial_person_info\",ge=\"$epp\",_e=\"__POSTHOG_TOOLBAR__\",me=\"$posthog_cookieless\",ye=[Hi,Bi,\"__cmpns\",qi,\"$session_recording_enabled_server_side\",Gi,ie,re,Ji,he,se,ne,ae,oe,le,ue,de,ve,ce,fe,ge,pe,\"$conversations_widget_session_id\",\"$conversations_ticket_id\",\"$conversations_widget_state\",\"$conversations_user_traits\"];function be(t){return t instanceof Element&&(t.id===_e||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function we(t){return!!t&&1===t.nodeType}function xe(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function Ee(t){return!!t&&3===t.nodeType}function $e(t){return!!t&&11===t.nodeType}function Se(t){return t?x(t).split(/\\s+/):[]}function ke(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function Pe(t){var i=\"\";switch(typeof t.className){case\"string\":i=t.className;break;case\"object\":i=(t.className&&\"baseVal\"in t.className?t.className.baseVal:null)||t.getAttribute(\"class\")||\"\";break;default:i=\"\"}return Se(i)}function Te(t){return j(t)?null:x(t).split(/(\\s+)/).filter((t=>Ke(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function Ie(t){var i=\"\";return ze(t)&&!He(t)&&t.childNodes&&t.childNodes.length&&Ci(t.childNodes,(function(t){var e;Ee(t)&&t.textContent&&(i+=null!==(e=Te(t.textContent))&&void 0!==e?e:\"\")})),x(i)}function Ce(t){return M(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var Re=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function Fe(t,i){if(M(i))return!0;var e,r=function(t){if(i.some((i=>t.matches(i))))return{v:!0}};for(var s of t)if(e=r(s))return e.v;return!1}function Me(t){var i=t.parentNode;return!(!i||!we(i))&&i}var Oe=[\"next\",\"previous\",\"prev\",\">\",\"<\"],Ae=10;var De=[\".ph-no-rageclick\",\".ph-no-capture\"];function je(i,e){if(!t||Le(i))return!1;var r,s,n;U(e)?(r=!!e&&De,s=void 0):(r=null!==(n=null==e?void 0:e.css_selector_ignorelist)&&void 0!==n?n:De,s=null==e?void 0:e.content_ignorelist);if(!1===r)return!1;var{targetElementList:o}=Ne(i,!1);return!function(t,i){if(!1===t||M(t))return!1;var e;if(!0===t)e=Oe;else{if(!I(t))return!1;if(t.length>Ae)return $i.error(\"[PostHog] content_ignorelist array cannot exceed \"+Ae+\" items. Use css_selector_ignorelist for more complex matching.\"),!1;e=t.map((t=>t.toLowerCase()))}return i.some((t=>{var{safeText:i,ariaLabel:r}=t;return e.some((t=>i.includes(t)||r.includes(t)))}))}(s,o.map((t=>{var i;return{safeText:Ie(t).toLowerCase(),ariaLabel:(null==(i=t.getAttribute(\"aria-label\"))?void 0:i.toLowerCase().trim())||\"\"}})))&&!Fe(o,r)}var Le=t=>!t||xe(t,\"html\")||!we(t),Ne=(i,e)=>{if(!t||Le(i))return{parentIsUsefulElement:!1,targetElementList:[]};for(var r=!1,s=[i],n=i;n.parentNode&&!xe(n,\"body\");)if($e(n.parentNode))s.push(n.parentNode.host),n=n.parentNode.host;else{var o=Me(n);if(!o)break;if(e||Re.indexOf(o.tagName.toLowerCase())>-1)r=!0;else{var a=t.getComputedStyle(o);a&&\"pointer\"===a.getPropertyValue(\"cursor\")&&(r=!0)}s.push(o),n=o}return{parentIsUsefulElement:r,targetElementList:s}};function Ue(i,e,r,s,n){var o,a,l,u;if(void 0===r&&(r=void 0),!t||Le(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!ke(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&ke(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var h=r.dom_event_allowlist;if(h&&!h.some((t=>e.type===t)))return!1}var{parentIsUsefulElement:d,targetElementList:v}=Ne(i,s);if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(M(e))return!0;var r,s=function(t){if(e.some((i=>t.tagName.toLowerCase()===i)))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(v,r))return!1;if(!Fe(v,null==(u=r)?void 0:u.css_selector_allowlist))return!1;var c=t.getComputedStyle(i);if(c&&\"pointer\"===c.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var f=i.tagName.toLowerCase();switch(f){case\"html\":return!1;case\"form\":return(n||[\"submit\"]).indexOf(e.type)>=0;case\"input\":case\"select\":case\"textarea\":return(n||[\"change\",\"click\"]).indexOf(e.type)>=0;default:return d?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(Re.indexOf(f)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function ze(t){for(var i=t;i.parentNode&&!xe(i,\"body\");i=i.parentNode){var e=Pe(i);if(w(e,\"ph-sensitive\")||w(e,\"ph-no-capture\"))return!1}if(w(Pe(t),\"ph-include\"))return!0;var r=t.type||\"\";if(O(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(O(s)){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(s.replace(/[^a-zA-Z0-9]/g,\"\")))return!1}return!0}function He(t){return!!(xe(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||xe(t,\"select\")||xe(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var Be=\"(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})\",qe=new RegExp(\"^(?:\"+Be+\")$\"),We=new RegExp(Be),Ge=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",Ve=new RegExp(\"^(\"+Ge+\")$\"),Je=new RegExp(\"(\"+Ge+\")\");function Ke(t,i){if(void 0===i&&(i=!0),j(t))return!1;if(O(t)){if(t=x(t),(i?qe:We).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?Ve:Je).test(t))return!1}return!0}function Ye(t){var i=Ie(t);return Ke(i=(i+\" \"+Xe(t)).trim())?i:\"\"}function Xe(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&Ci(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=Ie(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+Xe(t)).trim())}catch(t){$i.error(\"[AutoCapture]\",t)}})),i}function Qe(t){return function(t){var i=t.map((t=>{var i,e,r=\"\";if(t.tag_name&&(r+=t.tag_name),t.attr_class)for(var s of(t.attr_class.sort(),t.attr_class))r+=\".\"+s.replace(/\"/g,\"\");var n=g({},t.text?{text:t.text}:{},{\"nth-child\":null!==(i=t.nth_child)&&void 0!==i?i:0,\"nth-of-type\":null!==(e=t.nth_of_type)&&void 0!==e?e:0},t.href?{href:t.href}:{},t.attr_id?{attr_id:t.attr_id}:{},t.attributes),o={};return Mi(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[Ze(i.toString())]=Ze(e.toString())})),r+=\":\",r+=Mi(o).map((t=>{var[i,e]=t;return i+'=\"'+e+'\"'})).join(\"\")}));return i.join(\";\")}(function(t){return t.map((t=>{var i,e,r={text:null==(i=t.$el_text)?void 0:i.slice(0,400),tag_name:t.tag_name,href:null==(e=t.attr__href)?void 0:e.slice(0,2048),attr_class:tr(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Mi(t).filter((t=>{var[i]=t;return 0===i.indexOf(\"attr__\")})).forEach((t=>{var[i,e]=t;return r.attributes[i]=e})),r}))}(t))}function Ze(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function tr(t){var i=t.attr__class;return i?I(i)?i:Se(i):void 0}class ir{constructor(t){this.disabled=!1===t;var i=R(t)?t:{};this.thresholdPx=i.threshold_px||30,this.timeoutMs=i.timeout_ms||1e3,this.clickCount=i.click_count||3,this.clicks=[]}isRageClick(t,i,e){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<this.thresholdPx&&e-r.timestamp<this.timeoutMs){if(this.clicks.push({x:t,y:i,timestamp:e}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var er=t=>{var i=null==o?void 0:o.createElement(\"a\");return M(i)?null:(i.href=t,i)},rr=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return Ci(t,(function(t,i){M(t)||M(i)||\"undefined\"===i||(e=encodeURIComponent((t=>t instanceof File)(t)?t.name:t.toString()),r=encodeURIComponent(i),s[s.length]=r+\"=\"+e)})),s.join(i)},sr=function(t,i){for(var e,r=((t.split(\"#\")[0]||\"\").split(/\\?(.*)/)[1]||\"\").replace(/^\\?+/g,\"\").split(\"&\"),s=0;s<r.length;s++){var n=r[s].split(\"=\");if(n[0]===i){e=n;break}}if(!I(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){$i.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},nr=function(t,i,e){if(!t||!i||!i.length)return t;for(var r=t.split(\"#\"),s=r[0]||\"\",n=r[1],o=s.split(\"?\"),a=o[1],l=o[0],u=(a||\"\").split(\"&\"),h=[],d=0;d<u.length;d++){var v=u[d].split(\"=\");I(v)&&(i.includes(v[0])?h.push(v[0]+\"=\"+e):h.push(u[d]))}var c=l;return null!=a&&(c+=\"?\"+h.join(\"&\")),null!=n&&(c+=\"#\"+n),c},or=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},ar=\"$copy_autocapture\",lr=Si(\"[AutoCapture]\");function ur(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function hr(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!we(i));return i}function dr(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};Re.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=ur(1024,Ye(t)):n.$el_text=ur(1024,Ie(t)));var o=Pe(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),Ci(t.attributes,(function(e){var s;if((!He(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&Ke(e.value)&&(s=e.name,!O(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=Se(o).join(\" \")),n[\"attr__\"+e.name]=ur(1024,o)}}));for(var a=1,l=1,u=t;u=hr(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function vr(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!xe(d,\"body\");)$e(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,g=!1;if(Ci(h,(t=>{var i=ze(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&Ke(p)&&p),w(Pe(t),\"ph-no-capture\")&&(g=!0),c.push(dr(t,o,a,l));var e=function(t){if(!ze(t))return{};var i={};return Ci(t.attributes,(function(t){if(t.name&&0===t.name.indexOf(\"data-ph-capture-attribute\")){var e=t.name.replace(\"data-ph-capture-attribute-\",\"\"),r=t.value;e&&r&&Ke(r)&&(i[e]=r)}})),i}(t);Ri(f,e)})),g)return{props:{},explicitNoCapture:g};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=Ye(i):c[0].$el_text=Ie(i)),p){var _,m;c[0].attr__href=p;var y=null==(_=er(p))?void 0:_.host,b=null==t||null==(m=t.location)?void 0:m.host;y&&b&&y!==b&&(v=p)}return{props:Ri({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:Qe(c)},null!=(r=c[0])&&r.$el_text?{$el_text:null==(s=c[0])?void 0:s.$el_text}:{},v&&\"click\"===n.type?{$external_click_url:v}:{},f)}}class cr{constructor(t){this.P=!1,this.T=null,this.I=!1,this.instance=t,this.rageclicks=new ir(t.config.rageclick),this.C=null}get R(){var t,i,e=R(this.instance.config.autocapture)?this.instance.config.autocapture:{};return e.url_allowlist=null==(t=e.url_allowlist)?void 0:t.map((t=>new RegExp(t))),e.url_ignorelist=null==(i=e.url_ignorelist)?void 0:i.map((t=>new RegExp(t))),e}F(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.M(i)}catch(t){lr.error(\"Failed to capture event\",t)}};if(zi(o,\"submit\",i,{capture:!0}),zi(o,\"change\",i,{capture:!0}),zi(o,\"click\",i,{capture:!0}),this.R.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.M(i,ar)};zi(o,\"copy\",e,{capture:!0}),zi(o,\"cut\",e,{capture:!0})}}}else lr.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.P&&(this.F(),this.P=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.I=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[Wi]:!!t.autocapture_opt_out}),this.T=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.C=t}getElementSelectors(t){var i,e=[];return null==(i=this.C)||i.forEach((i=>{var r=null==o?void 0:o.querySelectorAll(i);null==r||r.forEach((r=>{t===r&&e.push(i)}))})),e}get isEnabled(){var t,i,e=null==(t=this.instance.persistence)?void 0:t.props[Wi],r=this.T;if(D(r)&&!U(e)&&!this.instance.O())return!1;var s=null!==(i=this.T)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}M(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=Ce(i);if(Ee(s)&&(s=s.parentNode||null),\"$autocapture\"===e&&\"click\"===i.type&&i instanceof MouseEvent)this.instance.config.rageclick&&null!=(r=this.rageclicks)&&r.isRageClick(i.clientX,i.clientY,i.timeStamp||(new Date).getTime())&&je(s,this.instance.config.rageclick)&&this.M(i,\"$rageclick\");var n=e===ar;if(s&&Ue(s,i,this.R,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=vr(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.R.element_attribute_ignorelist,elementsChainAsString:this.I});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===ar){var u,h=Te(null==t||null==(u=t.getSelection())?void 0:u.toString()),d=i.type||\"clipboard\";if(!h)return!1;o.$selected_content=h,o.$copy_type=d}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return C(null==o?void 0:o.querySelectorAll)}}Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return L(t)&&isFinite(t)&&Math.floor(t)===t});var fr=\"0123456789abcdef\";class pr{constructor(t){if(this.bytes=t,16!==t.length)throw new TypeError(\"not 128-bit length\")}static fromFieldsV7(t,i,e,r){if(!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(e)||!Number.isInteger(r)||t<0||i<0||e<0||r<0||t>0xffffffffffff||i>4095||e>1073741823||r>4294967295)throw new RangeError(\"invalid field value\");var s=new Uint8Array(16);return s[0]=t/Math.pow(2,40),s[1]=t/Math.pow(2,32),s[2]=t/Math.pow(2,24),s[3]=t/Math.pow(2,16),s[4]=t/Math.pow(2,8),s[5]=t,s[6]=112|i>>>8,s[7]=i,s[8]=128|e>>>24,s[9]=e>>>16,s[10]=e>>>8,s[11]=e,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new pr(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+fr.charAt(this.bytes[i]>>>4)+fr.charAt(15&this.bytes[i]),3!==i&&5!==i&&7!==i&&9!==i||(t+=\"-\");if(36!==t.length)throw new Error(\"Invalid UUIDv7 was generated\");return t}clone(){return new pr(this.bytes.slice(0))}equals(t){return 0===this.compareTo(t)}compareTo(t){for(var i=0;i<16;i++){var e=this.bytes[i]-t.bytes[i];if(0!==e)return Math.sign(e)}return 0}}class gr{constructor(){this.A=0,this.D=0,this.j=new yr}generate(){var t=this.generateOrAbort();if(M(t)){this.A=0;var i=this.generateOrAbort();if(M(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.A)this.A=t,this.L();else{if(!(t+1e4>this.A))return;this.D++,this.D>4398046511103&&(this.A++,this.L())}return pr.fromFieldsV7(this.A,Math.trunc(this.D/Math.pow(2,30)),this.D&Math.pow(2,30)-1,this.j.nextUint32())}L(){this.D=1024*this.j.nextUint32()+(1023&this.j.nextUint32())}}var _r,mr=t=>{if(\"undefined\"!=typeof UUIDV7_DENY_WEAK_RNG&&UUIDV7_DENY_WEAK_RNG)throw new Error(\"no cryptographically strong RNG available\");for(var i=0;i<t.length;i++)t[i]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};t&&!M(t.crypto)&&crypto.getRandomValues&&(mr=t=>crypto.getRandomValues(t));class yr{constructor(){this.N=new Uint32Array(8),this.U=1/0}nextUint32(){return this.U>=this.N.length&&(mr(this.N),this.U=0),this.N[this.U++]}}var br=()=>wr().toString(),wr=()=>(_r||(_r=new gr)).generate(),xr=\"\";var Er=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function $r(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),xr)return xr;if(!i)return\"\";if([\"localhost\",\"127.0.0.1\"].includes(t))return\"\";for(var e=t.split(\".\"),r=Math.min(e.length,8),s=\"dmn_chk_\"+br();!xr&&r--;){var n=e.slice(r).join(\".\"),a=s+\"=1;domain=.\"+n+\";path=/\";i.cookie=a+\";max-age=3\",i.cookie.includes(s)&&(i.cookie=a+\";max-age=0\",xr=n)}return xr}(t);if(!e){var r=(t=>{var i=t.match(Er);return i?i[0]:\"\"})(t);r!==e&&$i.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var Sr={H:()=>!!o,B:function(t){$i.error(\"cookieStore error: \"+t)},q:function(t){if(o){try{for(var i=t+\"=\",e=o.cookie.split(\";\").filter((t=>t.length)),r=0;r<e.length;r++){for(var s=e[r];\" \"==s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(i))return decodeURIComponent(s.substring(i.length,s.length))}}catch(t){}return null}},W:function(t){var i;try{i=JSON.parse(Sr.q(t))||{}}catch(t){}return i},G:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=$r(o.location.hostname,r);if(e){var u=new Date;u.setTime(u.getTime()+24*e*60*60*1e3),n=\"; expires=\"+u.toUTCString()}s&&(a=\"; secure\");var h=t+\"=\"+encodeURIComponent(JSON.stringify(i))+n+\"; SameSite=Lax; path=/\"+l+a;return h.length>3686.4&&$i.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},V:function(t,i){if(null!=o&&o.cookie)try{Sr.G(t,\"\",-1,i)}catch(t){return}}},kr=null,Pr={H:function(){if(!D(kr))return kr;var i=!0;if(M(t))i=!1;else try{var e=\"__mplssupport__\";Pr.G(e,\"xyz\"),'\"xyz\"'!==Pr.q(e)&&(i=!1),Pr.V(e)}catch(t){i=!1}return i||$i.error(\"localStorage unsupported; falling back to cookie store\"),kr=i,i},B:function(t){$i.error(\"localStorage error: \"+t)},q:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Pr.B(t)}return null},W:function(t){try{return JSON.parse(Pr.q(t))||{}}catch(t){}return null},G:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Pr.B(t)}},V:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Pr.B(t)}}},Tr=[\"$device_id\",\"distinct_id\",ie,ee,ge,pe],Ir={},Cr={H:function(){return!0},B:function(t){$i.error(\"memoryStorage error: \"+t)},q:function(t){return Ir[t]||null},W:function(t){return Ir[t]||null},G:function(t,i){Ir[t]=i},V:function(t){delete Ir[t]}},Rr=null,Fr={H:function(){if(!D(Rr))return Rr;if(Rr=!0,M(t))Rr=!1;else try{var i=\"__support__\";Fr.G(i,\"xyz\"),'\"xyz\"'!==Fr.q(i)&&(Rr=!1),Fr.V(i)}catch(t){Rr=!1}return Rr},B:function(t){$i.error(\"sessionStorage error: \",t)},q:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Fr.B(t)}return null},W:function(t){try{return JSON.parse(Fr.q(t))||null}catch(t){}return null},G:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Fr.B(t)}},V:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Fr.B(t)}}},Mr=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class Or{constructor(t){this._instance=t}get R(){return this._instance.config}get consent(){return this.J()?Mr.DENIED:this.K}isOptedOut(){return\"always\"===this.R.cookieless_mode||(this.consent===Mr.DENIED||this.consent===Mr.PENDING&&(this.R.opt_out_capturing_by_default||\"on_reject\"===this.R.cookieless_mode))}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===Mr.DENIED}optInOut(t){this.Y.G(this.X,t?1:0,this.R.cookie_expiration,this.R.cross_subdomain_cookie,this.R.secure_cookie)}reset(){this.Y.V(this.X,this.R.cross_subdomain_cookie)}get X(){var{token:t,opt_out_capturing_cookie_prefix:i,consent_persistence_name:e}=this._instance.config;return e||(i?i+t:\"__ph_opt_in_out_\"+t)}get K(){var t=this.Y.q(this.X);return V(t)?Mr.GRANTED:w(J,t)?Mr.DENIED:Mr.PENDING}get Y(){if(!this.Z){var t=this.R.opt_out_capturing_persistence_type;this.Z=\"localStorage\"===t?Pr:Sr;var i=\"localStorage\"===t?Sr:Pr;i.q(this.X)&&(this.Z.q(this.X)||this.optInOut(V(i.q(this.X))),i.V(this.X,this.R.cross_subdomain_cookie))}return this.Z}J(){return!!this.R.respect_dnt&&!!Ui([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>V(t)))}}var Ar=Si(\"[Dead Clicks]\"),Dr=()=>!0,jr=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(Xi)),r=t.instance.config.capture_dead_clicks;return U(r)?r:!!R(r)||e};class Lr{get lazyLoadedDeadClicksAutocapture(){return this.tt}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[Xi]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.it((()=>{this.et()}))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.initDeadClicksAutocapture&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this.instance,\"dead-clicks-autocapture\",(i=>{i?Ar.error(\"failed to load script\",i):t()}))}et(){var t;if(o){if(!this.tt&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=R(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.tt=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.tt.start(o),Ar.info(\"starting...\")}}else Ar.error(\"`document` not found. Cannot start.\")}stop(){this.tt&&(this.tt.stop(),this.tt=void 0,Ar.info(\"stopping...\"))}}var Nr=Si(\"[ExceptionAutocapture]\");class Ur{constructor(i){var e,r,s;this.rt=()=>{var i;if(t&&this.isEnabled&&null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions){var e=v.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=v.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=v.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.st&&this.R.capture_unhandled_errors&&(this.st=e(this.captureException.bind(this))),!this.nt&&this.R.capture_unhandled_rejections&&(this.nt=r(this.captureException.bind(this))),!this.ot&&this.R.capture_console_errors&&(this.ot=s(this.captureException.bind(this)))}catch(t){Nr.error(\"failed to start\",t),this.ut()}}},this._instance=i,this.ht=!(null==(e=this._instance.persistence)||!e.props[Vi]),this.dt=new Y({refillRate:null!==(r=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)&&void 0!==r?r:1,bucketSize:null!==(s=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)&&void 0!==s?s:10,refillInterval:1e4,h:Nr}),this.R=this.vt(),this.startIfEnabledOrStop()}vt(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return R(t)?i=g({},i,t):(M(t)?this.ht:t)&&(i=g({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.R.capture_console_errors||this.R.capture_unhandled_errors||this.R.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Nr.info(\"enabled\"),this.ut(),this.it(this.rt)):this.ut()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"exception-autocapture\",(i=>{if(i)return Nr.error(\"failed to load script\",i);t()}))}ut(){var t,i,e;null==(t=this.st)||t.call(this),this.st=void 0,null==(i=this.nt)||i.call(this),this.nt=void 0,null==(e=this.ot)||e.call(this),this.ot=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.ht=!!i||!1,this._instance.persistence&&this._instance.persistence.register({[Vi]:this.ht}),this.R=this.vt(),this.startIfEnabledOrStop()}onConfigChange(){this.R=this.vt()}captureException(t){var i,e,r=null!==(i=null==t||null==(e=t.$exception_list)||null==(e=e[0])?void 0:e.type)&&void 0!==i?i:\"Exception\";this.dt.consumeRateLimit(r)?Nr.info(\"Skipping exception capture because of client rate limiting.\",{exception:r}):this._instance.exceptions.sendExceptionEvent(t)}}function zr(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return C(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class Hr{constructor(i){var e;this._instance=i,this.ct=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&($i.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this.ft&&this.ft(),this.ft=void 0,$i.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||zr(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||zr(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"replaceState\")})),this.yt()}}_t(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.ct&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.ct=r}catch(t){$i.error(\"Error capturing \"+i+\" pageview\",t)}}yt(){if(!this.ft){var i=()=>{this._t(\"popstate\")};zi(t,\"popstate\",i),this.ft=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}var Br=Si(\"[SegmentIntegration]\");function qr(t,i){var e=t.config.segment;if(!e)return i();!function(t,i){var e=t.config.segment;if(!e)return i();var r=e=>{var r=()=>e.anonymousId()||br();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(he,\"identified\")),i()},s=e.user();\"then\"in s&&C(s.then)?s.then(r):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||Br.warn(\"This browser does not have Promise support, and can not use the segment integration\");var i=(i,e)=>{if(!e)return i;i.event.userId||i.event.anonymousId===t.get_distinct_id()||(Br.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(Br.info(\"UserId set, identifying with PostHog\"),t.identify(i.event.userId));var r=t.calculateEventProperties(e,i.event.properties);return i.event.properties=Object.assign({},r,i.event.properties),i};return{name:\"PostHog JS\",type:\"enrichment\",version:\"1.0.0\",isLoaded:()=>!0,load:()=>Promise.resolve(),track:t=>i(t,t.event.event),page:t=>i(t,\"$pageview\"),identify:t=>i(t,\"$identify\"),screen:t=>i(t,\"$screen\")}})(t)).then((()=>{i()}))}))}var Wr=\"posthog-js\";function Gr(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"],sendExceptionsToPostHog:o=!0}=void 0===i?{}:i;return i=>{var a,l,u,h,d;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var v=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=v,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var c=(null==(a=i.exception)?void 0:a.values)||[],f=c.map((t=>g({},t,{stacktrace:t.stacktrace?g({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>g({},t,{platform:\"web:javascript\"})))}):void 0}))),p={$exception_message:(null==(l=c[0])?void 0:l.value)||i.message,$exception_type:null==(u=c[0])?void 0:u.type,$exception_level:i.level,$exception_list:f,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(h=c[0])?void 0:h.value)||i.message,$sentry_exception_type:null==(d=c[0])?void 0:d.type,$sentry_tags:i.tags};return e&&r&&(p.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),o&&t.exceptions.sendExceptionEvent(p),i}}class Vr{constructor(t,i,e,r,s,n){this.name=Wr,this.setupOnce=function(o){o(Gr(t,{organization:i,projectId:e,prefix:r,severityAllowList:s,sendExceptionsToPostHog:null==n||n}))}}}var Jr=null!=t&&t.location?or(t.location.hash,\"__posthog\")||or(location.hash,\"state\"):null,Kr=\"_postHogToolbarParams\",Yr=Si(\"[Toolbar]\"),Xr=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(Xr||{});class Qr{constructor(t){this.instance=t}bt(t){v.ph_toolbar_state=t}wt(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:Xr.UNINITIALIZED}maybeLoadToolbar(i,e,r){if(void 0===i&&(i=void 0),void 0===e&&(e=void 0),void 0===r&&(r=void 0),!t||!o)return!1;i=null!=i?i:t.location,r=null!=r?r:t.history;try{if(!e){try{t.localStorage.setItem(\"test\",\"test\"),t.localStorage.removeItem(\"test\")}catch(t){return!1}e=null==t?void 0:t.localStorage}var s,n=Jr||or(i.hash,\"__posthog\")||or(i.hash,\"state\"),a=n?Oi((()=>JSON.parse(atob(decodeURIComponent(n)))))||Oi((()=>JSON.parse(decodeURIComponent(n)))):null;return a&&\"ph_authorize\"===a.action?((s=a).source=\"url\",s&&Object.keys(s).length>0&&(a.desiredHash?i.hash=a.desiredHash:r?r.replaceState(r.state,\"\",i.pathname+i.search):i.hash=\"\")):((s=JSON.parse(e.getItem(Kr)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}xt(t){var i=v.ph_load_toolbar||v.ph_load_editor;!j(i)&&C(i)?i(t,this.instance):Yr.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(_e));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=g({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(Kr,JSON.stringify(g({},s,{source:void 0}))),this.wt()===Xr.LOADED)this.xt(s);else if(this.wt()===Xr.UNINITIALIZED){var n;this.bt(Xr.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return Yr.error(\"[Toolbar] Failed to load\",t),void this.bt(Xr.UNINITIALIZED);this.bt(Xr.LOADED),this.xt(s)})),zi(t,\"turbolinks:load\",(()=>{this.bt(Xr.UNINITIALIZED),this.loadToolbar(s)}))}return!0}Et(t){return this.loadToolbar(t)}maybeLoadEditor(t,i,e){return void 0===t&&(t=void 0),void 0===i&&(i=void 0),void 0===e&&(e=void 0),this.maybeLoadToolbar(t,i,e)}}var Zr=Si(\"[TracingHeaders]\");class ts{constructor(t){this.$t=void 0,this.St=void 0,this.rt=()=>{var t,i;M(this.$t)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));M(this.St)&&(null==(i=v.__PosthogExtensions__)||null==(i=i.tracingHeadersPatchFns)||i._patchFetch(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager))},this._instance=t}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.tracingHeadersPatchFns&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"tracing-headers\",(i=>{if(i)return Zr.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.it(this.rt):(null==(t=this.$t)||t.call(this),null==(i=this.St)||i.call(this),this.$t=void 0,this.St=void 0)}}var is=\"https?://(.*)\",es=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],rs=Fi([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],es),ss=\"<masked>\",ns=[\"li_fat_id\"];function os(t,i,e){if(!o)return{};var r,s=i?Fi([],es,e||[]):[],n=as(nr(o.URL,s,ss),t),a=(r={},Ci(ns,(function(t){var i=Sr.q(t);r[t]=i||null})),r);return Ri(a,n)}function as(t,i){var e=rs.concat(i||[]),r={};return Ci(e,(function(i){var e=sr(t,i);r[i]=e||null})),r}function ls(t){var i=function(t){return t?0===t.search(is+\"google.([^/?]*)\")?\"google\":0===t.search(is+\"bing.com\")?\"bing\":0===t.search(is+\"yahoo.com\")?\"yahoo\":0===t.search(is+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!D(i)){r.$search_engine=i;var s=o?sr(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function us(){return navigator.language||navigator.userLanguage}function hs(){return(null==o?void 0:o.referrer)||\"$direct\"}function ds(t,i){var e=t?Fi([],es,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:hs().substring(0,1e3),u:r?nr(r,e,ss):void 0}}function vs(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=er(e))?void 0:i.host};if(r){s.$current_url=r;var n=er(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=as(r);Ri(s,o)}if(e){var a=ls(e);Ri(s,a)}return s}function cs(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function fs(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function ps(i,e){if(!d)return{};var r,s,n,o=i?Fi([],es,e||[]):[],[l,u]=function(t){for(var i=0;i<Jt.length;i++){var[e,r]=Jt[i],s=e.exec(t),n=s&&(C(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return Ri(Di({$os:l,$os_version:u,$browser:Wt(d,navigator.vendor),$device:Kt(d),$device_type:(s=d,n=Kt(s),n===et||n===it||\"Kobo\"===n||\"Kindle Fire\"===n||n===Ft?tt:n===wt||n===Et||n===xt||n===It?\"Console\":n===st?\"Wearable\":n?X:\"Desktop\"),$timezone:cs(),$timezone_offset:fs()}),{$current_url:nr(null==a?void 0:a.href,o,ss),$host:null==a?void 0:a.host,$pathname:null==a?void 0:a.pathname,$raw_user_agent:d.length>1e3?d.substring(0,997)+\"...\":d,$browser_version:Vt(d,navigator.vendor),$browser_language:us(),$browser_language_prefix:(r=us(),\"string\"==typeof r?r.split(\"-\")[0]:void 0),$screen_height:null==t?void 0:t.screen.height,$screen_width:null==t?void 0:t.screen.width,$viewport_height:null==t?void 0:t.innerHeight,$viewport_width:null==t?void 0:t.innerWidth,$lib:\"web\",$lib_version:c.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3})}var gs=Si(\"[Web Vitals]\"),_s=9e5;class ms{constructor(t){var i;this.kt=!1,this.P=!1,this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Pt=()=>{clearTimeout(this.Tt),0!==this.N.metrics.length&&(this._instance.capture(\"$web_vitals\",this.N.metrics.reduce(((t,i)=>g({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:g({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.It=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(M(e))gs.error(\"Could not read session ID. Dropping metrics!\");else{this.N=this.N||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.Ct();if(!M(r))if(j(null==t?void 0:t.name)||j(null==t?void 0:t.value))gs.error(\"Invalid metric received\",t);else if(this.Rt&&t.value>=this.Rt)gs.error(\"Ignoring metric with value >= \"+this.Rt,t);else this.N.url!==r&&(this.Pt(),this.Tt=setTimeout(this.Pt,this.flushToCaptureTimeoutMs)),M(this.N.url)&&(this.N.url=r),this.N.firstMetricTimestamp=M(this.N.firstMetricTimestamp)?Date.now():this.N.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.N.metrics.push(g({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.N.metrics.length===this.allowedMetrics.length&&this.Pt()}},this.rt=()=>{if(!this.P){var t,i,e,r,s=v.__PosthogExtensions__;M(s)||M(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.It.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.It.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.It.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.It.bind(this)),this.P=!0):gs.error(\"web vitals callbacks not loaded - not starting\")}},this._instance=t,this.kt=!(null==(i=this._instance.persistence)||!i.props[Yi]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=R(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return M(e)?(null==(i=this._instance.persistence)?void 0:i.props[Zi])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_attribution:void 0;return null==t||t}get Rt(){var t=R(this._instance.config.capture_performance)&&L(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:_s;return 0<t&&t<=6e4?_s:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return gs.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:U(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return U(i)?i:this.kt}startIfEnabled(){this.isEnabled&&!this.P&&(gs.info(\"enabled, starting...\"),this.it(this.rt))}onRemoteConfig(t){var i=R(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=R(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Yi]:i}),this._instance.persistence.register({[Zi]:e})),this.kt=i,this.startIfEnabled()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.postHogWebVitalsCallbacks?t():null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"web-vitals\",(i=>{var e;if(i)gs.error(\"failed to load script\",i);else{var r=null==(e=v.__PosthogExtensions__)?void 0:e.loadWebVitalsCallbacks;r?(r(this.useAttribution),t()):t()}}))}Ct(){var i=t?t.location.href:void 0;if(i){var e=this._instance.config.mask_personal_data_properties,r=this._instance.config.custom_personal_data_properties,s=e?Fi([],es,r||[]):[];return nr(i,s,ss)}gs.error(\"Could not determine current URL\")}}var ys=Si(\"[Heatmaps]\");function bs(t){return R(t)&&\"clientX\"in t&&\"clientY\"in t&&L(t.clientX)&&L(t.clientY)}class ws{constructor(t){var i;this.kt=!1,this.P=!1,this.Ft=null,this.instance=t,this.kt=!(null==(i=this.instance.persistence)||!i.props[Gi]),this.rageclicks=new ir(t.config.rageclick)}get flushIntervalMilliseconds(){var t=5e3;return R(this.instance.config.capture_heatmaps)&&this.instance.config.capture_heatmaps.flush_interval_milliseconds&&(t=this.instance.config.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return M(this.instance.config.capture_heatmaps)?M(this.instance.config.enable_heatmaps)?this.kt:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.P)return;ys.info(\"starting...\"),this.Mt(),this.Ot()}else{var t;clearInterval(null!==(t=this.Ft)&&void 0!==t?t:void 0),this.At(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[Gi]:i}),this.kt=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.N;return this.N=void 0,t}Dt(t){this.jt(t.originalEvent,\"deadclick\")}Ot(){this.Ft&&clearInterval(this.Ft),this.Ft=function(t){return\"visible\"===(null==t?void 0:t.visibilityState)}(o)?setInterval(this.Lt.bind(this),this.flushIntervalMilliseconds):null}Mt(){t&&o&&(this.Nt=this.Lt.bind(this),zi(t,\"beforeunload\",this.Nt),this.Ut=i=>this.jt(i||(null==t?void 0:t.event)),zi(o,\"click\",this.Ut,{capture:!0}),this.zt=i=>this.Ht(i||(null==t?void 0:t.event)),zi(o,\"mousemove\",this.zt,{capture:!0}),this.Bt=new Lr(this.instance,Dr,this.Dt.bind(this)),this.Bt.startIfEnabled(),this.qt=this.Ot.bind(this),zi(o,\"visibilitychange\",this.qt),this.P=!0)}At(){var i;t&&o&&(this.Nt&&t.removeEventListener(\"beforeunload\",this.Nt),this.Ut&&o.removeEventListener(\"click\",this.Ut,{capture:!0}),this.zt&&o.removeEventListener(\"mousemove\",this.zt,{capture:!0}),this.qt&&o.removeEventListener(\"visibilitychange\",this.qt),clearTimeout(this.Wt),null==(i=this.Bt)||i.stop(),this.P=!1)}Gt(i,e){var r=this.instance.scrollManager.scrollY(),s=this.instance.scrollManager.scrollX(),n=this.instance.scrollManager.scrollElement(),o=function(i,e,r){for(var s=i;s&&we(s)&&!xe(s,\"body\");){if(s===r)return!1;if(w(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=Me(s)}return!1}(Ce(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}jt(t,i){var e;if(void 0===i&&(i=\"click\"),!be(t.target)&&bs(t)){var r=this.Gt(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.Vt(g({},r,{type:\"rageclick\"})),this.Vt(r)}}Ht(t){!be(t.target)&&bs(t)&&(clearTimeout(this.Wt),this.Wt=setTimeout((()=>{this.Vt(this.Gt(t,\"mousemove\"))}),500))}Vt(i){if(t){var e=t.location.href,r=this.instance.config.mask_personal_data_properties,s=this.instance.config.custom_personal_data_properties,n=r?Fi([],es,s||[]):[],o=nr(e,n,ss);this.N=this.N||{},this.N[o]||(this.N[o]=[]),this.N[o].push(i)}}Lt(){this.N&&!F(this.N)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class xs{constructor(t){this.Jt=(t,i,e)=>{e&&(e.noSessionId||e.activityTimeout||e.sessionPastMaximumLength)&&($i.info(\"[PageViewManager] Session rotated, clearing pageview state\",{sessionId:t,changeReason:e}),this.Kt=void 0,this._instance.scrollManager.resetContext())},this._instance=t,this.Yt()}Yt(){var t;this.Xt=null==(t=this._instance.sessionManager)?void 0:t.onSessionId(this.Jt)}destroy(){var t;null==(t=this.Xt)||t.call(this),this.Xt=void 0}doPageView(i,e){var r,s=this.Qt(i,e);return this.Kt={pathname:null!==(r=null==t?void 0:t.location.pathname)&&void 0!==r?r:\"\",pageViewId:e,timestamp:i},this._instance.scrollManager.resetContext(),s}doPageLeave(t){var i;return this.Qt(t,null==(i=this.Kt)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.Kt)?void 0:t.pageViewId}}Qt(t,i){var e=this.Kt;if(!e)return{$pageview_id:i};var r={$pageview_id:i,$prev_pageview_id:e.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:n,lastScrollY:o,maxScrollY:a,maxContentHeight:l,lastContentY:u,maxContentY:h}=s;if(!(M(n)||M(o)||M(a)||M(l)||M(u)||M(h))){n=Math.ceil(n),o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),h=Math.ceil(h);var d=n<=1?1:K(o/n,0,1,$i),v=n<=1?1:K(a/n,0,1,$i),c=l<=1?1:K(u/l,0,1,$i),f=l<=1?1:K(h/l,0,1,$i);r=Ri(r,{$prev_pageview_last_scroll:o,$prev_pageview_last_scroll_percentage:d,$prev_pageview_max_scroll:a,$prev_pageview_max_scroll_percentage:v,$prev_pageview_last_content:u,$prev_pageview_last_content_percentage:c,$prev_pageview_max_content:h,$prev_pageview_max_content_percentage:f})}}return e.pathname&&(r.$prev_pageview_pathname=e.pathname),e.timestamp&&(r.$prev_pageview_duration=(t.getTime()-e.timestamp.getTime())/1e3),r}}var Es=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"],$s=function(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),Ss=Uint8Array,ks=Uint16Array,Ps=Uint32Array,Ts=new Ss([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Is=new Ss([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Cs=new Ss([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Rs=function(t,i){for(var e=new ks(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new Ps(e[30]);for(r=1;r<30;++r)for(var n=e[r];n<e[r+1];++n)s[n]=n-e[r]<<5|r;return[e,s]},Fs=Rs(Ts,2),Ms=Fs[0],Os=Fs[1];Ms[28]=258,Os[258]=28;for(var As=Rs(Is,0)[1],Ds=new ks(32768),js=0;js<32768;++js){var Ls=(43690&js)>>>1|(21845&js)<<1;Ls=(61680&(Ls=(52428&Ls)>>>2|(13107&Ls)<<2))>>>4|(3855&Ls)<<4,Ds[js]=((65280&Ls)>>>8|(255&Ls)<<8)>>>1}var Ns=function(t,i,e){for(var r=t.length,s=0,n=new ks(i);s<r;++s)++n[t[s]-1];var o,a=new ks(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new ks(1<<i);var l=15-i;for(s=0;s<r;++s)if(t[s])for(var u=s<<4|t[s],h=i-t[s],d=a[t[s]-1]++<<h,v=d|(1<<h)-1;d<=v;++d)o[Ds[d]>>>l]=u}else for(o=new ks(r),s=0;s<r;++s)o[s]=Ds[a[t[s]-1]++]>>>15-t[s];return o},Us=new Ss(288);for(js=0;js<144;++js)Us[js]=8;for(js=144;js<256;++js)Us[js]=9;for(js=256;js<280;++js)Us[js]=7;for(js=280;js<288;++js)Us[js]=8;var zs=new Ss(32);for(js=0;js<32;++js)zs[js]=5;var Hs=Ns(Us,9,0),Bs=Ns(zs,5,0),qs=function(t){return(t/8>>0)+(7&t&&1)},Ws=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof ks?ks:t instanceof Ps?Ps:Ss)(e-i);return r.set(t.subarray(i,e)),r},Gs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},Vs=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8,t[r+2]|=e>>>16},Js=function(t,i){for(var e=[],r=0;r<t.length;++r)t[r]&&e.push({s:r,f:t[r]});var s=e.length,n=e.slice();if(!s)return[new Ss(0),0];if(1==s){var o=new Ss(e[0].s+1);return o[e[0].s]=1,[o,1]}e.sort((function(t,i){return t.f-i.f})),e.push({s:-1,f:25001});var a=e[0],l=e[1],u=0,h=1,d=2;for(e[0]={s:-1,f:a.f+l.f,l:a,r:l};h!=s-1;)a=e[e[u].f<e[d].f?u++:d++],l=e[u!=h&&e[u].f<e[d].f?u++:d++],e[h++]={s:-1,f:a.f+l.f,l:a,r:l};var v=n[0].s;for(r=1;r<s;++r)n[r].s>v&&(v=n[r].s);var c=new ks(v+1),f=Ks(e[h-1],c,0);if(f>i){r=0;var p=0,g=f-i,_=1<<g;for(n.sort((function(t,i){return c[i.s]-c[t.s]||t.f-i.f}));r<s;++r){var m=n[r].s;if(!(c[m]>i))break;p+=_-(1<<f-c[m]),c[m]=i}for(p>>>=g;p>0;){var y=n[r].s;c[y]<i?p-=1<<i-c[y]++-1:++r}for(;r>=0&&p;--r){var b=n[r].s;c[b]==i&&(--c[b],++p)}f=i}return[new Ss(c),f]},Ks=function(t,i,e){return-1==t.s?Math.max(Ks(t.l,i,e+1),Ks(t.r,i,e+1)):i[t.s]=e},Ys=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new ks(++i),r=0,s=t[0],n=1,o=function(t){e[r++]=t},a=1;a<=i;++a)if(t[a]==s&&a!=i)++n;else{if(!s&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(s),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(s);n=1,s=t[a]}return[e.subarray(0,r),i]},Xs=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Qs=function(t,i,e){var r=e.length,s=qs(i+2);t[s]=255&r,t[s+1]=r>>>8,t[s+2]=255^t[s],t[s+3]=255^t[s+1];for(var n=0;n<r;++n)t[s+n+4]=e[n];return 8*(s+4+r)},Zs=function(t,i,e,r,s,n,o,a,l,u,h){Gs(i,h++,e),++s[256];for(var d=Js(s,15),v=d[0],c=d[1],f=Js(n,15),p=f[0],g=f[1],_=Ys(v),m=_[0],y=_[1],b=Ys(p),w=b[0],x=b[1],E=new ks(19),S=0;S<m.length;++S)E[31&m[S]]++;for(S=0;S<w.length;++S)E[31&w[S]]++;for(var k=Js(E,7),P=k[0],T=k[1],I=19;I>4&&!P[Cs[I-1]];--I);var C,R,F,M,O=u+5<<3,A=Xs(s,Us)+Xs(n,zs)+o,D=Xs(s,v)+Xs(n,p)+o+14+3*I+Xs(E,P)+(2*E[16]+3*E[17]+7*E[18]);if(O<=A&&O<=D)return Qs(i,h,t.subarray(l,l+u));if(Gs(i,h,1+(D<A)),h+=2,D<A){C=Ns(v,c,0),R=v,F=Ns(p,g,0),M=p;var j=Ns(P,T,0);Gs(i,h,y-257),Gs(i,h+5,x-1),Gs(i,h+10,I-4),h+=14;for(S=0;S<I;++S)Gs(i,h+3*S,P[Cs[S]]);h+=3*I;for(var L=[m,w],N=0;N<2;++N){var U=L[N];for(S=0;S<U.length;++S){var z=31&U[S];Gs(i,h,j[z]),h+=P[z],z>15&&(Gs(i,h,U[S]>>>5&127),h+=U[S]>>>12)}}}else C=Hs,R=Us,F=Bs,M=zs;for(S=0;S<a;++S)if(r[S]>255){z=r[S]>>>18&31;Vs(i,h,C[z+257]),h+=R[z+257],z>7&&(Gs(i,h,r[S]>>>23&31),h+=Ts[z]);var H=31&r[S];Vs(i,h,F[H]),h+=M[H],H>3&&(Vs(i,h,r[S]>>>5&8191),h+=Is[H])}else Vs(i,h,C[r[S]]),h+=R[r[S]];return Vs(i,h,C[256]),h+R[256]},tn=new Ps([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),en=function(){for(var t=new Ps(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),rn=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new Ss(r+o+5*(1+Math.floor(o/7e3))+s),l=a.subarray(r,a.length-s),u=0;if(!i||o<8)for(var h=0;h<=o;h+=65535){var d=h+65535;d<o?u=Qs(l,u,t.subarray(h,d)):(l[h]=n,u=Qs(l,u,t.subarray(h,o)))}else{for(var v=tn[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,g=new ks(32768),_=new ks(p+1),m=Math.ceil(e/3),y=2*m,b=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<y)&p},w=new Ps(25e3),x=new ks(288),E=new ks(32),S=0,k=0,P=(h=0,0),T=0,I=0;h<o;++h){var C=b(h),R=32767&h,F=_[C];if(g[R]=F,_[C]=R,T<=h){var M=o-h;if((S>7e3||P>24576)&&M>423){u=Zs(t,l,0,w,x,E,k,P,I,h-I,u),P=S=k=0,I=h;for(var O=0;O<286;++O)x[O]=0;for(O=0;O<30;++O)E[O]=0}var A=2,D=0,j=f,L=R-F&32767;if(M>2&&C==b(h-L))for(var N=Math.min(c,M)-1,U=Math.min(32767,h),z=Math.min(258,M);L<=U&&--j&&R!=F;){if(t[h+A]==t[h+A-L]){for(var H=0;H<z&&t[h+H]==t[h+H-L];++H);if(H>A){if(A=H,D=L,H>N)break;var B=Math.min(L,H-2),q=0;for(O=0;O<B;++O){var W=h-L+O+32768&32767,G=W-g[W]+32768&32767;G>q&&(q=G,F=W)}}}L+=(R=F)-(F=g[R])+32768&32767}if(D){w[P++]=268435456|Os[A]<<18|As[D];var V=31&Os[A],J=31&As[D];k+=Ts[V]+Is[J],++x[257+V],++E[J],T=h+A,++S}else w[P++]=t[h],++x[t[h]]}}u=Zs(t,l,n,w,x,E,k,P,I,h-I,u)}return Ws(a,0,r+qs(u)+s)}(t,null==i.level?6:i.level,null==i.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+i.mem,e,r,!0)},sn=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8};function nn(t,i){void 0===i&&(i={});var e=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=en[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}}(),r=t.length;e.p(t);var s,n=rn(t,i,10+((s=i).filename&&s.filename.length+1||0),8),o=n.length;return function(t,i){var e=i.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=i.level<2?4:9==i.level?2:0,t[9]=3,0!=i.mtime&&sn(t,4,Math.floor(new Date(i.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}}(n,i),sn(n,o-8,e.d()),sn(n,o-4,r),n}var on=function(t){var i,e,r,s,n=\"\";for(i=e=0,r=(t=(t+\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\")).length,s=0;s<r;s++){var o=t.charCodeAt(s),a=null;o<128?e++:a=o>127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),D(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},an=!!u||!!l,ln=\"text/plain\",un=function(t,i,e){var r;void 0===e&&(e=!0);var[s,n]=t.split(\"?\"),o=g({},i),a=null!==(r=null==n?void 0:n.split(\"&\").map((t=>{var i,[r,s]=t.split(\"=\"),n=e&&null!==(i=o[r])&&void 0!==i?i:s;return delete o[r],r+\"=\"+n})))&&void 0!==r?r:[],l=rr(o);return l&&a.push(l),s+\"?\"+a.join(\"&\")},hn=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),dn=t=>{var{data:i,compression:e}=t;if(i){if(e===$s.GZipJS){var r=nn(function(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new Ss(t.length+(t.length>>>1)),s=0,n=function(t){r[s++]=t},o=0;o<e;++o){if(s+5>r.length){var a=new Ss(s+8+(e-o<<1));a.set(r),r=a}var l=t.charCodeAt(o);l<128||i?n(l):l<2048?(n(192|l>>>6),n(128|63&l)):l>55295&&l<57344?(n(240|(l=65536+(1047552&l)|1023&t.charCodeAt(++o))>>>18),n(128|l>>>12&63),n(128|l>>>6&63),n(128|63&l)):(n(224|l>>>12),n(128|l>>>6&63),n(128|63&l))}return Ws(r,0,s)}(hn(i)),{mtime:0}),s=new Blob([r],{type:ln});return{contentType:ln,body:s,estimatedSize:s.size}}if(e===$s.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=on(t);do{i=(n=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63,e=n>>12&63,r=n>>6&63,s=63&n,h[l++]=o.charAt(i)+o.charAt(e)+o.charAt(r)+o.charAt(s)}while(a<t.length);switch(u=h.join(\"\"),t.length%3){case 1:u=u.slice(0,-2)+\"==\";break;case 2:u=u.slice(0,-1)+\"=\"}return u}(hn(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:hn(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=hn(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},vn=[];l&&vn.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=dn(t))&&void 0!==i?i:{},o=new Headers;Ci(t.headers,(function(t,i){o.append(i,t)})),r&&o.append(\"Content-Type\",r);var a=t.url,u=null;if(h){var d=new h;u={signal:d.signal,timeout:setTimeout((()=>d.abort()),t.timeout)}}l(a,g({method:(null==t?void 0:t.method)||\"GET\",headers:o,keepalive:\"POST\"===t.method&&(n||0)<52428.8,body:s,signal:null==(e=u)?void 0:e.signal},t.fetchOptions)).then((i=>i.text().then((e=>{var r={statusCode:i.status,text:e};if(200===i.status)try{r.json=JSON.parse(e)}catch(t){$i.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{$i.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&vn.push({transport:\"XHR\",method:t=>{var i,e=new u;e.open(t.method||\"GET\",t.url,!0);var{contentType:r,body:s}=null!==(i=dn(t))&&void 0!==i?i:{};Ci(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),t.disableXHRCredentials||(e.withCredentials=!0),e.onreadystatechange=()=>{if(4===e.readyState){var i={statusCode:e.status,text:e.responseText};if(200===e.status)try{i.json=JSON.parse(e.responseText)}catch(t){}null==t.callback||t.callback(i)}},e.send(s)}}),null!=n&&n.sendBeacon&&vn.push({transport:\"sendBeacon\",method:t=>{var i=un(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=dn(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var cn=function(t,i){if(!function(t){try{new RegExp(t)}catch(t){return!1}return!0}(i))return!1;try{return new RegExp(i).test(t)}catch(t){return!1}};function fn(t,i,e){return hn({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var pn={exact:(t,i)=>i.some((i=>t.some((t=>i===t)))),is_not:(t,i)=>i.every((i=>t.every((t=>i!==t)))),regex:(t,i)=>i.some((i=>t.some((t=>cn(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!cn(i,t))))),icontains:(t,i)=>i.map(gn).some((i=>t.map(gn).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(gn).every((i=>t.map(gn).every((t=>!i.includes(t))))),gt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e>parseFloat(t)))})),lt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e<parseFloat(t)))}))},gn=t=>t.toLowerCase();function _n(t,i){return!t||Object.entries(t).every((t=>{var[e,r]=t,s=null==i?void 0:i[e];if(M(s)||D(s))return!1;var n=[String(s)],o=pn[r.operator];return!!o&&o(r.values,n)}))}var mn=Si(\"[Error tracking]\");class yn{constructor(t){var i,e;this.Zt=[],this.ti=new Qt([new vi,new xi,new fi,new ci,new bi,new yi,new gi,new wi],di()),this._instance=t,this.Zt=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(Ji))&&void 0!==i?i:[]}onRemoteConfig(t){var i,e,r,s=null!==(i=null==(e=t.errorTracking)?void 0:e.suppressionRules)&&void 0!==i?i:[],n=null==(r=t.errorTracking)?void 0:r.captureExtensionExceptions;this.Zt=s,this._instance.persistence&&this._instance.persistence.register({[Ji]:this.Zt,[Ki]:n})}get ii(){var t,i=!!this._instance.get_property(Ki),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}buildProperties(t,i){return this.ti.buildFromUnknown(t,{syntheticException:null==i?void 0:i.syntheticException,mechanism:{handled:null==i?void 0:i.handled}})}sendExceptionEvent(t){var i=t.$exception_list;if(this.ei(i)){if(this.ri(i))return void mn.info(\"Skipping exception capture because a suppression rule matched\");if(!this.ii&&this.si(i))return void mn.info(\"Skipping exception capture because it was thrown by an extension\");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.ni(i))return void mn.info(\"Skipping exception capture because it was thrown by the PostHog SDK\")}return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"})}ri(t){if(0===t.length)return!1;var i=t.reduce(((t,i)=>{var{type:e,value:r}=i;return O(e)&&e.length>0&&t.$exception_types.push(e),O(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.Zt.some((t=>{var e=t.values.map((t=>{var e,r=pn[t.operator],s=I(t.value)?t.value:[t.value],n=null!==(e=i[t.key])&&void 0!==e?e:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?e.some(Boolean):e.every(Boolean)}))}si(t){return t.flatMap((t=>{var i,e;return null!==(i=null==(e=t.stacktrace)?void 0:e.frames)&&void 0!==i?i:[]})).some((t=>t.filename&&t.filename.startsWith(\"chrome-extension://\")))}ni(t){if(t.length>0){var i,e,r,s,n=null!==(i=null==(e=t[0].stacktrace)?void 0:e.frames)&&void 0!==i?i:[],o=n[n.length-1];return null!==(r=null==o||null==(s=o.filename)?void 0:s.includes(\"posthog.com/static\"))&&void 0!==r&&r}return!1}ei(t){return!j(t)&&I(t)}}var bn=Si(\"[FeatureFlags]\"),wn=Si(\"[FeatureFlags]\",{debugEnabled:!0}),xn=\"$active_feature_flags\",En=\"$override_feature_flags\",$n=\"$feature_flag_payloads\",Sn=\"$override_feature_flag_payloads\",kn=\"$feature_flag_request_id\",Pn=\"$feature_flag_evaluated_at\",Tn=t=>{var i={};for(var[e,r]of Mi(t||{}))r&&(i[e]=r);return i},In=t=>{var i=t.flags;return i?(t.featureFlags=Object.fromEntries(Object.keys(i).map((t=>{var e;return[t,null!==(e=i[t].variant)&&void 0!==e?e:i[t].enabled]}))),t.featureFlagPayloads=Object.fromEntries(Object.keys(i).filter((t=>i[t].enabled)).filter((t=>{var e;return null==(e=i[t].metadata)?void 0:e.payload})).map((t=>{var e;return[t,null==(e=i[t].metadata)?void 0:e.payload]})))):bn.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},Cn=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class Rn{constructor(t){this.oi=!1,this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.ci=!1,this._instance=t,this.featureFlagEventHandlers=[]}fi(){var t,i=null!==(t=this._instance.config.evaluation_contexts)&&void 0!==t?t:this._instance.config.evaluation_environments;return!this._instance.config.evaluation_environments||this._instance.config.evaluation_contexts||this.ci||(bn.warn(\"evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version.\"),this.ci=!0),null!=i&&i.length?i.filter((t=>{var i=t&&\"string\"==typeof t&&t.trim().length>0;return i||bn.error(\"Invalid evaluation context found:\",t,\"Expected non-empty string\"),i})):[]}pi(){return this.fi().length>0}flags(){if(this._instance.config.__preview_remote_config)this.di=!0;else{var t=!this.gi&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.mi({disableFlags:t})}}get hasLoadedFlags(){return this.ai}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(ne),i=this._instance.get_property(En),e=this._instance.get_property(Sn);if(!e&&!i)return t||{};var r=Ri({},t||{}),s=[...new Set([...Object.keys(e||{}),...Object.keys(i||{})])];for(var n of s){var o,a,l=r[n],u=null==i?void 0:i[n],h=M(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=M(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=g({},l,{enabled:h,variant:h?null!=d?d:null==l?void 0:l.variant:void 0});if(h!==(null==l?void 0:l.enabled)&&(c.original_enabled=null==l?void 0:l.enabled),d!==(null==l?void 0:l.variant)&&(c.original_variant=null==l?void 0:l.variant),v)c.metadata=g({},null==l?void 0:l.metadata,{payload:v,original_payload:null==l||null==(a=l.metadata)?void 0:a.payload});r[n]=c}return this.oi||(bn.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.oi=!0),r}getFlagVariants(){var t=this._instance.get_property(re),i=this._instance.get_property(En);if(!i)return t||{};for(var e=Ri({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(bn.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.oi=!0),e}getFlagPayloads(){var t=this._instance.get_property($n),i=this._instance.get_property(Sn);if(!i)return t||{};for(var e=Ri({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(bn.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.oi=!0),e}reloadFeatureFlags(){this.ui||this._instance.config.advanced_disable_feature_flags||this.gi||(this.gi=setTimeout((()=>{this.mi()}),5))}yi(){clearTimeout(this.gi),this.gi=void 0}ensureFlagsLoaded(){this.ai||this.li||this.gi||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.ui=t}mi(t){var i;if(this.yi(),!this._instance.O())if(this.li)this.hi=!0;else{var e=this._instance.config.token,r=this._instance.get_property(\"$device_id\"),s={token:e,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:g({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(oe)||{}),group_properties:this._instance.get_property(ae)};D(r)||M(r)||(s.$device_id=r),(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(s.disable_flags=!0),this.pi()&&(s.evaluation_contexts=this.fi());var n=this._instance.config.__preview_remote_config,o=n?\"/flags/?v=2\":\"/flags/?v=2&config=true\",a=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",l=this._instance.requestRouter.endpointFor(\"flags\",o+a);n&&(s.timezone=cs()),this.li=!0,this._instance._send_request({method:\"POST\",url:l,data:s,compression:this._instance.config.disable_compression?void 0:$s.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,e,r=!0;(200===t.statusCode&&(this.hi||(this.$anon_distinct_id=void 0),r=!1),this.li=!1,this.di)||(this.di=!0,this._instance.bi(null!==(e=t.json)&&void 0!==e?e:{}));if(!s.disable_flags||this.hi)if(this.vi=!r,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(Cn.FeatureFlags))bn.warn(\"You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more.\");else{var n;if(!s.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},r);this.hi&&(this.hi=!1,this.mi())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(kn)||void 0,n=this._instance.get_property(Pn)||void 0,o=this._instance.get_property(ue)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in o)||!o[t].includes(r))){var a,l,u,h,d,v,c,f,p;I(o[t])?o[t].push(r):o[t]=[r],null==(a=this._instance.persistence)||a.register({[ue]:o});var g=this.getFeatureFlagDetails(t),_={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_evaluated_at:n,$feature_flag_bootstrapped_response:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlags)?void 0:l[t])||null,$feature_flag_bootstrapped_payload:(null==(u=this._instance.config.bootstrap)||null==(u=u.featureFlagPayloads)?void 0:u[t])||null,$used_bootstrap_value:!this.vi};M(null==g||null==(h=g.metadata)?void 0:h.version)||(_.$feature_flag_version=g.metadata.version);var m,y=null!==(d=null==g||null==(v=g.reason)?void 0:v.description)&&void 0!==d?d:null==g||null==(c=g.reason)?void 0:c.code;if(y&&(_.$feature_flag_reason=y),null!=g&&null!=(f=g.metadata)&&f.id&&(_.$feature_flag_id=g.metadata.id),M(null==g?void 0:g.original_variant)&&M(null==g?void 0:g.original_enabled)||(_.$feature_flag_original_response=M(g.original_variant)?g.original_enabled:g.original_variant),null!=g&&null!=(p=g.metadata)&&p.original_payload)_.$feature_flag_original_payload=null==g||null==(m=g.metadata)?void 0:m.original_payload;this._instance.capture(\"$feature_flag_called\",_)}return e}bn.warn('getFeatureFlag for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){return this.getFlagPayloads()[t]}getRemoteConfigPayload(t,i){var e=this._instance.config.token,r={distinct_id:this._instance.get_distinct_id(),token:e};this.pi()&&(r.evaluation_contexts=this.fi()),this._instance._send_request({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"flags\",\"/flags/?v=2&config=true\"),data:r,compression:this._instance.config.disable_compression?void 0:$s.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:e=>{var r,s=null==(r=e.json)?void 0:r.featureFlagPayloads;i((null==s?void 0:s[t])||void 0)}})}isFeatureEnabled(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFeatureFlag(t,i);return M(e)?void 0:!!e}bn.warn('isFeatureEnabled for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((i=>i!==t))}receivedFeatureFlags(t,i){if(this._instance.persistence){this.ai=!0;var e=this.getFlagVariants(),r=this.getFlagPayloads(),s=this.getFlagsWithDetails();!function(t,i,e,r,s){void 0===e&&(e={}),void 0===r&&(r={}),void 0===s&&(s={});var n=In(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId,h=t.evaluatedAt;if(I(a)){bn.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var d={};if(a)for(var v=0;v<a.length;v++)d[a[v]]=!0;i&&i.register({[xn]:a,[re]:d})}else{var c=a,f=l,p=o;t.errorsWhileComputingFlags&&(c=g({},e,c),f=g({},r,f),p=g({},s,p)),i&&i.register(g({[xn]:Object.keys(Tn(c)),[re]:c||{},[$n]:f||{},[ne]:p||{}},u?{[kn]:u}:{},h?{[Pn]:h}:{}))}}}(t,this._instance.persistence,e,r,s),this.wi(i)}}override(t,i){void 0===i&&(i=!1),bn.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return bn.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(En),this._instance.persistence.unregister(Sn),this.wi(),wn.info(\"All overrides cleared\");if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.oi=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(En),wn.info(\"Flag overrides cleared\");else if(e.flags){if(I(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[En]:r})}else this._instance.persistence.register({[En]:e.flags});wn.info(\"Flag overrides set\",{flags:e.flags})}return\"payloads\"in e&&(!1===e.payloads?(this._instance.persistence.unregister(Sn),wn.info(\"Payload overrides cleared\")):e.payloads&&(this._instance.persistence.register({[Sn]:e.payloads}),wn.info(\"Payload overrides set\",{payloads:e.payloads}))),void this.wi()}this.wi()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ai){var{flags:i,flagVariants:e}=this.xi();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(se)||[]).find((i=>i.flagKey===t)),n={[\"$feature_enrollment/\"+t]:i},o={$feature_flag:t,$feature_enrollment:i,$set:n};s&&(o.$early_access_feature_name=s.name),e&&(o.$feature_enrollment_stage=e),this._instance.capture(\"$feature_enrollment_update\",o),this.setPersonPropertiesForFlags(n,!1);var a=g({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[xn]:Object.keys(Tn(a)),[re]:a}),this.wi()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(se),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/early_access_features/?token=\"+this._instance.config.token+s),method:\"GET\",callback:i=>{var e,r;if(i.json){var s=i.json.earlyAccessFeatures;return null==(e=this._instance.persistence)||e.unregister(se),null==(r=this._instance.persistence)||r.register({[se]:s}),t(s)}}})}xi(){var t=this.getFlags(),i=this.getFlagVariants();return{flags:t.filter((t=>i[t])),flagVariants:Object.keys(i).filter((t=>i[t])).reduce(((t,e)=>(t[e]=i[e],t)),{})}}wi(t){var{flags:i,flagVariants:e}=this.xi();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(oe)||{};this._instance.register({[oe]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(oe)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(ae)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=g({},e[i],t[i]),delete t[i]})),this._instance.register({[ae]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(ae)||{};this._instance.register({[ae]:g({},i,{[t]:{}})})}else this._instance.unregister(ae)}reset(){this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.$anon_distinct_id=void 0,this.yi(),this.oi=!1}}var Fn=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class Mn{constructor(t,i){this.R=t,this.props={},this.Ei=!1,this.$i=(t=>{var i=\"\";return t.token&&(i=t.token.replace(/\\+/g,\"PL\").replace(/\\//g,\"SL\").replace(/=/g,\"EQ\")),t.persistence_name?\"ph_\"+t.persistence_name:\"ph_\"+i+\"_posthog\"})(t),this.Y=this.Si(t),this.load(),t.debug&&$i.info(\"Persistence loaded\",t.persistence,g({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.ki}Si(i){-1===Fn.indexOf(i.persistence.toLowerCase())&&($i.critical(\"Unknown persistence type \"+i.persistence+\"; falling back to localStorage+cookie\"),i.persistence=\"localStorage+cookie\");var e=function(i){void 0===i&&(i=[]);var e=[...Tr,...i];return g({},Pr,{W:function(t){try{var i={};try{i=Sr.W(t)||{}}catch(t){}var e=Ri(i,JSON.parse(Pr.q(t)||\"{}\"));return Pr.G(t,e),e}catch(t){}return null},G:function(t,i,r,s,n,o){try{Pr.G(t,i,void 0,void 0,o);var a={};e.forEach((t=>{i[t]&&(a[t]=i[t])})),Object.keys(a).length&&Sr.G(t,a,r,s,n,o)}catch(t){Pr.B(t)}},V:function(i,e){try{null==t||t.localStorage.removeItem(i),Sr.V(i,e)}catch(t){Pr.B(t)}}})}(i.cookie_persisted_properties||[]),r=i.persistence.toLowerCase();return\"localstorage\"===r&&Pr.H()?Pr:\"localstorage+cookie\"===r&&e.H()?e:\"sessionstorage\"===r&&Fr.H()?Fr:\"memory\"===r?Cr:\"cookie\"===r?Sr:e.H()?e:Sr}properties(){var t={};return Ci(this.props,(function(i,e){if(e===re&&R(i))for(var r=Object.keys(i),n=0;n<r.length;n++)t[\"$feature/\"+r[n]]=i[r[n]];else a=e,l=!1,(D(o=ye)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(Ci(o,(function(t){if(l||(l=t===a))return Ti})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.ki){var t=this.Y.W(this.$i);t&&(this.props=Ri({},t))}}save(){this.ki||this.Y.G(this.$i,this.props,this.Pi,this.Ti,this.Ii,this.R.debug)}remove(){this.Y.V(this.$i,!1),this.Y.V(this.$i,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(R(t)){M(i)&&(i=\"None\"),this.Pi=M(e)?this.Ci:e;var r=!1;if(Ci(t,((t,e)=>{this.props.hasOwnProperty(e)&&this.props[e]!==i||(this.props[e]=t,r=!0)})),r)return this.save(),!0}return!1}register(t,i){if(R(t)){this.Pi=M(i)?this.Ci:i;var e=!1;if(Ci(t,((i,r)=>{t.hasOwnProperty(r)&&this.props[r]!==i&&(this.props[r]=i,e=!0)})),e)return this.save(),!0}return!1}unregister(t){t in this.props&&(delete this.props[t],this.save())}update_campaign_params(){if(!this.Ei){var t=os(this.R.custom_campaign_params,this.R.mask_personal_data_properties,this.R.custom_personal_data_properties);F(Di(t))||this.register(t),this.Ei=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?ls(t):{})}update_referrer_info(){var t;this.register_once({$referrer:hs(),$referring_domain:null!=o&&o.referrer&&(null==(t=er(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[ce]||this.props[fe]||this.register_once({[pe]:ds(this.R.mask_personal_data_properties,this.R.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};Ci([fe,ce],(i=>{var e=this.props[i];e&&Ci(e,(function(i,e){t[\"$initial_\"+E(e)]=i}))}));var i,e,r=this.props[pe];if(r){var s=(i=vs(r),e={},Ci(i,(function(t,i){e[\"$initial_\"+E(i)]=t})),e);Ri(t,s)}return t}safe_merge(t){return Ci(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ci=this.Pi=t.cookie_expiration,this.set_disabled(t.disable_persistence||!!e),this.set_cross_subdomain(t.cross_subdomain_cookie),this.set_secure(t.secure_cookie),t.persistence!==i.persistence||!((t,i)=>{if(t.length!==i.length)return!1;var e=[...t].sort(),r=[...i].sort();return e.every(((t,i)=>t===r[i]))})(t.cookie_persisted_properties||[],i.cookie_persisted_properties||[])){var r=this.Si(t),s=this.props;this.clear(),this.Y=r,this.props=s,this.save()}}set_disabled(t){this.ki=t,this.ki?this.remove():this.save()}set_cross_subdomain(t){t!==this.Ti&&(this.Ti=t,this.remove(),this.save())}set_secure(t){t!==this.Ii&&(this.Ii=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[qi]||{};e[t]=i,this.props[qi]=e,this.save()}remove_event_timer(t){var i=(this.props[qi]||{})[t];return M(i)||(delete this.props[qi][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}var On=Si(\"[Product Tours]\"),An=\"ph_product_tours\";class Dn{constructor(t){this.Ri=null,this.Fi=null,this._instance=t}onRemoteConfig(t){this._instance.persistence&&this._instance.persistence.register({[Qi]:!(null==t||!t.productTours)}),this.loadIfEnabled()}loadIfEnabled(){var t,i;this.Ri||((t=this._instance).config.disable_product_tours||null==(i=t.persistence)||!i.get_property(Qi))||this.it((()=>this.Mi()))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.generateProductTours?t():null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"product-tours\",(i=>{i?On.error(\"Could not load product tours script\",i):t()}))}Mi(){var t;!this.Ri&&null!=(t=v.__PosthogExtensions__)&&t.generateProductTours&&(this.Ri=v.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,i){if(void 0===i&&(i=!1),!I(this.Fi)||i){var e=this._instance.persistence;if(e){var r=e.props[An];if(I(r)&&!i)return this.Fi=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/product_tours/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{var r=i.statusCode;if(200!==r||!i.json){var s=\"Product Tours API could not be loaded, status: \"+r;return On.error(s),void t([],{isLoaded:!1,error:s})}var n=I(i.json.product_tours)?i.json.product_tours:[];this.Fi=n,e&&e.register({[An]:n}),t(n,{isLoaded:!0})}})}else t(this.Fi,{isLoaded:!0})}getActiveProductTours(t){j(this.Ri)?t([],{isLoaded:!1,error:\"Product tours not loaded\"}):this.Ri.getActiveProductTours(t)}showProductTour(t){var i;null==(i=this.Ri)||i.showTourById(t)}previewTour(t){this.Ri?this.Ri.previewTour(t):this.it((()=>{var i;this.Mi(),null==(i=this.Ri)||i.previewTour(t)}))}dismissProductTour(){var t;null==(t=this.Ri)||t.dismissTour(\"user_clicked_skip\")}nextStep(){var t;null==(t=this.Ri)||t.nextStep()}previousStep(){var t;null==(t=this.Ri)||t.previousStep()}clearCache(){var t;this.Fi=null,null==(t=this._instance.persistence)||t.unregister(An)}resetTour(t){var i;null==(i=this.Ri)||i.resetTour(t)}resetAllTours(){var t;null==(t=this.Ri)||t.resetAllTours()}cancelPendingTour(t){var i;null==(i=this.Ri)||i.cancelPendingTour(t)}}var jn=function(t){return t.Activation=\"events\",t.Cancellation=\"cancelEvents\",t}({}),Ln=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),Nn=function(t){return t.TopLeft=\"top_left\",t.TopRight=\"top_right\",t.TopCenter=\"top_center\",t.MiddleLeft=\"middle_left\",t.MiddleRight=\"middle_right\",t.MiddleCenter=\"middle_center\",t.Left=\"left\",t.Center=\"center\",t.Right=\"right\",t.NextToTrigger=\"next_to_trigger\",t}({}),Un=function(t){return t.Top=\"top\",t.Left=\"left\",t.Right=\"right\",t.Bottom=\"bottom\",t}({}),zn=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),Hn=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),Bn=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),qn=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),Wn=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t.ABANDONED=\"survey abandoned\",t}({}),Gn=function(t){return t.SURVEY_ID=\"$survey_id\",t.SURVEY_NAME=\"$survey_name\",t.SURVEY_RESPONSE=\"$survey_response\",t.SURVEY_ITERATION=\"$survey_iteration\",t.SURVEY_ITERATION_START_DATE=\"$survey_iteration_start_date\",t.SURVEY_PARTIALLY_COMPLETED=\"$survey_partially_completed\",t.SURVEY_SUBMISSION_ID=\"$survey_submission_id\",t.SURVEY_QUESTIONS=\"$survey_questions\",t.SURVEY_COMPLETED=\"$survey_completed\",t.PRODUCT_TOUR_ID=\"$product_tour_id\",t.SURVEY_LAST_SEEN_DATE=\"$survey_last_seen_date\",t}({}),Vn=function(t){return t.Popover=\"popover\",t.Inline=\"inline\",t}({}),Jn=Si(\"[Surveys]\");var Kn=\"seenSurvey_\",Yn=(t,i)=>{var e=\"$survey_\"+i+\"/\"+t.id;return t.current_iteration&&t.current_iteration>0&&(e=\"$survey_\"+i+\"/\"+t.id+\"/\"+t.current_iteration),e},Xn=t=>((t,i)=>{var e=\"\"+t+i.id;return i.current_iteration&&i.current_iteration>0&&(e=\"\"+t+i.id+\"_\"+i.current_iteration),e})(Kn,t),Qn=[zn.Popover,zn.Widget,zn.API],Zn={ignoreConditions:!1,ignoreDelay:!1,displayType:Vn.Popover};class to{constructor(){this.Oi={},this.Oi={}}on(t,i){return this.Oi[t]||(this.Oi[t]=[]),this.Oi[t].push(i),()=>{this.Oi[t]=this.Oi[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.Oi[t]||[])e(i);for(var r of this.Oi[\"*\"]||[])r(t,i)}}function io(t,i,e){if(j(t))return!1;switch(e){case\"exact\":return t===i;case\"contains\":var r=i.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\").replace(/_/g,\".\").replace(/%/g,\".*\");return new RegExp(r,\"i\").test(t);case\"regex\":try{return new RegExp(i).test(t)}catch(t){return!1}default:return!1}}class eo{constructor(t){this.Ai=new to,this.Di=(t,i)=>this.ji(t,i)&&this.Li(t,i)&&this.Ni(t,i)&&this.Ui(t,i),this.ji=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.zi=new Set,this.Hi=new Set}init(){var t;if(!M(null==(t=this._instance)?void 0:t._addCaptureHook)){var i;null==(i=this._instance)||i._addCaptureHook(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!M(null==(i=this._instance)?void 0:i._addCaptureHook)&&(t.forEach((t=>{var i,e;null==(i=this.Hi)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.zi)||i.add((null==t?void 0:t.event)||\"\")}))})),null!=(e=this._instance)&&e.autocapture)){var r,s=new Set;t.forEach((t=>{var i;null==(i=t.steps)||i.forEach((t=>{null!=t&&t.selector&&s.add(null==t?void 0:t.selector)}))})),null==(r=this._instance)||r.autocapture.setElementSelectors(s)}}on(t,i){var e;null!=i&&0!=t.length&&(this.zi.has(t)||this.zi.has(null==i?void 0:i.event))&&this.Hi&&(null==(e=this.Hi)?void 0:e.size)>0&&this.Hi.forEach((t=>{this.Bi(i,t)&&this.Ai.emit(\"actionCaptured\",t.name)}))}qi(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Bi(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.Di(t,e))return!0;return!1}onAction(t,i){return this.Ai.on(t,i)}Li(t,i){if(null!=i&&i.url){var e,r=null==t||null==(e=t.properties)?void 0:e.$current_url;if(!r||\"string\"!=typeof r)return!1;if(!io(r,i.url,i.url_matching||\"contains\"))return!1}return!0}Ni(t,i){return!!this.Wi(t,i)&&(!!this.Gi(t,i)&&!!this.Vi(t,i))}Wi(t,i){var e;if(null==i||!i.href)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>io(t.href,i.href,i.href_matching||\"exact\")));var s,n=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!n&&io((s=n.match(/(?::|\")href=\"(.*?)\"/))?s[1]:\"\",i.href,i.href_matching||\"exact\")}Gi(t,i){var e;if(null==i||!i.text)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>io(t.text,i.text,i.text_matching||\"exact\")||io(t.$el_text,i.text,i.text_matching||\"exact\")));var s,n,o,a=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!a&&(s=function(t){for(var i,e=[],r=/(?::|\")text=\"(.*?)\"/g;!j(i=r.exec(t));)e.includes(i[1])||e.push(i[1]);return e}(a),n=i.text,o=i.text_matching||\"exact\",s.some((t=>io(t,n,o))))}Vi(t,i){var e,r;if(null==i||!i.selector)return!0;var s=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(null!=s&&s.includes(i.selector))return!0;var n=(null==t||null==(r=t.properties)?void 0:r.$elements_chain)||\"\";if(i.selector_regex&&n)try{return new RegExp(i.selector_regex).test(n)}catch(t){return!1}return!1}Ji(t){var i;return null==(null==t||null==(i=t.properties)?void 0:i.$elements)?[]:null==t?void 0:t.properties.$elements}Ui(t,i){return null==i||!i.properties||0===i.properties.length||_n(i.properties.reduce(((t,i)=>{var e=I(i.value)?i.value.map(String):null!=i.value?[String(i.value)]:[];return t[i.key]={values:e,operator:i.operator||\"exact\"},t}),{}),null==t?void 0:t.properties)}}class ro{constructor(t){this._instance=t,this.Ki=new Map,this.Yi=new Map,this.Xi=new Map}Qi(t,i){return!!t&&_n(t.propertyFilters,null==i?void 0:i.properties)}Zi(t,i){var e=new Map;return t.forEach((t=>{var r;null==(r=t.conditions)||null==(r=r[i])||null==(r=r.values)||r.forEach((i=>{if(null!=i&&i.name){var r=e.get(i.name)||[];r.push(t.id),e.set(i.name,r)}}))})),e}te(t,i,e){var r=(e===jn.Activation?this.Ki:this.Yi).get(t),s=[];return this.ie((t=>{s=t.filter((t=>null==r?void 0:r.includes(t.id)))})),s.filter((r=>{var s,n=null==(s=r.conditions)||null==(s=s[e])||null==(s=s.values)?void 0:s.find((i=>i.name===t));return this.Qi(n,i)}))}register(t){var i;M(null==(i=this._instance)?void 0:i._addCaptureHook)||(this.ee(t),this.re(t))}re(t){var i=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.actions)&&(null==(e=t.conditions)||null==(e=e.actions)||null==(e=e.values)?void 0:e.length)>0}));if(0!==i.length){if(null==this.se){this.se=new eo(this._instance),this.se.init();this.se.qi((t=>{this.onAction(t)}))}i.forEach((t=>{var i,e,r,s,n;t.conditions&&null!=(i=t.conditions)&&i.actions&&null!=(e=t.conditions)&&null!=(e=e.actions)&&e.values&&(null==(r=t.conditions)||null==(r=r.actions)||null==(r=r.values)?void 0:r.length)>0&&(null==(s=this.se)||s.register(t.conditions.actions.values),null==(n=t.conditions)||null==(n=n.actions)||null==(n=n.values)||n.forEach((i=>{if(i&&i.name){var e=this.Xi.get(i.name);e&&e.push(t.id),this.Xi.set(i.name,e||[t.id])}})))}))}}ee(t){var i,e=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.events)&&(null==(e=t.conditions)||null==(e=e.events)||null==(e=e.values)?void 0:e.length)>0})),r=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.cancelEvents)&&(null==(e=t.conditions)||null==(e=e.cancelEvents)||null==(e=e.values)?void 0:e.length)>0}));if(0!==e.length||0!==r.length){null==(i=this._instance)||i._addCaptureHook(((t,i)=>{this.onEvent(t,i)})),this.Ki=this.Zi(t,jn.Activation),this.Yi=this.Zi(t,jn.Cancellation)}}onEvent(t,i){var e,r=this.ne(),s=this.oe(),n=this.ae(),o=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[s])||[];if(n===t&&i&&o.length>0){var a,l;r.info(\"event matched, removing item from activated items\",{event:t,eventPayload:i,existingActivatedItems:o});var u=(null==i||null==(a=i.properties)?void 0:a.$survey_id)||(null==i||null==(l=i.properties)?void 0:l.$product_tour_id);if(u){var h=o.indexOf(u);h>=0&&(o.splice(h,1),this.le(o))}}else{if(this.Yi.has(t)){var d=this.te(t,i,jn.Cancellation);d.length>0&&(r.info(\"cancel event matched, cancelling items\",{event:t,itemsToCancel:d.map((t=>t.id))}),d.forEach((t=>{var i=o.indexOf(t.id);i>=0&&o.splice(i,1),this.ue(t.id)})),this.le(o))}if(this.Ki.has(t)){r.info(\"event name matched\",{event:t,eventPayload:i,items:this.Ki.get(t)});var v=this.te(t,i,jn.Activation);this.le(o.concat(v.map((t=>t.id))||[]))}}}onAction(t){var i,e=this.oe(),r=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[e])||[];this.Xi.has(t)&&this.le(r.concat(this.Xi.get(t)||[]))}le(t){var i,e=this.ne(),r=this.oe(),s=[...new Set(t)].filter((t=>!this.he(t)));e.info(\"updating activated items\",{activatedItems:s}),null==(i=this._instance)||null==(i=i.persistence)||i.register({[r]:s})}getActivatedIds(){var t,i=this.oe(),e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[i];return e||[]}getEventToItemsMap(){return this.Ki}de(){return this.se}}class so extends ro{constructor(t){super(t)}oe(){return\"$surveys_activated\"}ae(){return Wn.SHOWN}ie(t){var i;null==(i=this._instance)||i.getSurveys(t)}ue(t){var i;null==(i=this._instance)||i.cancelPendingSurvey(t)}ne(){return Jn}he(){return!1}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}class no{constructor(t){this.ve=void 0,this._surveyManager=null,this.ce=!1,this.fe=[],this.pe=null,this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){if(!this._instance.config.disable_surveys){var i=t.surveys;if(j(i))return Jn.warn(\"Flags not loaded yet. Not loading surveys.\");var e=I(i);this.ve=e?i.length>0:i,Jn.info(\"flags response received, isSurveysEnabled: \"+this.ve),this.loadIfEnabled()}}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Kn)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.ce)Jn.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Jn.info(\"Disabled. Not loading surveys.\");else if(this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())Jn.info(\"Not loading surveys in cookieless mode without consent.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!M(this.ve)||this._instance.config.advanced_enable_surveys){var i=this.ve||this._instance.config.advanced_enable_surveys;this.ce=!0;try{var e=t.generateSurveys;if(e)return void this.ge(e,i);var r=t.loadExternalDependency;if(!r)return void this._e(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this._e(\"Could not load surveys script\",e):this.ge(t.generateSurveys,i)}))}catch(t){throw this._e(\"Error initializing surveys\",t),t}finally{this.ce=!1}}}else Jn.error(\"PostHog Extensions not found.\")}}ge(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new so(this._instance),Jn.info(\"Surveys loaded successfully\"),this.me({isLoaded:!0})}_e(t,i){Jn.error(t,i),this.me({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.fe.push(t),this._surveyManager&&this.me({isLoaded:!0}),()=>{this.fe=this.fe.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Jn.info(\"Disabled. Not loading surveys.\"),t([]);var e,r=this._instance.get_property(le);if(r&&!i)return t(r,{isLoaded:!0});\"undefined\"!=typeof Promise&&this.pe?this.pe.then((i=>{var{surveys:e,context:r}=i;return t(e,r)})):(\"undefined\"!=typeof Promise&&(this.pe=new Promise((t=>{e=t}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/surveys/?token=\"+this._instance.config.token),method:\"GET\",timeout:this._instance.config.surveys_request_timeout_ms,callback:i=>{var r;this.pe=null;var s=i.statusCode;if(200!==s||!i.json){var n=\"Surveys API could not be loaded, status: \"+s;Jn.error(n);var o={isLoaded:!1,error:n};return t([],o),void(null==e||e({surveys:[],context:o}))}var a,l=i.json.surveys||[],u=l.filter((t=>function(t){return!(!t.start_date||t.end_date)}(t)&&(function(t){var i;return!(null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||!i.length)}(t)||function(t){var i;return!(null==(i=t.conditions)||null==(i=i.actions)||null==(i=i.values)||!i.length)}(t))));u.length>0&&(null==(a=this._surveyEventReceiver)||a.register(u));null==(r=this._instance.persistence)||r.register({[le]:l});var h={isLoaded:!0};t(l,h),null==e||e({surveys:l,context:h})}}))}me(t){for(var i of this.fe)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Jn.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!j(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Jn.warn(\"init was not called\")}ye(t){var i=null;return this.getSurveys((e=>{var r;i=null!==(r=e.find((i=>i.id===t)))&&void 0!==r?r:null})),i}be(t){if(j(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this.ye(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(j(this._surveyManager))return Jn.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.be(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return j(this._surveyManager)?(Jn.warn(\"init was not called\"),Promise.resolve({visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"})):new Promise((e=>{this.getSurveys((i=>{var r,s=null!==(r=i.find((i=>i.id===t)))&&void 0!==r?r:null;if(s){var n=this.be(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i,e){var r;if(j(this._surveyManager))Jn.warn(\"init was not called\");else{var s=\"string\"==typeof t?this.ye(t):t;if(null!=s&&s.id)if(Qn.includes(s.type)){var n=null==o?void 0:o.querySelector(i);if(n)return null!=(r=s.appearance)&&r.surveyPopupDelaySeconds?(Jn.info(\"Rendering survey \"+s.id+\" with delay of \"+s.appearance.surveyPopupDelaySeconds+\" seconds\"),void setTimeout((()=>{var t,i;Jn.info(\"Rendering survey \"+s.id+\" with delay of \"+(null==(t=s.appearance)?void 0:t.surveyPopupDelaySeconds)+\" seconds\"),null==(i=this._surveyManager)||i.renderSurvey(s,n,e),Jn.info(\"Survey \"+s.id+\" rendered\")}),1e3*s.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(s,n,e);Jn.warn(\"Survey element not found\")}else Jn.warn(\"Surveys of type \"+s.type+\" cannot be rendered in the app\");else Jn.warn(\"Survey not found\")}}displaySurvey(t,i){var e;if(j(this._surveyManager))Jn.warn(\"init was not called\");else{var r=this.ye(t);if(r){var s=r;if(null!=(e=r.appearance)&&e.surveyPopupDelaySeconds&&i.ignoreDelay&&(s=g({},r,{appearance:g({},r.appearance,{surveyPopupDelaySeconds:0})})),i.displayType!==Vn.Popover&&i.initialResponses&&Jn.warn(\"initialResponses is only supported for popover surveys. prefill will not be applied.\"),!1===i.ignoreConditions){var n=this.canRenderSurvey(r);if(!n.visible)return void Jn.warn(\"Survey is not eligible to be displayed: \",n.disabledReason)}i.displayType!==Vn.Inline?this._surveyManager.handlePopoverSurvey(s,i):this.renderSurvey(s,i.selector,i.properties)}else Jn.warn(\"Survey not found\")}}cancelPendingSurvey(t){j(this._surveyManager)?Jn.warn(\"init was not called\"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;null==(t=this._surveyManager)||t.handlePageUnload()}}var oo=Si(\"[Conversations]\");class ao{constructor(t){this.we=void 0,this._conversationsManager=null,this.xe=!1,this.Ee=null,this._instance=t}onRemoteConfig(t){if(!this._instance.config.disable_conversations){var i=t.conversations;j(i)||(U(i)?this.we=i:(this.we=i.enabled,this.Ee=i),this.loadIfEnabled())}}reset(){var t;null==(t=this._conversationsManager)||t.reset(),this._conversationsManager=null,this.we=void 0,this.Ee=null}loadIfEnabled(){if(!this._conversationsManager&&!this.xe&&!(this._instance.config.disable_conversations||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=null==v?void 0:v.__PosthogExtensions__;if(t&&!M(this.we)&&this.we)if(this.Ee&&this.Ee.token){this.xe=!0;try{var i=t.initConversations;if(i)return this.$e(i),void(this.xe=!1);var e=t.loadExternalDependency;if(!e)return void this.Se(\"PostHog loadExternalDependency extension not found.\");e(this._instance,\"conversations\",(i=>{i||!t.initConversations?this.Se(\"Could not load conversations script\",i):this.$e(t.initConversations),this.xe=!1}))}catch(t){this.Se(\"Error initializing conversations\",t),this.xe=!1}}else oo.error(\"Conversations enabled but missing token in remote config.\")}}$e(t){if(this.Ee)try{this._conversationsManager=t(this.Ee,this._instance),oo.info(\"Conversations loaded successfully\")}catch(t){this.Se(\"Error completing conversations initialization\",t)}else oo.error(\"Cannot complete initialization: remote config is null\")}Se(t,i){oo.error(t,i),this._conversationsManager=null,this.xe=!1}show(){this._conversationsManager?this._conversationsManager.show():oo.warn(\"Conversations not loaded yet.\")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return!0===this.we&&!D(this._conversationsManager)}isVisible(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.isVisible())&&void 0!==t&&t}sendMessage(t,i,e){var r=this;return p((function*(){return r._conversationsManager?r._conversationsManager.sendMessage(t,i,e):(oo.warn(\"Conversations not available yet.\"),null)}))()}getMessages(t,i){var e=this;return p((function*(){return e._conversationsManager?e._conversationsManager.getMessages(t,i):(oo.warn(\"Conversations not available yet.\"),null)}))()}markAsRead(t){var i=this;return p((function*(){return i._conversationsManager?i._conversationsManager.markAsRead(t):(oo.warn(\"Conversations not available yet.\"),null)}))()}getTickets(t){var i=this;return p((function*(){return i._conversationsManager?i._conversationsManager.getTickets(t):(oo.warn(\"Conversations not available yet.\"),null)}))()}getCurrentTicketId(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.getCurrentTicketId())&&void 0!==t?t:null}getWidgetSessionId(){var t,i;return null!==(t=null==(i=this._conversationsManager)?void 0:i.getWidgetSessionId())&&void 0!==t?t:null}}class lo{constructor(t){var i;this.ke=!1,this.Pe=!1,this._instance=t,this._instance&&null!=(i=this._instance.config.logs)&&i.captureConsoleLogs&&(this.ke=!0)}onRemoteConfig(t){var i,e=null==(i=t.logs)?void 0:i.captureConsoleLogs;!j(e)&&e&&(this.ke=!0,this.loadIfEnabled())}reset(){}loadIfEnabled(){if(this.ke&&!this.Pe){var t=Si(\"[logs]\"),i=null==v?void 0:v.__PosthogExtensions__;if(i){var e=i.loadExternalDependency;e?e(this._instance,\"logs\",(e=>{var r;e||null==(r=i.logs)||!r.initializeLogs?t.error(\"Could not load logs script\",e):(i.logs.initializeLogs(this._instance),this.Pe=!0)})):t.error(\"PostHog loadExternalDependency extension not found.\")}else t.error(\"PostHog Extensions not found.\")}}}var uo=Si(\"[RateLimiter]\");class ho{constructor(t){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=t=>{var i=t.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((t=>{uo.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void uo.warn('could not rate limit - continuing. Error: \"'+(null==t?void 0:t.message)+'\"',{text:i})}},this.instance=t,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var t;return(null==(t=this.instance.config.rate_limiting)?void 0:t.events_per_second)||10}get captureEventsBurstLimit(){var t;return Math.max((null==(t=this.instance.config.rate_limiting)?void 0:t.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(t){var i,e,r;void 0===t&&(t=!1);var{captureEventsBurstLimit:s,captureEventsPerSecond:n}=this,o=(new Date).getTime(),a=null!==(i=null==(e=this.instance.persistence)?void 0:e.get_property(ve))&&void 0!==i?i:{tokens:s,last:o};a.tokens+=(o-a.last)/1e3*n,a.last=o,a.tokens>s&&(a.tokens=s);var l=a.tokens<1;return l||t||(a.tokens=Math.max(0,a.tokens-1)),!l||this.lastEventRateLimited||t||this.instance.capture(\"$$client_ingestion_warning\",{$$client_ingestion_warning_message:\"posthog-js client rate limited. Config is set to \"+n+\" events per second and \"+s+\" events burst limit.\"},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=l,null==(r=this.instance.persistence)||r.set_property(ve,a),{isRateLimited:l,remainingTokens:a.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var vo=Si(\"[RemoteConfig]\");class co{constructor(t){this._instance=t}get remoteConfig(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.config}Te(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.loadExternalDependency?null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"remote-config\",(()=>t(this.remoteConfig))):(vo.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}Ie(t){this._instance._send_request({method:\"GET\",url:this._instance.requestRouter.endpointFor(\"assets\",\"/array/\"+this._instance.config.token+\"/config\"),callback:i=>{t(i.json)}})}load(){try{if(this.remoteConfig)return vo.info(\"Using preloaded remote config\",this.remoteConfig),void this.bi(this.remoteConfig);if(this._instance.O())return void vo.warn(\"Remote config is disabled. Falling back to local config.\");this.Te((t=>{if(!t)return vo.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.Ie((t=>{this.bi(t)}));this.bi(t)}))}catch(t){vo.error(\"Error loading remote config\",t)}}bi(t){t?this._instance.config.__preview_remote_config?(this._instance.bi(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):vo.info(\"__preview_remote_config is disabled. Logging config instead\",t):vo.error(\"Failed to fetch remote config from PostHog.\")}}var fo=3e3;class po{constructor(t,i){this.Ce=!0,this.Re=[],this.Fe=K((null==i?void 0:i.flush_interval_ms)||fo,250,5e3,$i.createLogger(\"flush interval\"),fo),this.Me=t}enqueue(t){this.Re.push(t),this.Oe||this.Ae()}unload(){this.De();var t=this.Re.length>0?this.je():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.Me(g({},t,{transport:\"sendBeacon\"}))}))}enable(){this.Ce=!1,this.Ae()}Ae(){var t=this;this.Ce||(this.Oe=setTimeout((()=>{if(this.De(),this.Re.length>0){var i=this.je(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&I(e.data)&&Ci(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.Me(e)};for(var r in i)e()}}),this.Fe))}De(){clearTimeout(this.Oe),this.Oe=void 0}je(){var t={};return Ci(this.Re,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;M(t[s])&&(t[s]=g({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.Re=[],t}}var go=[\"retriesPerformedSoFar\"];class _o{constructor(i){this.Le=!1,this.Ne=3e3,this.Re=[],this._instance=i,this.Re=[],this.Ue=!0,!M(t)&&\"onLine\"in t.navigator&&(this.Ue=t.navigator.onLine,this.ze=()=>{this.Ue=!0,this.Lt()},this.He=()=>{this.Ue=!1},zi(t,\"online\",this.ze),zi(t,\"offline\",this.He))}get length(){return this.Re.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=_(t,go);N(i)&&(e.url=un(e.url,{retry_count:i})),this._instance._send_request(g({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this.Be(g({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}Be(t){var i=t.retriesPerformedSoFar||0;t.retriesPerformedSoFar=i+1;var e=function(t){var i=3e3*Math.pow(2,t),e=i/2,r=Math.min(18e5,i),s=(Math.random()-.5)*(r-e);return Math.ceil(r+s)}(i),r=Date.now()+e;this.Re.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),$i.warn(s),this.Le||(this.Le=!0,this.qe())}qe(){if(this.We&&clearTimeout(this.We),0===this.Re.length)return this.Le=!1,void(this.We=void 0);this.We=setTimeout((()=>{this.Ue&&this.Re.length>0&&this.Lt(),this.qe()}),this.Ne)}Lt(){var t=Date.now(),i=[],e=this.Re.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.Re=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:i}of(this.We&&(clearTimeout(this.We),this.We=void 0),this.Le=!1,M(t)||(this.ze&&(t.removeEventListener(\"online\",this.ze),this.ze=void 0),this.He&&(t.removeEventListener(\"offline\",this.He),this.He=void 0)),this.Re))try{this._instance._send_request(g({},i,{transport:\"sendBeacon\"}))}catch(t){$i.error(t)}this.Re=[]}}class mo{constructor(t){this.Ge=()=>{var t,i,e,r;this.Ve||(this.Ve={});var s=this.scrollElement(),n=this.scrollY(),o=s?Math.max(0,s.scrollHeight-s.clientHeight):0,a=n+((null==s?void 0:s.clientHeight)||0),l=(null==s?void 0:s.scrollHeight)||0;this.Ve.lastScrollY=Math.ceil(n),this.Ve.maxScrollY=Math.max(n,null!==(t=this.Ve.maxScrollY)&&void 0!==t?t:0),this.Ve.maxScrollHeight=Math.max(o,null!==(i=this.Ve.maxScrollHeight)&&void 0!==i?i:0),this.Ve.lastContentY=a,this.Ve.maxContentY=Math.max(a,null!==(e=this.Ve.maxContentY)&&void 0!==e?e:0),this.Ve.maxContentHeight=Math.max(l,null!==(r=this.Ve.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.Ve}resetContext(){var t=this.Ve;return setTimeout(this.Ge,0),t}startMeasuringScrollPosition(){zi(t,\"scroll\",this.Ge,{capture:!0}),zi(t,\"scrollend\",this.Ge,{capture:!0}),zi(t,\"resize\",this.Ge)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=I(this._instance.config.scroll_root_selector)?this._instance.config.scroll_root_selector:[this._instance.config.scroll_root_selector];for(var e of i){var r=null==t?void 0:t.document.querySelector(e);if(r)return r}}scrollY(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollTop||0}return t&&(t.scrollY||t.pageYOffset||t.document.documentElement.scrollTop)||0}scrollX(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollLeft||0}return t&&(t.scrollX||t.pageXOffset||t.document.documentElement.scrollLeft)||0}}var yo=t=>ds(null==t?void 0:t.config.mask_personal_data_properties,null==t?void 0:t.config.custom_personal_data_properties);class bo{constructor(t,i,e,r){this.Je=t=>{var i=this.Ke();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Ye(this._instance)};this.Xe.register({[de]:e})}},this._instance=t,this.Qe=i,this.Xe=e,this.Ye=r||yo,this.Qe.onSessionId(this.Je)}Ke(){return this.Xe.props[de]}getSetOnceProps(){var t,i=null==(t=this.Ke())?void 0:t.props;return i?\"r\"in i?vs(i):{$referring_domain:i.referringDomain,$pathname:i.initialPathName,utm_source:i.utm_source,utm_campaign:i.utm_campaign,utm_medium:i.utm_medium,utm_content:i.utm_content,utm_term:i.utm_term}:{}}getSessionProps(){var t={};return Ci(Di(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+E(e)]=i})),t}}var wo=Si(\"[SessionId]\");class xo{on(t,i){return this.Ze.on(t,i)}constructor(t,i,e){var r;if(this.tr=[],this.ir=void 0,this.Ze=new to,this.er=(t,i)=>!(!N(t)||!N(i))&&Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(\"always\"===t.config.cookieless_mode)throw new Error('SessionIdManager cannot be used with cookieless_mode=\"always\"');this.R=t.config,this.Xe=t.persistence,this.rr=void 0,this.sr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.nr=i||br,this.ar=e||br;var s=this.R.persistence_name||this.R.token,n=this.R.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*K(n,60,36e3,wo.createLogger(\"session_idle_timeout_seconds\"),1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.lr(),this.ur=\"ph_\"+s+\"_window_id\",this.hr=\"ph_\"+s+\"_primary_window_exists\",this.dr()){var o=Fr.W(this.ur),a=Fr.W(this.hr);o&&!a?this.rr=o:Fr.V(this.ur),Fr.G(this.hr,!0)}if(null!=(r=this.R.bootstrap)&&r.sessionID)try{var l=(t=>{var i=t.replace(/-/g,\"\");if(32!==i.length)throw new Error(\"Not a valid UUID\");if(\"7\"!==i[12])throw new Error(\"Not a UUIDv7\");return parseInt(i.substring(0,12),16)})(this.R.bootstrap.sessionID);this.vr(this.R.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){wo.error(\"Invalid sessionID in bootstrap\",t)}this.cr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return M(this.tr)&&(this.tr=[]),this.tr.push(t),this.sr&&t(this.sr,this.rr),()=>{this.tr=this.tr.filter((i=>i!==t))}}dr(){return\"memory\"!==this.R.persistence&&!this.Xe.ki&&Fr.H()}pr(t){t!==this.rr&&(this.rr=t,this.dr()&&Fr.G(this.ur,t))}gr(){return this.rr?this.rr:this.dr()?Fr.W(this.ur):null}vr(t,i,e){t===this.sr&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.sr=t,this.Xe.register({[ie]:[i,t,e]}))}_r(){var t=this.Xe.props[ie];return I(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.vr(null,null,null)}destroy(){clearTimeout(this.mr),this.mr=void 0,this.ir&&t&&(t.removeEventListener(\"beforeunload\",this.ir,{capture:!1}),this.ir=void 0),this.tr=[]}cr(){this.ir=()=>{this.dr()&&Fr.V(this.hr)},zi(t,\"beforeunload\",this.ir,{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),\"always\"===this.R.cookieless_mode)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode=\"always\"');var e=i||(new Date).getTime(),[r,s,n]=this._r(),o=this.gr(),a=N(n)&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!u&&!t&&this.er(e,r);u||h||a?(s=this.nr(),o=this.ar(),wo.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.ar(),l=!0);var d=!!N(r)&&t&&!a?r:e,v=!N(n)?(new Date).getTime():n;return this.pr(o),this.vr(s,d,v),t||this.lr(),l&&this.tr.forEach((t=>t(s,o,l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0))),{sessionId:s,windowId:o,sessionStartTimestamp:v,changeReason:l?{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}:void 0,lastActivityTimestamp:r}}lr(){clearTimeout(this.mr),this.mr=setTimeout((()=>{var[t]=this._r();if(this.er((new Date).getTime(),t)){var i=this.sr;this.resetSessionId(),this.Ze.emit(\"forcedIdleReset\",{idleSessionId:i})}}),1.1*this.sessionTimeoutMs)}}var Eo=[\"$set_once\",\"$set\"],$o=Si(\"[SiteApps]\");class So{constructor(t){this._instance=t,this.yr=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}br(t,i){if(i){var e=this.globalsForEvent(i);this.yr.push(e),this.yr.length>1e3&&(this.yr=this.yr.slice(10))}}get siteAppLoaders(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.siteApps}init(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.br.bind(this));this.wr=()=>{t(),this.yr=[],this.wr=void 0}}}globalsForEvent(t){var i,e,r,s,n,o,a;if(!t)throw new Error(\"Event payload is required\");var l={},u=this._instance.get_property(\"$groups\")||[],h=this._instance.get_property(\"$stored_group_properties\")||{};for(var[d,v]of Object.entries(h))l[d]={id:u[d],type:d,properties:v};var{$set_once:c,$set:f}=t;return{event:g({},_(t,Eo),{properties:g({},t.properties,f?{$set:g({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:g({},null!==(r=null==(s=t.properties)?void 0:s.$set_once)&&void 0!==r?r:{},c)}:{}),elements_chain:null!==(n=null==(o=t.properties)?void 0:o.$elements_chain)&&void 0!==n?n:\"\",distinct_id:null==(a=t.properties)?void 0:a.distinct_id}),person:{properties:this._instance.get_property(\"$stored_person_properties\")},groups:l}}setupSiteApp(t){var i=this.apps[t.id],e=()=>{var e;(!i.errored&&this.yr.length&&($o.info(\"Processing \"+this.yr.length+\" events for site app with id \"+t.id),this.yr.forEach((t=>null==i.processEvent?void 0:i.processEvent(t))),i.processedBuffer=!0),Object.values(this.apps).every((t=>t.processedBuffer||t.errored)))&&(null==(e=this.wr)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,$o.info(\"Site app with id \"+t.id+\" \"+(s?\"loaded\":\"errored\")),r&&e()};try{var{processEvent:n}=t.init({posthog:this._instance,callback:t=>{s(t)}});n&&(i.processEvent=n),r=!0}catch(i){$o.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){$o.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}Er(){var t=this.siteAppLoaders||[];for(var i of t)this.apps[i.id]={id:i.id,loaded:!1,errored:!1,processedBuffer:!1};for(var e of t)this.setupSiteApp(e)}$r(t){if(0!==Object.keys(this.apps).length){var i=this.globalsForEvent(t);for(var e of Object.values(this.apps))try{null==e.processEvent||e.processEvent(i)}catch(i){$o.error(\"Error while processing event \"+t.event+\" for site app \"+e.id,i)}}}onRemoteConfig(t){var i,e,r,s=this;if(null!=(i=this.siteAppLoaders)&&i.length)return this.isEnabled?(this.Er(),void this._instance.on(\"eventCaptured\",(t=>this.$r(t)))):void $o.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.wr)||e.call(this),null!=(r=t.siteApps)&&r.length)if(this.isEnabled){var n=function(t){var i;v[\"__$$ph_site_app_\"+t]=s._instance,null==(i=v.__PosthogExtensions__)||null==i.loadSiteApp||i.loadSiteApp(s._instance,a,(i=>{if(i)return $o.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else $o.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var ko=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&y(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>y(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},Po=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),To=\"i.posthog.com\";class Io{constructor(t){this.Sr={},this.instance=t}get apiHost(){var t=this.instance.config.api_host.trim().replace(/\\/$/,\"\");return\"https://app.posthog.com\"===t?\"https://us.i.posthog.com\":t}get flagsApiHost(){var t=this.instance.config.flags_api_host;return t?t.trim().replace(/\\/$/,\"\"):this.apiHost}get uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+To,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.Sr[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Sr[this.apiHost]=Po.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Sr[this.apiHost]=Po.EU:this.Sr[this.apiHost]=Po.CUSTOM),this.Sr[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(\"flags\"===t)return this.flagsApiHost+i;if(this.region===Po.CUSTOM)return this.apiHost+i;var e=To+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var Co={icontains:(i,e)=>!!t&&e.href.toLowerCase().indexOf(i.toLowerCase())>-1,not_icontains:(i,e)=>!!t&&-1===e.href.toLowerCase().indexOf(i.toLowerCase()),regex:(i,e)=>!!t&&cn(e.href,i),not_regex:(i,e)=>!!t&&!cn(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class Ro{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{Ro.kr(\"retrieved web experiments from the server\"),i.Pr=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.Pr)Ro.kr(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.Pr)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);O(r)&&t.variants[r]&&i.Tr(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];Ro.Ir(n)&&i.Tr(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())Ro.kr(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(j(this.Pr))return this.Pr=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Ro.kr(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.Pr&&null!=(i=this.Pr)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.Pr)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.Tr(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=Ro.getWindowLocation();if(null!=t&&t.search){var i=sr(null==t?void 0:t.search,\"__experiment_id\"),e=sr(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(Ro.kr(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.Cr(parseInt(i),e,t)}),!1,!0))}}loadIfEnabled(){this._instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(t,i,e){if(this._instance.config.disable_web_experiments&&!e)return t([]);var r=this._instance.get_property(\"$web_experiments\");if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/web_experiments/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{if(200!==i.statusCode||!i.json)return t([]);var e=i.json.experiments||[];return t(e)}})}Cr(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(Ro.kr(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.Tr(r[0].name,i,r[0].variants[i].transforms))}static Ir(t){return!j(t.conditions)&&(Ro.Rr(t)&&Ro.Fr(t))}static Rr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=Ro.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||Co[null!==(r=null==(s=t.conditions)?void 0:s.urlMatchType)&&void 0!==r?r:\"icontains\"](t.conditions.url,n))}static getWindowLocation(){return null==t?void 0:t.location}static Fr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.utm))return!0;var e=os();if(e.utm_source){var r,s,n,o,a,l,u,h,d=null==(r=t.conditions)||null==(r=r.utm)||!r.utm_campaign||(null==(s=t.conditions)||null==(s=s.utm)?void 0:s.utm_campaign)==e.utm_campaign,v=null==(n=t.conditions)||null==(n=n.utm)||!n.utm_source||(null==(o=t.conditions)||null==(o=o.utm)?void 0:o.utm_source)==e.utm_source,c=null==(a=t.conditions)||null==(a=a.utm)||!a.utm_medium||(null==(l=t.conditions)||null==(l=l.utm)?void 0:l.utm_medium)==e.utm_medium,f=null==(u=t.conditions)||null==(u=u.utm)||!u.utm_term||(null==(h=t.conditions)||null==(h=h.utm)?void 0:h.utm_term)==e.utm_term;return d&&c&&f&&v}return!1}static kr(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];$i.info(\"[WebExperiments] \"+t,e)}Tr(t,i,e){this._is_bot()?Ro.kr(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;Ro.kr(\"applying transform of variant \"+i+\" for experiment \"+t+\" \",e);var s=null==(r=document)?void 0:r.querySelectorAll(e.selector);null==s||s.forEach((t=>{var i=t;e.html&&(i.innerHTML=e.html),e.css&&i.setAttribute(\"style\",e.css)}))}})):Ro.kr(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?ko(n,this._instance.config.custom_blocked_useragents):void 0}}var Fo=Si(\"[PostHog ExternalIntegrations]\"),Mo={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class Oo{constructor(t){this._instance=t}it(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return Fo.error(\"failed to load script\",t);i()}))}startIfEnabledOrStop(){var t=this,i=function(i){var e,s,n;(!r||null!=(e=v.__PosthogExtensions__)&&null!=(e=e.integrations)&&e[i]||t.it(Mo[i],(()=>{var e;null==(e=v.__PosthogExtensions__)||null==(e=e.integrations)||null==(e=e[i])||e.start(t._instance)})),!r&&null!=(s=v.__PosthogExtensions__)&&null!=(s=s.integrations)&&s[i])&&(null==(n=v.__PosthogExtensions__)||null==(n=n.integrations)||null==(n=n[i])||n.stop())};for(var[e,r]of Object.entries(null!==(s=this._instance.config.integrations)&&void 0!==s?s:{})){var s;i(e)}}}var Ao=\"[SessionRecording]\",Do=Si(Ao);class jo{get started(){var t;return!(null==(t=this.Mr)||!t.isStarted)}get status(){return this.Mr?this.Mr.status:this.Or&&!this.Ar?\"disabled\":\"lazy_loading\"}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Or=!1,this.Dr=void 0,this._instance=t,!this._instance.sessionManager)throw Do.error(\"started without valid sessionManager\"),new Error(Ao+\" started without valid sessionManager. This is a bug.\");if(\"always\"===this._instance.config.cookieless_mode)throw new Error(Ao+' cannot be used with cookieless_mode=\"always\"')}get Ar(){var i,e=!(null==(i=this._instance.get_property(te))||!i.enabled),r=!this._instance.config.disable_session_recording,s=this._instance.config.disable_session_recording||this._instance.consent.isOptedOut();return t&&e&&r&&!s}startIfEnabledOrStop(t){var i;if(!this.Ar||null==(i=this.Mr)||!i.isStarted){var e=!M(Object.assign)&&!M(Array.from);this.Ar&&e?(this.jr(t),Do.info(\"starting\")):this.stopRecording()}}jr(t){var i,e,r;this.Ar&&(null!=v&&null!=(i=v.__PosthogExtensions__)&&null!=(i=i.rrweb)&&i.record&&null!=(e=v.__PosthogExtensions__)&&e.initSessionRecording?this.Lr(t):null==(r=v.__PosthogExtensions__)||null==r.loadExternalDependency||r.loadExternalDependency(this._instance,this.Nr,(i=>{if(i)return Do.error(\"could not load recorder\",i);this.Lr(t)})))}stopRecording(){var t,i;null==(t=this.Dr)||t.call(this),this.Dr=void 0,null==(i=this.Mr)||i.stop()}Ur(){var t;null==(t=this._instance.persistence)||t.unregister(ee)}zr(t){if(this._instance.persistence){var i,e,r=this._instance.persistence,s=()=>{var i=!1===t.sessionRecording?void 0:t.sessionRecording,e=null==i?void 0:i.sampleRate,s=j(e)?null:parseFloat(e);j(s)&&this.Ur();var n=null==i?void 0:i.minimumDurationMilliseconds;r.register({[te]:g({enabled:!!i},i,{networkPayloadCapture:g({capturePerformance:t.capturePerformance},null==i?void 0:i.networkPayloadCapture),canvasRecording:{enabled:null==i?void 0:i.recordCanvas,fps:null==i?void 0:i.canvasFps,quality:null==i?void 0:i.canvasQuality},sampleRate:s,minimumDurationMilliseconds:M(n)?null:n,endpoint:null==i?void 0:i.endpoint,triggerMatchType:null==i?void 0:i.triggerMatchType,masking:null==i?void 0:i.masking,urlTriggers:null==i?void 0:i.urlTriggers})})};s(),null==(i=this.Dr)||i.call(this),this.Dr=null==(e=this._instance.sessionManager)?void 0:e.onSessionId(s)}}onRemoteConfig(t){\"sessionRecording\"in t?!1!==t.sessionRecording?(this.zr(t),this.Or=!0,this.startIfEnabledOrStop()):this.Or=!0:Do.info(\"skipping remote config with no sessionRecording\",t)}log(t,i){var e;void 0===i&&(i=\"log\"),null!=(e=this.Mr)&&e.log?this.Mr.log(t,i):Do.warn(\"log called before recorder was ready\")}get Nr(){var t,i,e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.get_property(te);return(null==e||null==(i=e.scriptConfig)?void 0:i.script)||\"lazy-recorder\"}Lr(t){var i,e;if(null==(i=v.__PosthogExtensions__)||!i.initSessionRecording)throw Error(\"Called on script loaded before session recording is available\");this.Mr||(this.Mr=null==(e=v.__PosthogExtensions__)?void 0:e.initSessionRecording(this._instance),this.Mr._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture);this.Mr.start(t)}onRRwebEmit(t){var i;null==(i=this.Mr)||null==i.onRRwebEmit||i.onRRwebEmit(t)}overrideLinkedFlag(){var t,i;this.Mr||(null==(i=this._instance.persistence)||i.register({$replay_override_linked_flag:!0}));null==(t=this.Mr)||t.overrideLinkedFlag()}overrideSampling(){var t,i;this.Mr||(null==(i=this._instance.persistence)||i.register({$replay_override_sampling:!0}));null==(t=this.Mr)||t.overrideSampling()}overrideTrigger(t){var i,e;this.Mr||(null==(e=this._instance.persistence)||e.register({[\"url\"===t?\"$replay_override_url_trigger\":\"$replay_override_event_trigger\"]:!0}));null==(i=this.Mr)||i.overrideTrigger(t)}get sdkDebugProperties(){var t;return(null==(t=this.Mr)?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,i){var e;return!(null==(e=this.Mr)||!e.tryAddCustomEvent(t,i))}}var Lo={},No=()=>{},Uo=\"posthog\",zo=!an&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),Ho=i=>{var e;return g({api_host:\"https://us.i.posthog.com\",flags_api_host:null,ui_host:null,token:\"\",autocapture:!0,cross_subdomain_cookie:Ni(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",cookie_persisted_properties:[],loaded:No,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",__preview_deferred_init_extensions:!1,debug:a&&O(null==a?void 0:a.search)&&-1!==a.search.indexOf(\"__posthog_debug=true\")||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!0,disable_external_dependency_loading:!1,enable_recording_console_log:void 0,secure_cookie:\"https:\"===(null==t||null==(e=t.location)?void 0:e.protocol),ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:\"localStorage\",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error:t=>{var i=\"Bad HTTP status: \"+t.statusCode+\" \"+t.text;$i.error(i)},get_device_id:t=>t,capture_performance:void 0,name:\"posthog\",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:\"identified_only\",before_send:void 0,request_queue_config:{flush_interval_ms:fo},error_tracking:{},_onCapture:No,__preview_eager_load_replay:!1},(t=>({rageclick:!(t&&t>=\"2025-11-30\")||{content_ignorelist:!0},capture_pageview:!(t&&t>=\"2025-05-24\")||\"history_change\",session_recording:t&&t>=\"2025-11-30\"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:t&&t>=\"2026-01-30\"?\"head\":\"body\"}))(i))},Bo=t=>{var i={};M(t.process_person)||(i.person_profiles=t.process_person),M(t.xhr_headers)||(i.request_headers=t.xhr_headers),M(t.cookie_name)||(i.persistence_name=t.cookie_name),M(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),M(t.store_google)||(i.save_campaign_params=t.store_google),M(t.verbose)||(i.debug=t.verbose);var e=Ri({},i,t);return I(t.property_blacklist)&&(M(t.property_denylist)?e.property_denylist=t.property_blacklist:I(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:$i.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class qo{constructor(){this.__forceAllowLocalhost=!1}get Hr(){return this.__forceAllowLocalhost}set Hr(t){$i.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class Wo{get decideEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}get flagsEndpointWasHit(){var t,i;return null!==(t=null==(i=this.featureFlags)?void 0:i.hasLoadedFlags)&&void 0!==t&&t}constructor(){this.webPerformance=new qo,this.Br=!1,this.version=c.LIB_VERSION,this.qr=new to,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=Ho(),this.SentryIntegration=Vr,this.sentryIntegration=t=>function(t,i){var e=Gr(t,i);return{name:Wr,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.Wr=!1,this.Gr=null,this.Vr=null,this.Jr=null,this.featureFlags=new Rn(this),this.toolbar=new Qr(this),this.scrollManager=new mo(this),this.pageViewManager=new xs(this),this.surveys=new no(this),this.conversations=new ao(this),this.logs=new lo(this),this.experiments=new Ro(this),this.exceptions=new yn(this),this.rateLimiter=new ho(this),this.requestRouter=new Io(this),this.consent=new Or(this),this.externalIntegrations=new Oo(this),this.people={set:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>$i.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==Uo){var r,s=null!==(r=Lo[e])&&void 0!==r?r:new Wo;return s._init(t,i,e),Lo[e]=s,Lo[Uo][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s;if(void 0===e&&(e={}),M(i)||A(i))return $i.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"),this;if(this.__loaded)return console.warn(\"[PostHog.js]\",\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},e.debug=this.Kr(e.debug),this.Yr=e,this.Xr=[],e.person_profiles&&(this.Vr=e.person_profiles),this.set_config(Ri({},Ho(e.defaults),Bo(e),{name:r,token:i})),this.config.on_xhr_error&&$i.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:$s.GZipJS;var n=this.Qr();this.persistence=new Mn(this.config,n),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Mn(g({},this.config,{persistence:\"sessionStorage\"}),n);var o=g({},this.persistence.props),a=g({},this.sessionPersistence.props);this.register({$initialization_time:(new Date).toISOString()}),this.Zr=new po((t=>this.ts(t)),this.config.request_queue_config),this.es=new _o(this),this.__request_queue=[];var l=\"always\"===this.config.cookieless_mode||\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut();if(l||(this.sessionManager=new xo(this),this.sessionPropsManager=new bo(this,this.sessionManager,this.persistence)),this.config.__preview_deferred_init_extensions?($i.info(\"Deferring extension initialization to improve startup performance\"),setTimeout((()=>{this.rs(l)}),0)):($i.info(\"Initializing extensions synchronously\"),this.rs(l)),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&$i.info(\"Starting in debug mode\",{this:this,config:e,thisC:g({},this.config),p:o,s:a}),void 0!==(null==(s=e.bootstrap)?void 0:s.distinctID)){var u,h,d=this.config.get_device_id(br()),v=null!=(u=e.bootstrap)&&u.isIdentifiedID?d:e.bootstrap.distinctID;this.persistence.set_property(he,null!=(h=e.bootstrap)&&h.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:v})}if(this.ss()){var f,p,_=Object.keys((null==(f=e.bootstrap)?void 0:f.featureFlags)||{}).filter((t=>{var i;return!(null==(i=e.bootstrap)||null==(i=i.featureFlags)||!i[t])})).reduce(((t,i)=>{var r;return t[i]=(null==(r=e.bootstrap)||null==(r=r.featureFlags)?void 0:r[i])||!1,t}),{}),m=Object.keys((null==(p=e.bootstrap)?void 0:p.featureFlagPayloads)||{}).filter((t=>_[t])).reduce(((t,i)=>{var r,s;null!=(r=e.bootstrap)&&null!=(r=r.featureFlagPayloads)&&r[i]&&(t[i]=null==(s=e.bootstrap)||null==(s=s.featureFlagPayloads)?void 0:s[i]);return t}),{});this.featureFlags.receivedFeatureFlags({featureFlags:_,featureFlagPayloads:m})}if(l)this.register_once({distinct_id:me,$device_id:null},\"\");else if(!this.get_distinct_id()){var y=this.config.get_device_id(br());this.register_once({distinct_id:y,$device_id:y},\"\"),this.persistence.set_property(he,\"anonymous\")}return zi(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?qr(this,(()=>this.ns())):this.ns(),C(this.config._onCapture)&&this.config._onCapture!==No&&($i.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&$i.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or \"Discard IP data\" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this}rs(t){var i=performance.now();this.historyAutocapture=new Hr(this),this.historyAutocapture.startIfEnabled();var e=[];e.push((()=>{new ts(this).startIfEnabledOrStop()})),e.push((()=>{var t;this.siteApps=new So(this),null==(t=this.siteApps)||t.init()})),t||e.push((()=>{this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop()})),this.config.disable_scroll_properties||e.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),e.push((()=>{this.autocapture=new cr(this),this.autocapture.startIfEnabled()})),e.push((()=>{this.surveys.loadIfEnabled()})),e.push((()=>{this.logs.loadIfEnabled()})),e.push((()=>{this.conversations.loadIfEnabled()})),e.push((()=>{this.productTours=new Dn(this),this.productTours.loadIfEnabled()})),e.push((()=>{this.heatmaps=new ws(this),this.heatmaps.startIfEnabled()})),e.push((()=>{this.webVitalsAutocapture=new ms(this)})),e.push((()=>{this.exceptionObserver=new Ur(this),this.exceptionObserver.startIfEnabledOrStop()})),e.push((()=>{this.deadClicksAutocapture=new Lr(this,jr),this.deadClicksAutocapture.startIfEnabled()})),e.push((()=>{if(this.os){var t=this.os;this.os=void 0,this.bi(t)}})),this.ls(e,i)}ls(t,i){for(;t.length>0;){if(this.config.__preview_deferred_init_extensions)if(performance.now()-i>=30&&t.length>0)return void setTimeout((()=>{this.ls(t,i)}),0);var e=t.shift();if(e)try{e()}catch(t){$i.error(\"Error initializing extension:\",t)}}var r=Math.round(performance.now()-i);this.register_for_session({$sdk_debug_extensions_init_method:this.config.__preview_deferred_init_extensions?\"deferred\":\"synchronous\",$sdk_debug_extensions_init_time_ms:r}),this.config.__preview_deferred_init_extensions&&$i.info(\"PostHog extensions initialized (\"+r+\"ms)\")}bi(t){var i,e,r,s,n,a,l,u,h;if(!o||!o.body)return $i.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.bi(t)}),500);this.config.__preview_deferred_init_extensions&&(this.os=t),this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=w(t.supportedCompression,$s.GZipJS)?$s.GZipJS:w(t.supportedCompression,$s.Base64)?$s.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.Vr?this.Vr:\"identified_only\"}),null==(e=this.siteApps)||e.onRemoteConfig(t),null==(r=this.sessionRecording)||r.onRemoteConfig(t),null==(s=this.autocapture)||s.onRemoteConfig(t),null==(n=this.heatmaps)||n.onRemoteConfig(t),this.surveys.onRemoteConfig(t),this.logs.onRemoteConfig(t),this.conversations.onRemoteConfig(t),null==(a=this.productTours)||a.onRemoteConfig(t),null==(l=this.webVitalsAutocapture)||l.onRemoteConfig(t),null==(u=this.exceptionObserver)||u.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(h=this.deadClicksAutocapture)||h.onRemoteConfig(t)}ns(){try{this.config.loaded(this)}catch(t){$i.critical(\"`loaded` function failed\",t)}this.us(),this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||\"always\"===this.config.cookieless_mode)&&this.hs()}),1),new co(this).load(),this.featureFlags.flags()}us(){var t;this.is_capturing()&&(this.config.request_batching&&(null==(t=this.Zr)||t.enable()))}_dom_loaded(){this.is_capturing()&&Ii(this.__request_queue,(t=>this.ts(t))),this.__request_queue=[],this.us()}_handle_unload(){var t,i;this.surveys.handlePageUnload(),this.config.request_batching?(this.ds()&&this.capture(\"$pageleave\"),null==(t=this.Zr)||t.unload(),null==(i=this.es)||i.unload()):this.ds()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}_send_request(t){this.__loaded&&(zo?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=un(t.url,{ip:this.config.ip?1:0}),t.headers=g({},this.config.request_headers,t.headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.disableXHRCredentials=this.config.__preview_disable_xhr_credentials,this.config.__preview_disable_beacon&&(t.disableTransport=[\"sendBeacon\"]),t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=g({},t);s.timeout=s.timeout||6e4,s.url=un(s.url,{_:(new Date).getTime().toString(),ver:c.LIB_VERSION,compression:s.compression});var n=null!==(i=s.transport)&&void 0!==i?i:\"fetch\",o=vn.filter((t=>!s.disableTransport||!t.transport||!s.disableTransport.includes(t.transport))),a=null!==(e=null==(r=Ui(o,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:o[0].method;if(!a)throw new Error(\"No available transport method\");a(s)})(g({},t,{callback:i=>{var e,r;(this.rateLimiter.checkForLimiting(i),i.statusCode>=400)&&(null==(e=(r=this.config).on_request_error)||e.call(r,i));null==t.callback||t.callback(i)}}))))}ts(t){this.es?this.es.retriableRequest(t):this._send_request(t)}_execute_array(t){var i,e=[],r=[],s=[];Ii(t,(t=>{t&&(i=t[0],I(i)?s.push(t):C(t)?t.call(this):I(t)&&\"alias\"===i?e.push(t):I(t)&&-1!==i.indexOf(\"capture\")&&C(this[i])?s.push(t):r.push(t))}));var n=function(t,i){Ii(t,(function(t){if(I(t[0])){var e=i;Ci(t,(function(t){e=e[t[0]].apply(e,t.slice(1))}))}else this[t[0]].apply(this,t.slice(1))}),i)};n(e,this),n(r,this),n(s,this)}ss(){var t,i;return(null==(t=this.config.bootstrap)?void 0:t.featureFlags)&&Object.keys(null==(i=this.config.bootstrap)?void 0:i.featureFlags).length>0||!1}push(t){this._execute_array([t])}capture(t,i,e){var r;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.Zr){if(this.is_capturing())if(!M(t)&&O(t)){var s=!this.config.opt_out_useragent_filter&&this._is_bot();if(!(s&&!this.config.__preview_capture_bot_pageviews)){var n=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==n||!n.isRateLimited){null!=i&&i.$current_url&&!O(null==i?void 0:i.$current_url)&&($i.error(\"Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value.\"),null==i||delete i.$current_url),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var o=new Date,a=(null==e?void 0:e.timestamp)||o,l=br(),u={uuid:l,event:t,properties:this.calculateEventProperties(t,i||{},a,l)};\"$pageview\"===t&&this.config.__preview_capture_bot_pageviews&&s&&(u.event=\"$bot_pageview\",u.properties.$browser_type=\"bot\"),n&&(u.properties.$lib_rate_limit_remaining_tokens=n.remainingTokens),(null==e?void 0:e.$set)&&(u.$set=null==e?void 0:e.$set);var h,d=\"$groupidentify\"!==t,v=this.vs(null==e?void 0:e.$set_once,d);if(v&&(u.$set_once=v),(u=ji(u,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=a,M(null==e?void 0:e.timestamp)||(u.properties.$event_time_override_provided=!0,u.properties.$event_time_override_system_time=o),t===Wn.DISMISSED||t===Wn.SENT){var c=null==i?void 0:i[Gn.SURVEY_ID],f=null==i?void 0:i[Gn.SURVEY_ITERATION];h={id:c,current_iteration:f},localStorage.getItem(Xn(h))||localStorage.setItem(Xn(h),\"true\"),u.$set=g({},u.$set,{[Yn({id:c,current_iteration:f},t===Wn.SENT?\"responded\":\"dismissed\")]:!0})}else t===Wn.SHOWN&&(u.$set=g({},u.$set,{[Gn.SURVEY_LAST_SEEN_DATE]:(new Date).toISOString()}));var p=g({},u.properties.$set,u.$set);if(F(p)||this.setPersonPropertiesForFlags(p),!j(this.config.before_send)){var _=this.cs(u);if(!_)return;u=_}this.qr.emit(\"eventCaptured\",u);var m={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:u,compression:\"best-available\",batchKey:null==e?void 0:e._batchKey};return!this.config.request_batching||e&&(null==e||!e._batchKey)||null!=e&&e.send_instantly?this.ts(m):this.Zr.enqueue(m),u}$i.critical(\"This capture call is ignored due to client rate limiting.\")}}else $i.error(\"No event name provided to posthog.capture\")}else $i.uninitializedWarning(\"posthog.capture\")}_addCaptureHook(t){return this.on(\"eventCaptured\",(i=>t(i.event,i)))}calculateEventProperties(t,i,e,r,s){if(e=e||new Date,!this.persistence||!this.sessionPersistence)return i;var n=s?void 0:this.persistence.remove_event_timer(t),a=g({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,(\"always\"==this.config.cookieless_mode||\"on_reject\"==this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=g({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!O(a.distinct_id)&&!L(a.distinct_id)||A(a.distinct_id))&&$i.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=ps(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties);if(this.sessionManager){var{sessionId:v,windowId:c}=this.sessionManager.checkAndGetSessionAndWindowId(s,e.getTime());a.$session_id=v,a.$window_id=c}this.sessionPropsManager&&Ri(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&Ri(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.es)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===Po.CUSTOM&&(a.$lib_custom_api_host=this.config.api_host),u=\"$pageview\"!==t||s?\"$pageleave\"!==t||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(e):this.pageViewManager.doPageView(e,r),a=Ri(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!M(n)){var p=e.getTime()-n;a.$duration=parseFloat((p/1e3).toFixed(3))}d&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?\"bot\":\"browser\"),(a=Ri({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),I(this.config.property_denylist)?Ci(this.config.property_denylist,(function(t){delete a[t]})):$i.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&($i.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var m=this.fs();return a.$process_person_profile=m,m&&!s&&this.ps(\"_calculate_event_properties\"),a}vs(t,i){var e;if(void 0===i&&(i=!0),!this.persistence||!this.fs())return t;if(this.Br)return t;var r=this.persistence.get_initial_props(),s=null==(e=this.sessionPropsManager)?void 0:e.getSetOnceProps(),n=Ri({},r,s||{},t||{}),o=this.config.sanitize_properties;return o&&($i.error(\"sanitize_properties is deprecated. Use before_send instead\"),n=o(n,\"$set_once\")),i&&(this.Br=!0),F(n)?void 0:n}register(t,i){var e;null==(e=this.persistence)||e.register(t,i)}register_once(t,i,e){var r;null==(r=this.persistence)||r.register_once(t,i,e)}register_for_session(t){var i;null==(i=this.sessionPersistence)||i.register(t)}unregister(t){var i;null==(i=this.persistence)||i.unregister(t)}unregister_for_session(t){var i;null==(i=this.sessionPersistence)||i.unregister(t)}gs(t,i){this.register({[t]:i})}getFeatureFlag(t,i){return this.featureFlags.getFeatureFlag(t,i)}getFeatureFlagPayload(t){var i=this.featureFlags.getFeatureFlagPayload(t);try{return JSON.parse(i)}catch(t){return i}}isFeatureEnabled(t,i){return this.featureFlags.isFeatureEnabled(t,i)}reloadFeatureFlags(){this.featureFlags.reloadFeatureFlags()}updateFlags(t,i,e){var r=null!=e&&e.merge?this.featureFlags.getFlagVariants():{},s=null!=e&&e.merge?this.featureFlags.getFlagPayloads():{},n=g({},r,t),o=g({},s,i),a={};for(var[l,u]of Object.entries(n)){var h=\"string\"==typeof u;a[l]={key:l,enabled:!!h||Boolean(u),variant:h?u:void 0,reason:void 0,metadata:M(null==o?void 0:o[l])?void 0:{id:0,version:void 0,description:void 0,payload:o[l]}}}this.featureFlags.receivedFeatureFlags({flags:a})}updateEarlyAccessFeatureEnrollment(t,i,e){this.featureFlags.updateEarlyAccessFeatureEnrollment(t,i,e)}getEarlyAccessFeatures(t,i,e){return void 0===i&&(i=!1),this.featureFlags.getEarlyAccessFeatures(t,i,e)}on(t,i){return this.qr.on(t,i)}onFeatureFlags(t){return this.featureFlags.onFeatureFlags(t)}onSurveysLoaded(t){return this.surveys.onSurveysLoaded(t)}onSessionId(t){var i,e;return null!==(i=null==(e=this.sessionManager)?void 0:e.onSessionId(t))&&void 0!==i?i:()=>{}}getSurveys(t,i){void 0===i&&(i=!1),this.surveys.getSurveys(t,i)}getActiveMatchingSurveys(t,i){void 0===i&&(i=!1),this.surveys.getActiveMatchingSurveys(t,i)}renderSurvey(t,i){this.surveys.renderSurvey(t,i)}displaySurvey(t,i){void 0===i&&(i=Zn),this.surveys.displaySurvey(t,i)}cancelPendingSurvey(t){this.surveys.cancelPendingSurvey(t)}canRenderSurvey(t){return this.surveys.canRenderSurvey(t)}canRenderSurveyAsync(t,i){return void 0===i&&(i=!1),this.surveys.canRenderSurveyAsync(t,i)}identify(t,i,e){if(!this.__loaded||!this.persistence)return $i.uninitializedWarning(\"posthog.identify\");if(L(t)&&(t=t.toString(),$i.warn(\"The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.\")),t)if([\"distinct_id\",\"distinctid\"].includes(t.toLowerCase()))$i.critical('The string \"'+t+'\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.');else if(t!==me){if(this.ps(\"posthog.identify\")){var r=this.get_distinct_id();if(this.register({$user_id:t}),!this.get_property(\"$device_id\")){var s=r;this.register_once({$had_persisted_distinct_id:!0,$device_id:s},\"\")}t!==r&&t!==this.get_property(Bi)&&(this.unregister(Bi),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(he)||\"anonymous\");t!==r&&n?(this.persistence.set_property(he,\"identified\"),this.setPersonPropertiesForFlags(g({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.Jr=fn(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(ue))}}else $i.critical('The string \"'+me+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else $i.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.ps(\"posthog.setPersonProperties\")){var e=fn(this.get_distinct_id(),t,i);this.Jr!==e?(this.setPersonPropertiesForFlags(g({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.Jr=e):$i.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:g({},r,{[t]:i})}),e&&(this.capture(\"$groupidentify\",{$group_type:t,$group_key:i,$group_set:e}),this.setGroupPropertiesForFlags({[t]:e})),r[t]===i||e||this.reloadFeatureFlags()}else $i.error(\"posthog.group requires a group type and group key\")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0),this.featureFlags.setPersonPropertiesForFlags(t,i)}resetPersonPropertiesForFlags(){this.featureFlags.resetPersonPropertiesForFlags()}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0),this.ps(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if($i.info(\"reset\"),!this.__loaded)return $i.uninitializedWarning(\"posthog.reset\");var n=this.get_property(\"$device_id\");if(this.consent.reset(),null==(i=this.persistence)||i.clear(),null==(e=this.sessionPersistence)||e.clear(),this.surveys.reset(),this.featureFlags.reset(),null==(r=this.persistence)||r.set_property(he,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.Jr=null,\"always\"===this.config.cookieless_mode)this.register_once({distinct_id:me,$device_id:null},\"\");else{var o=this.config.get_device_id(br());this.register_once({distinct_id:o,$device_id:t?o:n},\"\")}this.register({$last_posthog_reset:(new Date).toISOString()},1)}get_distinct_id(){return this.get_property(\"distinct_id\")}getGroups(){return this.get_property(\"$groups\")||{}}get_session_id(){var t,i;return null!==(t=null==(i=this.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0).sessionId)&&void 0!==t?t:\"\"}get_session_replay_url(t){if(!this.sessionManager)return\"\";var{sessionId:i,sessionStartTimestamp:e}=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=this.requestRouter.endpointFor(\"ui\",\"/project/\"+this.config.token+\"/replay/\"+i);if(null!=t&&t.withTimestamp&&e){var s,n=null!==(s=t.timestampLookBack)&&void 0!==s?s:10;if(!e)return r;r+=\"?t=\"+Math.max(Math.floor(((new Date).getTime()-e)/1e3)-n,0)}return r}alias(t,i){return t===this.get_property(Hi)?($i.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.ps(\"posthog.alias\")?(M(i)&&(i=this.get_distinct_id()),t!==i?(this.gs(Bi,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):($i.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=g({},this.config);if(R(t)){var e,r,s,n,o,a,l;Ri(this.config,Bo(t));var u=this.Qr();null==(e=this.persistence)||e.update_config(this.config,i,u),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Mn(g({},this.config,{persistence:\"sessionStorage\"}),u);var h=this.Kr(this.config.debug);U(h)&&(this.config.debug=h),U(this.config.debug)&&(this.config.debug?(c.DEBUG=!0,Pr.H()&&Pr.G(\"ph_debug\",\"true\"),$i.info(\"set_config\",{config:t,oldConfig:i,newConfig:g({},this.config)})):(c.DEBUG=!1,Pr.H()&&Pr.V(\"ph_debug\"))),null==(r=this.exceptionObserver)||r.onConfigChange(),null==(s=this.sessionRecording)||s.startIfEnabledOrStop(),null==(n=this.autocapture)||n.startIfEnabled(),null==(o=this.heatmaps)||o.startIfEnabled(),null==(a=this.exceptionObserver)||a.startIfEnabledOrStop(),this.surveys.loadIfEnabled(),this._s(),null==(l=this.externalIntegrations)||l.startIfEnabledOrStop()}}startSessionRecording(t){var i=!0===t,e={sampling:i||!(null==t||!t.sampling),linked_flag:i||!(null==t||!t.linked_flag),url_trigger:i||!(null==t||!t.url_trigger),event_trigger:i||!(null==t||!t.event_trigger)};if(Object.values(e).some(Boolean)){var r,s,n,o,a;if(null==(r=this.sessionManager)||r.checkAndGetSessionAndWindowId(),e.sampling)null==(s=this.sessionRecording)||s.overrideSampling();if(e.linked_flag)null==(n=this.sessionRecording)||n.overrideLinkedFlag();if(e.url_trigger)null==(o=this.sessionRecording)||o.overrideTrigger(\"url\");if(e.event_trigger)null==(a=this.sessionRecording)||a.overrideTrigger(\"event\")}this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var t;return!(null==(t=this.sessionRecording)||!t.started)}captureException(t,i){var e=new Error(\"PostHog syntheticException\"),r=this.exceptions.buildProperties(t,{handled:!0,syntheticException:e});return this.exceptions.sendExceptionEvent(g({},r,i))}startExceptionAutocapture(t){this.set_config({capture_exceptions:null==t||t})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(t){return this.toolbar.loadToolbar(t)}get_property(t){var i;return null==(i=this.persistence)?void 0:i.props[t]}getSessionProperty(t){var i;return null==(i=this.sessionPersistence)?void 0:i.props[t]}toString(){var t,i=null!==(t=this.config.name)&&void 0!==t?t:Uo;return i!==Uo&&(i=Uo+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(he))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(he))}fs(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&F(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[Bi])&&(null==(i=this.persistence)||null==(i=i.props)||!i[ge]))}ds(){return!0===this.config.capture_pageleave||\"if_capture_pageview\"===this.config.capture_pageleave&&(!0===this.config.capture_pageview||\"history_change\"===this.config.capture_pageview)}createPersonProfile(){this.fs()||this.ps(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}ps(t){return\"never\"===this.config.person_profiles?($i.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.gs(ge,!0),!0)}Qr(){if(\"always\"===this.config.cookieless_mode)return!0;var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default||\"on_reject\"===this.config.cookieless_mode;return this.config.disable_persistence||t&&!!i}_s(){var t,i,e,r,s=this.Qr();(null==(t=this.persistence)?void 0:t.ki)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.ki)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){var i;if(\"always\"!==this.config.cookieless_mode){var e,r,s;if(\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())this.reset(!0),null==(e=this.sessionManager)||e.destroy(),null==(r=this.pageViewManager)||r.destroy(),this.sessionManager=new xo(this),this.pageViewManager=new xs(this),this.persistence&&(this.sessionPropsManager=new bo(this,this.sessionManager,this.persistence)),this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop();if(this.consent.optInOut(!0),this._s(),this.us(),null==(i=this.sessionRecording)||i.startIfEnabledOrStop(),\"on_reject\"==this.config.cookieless_mode&&this.surveys.loadIfEnabled(),M(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)this.capture(null!==(s=null==t?void 0:t.captureEventName)&&void 0!==s?s:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.hs()}else $i.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}opt_out_capturing(){var t,i,e;\"always\"!==this.config.cookieless_mode?(\"on_reject\"===this.config.cookieless_mode&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this._s(),\"on_reject\"===this.config.cookieless_mode&&(this.register({distinct_id:me,$device_id:null}),null==(t=this.sessionManager)||t.destroy(),null==(i=this.pageViewManager)||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,null==(e=this.sessionRecording)||e.stopRecording(),this.sessionRecording=void 0,this.hs())):$i.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var t=this.consent.consent;return t===Mr.GRANTED?\"granted\":t===Mr.DENIED?\"denied\":\"pending\"}is_capturing(){return\"always\"===this.config.cookieless_mode||(\"on_reject\"===this.config.cookieless_mode?this.consent.isExplicitlyOptedOut()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this._s()}_is_bot(){return n?ko(n,this.config.custom_blocked_useragents):void 0}hs(){o&&(\"visible\"===o.visibilityState?this.Wr||(this.Wr=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.Gr&&(o.removeEventListener(\"visibilitychange\",this.Gr),this.Gr=null)):this.Gr||(this.Gr=this.hs.bind(this),zi(o,\"visibilitychange\",this.Gr)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),this.set_config({debug:!1})):(null==t||t.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"),this.set_config({debug:!0}))}O(){var t,i,e,r,s,n,o,a=this.Yr||{};return\"advanced_disable_flags\"in a?!!a.advanced_disable_flags:!1!==this.config.advanced_disable_flags?!!this.config.advanced_disable_flags:!0===this.config.advanced_disable_decide?($i.warn(\"Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version.\"),!0):(e=\"advanced_disable_decide\",r=!1,s=$i,n=(i=\"advanced_disable_flags\")in(t=a)&&!M(t[i]),o=e in t&&!M(t[e]),n?t[i]:o?(s&&s.warn(\"Config field '\"+e+\"' is deprecated. Please use '\"+i+\"' instead. The old field will be removed in a future major version.\"),t[e]):r)}cs(t){if(j(this.config.before_send))return t;var i=I(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),j(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return H(t.event)?$i.warn(s+\". This can cause unexpected behavior.\"):$i.info(s),null}e.properties&&!F(e.properties)||$i.warn(\"Event '\"+t.event+\"' has no properties after beforeSend function, this is likely an error.\")}return e}getPageViewId(){var t;return null==(t=this.pageViewManager.Kt)?void 0:t.pageViewId}captureTraceFeedback(t,i){this.capture(\"$ai_feedback\",{$ai_trace_id:String(t),$ai_feedback_text:i})}captureTraceMetric(t,i,e){this.capture(\"$ai_metric\",{$ai_trace_id:String(t),$ai_metric_name:i,$ai_metric_value:String(e)})}Kr(t){var i=U(t)&&!t,e=Pr.H()&&\"true\"===Pr.q(\"ph_debug\");return!i&&(!!e||t)}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Ai(t.prototype[i[e]])}(Wo,[\"identify\"]);var Go,Vo={backgroundColor:\"#ffffff\",textColor:\"#1d1f27\",buttonColor:\"#1d1f27\",borderRadius:8,buttonBorderRadius:6,borderColor:\"#e5e7eb\",fontFamily:\"system-ui\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",showOverlay:!0,whiteLabel:!1,dismissOnClickOutside:!0,zIndex:2147483646},Jo=(Go=Lo[Uo]=new Wo,function(){function i(){i.done||(i.done=!0,zo=!1,Ci(Lo,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():zi(o,\"DOMContentLoaded\",i,{capture:!1}):t&&$i.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),Go);export{$s as Compression,Vo as DEFAULT_PRODUCT_TOUR_APPEARANCE,Vn as DisplaySurveyType,Wo as PostHog,Wn as SurveyEventName,Gn as SurveyEventProperties,jn as SurveyEventType,Nn as SurveyPosition,Bn as SurveyQuestionBranchingType,Hn as SurveyQuestionType,qn as SurveySchedule,Un as SurveyTabPosition,zn as SurveyType,Ln as SurveyWidgetType,Jo as default,Jo as posthog,Es as severityLevels};\n//# sourceMappingURL=module.js.map\n","import posthogJs from 'posthog-js';\nimport React, { createContext, useRef, useMemo, useEffect, useContext, useState, useCallback, Children } from 'react';\n\nvar PostHogContext = createContext({\n client: posthogJs,\n bootstrap: undefined,\n});\n\nfunction isDeepEqual(obj1, obj2, visited) {\n if (visited === void 0) { visited = new WeakMap(); }\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n if (visited.has(obj1) && visited.get(obj1) === obj2) {\n return true;\n }\n visited.set(obj1, obj2);\n var keys1 = Object.keys(obj1);\n var keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {\n var key = keys1_1[_i];\n if (!keys2.includes(key)) {\n return false;\n }\n if (!isDeepEqual(obj1[key], obj2[key], visited)) {\n return false;\n }\n }\n return true;\n}\n\nfunction PostHogProvider(_a) {\n var _b, _c;\n var children = _a.children, client = _a.client, apiKey = _a.apiKey, options = _a.options;\n var previousInitializationRef = useRef(null);\n var posthog = useMemo(function () {\n if (client) {\n if (apiKey) {\n console.warn('[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`.');\n }\n if (options) {\n console.warn('[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`.');\n }\n return client;\n }\n if (apiKey) {\n return posthogJs;\n }\n console.warn('[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior.');\n return posthogJs;\n }, [client, apiKey, JSON.stringify(options)]);\n useEffect(function () {\n if (client) {\n return;\n }\n var previousInitialization = previousInitializationRef.current;\n if (!previousInitialization) {\n if (posthogJs.__loaded) {\n console.warn('[PostHog.js] `posthog` was already loaded elsewhere. This may cause issues.');\n }\n posthogJs.init(apiKey, options);\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n else {\n if (apiKey !== previousInitialization.apiKey) {\n console.warn(\"[PostHog.js] You have provided a different `apiKey` to `PostHogProvider` than the one that was already initialized. This is not supported by our provider and we'll keep using the previous key. If you need to toggle between API Keys you need to control the `client` yourself and pass it in as a prop rather than an `apiKey` prop.\");\n }\n if (options && !isDeepEqual(options, previousInitialization.options)) {\n posthogJs.set_config(options);\n }\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n }, [client, apiKey, JSON.stringify(options)]);\n return (React.createElement(PostHogContext.Provider, { value: { client: posthog, bootstrap: (_b = options === null || options === void 0 ? void 0 : options.bootstrap) !== null && _b !== void 0 ? _b : (_c = client === null || client === void 0 ? void 0 : client.config) === null || _c === void 0 ? void 0 : _c.bootstrap } }, children));\n}\n\nvar isFunction = function (f) {\n return typeof f === 'function';\n};\nvar isUndefined = function (x) {\n return x === void 0;\n};\nvar isNull = function (x) {\n return x === null;\n};\n\nfunction useFeatureFlagEnabled(flag) {\n var _a, _b;\n var _c = useContext(PostHogContext), client = _c.client, bootstrap = _c.bootstrap;\n var _d = useState(function () { return client.isFeatureEnabled(flag); }), featureEnabled = _d[0], setFeatureEnabled = _d[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureEnabled(client.isFeatureEnabled(flag));\n });\n }, [client, flag]);\n var bootstrapped = (_a = bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags) === null || _a === void 0 ? void 0 : _a[flag];\n if (!((_b = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _b === void 0 ? void 0 : _b.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return isUndefined(bootstrapped) ? undefined : !!bootstrapped;\n }\n return featureEnabled;\n}\n\nfunction useFeatureFlagPayload(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.getFeatureFlagPayload(flag); }), featureFlagPayload = _c[0], setFeatureFlagPayload = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagPayload(client.getFeatureFlagPayload(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlagPayloads)) {\n return bootstrap.featureFlagPayloads[flag];\n }\n return featureFlagPayload;\n}\n\nfunction useActiveFeatureFlags() {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.featureFlags.getFlags(); }), featureFlags = _c[0], setFeatureFlags = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function (flags) {\n setFeatureFlags(flags);\n });\n }, [client]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return Object.keys(bootstrap.featureFlags);\n }\n return featureFlags;\n}\n\nfunction useFeatureFlagVariantKey(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () {\n return client.getFeatureFlag(flag);\n }), featureFlagVariantKey = _c[0], setFeatureFlagVariantKey = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagVariantKey(client.getFeatureFlag(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return bootstrap.featureFlags[flag];\n }\n return featureFlagVariantKey;\n}\n\nvar usePostHog = function () {\n var client = useContext(PostHogContext).client;\n return client;\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction VisibilityAndClickTracker(_a) {\n var children = _a.children, onIntersect = _a.onIntersect, onClick = _a.onClick, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"children\", \"onIntersect\", \"onClick\", \"trackView\", \"options\"]);\n var ref = useRef(null);\n var observerOptions = useMemo(function () { return (__assign({ threshold: 0.1 }, options)); }, [options === null || options === void 0 ? void 0 : options.threshold, options === null || options === void 0 ? void 0 : options.root, options === null || options === void 0 ? void 0 : options.rootMargin]);\n useEffect(function () {\n if (isNull(ref.current) || !trackView)\n return;\n var observer = new IntersectionObserver(function (_a) {\n var entry = _a[0];\n return onIntersect(entry);\n }, observerOptions);\n observer.observe(ref.current);\n return function () { return observer.disconnect(); };\n }, [observerOptions, trackView, onIntersect]);\n return (React.createElement(\"div\", __assign({ ref: ref }, props, { onClick: onClick }), children));\n}\n\nfunction VisibilityAndClickTrackers(_a) {\n var children = _a.children, trackInteraction = _a.trackInteraction, trackView = _a.trackView, options = _a.options, onInteract = _a.onInteract, onView = _a.onView, props = __rest(_a, [\"children\", \"trackInteraction\", \"trackView\", \"options\", \"onInteract\", \"onView\"]);\n var clickTrackedRef = useRef(false);\n var visibilityTrackedRef = useRef(false);\n var cachedOnClick = useCallback(function () {\n if (!clickTrackedRef.current && trackInteraction && onInteract) {\n onInteract();\n clickTrackedRef.current = true;\n }\n }, [trackInteraction, onInteract]);\n var onIntersect = function (entry) {\n if (!visibilityTrackedRef.current && entry.isIntersecting && onView) {\n onView();\n visibilityTrackedRef.current = true;\n }\n };\n var trackedChildren = Children.map(children, function (child) {\n return (React.createElement(VisibilityAndClickTracker, __assign({ onClick: cachedOnClick, onIntersect: onIntersect, trackView: trackView, options: options }, props), child));\n });\n return React.createElement(React.Fragment, null, trackedChildren);\n}\n\nfunction PostHogFeature(_a) {\n var flag = _a.flag, match = _a.match, children = _a.children, fallback = _a.fallback, visibilityObserverOptions = _a.visibilityObserverOptions, trackInteraction = _a.trackInteraction, trackView = _a.trackView, props = __rest(_a, [\"flag\", \"match\", \"children\", \"fallback\", \"visibilityObserverOptions\", \"trackInteraction\", \"trackView\"]);\n var payload = useFeatureFlagPayload(flag);\n var variant = useFeatureFlagVariantKey(flag);\n var posthog = usePostHog();\n var shouldTrackInteraction = trackInteraction !== null && trackInteraction !== void 0 ? trackInteraction : true;\n var shouldTrackView = trackView !== null && trackView !== void 0 ? trackView : true;\n if (isUndefined(match) || variant === match) {\n var childNode = isFunction(children) ? children(payload) : children;\n return (React.createElement(VisibilityAndClickTrackers, __assign({ flag: flag, options: visibilityObserverOptions, trackInteraction: shouldTrackInteraction, trackView: shouldTrackView, onInteract: function () { return captureFeatureInteraction({ flag: flag, posthog: posthog, flagVariant: variant }); }, onView: function () { return captureFeatureView({ flag: flag, posthog: posthog, flagVariant: variant }); } }, props), childNode));\n }\n return React.createElement(React.Fragment, null, fallback);\n}\nfunction captureFeatureInteraction(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_interaction/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_interaction', properties);\n}\nfunction captureFeatureView(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_view/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_view', properties);\n}\n\nfunction TrackedChild(_a) {\n var child = _a.child, index = _a.index, name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions;\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name, child_index: index }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, index, properties]);\n return (React.createElement(VisibilityAndClickTracker, { onIntersect: onIntersect, trackView: true, options: observerOptions }, child));\n}\nfunction PostHogCaptureOnViewed(_a) {\n var name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions, trackAllChildren = _a.trackAllChildren, children = _a.children, props = __rest(_a, [\"name\", \"properties\", \"observerOptions\", \"trackAllChildren\", \"children\"]);\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, properties]);\n if (trackAllChildren) {\n var trackedChildren = Children.map(children, function (child, index) {\n return (React.createElement(TrackedChild, { key: index, child: child, index: index, name: name, properties: properties, observerOptions: observerOptions }));\n });\n return React.createElement(\"div\", __assign({}, props), trackedChildren);\n }\n return (React.createElement(VisibilityAndClickTracker, __assign({ onIntersect: onIntersect, trackView: true, options: observerOptions }, props), children));\n}\n\nvar INITIAL_STATE = {\n componentStack: null,\n exceptionEvent: null,\n error: null,\n};\nvar __POSTHOG_ERROR_MESSAGES = {\n INVALID_FALLBACK: '[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element.',\n};\nvar PostHogErrorBoundary = (function (_super) {\n __extends(PostHogErrorBoundary, _super);\n function PostHogErrorBoundary(props) {\n var _this = _super.call(this, props) || this;\n _this.state = INITIAL_STATE;\n return _this;\n }\n PostHogErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {\n var additionalProperties = this.props.additionalProperties;\n var currentProperties;\n if (isFunction(additionalProperties)) {\n currentProperties = additionalProperties(error);\n }\n else if (typeof additionalProperties === 'object') {\n currentProperties = additionalProperties;\n }\n var client = this.context.client;\n var exceptionEvent = client.captureException(error, currentProperties);\n var componentStack = errorInfo.componentStack;\n this.setState({\n error: error,\n componentStack: componentStack !== null && componentStack !== void 0 ? componentStack : null,\n exceptionEvent: exceptionEvent,\n });\n };\n PostHogErrorBoundary.prototype.render = function () {\n var _a = this.props, children = _a.children, fallback = _a.fallback;\n var state = this.state;\n if (state.componentStack == null) {\n return isFunction(children) ? children() : children;\n }\n var element = isFunction(fallback)\n ? React.createElement(fallback, {\n error: state.error,\n componentStack: state.componentStack,\n exceptionEvent: state.exceptionEvent,\n })\n : fallback;\n if (React.isValidElement(element)) {\n return element;\n }\n console.warn(__POSTHOG_ERROR_MESSAGES.INVALID_FALLBACK);\n return React.createElement(React.Fragment, null);\n };\n PostHogErrorBoundary.contextType = PostHogContext;\n return PostHogErrorBoundary;\n}(React.Component));\n\nvar setupReactErrorHandler = function (client, callback) {\n return function (error, errorInfo) {\n var event = client.captureException(error);\n if (callback) {\n callback(event, error, errorInfo);\n }\n };\n};\n\nexport { PostHogCaptureOnViewed, PostHogContext, PostHogErrorBoundary, PostHogFeature, PostHogProvider, captureFeatureInteraction, captureFeatureView, setupReactErrorHandler, useActiveFeatureFlags, useFeatureFlagEnabled, useFeatureFlagPayload, useFeatureFlagVariantKey, usePostHog };\n//# sourceMappingURL=index.js.map\n","/**\n * Package version constant.\n * Imports version directly from package.json\n * \n * @example\n * ```typescript\n * import { getPackageVersion } from './utils/version';\n * console.log(getPackageVersion()); // \"0.14.11\"\n * ```\n */\n\nimport packageJson from '../../package.json';\n\n/**\n * Get the package version from package.json\n * @returns The package version from package.json\n */\nexport function getPackageVersion(): string {\n return packageJson.version;\n}\n\n/**\n * Get the package name\n * @returns The package name from package.json\n */\nexport function getPackageName(): string {\n return packageJson.name;\n}\n","/**\n * Analytics utility for tracking Twick package usage.\n * Provides a safe wrapper around PostHog that respects opt-out preferences.\n * \n * @example\n * ```typescript\n * // Disable analytics via environment variable\n * // VITE_TWICK_ANALYTICS_ENABLED=false\n * \n * // Or via config\n * <TimelineProvider analytics={{ enabled: false }} />\n * ```\n */\n\nimport { PostHog } from \"posthog-js\";\nimport { getPackageVersion, getPackageName } from \"./version\";\n\n/**\n * Configuration for analytics tracking\n */\nexport interface AnalyticsConfig {\n /** Whether analytics is enabled */\n enabled?: boolean;\n /** PostHog API key (optional, can use environment variable) */\n apiKey?: string;\n /** PostHog API host */\n apiHost?: string;\n /** Disable session recording */\n disableSessionRecording?: boolean;\n}\n\n/**\n * Check if analytics should be enabled\n */\nexport function isAnalyticsEnabled(config?: AnalyticsConfig): boolean {\n // Check environment variable first\n if (typeof window !== \"undefined\") {\n const envDisabled = \n (window as any).__TWICK_ANALYTICS_DISABLED__ === true ||\n (import.meta as any).env?.VITE_TWICK_ANALYTICS_ENABLED === \"false\" ||\n (typeof process !== \"undefined\" && (process as any).env?.TWICK_ANALYTICS_ENABLED === \"false\");\n \n if (envDisabled) return false;\n }\n\n // Check config prop\n if (config?.enabled === false) return false;\n \n // return true by default\n return true;\n}\n\n/**\n * Get PostHog API key from config or environment\n */\nexport function getPostHogApiKey(config?: AnalyticsConfig): string | undefined {\n // Priority: config prop > environment variable > default\n return (\n config?.apiKey ||\n (typeof window !== \"undefined\" && (import.meta as any).env?.VITE_POSTHOG_API_KEY) ||\n (typeof process !== \"undefined\" && (process as any).env?.POSTHOG_API_KEY) ||\n \"phc_v92Ybiir6eGbEOXmI60g7n0MhUZ1zSknfaf9a3wpAU0\" // Default key\n );\n}\n\n/**\n * Get PostHog API host\n */\nexport function getPostHogApiHost(config?: AnalyticsConfig): string {\n return config?.apiHost || \"https://us.i.posthog.com\";\n}\n\n/**\n * Safely capture an event if analytics is enabled\n */\nexport function trackEvent(\n posthog: PostHog,\n eventName: string,\n properties?: Record<string, any>,\n config?: AnalyticsConfig\n): void {\n if (!isAnalyticsEnabled(config)) {\n return;\n }\n\n try {\n // Get package version and name dynamically from package.json\n const packageVersion = getPackageVersion();\n const packageName = getPackageName();\n\n posthog.capture(eventName, {\n ...properties,\n packageName,\n packageVersion,\n timestamp: new Date().toISOString(),\n });\n } catch (error) {\n // Silently fail to avoid breaking user's application\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.warn(\"[Twick Analytics] Failed to track event:\", error);\n }\n }\n}\n\n/**\n * Get PostHog options based on config\n */\nexport function getPostHogOptions(config?: AnalyticsConfig, onLoaded?: (posthog: PostHog) => void) {\n return {\n api_host: getPostHogApiHost(config),\n disable_session_recording: config?.disableSessionRecording ?? true,\n loaded: onLoaded,\n };\n}\n","import {\n createContext,\n useContext,\n useState,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { TIMELINE_ACTION } from \"../utils/constants\";\nimport { UndoRedoProvider, useUndoRedo } from \"./undo-redo-context\";\nimport { Track } from \"../core/track/track\";\nimport { TrackElement } from \"../core/elements/base.element\";\nimport { ProjectJSON, Size, TrackJSON } from \"../types\";\nimport { TimelineEditor } from \"../core/editor/timeline.editor\";\nimport { editorRegistry } from \"../utils/register-editor\";\nimport { PostHogProvider } from \"posthog-js/react\";\nimport {\n AnalyticsConfig,\n isAnalyticsEnabled,\n getPostHogApiKey,\n getPostHogOptions,\n trackEvent,\n} from \"../utils/analytics\";\nimport { PostHog, PostHogConfig } from \"posthog-js\";\n\n/**\n * Type definition for the Timeline context.\n * Contains all the state and functions needed to manage a timeline instance.\n * Provides access to the timeline editor, selected items, undo/redo functionality,\n * and timeline actions.\n *\n * @example\n * ```js\n * const {\n * editor,\n * selectedItem,\n * totalDuration,\n * canUndo,\n * canRedo,\n * setSelectedItem,\n * setTimelineAction\n * } = useTimelineContext();\n * ```\n */\nexport type TimelineContextType = {\n /** Unique identifier for this timeline context */\n contextId: string;\n /** The timeline editor instance for this context */\n editor: TimelineEditor;\n /** Currently selected track or element */\n selectedItem: Track | TrackElement | null;\n /** Change counter for tracking modifications */\n changeLog: number;\n /** Current timeline action being performed */\n timelineAction: {\n type: string;\n payload: any;\n };\n /** Resolution of the video */\n videoResolution: Size;\n /** Total duration of the timeline in seconds */\n totalDuration: number;\n /** Current project state */\n present: ProjectJSON | null;\n /** Whether undo operation is available */\n canUndo: boolean;\n /** Whether redo operation is available */\n canRedo: boolean;\n /** Function to set the selected item */\n setSelectedItem: (item: Track | TrackElement | null) => void;\n /** Function to set timeline actions */\n setTimelineAction: (type: string, payload: any) => void;\n /** Function to set the video resolution */\n setVideoResolution: (size: Size) => void;\n};\n\nconst TimelineContext = createContext<TimelineContextType | undefined>(\n undefined\n);\n\n/**\n * Props for the TimelineProvider component.\n * Defines the configuration options for timeline context initialization.\n *\n * @example\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * initialData={{ tracks: [], version: 1 }}\n * undoRedoPersistenceKey=\"timeline-state\"\n * maxHistorySize={50}\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n */\nexport interface TimelineProviderProps {\n /** React children to wrap with timeline context */\n children: React.ReactNode;\n /** Unique identifier for this timeline context */\n contextId: string;\n /** resolution of the video */\n resolution?: Size;\n /** Initial timeline data to load */\n initialData?: {\n tracks: TrackJSON[];\n version: number;\n };\n /** Key for persisting undo/redo state */\n undoRedoPersistenceKey?: string;\n /** Maximum number of history states to keep */\n maxHistorySize?: number;\n /**\n * Analytics configuration.\n * Set to `{ enabled: false }` to disable tracking.\n */\n analytics?: AnalyticsConfig;\n}\n\n/**\n * Inner component that uses the UndoRedo context.\n * Manages the timeline state and provides the timeline editor instance.\n * Handles initialization of timeline data and editor setup.\n *\n * @param props - Timeline provider configuration\n * @returns Timeline context provider with state management\n *\n * @example\n * ```jsx\n * <TimelineProviderInner\n * contextId=\"my-timeline\"\n * resolution={{ width: 1920, height: 1080 }}\n * initialData={{ tracks: [], version: 1 }}\n * >\n * <YourApp />\n * </TimelineProviderInner>\n * ```\n */\nconst TimelineProviderInner = ({\n contextId,\n children,\n resolution,\n initialData,\n}: TimelineProviderProps) => {\n const [timelineAction, setTimelineActionState] = useState<{\n type: string;\n payload: any;\n }>({\n type: TIMELINE_ACTION.NONE,\n payload: null,\n });\n\n const [selectedItem, setSelectedItem] = useState<Track | TrackElement | null>(\n null\n );\n\n const [videoResolution, setVideoResolution] = useState<Size>(\n resolution ?? { width: 720, height: 1280 }\n );\n\n const [totalDuration, setTotalDuration] = useState(0);\n\n const [changeLog, setChangeLog] = useState(0);\n\n const undoRedoContext = useUndoRedo();\n\n const dataInitialized = useRef(false);\n\n /**\n * Updates the change log counter.\n * Called whenever the timeline is modified to track changes.\n *\n * @example\n * ```js\n * updateChangeLog();\n * // Increments the change counter\n * ```\n */\n const updateChangeLog = () => {\n setChangeLog((prev) => prev + 1);\n };\n\n // Create a single editor instance that's shared across all components\n const editor = useMemo(() => {\n if (editorRegistry.has(contextId)) {\n editorRegistry.delete(contextId);\n }\n const newEditor = new TimelineEditor({\n contextId,\n setTotalDuration,\n setPresent: undoRedoContext.setPresent,\n handleUndo: undoRedoContext.undo,\n handleRedo: undoRedoContext.redo,\n handleResetHistory: undoRedoContext.resetHistory,\n updateChangeLog: updateChangeLog,\n setTimelineAction: (action: string, payload?: unknown) => {\n setTimelineActionState({ type: action, payload });\n },\n });\n\n // Register the editor instance in the global registry\n editorRegistry.set(contextId, newEditor);\n\n return newEditor;\n }, [contextId]);\n\n /**\n * Sets a timeline action with optional payload.\n * Used to trigger timeline state changes and actions.\n *\n * @param type - The type of action to perform\n * @param payload - Optional data for the action\n *\n * @example\n * ```js\n * setTimelineAction(TIMELINE_ACTION.SET_PLAYER_STATE, { playing: true });\n * ```\n */\n const setTimelineAction = (type: string, payload: any) => {\n setTimelineActionState({ type, payload });\n };\n\n /**\n * Initializes the timeline with project data.\n * Loads either persisted state or initial data into the editor.\n *\n * @param data - Project data to initialize with\n *\n * @example\n * ```js\n * initialize(projectData);\n * // Loads project data into the timeline editor\n * ```\n */\n const initialize = (data: ProjectJSON) => {\n const lastPersistedState = undoRedoContext.getLastPersistedState();\n if (lastPersistedState) {\n editor.loadProject(lastPersistedState);\n return;\n } else {\n editor.loadProject(data);\n }\n };\n\n // Initialize timeline data if provided\n useEffect(() => {\n if (initialData && !dataInitialized.current) {\n initialize(initialData);\n dataInitialized.current = true;\n }\n }, [initialData]);\n\n const contextValue: TimelineContextType = {\n contextId,\n selectedItem,\n timelineAction,\n totalDuration,\n changeLog,\n videoResolution,\n present: undoRedoContext.present,\n canUndo: undoRedoContext.canUndo,\n canRedo: undoRedoContext.canRedo,\n setVideoResolution,\n setSelectedItem,\n setTimelineAction,\n editor, // Include the editor instance\n };\n\n return (\n <TimelineContext.Provider value={contextValue}>\n {children}\n </TimelineContext.Provider>\n );\n};\n\n/**\n * Provider component for the Timeline context.\n * Wraps the timeline functionality with PostHog analytics and undo/redo support.\n * Manages the global state for timeline instances including tracks, elements,\n * playback state, and history management.\n *\n * @param props - Timeline provider configuration\n * @returns Context provider with timeline state management\n *\n * @example\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * initialData={{ tracks: [], version: 1 }}\n * undoRedoPersistenceKey=\"timeline-state\"\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n *\n * @example\n * Disable analytics:\n * ```jsx\n * <TimelineProvider\n * contextId=\"my-timeline\"\n * analytics={{ enabled: false }}\n * >\n * <YourApp />\n * </TimelineProvider>\n * ```\n */\nexport const TimelineProvider = ({\n contextId,\n children,\n resolution = { width: 720, height: 1280 },\n initialData,\n undoRedoPersistenceKey,\n maxHistorySize,\n analytics,\n}: TimelineProviderProps) => {\n // Determine if analytics is enabled\n const analyticsEnabled = isAnalyticsEnabled(analytics);\n const apiKey = getPostHogApiKey(analytics);\n const onPostHogLoaded = (posthog: PostHog) => {\n trackEvent(posthog, \"timeline_editor_created\", {\n contextId,\n url: typeof window !== \"undefined\" ? window.location.href : undefined,\n timestamp: new Date().toISOString(),\n });\n };\n\n const postHogOptions = getPostHogOptions(analytics, onPostHogLoaded);\n\n // If analytics is disabled, skip PostHogProvider\n if (!analyticsEnabled || !apiKey) {\n return (\n <UndoRedoProvider\n persistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n >\n <TimelineProviderInner\n resolution={resolution}\n initialData={initialData}\n contextId={contextId}\n undoRedoPersistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n analytics={analytics}\n >\n {children}\n </TimelineProviderInner>\n </UndoRedoProvider>\n );\n }\n\n // If undo/redo is enabled, wrap with UndoRedoProvider\n return (\n <PostHogProvider\n apiKey={apiKey}\n options={postHogOptions as Partial<PostHogConfig>}\n >\n <UndoRedoProvider\n persistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n >\n <TimelineProviderInner\n resolution={resolution}\n initialData={initialData}\n contextId={contextId}\n undoRedoPersistenceKey={undoRedoPersistenceKey}\n maxHistorySize={maxHistorySize}\n analytics={analytics}\n >\n {children}\n </TimelineProviderInner>\n </UndoRedoProvider>\n </PostHogProvider>\n );\n};\n\n/**\n * Hook to access the Timeline context.\n * Provides access to timeline state, editor instance, and timeline management functions.\n * Must be used within a TimelineProvider component.\n *\n * @returns TimelineContextType object with all timeline state and controls\n * @throws Error if used outside of TimelineProvider\n *\n * @example\n * ```js\n * const {\n * editor,\n * selectedItem,\n * totalDuration,\n * canUndo,\n * canRedo,\n * setSelectedItem,\n * setTimelineAction\n * } = useTimelineContext();\n *\n * // Access the timeline editor\n * const tracks = editor.getTracks();\n *\n * // Check if undo is available\n * if (canUndo) {\n * editor.undo();\n * }\n *\n * // Set timeline action\n * setTimelineAction(TIMELINE_ACTION.SET_PLAYER_STATE, { playing: true });\n * ```\n */\nexport const useTimelineContext = () => {\n const context = useContext(TimelineContext);\n if (context === undefined) {\n throw new Error(\n \"useTimelineContext must be used within a TimelineProvider\"\n );\n }\n return context;\n};\n","/**\n * @twick/timeline - Timeline Package\n * \n * A comprehensive timeline management system for the Twick video platform.\n * Provides track-based video editing capabilities with support for multiple\n * element types, undo/redo functionality, and real-time timeline manipulation.\n * \n * @example\n * ```jsx\n * import { \n * TimelineProvider, \n * TimelineEditor, \n * Track, \n * VideoElement,\n * TextElement \n * } from '@twick/timeline';\n * \n * function App() {\n * return (\n * <TimelineProvider contextId=\"my-timeline\">\n * <TimelineEditor />\n * </TimelineProvider>\n * );\n * }\n * ```\n */\n\nimport { TIMELINE_ELEMENT_TYPE } from \"./utils/constants\";\nimport { TimelineEditor } from \"./core/editor/timeline.editor\";\nimport {\n TimelineProvider,\n TimelineProviderProps,\n} from \"./context/timeline-context\";\nimport { Track } from \"./core/track/track\";\nimport { ElementDeserializer } from \"./core/visitor/element-deserializer\";\nimport { ElementSerializer } from \"./core/visitor/element-serializer\";\nimport { ElementValidator } from \"./core/visitor/element-validator\";\nimport { ElementAdder } from \"./core/visitor/element-adder\";\nimport { ElementRemover } from \"./core/visitor/element-remover\";\nimport { ElementUpdater } from \"./core/visitor/element-updater\";\nimport { ElementSplitter } from \"./core/visitor/element-splitter\";\nimport { ElementCloner } from \"./core/visitor/element-cloner\";\nimport { CaptionElement } from \"./core/elements/caption.element\";\nimport { RectElement } from \"./core/elements/rect.element\";\nimport { TextElement } from \"./core/elements/text.element\";\nimport { ImageElement } from \"./core/elements/image.element\";\nimport { AudioElement } from \"./core/elements/audio.element\";\nimport { CircleElement } from \"./core/elements/circle.element\";\nimport { IconElement } from \"./core/elements/icon.element\";\nimport { VideoElement } from \"./core/elements/video.element\";\nimport {\n generateShortUuid,\n getTotalDuration,\n getCurrentElements,\n isTrackId,\n isElementId,\n} from \"./utils/timeline.utils\";\nimport { TrackElement } from \"./core/elements/base.element\";\nimport { ElementAnimation } from \"./core/addOns/animation\";\nimport { ElementFrameEffect } from \"./core/addOns/frame-effect\";\nimport { ElementTextEffect } from \"./core/addOns/text-effect\";\n\n// Core element types\nexport {\n TrackElement,\n Track,\n CaptionElement,\n RectElement,\n TextElement,\n ImageElement,\n IconElement,\n AudioElement,\n CircleElement,\n VideoElement,\n ElementAnimation,\n ElementFrameEffect,\n ElementTextEffect\n};\n\n// Timeline management\nexport {\n TimelineProvider,\n TimelineEditor,\n};\n\n// Types and interfaces\nexport type { TimelineProviderProps };\nexport { TIMELINE_ELEMENT_TYPE };\n\n// Utilities and helpers\nexport * from \"./types\";\nexport * from \"./utils/constants\";\nexport * from \"./utils/timeline.utils\";\nexport * from \"./context/timeline-context\";\n\n// Core components\nexport * from \"./core/track/track\";\nexport * from \"./core/elements/base.element\";\nexport * from \"./core/visitor/element-visitor\";\nexport * from \"./core/visitor/element-serializer\";\nexport * from \"./core/visitor/element-deserializer\";\nexport * from \"./core/visitor/element-validator\";\nexport * from \"./core/visitor/element-adder\";\nexport * from \"./core/visitor/element-remover\";\nexport * from \"./core/visitor/element-updater\";\nexport * from \"./core/visitor/element-splitter\";\nexport * from \"./core/visitor/element-cloner\";\n\n// Expose classes globally on window object for browser access\nif (typeof window !== \"undefined\") {\n // Also expose the main exports\n (window as any).Twick = {\n Track: Track,\n TrackElement,\n ElementDeserializer,\n ElementSerializer,\n ElementValidator,\n ElementAdder,\n ElementRemover,\n ElementUpdater,\n ElementSplitter,\n ElementCloner,\n TimelineEditor,\n TimelineProvider,\n TIMELINE_ELEMENT_TYPE,\n // Element types\n CaptionElement,\n RectElement,\n TextElement,\n ImageElement,\n AudioElement,\n CircleElement,\n IconElement,\n VideoElement,\n ElementAnimation,\n ElementFrameEffect,\n ElementTextEffect,\n // Utility functions\n generateShortUuid,\n getTotalDuration,\n getCurrentElements,\n isTrackId,\n isElementId,\n };\n}\n"],"names":["fn","s","i","n","e","name","c","r","v","j","t","version","createContext","useState","useContext","o","a","l","u","h","d","f","p","g","_","m","y","b","w","x","E","S","k","P","T","I","C","R","F","M","O","A","D","L","N","U","z","H","B","q","W","G","V","J","posthogJs","_i","useRef","useMemo","useEffect","jsx"],"mappings":"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","x_google_ignoreList":[29,30]}
|