@twick/timeline 0.14.13 → 0.14.15
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-CXhwwSX--32kJEN73.cjs +14961 -0
- package/dist/index-CXhwwSX--32kJEN73.cjs.map +1 -0
- package/dist/index.js +7930 -22816
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -30
- package/dist/index.mjs.map +1 -1
- package/dist/{context → src/context}/timeline-context.d.ts +16 -1
- package/dist/src/context/timeline-context.d.ts.map +1 -0
- package/dist/{context → src/context}/undo-redo-context.d.ts +1 -0
- package/dist/src/context/undo-redo-context.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/animation.d.ts +1 -0
- package/dist/src/core/addOns/animation.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/frame-effect.d.ts +1 -0
- package/dist/src/core/addOns/frame-effect.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/text-effect.d.ts +1 -0
- package/dist/src/core/addOns/text-effect.d.ts.map +1 -0
- package/dist/{core → src/core}/editor/timeline.editor.d.ts +1 -0
- package/dist/src/core/editor/timeline.editor.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/audio.element.d.ts +1 -0
- package/dist/src/core/elements/audio.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/base.element.d.ts +1 -0
- package/dist/src/core/elements/base.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/caption.element.d.ts +1 -0
- package/dist/src/core/elements/caption.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/circle.element.d.ts +1 -0
- package/dist/src/core/elements/circle.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/icon.element.d.ts +1 -0
- package/dist/src/core/elements/icon.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/image.element.d.ts +1 -0
- package/dist/src/core/elements/image.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/rect.element.d.ts +1 -0
- package/dist/src/core/elements/rect.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/text.element.d.ts +1 -0
- package/dist/src/core/elements/text.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/video.element.d.ts +1 -0
- package/dist/src/core/elements/video.element.d.ts.map +1 -0
- package/dist/{core → src/core}/track/track.d.ts +1 -0
- package/dist/src/core/track/track.d.ts.map +1 -0
- package/dist/{core → src/core}/track/track.friend.d.ts +1 -0
- package/dist/src/core/track/track.friend.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-adder.d.ts +1 -0
- package/dist/src/core/visitor/element-adder.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-cloner.d.ts +1 -0
- package/dist/src/core/visitor/element-cloner.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-deserializer.d.ts +1 -0
- package/dist/src/core/visitor/element-deserializer.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-remover.d.ts +1 -0
- package/dist/src/core/visitor/element-remover.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-serializer.d.ts +1 -0
- package/dist/src/core/visitor/element-serializer.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-splitter.d.ts +1 -0
- package/dist/src/core/visitor/element-splitter.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-updater.d.ts +1 -0
- package/dist/src/core/visitor/element-updater.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-validator.d.ts +1 -0
- package/dist/src/core/visitor/element-validator.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-visitor.d.ts +1 -0
- package/dist/src/core/visitor/element-visitor.d.ts.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{services → src/services}/data.service.d.ts +1 -0
- package/dist/src/services/data.service.d.ts.map +1 -0
- package/dist/{types → src/types}/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/{types.d.ts → src/types.d.ts} +1 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/analytics.d.ts +40 -0
- package/dist/src/utils/analytics.d.ts.map +1 -0
- package/dist/{utils → src/utils}/constants.d.ts +1 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/{utils → src/utils}/register-editor.d.ts +1 -0
- package/dist/src/utils/register-editor.d.ts.map +1 -0
- package/dist/{utils → src/utils}/timeline.utils.d.ts +1 -0
- package/dist/src/utils/timeline.utils.d.ts.map +1 -0
- package/dist/src/utils/version.d.ts +21 -0
- package/dist/src/utils/version.d.ts.map +1 -0
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","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.258.5/node_modules/posthog-js/dist/module.js","../../../node_modules/.pnpm/posthog-js@1.258.5/node_modules/posthog-js/react/dist/esm/index.js","../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 video = document.createElement(\"video\");\n video.preload = \"metadata\";\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 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 = () => reject(new Error(\"Failed to load video metadata\"));\n });\n};\n\nconst getThumbnail = async (videoUrl, seekTime = 0.1, playbackRate = 1) => {\n return new Promise((resolve, reject) => {\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 = 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 reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error\"}`));\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;\n }).catch(() => {\n video.currentTime = seekTime;\n });\n } else {\n video.currentTime = seekTime;\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};\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) {\n console.warn(`Invalid segment: start (${segment.s}) >= end (${segment.e})`);\n continue;\n }\n const volume = segment.volume ?? 1;\n if (volume <= 0) {\n console.warn(`Skipping muted segment: ${segment.src}`);\n continue;\n }\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 (error) {\n console.warn(`Failed to process segment: ${segment.src}`, error);\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-.js').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 console.error(\"Error downloading file:\", 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 (error) {\n console.error(\"Fetch failed:\", error);\n return null;\n }\n};\n\nexport { blobUrlToFile, detectMediaTypeFromUrl, downloadFile, extractAudio, getAudioDuration, getImageDimensions, getObjectFitSize, getScaledDimensions, getThumbnail, 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 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 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.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 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 || []).map(ElementDeserializer.fromJSON);\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 Promise<boolean> true if element was added successfully\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 boolean true if element was removed successfully\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 TrackElement the updated element\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,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.258.5\"},f=\"$copy_autocapture\",p=[\"$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(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),g=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function m(t,i){return-1!==t.indexOf(i)}var b=function(t){return t.trim()},y=function(t){return t.replace(/^\\$/,\"\")};var w=Array.isArray,S=Object.prototype,$=S.hasOwnProperty,x=S.toString,k=w||function(t){return\"[object Array]\"===x.call(t)},E=t=>\"function\"==typeof t,I=t=>t===Object(t)&&!k(t),P=t=>{if(I(t)){for(var i in t)if($.call(t,i))return!1;return!0}return!1},R=t=>void 0===t,T=t=>\"[object String]\"==x.call(t),M=t=>T(t)&&0===t.trim().length,C=t=>null===t,F=t=>R(t)||C(t),O=t=>\"[object Number]\"==x.call(t),A=t=>\"[object Boolean]\"===x.call(t),D=t=>t instanceof FormData,L=t=>m(p,t),j=i=>{var e={t:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG)&&!R(t.console)&&t.console){for(var r=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),s=arguments.length,n=new Array(s>1?s-1:0),o=1;o<s;o++)n[o-1]=arguments[o];r(i,...n)}},info:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"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=>{e.error(\"You must initialize PostHog before calling \"+t)},createLogger:t=>j(i+\" \"+t)};return e},N=j(\"[PostHog.js]\"),z=N.createLogger,U=z(\"[ExternalScriptsLoader]\"),q=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return U.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=0;s<r.length;s++)if(r[s].src===i)return e();var n=()=>{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=>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?n():null==o||o.addEventListener(\"DOMContentLoaded\",n)};function B(){return B=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},B.apply(null,arguments)}function H(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}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);q(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);q(t,r,e)};var W={};function G(t,i,e){if(k(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)===W)return}function J(t,i,e){if(!F(t)){if(k(t))return G(t,i,e);if(D(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===W)return}else for(var s in t)if($.call(t,s)&&i.call(e,t[s],s)===W)return}}var V=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 G(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},K=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 G(e,(function(i){G(i,(function(i){t.push(i)}))})),t};function Y(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 X=function(t){try{return t()}catch(t){return}},Q=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){N.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),N.critical(t)}}},Z=function(t){var i={};return J(t,(function(t,e){(T(t)&&t.length>0||O(t))&&(i[e]=t)})),i};function tt(t,i){return e=t,r=t=>T(t)&&!C(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),k(i)?(n=[],G(i,(i=>{n.push(t(i))}))):(n={},J(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var it=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function et(t){var i=null==t?void 0:t.hostname;if(!T(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of it)if(e===r)return!1;return!0}function rt(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function st(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 nt=\"$people_distinct_id\",ot=\"__alias\",at=\"__timers\",lt=\"$autocapture_disabled_server_side\",ut=\"$heatmaps_enabled_server_side\",ht=\"$exception_capture_enabled_server_side\",dt=\"$error_tracking_suppression_rules\",vt=\"$error_tracking_capture_extension_exceptions\",ct=\"$web_vitals_enabled_server_side\",ft=\"$dead_clicks_enabled_server_side\",pt=\"$web_vitals_allowed_metrics\",_t=\"$session_recording_enabled_server_side\",gt=\"$console_log_recording_enabled_server_side\",mt=\"$session_recording_network_payload_capture\",bt=\"$session_recording_masking\",yt=\"$session_recording_canvas_recording\",wt=\"$replay_sample_rate\",St=\"$replay_minimum_duration\",$t=\"$replay_script_config\",xt=\"$sesid\",kt=\"$session_is_sampled\",Et=\"$session_recording_url_trigger_activated_session\",It=\"$session_recording_event_trigger_activated_session\",Pt=\"$enabled_feature_flags\",Rt=\"$early_access_features\",Tt=\"$feature_flag_details\",Mt=\"$stored_person_properties\",Ct=\"$stored_group_properties\",Ft=\"$surveys\",Ot=\"$surveys_activated\",At=\"$flag_call_reported\",Dt=\"$user_state\",Lt=\"$client_session_props\",jt=\"$capture_rate_limit\",Nt=\"$initial_campaign_params\",zt=\"$initial_referrer_info\",Ut=\"$initial_person_info\",qt=\"$epp\",Bt=\"__POSTHOG_TOOLBAR__\",Ht=\"$posthog_cookieless\",Wt=[nt,ot,\"__cmpns\",at,_t,ut,xt,Pt,dt,Dt,Rt,Tt,Ct,Mt,Ft,At,Lt,jt,Nt,zt,qt,Ut];function Gt(t){return t instanceof Element&&(t.id===Bt||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function Jt(t){return!!t&&1===t.nodeType}function Vt(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function Kt(t){return!!t&&3===t.nodeType}function Yt(t){return!!t&&11===t.nodeType}function Xt(t){return t?b(t).split(/\\s+/):[]}function Qt(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function Zt(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 Xt(i)}function ti(t){return F(t)?null:b(t).split(/(\\s+)/).filter((t=>fi(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function ii(t){var i=\"\";return oi(t)&&!ai(t)&&t.childNodes&&t.childNodes.length&&J(t.childNodes,(function(t){var e;Kt(t)&&t.textContent&&(i+=null!==(e=ti(t.textContent))&&void 0!==e?e:\"\")})),b(i)}function ei(t){return R(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var ri=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function si(t){var i=t.parentNode;return!(!i||!Jt(i))&&i}function ni(i,e,r,s,n){var o,a,l;if(void 0===r&&(r=void 0),!t||!i||Vt(i,\"html\")||!Jt(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!Qt(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&Qt(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var u=r.dom_event_allowlist;if(u&&!u.some((t=>e.type===t)))return!1}for(var h=!1,d=[i],v=!0,c=i;c.parentNode&&!Vt(c,\"body\");)if(Yt(c.parentNode))d.push(c.parentNode.host),c=c.parentNode.host;else{if(!(v=si(c)))break;if(s||ri.indexOf(v.tagName.toLowerCase())>-1)h=!0;else{var f=t.getComputedStyle(v);f&&\"pointer\"===f.getPropertyValue(\"cursor\")&&(h=!0)}d.push(v),c=v}if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(R(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}(d,r))return!1;if(!function(t,i){var e=null==i?void 0:i.css_selector_allowlist;if(R(e))return!0;var r,s=function(t){if(e.some((i=>t.matches(i))))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(d,r))return!1;var p=t.getComputedStyle(i);if(p&&\"pointer\"===p.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var _=i.tagName.toLowerCase();switch(_){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 h?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(ri.indexOf(_)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function oi(t){for(var i=t;i.parentNode&&!Vt(i,\"body\");i=i.parentNode){var e=Zt(i);if(m(e,\"ph-sensitive\")||m(e,\"ph-no-capture\"))return!1}if(m(Zt(t),\"ph-include\"))return!0;var r=t.type||\"\";if(T(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(T(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 ai(t){return!!(Vt(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||Vt(t,\"select\")||Vt(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var li=\"(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})\",ui=new RegExp(\"^(?:\"+li+\")$\"),hi=new RegExp(li),di=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",vi=new RegExp(\"^(\"+di+\")$\"),ci=new RegExp(\"(\"+di+\")\");function fi(t,i){if(void 0===i&&(i=!0),F(t))return!1;if(T(t)){if(t=b(t),(i?ui:hi).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?vi:ci).test(t))return!1}return!0}function pi(t){var i=ii(t);return fi(i=(i+\" \"+_i(t)).trim())?i:\"\"}function _i(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&J(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=ii(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+_i(t)).trim())}catch(t){N.error(\"[AutoCapture]\",t)}})),i}function gi(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=B({},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 Y(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[mi(i.toString())]=mi(e.toString())})),r+=\":\",r+=Y(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:bi(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Y(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 mi(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function bi(t){var i=t.attr__class;return i?k(i)?i:Xt(i):void 0}class yi{constructor(){this.clicks=[]}isRageClick(t,i,e){var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<30&&e-r.timestamp<1e3){if(this.clicks.push({x:t,y:i,timestamp:e}),3===this.clicks.length)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var wi=[\"localhost\",\"127.0.0.1\"],Si=t=>{var i=null==o?void 0:o.createElement(\"a\");return R(i)?null:(i.href=t,i)},$i=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return J(t,(function(t,i){R(t)||R(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)},xi=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(!k(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){N.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},ki=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(\"=\");k(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},Ei=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},Ii=z(\"[AutoCapture]\");function Pi(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function Ri(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!Jt(i));return i}function Ti(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};ri.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=Pi(1024,pi(t)):n.$el_text=Pi(1024,ii(t)));var o=Zt(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),J(t.attributes,(function(e){var s;if((!ai(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&fi(e.value)&&(s=e.name,!T(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=Xt(o).join(\" \")),n[\"attr__\"+e.name]=Pi(1024,o)}}));for(var a=1,l=1,u=t;u=Ri(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function Mi(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!Vt(d,\"body\");)Yt(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,_=!1;if(J(h,(t=>{var i=oi(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&fi(p)&&p),m(Zt(t),\"ph-no-capture\")&&(_=!0),c.push(Ti(t,o,a,l));var e=function(t){if(!oi(t))return{};var i={};return J(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&&fi(r)&&(i[e]=r)}})),i}(t);V(f,e)})),_)return{props:{},explicitNoCapture:_};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=pi(i):c[0].$el_text=ii(i)),p){var g,b;c[0].attr__href=p;var y=null==(g=Si(p))?void 0:g.host,w=null==t||null==(b=t.location)?void 0:b.host;y&&w&&y!==w&&(v=p)}return{props:V({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:gi(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 Ci{constructor(t){this.i=!1,this.o=null,this.rageclicks=new yi,this.h=!1,this.instance=t,this.m=null}get S(){var t,i,e=I(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}$(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.k(i)}catch(t){Ii.error(\"Failed to capture event\",t)}};if(st(o,\"submit\",i,{capture:!0}),st(o,\"change\",i,{capture:!0}),st(o,\"click\",i,{capture:!0}),this.S.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.k(i,f)};st(o,\"copy\",e,{capture:!0}),st(o,\"cut\",e,{capture:!0})}}}else Ii.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.i&&(this.$(),this.i=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.h=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[lt]:!!t.autocapture_opt_out}),this.o=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.m=t}getElementSelectors(t){var i,e=[];return null==(i=this.m)||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[lt],r=this.o;if(C(r)&&!A(e)&&!this.instance.I())return!1;var s=null!==(i=this.o)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}k(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=ei(i);if(Kt(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,(new Date).getTime())&&this.k(i,\"$rageclick\");var n=e===f;if(s&&ni(s,i,this.S,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=Mi(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.S.element_attribute_ignorelist,elementsChainAsString:this.h});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===f){var u,h=ti(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 E(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 O(t)&&isFinite(t)&&Math.floor(t)===t});var Fi=\"0123456789abcdef\";class Oi{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 Oi(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+Fi.charAt(this.bytes[i]>>>4)+Fi.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 Oi(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 Ai{constructor(){this.P=0,this.R=0,this.T=new ji}generate(){var t=this.generateOrAbort();if(R(t)){this.P=0;var i=this.generateOrAbort();if(R(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.P)this.P=t,this.M();else{if(!(t+1e4>this.P))return;this.R++,this.R>4398046511103&&(this.P++,this.M())}return Oi.fromFieldsV7(this.P,Math.trunc(this.R/Math.pow(2,30)),this.R&Math.pow(2,30)-1,this.T.nextUint32())}M(){this.R=1024*this.T.nextUint32()+(1023&this.T.nextUint32())}}var Di,Li=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&&!R(t.crypto)&&crypto.getRandomValues&&(Li=t=>crypto.getRandomValues(t));class ji{constructor(){this.C=new Uint32Array(8),this.F=1/0}nextUint32(){return this.F>=this.C.length&&(Li(this.C),this.F=0),this.C[this.F++]}}var Ni=()=>zi().toString(),zi=()=>(Di||(Di=new Ai)).generate(),Ui=\"\";var qi=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function Bi(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),Ui)return Ui;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_\"+Ni();!Ui&&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\",Ui=n)}return Ui}(t);if(!e){var r=(t=>{var i=t.match(qi);return i?i[0]:\"\"})(t);r!==e&&N.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var Hi={O:()=>!!o,A:function(t){N.error(\"cookieStore error: \"+t)},D: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}},L:function(t){var i;try{i=JSON.parse(Hi.D(t))||{}}catch(t){}return i},j:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=Bi(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&&N.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},N:function(t,i){try{Hi.j(t,\"\",-1,i)}catch(t){return}}},Wi=null,Gi={O:function(){if(!C(Wi))return Wi;var i=!0;if(R(t))i=!1;else try{var e=\"__mplssupport__\";Gi.j(e,\"xyz\"),'\"xyz\"'!==Gi.D(e)&&(i=!1),Gi.N(e)}catch(t){i=!1}return i||N.error(\"localStorage unsupported; falling back to cookie store\"),Wi=i,i},A:function(t){N.error(\"localStorage error: \"+t)},D:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Gi.A(t)}return null},L:function(t){try{return JSON.parse(Gi.D(t))||{}}catch(t){}return null},j:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Gi.A(t)}},N:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Gi.A(t)}}},Ji=[\"distinct_id\",xt,kt,qt,Ut],Vi=B({},Gi,{L:function(t){try{var i={};try{i=Hi.L(t)||{}}catch(t){}var e=V(i,JSON.parse(Gi.D(t)||\"{}\"));return Gi.j(t,e),e}catch(t){}return null},j:function(t,i,e,r,s,n){try{Gi.j(t,i,void 0,void 0,n);var o={};Ji.forEach((t=>{i[t]&&(o[t]=i[t])})),Object.keys(o).length&&Hi.j(t,o,e,r,s,n)}catch(t){Gi.A(t)}},N:function(i,e){try{null==t||t.localStorage.removeItem(i),Hi.N(i,e)}catch(t){Gi.A(t)}}}),Ki={},Yi={O:function(){return!0},A:function(t){N.error(\"memoryStorage error: \"+t)},D:function(t){return Ki[t]||null},L:function(t){return Ki[t]||null},j:function(t,i){Ki[t]=i},N:function(t){delete Ki[t]}},Xi=null,Qi={O:function(){if(!C(Xi))return Xi;if(Xi=!0,R(t))Xi=!1;else try{var i=\"__support__\";Qi.j(i,\"xyz\"),'\"xyz\"'!==Qi.D(i)&&(Xi=!1),Qi.N(i)}catch(t){Xi=!1}return Xi},A:function(t){N.error(\"sessionStorage error: \",t)},D:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Qi.A(t)}return null},L:function(t){try{return JSON.parse(Qi.D(t))||null}catch(t){}return null},j:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Qi.A(t)}},N:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Qi.A(t)}}},Zi=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class te{constructor(t){this._instance=t}get S(){return this._instance.config}get consent(){return this.U()?Zi.DENIED:this.q}isOptedOut(){return this.consent===Zi.DENIED||this.consent===Zi.PENDING&&this.S.opt_out_capturing_by_default}isOptedIn(){return!this.isOptedOut()}optInOut(t){this.B.j(this.H,t?1:0,this.S.cookie_expiration,this.S.cross_subdomain_cookie,this.S.secure_cookie)}reset(){this.B.N(this.H,this.S.cross_subdomain_cookie)}get H(){var{token:t,opt_out_capturing_cookie_prefix:i}=this._instance.config;return(i||\"__ph_opt_in_out_\")+t}get q(){var t=this.B.D(this.H);return\"1\"===t?Zi.GRANTED:\"0\"===t?Zi.DENIED:Zi.PENDING}get B(){if(!this.W){var t=this.S.opt_out_capturing_persistence_type;this.W=\"localStorage\"===t?Gi:Hi;var i=\"localStorage\"===t?Hi:Gi;i.D(this.H)&&(this.W.D(this.H)||this.optInOut(\"1\"===i.D(this.H)),i.N(this.H,this.S.cross_subdomain_cookie))}return this.W}U(){return!!this.S.respect_dnt&&!!rt([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>m([!0,1,\"1\",\"yes\"],t)))}}var ie=z(\"[Dead Clicks]\"),ee=()=>!0,re=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(ft)),r=t.instance.config.capture_dead_clicks;return A(r)?r:e};class se{get lazyLoadedDeadClicksAutocapture(){return this.G}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[ft]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.J((()=>{this.V()}))}J(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?ie.error(\"failed to load script\",i):t()}))}V(){var t;if(o){if(!this.G&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=I(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.G=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.G.start(o),ie.info(\"starting...\")}}else ie.error(\"`document` not found. Cannot start.\")}stop(){this.G&&(this.G.stop(),this.G=void 0,ie.info(\"stopping...\"))}}function ne(t,i,e,r,s){return i>e&&(N.warn(\"min cannot be greater than max.\"),i=e),O(t)?t>e?(r&&N.warn(r+\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r&&N.warn(r+\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r&&N.warn(r+\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),ne(s||e,i,e,r))}class oe{constructor(t){this.K={},this.Y=()=>{Object.keys(this.K).forEach((t=>{var i=this.X(t)+this.Z;i>=this.tt?delete this.K[t]:this.it(t,i)}))},this.X=t=>this.K[String(t)],this.it=(t,i)=>{this.K[String(t)]=i},this.consumeRateLimit=t=>{var i,e=null!==(i=this.X(t))&&void 0!==i?i:this.tt;if(0===(e=Math.max(e-1,0)))return!0;this.it(t,e);var r,s=0===e;s&&(null==(r=this.et)||r.call(this,t));return s},this.rt=t,this.et=this.rt.et,this.tt=ne(this.rt.bucketSize,0,100,\"rate limiter bucket size\"),this.Z=ne(this.rt.refillRate,0,this.tt,\"rate limiter refill rate\"),this.st=ne(this.rt.refillInterval,0,864e5,\"rate limiter refill interval\"),setInterval((()=>{this.Y()}),this.st)}}var ae=z(\"[ExceptionAutocapture]\");class le{constructor(i){var e,r,s;this.nt=()=>{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.ot&&this.S.capture_unhandled_errors&&(this.ot=e(this.captureException.bind(this))),!this.lt&&this.S.capture_unhandled_rejections&&(this.lt=r(this.captureException.bind(this))),!this.ut&&this.S.capture_console_errors&&(this.ut=s(this.captureException.bind(this)))}catch(t){ae.error(\"failed to start\",t),this.ht()}}},this._instance=i,this.dt=!(null==(e=this._instance.persistence)||!e.props[ht]),this.S=this.vt(),this.ct=new oe({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}),this.startIfEnabled()}vt(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return I(t)?i=B({},i,t):(R(t)?this.dt:t)&&(i=B({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.S.capture_console_errors||this.S.capture_unhandled_errors||this.S.capture_unhandled_rejections}startIfEnabled(){this.isEnabled&&(ae.info(\"enabled\"),this.J(this.nt))}J(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 ae.error(\"failed to load script\",i);t()}))}ht(){var t,i,e;null==(t=this.ot)||t.call(this),this.ot=void 0,null==(i=this.lt)||i.call(this),this.lt=void 0,null==(e=this.ut)||e.call(this),this.ut=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.dt=!!i||!1,this.S=this.vt(),this._instance.persistence&&this._instance.persistence.register({[ht]:this.dt}),this.startIfEnabled()}captureException(t){var i,e=this._instance.requestRouter.endpointFor(\"ui\");t.$exception_personURL=e+\"/project/\"+this._instance.config.token+\"/person/\"+this._instance.get_distinct_id();var r=null!==(i=t.$exception_list[0].type)&&void 0!==i?i:\"Exception\";this.ct.consumeRateLimit(r)?ae.info(\"Skipping exception capture because of client rate limiting.\",{exception:t.$exception_list[0].type}):this._instance.exceptions.sendExceptionEvent(t)}}function ue(t){return!R(Event)&&he(t,Event)}function he(t,i){try{return t instanceof i}catch(t){return!1}}function de(t){switch(Object.prototype.toString.call(t)){case\"[object Error]\":case\"[object Exception]\":case\"[object DOMException]\":case\"[object DOMError]\":return!0;default:return he(t,Error)}}function ve(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function ce(t){return ve(t,\"DOMError\")}var fe=/\\(error: (.*)\\)/,pe=50,_e=\"?\";function ge(t,i,e,r){var s={platform:\"web:javascript\",filename:t,function:\"<anonymous>\"===i?_e:i,in_app:!0};return R(e)||(s.lineno=e),R(r)||(s.colno=r),s}var me=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,be=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,ye=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,we=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,Se=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,$e=function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];var r=i.sort(((t,i)=>t[0]-i[0])).map((t=>t[1]));return function(t,i){void 0===i&&(i=0);for(var e=[],s=t.split(\"\\n\"),n=i;n<s.length;n++){var o=s[n];if(!(o.length>1024)){var a=fe.test(o)?o.replace(fe,\"$1\"):o;if(!a.match(/\\S*Error: /)){for(var l of r){var u=l(a);if(u){e.push(u);break}}if(e.length>=pe)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,pe).map((t=>B({},t,{filename:t.filename||xe(i).filename,function:t.function||_e})))}(e)}}(...[[30,t=>{var i=me.exec(t);if(i){var[,e,r,s]=i;return ge(e,_e,+r,+s)}var n=be.exec(t);if(n){if(n[2]&&0===n[2].indexOf(\"eval\")){var o=ye.exec(n[2]);o&&(n[2]=o[1],n[3]=o[2],n[4]=o[3])}var[a,l]=Pe(n[1]||_e,n[2]);return ge(l,a,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}}],[50,t=>{var i=we.exec(t);if(i){if(i[3]&&i[3].indexOf(\" > eval\")>-1){var e=Se.exec(i[3]);e&&(i[1]=i[1]||\"eval\",i[3]=e[1],i[4]=e[2],i[5]=\"\")}var r=i[3],s=i[1]||_e;return[s,r]=Pe(s,r),ge(r,s,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}}]]);function xe(t){return t[t.length-1]||{}}var ke,Ee,Ie,Pe=(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]:_e,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]};var Re=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;function Te(t,i){void 0===i&&(i=0);var e=t.stacktrace||t.stack||\"\",r=function(t){if(t&&Me.test(t.message))return 1;return 0}(t);try{var s=$e,n=function(t,i){var e=function(t){var i=globalThis._posthogChunkIds;if(!i)return{};var e=Object.keys(i);return Ie&&e.length===Ee||(Ee=e.length,Ie=e.reduce(((e,r)=>{ke||(ke={});var s=ke[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,ke[r]=[l,u];break}}return e}),{})),Ie}(i);return t.forEach((t=>{t.filename&&(t.chunk_id=e[t.filename])})),t}(s(e,r),s);return n.slice(0,n.length-i)}catch(t){}return[]}var Me=/Minified React error #\\d+;/i;function Ce(t,i){var e,r,s=Te(t),n=null===(e=null==i?void 0:i.handled)||void 0===e||e,o=null!==(r=null==i?void 0:i.synthetic)&&void 0!==r&&r;return{type:null!=i&&i.overrideExceptionType?i.overrideExceptionType:t.name,value:function(t){var i=t.message;if(i.error&&\"string\"==typeof i.error.message)return String(i.error.message);return String(i)}(t),stacktrace:{frames:s,type:\"raw\"},mechanism:{handled:n,synthetic:o}}}function Fe(t,i){var e=Ce(t,i);return t.cause&&de(t.cause)&&t.cause!==t?[e,...Fe(t.cause,{handled:null==i?void 0:i.handled,synthetic:null==i?void 0:i.synthetic})]:[e]}function Oe(t,i){return{$exception_list:Fe(t,i),$exception_level:\"error\"}}function Ae(t,i){var e,r,s,n=null===(e=null==i?void 0:i.handled)||void 0===e||e,o=null===(r=null==i?void 0:i.synthetic)||void 0===r||r,a={type:null!=i&&i.overrideExceptionType?i.overrideExceptionType:null!==(s=null==i?void 0:i.defaultExceptionType)&&void 0!==s?s:\"Error\",value:t||(null==i?void 0:i.defaultExceptionMessage),mechanism:{handled:n,synthetic:o}};if(null!=i&&i.syntheticException){var l=Te(i.syntheticException,1);l.length&&(a.stacktrace={frames:l,type:\"raw\"})}return{$exception_list:[a],$exception_level:\"error\"}}function De(t){return T(t)&&!M(t)&&g.indexOf(t)>=0}function Le(t,i){var e,r,s=null===(e=null==i?void 0:i.handled)||void 0===e||e,n=null===(r=null==i?void 0:i.synthetic)||void 0===r||r,o=null!=i&&i.overrideExceptionType?i.overrideExceptionType:ue(t)?t.constructor.name:\"Error\",a=\"Non-Error 'exception' captured with keys: \"+function(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\"\"}(t),l={type:o,value:a,mechanism:{handled:s,synthetic:n}};if(null!=i&&i.syntheticException){var u=Te(null==i?void 0:i.syntheticException,1);u.length&&(l.stacktrace={frames:u,type:\"raw\"})}return{$exception_list:[l],$exception_level:De(t.level)?t.level:\"error\"}}function je(t,i){var{error:e,event:r}=t,s={$exception_list:[]},n=e||r;if(ce(n)||function(t){return ve(t,\"DOMException\")}(n)){var o=n;if(function(t){return\"stack\"in t}(n))s=Oe(n,i);else{var a=o.name||(ce(o)?\"DOMError\":\"DOMException\"),l=o.message?a+\": \"+o.message:a;s=Ae(l,B({},i,{overrideExceptionType:ce(o)?\"DOMError\":\"DOMException\",defaultExceptionMessage:l}))}return\"code\"in o&&(s.$exception_DOMException_code=\"\"+o.code),s}if(function(t){return ve(t,\"ErrorEvent\")}(n)&&n.error)return Oe(n.error,i);if(de(n))return Oe(n,i);if(function(t){return ve(t,\"Object\")}(n)||ue(n))return Le(n,i);if(R(e)&&T(r)){var u=\"Error\",h=r,d=r.match(Re);return d&&(u=d[1],h=d[2]),Ae(h,B({},i,{overrideExceptionType:u,defaultExceptionMessage:h}))}return Ae(n,i)}function Ne(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return E(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class ze{constructor(i){var e;this._instance=i,this.ft=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&(N.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this._t&&this._t(),this._t=void 0,N.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||Ne(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r.gt(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||Ne(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r.gt(\"replaceState\")})),this.bt()}}gt(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.ft&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.ft=r}catch(t){N.error(\"Error capturing \"+i+\" pageview\",t)}}bt(){if(!this._t){var i=()=>{this.gt(\"popstate\")};st(t,\"popstate\",i),this._t=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}function Ue(t){var i,e;return(null==(i=JSON.stringify(t,(e=[],function(t,i){if(I(i)){for(;e.length>0&&e[e.length-1]!==this;)e.pop();return e.includes(i)?\"[Circular]\":(e.push(i),i)}return i})))?void 0:i.length)||0}function qe(t,i){if(void 0===i&&(i=6606028.8),t.size>=i&&t.data.length>1){var e=Math.floor(t.data.length/2),r=t.data.slice(0,e),s=t.data.slice(e);return[qe({size:Ue(r),data:r,sessionId:t.sessionId,windowId:t.windowId}),qe({size:Ue(s),data:s,sessionId:t.sessionId,windowId:t.windowId})].flatMap((t=>t))}return[t]}var Be=(t=>(t[t.DomContentLoaded=0]=\"DomContentLoaded\",t[t.Load=1]=\"Load\",t[t.FullSnapshot=2]=\"FullSnapshot\",t[t.IncrementalSnapshot=3]=\"IncrementalSnapshot\",t[t.Meta=4]=\"Meta\",t[t.Custom=5]=\"Custom\",t[t.Plugin=6]=\"Plugin\",t))(Be||{}),He=(t=>(t[t.Mutation=0]=\"Mutation\",t[t.MouseMove=1]=\"MouseMove\",t[t.MouseInteraction=2]=\"MouseInteraction\",t[t.Scroll=3]=\"Scroll\",t[t.ViewportResize=4]=\"ViewportResize\",t[t.Input=5]=\"Input\",t[t.TouchMove=6]=\"TouchMove\",t[t.MediaInteraction=7]=\"MediaInteraction\",t[t.StyleSheetRule=8]=\"StyleSheetRule\",t[t.CanvasMutation=9]=\"CanvasMutation\",t[t.Font=10]=\"Font\",t[t.Log=11]=\"Log\",t[t.Drag=12]=\"Drag\",t[t.StyleDeclaration=13]=\"StyleDeclaration\",t[t.Selection=14]=\"Selection\",t[t.AdoptedStyleSheet=15]=\"AdoptedStyleSheet\",t[t.CustomElement=16]=\"CustomElement\",t))(He||{}),We=\"[SessionRecording]\",Ge=\"redacted\",Je={initiatorTypes:[\"audio\",\"beacon\",\"body\",\"css\",\"early-hint\",\"embed\",\"fetch\",\"frame\",\"iframe\",\"icon\",\"image\",\"img\",\"input\",\"link\",\"navigation\",\"object\",\"ping\",\"script\",\"track\",\"video\",\"xmlhttprequest\"],maskRequestFn:t=>t,recordHeaders:!1,recordBody:!1,recordInitialRequests:!1,recordPerformance:!1,performanceEntryTypeToObserve:[\"first-input\",\"navigation\",\"paint\",\"resource\"],payloadSizeLimitBytes:1e6,payloadHostDenyList:[\".lr-ingest.io\",\".ingest.sentry.io\",\".clarity.ms\",\"analytics.google.com\",\"bam.nr-data.net\"]},Ve=[\"authorization\",\"x-forwarded-for\",\"authorization\",\"cookie\",\"set-cookie\",\"x-api-key\",\"x-real-ip\",\"remote-addr\",\"forwarded\",\"proxy-authorization\",\"x-csrf-token\",\"x-csrftoken\",\"x-xsrf-token\"],Ke=[\"password\",\"secret\",\"passwd\",\"api_key\",\"apikey\",\"auth\",\"credentials\",\"mysql_pwd\",\"privatekey\",\"private_key\",\"token\"],Ye=[\"/s/\",\"/e/\",\"/i/\"];function Xe(t,i,e,r){if(F(t))return t;var s=(null==i?void 0:i[\"content-length\"])||function(t){return new Blob([t]).size}(t);return T(s)&&(s=parseInt(s)),s>e?We+\" \"+r+\" body too large to record (\"+s+\" bytes)\":t}function Qe(t,i){if(F(t))return t;var e=t;return fi(e,!1)||(e=We+\" \"+i+\" body \"+Ge),J(Ke,(t=>{var r,s;null!=(r=e)&&r.length&&-1!==(null==(s=e)?void 0:s.indexOf(t))&&(e=We+\" \"+i+\" body \"+Ge+\" as might contain: \"+t)})),e}var Ze=(t,i)=>{var e,r,s,n={payloadSizeLimitBytes:Je.payloadSizeLimitBytes,performanceEntryTypeToObserve:[...Je.performanceEntryTypeToObserve],payloadHostDenyList:[...i.payloadHostDenyList||[],...Je.payloadHostDenyList]},o=!1!==t.session_recording.recordHeaders&&i.recordHeaders,a=!1!==t.session_recording.recordBody&&i.recordBody,l=!1!==t.capture_performance&&i.recordPerformance,u=(e=n,s=Math.min(1e6,null!==(r=e.payloadSizeLimitBytes)&&void 0!==r?r:1e6),t=>(null!=t&&t.requestBody&&(t.requestBody=Xe(t.requestBody,t.requestHeaders,s,\"Request\")),null!=t&&t.responseBody&&(t.responseBody=Xe(t.responseBody,t.responseHeaders,s,\"Response\")),t)),h=i=>{return u(((t,i)=>{var e,r=Si(t.name),s=0===i.indexOf(\"http\")?null==(e=Si(i))?void 0:e.pathname:i;\"/\"===s&&(s=\"\");var n=null==r?void 0:r.pathname.replace(s||\"\",\"\");if(!(r&&n&&Ye.some((t=>0===n.indexOf(t)))))return t})((r=(e=i).requestHeaders,F(r)||J(Object.keys(null!=r?r:{}),(t=>{Ve.includes(t.toLowerCase())&&(r[t]=Ge)})),e),t.api_host));var e,r},d=E(t.session_recording.maskNetworkRequestFn);return d&&E(t.session_recording.maskCapturedNetworkRequestFn)&&N.warn(\"Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.\"),d&&(t.session_recording.maskCapturedNetworkRequestFn=i=>{var e=t.session_recording.maskNetworkRequestFn({url:i.name});return B({},i,{name:null==e?void 0:e.url})}),n.maskRequestFn=E(t.session_recording.maskCapturedNetworkRequestFn)?i=>{var e,r=h(i);return r&&null!==(e=null==t.session_recording.maskCapturedNetworkRequestFn?void 0:t.session_recording.maskCapturedNetworkRequestFn(r))&&void 0!==e?e:void 0}:t=>function(t){if(!R(t))return t.requestBody=Qe(t.requestBody,\"Request\"),t.responseBody=Qe(t.responseBody,\"Response\"),t}(h(t)),B({},Je,n,{recordHeaders:o,recordBody:a,recordPerformance:l,recordInitialRequests:l})};class tr{constructor(t,i){var e,r;void 0===i&&(i={}),this.yt={},this.wt=t=>{if(!this.yt[t]){var i,e;this.yt[t]=!0;var r=this.St(t);null==(i=(e=this.rt).onBlockedNode)||i.call(e,t,r)}},this.$t=t=>{var i=this.St(t);if(\"svg\"!==(null==i?void 0:i.nodeName)&&i instanceof Element){var e=i.closest(\"svg\");if(e)return[this._rrweb.mirror.getId(e),e]}return[t,i]},this.St=t=>this._rrweb.mirror.getNode(t),this.xt=t=>{var i,e,r,s,n,o,a,l;return(null!==(i=null==(e=t.removes)?void 0:e.length)&&void 0!==i?i:0)+(null!==(r=null==(s=t.attributes)?void 0:s.length)&&void 0!==r?r:0)+(null!==(n=null==(o=t.texts)?void 0:o.length)&&void 0!==n?n:0)+(null!==(a=null==(l=t.adds)?void 0:l.length)&&void 0!==a?a:0)},this.throttleMutations=t=>{if(3!==t.type||0!==t.data.source)return t;var i=t.data,e=this.xt(i);i.attributes&&(i.attributes=i.attributes.filter((t=>{var[i]=this.$t(t.id);return!this.ct.consumeRateLimit(i)&&t})));var r=this.xt(i);return 0!==r||e===r?t:void 0},this._rrweb=t,this.rt=i,this.ct=new oe({bucketSize:null!==(e=this.rt.bucketSize)&&void 0!==e?e:100,refillRate:null!==(r=this.rt.refillRate)&&void 0!==r?r:10,refillInterval:1e3,et:this.wt})}}var ir=Uint8Array,er=Uint16Array,rr=Uint32Array,sr=new ir([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]),nr=new ir([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]),or=new ir([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ar=function(t,i){for(var e=new er(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new rr(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]},lr=ar(sr,2),ur=lr[0],hr=lr[1];ur[28]=258,hr[258]=28;for(var dr=ar(nr,0)[1],vr=new er(32768),cr=0;cr<32768;++cr){var fr=(43690&cr)>>>1|(21845&cr)<<1;fr=(61680&(fr=(52428&fr)>>>2|(13107&fr)<<2))>>>4|(3855&fr)<<4,vr[cr]=((65280&fr)>>>8|(255&fr)<<8)>>>1}var pr=function(t,i,e){for(var r=t.length,s=0,n=new er(i);s<r;++s)++n[t[s]-1];var o,a=new er(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new er(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[vr[d]>>>l]=u}else for(o=new er(r),s=0;s<r;++s)o[s]=vr[a[t[s]-1]++]>>>15-t[s];return o},_r=new ir(288);for(cr=0;cr<144;++cr)_r[cr]=8;for(cr=144;cr<256;++cr)_r[cr]=9;for(cr=256;cr<280;++cr)_r[cr]=7;for(cr=280;cr<288;++cr)_r[cr]=8;var gr=new ir(32);for(cr=0;cr<32;++cr)gr[cr]=5;var mr=pr(_r,9,0),br=pr(gr,5,0),yr=function(t){return(t/8>>0)+(7&t&&1)},wr=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof er?er:t instanceof rr?rr:ir)(e-i);return r.set(t.subarray(i,e)),r},Sr=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},$r=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},xr=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 ir(0),0];if(1==s){var o=new ir(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 er(v+1),f=kr(e[h-1],c,0);if(f>i){r=0;var p=0,_=f-i,g=1<<_;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+=g-(1<<f-c[m]),c[m]=i}for(p>>>=_;p>0;){var b=n[r].s;c[b]<i?p-=1<<i-c[b]++-1:++r}for(;r>=0&&p;--r){var y=n[r].s;c[y]==i&&(--c[y],++p)}f=i}return[new ir(c),f]},kr=function(t,i,e){return-1==t.s?Math.max(kr(t.l,i,e+1),kr(t.r,i,e+1)):i[t.s]=e},Er=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new er(++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]},Ir=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Pr=function(t,i,e){var r=e.length,s=yr(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)},Rr=function(t,i,e,r,s,n,o,a,l,u,h){Sr(i,h++,e),++s[256];for(var d=xr(s,15),v=d[0],c=d[1],f=xr(n,15),p=f[0],_=f[1],g=Er(v),m=g[0],b=g[1],y=Er(p),w=y[0],S=y[1],$=new er(19),x=0;x<m.length;++x)$[31&m[x]]++;for(x=0;x<w.length;++x)$[31&w[x]]++;for(var k=xr($,7),E=k[0],I=k[1],P=19;P>4&&!E[or[P-1]];--P);var R,T,M,C,F=u+5<<3,O=Ir(s,_r)+Ir(n,gr)+o,A=Ir(s,v)+Ir(n,p)+o+14+3*P+Ir($,E)+(2*$[16]+3*$[17]+7*$[18]);if(F<=O&&F<=A)return Pr(i,h,t.subarray(l,l+u));if(Sr(i,h,1+(A<O)),h+=2,A<O){R=pr(v,c,0),T=v,M=pr(p,_,0),C=p;var D=pr(E,I,0);Sr(i,h,b-257),Sr(i,h+5,S-1),Sr(i,h+10,P-4),h+=14;for(x=0;x<P;++x)Sr(i,h+3*x,E[or[x]]);h+=3*P;for(var L=[m,w],j=0;j<2;++j){var N=L[j];for(x=0;x<N.length;++x){var z=31&N[x];Sr(i,h,D[z]),h+=E[z],z>15&&(Sr(i,h,N[x]>>>5&127),h+=N[x]>>>12)}}}else R=mr,T=_r,M=br,C=gr;for(x=0;x<a;++x)if(r[x]>255){z=r[x]>>>18&31;$r(i,h,R[z+257]),h+=T[z+257],z>7&&(Sr(i,h,r[x]>>>23&31),h+=sr[z]);var U=31&r[x];$r(i,h,M[U]),h+=C[U],U>3&&($r(i,h,r[x]>>>5&8191),h+=nr[U])}else $r(i,h,R[r[x]]),h+=T[r[x]];return $r(i,h,R[256]),h+T[256]},Tr=new rr([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Mr=function(){for(var t=new rr(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),Cr=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=Mr[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}},Fr=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new ir(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=Pr(l,u,t.subarray(h,d)):(l[h]=n,u=Pr(l,u,t.subarray(h,o)))}else{for(var v=Tr[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,_=new er(32768),g=new er(p+1),m=Math.ceil(e/3),b=2*m,y=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<b)&p},w=new rr(25e3),S=new er(288),$=new er(32),x=0,k=0,E=(h=0,0),I=0,P=0;h<o;++h){var R=y(h),T=32767&h,M=g[R];if(_[T]=M,g[R]=T,I<=h){var C=o-h;if((x>7e3||E>24576)&&C>423){u=Rr(t,l,0,w,S,$,k,E,P,h-P,u),E=x=k=0,P=h;for(var F=0;F<286;++F)S[F]=0;for(F=0;F<30;++F)$[F]=0}var O=2,A=0,D=f,L=T-M&32767;if(C>2&&R==y(h-L))for(var j=Math.min(c,C)-1,N=Math.min(32767,h),z=Math.min(258,C);L<=N&&--D&&T!=M;){if(t[h+O]==t[h+O-L]){for(var U=0;U<z&&t[h+U]==t[h+U-L];++U);if(U>O){if(O=U,A=L,U>j)break;var q=Math.min(L,U-2),B=0;for(F=0;F<q;++F){var H=h-L+F+32768&32767,W=H-_[H]+32768&32767;W>B&&(B=W,M=H)}}}L+=(T=M)-(M=_[T])+32768&32767}if(A){w[E++]=268435456|hr[O]<<18|dr[A];var G=31&hr[O],J=31&dr[A];k+=sr[G]+nr[J],++S[257+G],++$[J],I=h+O,++x}else w[E++]=t[h],++S[t[h]]}}u=Rr(t,l,n,w,S,$,k,E,P,h-P,u)}return wr(a,0,r+yr(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,!s)},Or=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8},Ar=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&&Or(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)}},Dr=function(t){return 10+(t.filename&&t.filename.length+1||0)};function Lr(t,i){void 0===i&&(i={});var e=Cr(),r=t.length;e.p(t);var s=Fr(t,i,Dr(i),8),n=s.length;return Ar(s,i),Or(s,n-8,e.d()),Or(s,n-4,r),s}function jr(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new ir(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 ir(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 wr(r,0,s)}function Nr(t,i){return function(t){for(var i=0,e=0;e<t.length;e++)i=(i<<5)-i+t.charCodeAt(e),i|=0;return Math.abs(i)}(t)%100<ne(100*i,0,100)}var zr=\"disabled\",Ur=\"sampled\",qr=\"active\",Br=\"buffering\",Hr=\"paused\",Wr=\"trigger\",Gr=Wr+\"_activated\",Jr=Wr+\"_pending\",Vr=Wr+\"_\"+zr;function Kr(t,i){return i.some((i=>\"regex\"===i.matching&&new RegExp(i.url).test(t)))}class Yr{constructor(t){this.kt=t}triggerStatus(t){var i=this.kt.map((i=>i.triggerStatus(t)));return i.includes(Gr)?Gr:i.includes(Jr)?Jr:Vr}stop(){this.kt.forEach((t=>t.stop()))}}class Xr{constructor(t){this.kt=t}triggerStatus(t){var i=new Set;for(var e of this.kt)i.add(e.triggerStatus(t));switch(i.delete(Vr),i.size){case 0:return Vr;case 1:return Array.from(i)[0];default:return Jr}}stop(){this.kt.forEach((t=>t.stop()))}}class Qr{triggerStatus(){return Jr}stop(){}}class Zr{constructor(t){this.Et=[],this.It=[],this.urlBlocked=!1,this._instance=t}onRemoteConfig(t){var i,e;this.Et=(null==(i=t.sessionRecording)?void 0:i.urlTriggers)||[],this.It=(null==(e=t.sessionRecording)?void 0:e.urlBlocklist)||[]}Pt(t){var i;return 0===this.Et.length?Vr:(null==(i=this._instance)?void 0:i.get_property(Et))===t?Gr:Jr}triggerStatus(t){var i=this.Pt(t),e=i===Gr?Gr:i===Jr?Jr:Vr;return this._instance.register_for_session({$sdk_debug_replay_url_trigger_status:e}),e}checkUrlTriggerConditions(i,e,r){if(void 0!==t&&t.location.href){var s=t.location.href,n=this.urlBlocked,o=Kr(s,this.It);n&&o||(o&&!n?i():!o&&n&&e(),Kr(s,this.Et)&&r(\"url\"))}}stop(){}}class ts{constructor(t){this.linkedFlag=null,this.linkedFlagSeen=!1,this.Rt=()=>{},this._instance=t}triggerStatus(){var t=Jr;return F(this.linkedFlag)&&(t=Vr),this.linkedFlagSeen&&(t=Gr),this._instance.register_for_session({$sdk_debug_replay_linked_flag_trigger_status:t}),t}onRemoteConfig(t,i){var e;if(this.linkedFlag=(null==(e=t.sessionRecording)?void 0:e.linkedFlag)||null,!F(this.linkedFlag)&&!this.linkedFlagSeen){var r=T(this.linkedFlag)?this.linkedFlag:this.linkedFlag.flag,s=T(this.linkedFlag)?null:this.linkedFlag.variant;this.Rt=this._instance.onFeatureFlags(((t,e)=>{var n=!1;if(I(e)&&r in e){var o=e[r];n=A(o)?!0===o:s?o===s:!!o}this.linkedFlagSeen=n,n&&i(r,s)}))}}stop(){this.Rt()}}class is{constructor(t){this.Tt=[],this._instance=t}onRemoteConfig(t){var i;this.Tt=(null==(i=t.sessionRecording)?void 0:i.eventTriggers)||[]}Mt(t){var i;return 0===this.Tt.length?Vr:(null==(i=this._instance)?void 0:i.get_property(It))===t?Gr:Jr}triggerStatus(t){var i=this.Mt(t),e=i===Gr?Gr:i===Jr?Jr:Vr;return this._instance.register_for_session({$sdk_debug_replay_event_trigger_status:e}),e}stop(){}}function es(t){return t.isRecordingEnabled?Br:zr}function rs(t){if(!t.receivedFlags)return Br;if(!t.isRecordingEnabled)return zr;if(t.urlTriggerMatching.urlBlocked)return Hr;var i=!0===t.isSampled,e=new Yr([t.eventTriggerMatching,t.urlTriggerMatching,t.linkedFlagMatching]).triggerStatus(t.sessionId);return i?Ur:e===Gr?qr:e===Jr?Br:!1===t.isSampled?zr:qr}function ss(t){if(!t.receivedFlags)return Br;if(!t.isRecordingEnabled)return zr;if(t.urlTriggerMatching.urlBlocked)return Hr;var i=new Xr([t.eventTriggerMatching,t.urlTriggerMatching,t.linkedFlagMatching]).triggerStatus(t.sessionId),e=i!==Vr,r=A(t.isSampled);return e&&i===Jr?Br:e&&i===Vr||r&&!t.isSampled?zr:!0===t.isSampled?Ur:qr}var ns=\"[SessionRecording]\",os=z(ns);function as(){var t;return null==v||null==(t=v.__PosthogExtensions__)||null==(t=t.rrweb)?void 0:t.record}var ls=3e5,us=[He.MouseMove,He.MouseInteraction,He.Scroll,He.ViewportResize,He.Input,He.TouchMove,He.MediaInteraction,He.Drag],hs=t=>({rrwebMethod:t,enqueuedAt:Date.now(),attempt:1});function ds(t){return function(t,i){for(var e=\"\",r=0;r<t.length;){var s=t[r++];s<128||i?e+=String.fromCharCode(s):s<224?e+=String.fromCharCode((31&s)<<6|63&t[r++]):s<240?e+=String.fromCharCode((15&s)<<12|(63&t[r++])<<6|63&t[r++]):(s=((15&s)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,e+=String.fromCharCode(55296|s>>10,56320|1023&s))}return e}(Lr(jr(JSON.stringify(t))),!0)}function vs(t){return t.type===Be.Custom&&\"sessionIdle\"===t.data.tag}class cs{get sessionId(){return this.Ct}get Ft(){return this._instance.config.session_recording.session_idle_threshold_ms||3e5}get started(){return this.Ot}get At(){if(!this._instance.sessionManager)throw new Error(ns+\" must be started with a valid sessionManager.\");return this._instance.sessionManager}get Dt(){var t,i;return this.Lt.triggerStatus(this.sessionId)===Jr?6e4:null!==(t=null==(i=this._instance.config.session_recording)?void 0:i.full_snapshot_interval_millis)&&void 0!==t?t:ls}get jt(){var t=this._instance.get_property(kt);return A(t)?t:null}get Nt(){var t,i,e=null==(t=this.C)?void 0:t.data[(null==(i=this.C)?void 0:i.data.length)-1],{sessionStartTimestamp:r}=this.At.checkAndGetSessionAndWindowId(!0);return e?e.timestamp-r:null}get zt(){var i=!!this._instance.get_property(_t),e=!this._instance.config.disable_session_recording;return t&&i&&e}get Ut(){var t=!!this._instance.get_property(gt),i=this._instance.config.enable_recording_console_log;return null!=i?i:t}get qt(){var t,i,e,r,s,n,o=this._instance.config.session_recording.captureCanvas,a=this._instance.get_property(yt),l=null!==(t=null!==(i=null==o?void 0:o.recordCanvas)&&void 0!==i?i:null==a?void 0:a.enabled)&&void 0!==t&&t,u=null!==(e=null!==(r=null==o?void 0:o.canvasFps)&&void 0!==r?r:null==a?void 0:a.fps)&&void 0!==e?e:4,h=null!==(s=null!==(n=null==o?void 0:o.canvasQuality)&&void 0!==n?n:null==a?void 0:a.quality)&&void 0!==s?s:.4;if(\"string\"==typeof h){var d=parseFloat(h);h=isNaN(d)?.4:d}return{enabled:l,fps:ne(u,0,12,\"canvas recording fps\",4),quality:ne(h,0,1,\"canvas recording quality\",.4)}}get Bt(){var t,i,e=this._instance.get_property(mt),r={recordHeaders:null==(t=this._instance.config.session_recording)?void 0:t.recordHeaders,recordBody:null==(i=this._instance.config.session_recording)?void 0:i.recordBody},s=(null==r?void 0:r.recordHeaders)||(null==e?void 0:e.recordHeaders),n=(null==r?void 0:r.recordBody)||(null==e?void 0:e.recordBody),o=I(this._instance.config.capture_performance)?this._instance.config.capture_performance.network_timing:this._instance.config.capture_performance,a=!!(A(o)?o:null==e?void 0:e.capturePerformance);return s||n||a?{recordHeaders:s,recordBody:n,recordPerformance:a}:void 0}get Ht(){var t,i,e,r,s,n,o=this._instance.get_property(bt),a={maskAllInputs:null==(t=this._instance.config.session_recording)?void 0:t.maskAllInputs,maskTextSelector:null==(i=this._instance.config.session_recording)?void 0:i.maskTextSelector,blockSelector:null==(e=this._instance.config.session_recording)?void 0:e.blockSelector},l=null!==(r=null==a?void 0:a.maskAllInputs)&&void 0!==r?r:null==o?void 0:o.maskAllInputs,u=null!==(s=null==a?void 0:a.maskTextSelector)&&void 0!==s?s:null==o?void 0:o.maskTextSelector,h=null!==(n=null==a?void 0:a.blockSelector)&&void 0!==n?n:null==o?void 0:o.blockSelector;return R(l)&&R(u)&&R(h)?void 0:{maskAllInputs:null==l||l,maskTextSelector:u,blockSelector:h}}get Wt(){var t=this._instance.get_property(wt);return O(t)?t:null}get Gt(){var t=this._instance.get_property(St);return O(t)?t:null}get status(){return this.Jt?this.Vt({receivedFlags:this.Jt,isRecordingEnabled:this.zt,isSampled:this.jt,urlTriggerMatching:this.Kt,eventTriggerMatching:this.Yt,linkedFlagMatching:this.Xt,sessionId:this.sessionId}):Br}constructor(t){if(this.Vt=es,this.Jt=!1,this.Qt=[],this.Zt=\"unknown\",this.ti=Date.now(),this.Lt=new Qr,this.ii=void 0,this.ei=void 0,this.ri=void 0,this.si=void 0,this.ni=void 0,this._forceAllowLocalhostNetworkCapture=!1,this.oi=()=>{this.ai()},this.li=()=>{this.ui(\"browser offline\",{})},this.hi=()=>{this.ui(\"browser online\",{})},this.di=()=>{if(null!=o&&o.visibilityState){var t=\"window \"+o.visibilityState;this.ui(t,{})}},this._instance=t,this.Ot=!1,this.vi=\"/s/\",this.ci=void 0,this.Jt=!1,!this._instance.sessionManager)throw os.error(\"started without valid sessionManager\"),new Error(ns+\" started without valid sessionManager. This is a bug.\");if(this._instance.config.__preview_experimental_cookieless_mode)throw new Error(ns+\" cannot be used with __preview_experimental_cookieless_mode.\");this.Xt=new ts(this._instance),this.Kt=new Zr(this._instance),this.Yt=new is(this._instance);var{sessionId:i,windowId:e}=this.At.checkAndGetSessionAndWindowId();this.Ct=i,this.fi=e,this.C=this.pi(),this.Ft>=this.At.sessionTimeoutMs&&os.warn(\"session_idle_threshold_ms (\"+this.Ft+\") is greater than the session timeout (\"+this.At.sessionTimeoutMs+\"). Session will never be detected as idle\")}startIfEnabledOrStop(i){this.zt?(this.gi(i),st(t,\"beforeunload\",this.oi),st(t,\"offline\",this.li),st(t,\"online\",this.hi),st(t,\"visibilitychange\",this.di),this.mi(),this.bi(),F(this.ii)&&(this.ii=this._instance.on(\"eventCaptured\",(t=>{try{if(\"$pageview\"===t.event){var i=null!=t&&t.properties.$current_url?this.yi(null==t?void 0:t.properties.$current_url):\"\";if(!i)return;this.ui(\"$pageview\",{href:i})}}catch(t){os.error(\"Could not add $pageview to rrweb session\",t)}}))),this.ei||(this.ei=this.At.onSessionId(((t,i,e)=>{var r,s;e&&(this.ui(\"$session_id_change\",{sessionId:t,windowId:i,changeReason:e}),null==(r=this._instance)||null==(r=r.persistence)||r.unregister(It),null==(s=this._instance)||null==(s=s.persistence)||s.unregister(Et))})))):this.stopRecording()}stopRecording(){var i,e,r,s;this.Ot&&this.ci&&(this.ci(),this.ci=void 0,this.Ot=!1,null==t||t.removeEventListener(\"beforeunload\",this.oi),null==t||t.removeEventListener(\"offline\",this.li),null==t||t.removeEventListener(\"online\",this.hi),null==t||t.removeEventListener(\"visibilitychange\",this.di),this.pi(),clearInterval(this.wi),null==(i=this.ii)||i.call(this),this.ii=void 0,null==(e=this.ni)||e.call(this),this.ni=void 0,null==(r=this.ei)||r.call(this),this.ei=void 0,null==(s=this.si)||s.call(this),this.si=void 0,this.Yt.stop(),this.Kt.stop(),this.Xt.stop(),os.info(\"stopped\"))}Si(){var t;null==(t=this._instance.persistence)||t.unregister(kt)}$i(t){var i,e=this.Ct!==t,r=this.Wt;if(O(r)){var s=this.jt,n=e||!A(s),o=n?Nr(t,r):s;n&&(o?this.xi(Ur):os.warn(\"Sample rate (\"+r+\") has determined that this sessionId (\"+t+\") will not be sent to the server.\"),this.ui(\"samplingDecisionMade\",{sampleRate:r,isSampled:o})),null==(i=this._instance.persistence)||i.register({[kt]:o})}else this.Si()}onRemoteConfig(t){var i,e,r,s;(this.ui(\"$remote_config_received\",t),this.ki(t),null!=(i=t.sessionRecording)&&i.endpoint)&&(this.vi=null==(s=t.sessionRecording)?void 0:s.endpoint);this.mi(),\"any\"===(null==(e=t.sessionRecording)?void 0:e.triggerMatchType)?(this.Vt=rs,this.Lt=new Yr([this.Yt,this.Kt])):(this.Vt=ss,this.Lt=new Xr([this.Yt,this.Kt])),this._instance.register_for_session({$sdk_debug_replay_remote_trigger_matching_config:null==(r=t.sessionRecording)?void 0:r.triggerMatchType}),this.Kt.onRemoteConfig(t),this.Yt.onRemoteConfig(t),this.Xt.onRemoteConfig(t,((t,i)=>{this.xi(\"linked_flag_matched\",{flag:t,variant:i})})),this.Jt=!0,this.startIfEnabledOrStop()}mi(){O(this.Wt)&&F(this.si)&&(this.si=this.At.onSessionId((t=>{this.$i(t)})))}ki(t){if(this._instance.persistence){var i,e=this._instance.persistence,r=()=>{var i,r,s,n,o,a,l,u,h,d=null==(i=t.sessionRecording)?void 0:i.sampleRate,v=F(d)?null:parseFloat(d);F(v)&&this.Si();var c=null==(r=t.sessionRecording)?void 0:r.minimumDurationMilliseconds;e.register({[_t]:!!t.sessionRecording,[gt]:null==(s=t.sessionRecording)?void 0:s.consoleLogRecordingEnabled,[mt]:B({capturePerformance:t.capturePerformance},null==(n=t.sessionRecording)?void 0:n.networkPayloadCapture),[bt]:null==(o=t.sessionRecording)?void 0:o.masking,[yt]:{enabled:null==(a=t.sessionRecording)?void 0:a.recordCanvas,fps:null==(l=t.sessionRecording)?void 0:l.canvasFps,quality:null==(u=t.sessionRecording)?void 0:u.canvasQuality},[wt]:v,[St]:R(c)?null:c,[$t]:null==(h=t.sessionRecording)?void 0:h.scriptConfig})};r(),null==(i=this.ri)||i.call(this),this.ri=this.At.onSessionId(r)}}log(t,i){var e;void 0===i&&(i=\"log\"),null==(e=this._instance.sessionRecording)||e.onRRwebEmit({type:6,data:{plugin:\"rrweb/console@1\",payload:{level:i,trace:[],payload:[JSON.stringify(t)]}},timestamp:Date.now()})}gi(t){if(!R(Object.assign)&&!R(Array.from)&&!(this.Ot||this._instance.config.disable_session_recording||this._instance.consent.isOptedOut())){var i;if(this.Ot=!0,this.At.checkAndGetSessionAndWindowId(),as())this.Ei();else null==(i=v.__PosthogExtensions__)||null==i.loadExternalDependency||i.loadExternalDependency(this._instance,this.Ii,(t=>{if(t)return os.error(\"could not load recorder\",t);this.Ei()}));os.info(\"starting\"),this.status===qr&&this.xi(t||\"recording_initialized\")}}get Ii(){var t;return(null==(t=this._instance)||null==(t=t.persistence)||null==(t=t.get_property($t))?void 0:t.script)||\"recorder\"}Pi(t){var i;return 3===t.type&&-1!==us.indexOf(null==(i=t.data)?void 0:i.source)}Ri(t){var i=this.Pi(t);i||this.Zt||t.timestamp-this.ti>this.Ft&&(this.Zt=!0,clearInterval(this.wi),this.ui(\"sessionIdle\",{eventTimestamp:t.timestamp,lastActivityTimestamp:this.ti,threshold:this.Ft,bufferLength:this.C.data.length,bufferSize:this.C.size}),this.ai());var e=!1;if(i&&(this.ti=t.timestamp,this.Zt)){var r=\"unknown\"===this.Zt;this.Zt=!1,r||(this.ui(\"sessionNoLongerIdle\",{reason:\"user activity\",type:t.type}),e=!0)}if(!this.Zt){var{windowId:s,sessionId:n}=this.At.checkAndGetSessionAndWindowId(!i,t.timestamp),o=this.Ct!==n,a=this.fi!==s;this.fi=s,this.Ct=n,o||a?(this.stopRecording(),this.startIfEnabledOrStop(\"session_id_changed\")):e&&this.Ti()}}Mi(t){try{return t.rrwebMethod(),!0}catch(i){return this.Qt.length<10?this.Qt.push({enqueuedAt:t.enqueuedAt||Date.now(),attempt:t.attempt++,rrwebMethod:t.rrwebMethod}):os.warn(\"could not emit queued rrweb event.\",i,t),!1}}ui(t,i){return this.Mi(hs((()=>as().addCustomEvent(t,i))))}Ci(){return this.Mi(hs((()=>as().takeFullSnapshot())))}Ei(){var t,i,e,r,s={blockClass:\"ph-no-capture\",blockSelector:void 0,ignoreClass:\"ph-ignore-input\",maskTextClass:\"ph-mask\",maskTextSelector:void 0,maskTextFn:void 0,maskAllInputs:!0,maskInputOptions:{password:!0},maskInputFn:void 0,slimDOMOptions:{},collectFonts:!1,inlineStylesheet:!0,recordCrossOriginIframes:!1},n=this._instance.config.session_recording;for(var[o,a]of Object.entries(n||{}))o in s&&(\"maskInputOptions\"===o?s.maskInputOptions=B({password:!0},a):s[o]=a);(this.qt&&this.qt.enabled&&(s.recordCanvas=!0,s.sampling={canvas:this.qt.fps},s.dataURLOptions={type:\"image/webp\",quality:this.qt.quality}),this.Ht)&&(s.maskAllInputs=null===(i=this.Ht.maskAllInputs)||void 0===i||i,s.maskTextSelector=null!==(e=this.Ht.maskTextSelector)&&void 0!==e?e:void 0,s.blockSelector=null!==(r=this.Ht.blockSelector)&&void 0!==r?r:void 0);var l=as();if(l){this.Fi=null!==(t=this.Fi)&&void 0!==t?t:new tr(l,{refillRate:this._instance.config.session_recording.__mutationThrottlerRefillRate,bucketSize:this._instance.config.session_recording.__mutationThrottlerBucketSize,onBlockedNode:(t,i)=>{var e=\"Too many mutations on node '\"+t+\"'. Rate limiting. This could be due to SVG animations or something similar\";os.info(e,{node:i}),this.log(ns+\" \"+e,\"warn\")}});var u=this.Oi();this.ci=l(B({emit:t=>{this.onRRwebEmit(t)},plugins:u},s)),this.ti=Date.now(),this.Zt=A(this.Zt)?this.Zt:\"unknown\",this.ui(\"$session_options\",{sessionRecordingOptions:s,activePlugins:u.map((t=>null==t?void 0:t.name))}),this.ui(\"$posthog_config\",{config:this._instance.config})}else os.error(\"onScriptLoaded was called but rrwebRecord is not available. This indicates something has gone wrong.\")}Ti(){if(this.wi&&clearInterval(this.wi),!0!==this.Zt){var t=this.Dt;t&&(this.wi=setInterval((()=>{this.Ci()}),t))}}Oi(){var t,i,e=[],r=null==(t=v.__PosthogExtensions__)||null==(t=t.rrwebPlugins)?void 0:t.getRecordConsolePlugin;r&&this.Ut&&e.push(r());var s=null==(i=v.__PosthogExtensions__)||null==(i=i.rrwebPlugins)?void 0:i.getRecordNetworkPlugin;this.Bt&&E(s)&&(!wi.includes(location.hostname)||this._forceAllowLocalhostNetworkCapture?e.push(s(Ze(this._instance.config,this.Bt))):os.info(\"NetworkCapture not started because we are on localhost.\"));return e}onRRwebEmit(t){var i;if(this.Ai(),t&&I(t)){if(t.type===Be.Meta){var e=this.yi(t.data.href);if(this.Di=e,!e)return;t.data.href=e}else this.Li();if(this.Kt.checkUrlTriggerConditions((()=>this.ji()),(()=>this.Ni()),(t=>this.zi(t))),!this.Kt.urlBlocked||(r=t).type===Be.Custom&&\"recording paused\"===r.data.tag){var r;t.type===Be.FullSnapshot&&this.Ti(),t.type===Be.FullSnapshot&&this.Jt&&this.Lt.triggerStatus(this.sessionId)===Jr&&this.pi();var s=this.Fi?this.Fi.throttleMutations(t):t;if(s){var n=function(t){var i=t;if(i&&I(i)&&6===i.type&&I(i.data)&&\"rrweb/console@1\"===i.data.plugin){i.data.payload.payload.length>10&&(i.data.payload.payload=i.data.payload.payload.slice(0,10),i.data.payload.payload.push(\"...[truncated]\"));for(var e=[],r=0;r<i.data.payload.payload.length;r++)i.data.payload.payload[r]&&i.data.payload.payload[r].length>2e3?e.push(i.data.payload.payload[r].slice(0,2e3)+\"...[truncated]\"):e.push(i.data.payload.payload[r]);return i.data.payload.payload=e,t}return t}(s);if(this.Ri(n),!0!==this.Zt||vs(n)){if(vs(n)){var o=n.data.payload;if(o){var a=o.lastActivityTimestamp,l=o.threshold;n.timestamp=a+l}}var u=null===(i=this._instance.config.session_recording.compress_events)||void 0===i||i?function(t){if(Ue(t)<1024)return t;try{if(t.type===Be.FullSnapshot)return B({},t,{data:ds(t.data),cv:\"2024-10\"});if(t.type===Be.IncrementalSnapshot&&t.data.source===He.Mutation)return B({},t,{cv:\"2024-10\",data:B({},t.data,{texts:ds(t.data.texts),attributes:ds(t.data.attributes),removes:ds(t.data.removes),adds:ds(t.data.adds)})});if(t.type===Be.IncrementalSnapshot&&t.data.source===He.StyleSheetRule)return B({},t,{cv:\"2024-10\",data:B({},t.data,{adds:t.data.adds?ds(t.data.adds):void 0,removes:t.data.removes?ds(t.data.removes):void 0})})}catch(t){os.error(\"could not compress event - will use uncompressed event\",t)}return t}(n):n,h={$snapshot_bytes:Ue(u),$snapshot_data:u,$session_id:this.Ct,$window_id:this.fi};this.status!==zr?this.Ui(h):this.pi()}}}}}Li(){if(!this._instance.config.capture_pageview&&t){var i=this.yi(t.location.href);this.Di!==i&&(this.ui(\"$url_changed\",{href:i}),this.Di=i)}}Ai(){if(this.Qt.length){var t=[...this.Qt];this.Qt=[],t.forEach((t=>{Date.now()-t.enqueuedAt<=2e3&&this.Mi(t)}))}}yi(t){var i=this._instance.config.session_recording;if(i.maskNetworkRequestFn){var e,r={url:t};return null==(e=r=i.maskNetworkRequestFn(r))?void 0:e.url}return t}pi(){return this.C={size:0,data:[],sessionId:this.Ct,windowId:this.fi},this.C}ai(){this.qi&&(clearTimeout(this.qi),this.qi=void 0);var t=this.Gt,i=this.Nt,e=O(i)&&i>=0,r=O(t)&&e&&i<t;if(this.status===Br||this.status===Hr||this.status===zr||r)return this.qi=setTimeout((()=>{this.ai()}),2e3),this.C;this.C.data.length>0&&qe(this.C).forEach((t=>{this.Bi({$snapshot_bytes:t.size,$snapshot_data:t.data,$session_id:t.sessionId,$window_id:t.windowId,$lib:\"web\",$lib_version:c.LIB_VERSION})}));return this.pi()}Ui(t){var i,e=2+((null==(i=this.C)?void 0:i.data.length)||0);!this.Zt&&(this.C.size+t.$snapshot_bytes+e>943718.4||this.C.sessionId!==this.Ct)&&(this.C=this.ai()),this.C.size+=t.$snapshot_bytes,this.C.data.push(t.$snapshot_data),this.qi||this.Zt||(this.qi=setTimeout((()=>{this.ai()}),2e3))}Bi(t){this._instance.capture(\"$snapshot\",t,{_url:this._instance.requestRouter.endpointFor(\"api\",this.vi),_noTruncate:!0,_batchKey:\"recordings\",skip_client_rate_limiting:!0})}zi(t){var i;this.Lt.triggerStatus(this.sessionId)===Jr&&(null==(i=this._instance)||null==(i=i.persistence)||i.register({[\"url\"===t?Et:It]:this.Ct}),this.ai(),this.xi(t+\"_trigger_matched\"))}ji(){this.Kt.urlBlocked||(this.Kt.urlBlocked=!0,clearInterval(this.wi),os.info(\"recording paused due to URL blocker\"),this.ui(\"recording paused\",{reason:\"url blocker\"}))}Ni(){this.Kt.urlBlocked&&(this.Kt.urlBlocked=!1,this.Ci(),this.Ti(),this.ui(\"recording resumed\",{reason:\"left blocked url\"}),os.info(\"recording resumed\"))}bi(){0!==this.Yt.Tt.length&&F(this.ni)&&(this.ni=this._instance.on(\"eventCaptured\",(t=>{try{this.Yt.Tt.includes(t.event)&&this.zi(\"event\")}catch(t){os.error(\"Could not activate event trigger\",t)}})))}overrideLinkedFlag(){this.Xt.linkedFlagSeen=!0,this.Ci(),this.xi(\"linked_flag_overridden\")}overrideSampling(){var t;null==(t=this._instance.persistence)||t.register({[kt]:!0}),this.Ci(),this.xi(\"sampling_overridden\")}overrideTrigger(t){this.zi(t)}xi(t,i){this._instance.register_for_session({$session_recording_start_reason:t}),os.info(t.replace(\"_\",\" \"),i),m([\"recording_initialized\",\"session_id_changed\"],t)||this.ui(t,i)}get sdkDebugProperties(){var{sessionStartTimestamp:t}=this.At.checkAndGetSessionAndWindowId(!0);return{$recording_status:this.status,$sdk_debug_replay_internal_buffer_length:this.C.data.length,$sdk_debug_replay_internal_buffer_size:this.C.size,$sdk_debug_current_session_duration:this.Nt,$sdk_debug_session_start:t}}}var fs=z(\"[SegmentIntegration]\");function ps(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()||Ni();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(Dt,\"identified\")),i()},s=e.user();\"then\"in s&&E(s.then)?s.then((t=>r(t))):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||fs.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()||(fs.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(fs.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 _s=\"posthog-js\";function gs(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"]}=void 0===i?{}:i;return i=>{var o,a,l,u,h;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var d=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=d,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var v=(null==(o=i.exception)?void 0:o.values)||[],c=v.map((t=>B({},t,{stacktrace:t.stacktrace?B({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>B({},t,{platform:\"web:javascript\"})))}):void 0}))),f={$exception_message:(null==(a=v[0])?void 0:a.value)||i.message,$exception_type:null==(l=v[0])?void 0:l.type,$exception_personURL:d,$exception_level:i.level,$exception_list:c,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(u=v[0])?void 0:u.value)||i.message,$sentry_exception_type:null==(h=v[0])?void 0:h.type,$sentry_tags:i.tags};return e&&r&&(f.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),t.exceptions.sendExceptionEvent(f),i}}class ms{constructor(t,i,e,r,s){this.name=_s,this.setupOnce=function(n){n(gs(t,{organization:i,projectId:e,prefix:r,severityAllowList:s}))}}}var bs=null!=t&&t.location?Ei(t.location.hash,\"__posthog\")||Ei(location.hash,\"state\"):null,ys=\"_postHogToolbarParams\",ws=z(\"[Toolbar]\"),Ss=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(Ss||{});class $s{constructor(t){this.instance=t}Hi(t){v.ph_toolbar_state=t}Wi(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:Ss.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=bs||Ei(i.hash,\"__posthog\")||Ei(i.hash,\"state\"),a=n?X((()=>JSON.parse(atob(decodeURIComponent(n)))))||X((()=>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(ys)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}Gi(t){var i=v.ph_load_toolbar||v.ph_load_editor;!F(i)&&E(i)?i(t,this.instance):ws.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(Bt));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=B({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(ys,JSON.stringify(B({},s,{source:void 0}))),this.Wi()===Ss.LOADED)this.Gi(s);else if(this.Wi()===Ss.UNINITIALIZED){var n;this.Hi(Ss.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return ws.error(\"[Toolbar] Failed to load\",t),void this.Hi(Ss.UNINITIALIZED);this.Hi(Ss.LOADED),this.Gi(s)})),st(t,\"turbolinks:load\",(()=>{this.Hi(Ss.UNINITIALIZED),this.loadToolbar(s)}))}return!0}Ji(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 xs=z(\"[TracingHeaders]\");class ks{constructor(t){this.Vi=void 0,this.Ki=void 0,this.nt=()=>{var t,i;R(this.Vi)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));R(this.Ki)&&(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}J(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 xs.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.J(this.nt):(null==(t=this.Vi)||t.call(this),null==(i=this.Ki)||i.call(this),this.Vi=void 0,this.Ki=void 0)}}var Es=z(\"[Web Vitals]\"),Is=9e5;class Ps{constructor(t){var i;this.Yi=!1,this.i=!1,this.C={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Xi=()=>{clearTimeout(this.Qi),0!==this.C.metrics.length&&(this._instance.capture(\"$web_vitals\",this.C.metrics.reduce(((t,i)=>B({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:B({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.C={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.Zi=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(R(e))Es.error(\"Could not read session ID. Dropping metrics!\");else{this.C=this.C||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.te();if(!R(r))if(F(null==t?void 0:t.name)||F(null==t?void 0:t.value))Es.error(\"Invalid metric received\",t);else if(this.ie&&t.value>=this.ie)Es.error(\"Ignoring metric with value >= \"+this.ie,t);else this.C.url!==r&&(this.Xi(),this.Qi=setTimeout(this.Xi,this.flushToCaptureTimeoutMs)),R(this.C.url)&&(this.C.url=r),this.C.firstMetricTimestamp=R(this.C.firstMetricTimestamp)?Date.now():this.C.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.C.metrics.push(B({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.C.metrics.length===this.allowedMetrics.length&&this.Xi()}},this.nt=()=>{var t,i,e,r,s=v.__PosthogExtensions__;R(s)||R(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.Zi.bind(this)),this.i=!0):Es.error(\"web vitals callbacks not loaded - not starting\")},this._instance=t,this.Yi=!(null==(i=this._instance.persistence)||!i.props[ct]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=I(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return R(e)?(null==(i=this._instance.persistence)?void 0:i.props[pt])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(I(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get ie(){var t=I(this._instance.config.capture_performance)&&O(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:Is;return 0<t&&t<=6e4?Is:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return Es.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=I(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:A(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return A(i)?i:this.Yi}startIfEnabled(){this.isEnabled&&!this.i&&(Es.info(\"enabled, starting...\"),this.J(this.nt))}onRemoteConfig(t){var i=I(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=I(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[ct]:i}),this._instance.persistence.register({[pt]:e})),this.Yi=i,this.startIfEnabled()}J(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?Es.error(\"failed to load script\",i):t()}))}te(){var i=t?t.location.href:void 0;return i||Es.error(\"Could not determine current URL\"),i}}var Rs=z(\"[Heatmaps]\");function Ts(t){return I(t)&&\"clientX\"in t&&\"clientY\"in t&&O(t.clientX)&&O(t.clientY)}class Ms{constructor(t){var i;this.rageclicks=new yi,this.Yi=!1,this.i=!1,this.ee=null,this.instance=t,this.Yi=!(null==(i=this.instance.persistence)||!i.props[ut])}get flushIntervalMilliseconds(){var t=5e3;return I(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 R(this.instance.config.capture_heatmaps)?R(this.instance.config.enable_heatmaps)?this.Yi:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.i)return;Rs.info(\"starting...\"),this.re(),this.ee=setInterval(this.se.bind(this),this.flushIntervalMilliseconds)}else{var t,i;clearInterval(null!==(t=this.ee)&&void 0!==t?t:void 0),null==(i=this.ne)||i.stop(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ut]:i}),this.Yi=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.C;return this.C=void 0,t}oe(t){this.ae(t.originalEvent,\"deadclick\")}re(){t&&o&&(st(t,\"beforeunload\",this.se.bind(this)),st(o,\"click\",(i=>this.ae(i||(null==t?void 0:t.event))),{capture:!0}),st(o,\"mousemove\",(i=>this.le(i||(null==t?void 0:t.event))),{capture:!0}),this.ne=new se(this.instance,ee,this.oe.bind(this)),this.ne.startIfEnabled(),this.i=!0)}ue(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&&Jt(s)&&!Vt(s,\"body\");){if(s===r)return!1;if(m(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=si(s)}return!1}(ei(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}ae(t,i){var e;if(void 0===i&&(i=\"click\"),!Gt(t.target)&&Ts(t)){var r=this.ue(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.he(B({},r,{type:\"rageclick\"})),this.he(r)}}le(t){!Gt(t.target)&&Ts(t)&&(clearTimeout(this.de),this.de=setTimeout((()=>{this.he(this.ue(t,\"mousemove\"))}),500))}he(i){if(t){var e=t.location.href;this.C=this.C||{},this.C[e]||(this.C[e]=[]),this.C[e].push(i)}}se(){this.C&&!P(this.C)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class Cs{constructor(t){this._instance=t}doPageView(i,e){var r,s=this.ve(i,e);return this.ce={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.ve(t,null==(i=this.ce)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.ce)?void 0:t.pageViewId}}ve(t,i){var e=this.ce;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(!(R(n)||R(o)||R(a)||R(l)||R(u)||R(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:ne(o/n,0,1),v=n<=1?1:ne(a/n,0,1),c=l<=1?1:ne(u/l,0,1),f=l<=1?1:ne(h/l,0,1);r=V(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 Fs=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),C(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},Os=!!u||!!l,As=\"text/plain\",Ds=(t,i)=>{var[e,r]=t.split(\"?\"),s=B({},i);null==r||r.split(\"&\").forEach((t=>{var[i]=t.split(\"=\");delete s[i]}));var n=$i(s);return e+\"?\"+(n=n?(r?r+\"&\":\"\")+n:r)},Ls=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),js=t=>{var{data:i,compression:e}=t;if(i){if(e===_.GZipJS){var r=Lr(jr(Ls(i)),{mtime:0}),s=new Blob([r],{type:As});return{contentType:As,body:s,estimatedSize:s.size}}if(e===_.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=Fs(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}(Ls(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:Ls(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=Ls(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},Ns=[];l&&Ns.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=js(t))&&void 0!==i?i:{},o=new Headers;J(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,B({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){N.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{N.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&Ns.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=js(t))&&void 0!==i?i:{};J(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),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&&Ns.push({transport:\"sendBeacon\",method:t=>{var i=Ds(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=js(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var zs=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 Us(t,i,e){return Ls({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var qs={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=>zs(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!zs(i,t))))),icontains:(t,i)=>i.map(Bs).some((i=>t.map(Bs).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(Bs).every((i=>t.map(Bs).every((t=>!i.includes(t)))))},Bs=t=>t.toLowerCase(),Hs=z(\"[Error tracking]\");class Ws{constructor(t){var i,e;this.fe=[],this._instance=t,this.fe=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(dt))&&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.fe=s,this._instance.persistence&&this._instance.persistence.register({[dt]:this.fe,[vt]:n})}get pe(){var t,i=!!this._instance.get_property(vt),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}sendExceptionEvent(t){if(this._e(t))Hs.info(\"Skipping exception capture because a suppression rule matched\");else{if(this.pe||!this.ge(t))return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"});Hs.info(\"Skipping exception capture because it was thrown by an extension\")}}_e(t){var i=t.$exception_list;if(!i||!k(i)||0===i.length)return!1;var e=i.reduce(((t,i)=>{var{type:e,value:r}=i;return T(e)&&e.length>0&&t.$exception_types.push(e),T(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.fe.some((t=>{var i=t.values.map((t=>{var i,r=qs[t.operator],s=k(t.value)?t.value:[t.value],n=null!==(i=e[t.key])&&void 0!==i?i:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?i.some(Boolean):i.every(Boolean)}))}ge(t){var i=t.$exception_list;return!(!i||!k(i))&&i.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://\")))}}var Gs=\"Mobile\",Js=\"iOS\",Vs=\"Android\",Ks=\"Tablet\",Ys=Vs+\" \"+Ks,Xs=\"iPad\",Qs=\"Apple\",Zs=Qs+\" Watch\",tn=\"Safari\",en=\"BlackBerry\",rn=\"Samsung\",sn=rn+\"Browser\",nn=rn+\" Internet\",on=\"Chrome\",an=on+\" OS\",ln=on+\" \"+Js,un=\"Internet Explorer\",hn=un+\" \"+Gs,dn=\"Opera\",vn=dn+\" Mini\",cn=\"Edge\",fn=\"Microsoft \"+cn,pn=\"Firefox\",_n=pn+\" \"+Js,gn=\"Nintendo\",mn=\"PlayStation\",bn=\"Xbox\",yn=Vs+\" \"+Gs,wn=Gs+\" \"+tn,Sn=\"Windows\",$n=Sn+\" Phone\",xn=\"Nokia\",kn=\"Ouya\",En=\"Generic\",In=En+\" \"+Gs.toLowerCase(),Pn=En+\" \"+Ks.toLowerCase(),Rn=\"Konqueror\",Tn=\"(\\\\d+(\\\\.\\\\d+)?)\",Mn=new RegExp(\"Version/\"+Tn),Cn=new RegExp(bn,\"i\"),Fn=new RegExp(mn+\" \\\\w+\",\"i\"),On=new RegExp(gn+\" \\\\w+\",\"i\"),An=new RegExp(en+\"|PlayBook|BB10\",\"i\"),Dn={\"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 Ln=(t,i)=>i&&m(i,Qs)||function(t){return m(t,tn)&&!m(t,on)&&!m(t,Vs)}(t),jn=function(t,i){return i=i||\"\",m(t,\" OPR/\")&&m(t,\"Mini\")?vn:m(t,\" OPR/\")?dn:An.test(t)?en:m(t,\"IE\"+Gs)||m(t,\"WPDesktop\")?hn:m(t,sn)?nn:m(t,cn)||m(t,\"Edg/\")?fn:m(t,\"FBIOS\")?\"Facebook \"+Gs:m(t,\"UCWEB\")||m(t,\"UCBrowser\")?\"UC Browser\":m(t,\"CriOS\")?ln:m(t,\"CrMo\")||m(t,on)?on:m(t,Vs)&&m(t,tn)?yn:m(t,\"FxiOS\")?_n:m(t.toLowerCase(),Rn.toLowerCase())?Rn:Ln(t,i)?m(t,Gs)?wn:tn:m(t,pn)?pn:m(t,\"MSIE\")||m(t,\"Trident/\")?un:m(t,\"Gecko\")?pn:\"\"},Nn={[hn]:[new RegExp(\"rv:\"+Tn)],[fn]:[new RegExp(cn+\"?\\\\/\"+Tn)],[on]:[new RegExp(\"(\"+on+\"|CrMo)\\\\/\"+Tn)],[ln]:[new RegExp(\"CriOS\\\\/\"+Tn)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Tn)],[tn]:[Mn],[wn]:[Mn],[dn]:[new RegExp(\"(Opera|OPR)\\\\/\"+Tn)],[pn]:[new RegExp(pn+\"\\\\/\"+Tn)],[_n]:[new RegExp(\"FxiOS\\\\/\"+Tn)],[Rn]:[new RegExp(\"Konqueror[:/]?\"+Tn,\"i\")],[en]:[new RegExp(en+\" \"+Tn),Mn],[yn]:[new RegExp(\"android\\\\s\"+Tn,\"i\")],[nn]:[new RegExp(sn+\"\\\\/\"+Tn)],[un]:[new RegExp(\"(rv:|MSIE )\"+Tn)],Mozilla:[new RegExp(\"rv:\"+Tn)]},zn=function(t,i){var e=jn(t,i),r=Nn[e];if(R(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},Un=[[new RegExp(bn+\"; \"+bn+\" (.*?)[);]\",\"i\"),t=>[bn,t&&t[1]||\"\"]],[new RegExp(gn,\"i\"),[gn,\"\"]],[new RegExp(mn,\"i\"),[mn,\"\"]],[An,[en,\"\"]],[new RegExp(Sn,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[$n,\"\"];if(new RegExp(Gs).test(i)&&!/IEMobile\\b/.test(i))return[Sn+\" \"+Gs,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Dn[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[Sn,s]}return[Sn,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[Js,i.join(\".\")]}return[Js,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=R(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+Vs+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+Vs+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[Vs,i.join(\".\")]}return[Vs,\"\"]}],[/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/,[an,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],qn=function(t){return On.test(t)?gn:Fn.test(t)?mn:Cn.test(t)?bn:new RegExp(kn,\"i\").test(t)?kn:new RegExp(\"(\"+$n+\"|WPDesktop)\",\"i\").test(t)?$n:/iPad/.test(t)?Xs:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?Zs:An.test(t)?en:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(xn,\"i\").test(t)?xn:/(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(Gs).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)?Vs:Ys:Vs:new RegExp(\"(pda|\"+Gs+\")\",\"i\").test(t)?In:new RegExp(Ks,\"i\").test(t)&&!new RegExp(Ks+\" pc\",\"i\").test(t)?Pn:\"\"},Bn=\"https?://(.*)\",Hn=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],Wn=K([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],Hn),Gn=\"<masked>\",Jn=[\"li_fat_id\"];function Vn(t,i,e){if(!o)return{};var r,s=i?K([],Hn,e||[]):[],n=Kn(ki(o.URL,s,Gn),t),a=(r={},J(Jn,(function(t){var i=Hi.D(t);r[t]=i||null})),r);return V(a,n)}function Kn(t,i){var e=Wn.concat(i||[]),r={};return J(e,(function(i){var e=xi(t,i);r[i]=e||null})),r}function Yn(t){var i=function(t){return t?0===t.search(Bn+\"google.([^/?]*)\")?\"google\":0===t.search(Bn+\"bing.com\")?\"bing\":0===t.search(Bn+\"yahoo.com\")?\"yahoo\":0===t.search(Bn+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!C(i)){r.$search_engine=i;var s=o?xi(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function Xn(){return navigator.language||navigator.userLanguage}function Qn(){return(null==o?void 0:o.referrer)||\"$direct\"}function Zn(t,i){var e=t?K([],Hn,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:Qn().substring(0,1e3),u:r?ki(r,e,Gn):void 0}}function to(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=Si(e))?void 0:i.host};if(r){s.$current_url=r;var n=Si(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=Kn(r);V(s,o)}if(e){var a=Yn(e);V(s,a)}return s}function io(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function eo(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function ro(i,e){if(!d)return{};var r,s,n,o=i?K([],Hn,e||[]):[],[l,u]=function(t){for(var i=0;i<Un.length;i++){var[e,r]=Un[i],s=e.exec(t),n=s&&(E(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return V(Z({$os:l,$os_version:u,$browser:jn(d,navigator.vendor),$device:qn(d),$device_type:(s=d,n=qn(s),n===Xs||n===Ys||\"Kobo\"===n||\"Kindle Fire\"===n||n===Pn?Ks:n===gn||n===bn||n===mn||n===kn?\"Console\":n===Zs?\"Wearable\":n?Gs:\"Desktop\"),$timezone:io(),$timezone_offset:eo()}),{$current_url:ki(null==a?void 0:a.href,o,Gn),$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:zn(d,navigator.vendor),$browser_language:Xn(),$browser_language_prefix:(r=Xn(),\"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 so=z(\"[FeatureFlags]\"),no=\"$active_feature_flags\",oo=\"$override_feature_flags\",ao=\"$feature_flag_payloads\",lo=\"$override_feature_flag_payloads\",uo=\"$feature_flag_request_id\",ho=t=>{var i={};for(var[e,r]of Y(t||{}))r&&(i[e]=r);return i},vo=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]})))):so.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},co=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class fo{constructor(t){this.me=!1,this.be=!1,this.ye=!1,this.we=!1,this.Se=!1,this.$e=!1,this.xe=!1,this._instance=t,this.featureFlagEventHandlers=[]}flags(){if(this._instance.config.__preview_remote_config)this.$e=!0;else{var t=!this.ke&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.Ee({disableFlags:t})}}get hasLoadedFlags(){return this.be}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(Tt),i=this._instance.get_property(oo),e=this._instance.get_property(lo);if(!e&&!i)return t||{};var r=V({},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=R(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=R(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=B({},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=B({},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.me||(so.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.me=!0),r}getFlagVariants(){var t=this._instance.get_property(Pt),i=this._instance.get_property(oo);if(!i)return t||{};for(var e=V({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.me||(so.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.me=!0),e}getFlagPayloads(){var t=this._instance.get_property(ao),i=this._instance.get_property(lo);if(!i)return t||{};for(var e=V({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.me||(so.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.me=!0),e}reloadFeatureFlags(){this.we||this._instance.config.advanced_disable_feature_flags||this.ke||(this.ke=setTimeout((()=>{this.Ee()}),5))}Ie(){clearTimeout(this.ke),this.ke=void 0}ensureFlagsLoaded(){this.be||this.ye||this.ke||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.we=t}Ee(t){var i;if(this.Ie(),!this._instance.I())if(this.ye)this.Se=!0;else{var e={token:this._instance.config.token,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:B({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(Mt)||{}),group_properties:this._instance.get_property(Ct)};(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(e.disable_flags=!0);var r=this._instance.config.__preview_remote_config,s=r?\"/flags/?v=2\":\"/flags/?v=2&config=true\",n=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",o=this._instance.requestRouter.endpointFor(\"api\",s+n);r&&(e.timezone=io()),this.ye=!0,this._instance.Pe({method:\"POST\",url:o,data:e,compression:this._instance.config.disable_compression?void 0:_.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,r,s=!0;(200===t.statusCode&&(this.Se||(this.$anon_distinct_id=void 0),s=!1),this.ye=!1,this.$e)||(this.$e=!0,this._instance.Re(null!==(r=t.json)&&void 0!==r?r:{}));if(!e.disable_flags||this.Se)if(this.xe=!s,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(co.FeatureFlags))so.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(!e.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},s);this.Se&&(this.Se=!1,this.Ee())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.be||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(uo)||void 0,n=this._instance.get_property(At)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in n)||!n[t].includes(r))){var o,a,l,u,h,d,v,c,f;k(n[t])?n[t].push(r):n[t]=[r],null==(o=this._instance.persistence)||o.register({[At]:n});var p=this.getFeatureFlagDetails(t),_={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_bootstrapped_response:(null==(a=this._instance.config.bootstrap)||null==(a=a.featureFlags)?void 0:a[t])||null,$feature_flag_bootstrapped_payload:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlagPayloads)?void 0:l[t])||null,$used_bootstrap_value:!this.xe};R(null==p||null==(u=p.metadata)?void 0:u.version)||(_.$feature_flag_version=p.metadata.version);var g,m=null!==(h=null==p||null==(d=p.reason)?void 0:d.description)&&void 0!==h?h:null==p||null==(v=p.reason)?void 0:v.code;if(m&&(_.$feature_flag_reason=m),null!=p&&null!=(c=p.metadata)&&c.id&&(_.$feature_flag_id=p.metadata.id),R(null==p?void 0:p.original_variant)&&R(null==p?void 0:p.original_enabled)||(_.$feature_flag_original_response=R(p.original_variant)?p.original_enabled:p.original_variant),null!=p&&null!=(f=p.metadata)&&f.original_payload)_.$feature_flag_original_payload=null==p||null==(g=p.metadata)?void 0:g.original_payload;this._instance.capture(\"$feature_flag_called\",_)}return e}so.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;this._instance.Pe({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"api\",\"/flags/?v=2&config=true\"),data:{distinct_id:this._instance.get_distinct_id(),token:e},compression:this._instance.config.disable_compression?void 0:_.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.be||this.getFlags()&&this.getFlags().length>0)return!!this.getFeatureFlag(t,i);so.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.be=!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=vo(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId;if(k(a)){so.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var h={};if(a)for(var d=0;d<a.length;d++)h[a[d]]=!0;i&&i.register({[no]:a,[Pt]:h})}else{var v=a,c=l,f=o;t.errorsWhileComputingFlags&&(v=B({},e,v),c=B({},r,c),f=B({},s,f)),i&&i.register(B({[no]:Object.keys(ho(v)),[Pt]:v||{},[ao]:c||{},[Tt]:f||{}},u?{[uo]:u}:{}))}}}(t,this._instance.persistence,e,r,s),this.Te(i)}}override(t,i){void 0===i&&(i=!1),so.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return so.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(oo),this._instance.persistence.unregister(lo),void this.Te();if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.me=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(oo);else if(e.flags)if(k(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[oo]:r})}else this._instance.persistence.register({[oo]:e.flags});return\"payloads\"in e&&(!1===e.payloads?this._instance.persistence.unregister(lo):e.payloads&&this._instance.persistence.register({[lo]:e.payloads})),void this.Te()}this.Te()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.be){var{flags:i,flagVariants:e}=this.Me();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(Rt)||[]).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=B({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[no]:Object.keys(ho(a)),[Pt]:a}),this.Te()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(Rt),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance.Pe({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(Rt),null==(r=this._instance.persistence)||r.register({[Rt]:s}),t(s)}}})}Me(){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)),{})}}Te(t){var{flags:i,flagVariants:e}=this.Me();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(Mt)||{};this._instance.register({[Mt]:B({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(Mt)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(Ct)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=B({},e[i],t[i]),delete t[i]})),this._instance.register({[Ct]:B({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(Ct)||{};this._instance.register({[Ct]:B({},i,{[t]:{}})})}else this._instance.unregister(Ct)}reset(){this.be=!1,this.ye=!1,this.we=!1,this.Se=!1,this.$e=!1,this.xe=!1,this.$anon_distinct_id=void 0,this.Ie(),this.me=!1}}var po=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class _o{constructor(t,i){this.S=t,this.props={},this.Ce=!1,this.Fe=(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.B=this.Oe(t),this.load(),t.debug&&N.info(\"Persistence loaded\",t.persistence,B({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.Ae}Oe(t){-1===po.indexOf(t.persistence.toLowerCase())&&(N.critical(\"Unknown persistence type \"+t.persistence+\"; falling back to localStorage+cookie\"),t.persistence=\"localStorage+cookie\");var i=t.persistence.toLowerCase();return\"localstorage\"===i&&Gi.O()?Gi:\"localstorage+cookie\"===i&&Vi.O()?Vi:\"sessionstorage\"===i&&Qi.O()?Qi:\"memory\"===i?Yi:\"cookie\"===i?Hi:Vi.O()?Vi:Hi}properties(){var t={};return J(this.props,(function(i,e){if(e===Pt&&I(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,(C(o=Wt)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(J(o,(function(t){if(l||(l=t===a))return W})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.Ae){var t=this.B.L(this.Fe);t&&(this.props=V({},t))}}save(){this.Ae||this.B.j(this.Fe,this.props,this.De,this.Le,this.je,this.S.debug)}remove(){this.B.N(this.Fe,!1),this.B.N(this.Fe,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(I(t)){R(i)&&(i=\"None\"),this.De=R(e)?this.Ne:e;var r=!1;if(J(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(I(t)){this.De=R(i)?this.Ne:i;var e=!1;if(J(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.Ce){var t=Vn(this.S.custom_campaign_params,this.S.mask_personal_data_properties,this.S.custom_personal_data_properties);P(Z(t))||this.register(t),this.Ce=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?Yn(t):{})}update_referrer_info(){var t;this.register_once({$referrer:Qn(),$referring_domain:null!=o&&o.referrer&&(null==(t=Si(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[Nt]||this.props[zt]||this.register_once({[Ut]:Zn(this.S.mask_personal_data_properties,this.S.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};J([zt,Nt],(i=>{var e=this.props[i];e&&J(e,(function(i,e){t[\"$initial_\"+y(e)]=i}))}));var i,e,r=this.props[Ut];if(r){var s=(i=to(r),e={},J(i,(function(t,i){e[\"$initial_\"+y(i)]=t})),e);V(t,s)}return t}safe_merge(t){return J(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ne=this.De=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){var r=this.Oe(t),s=this.props;this.clear(),this.B=r,this.props=s,this.save()}}set_disabled(t){this.Ae=t,this.Ae?this.remove():this.save()}set_cross_subdomain(t){t!==this.Le&&(this.Le=t,this.remove(),this.save())}set_secure(t){t!==this.je&&(this.je=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[at]||{};e[t]=i,this.props[at]=e,this.save()}remove_event_timer(t){var i=(this.props[at]||{})[t];return R(i)||(delete this.props[at][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}class go{constructor(){this.ze={},this.ze={}}on(t,i){return this.ze[t]||(this.ze[t]=[]),this.ze[t].push(i),()=>{this.ze[t]=this.ze[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.ze[t]||[])e(i);for(var r of this.ze[\"*\"]||[])r(t,i)}}class mo{constructor(t){this.Ue=new go,this.qe=(t,i)=>this.Be(t,i)&&this.He(t,i)&&this.We(t,i),this.Be=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.Ge=new Set,this.Je=new Set}init(){var t;if(!R(null==(t=this._instance)?void 0:t.Ve)){var i;null==(i=this._instance)||i.Ve(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!R(null==(i=this._instance)?void 0:i.Ve)&&(t.forEach((t=>{var i,e;null==(i=this.Je)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.Ge)||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.Ge.has(t)||this.Ge.has(null==i?void 0:i.event))&&this.Je&&(null==(e=this.Je)?void 0:e.size)>0&&this.Je.forEach((t=>{this.Ke(i,t)&&this.Ue.emit(\"actionCaptured\",t.name)}))}Ye(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Ke(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.qe(t,e))return!0;return!1}onAction(t,i){return this.Ue.on(t,i)}He(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(!mo.Xe(r,null==i?void 0:i.url,(null==i?void 0:i.url_matching)||\"contains\"))return!1}return!0}static Xe(i,e,r){switch(r){case\"regex\":return!!t&&zs(i,e);case\"exact\":return e===i;case\"contains\":var s=mo.Qe(e).replace(/_/g,\".\").replace(/%/g,\".*\");return zs(i,s);default:return!1}}static Qe(t){return t.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\")}We(t,i){if((null!=i&&i.href||null!=i&&i.tag_name||null!=i&&i.text)&&!this.Ze(t).some((t=>!(null!=i&&i.href&&!mo.Xe(t.href||\"\",null==i?void 0:i.href,(null==i?void 0:i.href_matching)||\"exact\"))&&((null==i||!i.tag_name||t.tag_name===(null==i?void 0:i.tag_name))&&!(null!=i&&i.text&&!mo.Xe(t.text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\")&&!mo.Xe(t.$el_text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\"))))))return!1;if(null!=i&&i.selector){var e,r=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(!r)return!1;if(!r.includes(null==i?void 0:i.selector))return!1}return!0}Ze(t){return null==(null==t?void 0:t.properties.$elements)?[]:null==t?void 0:t.properties.$elements}}var bo=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),yo=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}({}),wo=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),So=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),$o=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),xo=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),ko=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t}({}),Eo=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}({}),Io=z(\"[Surveys]\");var Po=\"seenSurvey_\",Ro=(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},To=[wo.Popover,wo.Widget,wo.API];class Mo{constructor(t){this._instance=t,this.tr=new Map,this.ir=new Map}register(t){var i;R(null==(i=this._instance)?void 0:i.Ve)||(this.er(t),this.rr(t))}rr(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.sr){this.sr=new mo(this._instance),this.sr.init();this.sr.Ye((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.sr)||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.ir.get(i.name);e&&e.push(t.id),this.ir.set(i.name,e||[t.id])}})))}))}}er(t){var i;if(0!==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})).length){null==(i=this._instance)||i.Ve(((t,i)=>{this.onEvent(t,i)})),t.forEach((t=>{var i;null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||i.forEach((i=>{if(i&&i.name){var e=this.tr.get(i.name);e&&e.push(t.id),this.tr.set(i.name,e||[t.id])}}))}))}}onEvent(t,i){var e,r=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[Ot])||[];if(\"survey shown\"===t&&i&&r.length>0){var s;Io.info(\"survey event matched, removing survey from activated surveys\",{event:t,eventPayload:i,existingActivatedSurveys:r});var n=null==i||null==(s=i.properties)?void 0:s.$survey_id;if(n){var o=r.indexOf(n);o>=0&&(r.splice(o,1),this.nr(r))}}else this.tr.has(t)&&(Io.info(\"survey event matched, updating activated surveys\",{event:t,surveys:this.tr.get(t)}),this.nr(r.concat(this.tr.get(t)||[])))}onAction(t){var i,e=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[Ot])||[];this.ir.has(t)&&this.nr(e.concat(this.ir.get(t)||[]))}nr(t){var i;null==(i=this._instance)||null==(i=i.persistence)||i.register({[Ot]:[...new Set(t)]})}getSurveys(){var t,i=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[Ot];return i||[]}getEventToSurveys(){return this.tr}ar(){return this.sr}}class Co{constructor(t){this.lr=void 0,this._surveyManager=null,this.ur=!1,this.hr=!1,this.dr=[],this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){var i=t.surveys;if(F(i))return Io.warn(\"Flags not loaded yet. Not loading surveys.\");var e=k(i);this.lr=e?i.length>0:i,Io.info(\"flags response received, isSurveysEnabled: \"+this.lr),this.loadIfEnabled()}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Po)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.hr)Io.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Io.info(\"Disabled. Not loading surveys.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!R(this.lr)||this._instance.config.advanced_enable_surveys){var i=this.lr||this._instance.config.advanced_enable_surveys;this.hr=!0;try{var e=t.generateSurveys;if(e)return void this.vr(e,i);var r=t.loadExternalDependency;if(!r)return void this.cr(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this.cr(\"Could not load surveys script\",e):this.vr(t.generateSurveys,i)}))}catch(t){throw this.cr(\"Error initializing surveys\",t),t}finally{this.hr=!1}}}else Io.error(\"PostHog Extensions not found.\")}}vr(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new Mo(this._instance),Io.info(\"Surveys loaded successfully\"),this.pr({isLoaded:!0})}cr(t,i){Io.error(t,i),this.pr({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.dr.push(t),this._surveyManager&&this.pr({isLoaded:!0}),()=>{this.dr=this.dr.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Io.info(\"Disabled. Not loading surveys.\"),t([]);var e=this._instance.get_property(Ft);if(e&&!i)return t(e,{isLoaded:!0});if(this.ur)return t([],{isLoaded:!1,error:\"Surveys are already being loaded\"});try{this.ur=!0,this._instance.Pe({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 e;this.ur=!1;var r=i.statusCode;if(200!==r||!i.json){var s=\"Surveys API could not be loaded, status: \"+r;return Io.error(s),t([],{isLoaded:!1,error:s})}var n,o=i.json.surveys||[],a=o.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))));a.length>0&&(null==(n=this._surveyEventReceiver)||n.register(a));return null==(e=this._instance.persistence)||e.register({[Ft]:o}),t(o,{isLoaded:!0})}})}catch(t){throw this.ur=!1,t}}pr(t){for(var i of this.dr)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Io.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!F(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Io.warn(\"init was not called\")}_r(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}gr(t){if(F(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this._r(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(F(this._surveyManager))return Io.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.gr(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return F(this._surveyManager)?(Io.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.gr(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i){if(F(this._surveyManager))Io.warn(\"init was not called\");else{var e=this._r(t);if(e)if(To.includes(e.type)){var r=null==o?void 0:o.querySelector(i);r?this._surveyManager.renderSurvey(e,r):Io.warn(\"Survey element not found\")}else Io.warn(\"Surveys of type \"+e.type+\" cannot be rendered in the app\");else Io.warn(\"Survey not found\")}}}var Fo=z(\"[RateLimiter]\");class Oo{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=>{Fo.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void Fo.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(jt))&&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(jt,n),{isRateLimited:o,remainingTokens:n.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var Ao=z(\"[RemoteConfig]\");class Do{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}mr(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))):(Ao.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}br(t){this._instance.Pe({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 Ao.info(\"Using preloaded remote config\",this.remoteConfig),void this.Re(this.remoteConfig);if(this._instance.I())return void Ao.warn(\"Remote config is disabled. Falling back to local config.\");this.mr((t=>{if(!t)return Ao.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.br((t=>{this.Re(t)}));this.Re(t)}))}catch(t){Ao.error(\"Error loading remote config\",t)}}Re(t){t?this._instance.config.__preview_remote_config?(this._instance.Re(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):Ao.info(\"__preview_remote_config is disabled. Logging config instead\",t):Ao.error(\"Failed to fetch remote config from PostHog.\")}}var Lo=3e3;class jo{constructor(t,i){this.yr=!0,this.wr=[],this.Sr=ne((null==i?void 0:i.flush_interval_ms)||Lo,250,5e3,\"flush interval\",Lo),this.$r=t}enqueue(t){this.wr.push(t),this.kr||this.Er()}unload(){this.Ir();var t=this.wr.length>0?this.Pr():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.$r(B({},t,{transport:\"sendBeacon\"}))}))}enable(){this.yr=!1,this.Er()}Er(){var t=this;this.yr||(this.kr=setTimeout((()=>{if(this.Ir(),this.wr.length>0){var i=this.Pr(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&k(e.data)&&J(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.$r(e)};for(var r in i)e()}}),this.Sr))}Ir(){clearTimeout(this.kr),this.kr=void 0}Pr(){var t={};return J(this.wr,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;R(t[s])&&(t[s]=B({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.wr=[],t}}var No=[\"retriesPerformedSoFar\"];class zo{constructor(i){this.Rr=!1,this.Tr=3e3,this.wr=[],this._instance=i,this.wr=[],this.Mr=!0,!R(t)&&\"onLine\"in t.navigator&&(this.Mr=t.navigator.onLine,st(t,\"online\",(()=>{this.Mr=!0,this.se()})),st(t,\"offline\",(()=>{this.Mr=!1})))}get length(){return this.wr.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=H(t,No);O(i)&&i>0&&(e.url=Ds(e.url,{retry_count:i})),this._instance.Pe(B({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this.Cr(B({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}Cr(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.wr.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),N.warn(s),this.Rr||(this.Rr=!0,this.Fr())}Fr(){this.Or&&clearTimeout(this.Or),this.Or=setTimeout((()=>{this.Mr&&this.wr.length>0&&this.se(),this.Fr()}),this.Tr)}se(){var t=Date.now(),i=[],e=this.wr.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.wr=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:t}of(this.Or&&(clearTimeout(this.Or),this.Or=void 0),this.wr))try{this._instance.Pe(B({},t,{transport:\"sendBeacon\"}))}catch(t){N.error(t)}this.wr=[]}}class Uo{constructor(t){this.Ar=()=>{var t,i,e,r;this.Dr||(this.Dr={});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.Dr.lastScrollY=Math.ceil(n),this.Dr.maxScrollY=Math.max(n,null!==(t=this.Dr.maxScrollY)&&void 0!==t?t:0),this.Dr.maxScrollHeight=Math.max(o,null!==(i=this.Dr.maxScrollHeight)&&void 0!==i?i:0),this.Dr.lastContentY=a,this.Dr.maxContentY=Math.max(a,null!==(e=this.Dr.maxContentY)&&void 0!==e?e:0),this.Dr.maxContentHeight=Math.max(l,null!==(r=this.Dr.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.Dr}resetContext(){var t=this.Dr;return setTimeout(this.Ar,0),t}startMeasuringScrollPosition(){st(t,\"scroll\",this.Ar,{capture:!0}),st(t,\"scrollend\",this.Ar,{capture:!0}),st(t,\"resize\",this.Ar)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=k(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 qo=t=>Zn(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.Lr=t=>{var i=this.jr();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Nr(this._instance)};this.zr.register({[Lt]:e})}},this._instance=t,this.Ur=i,this.zr=e,this.Nr=r||qo,this.Ur.onSessionId(this.Lr)}jr(){return this.zr.props[Lt]}getSetOnceProps(){var t,i=null==(t=this.jr())?void 0:t.props;return i?\"r\"in i?to(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 J(Z(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+y(e)]=i})),t}}var Ho=z(\"[SessionId]\");class Wo{constructor(t,i,e){var r;if(this.qr=[],this.Br=(t,i)=>Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(t.config.__preview_experimental_cookieless_mode)throw new Error(\"SessionIdManager cannot be used with __preview_experimental_cookieless_mode\");this.S=t.config,this.zr=t.persistence,this.fi=void 0,this.Ct=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.Hr=i||Ni,this.Wr=e||Ni;var s=this.S.persistence_name||this.S.token,n=this.S.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*ne(n,60,36e3,\"session_idle_timeout_seconds\",1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.Gr(),this.Jr=\"ph_\"+s+\"_window_id\",this.Vr=\"ph_\"+s+\"_primary_window_exists\",this.Kr()){var o=Qi.L(this.Jr),a=Qi.L(this.Vr);o&&!a?this.fi=o:Qi.N(this.Jr),Qi.j(this.Vr,!0)}if(null!=(r=this.S.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.S.bootstrap.sessionID);this.Yr(this.S.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){Ho.error(\"Invalid sessionID in bootstrap\",t)}this.Xr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return R(this.qr)&&(this.qr=[]),this.qr.push(t),this.Ct&&t(this.Ct,this.fi),()=>{this.qr=this.qr.filter((i=>i!==t))}}Kr(){return\"memory\"!==this.S.persistence&&!this.zr.Ae&&Qi.O()}Qr(t){t!==this.fi&&(this.fi=t,this.Kr()&&Qi.j(this.Jr,t))}Zr(){return this.fi?this.fi:this.Kr()?Qi.L(this.Jr):null}Yr(t,i,e){t===this.Ct&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.Ct=t,this.zr.register({[xt]:[i,t,e]}))}ts(){if(this.Ct&&this._sessionActivityTimestamp&&this._sessionStartTimestamp)return[this._sessionActivityTimestamp,this.Ct,this._sessionStartTimestamp];var t=this.zr.props[xt];return k(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.Yr(null,null,null)}Xr(){st(t,\"beforeunload\",(()=>{this.Kr()&&Qi.N(this.Vr)}),{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),this.S.__preview_experimental_cookieless_mode)throw new Error(\"checkAndGetSessionAndWindowId should not be called in __preview_experimental_cookieless_mode\");var e=i||(new Date).getTime(),[r,s,n]=this.ts(),o=this.Zr(),a=O(n)&&n>0&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!t&&this.Br(e,r);u||h||a?(s=this.Hr(),o=this.Wr(),Ho.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.Wr(),l=!0);var d=0===r||!t||a?e:r,v=0===n?(new Date).getTime():n;return this.Qr(o),this.Yr(s,d,v),t||this.Gr(),l&&this.qr.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}}Gr(){clearTimeout(this.es),this.es=setTimeout((()=>{var[t]=this.ts();this.Br((new Date).getTime(),t)&&this.resetSessionId()}),1.1*this.sessionTimeoutMs)}}var Go=[\"$set_once\",\"$set\"],Jo=z(\"[SiteApps]\");class Vo{constructor(t){this._instance=t,this.rs=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ss(t,i){if(i){var e=this.globalsForEvent(i);this.rs.push(e),this.rs.length>1e3&&(this.rs=this.rs.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.Ve(this.ss.bind(this));this.ns=()=>{t(),this.rs=[],this.ns=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:B({},H(t,Go),{properties:B({},t.properties,f?{$set:B({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:B({},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.rs.length&&(Jo.info(\"Processing \"+this.rs.length+\" events for site app with id \"+t.id),this.rs.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.ns)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,Jo.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){Jo.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){Jo.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}os(){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)}ls(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){Jo.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.os(),void this._instance.on(\"eventCaptured\",(t=>this.ls(t)))):void Jo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.ns)||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 Jo.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else Jo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var Ko=[\"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\",\"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\"],Yo=function(t,i){if(!t)return!1;var e=t.toLowerCase();return Ko.concat(i||[]).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},Xo=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&Yo(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>Yo(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},Qo=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),Zo=\"i.posthog.com\";class ta{constructor(t){this.us={},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 uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+Zo,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.us[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.us[this.apiHost]=Qo.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.us[this.apiHost]=Qo.EU:this.us[this.apiHost]=Qo.CUSTOM),this.us[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(this.region===Qo.CUSTOM)return this.apiHost+i;var e=Zo+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var ia={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&&zs(e.href,i),not_regex:(i,e)=>!!t&&!zs(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class ea{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{ea.hs(\"retrieved web experiments from the server\"),i.ds=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.ds)ea.hs(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.ds)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);T(r)&&t.variants[r]&&i.vs(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];ea.cs(n)&&i.vs(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())ea.hs(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(F(this.ds))return this.ds=new Map,this.loadIfEnabled(),void this.previewWebExperiment();ea.hs(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.ds&&null!=(i=this.ds)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.ds)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.vs(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=ea.getWindowLocation();if(null!=t&&t.search){var i=xi(null==t?void 0:t.search,\"__experiment_id\"),e=xi(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(ea.hs(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.fs(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.Pe({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)}})}fs(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(ea.hs(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.vs(r[0].name,i,r[0].variants[i].transforms))}static cs(t){return!F(t.conditions)&&(ea.ps(t)&&ea._s(t))}static ps(t){var i;if(F(t.conditions)||F(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=ea.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||ia[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 _s(t){var i;if(F(t.conditions)||F(null==(i=t.conditions)?void 0:i.utm))return!0;var e=Vn();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 hs(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];N.info(\"[WebExperiments] \"+t,e)}vs(t,i,e){this._is_bot()?ea.hs(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;ea.hs(\"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)}))}})):ea.hs(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?Xo(n,this._instance.config.custom_blocked_useragents):void 0}}var ra=z(\"[PostHog ExternalIntegrations]\"),sa={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class na{constructor(t){this._instance=t}J(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return ra.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.J(sa[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 oa={},aa=()=>{},la=\"posthog\",ua=!Os&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),ha=i=>{var e;return{api_host:\"https://us.i.posthog.com\",ui_host:null,token:\"\",autocapture:!0,rageclick:!0,cross_subdomain_cookie:et(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",loaded:aa,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageview:\"2025-05-24\"!==i||\"history_change\",capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",debug:a&&T(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_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\",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,session_recording:{},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;N.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:Lo},error_tracking:{},_onCapture:aa}},da=t=>{var i={};R(t.process_person)||(i.person_profiles=t.process_person),R(t.xhr_headers)||(i.request_headers=t.xhr_headers),R(t.cookie_name)||(i.persistence_name=t.cookie_name),R(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),R(t.store_google)||(i.save_campaign_params=t.store_google),R(t.verbose)||(i.debug=t.verbose);var e=V({},i,t);return k(t.property_blacklist)&&(R(t.property_denylist)?e.property_denylist=t.property_blacklist:k(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:N.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class va{constructor(){this.__forceAllowLocalhost=!1}get gs(){return this.__forceAllowLocalhost}set gs(t){N.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class ca{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 va,this.bs=!1,this.version=c.LIB_VERSION,this.ys=new go,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=ha(),this.SentryIntegration=ms,this.sentryIntegration=t=>function(t,i){var e=gs(t,i);return{name:_s,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.ws=!1,this.Ss=null,this.$s=null,this.xs=null,this.featureFlags=new fo(this),this.toolbar=new $s(this),this.scrollManager=new Uo(this),this.pageViewManager=new Cs(this),this.surveys=new Co(this),this.experiments=new ea(this),this.exceptions=new Ws(this),this.rateLimiter=new Oo(this),this.requestRouter=new ta(this),this.consent=new te(this),this.externalIntegrations=new na(this),this.people={set:(t,i,e)=>{var r=T(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=T(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>N.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==la){var r,s=null!==(r=oa[e])&&void 0!==r?r:new ca;return s._init(t,i,e),oa[e]=s,oa[la][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s,n;if(void 0===e&&(e={}),R(i)||M(i))return N.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 N.warn(\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},this.ks=e,this.Es=[],e.person_profiles&&(this.$s=e.person_profiles),this.set_config(V({},ha(e.defaults),da(e),{name:r,token:i})),this.config.on_xhr_error&&N.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:_.GZipJS;var o=this.Is();this.persistence=new _o(this.config,o),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new _o(B({},this.config,{persistence:\"sessionStorage\"}),o);var a=B({},this.persistence.props),l=B({},this.sessionPersistence.props);if(this.register({$initialization_time:(new Date).toISOString()}),this.Ps=new jo((t=>this.Rs(t)),this.config.request_queue_config),this.Ts=new zo(this),this.__request_queue=[],this.config.__preview_experimental_cookieless_mode||(this.sessionManager=new Wo(this),this.sessionPropsManager=new Bo(this,this.sessionManager,this.persistence)),new ks(this).startIfEnabledOrStop(),this.siteApps=new Vo(this),null==(s=this.siteApps)||s.init(),this.config.__preview_experimental_cookieless_mode||(this.sessionRecording=new cs(this),this.sessionRecording.startIfEnabledOrStop()),this.config.disable_scroll_properties||this.scrollManager.startMeasuringScrollPosition(),this.autocapture=new Ci(this),this.autocapture.startIfEnabled(),this.surveys.loadIfEnabled(),this.heatmaps=new Ms(this),this.heatmaps.startIfEnabled(),this.webVitalsAutocapture=new Ps(this),this.exceptionObserver=new le(this),this.exceptionObserver.startIfEnabled(),this.deadClicksAutocapture=new se(this,re),this.deadClicksAutocapture.startIfEnabled(),this.historyAutocapture=new ze(this),this.historyAutocapture.startIfEnabled(),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&N.info(\"Starting in debug mode\",{this:this,config:e,thisC:B({},this.config),p:a,s:l}),void 0!==(null==(n=e.bootstrap)?void 0:n.distinctID)){var u,h,d=this.config.get_device_id(Ni()),v=null!=(u=e.bootstrap)&&u.isIdentifiedID?d:e.bootstrap.distinctID;this.persistence.set_property(Dt,null!=(h=e.bootstrap)&&h.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:v})}if(this.Ms()){var f,p,g=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=>g[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:g,featureFlagPayloads:m})}if(this.config.__preview_experimental_cookieless_mode)this.register_once({distinct_id:Ht,$device_id:null},\"\");else if(!this.get_distinct_id()){var b=this.config.get_device_id(Ni());this.register_once({distinct_id:b,$device_id:b},\"\"),this.persistence.set_property(Dt,\"anonymous\")}return st(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?ps(this,(()=>this.Cs())):this.Cs(),E(this.config._onCapture)&&this.config._onCapture!==aa&&(N.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&N.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}Re(t){var i,e,r,s,n,a,l,u;if(!o||!o.body)return N.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.Re(t)}),500);this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=m(t.supportedCompression,_.GZipJS)?_.GZipJS:m(t.supportedCompression,_.Base64)?_.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.$s?this.$s:\"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),null==(a=this.webVitalsAutocapture)||a.onRemoteConfig(t),null==(l=this.exceptionObserver)||l.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(u=this.deadClicksAutocapture)||u.onRemoteConfig(t)}Cs(){try{this.config.loaded(this)}catch(t){N.critical(\"`loaded` function failed\",t)}this.Fs(),this.config.capture_pageview&&setTimeout((()=>{this.consent.isOptedIn()&&this.Os()}),1),new Do(this).load(),this.featureFlags.flags()}Fs(){var t;this.has_opted_out_capturing()||this.config.request_batching&&(null==(t=this.Ps)||t.enable())}_dom_loaded(){this.has_opted_out_capturing()||G(this.__request_queue,(t=>this.Rs(t))),this.__request_queue=[],this.Fs()}_handle_unload(){var t,i;this.config.request_batching?(this.As()&&this.capture(\"$pageleave\"),null==(t=this.Ps)||t.unload(),null==(i=this.Ts)||i.unload()):this.As()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}Pe(t){this.__loaded&&(ua?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=Ds(t.url,{ip:this.config.ip?1:0}),t.headers=B({},this.config.request_headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=B({},t);s.timeout=s.timeout||6e4,s.url=Ds(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=null!==(e=null==(r=rt(Ns,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:Ns[0].method;if(!o)throw new Error(\"No available transport method\");o(s)})(B({},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)}}))))}Rs(t){this.Ts?this.Ts.retriableRequest(t):this.Pe(t)}_execute_array(t){var i,e=[],r=[],s=[];G(t,(t=>{t&&(i=t[0],k(i)?s.push(t):E(t)?t.call(this):k(t)&&\"alias\"===i?e.push(t):k(t)&&-1!==i.indexOf(\"capture\")&&E(this[i])?s.push(t):r.push(t))}));var n=function(t,i){G(t,(function(t){if(k(t[0])){var e=i;J(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)}Ms(){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.Ps){if(!this.consent.isOptedOut())if(!R(t)&&T(t)){if(this.config.opt_out_useragent_filter||!this._is_bot()){var s=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==s||!s.isRateLimited){null!=i&&i.$current_url&&!T(null==i?void 0:i.$current_url)&&(N.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 n=new Date,o=(null==e?void 0:e.timestamp)||n,a=Ni(),l={uuid:a,event:t,properties:this.calculateEventProperties(t,i||{},o,a)};s&&(l.properties.$lib_rate_limit_remaining_tokens=s.remainingTokens),(null==e?void 0:e.$set)&&(l.$set=null==e?void 0:e.$set);var u,h,d=this.Ds(null==e?void 0:e.$set_once);if(d&&(l.$set_once=d),(l=tt(l,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=o,R(null==e?void 0:e.timestamp)||(l.properties.$event_time_override_provided=!0,l.properties.$event_time_override_system_time=n),t===ko.DISMISSED||t===ko.SENT){var v=null==i?void 0:i[Eo.SURVEY_ID],c=null==i?void 0:i[Eo.SURVEY_ITERATION];localStorage.setItem((h=\"\"+Po+(u={id:v,current_iteration:c}).id,u.current_iteration&&u.current_iteration>0&&(h=\"\"+Po+u.id+\"_\"+u.current_iteration),h),\"true\"),l.$set=B({},l.$set,{[Ro({id:v,current_iteration:c},t===ko.SENT?\"responded\":\"dismissed\")]:!0})}var f=B({},l.properties.$set,l.$set);if(P(f)||this.setPersonPropertiesForFlags(f),!F(this.config.before_send)){var p=this.Ls(l);if(!p)return;l=p}this.ys.emit(\"eventCaptured\",l);var _={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:l,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.Rs(_):this.Ps.enqueue(_),l}N.critical(\"This capture call is ignored due to client rate limiting.\")}}else N.error(\"No event name provided to posthog.capture\")}else N.uninitializedWarning(\"posthog.capture\")}Ve(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=B({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.config.__preview_experimental_cookieless_mode&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=B({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!T(a.distinct_id)&&!O(a.distinct_id)||M(a.distinct_id))&&N.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=ro(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&&V(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&V(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.Ts)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===Qo.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=V(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!R(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=V({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),k(this.config.property_denylist)?J(this.config.property_denylist,(function(t){delete a[t]})):N.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&(N.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var g=this.js();return a.$process_person_profile=g,g&&!s&&this.Ns(\"_calculate_event_properties\"),a}Ds(t){var i;if(!this.persistence||!this.js())return t;if(this.bs)return t;var e=this.persistence.get_initial_props(),r=null==(i=this.sessionPropsManager)?void 0:i.getSetOnceProps(),s=V({},e,r||{},t||{}),n=this.config.sanitize_properties;return n&&(N.error(\"sanitize_properties is deprecated. Use before_send instead\"),s=n(s,\"$set_once\")),this.bs=!0,P(s)?void 0:s}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)}zs(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()}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.ys.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)}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 N.uninitializedWarning(\"posthog.identify\");if(O(t)&&(t=t.toString(),N.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()))N.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!==Ht){if(this.Ns(\"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(ot)&&(this.unregister(ot),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(Dt)||\"anonymous\");t!==r&&n?(this.persistence.set_property(Dt,\"identified\"),this.setPersonPropertiesForFlags(B({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.xs=Us(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(At))}}else N.critical('The string \"'+Ht+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else N.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.Ns(\"posthog.setPersonProperties\")){var e=Us(this.get_distinct_id(),t,i);this.xs!==e?(this.setPersonPropertiesForFlags(B({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.xs=e):N.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){if(this.Ns(\"posthog.group\")){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:B({},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 N.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.Ns(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if(N.info(\"reset\"),!this.__loaded)return N.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(Dt,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.xs=null,this.config.__preview_experimental_cookieless_mode)this.register_once({distinct_id:Ht,$device_id:null},\"\");else{var o=this.config.get_device_id(Ni());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(nt)?(N.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.Ns(\"posthog.alias\")?(R(i)&&(i=this.get_distinct_id()),t!==i?(this.zs(ot,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):(N.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=B({},this.config);if(I(t)){var e,r,s,n,o;V(this.config,da(t));var a=this.Is();null==(e=this.persistence)||e.update_config(this.config,i,a),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new _o(B({},this.config,{persistence:\"sessionStorage\"}),a),Gi.O()&&\"true\"===Gi.D(\"ph_debug\")&&(this.config.debug=!0),this.config.debug&&(c.DEBUG=!0,N.info(\"set_config\",{config:t,oldConfig:i,newConfig:B({},this.config)})),null==(r=this.sessionRecording)||r.startIfEnabledOrStop(),null==(s=this.autocapture)||s.startIfEnabled(),null==(n=this.heatmaps)||n.startIfEnabled(),this.surveys.loadIfEnabled(),this.Us(),null==(o=this.externalIntegrations)||o.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\");return this.exceptions.sendExceptionEvent(B({},je((t=>t instanceof Error)(t)?{error:t,event:t.message}:{event:t},{syntheticException:e}),i))}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:la;return i!==la&&(i=la+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(Dt))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(Dt))}js(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&P(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[ot])&&(null==(i=this.persistence)||null==(i=i.props)||!i[qt]))}As(){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.js()||this.Ns(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}Ns(t){return\"never\"===this.config.person_profiles?(N.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.zs(qt,!0),!0)}Is(){var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default;return this.config.disable_persistence||t&&!!i}Us(){var t,i,e,r,s=this.Is();(null==(t=this.persistence)?void 0:t.Ae)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.Ae)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){var i;(this.consent.optInOut(!0),this.Us(),R(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)&&this.capture(null!==(i=null==t?void 0:t.captureEventName)&&void 0!==i?i:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.Os()}opt_out_capturing(){this.consent.optInOut(!1),this.Us()}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}clear_opt_in_out_capturing(){this.consent.reset(),this.Us()}_is_bot(){return n?Xo(n,this.config.custom_blocked_useragents):void 0}Os(){o&&(\"visible\"===o.visibilityState?this.ws||(this.ws=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.Ss&&(o.removeEventListener(\"visibilitychange\",this.Ss),this.Ss=null)):this.Ss||(this.Ss=this.Os.bind(this),st(o,\"visibilitychange\",this.Ss)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),localStorage&&localStorage.removeItem(\"ph_debug\"),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)`.\"),localStorage&&localStorage.setItem(\"ph_debug\",\"true\"),this.set_config({debug:!0}))}I(){var t,i,e,r,s,n,o,a=this.ks||{};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?(N.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=N,n=(i=\"advanced_disable_flags\")in(t=a)&&!R(t[i]),o=e in t&&!R(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)}Ls(t){if(F(this.config.before_send))return t;var i=k(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),F(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return L(t.event)?N.warn(s+\". This can cause unexpected behavior.\"):N.info(s),null}e.properties&&!P(e.properties)||N.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.ce)?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)})}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Q(t.prototype[i[e]])}(ca,[\"identify\"]);var fa,pa=(fa=oa[la]=new ca,function(){function i(){i.done||(i.done=!0,ua=!1,J(oa,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():st(o,\"DOMContentLoaded\",i,{capture:!1}):t&&N.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),fa);export{f as COPY_AUTOCAPTURE_EVENT,_ as Compression,ca as PostHog,ko as SurveyEventName,Eo as SurveyEventProperties,yo as SurveyPosition,$o as SurveyQuestionBranchingType,So as SurveyQuestionType,xo as SurveySchedule,wo as SurveyType,bo as SurveyWidgetType,pa as default,p as knownUnsafeEditableEvent,pa as posthog,g 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({ client: posthogJs });\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 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 } }, children);\n}\n\nvar usePostHog = function () {\n var client = useContext(PostHogContext).client;\n return client;\n};\n\nfunction useFeatureFlagEnabled(flag) {\n var client = usePostHog();\n var _a = useState(function () { return client.isFeatureEnabled(flag); }), featureEnabled = _a[0], setFeatureEnabled = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureEnabled(client.isFeatureEnabled(flag));\n });\n }, [client, flag]);\n return featureEnabled;\n}\n\nfunction useFeatureFlagPayload(flag) {\n var client = usePostHog();\n var _a = useState(function () { return client.getFeatureFlagPayload(flag); }), featureFlagPayload = _a[0], setFeatureFlagPayload = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagPayload(client.getFeatureFlagPayload(flag));\n });\n }, [client, flag]);\n return featureFlagPayload;\n}\n\nfunction useActiveFeatureFlags() {\n var client = usePostHog();\n var _a = useState(function () { return client.featureFlags.getFlags(); }), featureFlags = _a[0], setFeatureFlags = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function (flags) {\n setFeatureFlags(flags);\n });\n }, [client]);\n return featureFlags;\n}\n\nfunction useFeatureFlagVariantKey(flag) {\n var client = usePostHog();\n var _a = useState(function () {\n return client.getFeatureFlag(flag);\n }), featureFlagVariantKey = _a[0], setFeatureFlagVariantKey = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagVariantKey(client.getFeatureFlag(flag));\n });\n }, [client, flag]);\n return featureFlagVariantKey;\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\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 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 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 }, 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}\nfunction VisibilityAndClickTracker(_a) {\n var flag = _a.flag, children = _a.children, onIntersect = _a.onIntersect, onClick = _a.onClick, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"flag\", \"children\", \"onIntersect\", \"onClick\", \"trackView\", \"options\"]);\n var ref = useRef(null);\n var posthog = usePostHog();\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 }, __assign({ threshold: 0.1 }, options));\n observer.observe(ref.current);\n return function () { return observer.disconnect(); };\n }, [flag, options, posthog, ref, trackView, onIntersect]);\n return (React.createElement(\"div\", __assign({ ref: ref }, props, { onClick: onClick }), children));\n}\nfunction VisibilityAndClickTrackers(_a) {\n var flag = _a.flag, children = _a.children, trackInteraction = _a.trackInteraction, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"flag\", \"children\", \"trackInteraction\", \"trackView\", \"options\"]);\n var clickTrackedRef = useRef(false);\n var visibilityTrackedRef = useRef(false);\n var posthog = usePostHog();\n var variant = useFeatureFlagVariantKey(flag);\n var cachedOnClick = useCallback(function () {\n if (!clickTrackedRef.current && trackInteraction) {\n captureFeatureInteraction({ flag: flag, posthog: posthog, flagVariant: variant });\n clickTrackedRef.current = true;\n }\n }, [flag, posthog, trackInteraction, variant]);\n var onIntersect = function (entry) {\n if (!visibilityTrackedRef.current && entry.isIntersecting) {\n captureFeatureView({ flag: flag, posthog: posthog, flagVariant: variant });\n visibilityTrackedRef.current = true;\n }\n };\n var trackedChildren = Children.map(children, function (child) {\n return (React.createElement(VisibilityAndClickTracker, __assign({ flag: flag, onClick: cachedOnClick, onIntersect: onIntersect, trackView: trackView, options: options }, props), child));\n });\n return React.createElement(React.Fragment, null, trackedChildren);\n}\n\nvar INITIAL_STATE = {\n componentStack: 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 componentStack = errorInfo.componentStack;\n var additionalProperties = this.props.additionalProperties;\n this.setState({\n error: error,\n componentStack: componentStack,\n });\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 client.captureException(error, currentProperties);\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 })\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\nexport { PostHogContext, PostHogErrorBoundary, PostHogFeature, PostHogProvider, useActiveFeatureFlags, useFeatureFlagEnabled, useFeatureFlagPayload, useFeatureFlagVariantKey, usePostHog };\n//# sourceMappingURL=index.js.map\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 posthog 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\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>(resolution ?? {width: 720, height: 1280});\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 } else {\n posthog.capture(\"timeline_editor_created\", {\n contextId,\n });\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 */\nexport const TimelineProvider = ({\n contextId,\n children,\n resolution = {width: 720, height: 1280},\n initialData,\n undoRedoPersistenceKey,\n maxHistorySize,\n}: TimelineProviderProps) => {\n // If undo/redo is enabled, wrap with UndoRedoProvider\n return (\n <PostHogProvider\n apiKey=\"phc_XaPky8YDbZjqm4GkCWBsVmICZTOTgjascrsftSOoJUJ\"\n options={{\n api_host: \"https://us.i.posthog.com\",\n defaults: \"2025-05-24\",\n disable_session_recording: true,\n }}\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 >\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","c","r","v","j","t","o","a","l","u","h","d","f","p","_","g","b","y","w","m","S","$","x","k","E","I","P","R","T","M","C","F","O","A","D","L","N","z","U","q","B","H","W","G","J","posthogJs","_i","posthog"],"mappings":"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","x_google_ignoreList":[29,30]}
|
|
1
|
+
{"version":3,"file":"index.mjs","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.258.5/node_modules/posthog-js/dist/module.js","../../../node_modules/.pnpm/posthog-js@1.258.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 video = document.createElement(\"video\");\n video.preload = \"metadata\";\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 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 = () => reject(new Error(\"Failed to load video metadata\"));\n });\n};\n\nconst getThumbnail = async (videoUrl, seekTime = 0.1, playbackRate = 1) => {\n return new Promise((resolve, reject) => {\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 = 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 reject(new Error(`Failed to load video: ${video.error?.message || \"Unknown error\"}`));\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;\n }).catch(() => {\n video.currentTime = seekTime;\n });\n } else {\n video.currentTime = seekTime;\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};\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) {\n console.warn(`Invalid segment: start (${segment.s}) >= end (${segment.e})`);\n continue;\n }\n const volume = segment.volume ?? 1;\n if (volume <= 0) {\n console.warn(`Skipping muted segment: ${segment.src}`);\n continue;\n }\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 (error) {\n console.warn(`Failed to process segment: ${segment.src}`, error);\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-.js').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 console.error(\"Error downloading file:\", 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 (error) {\n console.error(\"Fetch failed:\", error);\n return null;\n }\n};\n\nexport { blobUrlToFile, detectMediaTypeFromUrl, downloadFile, extractAudio, getAudioDuration, getImageDimensions, getObjectFitSize, getScaledDimensions, getThumbnail, 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 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 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.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 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 || []).map(ElementDeserializer.fromJSON);\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 Promise<boolean> true if element was added successfully\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 boolean true if element was removed successfully\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 TrackElement the updated element\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,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.258.5\"},f=\"$copy_autocapture\",p=[\"$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(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),g=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function m(t,i){return-1!==t.indexOf(i)}var b=function(t){return t.trim()},y=function(t){return t.replace(/^\\$/,\"\")};var w=Array.isArray,S=Object.prototype,$=S.hasOwnProperty,x=S.toString,k=w||function(t){return\"[object Array]\"===x.call(t)},E=t=>\"function\"==typeof t,I=t=>t===Object(t)&&!k(t),P=t=>{if(I(t)){for(var i in t)if($.call(t,i))return!1;return!0}return!1},R=t=>void 0===t,T=t=>\"[object String]\"==x.call(t),M=t=>T(t)&&0===t.trim().length,C=t=>null===t,F=t=>R(t)||C(t),O=t=>\"[object Number]\"==x.call(t),A=t=>\"[object Boolean]\"===x.call(t),D=t=>t instanceof FormData,L=t=>m(p,t),j=i=>{var e={t:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG)&&!R(t.console)&&t.console){for(var r=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),s=arguments.length,n=new Array(s>1?s-1:0),o=1;o<s;o++)n[o-1]=arguments[o];r(i,...n)}},info:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.t(\"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=>{e.error(\"You must initialize PostHog before calling \"+t)},createLogger:t=>j(i+\" \"+t)};return e},N=j(\"[PostHog.js]\"),z=N.createLogger,U=z(\"[ExternalScriptsLoader]\"),q=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return U.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=0;s<r.length;s++)if(r[s].src===i)return e();var n=()=>{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=>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?n():null==o||o.addEventListener(\"DOMContentLoaded\",n)};function B(){return B=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},B.apply(null,arguments)}function H(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}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);q(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);q(t,r,e)};var W={};function G(t,i,e){if(k(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)===W)return}function J(t,i,e){if(!F(t)){if(k(t))return G(t,i,e);if(D(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===W)return}else for(var s in t)if($.call(t,s)&&i.call(e,t[s],s)===W)return}}var V=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 G(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},K=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 G(e,(function(i){G(i,(function(i){t.push(i)}))})),t};function Y(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 X=function(t){try{return t()}catch(t){return}},Q=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){N.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),N.critical(t)}}},Z=function(t){var i={};return J(t,(function(t,e){(T(t)&&t.length>0||O(t))&&(i[e]=t)})),i};function tt(t,i){return e=t,r=t=>T(t)&&!C(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),k(i)?(n=[],G(i,(i=>{n.push(t(i))}))):(n={},J(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var it=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function et(t){var i=null==t?void 0:t.hostname;if(!T(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of it)if(e===r)return!1;return!0}function rt(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function st(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 nt=\"$people_distinct_id\",ot=\"__alias\",at=\"__timers\",lt=\"$autocapture_disabled_server_side\",ut=\"$heatmaps_enabled_server_side\",ht=\"$exception_capture_enabled_server_side\",dt=\"$error_tracking_suppression_rules\",vt=\"$error_tracking_capture_extension_exceptions\",ct=\"$web_vitals_enabled_server_side\",ft=\"$dead_clicks_enabled_server_side\",pt=\"$web_vitals_allowed_metrics\",_t=\"$session_recording_enabled_server_side\",gt=\"$console_log_recording_enabled_server_side\",mt=\"$session_recording_network_payload_capture\",bt=\"$session_recording_masking\",yt=\"$session_recording_canvas_recording\",wt=\"$replay_sample_rate\",St=\"$replay_minimum_duration\",$t=\"$replay_script_config\",xt=\"$sesid\",kt=\"$session_is_sampled\",Et=\"$session_recording_url_trigger_activated_session\",It=\"$session_recording_event_trigger_activated_session\",Pt=\"$enabled_feature_flags\",Rt=\"$early_access_features\",Tt=\"$feature_flag_details\",Mt=\"$stored_person_properties\",Ct=\"$stored_group_properties\",Ft=\"$surveys\",Ot=\"$surveys_activated\",At=\"$flag_call_reported\",Dt=\"$user_state\",Lt=\"$client_session_props\",jt=\"$capture_rate_limit\",Nt=\"$initial_campaign_params\",zt=\"$initial_referrer_info\",Ut=\"$initial_person_info\",qt=\"$epp\",Bt=\"__POSTHOG_TOOLBAR__\",Ht=\"$posthog_cookieless\",Wt=[nt,ot,\"__cmpns\",at,_t,ut,xt,Pt,dt,Dt,Rt,Tt,Ct,Mt,Ft,At,Lt,jt,Nt,zt,qt,Ut];function Gt(t){return t instanceof Element&&(t.id===Bt||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function Jt(t){return!!t&&1===t.nodeType}function Vt(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function Kt(t){return!!t&&3===t.nodeType}function Yt(t){return!!t&&11===t.nodeType}function Xt(t){return t?b(t).split(/\\s+/):[]}function Qt(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function Zt(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 Xt(i)}function ti(t){return F(t)?null:b(t).split(/(\\s+)/).filter((t=>fi(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function ii(t){var i=\"\";return oi(t)&&!ai(t)&&t.childNodes&&t.childNodes.length&&J(t.childNodes,(function(t){var e;Kt(t)&&t.textContent&&(i+=null!==(e=ti(t.textContent))&&void 0!==e?e:\"\")})),b(i)}function ei(t){return R(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var ri=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function si(t){var i=t.parentNode;return!(!i||!Jt(i))&&i}function ni(i,e,r,s,n){var o,a,l;if(void 0===r&&(r=void 0),!t||!i||Vt(i,\"html\")||!Jt(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!Qt(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&Qt(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var u=r.dom_event_allowlist;if(u&&!u.some((t=>e.type===t)))return!1}for(var h=!1,d=[i],v=!0,c=i;c.parentNode&&!Vt(c,\"body\");)if(Yt(c.parentNode))d.push(c.parentNode.host),c=c.parentNode.host;else{if(!(v=si(c)))break;if(s||ri.indexOf(v.tagName.toLowerCase())>-1)h=!0;else{var f=t.getComputedStyle(v);f&&\"pointer\"===f.getPropertyValue(\"cursor\")&&(h=!0)}d.push(v),c=v}if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(R(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}(d,r))return!1;if(!function(t,i){var e=null==i?void 0:i.css_selector_allowlist;if(R(e))return!0;var r,s=function(t){if(e.some((i=>t.matches(i))))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(d,r))return!1;var p=t.getComputedStyle(i);if(p&&\"pointer\"===p.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var _=i.tagName.toLowerCase();switch(_){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 h?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(ri.indexOf(_)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function oi(t){for(var i=t;i.parentNode&&!Vt(i,\"body\");i=i.parentNode){var e=Zt(i);if(m(e,\"ph-sensitive\")||m(e,\"ph-no-capture\"))return!1}if(m(Zt(t),\"ph-include\"))return!0;var r=t.type||\"\";if(T(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(T(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 ai(t){return!!(Vt(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||Vt(t,\"select\")||Vt(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var li=\"(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})\",ui=new RegExp(\"^(?:\"+li+\")$\"),hi=new RegExp(li),di=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",vi=new RegExp(\"^(\"+di+\")$\"),ci=new RegExp(\"(\"+di+\")\");function fi(t,i){if(void 0===i&&(i=!0),F(t))return!1;if(T(t)){if(t=b(t),(i?ui:hi).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?vi:ci).test(t))return!1}return!0}function pi(t){var i=ii(t);return fi(i=(i+\" \"+_i(t)).trim())?i:\"\"}function _i(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&J(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=ii(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+_i(t)).trim())}catch(t){N.error(\"[AutoCapture]\",t)}})),i}function gi(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=B({},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 Y(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[mi(i.toString())]=mi(e.toString())})),r+=\":\",r+=Y(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:bi(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Y(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 mi(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function bi(t){var i=t.attr__class;return i?k(i)?i:Xt(i):void 0}class yi{constructor(){this.clicks=[]}isRageClick(t,i,e){var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<30&&e-r.timestamp<1e3){if(this.clicks.push({x:t,y:i,timestamp:e}),3===this.clicks.length)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var wi=[\"localhost\",\"127.0.0.1\"],Si=t=>{var i=null==o?void 0:o.createElement(\"a\");return R(i)?null:(i.href=t,i)},$i=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return J(t,(function(t,i){R(t)||R(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)},xi=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(!k(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){N.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},ki=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(\"=\");k(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},Ei=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},Ii=z(\"[AutoCapture]\");function Pi(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function Ri(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!Jt(i));return i}function Ti(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};ri.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=Pi(1024,pi(t)):n.$el_text=Pi(1024,ii(t)));var o=Zt(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),J(t.attributes,(function(e){var s;if((!ai(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&fi(e.value)&&(s=e.name,!T(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=Xt(o).join(\" \")),n[\"attr__\"+e.name]=Pi(1024,o)}}));for(var a=1,l=1,u=t;u=Ri(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function Mi(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!Vt(d,\"body\");)Yt(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,_=!1;if(J(h,(t=>{var i=oi(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&fi(p)&&p),m(Zt(t),\"ph-no-capture\")&&(_=!0),c.push(Ti(t,o,a,l));var e=function(t){if(!oi(t))return{};var i={};return J(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&&fi(r)&&(i[e]=r)}})),i}(t);V(f,e)})),_)return{props:{},explicitNoCapture:_};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=pi(i):c[0].$el_text=ii(i)),p){var g,b;c[0].attr__href=p;var y=null==(g=Si(p))?void 0:g.host,w=null==t||null==(b=t.location)?void 0:b.host;y&&w&&y!==w&&(v=p)}return{props:V({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:gi(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 Ci{constructor(t){this.i=!1,this.o=null,this.rageclicks=new yi,this.h=!1,this.instance=t,this.m=null}get S(){var t,i,e=I(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}$(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.k(i)}catch(t){Ii.error(\"Failed to capture event\",t)}};if(st(o,\"submit\",i,{capture:!0}),st(o,\"change\",i,{capture:!0}),st(o,\"click\",i,{capture:!0}),this.S.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.k(i,f)};st(o,\"copy\",e,{capture:!0}),st(o,\"cut\",e,{capture:!0})}}}else Ii.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.i&&(this.$(),this.i=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.h=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[lt]:!!t.autocapture_opt_out}),this.o=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.m=t}getElementSelectors(t){var i,e=[];return null==(i=this.m)||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[lt],r=this.o;if(C(r)&&!A(e)&&!this.instance.I())return!1;var s=null!==(i=this.o)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}k(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=ei(i);if(Kt(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,(new Date).getTime())&&this.k(i,\"$rageclick\");var n=e===f;if(s&&ni(s,i,this.S,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=Mi(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.S.element_attribute_ignorelist,elementsChainAsString:this.h});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===f){var u,h=ti(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 E(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 O(t)&&isFinite(t)&&Math.floor(t)===t});var Fi=\"0123456789abcdef\";class Oi{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 Oi(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+Fi.charAt(this.bytes[i]>>>4)+Fi.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 Oi(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 Ai{constructor(){this.P=0,this.R=0,this.T=new ji}generate(){var t=this.generateOrAbort();if(R(t)){this.P=0;var i=this.generateOrAbort();if(R(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.P)this.P=t,this.M();else{if(!(t+1e4>this.P))return;this.R++,this.R>4398046511103&&(this.P++,this.M())}return Oi.fromFieldsV7(this.P,Math.trunc(this.R/Math.pow(2,30)),this.R&Math.pow(2,30)-1,this.T.nextUint32())}M(){this.R=1024*this.T.nextUint32()+(1023&this.T.nextUint32())}}var Di,Li=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&&!R(t.crypto)&&crypto.getRandomValues&&(Li=t=>crypto.getRandomValues(t));class ji{constructor(){this.C=new Uint32Array(8),this.F=1/0}nextUint32(){return this.F>=this.C.length&&(Li(this.C),this.F=0),this.C[this.F++]}}var Ni=()=>zi().toString(),zi=()=>(Di||(Di=new Ai)).generate(),Ui=\"\";var qi=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function Bi(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),Ui)return Ui;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_\"+Ni();!Ui&&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\",Ui=n)}return Ui}(t);if(!e){var r=(t=>{var i=t.match(qi);return i?i[0]:\"\"})(t);r!==e&&N.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var Hi={O:()=>!!o,A:function(t){N.error(\"cookieStore error: \"+t)},D: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}},L:function(t){var i;try{i=JSON.parse(Hi.D(t))||{}}catch(t){}return i},j:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=Bi(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&&N.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},N:function(t,i){try{Hi.j(t,\"\",-1,i)}catch(t){return}}},Wi=null,Gi={O:function(){if(!C(Wi))return Wi;var i=!0;if(R(t))i=!1;else try{var e=\"__mplssupport__\";Gi.j(e,\"xyz\"),'\"xyz\"'!==Gi.D(e)&&(i=!1),Gi.N(e)}catch(t){i=!1}return i||N.error(\"localStorage unsupported; falling back to cookie store\"),Wi=i,i},A:function(t){N.error(\"localStorage error: \"+t)},D:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Gi.A(t)}return null},L:function(t){try{return JSON.parse(Gi.D(t))||{}}catch(t){}return null},j:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Gi.A(t)}},N:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Gi.A(t)}}},Ji=[\"distinct_id\",xt,kt,qt,Ut],Vi=B({},Gi,{L:function(t){try{var i={};try{i=Hi.L(t)||{}}catch(t){}var e=V(i,JSON.parse(Gi.D(t)||\"{}\"));return Gi.j(t,e),e}catch(t){}return null},j:function(t,i,e,r,s,n){try{Gi.j(t,i,void 0,void 0,n);var o={};Ji.forEach((t=>{i[t]&&(o[t]=i[t])})),Object.keys(o).length&&Hi.j(t,o,e,r,s,n)}catch(t){Gi.A(t)}},N:function(i,e){try{null==t||t.localStorage.removeItem(i),Hi.N(i,e)}catch(t){Gi.A(t)}}}),Ki={},Yi={O:function(){return!0},A:function(t){N.error(\"memoryStorage error: \"+t)},D:function(t){return Ki[t]||null},L:function(t){return Ki[t]||null},j:function(t,i){Ki[t]=i},N:function(t){delete Ki[t]}},Xi=null,Qi={O:function(){if(!C(Xi))return Xi;if(Xi=!0,R(t))Xi=!1;else try{var i=\"__support__\";Qi.j(i,\"xyz\"),'\"xyz\"'!==Qi.D(i)&&(Xi=!1),Qi.N(i)}catch(t){Xi=!1}return Xi},A:function(t){N.error(\"sessionStorage error: \",t)},D:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Qi.A(t)}return null},L:function(t){try{return JSON.parse(Qi.D(t))||null}catch(t){}return null},j:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Qi.A(t)}},N:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Qi.A(t)}}},Zi=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class te{constructor(t){this._instance=t}get S(){return this._instance.config}get consent(){return this.U()?Zi.DENIED:this.q}isOptedOut(){return this.consent===Zi.DENIED||this.consent===Zi.PENDING&&this.S.opt_out_capturing_by_default}isOptedIn(){return!this.isOptedOut()}optInOut(t){this.B.j(this.H,t?1:0,this.S.cookie_expiration,this.S.cross_subdomain_cookie,this.S.secure_cookie)}reset(){this.B.N(this.H,this.S.cross_subdomain_cookie)}get H(){var{token:t,opt_out_capturing_cookie_prefix:i}=this._instance.config;return(i||\"__ph_opt_in_out_\")+t}get q(){var t=this.B.D(this.H);return\"1\"===t?Zi.GRANTED:\"0\"===t?Zi.DENIED:Zi.PENDING}get B(){if(!this.W){var t=this.S.opt_out_capturing_persistence_type;this.W=\"localStorage\"===t?Gi:Hi;var i=\"localStorage\"===t?Hi:Gi;i.D(this.H)&&(this.W.D(this.H)||this.optInOut(\"1\"===i.D(this.H)),i.N(this.H,this.S.cross_subdomain_cookie))}return this.W}U(){return!!this.S.respect_dnt&&!!rt([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>m([!0,1,\"1\",\"yes\"],t)))}}var ie=z(\"[Dead Clicks]\"),ee=()=>!0,re=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(ft)),r=t.instance.config.capture_dead_clicks;return A(r)?r:e};class se{get lazyLoadedDeadClicksAutocapture(){return this.G}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[ft]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.J((()=>{this.V()}))}J(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?ie.error(\"failed to load script\",i):t()}))}V(){var t;if(o){if(!this.G&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=I(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.G=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.G.start(o),ie.info(\"starting...\")}}else ie.error(\"`document` not found. Cannot start.\")}stop(){this.G&&(this.G.stop(),this.G=void 0,ie.info(\"stopping...\"))}}function ne(t,i,e,r,s){return i>e&&(N.warn(\"min cannot be greater than max.\"),i=e),O(t)?t>e?(r&&N.warn(r+\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r&&N.warn(r+\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r&&N.warn(r+\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),ne(s||e,i,e,r))}class oe{constructor(t){this.K={},this.Y=()=>{Object.keys(this.K).forEach((t=>{var i=this.X(t)+this.Z;i>=this.tt?delete this.K[t]:this.it(t,i)}))},this.X=t=>this.K[String(t)],this.it=(t,i)=>{this.K[String(t)]=i},this.consumeRateLimit=t=>{var i,e=null!==(i=this.X(t))&&void 0!==i?i:this.tt;if(0===(e=Math.max(e-1,0)))return!0;this.it(t,e);var r,s=0===e;s&&(null==(r=this.et)||r.call(this,t));return s},this.rt=t,this.et=this.rt.et,this.tt=ne(this.rt.bucketSize,0,100,\"rate limiter bucket size\"),this.Z=ne(this.rt.refillRate,0,this.tt,\"rate limiter refill rate\"),this.st=ne(this.rt.refillInterval,0,864e5,\"rate limiter refill interval\"),setInterval((()=>{this.Y()}),this.st)}}var ae=z(\"[ExceptionAutocapture]\");class le{constructor(i){var e,r,s;this.nt=()=>{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.ot&&this.S.capture_unhandled_errors&&(this.ot=e(this.captureException.bind(this))),!this.lt&&this.S.capture_unhandled_rejections&&(this.lt=r(this.captureException.bind(this))),!this.ut&&this.S.capture_console_errors&&(this.ut=s(this.captureException.bind(this)))}catch(t){ae.error(\"failed to start\",t),this.ht()}}},this._instance=i,this.dt=!(null==(e=this._instance.persistence)||!e.props[ht]),this.S=this.vt(),this.ct=new oe({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}),this.startIfEnabled()}vt(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return I(t)?i=B({},i,t):(R(t)?this.dt:t)&&(i=B({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.S.capture_console_errors||this.S.capture_unhandled_errors||this.S.capture_unhandled_rejections}startIfEnabled(){this.isEnabled&&(ae.info(\"enabled\"),this.J(this.nt))}J(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 ae.error(\"failed to load script\",i);t()}))}ht(){var t,i,e;null==(t=this.ot)||t.call(this),this.ot=void 0,null==(i=this.lt)||i.call(this),this.lt=void 0,null==(e=this.ut)||e.call(this),this.ut=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.dt=!!i||!1,this.S=this.vt(),this._instance.persistence&&this._instance.persistence.register({[ht]:this.dt}),this.startIfEnabled()}captureException(t){var i,e=this._instance.requestRouter.endpointFor(\"ui\");t.$exception_personURL=e+\"/project/\"+this._instance.config.token+\"/person/\"+this._instance.get_distinct_id();var r=null!==(i=t.$exception_list[0].type)&&void 0!==i?i:\"Exception\";this.ct.consumeRateLimit(r)?ae.info(\"Skipping exception capture because of client rate limiting.\",{exception:t.$exception_list[0].type}):this._instance.exceptions.sendExceptionEvent(t)}}function ue(t){return!R(Event)&&he(t,Event)}function he(t,i){try{return t instanceof i}catch(t){return!1}}function de(t){switch(Object.prototype.toString.call(t)){case\"[object Error]\":case\"[object Exception]\":case\"[object DOMException]\":case\"[object DOMError]\":return!0;default:return he(t,Error)}}function ve(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function ce(t){return ve(t,\"DOMError\")}var fe=/\\(error: (.*)\\)/,pe=50,_e=\"?\";function ge(t,i,e,r){var s={platform:\"web:javascript\",filename:t,function:\"<anonymous>\"===i?_e:i,in_app:!0};return R(e)||(s.lineno=e),R(r)||(s.colno=r),s}var me=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,be=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,ye=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,we=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,Se=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,$e=function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];var r=i.sort(((t,i)=>t[0]-i[0])).map((t=>t[1]));return function(t,i){void 0===i&&(i=0);for(var e=[],s=t.split(\"\\n\"),n=i;n<s.length;n++){var o=s[n];if(!(o.length>1024)){var a=fe.test(o)?o.replace(fe,\"$1\"):o;if(!a.match(/\\S*Error: /)){for(var l of r){var u=l(a);if(u){e.push(u);break}}if(e.length>=pe)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,pe).map((t=>B({},t,{filename:t.filename||xe(i).filename,function:t.function||_e})))}(e)}}(...[[30,t=>{var i=me.exec(t);if(i){var[,e,r,s]=i;return ge(e,_e,+r,+s)}var n=be.exec(t);if(n){if(n[2]&&0===n[2].indexOf(\"eval\")){var o=ye.exec(n[2]);o&&(n[2]=o[1],n[3]=o[2],n[4]=o[3])}var[a,l]=Pe(n[1]||_e,n[2]);return ge(l,a,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}}],[50,t=>{var i=we.exec(t);if(i){if(i[3]&&i[3].indexOf(\" > eval\")>-1){var e=Se.exec(i[3]);e&&(i[1]=i[1]||\"eval\",i[3]=e[1],i[4]=e[2],i[5]=\"\")}var r=i[3],s=i[1]||_e;return[s,r]=Pe(s,r),ge(r,s,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}}]]);function xe(t){return t[t.length-1]||{}}var ke,Ee,Ie,Pe=(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]:_e,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]};var Re=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;function Te(t,i){void 0===i&&(i=0);var e=t.stacktrace||t.stack||\"\",r=function(t){if(t&&Me.test(t.message))return 1;return 0}(t);try{var s=$e,n=function(t,i){var e=function(t){var i=globalThis._posthogChunkIds;if(!i)return{};var e=Object.keys(i);return Ie&&e.length===Ee||(Ee=e.length,Ie=e.reduce(((e,r)=>{ke||(ke={});var s=ke[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,ke[r]=[l,u];break}}return e}),{})),Ie}(i);return t.forEach((t=>{t.filename&&(t.chunk_id=e[t.filename])})),t}(s(e,r),s);return n.slice(0,n.length-i)}catch(t){}return[]}var Me=/Minified React error #\\d+;/i;function Ce(t,i){var e,r,s=Te(t),n=null===(e=null==i?void 0:i.handled)||void 0===e||e,o=null!==(r=null==i?void 0:i.synthetic)&&void 0!==r&&r;return{type:null!=i&&i.overrideExceptionType?i.overrideExceptionType:t.name,value:function(t){var i=t.message;if(i.error&&\"string\"==typeof i.error.message)return String(i.error.message);return String(i)}(t),stacktrace:{frames:s,type:\"raw\"},mechanism:{handled:n,synthetic:o}}}function Fe(t,i){var e=Ce(t,i);return t.cause&&de(t.cause)&&t.cause!==t?[e,...Fe(t.cause,{handled:null==i?void 0:i.handled,synthetic:null==i?void 0:i.synthetic})]:[e]}function Oe(t,i){return{$exception_list:Fe(t,i),$exception_level:\"error\"}}function Ae(t,i){var e,r,s,n=null===(e=null==i?void 0:i.handled)||void 0===e||e,o=null===(r=null==i?void 0:i.synthetic)||void 0===r||r,a={type:null!=i&&i.overrideExceptionType?i.overrideExceptionType:null!==(s=null==i?void 0:i.defaultExceptionType)&&void 0!==s?s:\"Error\",value:t||(null==i?void 0:i.defaultExceptionMessage),mechanism:{handled:n,synthetic:o}};if(null!=i&&i.syntheticException){var l=Te(i.syntheticException,1);l.length&&(a.stacktrace={frames:l,type:\"raw\"})}return{$exception_list:[a],$exception_level:\"error\"}}function De(t){return T(t)&&!M(t)&&g.indexOf(t)>=0}function Le(t,i){var e,r,s=null===(e=null==i?void 0:i.handled)||void 0===e||e,n=null===(r=null==i?void 0:i.synthetic)||void 0===r||r,o=null!=i&&i.overrideExceptionType?i.overrideExceptionType:ue(t)?t.constructor.name:\"Error\",a=\"Non-Error 'exception' captured with keys: \"+function(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\"\"}(t),l={type:o,value:a,mechanism:{handled:s,synthetic:n}};if(null!=i&&i.syntheticException){var u=Te(null==i?void 0:i.syntheticException,1);u.length&&(l.stacktrace={frames:u,type:\"raw\"})}return{$exception_list:[l],$exception_level:De(t.level)?t.level:\"error\"}}function je(t,i){var{error:e,event:r}=t,s={$exception_list:[]},n=e||r;if(ce(n)||function(t){return ve(t,\"DOMException\")}(n)){var o=n;if(function(t){return\"stack\"in t}(n))s=Oe(n,i);else{var a=o.name||(ce(o)?\"DOMError\":\"DOMException\"),l=o.message?a+\": \"+o.message:a;s=Ae(l,B({},i,{overrideExceptionType:ce(o)?\"DOMError\":\"DOMException\",defaultExceptionMessage:l}))}return\"code\"in o&&(s.$exception_DOMException_code=\"\"+o.code),s}if(function(t){return ve(t,\"ErrorEvent\")}(n)&&n.error)return Oe(n.error,i);if(de(n))return Oe(n,i);if(function(t){return ve(t,\"Object\")}(n)||ue(n))return Le(n,i);if(R(e)&&T(r)){var u=\"Error\",h=r,d=r.match(Re);return d&&(u=d[1],h=d[2]),Ae(h,B({},i,{overrideExceptionType:u,defaultExceptionMessage:h}))}return Ae(n,i)}function Ne(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return E(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class ze{constructor(i){var e;this._instance=i,this.ft=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&(N.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this._t&&this._t(),this._t=void 0,N.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||Ne(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r.gt(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||Ne(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r.gt(\"replaceState\")})),this.bt()}}gt(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.ft&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.ft=r}catch(t){N.error(\"Error capturing \"+i+\" pageview\",t)}}bt(){if(!this._t){var i=()=>{this.gt(\"popstate\")};st(t,\"popstate\",i),this._t=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}function Ue(t){var i,e;return(null==(i=JSON.stringify(t,(e=[],function(t,i){if(I(i)){for(;e.length>0&&e[e.length-1]!==this;)e.pop();return e.includes(i)?\"[Circular]\":(e.push(i),i)}return i})))?void 0:i.length)||0}function qe(t,i){if(void 0===i&&(i=6606028.8),t.size>=i&&t.data.length>1){var e=Math.floor(t.data.length/2),r=t.data.slice(0,e),s=t.data.slice(e);return[qe({size:Ue(r),data:r,sessionId:t.sessionId,windowId:t.windowId}),qe({size:Ue(s),data:s,sessionId:t.sessionId,windowId:t.windowId})].flatMap((t=>t))}return[t]}var Be=(t=>(t[t.DomContentLoaded=0]=\"DomContentLoaded\",t[t.Load=1]=\"Load\",t[t.FullSnapshot=2]=\"FullSnapshot\",t[t.IncrementalSnapshot=3]=\"IncrementalSnapshot\",t[t.Meta=4]=\"Meta\",t[t.Custom=5]=\"Custom\",t[t.Plugin=6]=\"Plugin\",t))(Be||{}),He=(t=>(t[t.Mutation=0]=\"Mutation\",t[t.MouseMove=1]=\"MouseMove\",t[t.MouseInteraction=2]=\"MouseInteraction\",t[t.Scroll=3]=\"Scroll\",t[t.ViewportResize=4]=\"ViewportResize\",t[t.Input=5]=\"Input\",t[t.TouchMove=6]=\"TouchMove\",t[t.MediaInteraction=7]=\"MediaInteraction\",t[t.StyleSheetRule=8]=\"StyleSheetRule\",t[t.CanvasMutation=9]=\"CanvasMutation\",t[t.Font=10]=\"Font\",t[t.Log=11]=\"Log\",t[t.Drag=12]=\"Drag\",t[t.StyleDeclaration=13]=\"StyleDeclaration\",t[t.Selection=14]=\"Selection\",t[t.AdoptedStyleSheet=15]=\"AdoptedStyleSheet\",t[t.CustomElement=16]=\"CustomElement\",t))(He||{}),We=\"[SessionRecording]\",Ge=\"redacted\",Je={initiatorTypes:[\"audio\",\"beacon\",\"body\",\"css\",\"early-hint\",\"embed\",\"fetch\",\"frame\",\"iframe\",\"icon\",\"image\",\"img\",\"input\",\"link\",\"navigation\",\"object\",\"ping\",\"script\",\"track\",\"video\",\"xmlhttprequest\"],maskRequestFn:t=>t,recordHeaders:!1,recordBody:!1,recordInitialRequests:!1,recordPerformance:!1,performanceEntryTypeToObserve:[\"first-input\",\"navigation\",\"paint\",\"resource\"],payloadSizeLimitBytes:1e6,payloadHostDenyList:[\".lr-ingest.io\",\".ingest.sentry.io\",\".clarity.ms\",\"analytics.google.com\",\"bam.nr-data.net\"]},Ve=[\"authorization\",\"x-forwarded-for\",\"authorization\",\"cookie\",\"set-cookie\",\"x-api-key\",\"x-real-ip\",\"remote-addr\",\"forwarded\",\"proxy-authorization\",\"x-csrf-token\",\"x-csrftoken\",\"x-xsrf-token\"],Ke=[\"password\",\"secret\",\"passwd\",\"api_key\",\"apikey\",\"auth\",\"credentials\",\"mysql_pwd\",\"privatekey\",\"private_key\",\"token\"],Ye=[\"/s/\",\"/e/\",\"/i/\"];function Xe(t,i,e,r){if(F(t))return t;var s=(null==i?void 0:i[\"content-length\"])||function(t){return new Blob([t]).size}(t);return T(s)&&(s=parseInt(s)),s>e?We+\" \"+r+\" body too large to record (\"+s+\" bytes)\":t}function Qe(t,i){if(F(t))return t;var e=t;return fi(e,!1)||(e=We+\" \"+i+\" body \"+Ge),J(Ke,(t=>{var r,s;null!=(r=e)&&r.length&&-1!==(null==(s=e)?void 0:s.indexOf(t))&&(e=We+\" \"+i+\" body \"+Ge+\" as might contain: \"+t)})),e}var Ze=(t,i)=>{var e,r,s,n={payloadSizeLimitBytes:Je.payloadSizeLimitBytes,performanceEntryTypeToObserve:[...Je.performanceEntryTypeToObserve],payloadHostDenyList:[...i.payloadHostDenyList||[],...Je.payloadHostDenyList]},o=!1!==t.session_recording.recordHeaders&&i.recordHeaders,a=!1!==t.session_recording.recordBody&&i.recordBody,l=!1!==t.capture_performance&&i.recordPerformance,u=(e=n,s=Math.min(1e6,null!==(r=e.payloadSizeLimitBytes)&&void 0!==r?r:1e6),t=>(null!=t&&t.requestBody&&(t.requestBody=Xe(t.requestBody,t.requestHeaders,s,\"Request\")),null!=t&&t.responseBody&&(t.responseBody=Xe(t.responseBody,t.responseHeaders,s,\"Response\")),t)),h=i=>{return u(((t,i)=>{var e,r=Si(t.name),s=0===i.indexOf(\"http\")?null==(e=Si(i))?void 0:e.pathname:i;\"/\"===s&&(s=\"\");var n=null==r?void 0:r.pathname.replace(s||\"\",\"\");if(!(r&&n&&Ye.some((t=>0===n.indexOf(t)))))return t})((r=(e=i).requestHeaders,F(r)||J(Object.keys(null!=r?r:{}),(t=>{Ve.includes(t.toLowerCase())&&(r[t]=Ge)})),e),t.api_host));var e,r},d=E(t.session_recording.maskNetworkRequestFn);return d&&E(t.session_recording.maskCapturedNetworkRequestFn)&&N.warn(\"Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.\"),d&&(t.session_recording.maskCapturedNetworkRequestFn=i=>{var e=t.session_recording.maskNetworkRequestFn({url:i.name});return B({},i,{name:null==e?void 0:e.url})}),n.maskRequestFn=E(t.session_recording.maskCapturedNetworkRequestFn)?i=>{var e,r=h(i);return r&&null!==(e=null==t.session_recording.maskCapturedNetworkRequestFn?void 0:t.session_recording.maskCapturedNetworkRequestFn(r))&&void 0!==e?e:void 0}:t=>function(t){if(!R(t))return t.requestBody=Qe(t.requestBody,\"Request\"),t.responseBody=Qe(t.responseBody,\"Response\"),t}(h(t)),B({},Je,n,{recordHeaders:o,recordBody:a,recordPerformance:l,recordInitialRequests:l})};class tr{constructor(t,i){var e,r;void 0===i&&(i={}),this.yt={},this.wt=t=>{if(!this.yt[t]){var i,e;this.yt[t]=!0;var r=this.St(t);null==(i=(e=this.rt).onBlockedNode)||i.call(e,t,r)}},this.$t=t=>{var i=this.St(t);if(\"svg\"!==(null==i?void 0:i.nodeName)&&i instanceof Element){var e=i.closest(\"svg\");if(e)return[this._rrweb.mirror.getId(e),e]}return[t,i]},this.St=t=>this._rrweb.mirror.getNode(t),this.xt=t=>{var i,e,r,s,n,o,a,l;return(null!==(i=null==(e=t.removes)?void 0:e.length)&&void 0!==i?i:0)+(null!==(r=null==(s=t.attributes)?void 0:s.length)&&void 0!==r?r:0)+(null!==(n=null==(o=t.texts)?void 0:o.length)&&void 0!==n?n:0)+(null!==(a=null==(l=t.adds)?void 0:l.length)&&void 0!==a?a:0)},this.throttleMutations=t=>{if(3!==t.type||0!==t.data.source)return t;var i=t.data,e=this.xt(i);i.attributes&&(i.attributes=i.attributes.filter((t=>{var[i]=this.$t(t.id);return!this.ct.consumeRateLimit(i)&&t})));var r=this.xt(i);return 0!==r||e===r?t:void 0},this._rrweb=t,this.rt=i,this.ct=new oe({bucketSize:null!==(e=this.rt.bucketSize)&&void 0!==e?e:100,refillRate:null!==(r=this.rt.refillRate)&&void 0!==r?r:10,refillInterval:1e3,et:this.wt})}}var ir=Uint8Array,er=Uint16Array,rr=Uint32Array,sr=new ir([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]),nr=new ir([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]),or=new ir([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ar=function(t,i){for(var e=new er(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new rr(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]},lr=ar(sr,2),ur=lr[0],hr=lr[1];ur[28]=258,hr[258]=28;for(var dr=ar(nr,0)[1],vr=new er(32768),cr=0;cr<32768;++cr){var fr=(43690&cr)>>>1|(21845&cr)<<1;fr=(61680&(fr=(52428&fr)>>>2|(13107&fr)<<2))>>>4|(3855&fr)<<4,vr[cr]=((65280&fr)>>>8|(255&fr)<<8)>>>1}var pr=function(t,i,e){for(var r=t.length,s=0,n=new er(i);s<r;++s)++n[t[s]-1];var o,a=new er(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new er(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[vr[d]>>>l]=u}else for(o=new er(r),s=0;s<r;++s)o[s]=vr[a[t[s]-1]++]>>>15-t[s];return o},_r=new ir(288);for(cr=0;cr<144;++cr)_r[cr]=8;for(cr=144;cr<256;++cr)_r[cr]=9;for(cr=256;cr<280;++cr)_r[cr]=7;for(cr=280;cr<288;++cr)_r[cr]=8;var gr=new ir(32);for(cr=0;cr<32;++cr)gr[cr]=5;var mr=pr(_r,9,0),br=pr(gr,5,0),yr=function(t){return(t/8>>0)+(7&t&&1)},wr=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof er?er:t instanceof rr?rr:ir)(e-i);return r.set(t.subarray(i,e)),r},Sr=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},$r=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},xr=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 ir(0),0];if(1==s){var o=new ir(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 er(v+1),f=kr(e[h-1],c,0);if(f>i){r=0;var p=0,_=f-i,g=1<<_;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+=g-(1<<f-c[m]),c[m]=i}for(p>>>=_;p>0;){var b=n[r].s;c[b]<i?p-=1<<i-c[b]++-1:++r}for(;r>=0&&p;--r){var y=n[r].s;c[y]==i&&(--c[y],++p)}f=i}return[new ir(c),f]},kr=function(t,i,e){return-1==t.s?Math.max(kr(t.l,i,e+1),kr(t.r,i,e+1)):i[t.s]=e},Er=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new er(++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]},Ir=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Pr=function(t,i,e){var r=e.length,s=yr(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)},Rr=function(t,i,e,r,s,n,o,a,l,u,h){Sr(i,h++,e),++s[256];for(var d=xr(s,15),v=d[0],c=d[1],f=xr(n,15),p=f[0],_=f[1],g=Er(v),m=g[0],b=g[1],y=Er(p),w=y[0],S=y[1],$=new er(19),x=0;x<m.length;++x)$[31&m[x]]++;for(x=0;x<w.length;++x)$[31&w[x]]++;for(var k=xr($,7),E=k[0],I=k[1],P=19;P>4&&!E[or[P-1]];--P);var R,T,M,C,F=u+5<<3,O=Ir(s,_r)+Ir(n,gr)+o,A=Ir(s,v)+Ir(n,p)+o+14+3*P+Ir($,E)+(2*$[16]+3*$[17]+7*$[18]);if(F<=O&&F<=A)return Pr(i,h,t.subarray(l,l+u));if(Sr(i,h,1+(A<O)),h+=2,A<O){R=pr(v,c,0),T=v,M=pr(p,_,0),C=p;var D=pr(E,I,0);Sr(i,h,b-257),Sr(i,h+5,S-1),Sr(i,h+10,P-4),h+=14;for(x=0;x<P;++x)Sr(i,h+3*x,E[or[x]]);h+=3*P;for(var L=[m,w],j=0;j<2;++j){var N=L[j];for(x=0;x<N.length;++x){var z=31&N[x];Sr(i,h,D[z]),h+=E[z],z>15&&(Sr(i,h,N[x]>>>5&127),h+=N[x]>>>12)}}}else R=mr,T=_r,M=br,C=gr;for(x=0;x<a;++x)if(r[x]>255){z=r[x]>>>18&31;$r(i,h,R[z+257]),h+=T[z+257],z>7&&(Sr(i,h,r[x]>>>23&31),h+=sr[z]);var U=31&r[x];$r(i,h,M[U]),h+=C[U],U>3&&($r(i,h,r[x]>>>5&8191),h+=nr[U])}else $r(i,h,R[r[x]]),h+=T[r[x]];return $r(i,h,R[256]),h+T[256]},Tr=new rr([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Mr=function(){for(var t=new rr(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),Cr=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=Mr[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}},Fr=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new ir(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=Pr(l,u,t.subarray(h,d)):(l[h]=n,u=Pr(l,u,t.subarray(h,o)))}else{for(var v=Tr[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,_=new er(32768),g=new er(p+1),m=Math.ceil(e/3),b=2*m,y=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<b)&p},w=new rr(25e3),S=new er(288),$=new er(32),x=0,k=0,E=(h=0,0),I=0,P=0;h<o;++h){var R=y(h),T=32767&h,M=g[R];if(_[T]=M,g[R]=T,I<=h){var C=o-h;if((x>7e3||E>24576)&&C>423){u=Rr(t,l,0,w,S,$,k,E,P,h-P,u),E=x=k=0,P=h;for(var F=0;F<286;++F)S[F]=0;for(F=0;F<30;++F)$[F]=0}var O=2,A=0,D=f,L=T-M&32767;if(C>2&&R==y(h-L))for(var j=Math.min(c,C)-1,N=Math.min(32767,h),z=Math.min(258,C);L<=N&&--D&&T!=M;){if(t[h+O]==t[h+O-L]){for(var U=0;U<z&&t[h+U]==t[h+U-L];++U);if(U>O){if(O=U,A=L,U>j)break;var q=Math.min(L,U-2),B=0;for(F=0;F<q;++F){var H=h-L+F+32768&32767,W=H-_[H]+32768&32767;W>B&&(B=W,M=H)}}}L+=(T=M)-(M=_[T])+32768&32767}if(A){w[E++]=268435456|hr[O]<<18|dr[A];var G=31&hr[O],J=31&dr[A];k+=sr[G]+nr[J],++S[257+G],++$[J],I=h+O,++x}else w[E++]=t[h],++S[t[h]]}}u=Rr(t,l,n,w,S,$,k,E,P,h-P,u)}return wr(a,0,r+yr(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,!s)},Or=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8},Ar=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&&Or(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)}},Dr=function(t){return 10+(t.filename&&t.filename.length+1||0)};function Lr(t,i){void 0===i&&(i={});var e=Cr(),r=t.length;e.p(t);var s=Fr(t,i,Dr(i),8),n=s.length;return Ar(s,i),Or(s,n-8,e.d()),Or(s,n-4,r),s}function jr(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new ir(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 ir(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 wr(r,0,s)}function Nr(t,i){return function(t){for(var i=0,e=0;e<t.length;e++)i=(i<<5)-i+t.charCodeAt(e),i|=0;return Math.abs(i)}(t)%100<ne(100*i,0,100)}var zr=\"disabled\",Ur=\"sampled\",qr=\"active\",Br=\"buffering\",Hr=\"paused\",Wr=\"trigger\",Gr=Wr+\"_activated\",Jr=Wr+\"_pending\",Vr=Wr+\"_\"+zr;function Kr(t,i){return i.some((i=>\"regex\"===i.matching&&new RegExp(i.url).test(t)))}class Yr{constructor(t){this.kt=t}triggerStatus(t){var i=this.kt.map((i=>i.triggerStatus(t)));return i.includes(Gr)?Gr:i.includes(Jr)?Jr:Vr}stop(){this.kt.forEach((t=>t.stop()))}}class Xr{constructor(t){this.kt=t}triggerStatus(t){var i=new Set;for(var e of this.kt)i.add(e.triggerStatus(t));switch(i.delete(Vr),i.size){case 0:return Vr;case 1:return Array.from(i)[0];default:return Jr}}stop(){this.kt.forEach((t=>t.stop()))}}class Qr{triggerStatus(){return Jr}stop(){}}class Zr{constructor(t){this.Et=[],this.It=[],this.urlBlocked=!1,this._instance=t}onRemoteConfig(t){var i,e;this.Et=(null==(i=t.sessionRecording)?void 0:i.urlTriggers)||[],this.It=(null==(e=t.sessionRecording)?void 0:e.urlBlocklist)||[]}Pt(t){var i;return 0===this.Et.length?Vr:(null==(i=this._instance)?void 0:i.get_property(Et))===t?Gr:Jr}triggerStatus(t){var i=this.Pt(t),e=i===Gr?Gr:i===Jr?Jr:Vr;return this._instance.register_for_session({$sdk_debug_replay_url_trigger_status:e}),e}checkUrlTriggerConditions(i,e,r){if(void 0!==t&&t.location.href){var s=t.location.href,n=this.urlBlocked,o=Kr(s,this.It);n&&o||(o&&!n?i():!o&&n&&e(),Kr(s,this.Et)&&r(\"url\"))}}stop(){}}class ts{constructor(t){this.linkedFlag=null,this.linkedFlagSeen=!1,this.Rt=()=>{},this._instance=t}triggerStatus(){var t=Jr;return F(this.linkedFlag)&&(t=Vr),this.linkedFlagSeen&&(t=Gr),this._instance.register_for_session({$sdk_debug_replay_linked_flag_trigger_status:t}),t}onRemoteConfig(t,i){var e;if(this.linkedFlag=(null==(e=t.sessionRecording)?void 0:e.linkedFlag)||null,!F(this.linkedFlag)&&!this.linkedFlagSeen){var r=T(this.linkedFlag)?this.linkedFlag:this.linkedFlag.flag,s=T(this.linkedFlag)?null:this.linkedFlag.variant;this.Rt=this._instance.onFeatureFlags(((t,e)=>{var n=!1;if(I(e)&&r in e){var o=e[r];n=A(o)?!0===o:s?o===s:!!o}this.linkedFlagSeen=n,n&&i(r,s)}))}}stop(){this.Rt()}}class is{constructor(t){this.Tt=[],this._instance=t}onRemoteConfig(t){var i;this.Tt=(null==(i=t.sessionRecording)?void 0:i.eventTriggers)||[]}Mt(t){var i;return 0===this.Tt.length?Vr:(null==(i=this._instance)?void 0:i.get_property(It))===t?Gr:Jr}triggerStatus(t){var i=this.Mt(t),e=i===Gr?Gr:i===Jr?Jr:Vr;return this._instance.register_for_session({$sdk_debug_replay_event_trigger_status:e}),e}stop(){}}function es(t){return t.isRecordingEnabled?Br:zr}function rs(t){if(!t.receivedFlags)return Br;if(!t.isRecordingEnabled)return zr;if(t.urlTriggerMatching.urlBlocked)return Hr;var i=!0===t.isSampled,e=new Yr([t.eventTriggerMatching,t.urlTriggerMatching,t.linkedFlagMatching]).triggerStatus(t.sessionId);return i?Ur:e===Gr?qr:e===Jr?Br:!1===t.isSampled?zr:qr}function ss(t){if(!t.receivedFlags)return Br;if(!t.isRecordingEnabled)return zr;if(t.urlTriggerMatching.urlBlocked)return Hr;var i=new Xr([t.eventTriggerMatching,t.urlTriggerMatching,t.linkedFlagMatching]).triggerStatus(t.sessionId),e=i!==Vr,r=A(t.isSampled);return e&&i===Jr?Br:e&&i===Vr||r&&!t.isSampled?zr:!0===t.isSampled?Ur:qr}var ns=\"[SessionRecording]\",os=z(ns);function as(){var t;return null==v||null==(t=v.__PosthogExtensions__)||null==(t=t.rrweb)?void 0:t.record}var ls=3e5,us=[He.MouseMove,He.MouseInteraction,He.Scroll,He.ViewportResize,He.Input,He.TouchMove,He.MediaInteraction,He.Drag],hs=t=>({rrwebMethod:t,enqueuedAt:Date.now(),attempt:1});function ds(t){return function(t,i){for(var e=\"\",r=0;r<t.length;){var s=t[r++];s<128||i?e+=String.fromCharCode(s):s<224?e+=String.fromCharCode((31&s)<<6|63&t[r++]):s<240?e+=String.fromCharCode((15&s)<<12|(63&t[r++])<<6|63&t[r++]):(s=((15&s)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,e+=String.fromCharCode(55296|s>>10,56320|1023&s))}return e}(Lr(jr(JSON.stringify(t))),!0)}function vs(t){return t.type===Be.Custom&&\"sessionIdle\"===t.data.tag}class cs{get sessionId(){return this.Ct}get Ft(){return this._instance.config.session_recording.session_idle_threshold_ms||3e5}get started(){return this.Ot}get At(){if(!this._instance.sessionManager)throw new Error(ns+\" must be started with a valid sessionManager.\");return this._instance.sessionManager}get Dt(){var t,i;return this.Lt.triggerStatus(this.sessionId)===Jr?6e4:null!==(t=null==(i=this._instance.config.session_recording)?void 0:i.full_snapshot_interval_millis)&&void 0!==t?t:ls}get jt(){var t=this._instance.get_property(kt);return A(t)?t:null}get Nt(){var t,i,e=null==(t=this.C)?void 0:t.data[(null==(i=this.C)?void 0:i.data.length)-1],{sessionStartTimestamp:r}=this.At.checkAndGetSessionAndWindowId(!0);return e?e.timestamp-r:null}get zt(){var i=!!this._instance.get_property(_t),e=!this._instance.config.disable_session_recording;return t&&i&&e}get Ut(){var t=!!this._instance.get_property(gt),i=this._instance.config.enable_recording_console_log;return null!=i?i:t}get qt(){var t,i,e,r,s,n,o=this._instance.config.session_recording.captureCanvas,a=this._instance.get_property(yt),l=null!==(t=null!==(i=null==o?void 0:o.recordCanvas)&&void 0!==i?i:null==a?void 0:a.enabled)&&void 0!==t&&t,u=null!==(e=null!==(r=null==o?void 0:o.canvasFps)&&void 0!==r?r:null==a?void 0:a.fps)&&void 0!==e?e:4,h=null!==(s=null!==(n=null==o?void 0:o.canvasQuality)&&void 0!==n?n:null==a?void 0:a.quality)&&void 0!==s?s:.4;if(\"string\"==typeof h){var d=parseFloat(h);h=isNaN(d)?.4:d}return{enabled:l,fps:ne(u,0,12,\"canvas recording fps\",4),quality:ne(h,0,1,\"canvas recording quality\",.4)}}get Bt(){var t,i,e=this._instance.get_property(mt),r={recordHeaders:null==(t=this._instance.config.session_recording)?void 0:t.recordHeaders,recordBody:null==(i=this._instance.config.session_recording)?void 0:i.recordBody},s=(null==r?void 0:r.recordHeaders)||(null==e?void 0:e.recordHeaders),n=(null==r?void 0:r.recordBody)||(null==e?void 0:e.recordBody),o=I(this._instance.config.capture_performance)?this._instance.config.capture_performance.network_timing:this._instance.config.capture_performance,a=!!(A(o)?o:null==e?void 0:e.capturePerformance);return s||n||a?{recordHeaders:s,recordBody:n,recordPerformance:a}:void 0}get Ht(){var t,i,e,r,s,n,o=this._instance.get_property(bt),a={maskAllInputs:null==(t=this._instance.config.session_recording)?void 0:t.maskAllInputs,maskTextSelector:null==(i=this._instance.config.session_recording)?void 0:i.maskTextSelector,blockSelector:null==(e=this._instance.config.session_recording)?void 0:e.blockSelector},l=null!==(r=null==a?void 0:a.maskAllInputs)&&void 0!==r?r:null==o?void 0:o.maskAllInputs,u=null!==(s=null==a?void 0:a.maskTextSelector)&&void 0!==s?s:null==o?void 0:o.maskTextSelector,h=null!==(n=null==a?void 0:a.blockSelector)&&void 0!==n?n:null==o?void 0:o.blockSelector;return R(l)&&R(u)&&R(h)?void 0:{maskAllInputs:null==l||l,maskTextSelector:u,blockSelector:h}}get Wt(){var t=this._instance.get_property(wt);return O(t)?t:null}get Gt(){var t=this._instance.get_property(St);return O(t)?t:null}get status(){return this.Jt?this.Vt({receivedFlags:this.Jt,isRecordingEnabled:this.zt,isSampled:this.jt,urlTriggerMatching:this.Kt,eventTriggerMatching:this.Yt,linkedFlagMatching:this.Xt,sessionId:this.sessionId}):Br}constructor(t){if(this.Vt=es,this.Jt=!1,this.Qt=[],this.Zt=\"unknown\",this.ti=Date.now(),this.Lt=new Qr,this.ii=void 0,this.ei=void 0,this.ri=void 0,this.si=void 0,this.ni=void 0,this._forceAllowLocalhostNetworkCapture=!1,this.oi=()=>{this.ai()},this.li=()=>{this.ui(\"browser offline\",{})},this.hi=()=>{this.ui(\"browser online\",{})},this.di=()=>{if(null!=o&&o.visibilityState){var t=\"window \"+o.visibilityState;this.ui(t,{})}},this._instance=t,this.Ot=!1,this.vi=\"/s/\",this.ci=void 0,this.Jt=!1,!this._instance.sessionManager)throw os.error(\"started without valid sessionManager\"),new Error(ns+\" started without valid sessionManager. This is a bug.\");if(this._instance.config.__preview_experimental_cookieless_mode)throw new Error(ns+\" cannot be used with __preview_experimental_cookieless_mode.\");this.Xt=new ts(this._instance),this.Kt=new Zr(this._instance),this.Yt=new is(this._instance);var{sessionId:i,windowId:e}=this.At.checkAndGetSessionAndWindowId();this.Ct=i,this.fi=e,this.C=this.pi(),this.Ft>=this.At.sessionTimeoutMs&&os.warn(\"session_idle_threshold_ms (\"+this.Ft+\") is greater than the session timeout (\"+this.At.sessionTimeoutMs+\"). Session will never be detected as idle\")}startIfEnabledOrStop(i){this.zt?(this.gi(i),st(t,\"beforeunload\",this.oi),st(t,\"offline\",this.li),st(t,\"online\",this.hi),st(t,\"visibilitychange\",this.di),this.mi(),this.bi(),F(this.ii)&&(this.ii=this._instance.on(\"eventCaptured\",(t=>{try{if(\"$pageview\"===t.event){var i=null!=t&&t.properties.$current_url?this.yi(null==t?void 0:t.properties.$current_url):\"\";if(!i)return;this.ui(\"$pageview\",{href:i})}}catch(t){os.error(\"Could not add $pageview to rrweb session\",t)}}))),this.ei||(this.ei=this.At.onSessionId(((t,i,e)=>{var r,s;e&&(this.ui(\"$session_id_change\",{sessionId:t,windowId:i,changeReason:e}),null==(r=this._instance)||null==(r=r.persistence)||r.unregister(It),null==(s=this._instance)||null==(s=s.persistence)||s.unregister(Et))})))):this.stopRecording()}stopRecording(){var i,e,r,s;this.Ot&&this.ci&&(this.ci(),this.ci=void 0,this.Ot=!1,null==t||t.removeEventListener(\"beforeunload\",this.oi),null==t||t.removeEventListener(\"offline\",this.li),null==t||t.removeEventListener(\"online\",this.hi),null==t||t.removeEventListener(\"visibilitychange\",this.di),this.pi(),clearInterval(this.wi),null==(i=this.ii)||i.call(this),this.ii=void 0,null==(e=this.ni)||e.call(this),this.ni=void 0,null==(r=this.ei)||r.call(this),this.ei=void 0,null==(s=this.si)||s.call(this),this.si=void 0,this.Yt.stop(),this.Kt.stop(),this.Xt.stop(),os.info(\"stopped\"))}Si(){var t;null==(t=this._instance.persistence)||t.unregister(kt)}$i(t){var i,e=this.Ct!==t,r=this.Wt;if(O(r)){var s=this.jt,n=e||!A(s),o=n?Nr(t,r):s;n&&(o?this.xi(Ur):os.warn(\"Sample rate (\"+r+\") has determined that this sessionId (\"+t+\") will not be sent to the server.\"),this.ui(\"samplingDecisionMade\",{sampleRate:r,isSampled:o})),null==(i=this._instance.persistence)||i.register({[kt]:o})}else this.Si()}onRemoteConfig(t){var i,e,r,s;(this.ui(\"$remote_config_received\",t),this.ki(t),null!=(i=t.sessionRecording)&&i.endpoint)&&(this.vi=null==(s=t.sessionRecording)?void 0:s.endpoint);this.mi(),\"any\"===(null==(e=t.sessionRecording)?void 0:e.triggerMatchType)?(this.Vt=rs,this.Lt=new Yr([this.Yt,this.Kt])):(this.Vt=ss,this.Lt=new Xr([this.Yt,this.Kt])),this._instance.register_for_session({$sdk_debug_replay_remote_trigger_matching_config:null==(r=t.sessionRecording)?void 0:r.triggerMatchType}),this.Kt.onRemoteConfig(t),this.Yt.onRemoteConfig(t),this.Xt.onRemoteConfig(t,((t,i)=>{this.xi(\"linked_flag_matched\",{flag:t,variant:i})})),this.Jt=!0,this.startIfEnabledOrStop()}mi(){O(this.Wt)&&F(this.si)&&(this.si=this.At.onSessionId((t=>{this.$i(t)})))}ki(t){if(this._instance.persistence){var i,e=this._instance.persistence,r=()=>{var i,r,s,n,o,a,l,u,h,d=null==(i=t.sessionRecording)?void 0:i.sampleRate,v=F(d)?null:parseFloat(d);F(v)&&this.Si();var c=null==(r=t.sessionRecording)?void 0:r.minimumDurationMilliseconds;e.register({[_t]:!!t.sessionRecording,[gt]:null==(s=t.sessionRecording)?void 0:s.consoleLogRecordingEnabled,[mt]:B({capturePerformance:t.capturePerformance},null==(n=t.sessionRecording)?void 0:n.networkPayloadCapture),[bt]:null==(o=t.sessionRecording)?void 0:o.masking,[yt]:{enabled:null==(a=t.sessionRecording)?void 0:a.recordCanvas,fps:null==(l=t.sessionRecording)?void 0:l.canvasFps,quality:null==(u=t.sessionRecording)?void 0:u.canvasQuality},[wt]:v,[St]:R(c)?null:c,[$t]:null==(h=t.sessionRecording)?void 0:h.scriptConfig})};r(),null==(i=this.ri)||i.call(this),this.ri=this.At.onSessionId(r)}}log(t,i){var e;void 0===i&&(i=\"log\"),null==(e=this._instance.sessionRecording)||e.onRRwebEmit({type:6,data:{plugin:\"rrweb/console@1\",payload:{level:i,trace:[],payload:[JSON.stringify(t)]}},timestamp:Date.now()})}gi(t){if(!R(Object.assign)&&!R(Array.from)&&!(this.Ot||this._instance.config.disable_session_recording||this._instance.consent.isOptedOut())){var i;if(this.Ot=!0,this.At.checkAndGetSessionAndWindowId(),as())this.Ei();else null==(i=v.__PosthogExtensions__)||null==i.loadExternalDependency||i.loadExternalDependency(this._instance,this.Ii,(t=>{if(t)return os.error(\"could not load recorder\",t);this.Ei()}));os.info(\"starting\"),this.status===qr&&this.xi(t||\"recording_initialized\")}}get Ii(){var t;return(null==(t=this._instance)||null==(t=t.persistence)||null==(t=t.get_property($t))?void 0:t.script)||\"recorder\"}Pi(t){var i;return 3===t.type&&-1!==us.indexOf(null==(i=t.data)?void 0:i.source)}Ri(t){var i=this.Pi(t);i||this.Zt||t.timestamp-this.ti>this.Ft&&(this.Zt=!0,clearInterval(this.wi),this.ui(\"sessionIdle\",{eventTimestamp:t.timestamp,lastActivityTimestamp:this.ti,threshold:this.Ft,bufferLength:this.C.data.length,bufferSize:this.C.size}),this.ai());var e=!1;if(i&&(this.ti=t.timestamp,this.Zt)){var r=\"unknown\"===this.Zt;this.Zt=!1,r||(this.ui(\"sessionNoLongerIdle\",{reason:\"user activity\",type:t.type}),e=!0)}if(!this.Zt){var{windowId:s,sessionId:n}=this.At.checkAndGetSessionAndWindowId(!i,t.timestamp),o=this.Ct!==n,a=this.fi!==s;this.fi=s,this.Ct=n,o||a?(this.stopRecording(),this.startIfEnabledOrStop(\"session_id_changed\")):e&&this.Ti()}}Mi(t){try{return t.rrwebMethod(),!0}catch(i){return this.Qt.length<10?this.Qt.push({enqueuedAt:t.enqueuedAt||Date.now(),attempt:t.attempt++,rrwebMethod:t.rrwebMethod}):os.warn(\"could not emit queued rrweb event.\",i,t),!1}}ui(t,i){return this.Mi(hs((()=>as().addCustomEvent(t,i))))}Ci(){return this.Mi(hs((()=>as().takeFullSnapshot())))}Ei(){var t,i,e,r,s={blockClass:\"ph-no-capture\",blockSelector:void 0,ignoreClass:\"ph-ignore-input\",maskTextClass:\"ph-mask\",maskTextSelector:void 0,maskTextFn:void 0,maskAllInputs:!0,maskInputOptions:{password:!0},maskInputFn:void 0,slimDOMOptions:{},collectFonts:!1,inlineStylesheet:!0,recordCrossOriginIframes:!1},n=this._instance.config.session_recording;for(var[o,a]of Object.entries(n||{}))o in s&&(\"maskInputOptions\"===o?s.maskInputOptions=B({password:!0},a):s[o]=a);(this.qt&&this.qt.enabled&&(s.recordCanvas=!0,s.sampling={canvas:this.qt.fps},s.dataURLOptions={type:\"image/webp\",quality:this.qt.quality}),this.Ht)&&(s.maskAllInputs=null===(i=this.Ht.maskAllInputs)||void 0===i||i,s.maskTextSelector=null!==(e=this.Ht.maskTextSelector)&&void 0!==e?e:void 0,s.blockSelector=null!==(r=this.Ht.blockSelector)&&void 0!==r?r:void 0);var l=as();if(l){this.Fi=null!==(t=this.Fi)&&void 0!==t?t:new tr(l,{refillRate:this._instance.config.session_recording.__mutationThrottlerRefillRate,bucketSize:this._instance.config.session_recording.__mutationThrottlerBucketSize,onBlockedNode:(t,i)=>{var e=\"Too many mutations on node '\"+t+\"'. Rate limiting. This could be due to SVG animations or something similar\";os.info(e,{node:i}),this.log(ns+\" \"+e,\"warn\")}});var u=this.Oi();this.ci=l(B({emit:t=>{this.onRRwebEmit(t)},plugins:u},s)),this.ti=Date.now(),this.Zt=A(this.Zt)?this.Zt:\"unknown\",this.ui(\"$session_options\",{sessionRecordingOptions:s,activePlugins:u.map((t=>null==t?void 0:t.name))}),this.ui(\"$posthog_config\",{config:this._instance.config})}else os.error(\"onScriptLoaded was called but rrwebRecord is not available. This indicates something has gone wrong.\")}Ti(){if(this.wi&&clearInterval(this.wi),!0!==this.Zt){var t=this.Dt;t&&(this.wi=setInterval((()=>{this.Ci()}),t))}}Oi(){var t,i,e=[],r=null==(t=v.__PosthogExtensions__)||null==(t=t.rrwebPlugins)?void 0:t.getRecordConsolePlugin;r&&this.Ut&&e.push(r());var s=null==(i=v.__PosthogExtensions__)||null==(i=i.rrwebPlugins)?void 0:i.getRecordNetworkPlugin;this.Bt&&E(s)&&(!wi.includes(location.hostname)||this._forceAllowLocalhostNetworkCapture?e.push(s(Ze(this._instance.config,this.Bt))):os.info(\"NetworkCapture not started because we are on localhost.\"));return e}onRRwebEmit(t){var i;if(this.Ai(),t&&I(t)){if(t.type===Be.Meta){var e=this.yi(t.data.href);if(this.Di=e,!e)return;t.data.href=e}else this.Li();if(this.Kt.checkUrlTriggerConditions((()=>this.ji()),(()=>this.Ni()),(t=>this.zi(t))),!this.Kt.urlBlocked||(r=t).type===Be.Custom&&\"recording paused\"===r.data.tag){var r;t.type===Be.FullSnapshot&&this.Ti(),t.type===Be.FullSnapshot&&this.Jt&&this.Lt.triggerStatus(this.sessionId)===Jr&&this.pi();var s=this.Fi?this.Fi.throttleMutations(t):t;if(s){var n=function(t){var i=t;if(i&&I(i)&&6===i.type&&I(i.data)&&\"rrweb/console@1\"===i.data.plugin){i.data.payload.payload.length>10&&(i.data.payload.payload=i.data.payload.payload.slice(0,10),i.data.payload.payload.push(\"...[truncated]\"));for(var e=[],r=0;r<i.data.payload.payload.length;r++)i.data.payload.payload[r]&&i.data.payload.payload[r].length>2e3?e.push(i.data.payload.payload[r].slice(0,2e3)+\"...[truncated]\"):e.push(i.data.payload.payload[r]);return i.data.payload.payload=e,t}return t}(s);if(this.Ri(n),!0!==this.Zt||vs(n)){if(vs(n)){var o=n.data.payload;if(o){var a=o.lastActivityTimestamp,l=o.threshold;n.timestamp=a+l}}var u=null===(i=this._instance.config.session_recording.compress_events)||void 0===i||i?function(t){if(Ue(t)<1024)return t;try{if(t.type===Be.FullSnapshot)return B({},t,{data:ds(t.data),cv:\"2024-10\"});if(t.type===Be.IncrementalSnapshot&&t.data.source===He.Mutation)return B({},t,{cv:\"2024-10\",data:B({},t.data,{texts:ds(t.data.texts),attributes:ds(t.data.attributes),removes:ds(t.data.removes),adds:ds(t.data.adds)})});if(t.type===Be.IncrementalSnapshot&&t.data.source===He.StyleSheetRule)return B({},t,{cv:\"2024-10\",data:B({},t.data,{adds:t.data.adds?ds(t.data.adds):void 0,removes:t.data.removes?ds(t.data.removes):void 0})})}catch(t){os.error(\"could not compress event - will use uncompressed event\",t)}return t}(n):n,h={$snapshot_bytes:Ue(u),$snapshot_data:u,$session_id:this.Ct,$window_id:this.fi};this.status!==zr?this.Ui(h):this.pi()}}}}}Li(){if(!this._instance.config.capture_pageview&&t){var i=this.yi(t.location.href);this.Di!==i&&(this.ui(\"$url_changed\",{href:i}),this.Di=i)}}Ai(){if(this.Qt.length){var t=[...this.Qt];this.Qt=[],t.forEach((t=>{Date.now()-t.enqueuedAt<=2e3&&this.Mi(t)}))}}yi(t){var i=this._instance.config.session_recording;if(i.maskNetworkRequestFn){var e,r={url:t};return null==(e=r=i.maskNetworkRequestFn(r))?void 0:e.url}return t}pi(){return this.C={size:0,data:[],sessionId:this.Ct,windowId:this.fi},this.C}ai(){this.qi&&(clearTimeout(this.qi),this.qi=void 0);var t=this.Gt,i=this.Nt,e=O(i)&&i>=0,r=O(t)&&e&&i<t;if(this.status===Br||this.status===Hr||this.status===zr||r)return this.qi=setTimeout((()=>{this.ai()}),2e3),this.C;this.C.data.length>0&&qe(this.C).forEach((t=>{this.Bi({$snapshot_bytes:t.size,$snapshot_data:t.data,$session_id:t.sessionId,$window_id:t.windowId,$lib:\"web\",$lib_version:c.LIB_VERSION})}));return this.pi()}Ui(t){var i,e=2+((null==(i=this.C)?void 0:i.data.length)||0);!this.Zt&&(this.C.size+t.$snapshot_bytes+e>943718.4||this.C.sessionId!==this.Ct)&&(this.C=this.ai()),this.C.size+=t.$snapshot_bytes,this.C.data.push(t.$snapshot_data),this.qi||this.Zt||(this.qi=setTimeout((()=>{this.ai()}),2e3))}Bi(t){this._instance.capture(\"$snapshot\",t,{_url:this._instance.requestRouter.endpointFor(\"api\",this.vi),_noTruncate:!0,_batchKey:\"recordings\",skip_client_rate_limiting:!0})}zi(t){var i;this.Lt.triggerStatus(this.sessionId)===Jr&&(null==(i=this._instance)||null==(i=i.persistence)||i.register({[\"url\"===t?Et:It]:this.Ct}),this.ai(),this.xi(t+\"_trigger_matched\"))}ji(){this.Kt.urlBlocked||(this.Kt.urlBlocked=!0,clearInterval(this.wi),os.info(\"recording paused due to URL blocker\"),this.ui(\"recording paused\",{reason:\"url blocker\"}))}Ni(){this.Kt.urlBlocked&&(this.Kt.urlBlocked=!1,this.Ci(),this.Ti(),this.ui(\"recording resumed\",{reason:\"left blocked url\"}),os.info(\"recording resumed\"))}bi(){0!==this.Yt.Tt.length&&F(this.ni)&&(this.ni=this._instance.on(\"eventCaptured\",(t=>{try{this.Yt.Tt.includes(t.event)&&this.zi(\"event\")}catch(t){os.error(\"Could not activate event trigger\",t)}})))}overrideLinkedFlag(){this.Xt.linkedFlagSeen=!0,this.Ci(),this.xi(\"linked_flag_overridden\")}overrideSampling(){var t;null==(t=this._instance.persistence)||t.register({[kt]:!0}),this.Ci(),this.xi(\"sampling_overridden\")}overrideTrigger(t){this.zi(t)}xi(t,i){this._instance.register_for_session({$session_recording_start_reason:t}),os.info(t.replace(\"_\",\" \"),i),m([\"recording_initialized\",\"session_id_changed\"],t)||this.ui(t,i)}get sdkDebugProperties(){var{sessionStartTimestamp:t}=this.At.checkAndGetSessionAndWindowId(!0);return{$recording_status:this.status,$sdk_debug_replay_internal_buffer_length:this.C.data.length,$sdk_debug_replay_internal_buffer_size:this.C.size,$sdk_debug_current_session_duration:this.Nt,$sdk_debug_session_start:t}}}var fs=z(\"[SegmentIntegration]\");function ps(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()||Ni();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(Dt,\"identified\")),i()},s=e.user();\"then\"in s&&E(s.then)?s.then((t=>r(t))):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||fs.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()||(fs.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(fs.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 _s=\"posthog-js\";function gs(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"]}=void 0===i?{}:i;return i=>{var o,a,l,u,h;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var d=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=d,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var v=(null==(o=i.exception)?void 0:o.values)||[],c=v.map((t=>B({},t,{stacktrace:t.stacktrace?B({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>B({},t,{platform:\"web:javascript\"})))}):void 0}))),f={$exception_message:(null==(a=v[0])?void 0:a.value)||i.message,$exception_type:null==(l=v[0])?void 0:l.type,$exception_personURL:d,$exception_level:i.level,$exception_list:c,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(u=v[0])?void 0:u.value)||i.message,$sentry_exception_type:null==(h=v[0])?void 0:h.type,$sentry_tags:i.tags};return e&&r&&(f.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),t.exceptions.sendExceptionEvent(f),i}}class ms{constructor(t,i,e,r,s){this.name=_s,this.setupOnce=function(n){n(gs(t,{organization:i,projectId:e,prefix:r,severityAllowList:s}))}}}var bs=null!=t&&t.location?Ei(t.location.hash,\"__posthog\")||Ei(location.hash,\"state\"):null,ys=\"_postHogToolbarParams\",ws=z(\"[Toolbar]\"),Ss=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(Ss||{});class $s{constructor(t){this.instance=t}Hi(t){v.ph_toolbar_state=t}Wi(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:Ss.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=bs||Ei(i.hash,\"__posthog\")||Ei(i.hash,\"state\"),a=n?X((()=>JSON.parse(atob(decodeURIComponent(n)))))||X((()=>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(ys)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}Gi(t){var i=v.ph_load_toolbar||v.ph_load_editor;!F(i)&&E(i)?i(t,this.instance):ws.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(Bt));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=B({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(ys,JSON.stringify(B({},s,{source:void 0}))),this.Wi()===Ss.LOADED)this.Gi(s);else if(this.Wi()===Ss.UNINITIALIZED){var n;this.Hi(Ss.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return ws.error(\"[Toolbar] Failed to load\",t),void this.Hi(Ss.UNINITIALIZED);this.Hi(Ss.LOADED),this.Gi(s)})),st(t,\"turbolinks:load\",(()=>{this.Hi(Ss.UNINITIALIZED),this.loadToolbar(s)}))}return!0}Ji(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 xs=z(\"[TracingHeaders]\");class ks{constructor(t){this.Vi=void 0,this.Ki=void 0,this.nt=()=>{var t,i;R(this.Vi)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));R(this.Ki)&&(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}J(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 xs.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.J(this.nt):(null==(t=this.Vi)||t.call(this),null==(i=this.Ki)||i.call(this),this.Vi=void 0,this.Ki=void 0)}}var Es=z(\"[Web Vitals]\"),Is=9e5;class Ps{constructor(t){var i;this.Yi=!1,this.i=!1,this.C={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Xi=()=>{clearTimeout(this.Qi),0!==this.C.metrics.length&&(this._instance.capture(\"$web_vitals\",this.C.metrics.reduce(((t,i)=>B({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:B({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.C={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.Zi=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(R(e))Es.error(\"Could not read session ID. Dropping metrics!\");else{this.C=this.C||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.te();if(!R(r))if(F(null==t?void 0:t.name)||F(null==t?void 0:t.value))Es.error(\"Invalid metric received\",t);else if(this.ie&&t.value>=this.ie)Es.error(\"Ignoring metric with value >= \"+this.ie,t);else this.C.url!==r&&(this.Xi(),this.Qi=setTimeout(this.Xi,this.flushToCaptureTimeoutMs)),R(this.C.url)&&(this.C.url=r),this.C.firstMetricTimestamp=R(this.C.firstMetricTimestamp)?Date.now():this.C.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.C.metrics.push(B({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.C.metrics.length===this.allowedMetrics.length&&this.Xi()}},this.nt=()=>{var t,i,e,r,s=v.__PosthogExtensions__;R(s)||R(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.Zi.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.Zi.bind(this)),this.i=!0):Es.error(\"web vitals callbacks not loaded - not starting\")},this._instance=t,this.Yi=!(null==(i=this._instance.persistence)||!i.props[ct]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=I(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return R(e)?(null==(i=this._instance.persistence)?void 0:i.props[pt])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(I(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get ie(){var t=I(this._instance.config.capture_performance)&&O(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:Is;return 0<t&&t<=6e4?Is:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return Es.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=I(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:A(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return A(i)?i:this.Yi}startIfEnabled(){this.isEnabled&&!this.i&&(Es.info(\"enabled, starting...\"),this.J(this.nt))}onRemoteConfig(t){var i=I(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=I(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[ct]:i}),this._instance.persistence.register({[pt]:e})),this.Yi=i,this.startIfEnabled()}J(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?Es.error(\"failed to load script\",i):t()}))}te(){var i=t?t.location.href:void 0;return i||Es.error(\"Could not determine current URL\"),i}}var Rs=z(\"[Heatmaps]\");function Ts(t){return I(t)&&\"clientX\"in t&&\"clientY\"in t&&O(t.clientX)&&O(t.clientY)}class Ms{constructor(t){var i;this.rageclicks=new yi,this.Yi=!1,this.i=!1,this.ee=null,this.instance=t,this.Yi=!(null==(i=this.instance.persistence)||!i.props[ut])}get flushIntervalMilliseconds(){var t=5e3;return I(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 R(this.instance.config.capture_heatmaps)?R(this.instance.config.enable_heatmaps)?this.Yi:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.i)return;Rs.info(\"starting...\"),this.re(),this.ee=setInterval(this.se.bind(this),this.flushIntervalMilliseconds)}else{var t,i;clearInterval(null!==(t=this.ee)&&void 0!==t?t:void 0),null==(i=this.ne)||i.stop(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ut]:i}),this.Yi=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.C;return this.C=void 0,t}oe(t){this.ae(t.originalEvent,\"deadclick\")}re(){t&&o&&(st(t,\"beforeunload\",this.se.bind(this)),st(o,\"click\",(i=>this.ae(i||(null==t?void 0:t.event))),{capture:!0}),st(o,\"mousemove\",(i=>this.le(i||(null==t?void 0:t.event))),{capture:!0}),this.ne=new se(this.instance,ee,this.oe.bind(this)),this.ne.startIfEnabled(),this.i=!0)}ue(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&&Jt(s)&&!Vt(s,\"body\");){if(s===r)return!1;if(m(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=si(s)}return!1}(ei(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}ae(t,i){var e;if(void 0===i&&(i=\"click\"),!Gt(t.target)&&Ts(t)){var r=this.ue(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.he(B({},r,{type:\"rageclick\"})),this.he(r)}}le(t){!Gt(t.target)&&Ts(t)&&(clearTimeout(this.de),this.de=setTimeout((()=>{this.he(this.ue(t,\"mousemove\"))}),500))}he(i){if(t){var e=t.location.href;this.C=this.C||{},this.C[e]||(this.C[e]=[]),this.C[e].push(i)}}se(){this.C&&!P(this.C)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class Cs{constructor(t){this._instance=t}doPageView(i,e){var r,s=this.ve(i,e);return this.ce={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.ve(t,null==(i=this.ce)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.ce)?void 0:t.pageViewId}}ve(t,i){var e=this.ce;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(!(R(n)||R(o)||R(a)||R(l)||R(u)||R(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:ne(o/n,0,1),v=n<=1?1:ne(a/n,0,1),c=l<=1?1:ne(u/l,0,1),f=l<=1?1:ne(h/l,0,1);r=V(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 Fs=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),C(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},Os=!!u||!!l,As=\"text/plain\",Ds=(t,i)=>{var[e,r]=t.split(\"?\"),s=B({},i);null==r||r.split(\"&\").forEach((t=>{var[i]=t.split(\"=\");delete s[i]}));var n=$i(s);return e+\"?\"+(n=n?(r?r+\"&\":\"\")+n:r)},Ls=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),js=t=>{var{data:i,compression:e}=t;if(i){if(e===_.GZipJS){var r=Lr(jr(Ls(i)),{mtime:0}),s=new Blob([r],{type:As});return{contentType:As,body:s,estimatedSize:s.size}}if(e===_.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=Fs(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}(Ls(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:Ls(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=Ls(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},Ns=[];l&&Ns.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=js(t))&&void 0!==i?i:{},o=new Headers;J(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,B({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){N.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{N.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&Ns.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=js(t))&&void 0!==i?i:{};J(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),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&&Ns.push({transport:\"sendBeacon\",method:t=>{var i=Ds(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=js(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var zs=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 Us(t,i,e){return Ls({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var qs={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=>zs(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!zs(i,t))))),icontains:(t,i)=>i.map(Bs).some((i=>t.map(Bs).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(Bs).every((i=>t.map(Bs).every((t=>!i.includes(t)))))},Bs=t=>t.toLowerCase(),Hs=z(\"[Error tracking]\");class Ws{constructor(t){var i,e;this.fe=[],this._instance=t,this.fe=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(dt))&&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.fe=s,this._instance.persistence&&this._instance.persistence.register({[dt]:this.fe,[vt]:n})}get pe(){var t,i=!!this._instance.get_property(vt),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}sendExceptionEvent(t){if(this._e(t))Hs.info(\"Skipping exception capture because a suppression rule matched\");else{if(this.pe||!this.ge(t))return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"});Hs.info(\"Skipping exception capture because it was thrown by an extension\")}}_e(t){var i=t.$exception_list;if(!i||!k(i)||0===i.length)return!1;var e=i.reduce(((t,i)=>{var{type:e,value:r}=i;return T(e)&&e.length>0&&t.$exception_types.push(e),T(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.fe.some((t=>{var i=t.values.map((t=>{var i,r=qs[t.operator],s=k(t.value)?t.value:[t.value],n=null!==(i=e[t.key])&&void 0!==i?i:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?i.some(Boolean):i.every(Boolean)}))}ge(t){var i=t.$exception_list;return!(!i||!k(i))&&i.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://\")))}}var Gs=\"Mobile\",Js=\"iOS\",Vs=\"Android\",Ks=\"Tablet\",Ys=Vs+\" \"+Ks,Xs=\"iPad\",Qs=\"Apple\",Zs=Qs+\" Watch\",tn=\"Safari\",en=\"BlackBerry\",rn=\"Samsung\",sn=rn+\"Browser\",nn=rn+\" Internet\",on=\"Chrome\",an=on+\" OS\",ln=on+\" \"+Js,un=\"Internet Explorer\",hn=un+\" \"+Gs,dn=\"Opera\",vn=dn+\" Mini\",cn=\"Edge\",fn=\"Microsoft \"+cn,pn=\"Firefox\",_n=pn+\" \"+Js,gn=\"Nintendo\",mn=\"PlayStation\",bn=\"Xbox\",yn=Vs+\" \"+Gs,wn=Gs+\" \"+tn,Sn=\"Windows\",$n=Sn+\" Phone\",xn=\"Nokia\",kn=\"Ouya\",En=\"Generic\",In=En+\" \"+Gs.toLowerCase(),Pn=En+\" \"+Ks.toLowerCase(),Rn=\"Konqueror\",Tn=\"(\\\\d+(\\\\.\\\\d+)?)\",Mn=new RegExp(\"Version/\"+Tn),Cn=new RegExp(bn,\"i\"),Fn=new RegExp(mn+\" \\\\w+\",\"i\"),On=new RegExp(gn+\" \\\\w+\",\"i\"),An=new RegExp(en+\"|PlayBook|BB10\",\"i\"),Dn={\"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 Ln=(t,i)=>i&&m(i,Qs)||function(t){return m(t,tn)&&!m(t,on)&&!m(t,Vs)}(t),jn=function(t,i){return i=i||\"\",m(t,\" OPR/\")&&m(t,\"Mini\")?vn:m(t,\" OPR/\")?dn:An.test(t)?en:m(t,\"IE\"+Gs)||m(t,\"WPDesktop\")?hn:m(t,sn)?nn:m(t,cn)||m(t,\"Edg/\")?fn:m(t,\"FBIOS\")?\"Facebook \"+Gs:m(t,\"UCWEB\")||m(t,\"UCBrowser\")?\"UC Browser\":m(t,\"CriOS\")?ln:m(t,\"CrMo\")||m(t,on)?on:m(t,Vs)&&m(t,tn)?yn:m(t,\"FxiOS\")?_n:m(t.toLowerCase(),Rn.toLowerCase())?Rn:Ln(t,i)?m(t,Gs)?wn:tn:m(t,pn)?pn:m(t,\"MSIE\")||m(t,\"Trident/\")?un:m(t,\"Gecko\")?pn:\"\"},Nn={[hn]:[new RegExp(\"rv:\"+Tn)],[fn]:[new RegExp(cn+\"?\\\\/\"+Tn)],[on]:[new RegExp(\"(\"+on+\"|CrMo)\\\\/\"+Tn)],[ln]:[new RegExp(\"CriOS\\\\/\"+Tn)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Tn)],[tn]:[Mn],[wn]:[Mn],[dn]:[new RegExp(\"(Opera|OPR)\\\\/\"+Tn)],[pn]:[new RegExp(pn+\"\\\\/\"+Tn)],[_n]:[new RegExp(\"FxiOS\\\\/\"+Tn)],[Rn]:[new RegExp(\"Konqueror[:/]?\"+Tn,\"i\")],[en]:[new RegExp(en+\" \"+Tn),Mn],[yn]:[new RegExp(\"android\\\\s\"+Tn,\"i\")],[nn]:[new RegExp(sn+\"\\\\/\"+Tn)],[un]:[new RegExp(\"(rv:|MSIE )\"+Tn)],Mozilla:[new RegExp(\"rv:\"+Tn)]},zn=function(t,i){var e=jn(t,i),r=Nn[e];if(R(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},Un=[[new RegExp(bn+\"; \"+bn+\" (.*?)[);]\",\"i\"),t=>[bn,t&&t[1]||\"\"]],[new RegExp(gn,\"i\"),[gn,\"\"]],[new RegExp(mn,\"i\"),[mn,\"\"]],[An,[en,\"\"]],[new RegExp(Sn,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[$n,\"\"];if(new RegExp(Gs).test(i)&&!/IEMobile\\b/.test(i))return[Sn+\" \"+Gs,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Dn[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[Sn,s]}return[Sn,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[Js,i.join(\".\")]}return[Js,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=R(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+Vs+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+Vs+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[Vs,i.join(\".\")]}return[Vs,\"\"]}],[/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/,[an,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],qn=function(t){return On.test(t)?gn:Fn.test(t)?mn:Cn.test(t)?bn:new RegExp(kn,\"i\").test(t)?kn:new RegExp(\"(\"+$n+\"|WPDesktop)\",\"i\").test(t)?$n:/iPad/.test(t)?Xs:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?Zs:An.test(t)?en:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(xn,\"i\").test(t)?xn:/(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(Gs).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)?Vs:Ys:Vs:new RegExp(\"(pda|\"+Gs+\")\",\"i\").test(t)?In:new RegExp(Ks,\"i\").test(t)&&!new RegExp(Ks+\" pc\",\"i\").test(t)?Pn:\"\"},Bn=\"https?://(.*)\",Hn=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],Wn=K([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],Hn),Gn=\"<masked>\",Jn=[\"li_fat_id\"];function Vn(t,i,e){if(!o)return{};var r,s=i?K([],Hn,e||[]):[],n=Kn(ki(o.URL,s,Gn),t),a=(r={},J(Jn,(function(t){var i=Hi.D(t);r[t]=i||null})),r);return V(a,n)}function Kn(t,i){var e=Wn.concat(i||[]),r={};return J(e,(function(i){var e=xi(t,i);r[i]=e||null})),r}function Yn(t){var i=function(t){return t?0===t.search(Bn+\"google.([^/?]*)\")?\"google\":0===t.search(Bn+\"bing.com\")?\"bing\":0===t.search(Bn+\"yahoo.com\")?\"yahoo\":0===t.search(Bn+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!C(i)){r.$search_engine=i;var s=o?xi(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function Xn(){return navigator.language||navigator.userLanguage}function Qn(){return(null==o?void 0:o.referrer)||\"$direct\"}function Zn(t,i){var e=t?K([],Hn,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:Qn().substring(0,1e3),u:r?ki(r,e,Gn):void 0}}function to(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=Si(e))?void 0:i.host};if(r){s.$current_url=r;var n=Si(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=Kn(r);V(s,o)}if(e){var a=Yn(e);V(s,a)}return s}function io(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function eo(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function ro(i,e){if(!d)return{};var r,s,n,o=i?K([],Hn,e||[]):[],[l,u]=function(t){for(var i=0;i<Un.length;i++){var[e,r]=Un[i],s=e.exec(t),n=s&&(E(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return V(Z({$os:l,$os_version:u,$browser:jn(d,navigator.vendor),$device:qn(d),$device_type:(s=d,n=qn(s),n===Xs||n===Ys||\"Kobo\"===n||\"Kindle Fire\"===n||n===Pn?Ks:n===gn||n===bn||n===mn||n===kn?\"Console\":n===Zs?\"Wearable\":n?Gs:\"Desktop\"),$timezone:io(),$timezone_offset:eo()}),{$current_url:ki(null==a?void 0:a.href,o,Gn),$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:zn(d,navigator.vendor),$browser_language:Xn(),$browser_language_prefix:(r=Xn(),\"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 so=z(\"[FeatureFlags]\"),no=\"$active_feature_flags\",oo=\"$override_feature_flags\",ao=\"$feature_flag_payloads\",lo=\"$override_feature_flag_payloads\",uo=\"$feature_flag_request_id\",ho=t=>{var i={};for(var[e,r]of Y(t||{}))r&&(i[e]=r);return i},vo=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]})))):so.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},co=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class fo{constructor(t){this.me=!1,this.be=!1,this.ye=!1,this.we=!1,this.Se=!1,this.$e=!1,this.xe=!1,this._instance=t,this.featureFlagEventHandlers=[]}flags(){if(this._instance.config.__preview_remote_config)this.$e=!0;else{var t=!this.ke&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.Ee({disableFlags:t})}}get hasLoadedFlags(){return this.be}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(Tt),i=this._instance.get_property(oo),e=this._instance.get_property(lo);if(!e&&!i)return t||{};var r=V({},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=R(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=R(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=B({},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=B({},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.me||(so.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.me=!0),r}getFlagVariants(){var t=this._instance.get_property(Pt),i=this._instance.get_property(oo);if(!i)return t||{};for(var e=V({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.me||(so.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.me=!0),e}getFlagPayloads(){var t=this._instance.get_property(ao),i=this._instance.get_property(lo);if(!i)return t||{};for(var e=V({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.me||(so.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.me=!0),e}reloadFeatureFlags(){this.we||this._instance.config.advanced_disable_feature_flags||this.ke||(this.ke=setTimeout((()=>{this.Ee()}),5))}Ie(){clearTimeout(this.ke),this.ke=void 0}ensureFlagsLoaded(){this.be||this.ye||this.ke||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.we=t}Ee(t){var i;if(this.Ie(),!this._instance.I())if(this.ye)this.Se=!0;else{var e={token:this._instance.config.token,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:B({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(Mt)||{}),group_properties:this._instance.get_property(Ct)};(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(e.disable_flags=!0);var r=this._instance.config.__preview_remote_config,s=r?\"/flags/?v=2\":\"/flags/?v=2&config=true\",n=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",o=this._instance.requestRouter.endpointFor(\"api\",s+n);r&&(e.timezone=io()),this.ye=!0,this._instance.Pe({method:\"POST\",url:o,data:e,compression:this._instance.config.disable_compression?void 0:_.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,r,s=!0;(200===t.statusCode&&(this.Se||(this.$anon_distinct_id=void 0),s=!1),this.ye=!1,this.$e)||(this.$e=!0,this._instance.Re(null!==(r=t.json)&&void 0!==r?r:{}));if(!e.disable_flags||this.Se)if(this.xe=!s,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(co.FeatureFlags))so.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(!e.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},s);this.Se&&(this.Se=!1,this.Ee())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.be||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(uo)||void 0,n=this._instance.get_property(At)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in n)||!n[t].includes(r))){var o,a,l,u,h,d,v,c,f;k(n[t])?n[t].push(r):n[t]=[r],null==(o=this._instance.persistence)||o.register({[At]:n});var p=this.getFeatureFlagDetails(t),_={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_bootstrapped_response:(null==(a=this._instance.config.bootstrap)||null==(a=a.featureFlags)?void 0:a[t])||null,$feature_flag_bootstrapped_payload:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlagPayloads)?void 0:l[t])||null,$used_bootstrap_value:!this.xe};R(null==p||null==(u=p.metadata)?void 0:u.version)||(_.$feature_flag_version=p.metadata.version);var g,m=null!==(h=null==p||null==(d=p.reason)?void 0:d.description)&&void 0!==h?h:null==p||null==(v=p.reason)?void 0:v.code;if(m&&(_.$feature_flag_reason=m),null!=p&&null!=(c=p.metadata)&&c.id&&(_.$feature_flag_id=p.metadata.id),R(null==p?void 0:p.original_variant)&&R(null==p?void 0:p.original_enabled)||(_.$feature_flag_original_response=R(p.original_variant)?p.original_enabled:p.original_variant),null!=p&&null!=(f=p.metadata)&&f.original_payload)_.$feature_flag_original_payload=null==p||null==(g=p.metadata)?void 0:g.original_payload;this._instance.capture(\"$feature_flag_called\",_)}return e}so.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;this._instance.Pe({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"api\",\"/flags/?v=2&config=true\"),data:{distinct_id:this._instance.get_distinct_id(),token:e},compression:this._instance.config.disable_compression?void 0:_.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.be||this.getFlags()&&this.getFlags().length>0)return!!this.getFeatureFlag(t,i);so.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.be=!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=vo(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId;if(k(a)){so.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var h={};if(a)for(var d=0;d<a.length;d++)h[a[d]]=!0;i&&i.register({[no]:a,[Pt]:h})}else{var v=a,c=l,f=o;t.errorsWhileComputingFlags&&(v=B({},e,v),c=B({},r,c),f=B({},s,f)),i&&i.register(B({[no]:Object.keys(ho(v)),[Pt]:v||{},[ao]:c||{},[Tt]:f||{}},u?{[uo]:u}:{}))}}}(t,this._instance.persistence,e,r,s),this.Te(i)}}override(t,i){void 0===i&&(i=!1),so.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return so.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(oo),this._instance.persistence.unregister(lo),void this.Te();if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.me=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(oo);else if(e.flags)if(k(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[oo]:r})}else this._instance.persistence.register({[oo]:e.flags});return\"payloads\"in e&&(!1===e.payloads?this._instance.persistence.unregister(lo):e.payloads&&this._instance.persistence.register({[lo]:e.payloads})),void this.Te()}this.Te()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.be){var{flags:i,flagVariants:e}=this.Me();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(Rt)||[]).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=B({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[no]:Object.keys(ho(a)),[Pt]:a}),this.Te()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(Rt),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance.Pe({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(Rt),null==(r=this._instance.persistence)||r.register({[Rt]:s}),t(s)}}})}Me(){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)),{})}}Te(t){var{flags:i,flagVariants:e}=this.Me();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(Mt)||{};this._instance.register({[Mt]:B({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(Mt)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(Ct)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=B({},e[i],t[i]),delete t[i]})),this._instance.register({[Ct]:B({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(Ct)||{};this._instance.register({[Ct]:B({},i,{[t]:{}})})}else this._instance.unregister(Ct)}reset(){this.be=!1,this.ye=!1,this.we=!1,this.Se=!1,this.$e=!1,this.xe=!1,this.$anon_distinct_id=void 0,this.Ie(),this.me=!1}}var po=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class _o{constructor(t,i){this.S=t,this.props={},this.Ce=!1,this.Fe=(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.B=this.Oe(t),this.load(),t.debug&&N.info(\"Persistence loaded\",t.persistence,B({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.Ae}Oe(t){-1===po.indexOf(t.persistence.toLowerCase())&&(N.critical(\"Unknown persistence type \"+t.persistence+\"; falling back to localStorage+cookie\"),t.persistence=\"localStorage+cookie\");var i=t.persistence.toLowerCase();return\"localstorage\"===i&&Gi.O()?Gi:\"localstorage+cookie\"===i&&Vi.O()?Vi:\"sessionstorage\"===i&&Qi.O()?Qi:\"memory\"===i?Yi:\"cookie\"===i?Hi:Vi.O()?Vi:Hi}properties(){var t={};return J(this.props,(function(i,e){if(e===Pt&&I(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,(C(o=Wt)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(J(o,(function(t){if(l||(l=t===a))return W})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.Ae){var t=this.B.L(this.Fe);t&&(this.props=V({},t))}}save(){this.Ae||this.B.j(this.Fe,this.props,this.De,this.Le,this.je,this.S.debug)}remove(){this.B.N(this.Fe,!1),this.B.N(this.Fe,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(I(t)){R(i)&&(i=\"None\"),this.De=R(e)?this.Ne:e;var r=!1;if(J(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(I(t)){this.De=R(i)?this.Ne:i;var e=!1;if(J(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.Ce){var t=Vn(this.S.custom_campaign_params,this.S.mask_personal_data_properties,this.S.custom_personal_data_properties);P(Z(t))||this.register(t),this.Ce=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?Yn(t):{})}update_referrer_info(){var t;this.register_once({$referrer:Qn(),$referring_domain:null!=o&&o.referrer&&(null==(t=Si(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[Nt]||this.props[zt]||this.register_once({[Ut]:Zn(this.S.mask_personal_data_properties,this.S.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};J([zt,Nt],(i=>{var e=this.props[i];e&&J(e,(function(i,e){t[\"$initial_\"+y(e)]=i}))}));var i,e,r=this.props[Ut];if(r){var s=(i=to(r),e={},J(i,(function(t,i){e[\"$initial_\"+y(i)]=t})),e);V(t,s)}return t}safe_merge(t){return J(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ne=this.De=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){var r=this.Oe(t),s=this.props;this.clear(),this.B=r,this.props=s,this.save()}}set_disabled(t){this.Ae=t,this.Ae?this.remove():this.save()}set_cross_subdomain(t){t!==this.Le&&(this.Le=t,this.remove(),this.save())}set_secure(t){t!==this.je&&(this.je=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[at]||{};e[t]=i,this.props[at]=e,this.save()}remove_event_timer(t){var i=(this.props[at]||{})[t];return R(i)||(delete this.props[at][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}class go{constructor(){this.ze={},this.ze={}}on(t,i){return this.ze[t]||(this.ze[t]=[]),this.ze[t].push(i),()=>{this.ze[t]=this.ze[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.ze[t]||[])e(i);for(var r of this.ze[\"*\"]||[])r(t,i)}}class mo{constructor(t){this.Ue=new go,this.qe=(t,i)=>this.Be(t,i)&&this.He(t,i)&&this.We(t,i),this.Be=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.Ge=new Set,this.Je=new Set}init(){var t;if(!R(null==(t=this._instance)?void 0:t.Ve)){var i;null==(i=this._instance)||i.Ve(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!R(null==(i=this._instance)?void 0:i.Ve)&&(t.forEach((t=>{var i,e;null==(i=this.Je)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.Ge)||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.Ge.has(t)||this.Ge.has(null==i?void 0:i.event))&&this.Je&&(null==(e=this.Je)?void 0:e.size)>0&&this.Je.forEach((t=>{this.Ke(i,t)&&this.Ue.emit(\"actionCaptured\",t.name)}))}Ye(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Ke(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.qe(t,e))return!0;return!1}onAction(t,i){return this.Ue.on(t,i)}He(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(!mo.Xe(r,null==i?void 0:i.url,(null==i?void 0:i.url_matching)||\"contains\"))return!1}return!0}static Xe(i,e,r){switch(r){case\"regex\":return!!t&&zs(i,e);case\"exact\":return e===i;case\"contains\":var s=mo.Qe(e).replace(/_/g,\".\").replace(/%/g,\".*\");return zs(i,s);default:return!1}}static Qe(t){return t.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\")}We(t,i){if((null!=i&&i.href||null!=i&&i.tag_name||null!=i&&i.text)&&!this.Ze(t).some((t=>!(null!=i&&i.href&&!mo.Xe(t.href||\"\",null==i?void 0:i.href,(null==i?void 0:i.href_matching)||\"exact\"))&&((null==i||!i.tag_name||t.tag_name===(null==i?void 0:i.tag_name))&&!(null!=i&&i.text&&!mo.Xe(t.text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\")&&!mo.Xe(t.$el_text||\"\",null==i?void 0:i.text,(null==i?void 0:i.text_matching)||\"exact\"))))))return!1;if(null!=i&&i.selector){var e,r=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(!r)return!1;if(!r.includes(null==i?void 0:i.selector))return!1}return!0}Ze(t){return null==(null==t?void 0:t.properties.$elements)?[]:null==t?void 0:t.properties.$elements}}var bo=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),yo=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}({}),wo=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),So=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),$o=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),xo=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),ko=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t}({}),Eo=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}({}),Io=z(\"[Surveys]\");var Po=\"seenSurvey_\",Ro=(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},To=[wo.Popover,wo.Widget,wo.API];class Mo{constructor(t){this._instance=t,this.tr=new Map,this.ir=new Map}register(t){var i;R(null==(i=this._instance)?void 0:i.Ve)||(this.er(t),this.rr(t))}rr(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.sr){this.sr=new mo(this._instance),this.sr.init();this.sr.Ye((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.sr)||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.ir.get(i.name);e&&e.push(t.id),this.ir.set(i.name,e||[t.id])}})))}))}}er(t){var i;if(0!==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})).length){null==(i=this._instance)||i.Ve(((t,i)=>{this.onEvent(t,i)})),t.forEach((t=>{var i;null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||i.forEach((i=>{if(i&&i.name){var e=this.tr.get(i.name);e&&e.push(t.id),this.tr.set(i.name,e||[t.id])}}))}))}}onEvent(t,i){var e,r=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[Ot])||[];if(\"survey shown\"===t&&i&&r.length>0){var s;Io.info(\"survey event matched, removing survey from activated surveys\",{event:t,eventPayload:i,existingActivatedSurveys:r});var n=null==i||null==(s=i.properties)?void 0:s.$survey_id;if(n){var o=r.indexOf(n);o>=0&&(r.splice(o,1),this.nr(r))}}else this.tr.has(t)&&(Io.info(\"survey event matched, updating activated surveys\",{event:t,surveys:this.tr.get(t)}),this.nr(r.concat(this.tr.get(t)||[])))}onAction(t){var i,e=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[Ot])||[];this.ir.has(t)&&this.nr(e.concat(this.ir.get(t)||[]))}nr(t){var i;null==(i=this._instance)||null==(i=i.persistence)||i.register({[Ot]:[...new Set(t)]})}getSurveys(){var t,i=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[Ot];return i||[]}getEventToSurveys(){return this.tr}ar(){return this.sr}}class Co{constructor(t){this.lr=void 0,this._surveyManager=null,this.ur=!1,this.hr=!1,this.dr=[],this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){var i=t.surveys;if(F(i))return Io.warn(\"Flags not loaded yet. Not loading surveys.\");var e=k(i);this.lr=e?i.length>0:i,Io.info(\"flags response received, isSurveysEnabled: \"+this.lr),this.loadIfEnabled()}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Po)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.hr)Io.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Io.info(\"Disabled. Not loading surveys.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!R(this.lr)||this._instance.config.advanced_enable_surveys){var i=this.lr||this._instance.config.advanced_enable_surveys;this.hr=!0;try{var e=t.generateSurveys;if(e)return void this.vr(e,i);var r=t.loadExternalDependency;if(!r)return void this.cr(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this.cr(\"Could not load surveys script\",e):this.vr(t.generateSurveys,i)}))}catch(t){throw this.cr(\"Error initializing surveys\",t),t}finally{this.hr=!1}}}else Io.error(\"PostHog Extensions not found.\")}}vr(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new Mo(this._instance),Io.info(\"Surveys loaded successfully\"),this.pr({isLoaded:!0})}cr(t,i){Io.error(t,i),this.pr({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.dr.push(t),this._surveyManager&&this.pr({isLoaded:!0}),()=>{this.dr=this.dr.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Io.info(\"Disabled. Not loading surveys.\"),t([]);var e=this._instance.get_property(Ft);if(e&&!i)return t(e,{isLoaded:!0});if(this.ur)return t([],{isLoaded:!1,error:\"Surveys are already being loaded\"});try{this.ur=!0,this._instance.Pe({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 e;this.ur=!1;var r=i.statusCode;if(200!==r||!i.json){var s=\"Surveys API could not be loaded, status: \"+r;return Io.error(s),t([],{isLoaded:!1,error:s})}var n,o=i.json.surveys||[],a=o.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))));a.length>0&&(null==(n=this._surveyEventReceiver)||n.register(a));return null==(e=this._instance.persistence)||e.register({[Ft]:o}),t(o,{isLoaded:!0})}})}catch(t){throw this.ur=!1,t}}pr(t){for(var i of this.dr)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Io.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!F(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Io.warn(\"init was not called\")}_r(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}gr(t){if(F(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this._r(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(F(this._surveyManager))return Io.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.gr(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return F(this._surveyManager)?(Io.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.gr(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i){if(F(this._surveyManager))Io.warn(\"init was not called\");else{var e=this._r(t);if(e)if(To.includes(e.type)){var r=null==o?void 0:o.querySelector(i);r?this._surveyManager.renderSurvey(e,r):Io.warn(\"Survey element not found\")}else Io.warn(\"Surveys of type \"+e.type+\" cannot be rendered in the app\");else Io.warn(\"Survey not found\")}}}var Fo=z(\"[RateLimiter]\");class Oo{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=>{Fo.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void Fo.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(jt))&&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(jt,n),{isRateLimited:o,remainingTokens:n.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var Ao=z(\"[RemoteConfig]\");class Do{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}mr(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))):(Ao.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}br(t){this._instance.Pe({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 Ao.info(\"Using preloaded remote config\",this.remoteConfig),void this.Re(this.remoteConfig);if(this._instance.I())return void Ao.warn(\"Remote config is disabled. Falling back to local config.\");this.mr((t=>{if(!t)return Ao.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.br((t=>{this.Re(t)}));this.Re(t)}))}catch(t){Ao.error(\"Error loading remote config\",t)}}Re(t){t?this._instance.config.__preview_remote_config?(this._instance.Re(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):Ao.info(\"__preview_remote_config is disabled. Logging config instead\",t):Ao.error(\"Failed to fetch remote config from PostHog.\")}}var Lo=3e3;class jo{constructor(t,i){this.yr=!0,this.wr=[],this.Sr=ne((null==i?void 0:i.flush_interval_ms)||Lo,250,5e3,\"flush interval\",Lo),this.$r=t}enqueue(t){this.wr.push(t),this.kr||this.Er()}unload(){this.Ir();var t=this.wr.length>0?this.Pr():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.$r(B({},t,{transport:\"sendBeacon\"}))}))}enable(){this.yr=!1,this.Er()}Er(){var t=this;this.yr||(this.kr=setTimeout((()=>{if(this.Ir(),this.wr.length>0){var i=this.Pr(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&k(e.data)&&J(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.$r(e)};for(var r in i)e()}}),this.Sr))}Ir(){clearTimeout(this.kr),this.kr=void 0}Pr(){var t={};return J(this.wr,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;R(t[s])&&(t[s]=B({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.wr=[],t}}var No=[\"retriesPerformedSoFar\"];class zo{constructor(i){this.Rr=!1,this.Tr=3e3,this.wr=[],this._instance=i,this.wr=[],this.Mr=!0,!R(t)&&\"onLine\"in t.navigator&&(this.Mr=t.navigator.onLine,st(t,\"online\",(()=>{this.Mr=!0,this.se()})),st(t,\"offline\",(()=>{this.Mr=!1})))}get length(){return this.wr.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=H(t,No);O(i)&&i>0&&(e.url=Ds(e.url,{retry_count:i})),this._instance.Pe(B({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this.Cr(B({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}Cr(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.wr.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),N.warn(s),this.Rr||(this.Rr=!0,this.Fr())}Fr(){this.Or&&clearTimeout(this.Or),this.Or=setTimeout((()=>{this.Mr&&this.wr.length>0&&this.se(),this.Fr()}),this.Tr)}se(){var t=Date.now(),i=[],e=this.wr.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.wr=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:t}of(this.Or&&(clearTimeout(this.Or),this.Or=void 0),this.wr))try{this._instance.Pe(B({},t,{transport:\"sendBeacon\"}))}catch(t){N.error(t)}this.wr=[]}}class Uo{constructor(t){this.Ar=()=>{var t,i,e,r;this.Dr||(this.Dr={});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.Dr.lastScrollY=Math.ceil(n),this.Dr.maxScrollY=Math.max(n,null!==(t=this.Dr.maxScrollY)&&void 0!==t?t:0),this.Dr.maxScrollHeight=Math.max(o,null!==(i=this.Dr.maxScrollHeight)&&void 0!==i?i:0),this.Dr.lastContentY=a,this.Dr.maxContentY=Math.max(a,null!==(e=this.Dr.maxContentY)&&void 0!==e?e:0),this.Dr.maxContentHeight=Math.max(l,null!==(r=this.Dr.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.Dr}resetContext(){var t=this.Dr;return setTimeout(this.Ar,0),t}startMeasuringScrollPosition(){st(t,\"scroll\",this.Ar,{capture:!0}),st(t,\"scrollend\",this.Ar,{capture:!0}),st(t,\"resize\",this.Ar)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=k(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 qo=t=>Zn(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.Lr=t=>{var i=this.jr();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Nr(this._instance)};this.zr.register({[Lt]:e})}},this._instance=t,this.Ur=i,this.zr=e,this.Nr=r||qo,this.Ur.onSessionId(this.Lr)}jr(){return this.zr.props[Lt]}getSetOnceProps(){var t,i=null==(t=this.jr())?void 0:t.props;return i?\"r\"in i?to(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 J(Z(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+y(e)]=i})),t}}var Ho=z(\"[SessionId]\");class Wo{constructor(t,i,e){var r;if(this.qr=[],this.Br=(t,i)=>Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(t.config.__preview_experimental_cookieless_mode)throw new Error(\"SessionIdManager cannot be used with __preview_experimental_cookieless_mode\");this.S=t.config,this.zr=t.persistence,this.fi=void 0,this.Ct=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.Hr=i||Ni,this.Wr=e||Ni;var s=this.S.persistence_name||this.S.token,n=this.S.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*ne(n,60,36e3,\"session_idle_timeout_seconds\",1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.Gr(),this.Jr=\"ph_\"+s+\"_window_id\",this.Vr=\"ph_\"+s+\"_primary_window_exists\",this.Kr()){var o=Qi.L(this.Jr),a=Qi.L(this.Vr);o&&!a?this.fi=o:Qi.N(this.Jr),Qi.j(this.Vr,!0)}if(null!=(r=this.S.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.S.bootstrap.sessionID);this.Yr(this.S.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){Ho.error(\"Invalid sessionID in bootstrap\",t)}this.Xr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return R(this.qr)&&(this.qr=[]),this.qr.push(t),this.Ct&&t(this.Ct,this.fi),()=>{this.qr=this.qr.filter((i=>i!==t))}}Kr(){return\"memory\"!==this.S.persistence&&!this.zr.Ae&&Qi.O()}Qr(t){t!==this.fi&&(this.fi=t,this.Kr()&&Qi.j(this.Jr,t))}Zr(){return this.fi?this.fi:this.Kr()?Qi.L(this.Jr):null}Yr(t,i,e){t===this.Ct&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.Ct=t,this.zr.register({[xt]:[i,t,e]}))}ts(){if(this.Ct&&this._sessionActivityTimestamp&&this._sessionStartTimestamp)return[this._sessionActivityTimestamp,this.Ct,this._sessionStartTimestamp];var t=this.zr.props[xt];return k(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.Yr(null,null,null)}Xr(){st(t,\"beforeunload\",(()=>{this.Kr()&&Qi.N(this.Vr)}),{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),this.S.__preview_experimental_cookieless_mode)throw new Error(\"checkAndGetSessionAndWindowId should not be called in __preview_experimental_cookieless_mode\");var e=i||(new Date).getTime(),[r,s,n]=this.ts(),o=this.Zr(),a=O(n)&&n>0&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!t&&this.Br(e,r);u||h||a?(s=this.Hr(),o=this.Wr(),Ho.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.Wr(),l=!0);var d=0===r||!t||a?e:r,v=0===n?(new Date).getTime():n;return this.Qr(o),this.Yr(s,d,v),t||this.Gr(),l&&this.qr.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}}Gr(){clearTimeout(this.es),this.es=setTimeout((()=>{var[t]=this.ts();this.Br((new Date).getTime(),t)&&this.resetSessionId()}),1.1*this.sessionTimeoutMs)}}var Go=[\"$set_once\",\"$set\"],Jo=z(\"[SiteApps]\");class Vo{constructor(t){this._instance=t,this.rs=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ss(t,i){if(i){var e=this.globalsForEvent(i);this.rs.push(e),this.rs.length>1e3&&(this.rs=this.rs.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.Ve(this.ss.bind(this));this.ns=()=>{t(),this.rs=[],this.ns=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:B({},H(t,Go),{properties:B({},t.properties,f?{$set:B({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:B({},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.rs.length&&(Jo.info(\"Processing \"+this.rs.length+\" events for site app with id \"+t.id),this.rs.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.ns)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,Jo.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){Jo.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){Jo.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}os(){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)}ls(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){Jo.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.os(),void this._instance.on(\"eventCaptured\",(t=>this.ls(t)))):void Jo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.ns)||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 Jo.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else Jo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var Ko=[\"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\",\"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\"],Yo=function(t,i){if(!t)return!1;var e=t.toLowerCase();return Ko.concat(i||[]).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},Xo=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&Yo(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>Yo(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},Qo=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),Zo=\"i.posthog.com\";class ta{constructor(t){this.us={},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 uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+Zo,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.us[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.us[this.apiHost]=Qo.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.us[this.apiHost]=Qo.EU:this.us[this.apiHost]=Qo.CUSTOM),this.us[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(this.region===Qo.CUSTOM)return this.apiHost+i;var e=Zo+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var ia={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&&zs(e.href,i),not_regex:(i,e)=>!!t&&!zs(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class ea{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{ea.hs(\"retrieved web experiments from the server\"),i.ds=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.ds)ea.hs(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.ds)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);T(r)&&t.variants[r]&&i.vs(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];ea.cs(n)&&i.vs(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())ea.hs(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(F(this.ds))return this.ds=new Map,this.loadIfEnabled(),void this.previewWebExperiment();ea.hs(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.ds&&null!=(i=this.ds)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.ds)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.vs(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=ea.getWindowLocation();if(null!=t&&t.search){var i=xi(null==t?void 0:t.search,\"__experiment_id\"),e=xi(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(ea.hs(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.fs(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.Pe({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)}})}fs(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(ea.hs(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.vs(r[0].name,i,r[0].variants[i].transforms))}static cs(t){return!F(t.conditions)&&(ea.ps(t)&&ea._s(t))}static ps(t){var i;if(F(t.conditions)||F(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=ea.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||ia[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 _s(t){var i;if(F(t.conditions)||F(null==(i=t.conditions)?void 0:i.utm))return!0;var e=Vn();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 hs(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];N.info(\"[WebExperiments] \"+t,e)}vs(t,i,e){this._is_bot()?ea.hs(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;ea.hs(\"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)}))}})):ea.hs(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?Xo(n,this._instance.config.custom_blocked_useragents):void 0}}var ra=z(\"[PostHog ExternalIntegrations]\"),sa={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class na{constructor(t){this._instance=t}J(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return ra.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.J(sa[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 oa={},aa=()=>{},la=\"posthog\",ua=!Os&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),ha=i=>{var e;return{api_host:\"https://us.i.posthog.com\",ui_host:null,token:\"\",autocapture:!0,rageclick:!0,cross_subdomain_cookie:et(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",loaded:aa,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageview:\"2025-05-24\"!==i||\"history_change\",capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",debug:a&&T(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_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\",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,session_recording:{},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;N.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:Lo},error_tracking:{},_onCapture:aa}},da=t=>{var i={};R(t.process_person)||(i.person_profiles=t.process_person),R(t.xhr_headers)||(i.request_headers=t.xhr_headers),R(t.cookie_name)||(i.persistence_name=t.cookie_name),R(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),R(t.store_google)||(i.save_campaign_params=t.store_google),R(t.verbose)||(i.debug=t.verbose);var e=V({},i,t);return k(t.property_blacklist)&&(R(t.property_denylist)?e.property_denylist=t.property_blacklist:k(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:N.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class va{constructor(){this.__forceAllowLocalhost=!1}get gs(){return this.__forceAllowLocalhost}set gs(t){N.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class ca{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 va,this.bs=!1,this.version=c.LIB_VERSION,this.ys=new go,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=ha(),this.SentryIntegration=ms,this.sentryIntegration=t=>function(t,i){var e=gs(t,i);return{name:_s,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.ws=!1,this.Ss=null,this.$s=null,this.xs=null,this.featureFlags=new fo(this),this.toolbar=new $s(this),this.scrollManager=new Uo(this),this.pageViewManager=new Cs(this),this.surveys=new Co(this),this.experiments=new ea(this),this.exceptions=new Ws(this),this.rateLimiter=new Oo(this),this.requestRouter=new ta(this),this.consent=new te(this),this.externalIntegrations=new na(this),this.people={set:(t,i,e)=>{var r=T(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=T(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>N.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==la){var r,s=null!==(r=oa[e])&&void 0!==r?r:new ca;return s._init(t,i,e),oa[e]=s,oa[la][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s,n;if(void 0===e&&(e={}),R(i)||M(i))return N.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 N.warn(\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},this.ks=e,this.Es=[],e.person_profiles&&(this.$s=e.person_profiles),this.set_config(V({},ha(e.defaults),da(e),{name:r,token:i})),this.config.on_xhr_error&&N.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:_.GZipJS;var o=this.Is();this.persistence=new _o(this.config,o),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new _o(B({},this.config,{persistence:\"sessionStorage\"}),o);var a=B({},this.persistence.props),l=B({},this.sessionPersistence.props);if(this.register({$initialization_time:(new Date).toISOString()}),this.Ps=new jo((t=>this.Rs(t)),this.config.request_queue_config),this.Ts=new zo(this),this.__request_queue=[],this.config.__preview_experimental_cookieless_mode||(this.sessionManager=new Wo(this),this.sessionPropsManager=new Bo(this,this.sessionManager,this.persistence)),new ks(this).startIfEnabledOrStop(),this.siteApps=new Vo(this),null==(s=this.siteApps)||s.init(),this.config.__preview_experimental_cookieless_mode||(this.sessionRecording=new cs(this),this.sessionRecording.startIfEnabledOrStop()),this.config.disable_scroll_properties||this.scrollManager.startMeasuringScrollPosition(),this.autocapture=new Ci(this),this.autocapture.startIfEnabled(),this.surveys.loadIfEnabled(),this.heatmaps=new Ms(this),this.heatmaps.startIfEnabled(),this.webVitalsAutocapture=new Ps(this),this.exceptionObserver=new le(this),this.exceptionObserver.startIfEnabled(),this.deadClicksAutocapture=new se(this,re),this.deadClicksAutocapture.startIfEnabled(),this.historyAutocapture=new ze(this),this.historyAutocapture.startIfEnabled(),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&N.info(\"Starting in debug mode\",{this:this,config:e,thisC:B({},this.config),p:a,s:l}),void 0!==(null==(n=e.bootstrap)?void 0:n.distinctID)){var u,h,d=this.config.get_device_id(Ni()),v=null!=(u=e.bootstrap)&&u.isIdentifiedID?d:e.bootstrap.distinctID;this.persistence.set_property(Dt,null!=(h=e.bootstrap)&&h.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:v})}if(this.Ms()){var f,p,g=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=>g[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:g,featureFlagPayloads:m})}if(this.config.__preview_experimental_cookieless_mode)this.register_once({distinct_id:Ht,$device_id:null},\"\");else if(!this.get_distinct_id()){var b=this.config.get_device_id(Ni());this.register_once({distinct_id:b,$device_id:b},\"\"),this.persistence.set_property(Dt,\"anonymous\")}return st(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?ps(this,(()=>this.Cs())):this.Cs(),E(this.config._onCapture)&&this.config._onCapture!==aa&&(N.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&N.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}Re(t){var i,e,r,s,n,a,l,u;if(!o||!o.body)return N.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.Re(t)}),500);this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=m(t.supportedCompression,_.GZipJS)?_.GZipJS:m(t.supportedCompression,_.Base64)?_.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.$s?this.$s:\"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),null==(a=this.webVitalsAutocapture)||a.onRemoteConfig(t),null==(l=this.exceptionObserver)||l.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(u=this.deadClicksAutocapture)||u.onRemoteConfig(t)}Cs(){try{this.config.loaded(this)}catch(t){N.critical(\"`loaded` function failed\",t)}this.Fs(),this.config.capture_pageview&&setTimeout((()=>{this.consent.isOptedIn()&&this.Os()}),1),new Do(this).load(),this.featureFlags.flags()}Fs(){var t;this.has_opted_out_capturing()||this.config.request_batching&&(null==(t=this.Ps)||t.enable())}_dom_loaded(){this.has_opted_out_capturing()||G(this.__request_queue,(t=>this.Rs(t))),this.__request_queue=[],this.Fs()}_handle_unload(){var t,i;this.config.request_batching?(this.As()&&this.capture(\"$pageleave\"),null==(t=this.Ps)||t.unload(),null==(i=this.Ts)||i.unload()):this.As()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}Pe(t){this.__loaded&&(ua?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=Ds(t.url,{ip:this.config.ip?1:0}),t.headers=B({},this.config.request_headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=B({},t);s.timeout=s.timeout||6e4,s.url=Ds(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=null!==(e=null==(r=rt(Ns,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:Ns[0].method;if(!o)throw new Error(\"No available transport method\");o(s)})(B({},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)}}))))}Rs(t){this.Ts?this.Ts.retriableRequest(t):this.Pe(t)}_execute_array(t){var i,e=[],r=[],s=[];G(t,(t=>{t&&(i=t[0],k(i)?s.push(t):E(t)?t.call(this):k(t)&&\"alias\"===i?e.push(t):k(t)&&-1!==i.indexOf(\"capture\")&&E(this[i])?s.push(t):r.push(t))}));var n=function(t,i){G(t,(function(t){if(k(t[0])){var e=i;J(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)}Ms(){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.Ps){if(!this.consent.isOptedOut())if(!R(t)&&T(t)){if(this.config.opt_out_useragent_filter||!this._is_bot()){var s=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==s||!s.isRateLimited){null!=i&&i.$current_url&&!T(null==i?void 0:i.$current_url)&&(N.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 n=new Date,o=(null==e?void 0:e.timestamp)||n,a=Ni(),l={uuid:a,event:t,properties:this.calculateEventProperties(t,i||{},o,a)};s&&(l.properties.$lib_rate_limit_remaining_tokens=s.remainingTokens),(null==e?void 0:e.$set)&&(l.$set=null==e?void 0:e.$set);var u,h,d=this.Ds(null==e?void 0:e.$set_once);if(d&&(l.$set_once=d),(l=tt(l,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=o,R(null==e?void 0:e.timestamp)||(l.properties.$event_time_override_provided=!0,l.properties.$event_time_override_system_time=n),t===ko.DISMISSED||t===ko.SENT){var v=null==i?void 0:i[Eo.SURVEY_ID],c=null==i?void 0:i[Eo.SURVEY_ITERATION];localStorage.setItem((h=\"\"+Po+(u={id:v,current_iteration:c}).id,u.current_iteration&&u.current_iteration>0&&(h=\"\"+Po+u.id+\"_\"+u.current_iteration),h),\"true\"),l.$set=B({},l.$set,{[Ro({id:v,current_iteration:c},t===ko.SENT?\"responded\":\"dismissed\")]:!0})}var f=B({},l.properties.$set,l.$set);if(P(f)||this.setPersonPropertiesForFlags(f),!F(this.config.before_send)){var p=this.Ls(l);if(!p)return;l=p}this.ys.emit(\"eventCaptured\",l);var _={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:l,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.Rs(_):this.Ps.enqueue(_),l}N.critical(\"This capture call is ignored due to client rate limiting.\")}}else N.error(\"No event name provided to posthog.capture\")}else N.uninitializedWarning(\"posthog.capture\")}Ve(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=B({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.config.__preview_experimental_cookieless_mode&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=B({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!T(a.distinct_id)&&!O(a.distinct_id)||M(a.distinct_id))&&N.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=ro(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&&V(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&V(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.Ts)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===Qo.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=V(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!R(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=V({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),k(this.config.property_denylist)?J(this.config.property_denylist,(function(t){delete a[t]})):N.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&(N.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var g=this.js();return a.$process_person_profile=g,g&&!s&&this.Ns(\"_calculate_event_properties\"),a}Ds(t){var i;if(!this.persistence||!this.js())return t;if(this.bs)return t;var e=this.persistence.get_initial_props(),r=null==(i=this.sessionPropsManager)?void 0:i.getSetOnceProps(),s=V({},e,r||{},t||{}),n=this.config.sanitize_properties;return n&&(N.error(\"sanitize_properties is deprecated. Use before_send instead\"),s=n(s,\"$set_once\")),this.bs=!0,P(s)?void 0:s}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)}zs(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()}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.ys.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)}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 N.uninitializedWarning(\"posthog.identify\");if(O(t)&&(t=t.toString(),N.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()))N.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!==Ht){if(this.Ns(\"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(ot)&&(this.unregister(ot),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(Dt)||\"anonymous\");t!==r&&n?(this.persistence.set_property(Dt,\"identified\"),this.setPersonPropertiesForFlags(B({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.xs=Us(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(At))}}else N.critical('The string \"'+Ht+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else N.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.Ns(\"posthog.setPersonProperties\")){var e=Us(this.get_distinct_id(),t,i);this.xs!==e?(this.setPersonPropertiesForFlags(B({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.xs=e):N.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){if(this.Ns(\"posthog.group\")){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:B({},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 N.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.Ns(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if(N.info(\"reset\"),!this.__loaded)return N.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(Dt,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.xs=null,this.config.__preview_experimental_cookieless_mode)this.register_once({distinct_id:Ht,$device_id:null},\"\");else{var o=this.config.get_device_id(Ni());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(nt)?(N.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.Ns(\"posthog.alias\")?(R(i)&&(i=this.get_distinct_id()),t!==i?(this.zs(ot,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):(N.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=B({},this.config);if(I(t)){var e,r,s,n,o;V(this.config,da(t));var a=this.Is();null==(e=this.persistence)||e.update_config(this.config,i,a),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new _o(B({},this.config,{persistence:\"sessionStorage\"}),a),Gi.O()&&\"true\"===Gi.D(\"ph_debug\")&&(this.config.debug=!0),this.config.debug&&(c.DEBUG=!0,N.info(\"set_config\",{config:t,oldConfig:i,newConfig:B({},this.config)})),null==(r=this.sessionRecording)||r.startIfEnabledOrStop(),null==(s=this.autocapture)||s.startIfEnabled(),null==(n=this.heatmaps)||n.startIfEnabled(),this.surveys.loadIfEnabled(),this.Us(),null==(o=this.externalIntegrations)||o.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\");return this.exceptions.sendExceptionEvent(B({},je((t=>t instanceof Error)(t)?{error:t,event:t.message}:{event:t},{syntheticException:e}),i))}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:la;return i!==la&&(i=la+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(Dt))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(Dt))}js(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&P(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[ot])&&(null==(i=this.persistence)||null==(i=i.props)||!i[qt]))}As(){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.js()||this.Ns(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}Ns(t){return\"never\"===this.config.person_profiles?(N.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.zs(qt,!0),!0)}Is(){var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default;return this.config.disable_persistence||t&&!!i}Us(){var t,i,e,r,s=this.Is();(null==(t=this.persistence)?void 0:t.Ae)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.Ae)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){var i;(this.consent.optInOut(!0),this.Us(),R(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)&&this.capture(null!==(i=null==t?void 0:t.captureEventName)&&void 0!==i?i:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.Os()}opt_out_capturing(){this.consent.optInOut(!1),this.Us()}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}clear_opt_in_out_capturing(){this.consent.reset(),this.Us()}_is_bot(){return n?Xo(n,this.config.custom_blocked_useragents):void 0}Os(){o&&(\"visible\"===o.visibilityState?this.ws||(this.ws=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.Ss&&(o.removeEventListener(\"visibilitychange\",this.Ss),this.Ss=null)):this.Ss||(this.Ss=this.Os.bind(this),st(o,\"visibilitychange\",this.Ss)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),localStorage&&localStorage.removeItem(\"ph_debug\"),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)`.\"),localStorage&&localStorage.setItem(\"ph_debug\",\"true\"),this.set_config({debug:!0}))}I(){var t,i,e,r,s,n,o,a=this.ks||{};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?(N.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=N,n=(i=\"advanced_disable_flags\")in(t=a)&&!R(t[i]),o=e in t&&!R(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)}Ls(t){if(F(this.config.before_send))return t;var i=k(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),F(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return L(t.event)?N.warn(s+\". This can cause unexpected behavior.\"):N.info(s),null}e.properties&&!P(e.properties)||N.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.ce)?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)})}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Q(t.prototype[i[e]])}(ca,[\"identify\"]);var fa,pa=(fa=oa[la]=new ca,function(){function i(){i.done||(i.done=!0,ua=!1,J(oa,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():st(o,\"DOMContentLoaded\",i,{capture:!1}):t&&N.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),fa);export{f as COPY_AUTOCAPTURE_EVENT,_ as Compression,ca as PostHog,ko as SurveyEventName,Eo as SurveyEventProperties,yo as SurveyPosition,$o as SurveyQuestionBranchingType,So as SurveyQuestionType,xo as SurveySchedule,wo as SurveyType,bo as SurveyWidgetType,pa as default,p as knownUnsafeEditableEvent,pa as posthog,g 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({ client: posthogJs });\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 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 } }, children);\n}\n\nvar usePostHog = function () {\n var client = useContext(PostHogContext).client;\n return client;\n};\n\nfunction useFeatureFlagEnabled(flag) {\n var client = usePostHog();\n var _a = useState(function () { return client.isFeatureEnabled(flag); }), featureEnabled = _a[0], setFeatureEnabled = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureEnabled(client.isFeatureEnabled(flag));\n });\n }, [client, flag]);\n return featureEnabled;\n}\n\nfunction useFeatureFlagPayload(flag) {\n var client = usePostHog();\n var _a = useState(function () { return client.getFeatureFlagPayload(flag); }), featureFlagPayload = _a[0], setFeatureFlagPayload = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagPayload(client.getFeatureFlagPayload(flag));\n });\n }, [client, flag]);\n return featureFlagPayload;\n}\n\nfunction useActiveFeatureFlags() {\n var client = usePostHog();\n var _a = useState(function () { return client.featureFlags.getFlags(); }), featureFlags = _a[0], setFeatureFlags = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function (flags) {\n setFeatureFlags(flags);\n });\n }, [client]);\n return featureFlags;\n}\n\nfunction useFeatureFlagVariantKey(flag) {\n var client = usePostHog();\n var _a = useState(function () {\n return client.getFeatureFlag(flag);\n }), featureFlagVariantKey = _a[0], setFeatureFlagVariantKey = _a[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagVariantKey(client.getFeatureFlag(flag));\n });\n }, [client, flag]);\n return featureFlagVariantKey;\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\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 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 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 }, 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}\nfunction VisibilityAndClickTracker(_a) {\n var flag = _a.flag, children = _a.children, onIntersect = _a.onIntersect, onClick = _a.onClick, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"flag\", \"children\", \"onIntersect\", \"onClick\", \"trackView\", \"options\"]);\n var ref = useRef(null);\n var posthog = usePostHog();\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 }, __assign({ threshold: 0.1 }, options));\n observer.observe(ref.current);\n return function () { return observer.disconnect(); };\n }, [flag, options, posthog, ref, trackView, onIntersect]);\n return (React.createElement(\"div\", __assign({ ref: ref }, props, { onClick: onClick }), children));\n}\nfunction VisibilityAndClickTrackers(_a) {\n var flag = _a.flag, children = _a.children, trackInteraction = _a.trackInteraction, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"flag\", \"children\", \"trackInteraction\", \"trackView\", \"options\"]);\n var clickTrackedRef = useRef(false);\n var visibilityTrackedRef = useRef(false);\n var posthog = usePostHog();\n var variant = useFeatureFlagVariantKey(flag);\n var cachedOnClick = useCallback(function () {\n if (!clickTrackedRef.current && trackInteraction) {\n captureFeatureInteraction({ flag: flag, posthog: posthog, flagVariant: variant });\n clickTrackedRef.current = true;\n }\n }, [flag, posthog, trackInteraction, variant]);\n var onIntersect = function (entry) {\n if (!visibilityTrackedRef.current && entry.isIntersecting) {\n captureFeatureView({ flag: flag, posthog: posthog, flagVariant: variant });\n visibilityTrackedRef.current = true;\n }\n };\n var trackedChildren = Children.map(children, function (child) {\n return (React.createElement(VisibilityAndClickTracker, __assign({ flag: flag, onClick: cachedOnClick, onIntersect: onIntersect, trackView: trackView, options: options }, props), child));\n });\n return React.createElement(React.Fragment, null, trackedChildren);\n}\n\nvar INITIAL_STATE = {\n componentStack: 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 componentStack = errorInfo.componentStack;\n var additionalProperties = this.props.additionalProperties;\n this.setState({\n error: error,\n componentStack: componentStack,\n });\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 client.captureException(error, currentProperties);\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 })\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\nexport { PostHogContext, PostHogErrorBoundary, PostHogFeature, PostHogProvider, 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 } 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 /** Analytics configuration. Set to { enabled: false } to disable tracking */\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>(resolution ?? {width: 720, height: 1280});\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}\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","o","a","l","u","h","d","f","p","_","g","b","y","w","m","S","$","x","k","E","I","P","R","T","M","C","F","O","A","D","L","N","z","U","q","B","H","W","G","J","posthogJs","_i"],"mappings":"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","x_google_ignoreList":[29,30]}
|