@twick/timeline 0.14.20 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-CXhwwSX--32kJEN73.cjs → index-CXhwwSX--32kJEN73.js} +1 -1
- package/dist/{index-CXhwwSX--32kJEN73.cjs.map → index-CXhwwSX--32kJEN73.js.map} +1 -1
- package/dist/{index-CXhwwSX--DHE9Xex3.js → index-CXhwwSX--SW4K-mAQ.mjs} +3 -3
- package/dist/index-CXhwwSX--SW4K-mAQ.mjs.map +1 -0
- package/dist/index.js +2719 -2532
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2719 -2532
- package/dist/index.mjs.map +1 -1
- package/dist/src/core/track/track.d.ts.map +1 -1
- package/dist/src/core/visitor/element-deserializer.d.ts.map +1 -1
- package/package.json +5 -3
- package/dist/index-CXhwwSX--DHE9Xex3.js.map +0 -1
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/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]}
|
|
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.314.0/node_modules/posthog-js/dist/module.js","../../../node_modules/.pnpm/posthog-js@1.314.0/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-.mjs').then(n => n.i);\n const channels = buffer.numberOfChannels >= 2 ? 2 : 1;\n const targetSampleRate = 22050;\n const downsampledBuffer = downsampleAudioBuffer(buffer, targetSampleRate);\n const kbps = 48;\n const mp3encoder = new lamejs.default.Mp3Encoder(channels, targetSampleRate, kbps);\n const samplesPerFrame = 1152;\n const leftFloat = downsampledBuffer.getChannelData(0);\n const left = floatTo16(leftFloat);\n let right;\n if (channels === 2) {\n const rightFloat = downsampledBuffer.getChannelData(1);\n right = floatTo16(rightFloat);\n }\n const mp3Chunks = [];\n for (let i = 0; i < left.length; i += samplesPerFrame) {\n const leftChunk = left.subarray(i, Math.min(i + samplesPerFrame, left.length));\n let mp3buf;\n if (channels === 2 && right) {\n const rightChunk = right.subarray(i, Math.min(i + samplesPerFrame, right.length));\n mp3buf = mp3encoder.encodeBuffer(leftChunk, rightChunk);\n } else {\n mp3buf = mp3encoder.encodeBuffer(leftChunk);\n }\n if (mp3buf.length > 0) mp3Chunks.push(mp3buf);\n }\n const end = mp3encoder.flush();\n if (end.length > 0) mp3Chunks.push(end);\n return new Blob(mp3Chunks, { type: \"audio/mpeg\" });\n};\nconst audioBufferToWavBlob = (buffer) => {\n const arrayBuffer = audioBufferToWavArrayBuffer(buffer);\n return new Blob([arrayBuffer], { type: \"audio/wav\" });\n};\nconst downsampleAudioBuffer = (buffer, targetSampleRate) => {\n if (buffer.sampleRate === targetSampleRate) {\n return buffer;\n }\n const ratio = buffer.sampleRate / targetSampleRate;\n const newLength = Math.round(buffer.length / ratio);\n const newBuffer = new AudioContext().createBuffer(\n buffer.numberOfChannels,\n newLength,\n targetSampleRate\n );\n for (let channel = 0; channel < buffer.numberOfChannels; channel++) {\n const oldData = buffer.getChannelData(channel);\n const newData = newBuffer.getChannelData(channel);\n for (let i = 0; i < newLength; i++) {\n const oldIndex = Math.floor(i * ratio);\n newData[i] = oldData[oldIndex];\n }\n }\n return newBuffer;\n};\nconst interleave = (buffer, numChannels, numFrames) => {\n if (numChannels === 1) {\n return buffer.getChannelData(0).slice(0, numFrames);\n }\n const result = new Float32Array(numFrames * numChannels);\n const channelData = [];\n for (let ch = 0; ch < numChannels; ch++) {\n channelData[ch] = buffer.getChannelData(ch);\n }\n let writeIndex = 0;\n for (let i = 0; i < numFrames; i++) {\n for (let ch = 0; ch < numChannels; ch++) {\n result[writeIndex++] = channelData[ch][i];\n }\n }\n return result;\n};\nconst floatTo16BitPCM = (view, offset, input) => {\n let pos = offset;\n for (let i = 0; i < input.length; i++, pos += 2) {\n let s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(pos, s < 0 ? s * 32768 : s * 32767, true);\n }\n};\nconst floatTo16 = (input) => {\n const output = new Int16Array(input.length);\n for (let i = 0; i < input.length; i++) {\n const s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 32768 : s * 32767;\n }\n return output;\n};\nconst writeString = (view, offset, str) => {\n for (let i = 0; i < str.length; i++) {\n view.setUint8(offset + i, str.charCodeAt(i));\n }\n};\n\nconst getScaledDimensions = (width, height, maxWidth, maxHeight) => {\n if (width <= maxWidth && height <= maxHeight) {\n return {\n width: width % 2 === 0 ? width : width - 1,\n height: height % 2 === 0 ? height : height - 1\n };\n }\n const widthRatio = maxWidth / width;\n const heightRatio = maxHeight / height;\n const scale = Math.min(widthRatio, heightRatio);\n let scaledWidth = Math.round(width * scale);\n let scaledHeight = Math.round(height * scale);\n if (scaledWidth % 2 !== 0) {\n scaledWidth -= 1;\n }\n if (scaledHeight % 2 !== 0) {\n scaledHeight -= 1;\n }\n return {\n width: Math.min(scaledWidth, maxWidth),\n height: Math.min(scaledHeight, maxHeight)\n };\n};\nconst getObjectFitSize = (objectFit, elementSize, containerSize) => {\n const elementAspectRatio = elementSize.width / elementSize.height;\n const containerAspectRatio = containerSize.width / containerSize.height;\n switch (objectFit) {\n case \"contain\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n } else {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n }\n case \"cover\":\n if (elementAspectRatio > containerAspectRatio) {\n return {\n width: containerSize.height * elementAspectRatio,\n height: containerSize.height\n };\n } else {\n return {\n width: containerSize.width,\n height: containerSize.width / elementAspectRatio\n };\n }\n case \"fill\":\n return {\n width: containerSize.width,\n height: containerSize.height\n };\n default:\n return {\n width: elementSize.width,\n height: elementSize.height\n };\n }\n};\n\nconst blobUrlToFile = async (blobUrl, fileName) => {\n const response = await fetch(blobUrl);\n const blob = await response.blob();\n return new File([blob], fileName, { type: blob.type });\n};\nconst loadFile = (accept) => {\n return new Promise((resolve, reject) => {\n try {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = accept;\n input.style.display = \"none\";\n document.body.appendChild(input);\n const cleanup = () => {\n input.value = \"\";\n document.body.removeChild(input);\n };\n input.onchange = () => {\n const file = input.files && input.files[0];\n cleanup();\n if (!file) {\n reject(new Error(\"No file selected\"));\n return;\n }\n resolve(file);\n };\n input.click();\n } catch (error) {\n reject(error);\n }\n });\n};\nconst saveAsFile = (content, type, name) => {\n const blob = typeof content === \"string\" ? new Blob([content], { type }) : content;\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = name;\n a.click();\n URL.revokeObjectURL(url);\n};\nconst downloadFile = async (url, filename) => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const downloadUrl = window.URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = downloadUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(downloadUrl);\n } catch (error) {\n 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.name) element.setName(json.name);\n if (json.s !== undefined) element.setStart(json.s);\n if (json.e !== undefined) element.setEnd(json.e);\n if (json.props) element.setProps(json.props);\n if (json.animation) element.setAnimation(ElementAnimation.fromJSON(json.animation));\n }\n\n static deserializeVideoElement(json: ElementJSON): VideoElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const videoElement = new VideoElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(videoElement, json);\n \n if (json.mediaDuration !== undefined) videoElement.setMediaDuration(json.mediaDuration);\n if (json.objectFit) videoElement.setObjectFit(json.objectFit);\n if (json.frame) videoElement.setFrame(json.frame);\n if (json.frameEffects) videoElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) videoElement.setBackgroundColor(json.backgroundColor);\n \n return videoElement;\n }\n\n static deserializeAudioElement(json: ElementJSON): AudioElement {\n const audioElement = new AudioElement(json.props?.src || \"\");\n ElementDeserializer.deserializeBaseElement(audioElement, json);\n \n if (json.mediaDuration !== undefined) audioElement.setMediaDuration(json.mediaDuration);\n \n return audioElement;\n }\n\n static deserializeImageElement(json: ElementJSON): ImageElement {\n const parentSize = json.frame && json.frame.size \n ? { width: json.frame.size[0], height: json.frame.size[1] } \n : { width: 0, height: 0 };\n \n const imageElement = new ImageElement(json.props?.src || \"\", parentSize);\n ElementDeserializer.deserializeBaseElement(imageElement, json);\n \n if (json.objectFit) imageElement.setObjectFit(json.objectFit);\n if (json.frame) imageElement.setFrame(json.frame);\n if (json.frameEffects) imageElement.setFrameEffects(json.frameEffects.map((frameEffect: any) => ElementFrameEffect.fromJSON(frameEffect)));\n if (json.backgroundColor) imageElement.setBackgroundColor(json.backgroundColor);\n \n return imageElement;\n }\n\n static deserializeTextElement(json: ElementJSON): TextElement {\n const textElement = new TextElement(json.props?.text || \"\");\n ElementDeserializer.deserializeBaseElement(textElement, json);\n \n if (json.textEffect) textElement.setTextEffect(ElementTextEffect.fromJSON(json.textEffect));\n \n return textElement;\n }\n\n static deserializeCaptionElement(json: ElementJSON): CaptionElement {\n const captionElement = new CaptionElement(\n json.t || \"\",\n json.s || 0,\n json.e || 0\n );\n ElementDeserializer.deserializeBaseElement(captionElement, json);\n \n return captionElement;\n }\n\n static deserializeIconElement(json: ElementJSON): IconElement {\n const size = json.props?.size ?? { width: 100, height: 100 };\n \n const iconElement = new IconElement(\n json.props?.src || \"\",\n size,\n json.props?.fill\n );\n ElementDeserializer.deserializeBaseElement(iconElement, json);\n \n return iconElement;\n }\n\n static deserializeCircleElement(json: ElementJSON): CircleElement {\n const circleElement = new CircleElement(\n json.props?.fill || \"\",\n json.props?.radius || 0\n );\n ElementDeserializer.deserializeBaseElement(circleElement, json);\n \n return circleElement;\n }\n\n static deserializeRectElement(json: ElementJSON): RectElement {\n const rectElement = new RectElement(\n json.props?.fill || \"\",\n { \n width: json.props?.width || 0, \n height: json.props?.height || 0 \n }\n );\n ElementDeserializer.deserializeBaseElement(rectElement, json);\n \n return rectElement;\n }\n\n static fromJSON(json: ElementJSON): TrackElement | null{\n try {\n switch (json.type) {\n case \"video\":\n return ElementDeserializer.deserializeVideoElement(json);\n case \"audio\":\n return ElementDeserializer.deserializeAudioElement(json);\n case \"image\":\n return ElementDeserializer.deserializeImageElement(json);\n case \"text\":\n return ElementDeserializer.deserializeTextElement(json);\n case \"caption\":\n return ElementDeserializer.deserializeCaptionElement(json);\n case \"icon\":\n return ElementDeserializer.deserializeIconElement(json);\n case \"circle\":\n return ElementDeserializer.deserializeCircleElement(json);\n case \"rect\":\n return ElementDeserializer.deserializeRectElement(json);\n default:\n throw new Error(`Unknown element type: ${json.type}`);\n }\n } catch(error) {\n console.error(\"Error deserializing element:\", error);\n return null;\n }\n }\n}\n","import { ElementJSON } from \"../../types\";\nimport { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementSerializer implements ElementVisitor<ElementJSON> {\n serializeElement(element: TrackElement): ElementJSON {\n return {\n id: element.getId(),\n trackId: element.getTrackId(),\n type: element.getType(),\n name: element.getName(),\n s: element.getStart(),\n e: element.getEnd(),\n props: structuredClone(element.getProps()),\n animation: element.getAnimation()?.toJSON(),\n };\n }\n visitVideoElement(element: VideoElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitAudioElement(element: AudioElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n mediaDuration: element.getMediaDuration(),\n };\n }\n\n visitImageElement(element: ImageElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n frame: structuredClone(element.getFrame()),\n frameEffects: element.getFrameEffects()?.map((frameEffect) => frameEffect.toJSON()),\n backgroundColor: element.getBackgroundColor(),\n objectFit: element.getObjectFit(),\n };\n }\n\n visitTextElement(element: TextElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n textEffect: element.getTextEffect()?.toJSON(),\n };\n }\n\n visitCaptionElement(element: CaptionElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n t: structuredClone(element.getText()),\n };\n }\n\n visitIconElement(element: IconElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitCircleElement(element: CircleElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n\n visitRectElement(element: RectElement): ElementJSON {\n return {\n ...this.serializeElement(element),\n };\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\n\nexport const VALIDATION_ERROR_CODE = {\n ELEMENT_NOT_FOUND: \"ELEMENT_NOT_FOUND\",\n ELEMENT_NOT_ADDED: \"ELEMENT_NOT_ADDED\",\n ELEMENT_NOT_UPDATED: \"ELEMENT_NOT_UPDATED\",\n ELEMENT_NOT_REMOVED: \"ELEMENT_NOT_REMOVED\",\n COLLISION_ERROR: \"COLLISION_ERROR\",\n INVALID_TIMING: \"INVALID_TIMING\",\n}\n\nexport class ValidationError extends Error {\n constructor(\n message: string,\n public errors: string[],\n public warnings: string[] = []\n ) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nexport class ElementValidator implements ElementVisitor<boolean> {\n private validateBasicProperties(element: any): { errors: string[]; warnings: string[] } {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Check required basic properties\n if (!element.getId()) {\n errors.push(\"Element must have an ID\");\n }\n\n if (!element.getType()) {\n errors.push(\"Element must have a type\");\n }\n\n if (element.getStart() === undefined || element.getStart() === null) {\n errors.push(\"Element must have a start time (s)\");\n }\n\n if (element.getEnd() === undefined || element.getEnd() === null) {\n errors.push(\"Element must have an end time (e)\");\n }\n\n if (element.getStart() !== undefined && element.getEnd() !== undefined) {\n if (element.getStart() < 0) {\n errors.push(\"Start time cannot be negative\");\n }\n \n if (element.getEnd() <= element.getStart()) {\n errors.push(\"End time must be greater than start time\");\n }\n }\n\n if (!element.getName()) {\n warnings.push(\"Element should have a name for better identification\");\n }\n\n if (!element.getTrackId()) {\n warnings.push(\"Element should have a track Id\");\n }\n\n return { errors, warnings };\n }\n\n private validateTextElement(element: TextElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check text-specific properties\n const props = element.getProps();\n if (!props?.text) {\n errors.push(\"Text element must have text content\");\n }\n\n if (props?.fontSize !== undefined && props.fontSize <= 0) {\n errors.push(\"Font size must be greater than 0\");\n }\n\n if (props?.fontWeight !== undefined && props.fontWeight < 0) {\n errors.push(\"Font weight cannot be negative\");\n }\n\n return { errors, warnings };\n }\n\n private validateVideoElement(element: VideoElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check video-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Video element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateAudioElement(element: AudioElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check audio-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Audio element must have a source URL\");\n }\n\n if (props?.volume !== undefined && (props.volume < 0 || props.volume > 1)) {\n errors.push(\"Volume must be between 0 and 1\");\n }\n\n if (props?.playbackRate !== undefined && props.playbackRate <= 0) {\n errors.push(\"Playback rate must be greater than 0\");\n }\n\n return { errors, warnings };\n }\n\n private validateImageElement(element: ImageElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check image-specific properties\n const props = element.getProps();\n if (!props?.src) {\n errors.push(\"Image element must have a source URL\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateCaptionElement(element: CaptionElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check caption-specific properties\n const text = element.getText();\n if (!text || text.trim() === \"\") {\n errors.push(\"Caption element must have text content\");\n }\n\n return { errors, warnings };\n }\n\n private validateIconElement(element: IconElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n return { errors, warnings };\n }\n\n private validateCircleElement(element: CircleElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check circle-specific properties\n const props = element.getProps();\n if (props?.radius !== undefined && props.radius <= 0) {\n errors.push(\"Circle radius must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n private validateRectElement(element: RectElement): { errors: string[]; warnings: string[] } {\n const basicValidation = this.validateBasicProperties(element);\n const errors = [...basicValidation.errors];\n const warnings = [...basicValidation.warnings];\n\n // Check rectangle-specific properties\n const props = element.getProps();\n if (props?.width !== undefined && props.width <= 0) {\n errors.push(\"Rectangle width must be greater than 0\");\n }\n\n if (props?.height !== undefined && props.height <= 0) {\n errors.push(\"Rectangle height must be greater than 0\");\n }\n\n // Note: frame property is protected, so we can't validate it directly\n // This would need to be validated through a public method if needed\n\n return { errors, warnings };\n }\n\n visitVideoElement(element: VideoElement): boolean {\n const validation = this.validateVideoElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Video element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n const validation = this.validateAudioElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Audio element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n const validation = this.validateImageElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Image element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n const validation = this.validateTextElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Text element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n const validation = this.validateCaptionElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Caption element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n const validation = this.validateIconElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Icon element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n const validation = this.validateCircleElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Circle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n const validation = this.validateRectElement(element);\n \n if (validation.errors.length > 0) {\n throw new ValidationError(\n `Rectangle element validation failed: ${validation.errors.join(', ')}`,\n validation.errors,\n validation.warnings\n );\n }\n \n return true;\n }\n} ","import { TrackElement } from \"../elements/base.element\";\nimport { Track } from \"./track\";\n\n/**\n * Friend class that provides explicit access to Track's protected methods\n * This implements the Friend Class Pattern for better encapsulation control\n */\nexport class TrackFriend {\n constructor(private track: Track) {}\n \n /**\n * Add an element to the track with validation\n * @param element The element to add\n * @param skipValidation If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n */\n addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.addElementViaFriend(element, skipValidation);\n }\n \n /**\n * Remove an element from the track\n * @param element The element to remove\n */\n removeElement(element: TrackElement): void {\n // Use the public friend method that delegates to protected method\n this.track.removeElementViaFriend(element);\n }\n \n /**\n * Update an element in the track with validation\n * @param element The element to update\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n */\n updateElement(element: TrackElement): boolean {\n // Use the public friend method that delegates to protected method\n return this.track.updateElementViaFriend(element);\n }\n \n /**\n * Get the track instance (for advanced operations)\n * @returns The track instance\n */\n getTrack(): Track {\n return this.track;\n }\n }","import { ElementJSON, TrackJSON } from \"../../types\";\nimport { generateShortUuid } from \"../../utils/timeline.utils\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ElementDeserializer } from \"../visitor/element-deserializer\";\nimport { ElementSerializer } from \"../visitor/element-serializer\";\nimport {\n ElementValidator,\n ValidationError,\n} from \"../visitor/element-validator\";\nimport { TrackFriend } from \"./track.friend\";\n\n/**\n * Track class represents a timeline track that contains multiple elements.\n * A track is a container for timeline elements (video, audio, text, etc.) that\n * can be arranged sequentially or in parallel. Tracks provide validation,\n * serialization, and element management capabilities.\n * \n * @example\n * ```js\n * import { Track, VideoElement, TextElement } from '@twick/timeline';\n * \n * // Create a new track\n * const videoTrack = new Track(\"Video Track\");\n * \n * // Add elements to the track\n * const videoElement = new VideoElement({\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * });\n * \n * videoTrack.createFriend().addElement(videoElement);\n * \n * // Serialize the track\n * const trackData = videoTrack.serialize();\n * ```\n */\nexport class Track {\n private id: string;\n private name: string;\n private type: string;\n private props: Record<string, any>;\n private elements: TrackElement[];\n private validator: ElementValidator;\n\n /**\n * Creates a new Track instance.\n * \n * @param name - The display name for the track\n * @param type - The type of the track\n * @param id - Optional unique identifier (auto-generated if not provided)\n * \n * @example\n * ```js\n * const track = new Track(\"My Video Track\");\n * const trackWithId = new Track(\"Audio Track\", \"element\", \"video-track-1\");\n * ```\n */\n constructor(name: string, type: string =\"element\", id?: string) {\n this.name = name;\n this.id = id ?? `t-${generateShortUuid()}`;\n this.type = type;\n this.props = {};\n this.elements = [];\n this.validator = new ElementValidator();\n }\n\n /**\n * Creates a friend instance for explicit access to protected methods.\n * This implements the Friend Class Pattern to allow controlled access\n * to protected methods while maintaining encapsulation.\n * \n * @returns TrackFriend instance that can access protected methods\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * \n * // Use friend to add elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * friend.addElement(element);\n * ```\n */\n createFriend(): TrackFriend {\n return new TrackFriend(this);\n }\n\n /**\n * Friend method to add element (called by TrackFriend).\n * Provides controlled access to the protected addElement method.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const friend = track.createFriend();\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * const success = track.addElementViaFriend(element);\n * // success = true if element was added successfully\n * ```\n */\n addElementViaFriend(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n return this.addElement(element, skipValidation);\n }\n\n /**\n * Friend method to remove element (called by TrackFriend).\n * Provides controlled access to the protected removeElement method.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * track.removeElementViaFriend(element);\n * // Element is removed from the track\n * ```\n */\n removeElementViaFriend(element: TrackElement): void {\n this.removeElement(element);\n }\n\n /**\n * Friend method to update element (called by TrackFriend).\n * Provides controlled access to the protected updateElement method.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Update the element\n * element.setEnd(15);\n * const success = track.updateElementViaFriend(element);\n * // success = true if element was updated successfully\n * ```\n */\n updateElementViaFriend(element: TrackElement): boolean {\n return this.updateElement(element);\n }\n\n /**\n * Gets the unique identifier of the track.\n * \n * @returns The track's unique ID string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\", \"element\", \"track-123\");\n * const id = track.getId(); // \"track-123\"\n * ```\n */\n getId(): string {\n return this.id;\n }\n\n /**\n * Gets the display name of the track.\n * \n * @returns The track's display name\n * \n * @example\n * ```js\n * const track = new Track(\"Video Track\");\n * const name = track.getName(); // \"Video Track\"\n * ```\n */\n getName(): string {\n return this.name;\n }\n\n /**\n * Gets the type of the track.\n * \n * @returns The track's type string\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const type = track.getType(); // \"element\"\n * ```\n */\n getType(): string {\n return this.type;\n }\n\n /**\n * Gets a read-only array of all elements in the track.\n * Returns a copy of the elements array to prevent external modification.\n * \n * @returns Read-only array of track elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const elements = track.getElements();\n * // elements is a read-only array of TrackElement instances\n * \n * elements.forEach(element => {\n * console.log(`Element: ${element.getId()}, Duration: ${element.getEnd() - element.getStart()}`);\n * });\n * ```\n */\n getElements(): ReadonlyArray<TrackElement> {\n return [...this.elements];\n }\n\n getProps(): Record<string, any> {\n return this.props;\n }\n\n setProps(props: Record<string, any>) {\n this.props = structuredClone(props);\n return this;\n }\n\n /**\n * Validates a single element using the track's validator.\n * Checks if the element meets all validation requirements.\n * \n * @param element - The element to validate\n * @returns true if valid, throws ValidationError if invalid\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * try {\n * const isValid = track.validateElement(element);\n * console.log('Element is valid:', isValid);\n * } catch (error) {\n * if (error instanceof ValidationError) {\n * console.log('Validation failed:', error.errors);\n * }\n * }\n * ```\n */\n validateElement(element: TrackElement): boolean {\n return element.accept(this.validator);\n }\n\n /**\n * Gets the total duration of the track.\n * Calculates the duration based on the end time of the last element.\n * \n * @returns The total duration of the track in seconds\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const duration = track.getTrackDuration(); // 0 if no elements\n * \n * // After adding elements\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 30 });\n * track.createFriend().addElement(element);\n * const newDuration = track.getTrackDuration(); // 30\n * ```\n */\n getTrackDuration(): number {\n return this.elements?.length\n ? this.elements[this.elements.length - 1].getEnd()\n : 0;\n }\n\n /**\n * Adds an element to the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to add to the track\n * @param skipValidation - If true, skips validation (use with caution)\n * @returns true if element was added successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * const success = friend.addElement(element);\n * ```\n */\n protected addElement(\n element: TrackElement,\n skipValidation: boolean = false\n ): boolean {\n element.setTrackId(this.id);\n if (skipValidation) {\n this.elements.push(element);\n return true;\n }\n\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n if(this.isElementColliding(element)) {\n throw new ValidationError(\"Element is colliding with another element\", [\"COLLISION_ERROR\"]);\n } else {\n this.elements.push(element);\n return true;\n }\n }\n } catch (error) {\n throw error;\n }\n return false;\n }\n\n public isElementColliding(element: TrackElement): boolean {\n return this.elements.some((e) => e.getStart() < element.getEnd() && e.getEnd() > element.getStart());\n }\n\n /**\n * Removes an element from the track.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The element to remove from the track\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * friend.removeElement(element);\n * ```\n */\n protected removeElement(element: TrackElement): void {\n const index = this.elements.findIndex((e) => e.getId() === element.getId());\n if (index !== -1) {\n this.elements.splice(index, 1);\n }\n }\n\n /**\n * Updates an element in the track with validation.\n * Protected method that should be accessed through TrackFriend.\n * \n * @param element - The updated element to replace the existing one\n * @returns true if element was updated successfully, throws ValidationError if validation fails\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * \n * // Use friend to access this protected method\n * const friend = track.createFriend();\n * element.setEnd(15);\n * const success = friend.updateElement(element);\n * ```\n */\n protected updateElement(element: TrackElement): boolean {\n try {\n const isValid = this.validateElement(element);\n if (isValid) {\n const index = this.elements.findIndex(\n (e) => e.getId() === element.getId()\n );\n if (index !== -1) {\n this.elements[index] = element;\n return true;\n }\n }\n } catch (error) {\n if (error instanceof ValidationError) {\n throw error;\n }\n throw error;\n }\n\n return false;\n }\n\n /**\n * Finds an element in the track by its ID.\n * \n * @param id - The unique identifier of the element to find\n * @returns The found element or undefined if not found\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const foundElement = track.getElementById(element.getId());\n * // foundElement is the same element instance\n * ```\n */\n getElementById(id: string): Readonly<TrackElement> | undefined {\n const element = this.elements.find((e) => e.getId() === id);\n if (!element) return undefined;\n return element;\n }\n\n /**\n * Validates all elements in the track and returns combined result and per-element status.\n * Provides detailed validation information for each element including errors and warnings.\n * \n * @returns Object with overall isValid and array of per-element validation results\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element1 = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * const element2 = new TextElement({ text: \"Hello\", start: 5, end: 15 });\n * \n * track.createFriend().addElement(element1);\n * track.createFriend().addElement(element2);\n * \n * const validation = track.validateAllElements();\n * console.log('Overall valid:', validation.isValid);\n * \n * validation.results.forEach(result => {\n * console.log(`Element ${result.element.getId()}: ${result.isValid ? 'Valid' : 'Invalid'}`);\n * if (result.errors) {\n * console.log('Errors:', result.errors);\n * }\n * if (result.warnings) {\n * console.log('Warnings:', result.warnings);\n * }\n * });\n * ```\n */\n validateAllElements(): {\n isValid: boolean;\n results: Array<{\n element: TrackElement;\n isValid: boolean;\n errors?: string[];\n warnings?: string[];\n }>;\n } {\n let validResult = true;\n const results = this.elements.map((element) => {\n try {\n const isValid = this.validateElement(element);\n if (!isValid) {\n validResult = false;\n }\n return { element, isValid };\n } catch (error) {\n if (error instanceof ValidationError) {\n validResult = false;\n return {\n element,\n isValid: false,\n errors: error.errors,\n warnings: error.warnings,\n };\n }\n return {\n element,\n isValid: false,\n errors: [error instanceof Error ? error.message : \"Unknown error\"],\n };\n }\n });\n return { isValid: validResult, results };\n }\n\n /**\n * Serializes the track and all its elements to JSON format.\n * Converts the track structure to a format that can be stored or transmitted.\n * \n * @returns TrackJSON object representing the track and its elements\n * \n * @example\n * ```js\n * const track = new Track(\"My Track\");\n * const element = new VideoElement({ src: \"video.mp4\", start: 0, end: 10 });\n * track.createFriend().addElement(element);\n * \n * const trackData = track.serialize();\n * // trackData = {\n * // id: \"t-abc123\",\n * // name: \"My Track\",\n * // type: \"element\",\n * // elements: [{ ... }]\n * // }\n * \n * // Save to localStorage\n * localStorage.setItem('track-data', JSON.stringify(trackData));\n * ```\n */\n serialize(): TrackJSON {\n const serializer = new ElementSerializer();\n return {\n id: this.id,\n name: this.name,\n type: this.type,\n props: this.props,\n elements: this.elements.map(\n (element) => element.accept(serializer) as ElementJSON\n ),\n };\n }\n\n /**\n * Creates a Track instance from JSON data.\n * Static factory method for deserializing track data.\n * \n * @param json - JSON object containing track data\n * @returns New Track instance with loaded data\n * \n * @example\n * ```js\n * const trackData = {\n * id: \"t-abc123\",\n * name: \"My Track\",\n * type: \"element\",\n * elements: [\n * {\n * id: \"e-def456\",\n * type: \"video\",\n * src: \"video.mp4\",\n * start: 0,\n * end: 10\n * }\n * ]\n * };\n * \n * const track = Track.fromJSON(trackData);\n * console.log(track.getName()); // \"My Track\"\n * console.log(track.getElements().length); // 1\n * ```\n */\n static fromJSON(json: any): Track {\n if (!json || typeof json !== 'object') {\n throw new Error('Invalid JSON data for Track deserialization');\n }\n const track = new Track(json.name || '', json.type ?? \"element\", json.id);\n track.type = json.type;\n track.props = json.props || {};\n track.elements = (json.elements || [])\n .map(ElementDeserializer.fromJSON)\n .filter((element: any): element is TrackElement => element !== null);\n return track;\n }\n}\n","import { TrackElement } from \"../core/elements/base.element\";\nimport { Track } from \"../core/track/track\";\n\ntype TimelineStore = {\n tracks: Track[];\n version: number;\n elementMap: Record<string, TrackElement>;\n trackMap: Record<string, any>;\n captionProps: Record<string, any>;\n}\n\nexport type TimelineTrackData = {\n tracks: Track[];\n version: number;\n}\n\nexport class TimelineContextStore {\n private static instance: TimelineContextStore;\n private storeMap: Map<string, TimelineStore>;\n\n private constructor() {\n this.storeMap = new Map();\n }\n\n public static getInstance(): TimelineContextStore {\n if (!TimelineContextStore.instance) {\n TimelineContextStore.instance = new TimelineContextStore();\n }\n return TimelineContextStore.instance;\n }\n\n public initializeContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.storeMap.set(contextId, {\n tracks: [],\n version: 0,\n elementMap: {},\n trackMap: {},\n captionProps: {},\n });\n }\n }\n\n public getTimelineData(contextId: string): TimelineTrackData | null {\n const timelineStore = this.storeMap.get(contextId);\n return timelineStore ? {\n tracks: timelineStore.tracks,\n version: timelineStore.version,\n } : null;\n }\n\n public setTimelineData(contextId: string, timelineData: TimelineTrackData): TimelineTrackData {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.tracks = timelineData.tracks;\n this.storeMap.get(contextId)!.version = timelineData.version;\n return timelineData;\n }\n\n public getElementMap(contextId: string): Record<string, TrackElement> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.elementMap;\n }\n\n public setElementMap(contextId: string, elementMap: Record<string, TrackElement>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.elementMap = elementMap;\n }\n\n public getTrackMap(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.trackMap;\n }\n\n public setTrackMap(contextId: string, trackMap: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.trackMap = trackMap;\n }\n\n public getCaptionProps(contextId: string): Record<string, any> {\n this.ensureContext(contextId);\n return this.storeMap.get(contextId)!.captionProps;\n }\n\n public setCaptionProps(contextId: string, captionProps: Record<string, any>): void {\n this.ensureContext(contextId);\n this.storeMap.get(contextId)!.captionProps = captionProps;\n }\n\n public clearContext(contextId: string): void {\n this.storeMap.delete(contextId);\n }\n\n private ensureContext(contextId: string): void {\n if (!this.storeMap.has(contextId)) {\n this.initializeContext(contextId);\n }\n }\n}\n\nexport const timelineContextStore = TimelineContextStore.getInstance();","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementAdder visitor for adding elements to tracks.\n * Uses the visitor pattern to handle different element types\n * and implements the Friend Class Pattern for explicit access control.\n * Automatically calculates start and end times for elements based on\n * existing track content.\n */\nexport class ElementAdder implements ElementVisitor<Promise<boolean>> {\n private track: Track;\n private trackFriend: TrackFriend;\n\n /**\n * Creates a new ElementAdder instance for the specified track.\n *\n * @param track - The track to add elements to\n * \n * @example\n * ```js\n * const adder = new ElementAdder(track);\n * const success = await adder.visitVideoElement(videoElement);\n * ```\n */\n constructor(track: Track) {\n this.track = track;\n this.trackFriend = track.createFriend();\n }\n\n /**\n * Adds a video element to the track.\n * Updates video metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The video element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitVideoElement(videoElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitVideoElement(element: VideoElement): Promise<boolean> {\n await element.updateVideoMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n\n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an audio element to the track.\n * Updates audio metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The audio element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitAudioElement(audioElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitAudioElement(element: AudioElement): Promise<boolean> {\n await element.updateAudioMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + element.getMediaDuration());\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an image element to the track.\n * Updates image metadata and calculates appropriate start/end times\n * based on existing track elements.\n *\n * @param element - The image element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitImageElement(imageElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitImageElement(element: ImageElement): Promise<boolean> {\n await element.updateImageMeta();\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a text element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The text element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitTextElement(textElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitTextElement(element: TextElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a caption element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The caption element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCaptionElement(captionElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCaptionElement(element: CaptionElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds an icon element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The icon element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitIconElement(iconElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitIconElement(element: IconElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a circle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The circle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitCircleElement(circleElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitCircleElement(element: CircleElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n\n /**\n * Adds a rectangle element to the track.\n * Calculates appropriate start/end times based on existing track elements.\n *\n * @param element - The rectangle element to add\n * @returns Promise resolving to true if element was added successfully\n * \n * @example\n * ```js\n * const success = await adder.visitRectElement(rectElement);\n * // success = true if element was added successfully\n * ```\n */\n async visitRectElement(element: RectElement): Promise<boolean> {\n const elements = this.track.getElements();\n const lastEndtime = elements?.length\n ? elements[elements.length - 1].getEnd()\n : 0;\n if (isNaN(element.getStart())) {\n element.setStart(lastEndtime);\n }\n if (isNaN(element.getEnd())) {\n element.setEnd(element.getStart() + 1);\n }\n \n return this.trackFriend.addElement(element);\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementRemover visitor for removing elements from tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementRemover implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitAudioElement(element: AudioElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitImageElement(element: ImageElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitTextElement(element: TextElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitIconElement(element: IconElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitCircleElement(element: CircleElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n\n visitRectElement(element: RectElement): boolean {\n this.trackFriend.removeElement(element);\n return true;\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { Track } from \"../track/track\";\nimport { TrackFriend } from \"../track/track.friend\";\n\n/**\n * ElementUpdater visitor for updating elements in tracks\n * Uses the visitor pattern to handle different element types\n * Implements the Friend Class Pattern for explicit access control\n */\nexport class ElementUpdater implements ElementVisitor<boolean> {\n private trackFriend: TrackFriend;\n\n constructor(track: Track) {\n this.trackFriend = track.createFriend();\n }\n\n visitVideoElement(element: VideoElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitAudioElement(element: AudioElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitImageElement(element: ImageElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitTextElement(element: TextElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCaptionElement(element: CaptionElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitIconElement(element: IconElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitCircleElement(element: CircleElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n\n visitRectElement(element: RectElement): boolean {\n return this.trackFriend.updateElement(element);\n }\n} ","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { TrackElement } from \"../elements/base.element\";\n\nexport class ElementCloner implements ElementVisitor<TrackElement> {\n cloneElementProperties(srcElement: TrackElement, destElement: TrackElement) {\n return destElement\n .setName(srcElement.getName())\n .setType(srcElement.getType())\n .setStart(srcElement.getStart())\n .setEnd(srcElement.getEnd())\n .setProps(srcElement.getProps())\n .setAnimation(srcElement.getAnimation());\n }\n\n visitVideoElement(element: VideoElement): TrackElement {\n const props = element.getProps();\n const clonedElement = new VideoElement(props!.src, element.getParentSize());\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setMediaDuration(element.getMediaDuration())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects() ?? [])\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n return clonedElement;\n }\n\n visitAudioElement(element: AudioElement): TrackElement {\n const clonedElement = new AudioElement(element.getProps()!.src);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setMediaDuration(element.getMediaDuration());\n return clonedElement;\n }\n\n visitImageElement(element: ImageElement): TrackElement {\n const clonedElement = new ImageElement(\n element.getProps()!.src,\n element.getParentSize()\n );\n this.cloneElementProperties(element, clonedElement);\n clonedElement\n .setParentSize(element.getParentSize())\n .setFrame(element.getFrame())\n .setFrameEffects(element.getFrameEffects())\n .setBackgroundColor(element.getBackgroundColor())\n .setObjectFit(element.getObjectFit())\n\n return clonedElement;\n }\n\n visitTextElement(element: TextElement): TrackElement {\n const clonedElement = new TextElement(element.getProps()!.text);\n this.cloneElementProperties(element, clonedElement);\n clonedElement.setTextEffect(element.getTextEffect());\n return clonedElement;\n }\n\n visitCaptionElement(element: CaptionElement): TrackElement {\n const clonedElement = new CaptionElement(\n element.getProps()!.text,\n element.getStart(),\n element.getEnd()\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitRectElement(element: RectElement): TrackElement {\n const clonedElement = new RectElement(\n element.getProps()!.fill,\n element.getProps()!.size\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitCircleElement(element: CircleElement): TrackElement {\n const clonedElement = new CircleElement(\n element.getProps()!.fill,\n element.getProps()!.radius\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n\n visitIconElement(element: IconElement): TrackElement {\n const clonedElement = new IconElement(\n element.getProps()!.src,\n element.getProps()!.size,\n element.getProps()!.fill\n );\n this.cloneElementProperties(element, clonedElement);\n return clonedElement;\n }\n}\n","import { ElementVisitor } from \"./element-visitor\";\nimport { VideoElement } from \"../elements/video.element\";\nimport { AudioElement } from \"../elements/audio.element\";\nimport { ImageElement } from \"../elements/image.element\";\nimport { TextElement } from \"../elements/text.element\";\nimport { CaptionElement } from \"../elements/caption.element\";\nimport { RectElement } from \"../elements/rect.element\";\nimport { CircleElement } from \"../elements/circle.element\";\nimport { IconElement } from \"../elements/icon.element\";\nimport { ElementCloner } from \"./element-cloner\";\nimport { canSplitElement } from \"../../utils/timeline.utils\";\n\nexport interface SplitResult {\n firstElement: any;\n secondElement: any;\n success: boolean;\n}\n\nexport class ElementSplitter implements ElementVisitor<SplitResult> {\n private splitTime: number;\n private elementCloner: ElementCloner;\n constructor(splitTime: number) {\n this.splitTime = splitTime;\n this.elementCloner = new ElementCloner();\n }\n\n visitVideoElement(element: VideoElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n\n const firstElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n const secondElement = this.elementCloner.visitVideoElement(\n element\n ) as VideoElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitAudioElement(element: AudioElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n const secondElement = this.elementCloner.visitAudioElement(\n element\n ) as AudioElement;\n\n const props = element.getProps();\n const secondStartAt =\n (props!.time ?? 0) +\n (this.splitTime - element.getStart()) * (props!.playbackRate ?? 1);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime).setStartAt(secondStartAt);\n\n return { firstElement, secondElement, success: true };\n }\n\n visitImageElement(element: ImageElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n const secondElement = this.elementCloner.visitImageElement(\n element\n ) as ImageElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitTextElement(element: TextElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitTextElement(\n element\n ) as TextElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCaptionElement(element: CaptionElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const originalText = element.getText() || \"\";\n const originalTextArray = originalText.split(\" \");\n const percentage =\n (this.splitTime - element.getStart()) / element.getDuration();\n const firstElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n firstElement.setText(\n originalTextArray\n .slice(0, Math.floor(originalTextArray.length * percentage))\n .join(\" \")\n );\n firstElement.setEnd(this.splitTime);\n const secondElement = this.elementCloner.visitCaptionElement(\n element\n ) as CaptionElement;\n secondElement.setText(\n originalTextArray\n .slice(\n Math.floor(originalTextArray.length * percentage),\n originalTextArray.length\n )\n .join(\" \")\n );\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitRectElement(element: RectElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n const secondElement = this.elementCloner.visitRectElement(\n element\n ) as RectElement;\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitCircleElement(element: CircleElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitCircleElement(element);\n const secondElement = this.elementCloner.visitCircleElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n\n visitIconElement(element: IconElement): SplitResult {\n if (!canSplitElement(element, this.splitTime)) {\n return { firstElement: null, secondElement: null, success: false };\n }\n const firstElement = this.elementCloner.visitIconElement(element);\n const secondElement = this.elementCloner.visitIconElement(element);\n firstElement.setEnd(this.splitTime);\n secondElement.setStart(this.splitTime);\n return { firstElement, secondElement, success: true };\n }\n}\n","import {\n extractVideoAudio,\n generateShortUuid,\n getTotalDuration,\n} from \"../../utils/timeline.utils\";\nimport { Track } from \"../track/track\";\nimport {\n timelineContextStore,\n TimelineTrackData,\n} from \"../../services/data.service\";\nimport { PLAYER_STATE, TIMELINE_ACTION } from \"../../utils/constants\";\nimport { ElementAdder } from \"../visitor/element-adder\";\nimport { ElementRemover } from \"../visitor/element-remover\";\nimport { ElementUpdater } from \"../visitor/element-updater\";\nimport { ElementSplitter, SplitResult } from \"../visitor/element-splitter\";\nimport { ElementCloner } from \"../visitor/element-cloner\";\nimport { TrackElement } from \"../elements/base.element\";\nimport { ProjectJSON, TrackJSON } from \"../../types\";\nimport { ValidationError } from \"../visitor/element-validator\";\n\n/**\n * Type for timeline operation context\n */\nexport interface TimelineOperationContext {\n contextId: string;\n setTotalDuration: (duration: number) => void;\n setPresent: (data: ProjectJSON) => void;\n handleUndo: () => ProjectJSON | null;\n handleRedo: () => ProjectJSON | null;\n handleResetHistory: () => void;\n updateChangeLog: () => void;\n setTimelineAction?: (action: string, payload?: unknown) => void;\n}\n\n/**\n * TimelineEditor\n *\n * This class provides an interface to execute all timeline operations\n * using a direct, class-based approach with track-based management.\n * It also handles undo/redo operations internally.\n */\nexport class TimelineEditor {\n private context: TimelineOperationContext;\n private totalDuration: number = 0;\n\n constructor(context: TimelineOperationContext) {\n this.context = context;\n // Ensure context is initialized in timelineContextStore\n timelineContextStore.initializeContext(this.context.contextId);\n }\n\n getContext(): TimelineOperationContext {\n return this.context;\n }\n\n pauseVideo(): void {\n if (this.context?.setTimelineAction) {\n this.context.setTimelineAction(\n TIMELINE_ACTION.SET_PLAYER_STATE,\n PLAYER_STATE.PAUSED\n );\n }\n }\n\n getTimelineData(): TimelineTrackData | null {\n const contextId = this.context.contextId;\n return timelineContextStore.getTimelineData(contextId);\n }\n\n getLatestVersion(): number {\n const contextId = this.context.contextId;\n const timelineData = timelineContextStore.getTimelineData(contextId);\n return timelineData?.version || 0;\n }\n\n protected setTimelineData({\n tracks,\n version,\n updatePlayerData,\n }: {\n tracks: Track[];\n version?: number;\n updatePlayerData?: boolean;\n }) {\n const prevTimelineData = this.getTimelineData();\n const updatedVersion = version ?? (prevTimelineData?.version || 0) + 1;\n const updatedTimelineData = {\n tracks,\n version: updatedVersion,\n };\n timelineContextStore.setTimelineData(\n this.context.contextId,\n updatedTimelineData\n );\n this.updateHistory(updatedTimelineData);\n this.context.updateChangeLog();\n if (updatePlayerData) {\n this.context?.setTimelineAction?.(\n TIMELINE_ACTION.UPDATE_PLAYER_DATA,\n updatedTimelineData\n );\n }\n return updatedTimelineData as TimelineTrackData;\n }\n\n addTrack(name: string, type: string = \"element\"): Track {\n const prevTimelineData = this.getTimelineData();\n const id = `t-${generateShortUuid()}`;\n const track = new Track(name, type, id);\n const updatedTimelines = [...(prevTimelineData?.tracks || []), track];\n this.setTimelineData({ tracks: updatedTimelines, updatePlayerData: true });\n return track;\n }\n\n getTrackById(id: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getId() === id);\n return track as Track | null;\n }\n\n getTrackByName(name: string): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getName() === name);\n return track as Track | null;\n }\n\n getSubtiltesTrack(): Track | null {\n const prevTimelineData = this.getTimelineData();\n const track = prevTimelineData?.tracks.find((t) => t.getType() === \"caption\");\n return track as Track | null;\n }\n\n removeTrackById(id: string): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== id);\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n removeTrack(track: Track): void {\n const tracks = this.getTimelineData()?.tracks || [];\n const updatedTracks = tracks.filter((t) => t.getId() !== track.getId());\n this.setTimelineData({ tracks: updatedTracks, updatePlayerData: true });\n }\n\n /**\n * Refresh the timeline data\n */\n refresh(): void {\n const currentData = this.getTimelineData();\n if (currentData) {\n this.setTimelineData({ tracks: currentData.tracks, updatePlayerData: true });\n }\n }\n\n /**\n * Add an element to a specific track using the visitor pattern\n * @param track The track to add the element to\n * @param element The element to add\n * @returns 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;\"undefined\"==typeof self&&(i.self=i),\"undefined\"==typeof File&&(i.File=function(){});var e=Array.prototype,r=e.forEach,s=e.indexOf,n=null==i?void 0:i.navigator,o=null==i?void 0:i.document,a=null==i?void 0:i.location,l=null==i?void 0:i.fetch,u=null!=i&&i.XMLHttpRequest&&\"withCredentials\"in new i.XMLHttpRequest?i.XMLHttpRequest:void 0,h=null==i?void 0:i.AbortController,d=null==n?void 0:n.userAgent,v=null!=t?t:{},c={DEBUG:!1,LIB_VERSION:\"1.314.0\"};function f(t,i,e,r,s,n,o){try{var a=t[n](o),l=a.value}catch(t){return void e(t)}a.done?i(l):Promise.resolve(l).then(r,s)}function p(t){return function(){var i=this,e=arguments;return new Promise((function(r,s){var n=t.apply(i,e);function o(t){f(n,r,s,o,a,\"next\",t)}function a(t){f(n,r,s,o,a,\"throw\",t)}o(void 0)}))}}function g(){return g=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},g.apply(null,arguments)}function _(t,i){if(null==t)return{};var e={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;e[r]=t[r]}return e}var m=[\"amazonbot\",\"amazonproductbot\",\"app.hypefactors.com\",\"applebot\",\"archive.org_bot\",\"awariobot\",\"backlinksextendedbot\",\"baiduspider\",\"bingbot\",\"bingpreview\",\"chrome-lighthouse\",\"dataforseobot\",\"deepscan\",\"duckduckbot\",\"facebookexternal\",\"facebookcatalog\",\"http://yandex.com/bots\",\"hubspot\",\"ia_archiver\",\"leikibot\",\"linkedinbot\",\"meta-externalagent\",\"mj12bot\",\"msnbot\",\"nessus\",\"petalbot\",\"pinterest\",\"prerender\",\"rogerbot\",\"screaming frog\",\"sebot-wa\",\"sitebulb\",\"slackbot\",\"slurp\",\"trendictionbot\",\"turnitin\",\"twitterbot\",\"vercel-screenshot\",\"vercelbot\",\"yahoo! slurp\",\"yandexbot\",\"zoombot\",\"bot.htm\",\"bot.php\",\"(bot;\",\"bot/\",\"crawler\",\"ahrefsbot\",\"ahrefssiteaudit\",\"semrushbot\",\"siteauditbot\",\"splitsignalbot\",\"gptbot\",\"oai-searchbot\",\"chatgpt-user\",\"perplexitybot\",\"better uptime bot\",\"sentryuptimebot\",\"uptimerobot\",\"headlesschrome\",\"cypress\",\"google-hoteladsverifier\",\"adsbot-google\",\"apis-google\",\"duplexweb-google\",\"feedfetcher-google\",\"google favicon\",\"google web preview\",\"google-read-aloud\",\"googlebot\",\"googleother\",\"google-cloudvertexbot\",\"googleweblight\",\"mediapartners-google\",\"storebot-google\",\"google-inspectiontool\",\"bytespider\"],y=function(t,i){if(void 0===i&&(i=[]),!t)return!1;var e=t.toLowerCase();return m.concat(i).some((t=>{var i=t.toLowerCase();return-1!==e.indexOf(i)}))},b=[\"$snapshot\",\"$pageview\",\"$pageleave\",\"$set\",\"survey dismissed\",\"survey sent\",\"survey shown\",\"$identify\",\"$groupidentify\",\"$create_alias\",\"$$client_ingestion_warning\",\"$web_experiment_applied\",\"$feature_enrollment_update\",\"$feature_flag_called\"];function w(t,i){return-1!==t.indexOf(i)}var x=function(t){return t.trim()},E=function(t){return t.replace(/^\\$/,\"\")};var S=Array.isArray,k=Object.prototype,P=k.hasOwnProperty,T=k.toString,I=S||function(t){return\"[object Array]\"===T.call(t)},C=t=>\"function\"==typeof t,R=t=>t===Object(t)&&!I(t),F=t=>{if(R(t)){for(var i in t)if(P.call(t,i))return!1;return!0}return!1},M=t=>void 0===t,O=t=>\"[object String]\"==T.call(t),A=t=>O(t)&&0===t.trim().length,D=t=>null===t,j=t=>M(t)||D(t),L=t=>\"[object Number]\"==T.call(t),N=t=>\"[object Boolean]\"===T.call(t),U=t=>t instanceof FormData,z=t=>w(b,t);function H(t){return null===t||\"object\"!=typeof t}function B(t,i){return Object.prototype.toString.call(t)===\"[object \"+i+\"]\"}function q(t){return!M(Event)&&function(t,i){try{return t instanceof i}catch(t){return!1}}(t,Event)}var W=[!0,\"true\",1,\"1\",\"yes\"],G=t=>w(W,t),V=[!1,\"false\",0,\"0\",\"no\"];function J(t,i,e,r,s){return i>e&&(r.warn(\"min cannot be greater than max.\"),i=e),L(t)?t>e?(r.warn(\" cannot be greater than max: \"+e+\". Using max value instead.\"),e):t<i?(r.warn(\" cannot be less than min: \"+i+\". Using min value instead.\"),i):t:(r.warn(\" must be a number. using max or fallback. max: \"+e+\", fallback: \"+s),J(s||e,i,e,r))}class K{constructor(t){this.t={},this.i=t.i,this.o=J(t.bucketSize,0,100,t.h),this.m=J(t.refillRate,0,this.o,t.h),this.$=J(t.refillInterval,0,864e5,t.h)}S(t,i){var e=i-t.lastAccess,r=Math.floor(e/this.$);if(r>0){var s=r*this.m;t.tokens=Math.min(t.tokens+s,this.o),t.lastAccess=t.lastAccess+r*this.$}}consumeRateLimit(t){var i,e=Date.now(),r=String(t),s=this.t[r];return s?this.S(s,e):(s={tokens:this.o,lastAccess:e},this.t[r]=s),0===s.tokens||(s.tokens--,0===s.tokens&&(null==(i=this.i)||i.call(this,t)),0===s.tokens)}stop(){this.t={}}}var Y=\"Mobile\",X=\"iOS\",Q=\"Android\",Z=\"Tablet\",tt=Q+\" \"+Z,it=\"iPad\",et=\"Apple\",rt=et+\" Watch\",st=\"Safari\",nt=\"BlackBerry\",ot=\"Samsung\",at=ot+\"Browser\",lt=ot+\" Internet\",ut=\"Chrome\",ht=ut+\" OS\",dt=ut+\" \"+X,vt=\"Internet Explorer\",ct=vt+\" \"+Y,ft=\"Opera\",pt=ft+\" Mini\",gt=\"Edge\",_t=\"Microsoft \"+gt,mt=\"Firefox\",yt=mt+\" \"+X,bt=\"Nintendo\",wt=\"PlayStation\",xt=\"Xbox\",Et=Q+\" \"+Y,$t=Y+\" \"+st,St=\"Windows\",kt=St+\" Phone\",Pt=\"Nokia\",Tt=\"Ouya\",It=\"Generic\",Ct=It+\" \"+Y.toLowerCase(),Rt=It+\" \"+Z.toLowerCase(),Ft=\"Konqueror\",Mt=\"(\\\\d+(\\\\.\\\\d+)?)\",Ot=new RegExp(\"Version/\"+Mt),At=new RegExp(xt,\"i\"),Dt=new RegExp(wt+\" \\\\w+\",\"i\"),jt=new RegExp(bt+\" \\\\w+\",\"i\"),Lt=new RegExp(nt+\"|PlayBook|BB10\",\"i\"),Nt={\"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 Ut,zt,Ht,Bt=(t,i)=>i&&w(i,et)||function(t){return w(t,st)&&!w(t,ut)&&!w(t,Q)}(t),qt=function(t,i){return i=i||\"\",w(t,\" OPR/\")&&w(t,\"Mini\")?pt:w(t,\" OPR/\")?ft:Lt.test(t)?nt:w(t,\"IE\"+Y)||w(t,\"WPDesktop\")?ct:w(t,at)?lt:w(t,gt)||w(t,\"Edg/\")?_t:w(t,\"FBIOS\")?\"Facebook \"+Y:w(t,\"UCWEB\")||w(t,\"UCBrowser\")?\"UC Browser\":w(t,\"CriOS\")?dt:w(t,\"CrMo\")||w(t,ut)?ut:w(t,Q)&&w(t,st)?Et:w(t,\"FxiOS\")?yt:w(t.toLowerCase(),Ft.toLowerCase())?Ft:Bt(t,i)?w(t,Y)?$t:st:w(t,mt)?mt:w(t,\"MSIE\")||w(t,\"Trident/\")?vt:w(t,\"Gecko\")?mt:\"\"},Wt={[ct]:[new RegExp(\"rv:\"+Mt)],[_t]:[new RegExp(gt+\"?\\\\/\"+Mt)],[ut]:[new RegExp(\"(\"+ut+\"|CrMo)\\\\/\"+Mt)],[dt]:[new RegExp(\"CriOS\\\\/\"+Mt)],\"UC Browser\":[new RegExp(\"(UCBrowser|UCWEB)\\\\/\"+Mt)],[st]:[Ot],[$t]:[Ot],[ft]:[new RegExp(\"(Opera|OPR)\\\\/\"+Mt)],[mt]:[new RegExp(mt+\"\\\\/\"+Mt)],[yt]:[new RegExp(\"FxiOS\\\\/\"+Mt)],[Ft]:[new RegExp(\"Konqueror[:/]?\"+Mt,\"i\")],[nt]:[new RegExp(nt+\" \"+Mt),Ot],[Et]:[new RegExp(\"android\\\\s\"+Mt,\"i\")],[lt]:[new RegExp(at+\"\\\\/\"+Mt)],[vt]:[new RegExp(\"(rv:|MSIE )\"+Mt)],Mozilla:[new RegExp(\"rv:\"+Mt)]},Gt=function(t,i){var e=qt(t,i),r=Wt[e];if(M(r))return null;for(var s=0;s<r.length;s++){var n=r[s],o=t.match(n);if(o)return parseFloat(o[o.length-2])}return null},Vt=[[new RegExp(xt+\"; \"+xt+\" (.*?)[);]\",\"i\"),t=>[xt,t&&t[1]||\"\"]],[new RegExp(bt,\"i\"),[bt,\"\"]],[new RegExp(wt,\"i\"),[wt,\"\"]],[Lt,[nt,\"\"]],[new RegExp(St,\"i\"),(t,i)=>{if(/Phone/.test(i)||/WPDesktop/.test(i))return[kt,\"\"];if(new RegExp(Y).test(i)&&!/IEMobile\\b/.test(i))return[St+\" \"+Y,\"\"];var e=/Windows NT ([0-9.]+)/i.exec(i);if(e&&e[1]){var r=e[1],s=Nt[r]||\"\";return/arm/i.test(i)&&(s=\"RT\"),[St,s]}return[St,\"\"]}],[/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,t=>{if(t&&t[3]){var i=[t[3],t[4],t[5]||\"0\"];return[X,i.join(\".\")]}return[X,\"\"]}],[/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,t=>{var i=\"\";return t&&t.length>=3&&(i=M(t[2])?t[3]:t[2]),[\"watchOS\",i]}],[new RegExp(\"(\"+Q+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+Q+\")\",\"i\"),t=>{if(t&&t[2]){var i=[t[2],t[3],t[4]||\"0\"];return[Q,i.join(\".\")]}return[Q,\"\"]}],[/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/,[ht,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],Jt=function(t){return jt.test(t)?bt:Dt.test(t)?wt:At.test(t)?xt:new RegExp(Tt,\"i\").test(t)?Tt:new RegExp(\"(\"+kt+\"|WPDesktop)\",\"i\").test(t)?kt:/iPad/.test(t)?it:/iPod/.test(t)?\"iPod Touch\":/iPhone/.test(t)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(t)?rt:Lt.test(t)?nt:/(kobo)\\s(ereader|touch)/i.test(t)?\"Kobo\":new RegExp(Pt,\"i\").test(t)?Pt:/(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(Y).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)?Q:tt:new RegExp(\"(pda|\"+Y+\")\",\"i\").test(t)?Ct:new RegExp(Z,\"i\").test(t)&&!new RegExp(Z+\" pc\",\"i\").test(t)?Rt:\"\"},Kt=t=>t instanceof Error;function Yt(t){var i=globalThis._posthogChunkIds;if(i){var e=Object.keys(i);return Ht&&e.length===zt||(zt=e.length,Ht=e.reduce(((e,r)=>{Ut||(Ut={});var s=Ut[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,Ut[r]=[l,u];break}}return e}),{})),Ht}}class Xt{constructor(t,i,e){void 0===e&&(e=[]),this.coercers=t,this.stackParser=i,this.modifiers=e}buildFromUnknown(t,i){void 0===i&&(i={});var e=i&&i.mechanism||{handled:!0,type:\"generic\"},r=this.buildCoercingContext(e,i,0).apply(t),s=this.buildParsingContext(),n=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(n,e),$exception_level:\"error\"}}modifyFrames(t){var i=this;return p((function*(){for(var e of t)e.stacktrace&&e.stacktrace.frames&&I(e.stacktrace.frames)&&(e.stacktrace.frames=yield i.applyModifiers(e.stacktrace.frames));return t}))()}coerceFallback(t){var i;return{type:\"Error\",value:\"Unknown error\",stack:null==(i=t.syntheticException)?void 0:i.stack,synthetic:!0}}parseStacktrace(t,i){var e,r;return null!=t.cause&&(e=this.parseStacktrace(t.cause,i)),\"\"!=t.stack&&null!=t.stack&&(r=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?1:0),i.chunkIdMap)),g({},t,{cause:e,stack:r})}applyChunkIds(t,i){return t.map((t=>(t.filename&&i&&(t.chunk_id=i[t.filename]),t)))}applyCoercers(t,i){for(var e of this.coercers)if(e.match(t))return e.coerce(t,i);return this.coerceFallback(i)}applyModifiers(t){var i=this;return p((function*(){var e=t;for(var r of i.modifiers)e=yield r(e);return e}))()}convertToExceptionList(t,i){var e,r,s,n={type:t.type,value:t.value,mechanism:{type:null!==(e=i.type)&&void 0!==e?e:\"generic\",handled:null===(r=i.handled)||void 0===r||r,synthetic:null!==(s=t.synthetic)&&void 0!==s&&s}};t.stack&&(n.stacktrace={type:\"raw\",frames:t.stack});var o=[n];return null!=t.cause&&o.push(...this.convertToExceptionList(t.cause,g({},i,{handled:!0}))),o}buildParsingContext(){return{chunkIdMap:Yt(this.stackParser)}}buildCoercingContext(t,i,e){void 0===e&&(e=0);var r=(e,r)=>{if(r<=4){var s=this.buildCoercingContext(t,i,r);return this.applyCoercers(e,s)}};return g({},i,{syntheticException:0==e?i.syntheticException:void 0,mechanism:t,apply:t=>r(t,e),next:t=>r(t,e+1)})}}var Qt=\"?\";function Zt(t,i,e,r,s){var n={platform:t,filename:i,function:\"<anonymous>\"===e?Qt:e,in_app:!0};return M(r)||(n.lineno=r),M(s)||(n.colno=s),n}var ti=(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]:Qt,e?\"safari-extension:\"+i:\"safari-web-extension:\"+i]:[t,i]},ii=/^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i,ei=/^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,ri=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,si=(t,i)=>{var e=ii.exec(t);if(e){var[,r,s,n]=e;return Zt(i,r,Qt,+s,+n)}var o=ei.exec(t);if(o){if(o[2]&&0===o[2].indexOf(\"eval\")){var a=ri.exec(o[2]);a&&(o[2]=a[1],o[3]=a[2],o[4]=a[3])}var[l,u]=ti(o[1]||Qt,o[2]);return Zt(i,u,l,o[3]?+o[3]:void 0,o[4]?+o[4]:void 0)}},ni=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i,oi=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,ai=(t,i)=>{var e=ni.exec(t);if(e){if(e[3]&&e[3].indexOf(\" > eval\")>-1){var r=oi.exec(e[3]);r&&(e[1]=e[1]||\"eval\",e[3]=r[1],e[4]=r[2],e[5]=\"\")}var s=e[3],n=e[1]||Qt;return[n,s]=ti(n,s),Zt(i,s,n,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},li=/\\(error: (.*)\\)/,ui=50;function hi(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return function(i,r){void 0===r&&(r=0);for(var s=[],n=i.split(\"\\n\"),o=r;o<n.length;o++){var a=n[o];if(!(a.length>1024)){var l=li.test(a)?a.replace(li,\"$1\"):a;if(!l.match(/\\S*Error: /)){for(var u of e){var h=u(l,t);if(h){s.push(h);break}}if(s.length>=ui)break}}}return function(t){if(!t.length)return[];var i=Array.from(t);return i.reverse(),i.slice(0,ui).map((t=>{return g({},t,{filename:t.filename||(e=i,e[e.length-1]||{}).filename,function:t.function||Qt});var e}))}(s)}}class di{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,i){var e=O(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:e?t.stack:void 0,cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?\"DOMError\":\"DOMException\"}getValue(t){var i=t.name||(this.isDOMError(t)?\"DOMError\":\"DOMException\");return t.message?i+\": \"+t.message:i}isDOMException(t){return B(t,\"DOMException\")}isDOMError(t){return B(t,\"DOMError\")}}class vi{match(t){return(t=>t instanceof Error)(t)}coerce(t,i){return{type:this.getType(t),value:this.getMessage(t,i),stack:this.getStack(t),cause:t.cause?i.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,i){var e=t.message;return e.error&&\"string\"==typeof e.error.message?String(e.error.message):String(e)}getStack(t){return t.stacktrace||t.stack||void 0}}class ci{constructor(){}match(t){return B(t,\"ErrorEvent\")&&null!=t.error}coerce(t,i){var e,r=i.apply(t.error);return r||{type:\"ErrorEvent\",value:t.message,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}var fi=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class pi{match(t){return\"string\"==typeof t}coerce(t,i){var e,[r,s]=this.getInfos(t);return{type:null!=r?r:\"Error\",value:null!=s?s:t,stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}getInfos(t){var i=\"Error\",e=t,r=t.match(fi);return r&&(i=r[1],e=r[2]),[i,e]}}var gi=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];function _i(t,i){void 0===i&&(i=40);var e=Object.keys(t);if(e.sort(),!e.length)return\"[object has no keys]\";for(var r=e.length;r>0;r--){var s=e.slice(0,r).join(\", \");if(!(s.length>i))return r===e.length||s.length<=i?s:s.slice(0,i)+\"...\"}return\"\"}class mi{match(t){return\"object\"==typeof t&&null!==t}coerce(t,i){var e,r=this.getErrorPropertyFromObject(t);return r?i.apply(r):{type:this.getType(t),value:this.getValue(t),stack:null==(e=i.syntheticException)?void 0:e.stack,level:this.isSeverityLevel(t.level)?t.level:\"error\",synthetic:!0}}getType(t){return q(t)?t.constructor.name:\"Error\"}getValue(t){if(\"name\"in t&&\"string\"==typeof t.name){var i=\"'\"+t.name+\"' captured as exception\";return\"message\"in t&&\"string\"==typeof t.message&&(i+=\" with message: '\"+t.message+\"'\"),i}if(\"message\"in t&&\"string\"==typeof t.message)return t.message;var e=this.getObjectClassName(t);return(e&&\"Object\"!==e?\"'\"+e+\"'\":\"Object\")+\" captured as exception with keys: \"+_i(t)}isSeverityLevel(t){return O(t)&&!A(t)&&gi.indexOf(t)>=0}getErrorPropertyFromObject(t){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var e=t[i];if(Kt(e))return e}}getObjectClassName(t){try{var i=Object.getPrototypeOf(t);return i?i.constructor.name:void 0}catch(t){return}}}class yi{match(t){return q(t)}coerce(t,i){var e,r=t.constructor.name;return{type:r,value:r+\" captured as exception with keys: \"+_i(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class bi{match(t){return H(t)}coerce(t,i){var e;return{type:\"Error\",value:\"Primitive value captured as exception: \"+String(t),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}}}class wi{match(t){return B(t,\"PromiseRejectionEvent\")}coerce(t,i){var e,r=this.getUnhandledRejectionReason(t);return H(r)?{type:\"UnhandledRejection\",value:\"Non-Error promise rejection captured with value: \"+String(r),stack:null==(e=i.syntheticException)?void 0:e.stack,synthetic:!0}:i.apply(r)}getUnhandledRejectionReason(t){if(H(t))return t;try{if(\"reason\"in t)return t.reason;if(\"detail\"in t&&\"reason\"in t.detail)return t.detail.reason}catch(t){}return t}}var xi=function(i,e){var{debugEnabled:r}=void 0===e?{}:e,s={k:function(e){if(t&&(c.DEBUG||v.POSTHOG_DEBUG||r)&&!M(t.console)&&t.console){for(var s=(\"__rrweb_original__\"in t.console[e]?t.console[e].__rrweb_original__:t.console[e]),n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];s(i,...o)}},info:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"log\",...i)},warn:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"warn\",...i)},error:function(){for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];s.k(\"error\",...i)},critical:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];console.error(i,...e)},uninitializedWarning:t=>{s.error(\"You must initialize PostHog before calling \"+t)},createLogger:(t,e)=>xi(i+\" \"+t,e)};return s},Ei=xi(\"[PostHog.js]\"),$i=Ei.createLogger,Si=$i(\"[ExternalScriptsLoader]\"),ki=(t,i,e)=>{if(t.config.disable_external_dependency_loading)return Si.warn(i+\" was requested but loading of external scripts is disabled.\"),e(\"Loading of external scripts is disabled\");var r=null==o?void 0:o.querySelectorAll(\"script\");if(r)for(var s,n=function(){if(r[a].src===i){var t=r[a];return t.__posthog_loading_callback_fired?{v:e()}:(t.addEventListener(\"load\",(i=>{t.__posthog_loading_callback_fired=!0,e(void 0,i)})),t.onerror=t=>e(t),{v:void 0})}},a=0;a<r.length;a++)if(s=n())return s.v;var l=()=>{if(!o)return e(\"document not found\");var r=o.createElement(\"script\");if(r.type=\"text/javascript\",r.crossOrigin=\"anonymous\",r.src=i,r.onload=t=>{r.__posthog_loading_callback_fired=!0,e(void 0,t)},r.onerror=t=>e(t),t.config.prepare_external_dependency_script&&(r=t.config.prepare_external_dependency_script(r)),!r)return e(\"prepare_external_dependency_script returned null\");var s,n=o.querySelectorAll(\"body > script\");n.length>0?null==(s=n[0].parentNode)||s.insertBefore(r,n[0]):o.body.appendChild(r)};null!=o&&o.body?l():null==o||o.addEventListener(\"DOMContentLoaded\",l)};v.__PosthogExtensions__=v.__PosthogExtensions__||{},v.__PosthogExtensions__.loadExternalDependency=(t,i,e)=>{var r=\"/static/\"+i+\".js?v=\"+t.version;if(\"remote-config\"===i&&(r=\"/array/\"+t.config.token+\"/config.js\"),\"toolbar\"===i){var s=3e5;r=r+\"&t=\"+Math.floor(Date.now()/s)*s}var n=t.requestRouter.endpointFor(\"assets\",r);ki(t,n,e)},v.__PosthogExtensions__.loadSiteApp=(t,i,e)=>{var r=t.requestRouter.endpointFor(\"api\",i);ki(t,r,e)};var Pi={};function Ti(t,i,e){if(I(t))if(r&&t.forEach===r)t.forEach(i,e);else if(\"length\"in t&&t.length===+t.length)for(var s=0,n=t.length;s<n;s++)if(s in t&&i.call(e,t[s],s)===Pi)return}function Ii(t,i,e){if(!j(t)){if(I(t))return Ti(t,i,e);if(U(t)){for(var r of t.entries())if(i.call(e,r[1],r[0])===Pi)return}else for(var s in t)if(P.call(t,s)&&i.call(e,t[s],s)===Pi)return}}var Ci=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 Ti(e,(function(i){for(var e in i)void 0!==i[e]&&(t[e]=i[e])})),t},Ri=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];return Ti(e,(function(i){Ti(i,(function(i){t.push(i)}))})),t};function Fi(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 Mi=function(t){try{return t()}catch(t){return}},Oi=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){Ei.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"),Ei.critical(t)}}},Ai=function(t){var i={};return Ii(t,(function(t,e){(O(t)&&t.length>0||L(t))&&(i[e]=t)})),i};function Di(t,i){return e=t,r=t=>O(t)&&!D(i)?t.slice(0,i):t,s=new Set,function t(i,e){return i!==Object(i)?r?r(i,e):i:s.has(i)?void 0:(s.add(i),I(i)?(n=[],Ti(i,(i=>{n.push(t(i))}))):(n={},Ii(i,((i,e)=>{s.has(i)||(n[e]=t(i,e))}))),n);var n}(e);var e,r,s}var ji=[\"herokuapp.com\",\"vercel.app\",\"netlify.app\"];function Li(t){var i=null==t?void 0:t.hostname;if(!O(i))return!1;var e=i.split(\".\").slice(-2).join(\".\");for(var r of ji)if(e===r)return!1;return!0}function Ni(t,i){for(var e=0;e<t.length;e++)if(i(t[e]))return t[e]}function Ui(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 zi=\"$people_distinct_id\",Hi=\"__alias\",Bi=\"__timers\",qi=\"$autocapture_disabled_server_side\",Wi=\"$heatmaps_enabled_server_side\",Gi=\"$exception_capture_enabled_server_side\",Vi=\"$error_tracking_suppression_rules\",Ji=\"$error_tracking_capture_extension_exceptions\",Ki=\"$web_vitals_enabled_server_side\",Yi=\"$dead_clicks_enabled_server_side\",Xi=\"$product_tours_enabled_server_side\",Qi=\"$web_vitals_allowed_metrics\",Zi=\"$session_recording_remote_config\",te=\"$sesid\",ie=\"$session_is_sampled\",ee=\"$enabled_feature_flags\",re=\"$early_access_features\",se=\"$feature_flag_details\",ne=\"$stored_person_properties\",oe=\"$stored_group_properties\",ae=\"$surveys\",le=\"$flag_call_reported\",ue=\"$user_state\",he=\"$client_session_props\",de=\"$capture_rate_limit\",ve=\"$initial_campaign_params\",ce=\"$initial_referrer_info\",fe=\"$initial_person_info\",pe=\"$epp\",ge=\"__POSTHOG_TOOLBAR__\",_e=\"$posthog_cookieless\",me=[zi,Hi,\"__cmpns\",Bi,\"$session_recording_enabled_server_side\",Wi,te,ee,Vi,ue,re,se,oe,ne,ae,le,he,de,ve,ce,pe,fe,\"$conversations_widget_session_id\",\"$conversations_ticket_id\",\"$conversations_widget_state\",\"$conversations_user_traits\"];function ye(t){return t instanceof Element&&(t.id===ge||!(null==t.closest||!t.closest(\".toolbar-global-fade-container\")))}function be(t){return!!t&&1===t.nodeType}function we(t,i){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===i.toLowerCase()}function xe(t){return!!t&&3===t.nodeType}function Ee(t){return!!t&&11===t.nodeType}function $e(t){return t?x(t).split(/\\s+/):[]}function Se(i){var e=null==t?void 0:t.location.href;return!!(e&&i&&i.some((t=>e.match(t))))}function ke(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 $e(i)}function Pe(t){return j(t)?null:x(t).split(/(\\s+)/).filter((t=>Je(t))).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function Te(t){var i=\"\";return Ue(t)&&!ze(t)&&t.childNodes&&t.childNodes.length&&Ii(t.childNodes,(function(t){var e;xe(t)&&t.textContent&&(i+=null!==(e=Pe(t.textContent))&&void 0!==e?e:\"\")})),x(i)}function Ie(t){return M(t.target)?t.srcElement||null:null!=(i=t.target)&&i.shadowRoot?t.composedPath()[0]||null:t.target||null;var i}var Ce=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function Re(t,i){if(M(i))return!0;var e,r=function(t){if(i.some((i=>t.matches(i))))return{v:!0}};for(var s of t)if(e=r(s))return e.v;return!1}function Fe(t){var i=t.parentNode;return!(!i||!be(i))&&i}var Me=[\"next\",\"previous\",\"prev\",\">\",\"<\"],Oe=10;var Ae=[\".ph-no-rageclick\",\".ph-no-capture\"];function De(i,e){if(!t||je(i))return!1;var r,s,n;N(e)?(r=!!e&&Ae,s=void 0):(r=null!==(n=null==e?void 0:e.css_selector_ignorelist)&&void 0!==n?n:Ae,s=null==e?void 0:e.content_ignorelist);if(!1===r)return!1;var{targetElementList:o}=Le(i,!1);return!function(t,i){if(!1===t||M(t))return!1;var e;if(!0===t)e=Me;else{if(!I(t))return!1;if(t.length>Oe)return Ei.error(\"[PostHog] content_ignorelist array cannot exceed \"+Oe+\" items. Use css_selector_ignorelist for more complex matching.\"),!1;e=t.map((t=>t.toLowerCase()))}return i.some((t=>{var{safeText:i,ariaLabel:r}=t;return e.some((t=>i.includes(t)||r.includes(t)))}))}(s,o.map((t=>{var i;return{safeText:Te(t).toLowerCase(),ariaLabel:(null==(i=t.getAttribute(\"aria-label\"))?void 0:i.toLowerCase().trim())||\"\"}})))&&!Re(o,r)}var je=t=>!t||we(t,\"html\")||!be(t),Le=(i,e)=>{if(!t||je(i))return{parentIsUsefulElement:!1,targetElementList:[]};for(var r=!1,s=[i],n=i;n.parentNode&&!we(n,\"body\");)if(Ee(n.parentNode))s.push(n.parentNode.host),n=n.parentNode.host;else{var o=Fe(n);if(!o)break;if(e||Ce.indexOf(o.tagName.toLowerCase())>-1)r=!0;else{var a=t.getComputedStyle(o);a&&\"pointer\"===a.getPropertyValue(\"cursor\")&&(r=!0)}s.push(o),n=o}return{parentIsUsefulElement:r,targetElementList:s}};function Ne(i,e,r,s,n){var o,a,l,u;if(void 0===r&&(r=void 0),!t||je(i))return!1;if(null!=(o=r)&&o.url_allowlist&&!Se(r.url_allowlist))return!1;if(null!=(a=r)&&a.url_ignorelist&&Se(r.url_ignorelist))return!1;if(null!=(l=r)&&l.dom_event_allowlist){var h=r.dom_event_allowlist;if(h&&!h.some((t=>e.type===t)))return!1}var{parentIsUsefulElement:d,targetElementList:v}=Le(i,s);if(!function(t,i){var e=null==i?void 0:i.element_allowlist;if(M(e))return!0;var r,s=function(t){if(e.some((i=>t.tagName.toLowerCase()===i)))return{v:!0}};for(var n of t)if(r=s(n))return r.v;return!1}(v,r))return!1;if(!Re(v,null==(u=r)?void 0:u.css_selector_allowlist))return!1;var c=t.getComputedStyle(i);if(c&&\"pointer\"===c.getPropertyValue(\"cursor\")&&\"click\"===e.type)return!0;var f=i.tagName.toLowerCase();switch(f){case\"html\":return!1;case\"form\":return(n||[\"submit\"]).indexOf(e.type)>=0;case\"input\":case\"select\":case\"textarea\":return(n||[\"change\",\"click\"]).indexOf(e.type)>=0;default:return d?(n||[\"click\"]).indexOf(e.type)>=0:(n||[\"click\"]).indexOf(e.type)>=0&&(Ce.indexOf(f)>-1||\"true\"===i.getAttribute(\"contenteditable\"))}}function Ue(t){for(var i=t;i.parentNode&&!we(i,\"body\");i=i.parentNode){var e=ke(i);if(w(e,\"ph-sensitive\")||w(e,\"ph-no-capture\"))return!1}if(w(ke(t),\"ph-include\"))return!0;var r=t.type||\"\";if(O(r))switch(r.toLowerCase()){case\"hidden\":case\"password\":return!1}var s=t.name||t.id||\"\";if(O(s)){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(s.replace(/[^a-zA-Z0-9]/g,\"\")))return!1}return!0}function ze(t){return!!(we(t,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(t.type)||we(t,\"select\")||we(t,\"textarea\")||\"true\"===t.getAttribute(\"contenteditable\"))}var He=\"(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})\",Be=new RegExp(\"^(?:\"+He+\")$\"),qe=new RegExp(He),We=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",Ge=new RegExp(\"^(\"+We+\")$\"),Ve=new RegExp(\"(\"+We+\")\");function Je(t,i){if(void 0===i&&(i=!0),j(t))return!1;if(O(t)){if(t=x(t),(i?Be:qe).test((t||\"\").replace(/[- ]/g,\"\")))return!1;if((i?Ge:Ve).test(t))return!1}return!0}function Ke(t){var i=Te(t);return Je(i=(i+\" \"+Ye(t)).trim())?i:\"\"}function Ye(t){var i=\"\";return t&&t.childNodes&&t.childNodes.length&&Ii(t.childNodes,(function(t){var e;if(t&&\"span\"===(null==(e=t.tagName)?void 0:e.toLowerCase()))try{var r=Te(t);i=(i+\" \"+r).trim(),t.childNodes&&t.childNodes.length&&(i=(i+\" \"+Ye(t)).trim())}catch(t){Ei.error(\"[AutoCapture]\",t)}})),i}function Xe(t){return function(t){var i=t.map((t=>{var i,e,r=\"\";if(t.tag_name&&(r+=t.tag_name),t.attr_class)for(var s of(t.attr_class.sort(),t.attr_class))r+=\".\"+s.replace(/\"/g,\"\");var n=g({},t.text?{text:t.text}:{},{\"nth-child\":null!==(i=t.nth_child)&&void 0!==i?i:0,\"nth-of-type\":null!==(e=t.nth_of_type)&&void 0!==e?e:0},t.href?{href:t.href}:{},t.attr_id?{attr_id:t.attr_id}:{},t.attributes),o={};return Fi(n).sort(((t,i)=>{var[e]=t,[r]=i;return e.localeCompare(r)})).forEach((t=>{var[i,e]=t;return o[Qe(i.toString())]=Qe(e.toString())})),r+=\":\",r+=Fi(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:Ze(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Fi(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 Qe(t){return t.replace(/\"|\\\\\"/g,'\\\\\"')}function Ze(t){var i=t.attr__class;return i?I(i)?i:$e(i):void 0}class tr{constructor(t){this.disabled=!1===t;var i=R(t)?t:{};this.thresholdPx=i.threshold_px||30,this.timeoutMs=i.timeout_ms||1e3,this.clickCount=i.click_count||3,this.clicks=[]}isRageClick(t,i,e){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(t-r.x)+Math.abs(i-r.y)<this.thresholdPx&&e-r.timestamp<this.timeoutMs){if(this.clicks.push({x:t,y:i,timestamp:e}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:t,y:i,timestamp:e}];return!1}}var ir=\"$copy_autocapture\",er=function(t){return t.GZipJS=\"gzip-js\",t.Base64=\"base64\",t}({}),rr=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"],sr=t=>{var i=null==o?void 0:o.createElement(\"a\");return M(i)?null:(i.href=t,i)},nr=function(t,i){var e,r;void 0===i&&(i=\"&\");var s=[];return Ii(t,(function(t,i){M(t)||M(i)||\"undefined\"===i||(e=encodeURIComponent((t=>t instanceof File)(t)?t.name:t.toString()),r=encodeURIComponent(i),s[s.length]=r+\"=\"+e)})),s.join(i)},or=function(t,i){for(var e,r=((t.split(\"#\")[0]||\"\").split(/\\?(.*)/)[1]||\"\").replace(/^\\?+/g,\"\").split(\"&\"),s=0;s<r.length;s++){var n=r[s].split(\"=\");if(n[0]===i){e=n;break}}if(!I(e)||e.length<2)return\"\";var o=e[1];try{o=decodeURIComponent(o)}catch(t){Ei.error(\"Skipping decoding for malformed query param: \"+o)}return o.replace(/\\+/g,\" \")},ar=function(t,i,e){if(!t||!i||!i.length)return t;for(var r=t.split(\"#\"),s=r[0]||\"\",n=r[1],o=s.split(\"?\"),a=o[1],l=o[0],u=(a||\"\").split(\"&\"),h=[],d=0;d<u.length;d++){var v=u[d].split(\"=\");I(v)&&(i.includes(v[0])?h.push(v[0]+\"=\"+e):h.push(u[d]))}var c=l;return null!=a&&(c+=\"?\"+h.join(\"&\")),null!=n&&(c+=\"#\"+n),c},lr=function(t,i){var e=t.match(new RegExp(i+\"=([^&]*)\"));return e?e[1]:null},ur=$i(\"[AutoCapture]\");function hr(t,i){return i.length>t?i.slice(0,t)+\"...\":i}function dr(t){if(t.previousElementSibling)return t.previousElementSibling;var i=t;do{i=i.previousSibling}while(i&&!be(i));return i}function vr(t,i,e,r){var s=t.tagName.toLowerCase(),n={tag_name:s};Ce.indexOf(s)>-1&&!e&&(\"a\"===s.toLowerCase()||\"button\"===s.toLowerCase()?n.$el_text=hr(1024,Ke(t)):n.$el_text=hr(1024,Te(t)));var o=ke(t);o.length>0&&(n.classes=o.filter((function(t){return\"\"!==t}))),Ii(t.attributes,(function(e){var s;if((!ze(t)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(e.name))&&((null==r||!r.includes(e.name))&&!i&&Je(e.value)&&(s=e.name,!O(s)||\"_ngcontent\"!==s.substring(0,10)&&\"_nghost\"!==s.substring(0,7)))){var o=e.value;\"class\"===e.name&&(o=$e(o).join(\" \")),n[\"attr__\"+e.name]=hr(1024,o)}}));for(var a=1,l=1,u=t;u=dr(u);)a++,u.tagName===t.tagName&&l++;return n.nth_child=a,n.nth_of_type=l,n}function cr(i,e){for(var r,s,{e:n,maskAllElementAttributes:o,maskAllText:a,elementAttributeIgnoreList:l,elementsChainAsString:u}=e,h=[i],d=i;d.parentNode&&!we(d,\"body\");)Ee(d.parentNode)?(h.push(d.parentNode.host),d=d.parentNode.host):(h.push(d.parentNode),d=d.parentNode);var v,c=[],f={},p=!1,g=!1;if(Ii(h,(t=>{var i=Ue(t);\"a\"===t.tagName.toLowerCase()&&(p=t.getAttribute(\"href\"),p=i&&p&&Je(p)&&p),w(ke(t),\"ph-no-capture\")&&(g=!0),c.push(vr(t,o,a,l));var e=function(t){if(!Ue(t))return{};var i={};return Ii(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&&Je(r)&&(i[e]=r)}})),i}(t);Ci(f,e)})),g)return{props:{},explicitNoCapture:g};if(a||(\"a\"===i.tagName.toLowerCase()||\"button\"===i.tagName.toLowerCase()?c[0].$el_text=Ke(i):c[0].$el_text=Te(i)),p){var _,m;c[0].attr__href=p;var y=null==(_=sr(p))?void 0:_.host,b=null==t||null==(m=t.location)?void 0:m.host;y&&b&&y!==b&&(v=p)}return{props:Ci({$event_type:n.type,$ce_version:1},u?{}:{$elements:c},{$elements_chain:Xe(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 fr{constructor(t){this.P=!1,this.T=null,this.I=!1,this.instance=t,this.rageclicks=new tr(t.config.rageclick),this.C=null}get R(){var t,i,e=R(this.instance.config.autocapture)?this.instance.config.autocapture:{};return e.url_allowlist=null==(t=e.url_allowlist)?void 0:t.map((t=>new RegExp(t))),e.url_ignorelist=null==(i=e.url_ignorelist)?void 0:i.map((t=>new RegExp(t))),e}F(){if(this.isBrowserSupported()){if(t&&o){var i=i=>{i=i||(null==t?void 0:t.event);try{this.M(i)}catch(t){ur.error(\"Failed to capture event\",t)}};if(Ui(o,\"submit\",i,{capture:!0}),Ui(o,\"change\",i,{capture:!0}),Ui(o,\"click\",i,{capture:!0}),this.R.capture_copied_text){var e=i=>{i=i||(null==t?void 0:t.event),this.M(i,ir)};Ui(o,\"copy\",e,{capture:!0}),Ui(o,\"cut\",e,{capture:!0})}}}else ur.info(\"Disabling Automatic Event Collection because this browser is not supported\")}startIfEnabled(){this.isEnabled&&!this.P&&(this.F(),this.P=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.I=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[qi]:!!t.autocapture_opt_out}),this.T=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.C=t}getElementSelectors(t){var i,e=[];return null==(i=this.C)||i.forEach((i=>{var r=null==o?void 0:o.querySelectorAll(i);null==r||r.forEach((r=>{t===r&&e.push(i)}))})),e}get isEnabled(){var t,i,e=null==(t=this.instance.persistence)?void 0:t.props[qi],r=this.T;if(D(r)&&!N(e)&&!this.instance.O())return!1;var s=null!==(i=this.T)&&void 0!==i?i:!!e;return!!this.instance.config.autocapture&&!s}M(i,e){if(void 0===e&&(e=\"$autocapture\"),this.isEnabled){var r,s=Ie(i);if(xe(s)&&(s=s.parentNode||null),\"$autocapture\"===e&&\"click\"===i.type&&i instanceof MouseEvent)this.instance.config.rageclick&&null!=(r=this.rageclicks)&&r.isRageClick(i.clientX,i.clientY,i.timeStamp||(new Date).getTime())&&De(s,this.instance.config.rageclick)&&this.M(i,\"$rageclick\");var n=e===ir;if(s&&Ne(s,i,this.R,n,n?[\"copy\",\"cut\"]:void 0)){var{props:o,explicitNoCapture:a}=cr(s,{e:i,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.R.element_attribute_ignorelist,elementsChainAsString:this.I});if(a)return!1;var l=this.getElementSelectors(s);if(l&&l.length>0&&(o.$element_selectors=l),e===ir){var u,h=Pe(null==t||null==(u=t.getSelection())?void 0:u.toString()),d=i.type||\"clipboard\";if(!h)return!1;o.$selected_content=h,o.$copy_type=d}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return C(null==o?void 0:o.querySelectorAll)}}Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return L(t)&&isFinite(t)&&Math.floor(t)===t});var pr=\"0123456789abcdef\";class gr{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 gr(s)}toString(){for(var t=\"\",i=0;i<this.bytes.length;i++)t=t+pr.charAt(this.bytes[i]>>>4)+pr.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 gr(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 _r{constructor(){this.A=0,this.D=0,this.j=new br}generate(){var t=this.generateOrAbort();if(M(t)){this.A=0;var i=this.generateOrAbort();if(M(i))throw new Error(\"Could not generate UUID after timestamp reset\");return i}return t}generateOrAbort(){var t=Date.now();if(t>this.A)this.A=t,this.L();else{if(!(t+1e4>this.A))return;this.D++,this.D>4398046511103&&(this.A++,this.L())}return gr.fromFieldsV7(this.A,Math.trunc(this.D/Math.pow(2,30)),this.D&Math.pow(2,30)-1,this.j.nextUint32())}L(){this.D=1024*this.j.nextUint32()+(1023&this.j.nextUint32())}}var mr,yr=t=>{if(\"undefined\"!=typeof UUIDV7_DENY_WEAK_RNG&&UUIDV7_DENY_WEAK_RNG)throw new Error(\"no cryptographically strong RNG available\");for(var i=0;i<t.length;i++)t[i]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};t&&!M(t.crypto)&&crypto.getRandomValues&&(yr=t=>crypto.getRandomValues(t));class br{constructor(){this.N=new Uint32Array(8),this.U=1/0}nextUint32(){return this.U>=this.N.length&&(yr(this.N),this.U=0),this.N[this.U++]}}var wr=()=>xr().toString(),xr=()=>(mr||(mr=new _r)).generate(),Er=\"\";var $r=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function Sr(t,i){if(i){var e=function(t,i){if(void 0===i&&(i=o),Er)return Er;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_\"+wr();!Er&&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\",Er=n)}return Er}(t);if(!e){var r=(t=>{var i=t.match($r);return i?i[0]:\"\"})(t);r!==e&&Ei.info(\"Warning: cookie subdomain discovery mismatch\",r,e),e=r}return e?\"; domain=.\"+e:\"\"}return\"\"}var kr={H:()=>!!o,B:function(t){Ei.error(\"cookieStore error: \"+t)},q:function(t){if(o){try{for(var i=t+\"=\",e=o.cookie.split(\";\").filter((t=>t.length)),r=0;r<e.length;r++){for(var s=e[r];\" \"==s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(i))return decodeURIComponent(s.substring(i.length,s.length))}}catch(t){}return null}},W:function(t){var i;try{i=JSON.parse(kr.q(t))||{}}catch(t){}return i},G:function(t,i,e,r,s){if(o)try{var n=\"\",a=\"\",l=Sr(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&&Ei.warn(\"cookieStore warning: large cookie, len=\"+h.length),o.cookie=h,h}catch(t){return}},V:function(t,i){if(null!=o&&o.cookie)try{kr.G(t,\"\",-1,i)}catch(t){return}}},Pr=null,Tr={H:function(){if(!D(Pr))return Pr;var i=!0;if(M(t))i=!1;else try{var e=\"__mplssupport__\";Tr.G(e,\"xyz\"),'\"xyz\"'!==Tr.q(e)&&(i=!1),Tr.V(e)}catch(t){i=!1}return i||Ei.error(\"localStorage unsupported; falling back to cookie store\"),Pr=i,i},B:function(t){Ei.error(\"localStorage error: \"+t)},q:function(i){try{return null==t?void 0:t.localStorage.getItem(i)}catch(t){Tr.B(t)}return null},W:function(t){try{return JSON.parse(Tr.q(t))||{}}catch(t){}return null},G:function(i,e){try{null==t||t.localStorage.setItem(i,JSON.stringify(e))}catch(t){Tr.B(t)}},V:function(i){try{null==t||t.localStorage.removeItem(i)}catch(t){Tr.B(t)}}},Ir=[\"$device_id\",\"distinct_id\",te,ie,pe,fe],Cr={},Rr={H:function(){return!0},B:function(t){Ei.error(\"memoryStorage error: \"+t)},q:function(t){return Cr[t]||null},W:function(t){return Cr[t]||null},G:function(t,i){Cr[t]=i},V:function(t){delete Cr[t]}},Fr=null,Mr={H:function(){if(!D(Fr))return Fr;if(Fr=!0,M(t))Fr=!1;else try{var i=\"__support__\";Mr.G(i,\"xyz\"),'\"xyz\"'!==Mr.q(i)&&(Fr=!1),Mr.V(i)}catch(t){Fr=!1}return Fr},B:function(t){Ei.error(\"sessionStorage error: \",t)},q:function(i){try{return null==t?void 0:t.sessionStorage.getItem(i)}catch(t){Mr.B(t)}return null},W:function(t){try{return JSON.parse(Mr.q(t))||null}catch(t){}return null},G:function(i,e){try{null==t||t.sessionStorage.setItem(i,JSON.stringify(e))}catch(t){Mr.B(t)}},V:function(i){try{null==t||t.sessionStorage.removeItem(i)}catch(t){Mr.B(t)}}},Or=function(t){return t[t.PENDING=-1]=\"PENDING\",t[t.DENIED=0]=\"DENIED\",t[t.GRANTED=1]=\"GRANTED\",t}({});class Ar{constructor(t){this._instance=t}get R(){return this._instance.config}get consent(){return this.J()?Or.DENIED:this.K}isOptedOut(){return\"always\"===this.R.cookieless_mode||(this.consent===Or.DENIED||this.consent===Or.PENDING&&(this.R.opt_out_capturing_by_default||\"on_reject\"===this.R.cookieless_mode))}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===Or.DENIED}optInOut(t){this.Y.G(this.X,t?1:0,this.R.cookie_expiration,this.R.cross_subdomain_cookie,this.R.secure_cookie)}reset(){this.Y.V(this.X,this.R.cross_subdomain_cookie)}get X(){var{token:t,opt_out_capturing_cookie_prefix:i,consent_persistence_name:e}=this._instance.config;return e||(i?i+t:\"__ph_opt_in_out_\"+t)}get K(){var t=this.Y.q(this.X);return G(t)?Or.GRANTED:w(V,t)?Or.DENIED:Or.PENDING}get Y(){if(!this.Z){var t=this.R.opt_out_capturing_persistence_type;this.Z=\"localStorage\"===t?Tr:kr;var i=\"localStorage\"===t?kr:Tr;i.q(this.X)&&(this.Z.q(this.X)||this.optInOut(G(i.q(this.X))),i.V(this.X,this.R.cross_subdomain_cookie))}return this.Z}J(){return!!this.R.respect_dnt&&!!Ni([null==n?void 0:n.doNotTrack,null==n?void 0:n.msDoNotTrack,v.doNotTrack],(t=>G(t)))}}var Dr=$i(\"[Dead Clicks]\"),jr=()=>!0,Lr=t=>{var i,e=!(null==(i=t.instance.persistence)||!i.get_property(Yi)),r=t.instance.config.capture_dead_clicks;return N(r)?r:!!R(r)||e};class Nr{get lazyLoadedDeadClicksAutocapture(){return this.tt}constructor(t,i,e){this.instance=t,this.isEnabled=i,this.onCapture=e,this.startIfEnabled()}onRemoteConfig(t){this.instance.persistence&&this.instance.persistence.register({[Yi]:null==t?void 0:t.captureDeadClicks}),this.startIfEnabled()}startIfEnabled(){this.isEnabled(this)&&this.it((()=>{this.et()}))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.initDeadClicksAutocapture&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this.instance,\"dead-clicks-autocapture\",(i=>{i?Dr.error(\"failed to load script\",i):t()}))}et(){var t;if(o){if(!this.tt&&null!=(t=v.__PosthogExtensions__)&&t.initDeadClicksAutocapture){var i=R(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};i.__onCapture=this.onCapture,this.tt=v.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,i),this.tt.start(o),Dr.info(\"starting...\")}}else Dr.error(\"`document` not found. Cannot start.\")}stop(){this.tt&&(this.tt.stop(),this.tt=void 0,Dr.info(\"stopping...\"))}}var Ur=$i(\"[ExceptionAutocapture]\");class zr{constructor(i){var e,r,s;this.rt=()=>{var i;if(t&&this.isEnabled&&null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions){var e=v.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=v.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=v.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.st&&this.R.capture_unhandled_errors&&(this.st=e(this.captureException.bind(this))),!this.nt&&this.R.capture_unhandled_rejections&&(this.nt=r(this.captureException.bind(this))),!this.ot&&this.R.capture_console_errors&&(this.ot=s(this.captureException.bind(this)))}catch(t){Ur.error(\"failed to start\",t),this.ut()}}},this._instance=i,this.ht=!(null==(e=this._instance.persistence)||!e.props[Gi]),this.dt=new K({refillRate:null!==(r=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)&&void 0!==r?r:1,bucketSize:null!==(s=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)&&void 0!==s?s:10,refillInterval:1e4,h:Ur}),this.R=this.vt(),this.startIfEnabledOrStop()}vt(){var t=this._instance.config.capture_exceptions,i={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return R(t)?i=g({},i,t):(M(t)?this.ht:t)&&(i=g({},i,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),i}get isEnabled(){return this.R.capture_console_errors||this.R.capture_unhandled_errors||this.R.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Ur.info(\"enabled\"),this.ut(),this.it(this.rt)):this.ut()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.errorWrappingFunctions&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"exception-autocapture\",(i=>{if(i)return Ur.error(\"failed to load script\",i);t()}))}ut(){var t,i,e;null==(t=this.st)||t.call(this),this.st=void 0,null==(i=this.nt)||i.call(this),this.nt=void 0,null==(e=this.ot)||e.call(this),this.ot=void 0}onRemoteConfig(t){var i=t.autocaptureExceptions;this.ht=!!i||!1,this._instance.persistence&&this._instance.persistence.register({[Gi]:this.ht}),this.R=this.vt(),this.startIfEnabledOrStop()}onConfigChange(){this.R=this.vt()}captureException(t){var i,e,r=null!==(i=null==t||null==(e=t.$exception_list)||null==(e=e[0])?void 0:e.type)&&void 0!==i?i:\"Exception\";this.dt.consumeRateLimit(r)?Ur.info(\"Skipping exception capture because of client rate limiting.\",{exception:r}):this._instance.exceptions.sendExceptionEvent(t)}}function Hr(t,i,e){try{if(!(i in t))return()=>{};var r=t[i],s=e(r);return C(s)&&(s.prototype=s.prototype||{},Object.defineProperties(s,{__posthog_wrapped__:{enumerable:!1,value:!0}})),t[i]=s,()=>{t[i]=r}}catch(t){return()=>{}}}class Br{constructor(i){var e;this._instance=i,this.ct=(null==t||null==(e=t.location)?void 0:e.pathname)||\"\"}get isEnabled(){return\"history_change\"===this._instance.config.capture_pageview}startIfEnabled(){this.isEnabled&&(Ei.info(\"History API monitoring enabled, starting...\"),this.monitorHistoryChanges())}stop(){this.ft&&this.ft(),this.ft=void 0,Ei.info(\"History API monitoring stopped\")}monitorHistoryChanges(){var i,e;if(t&&t.history){var r=this;null!=(i=t.history.pushState)&&i.__posthog_wrapped__||Hr(t.history,\"pushState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"pushState\")})),null!=(e=t.history.replaceState)&&e.__posthog_wrapped__||Hr(t.history,\"replaceState\",(t=>function(i,e,s){t.call(this,i,e,s),r._t(\"replaceState\")})),this.yt()}}_t(i){try{var e,r=null==t||null==(e=t.location)?void 0:e.pathname;if(!r)return;r!==this.ct&&this.isEnabled&&this._instance.capture(\"$pageview\",{navigation_type:i}),this.ct=r}catch(t){Ei.error(\"Error capturing \"+i+\" pageview\",t)}}yt(){if(!this.ft){var i=()=>{this._t(\"popstate\")};Ui(t,\"popstate\",i),this.ft=()=>{t&&t.removeEventListener(\"popstate\",i)}}}}var qr=$i(\"[SegmentIntegration]\");function Wr(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()||wr();t.config.get_device_id=r,e.id()&&(t.register({distinct_id:e.id(),$device_id:r()}),t.persistence.set_property(ue,\"identified\")),i()},s=e.user();\"then\"in s&&C(s.then)?s.then((t=>r(t))):r(s)}(t,(()=>{e.register((t=>{Promise&&Promise.resolve||qr.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()||(qr.info(\"No userId set, resetting PostHog\"),t.reset()),i.event.userId&&i.event.userId!==t.get_distinct_id()&&(qr.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 Gr=\"posthog-js\";function Vr(t,i){var{organization:e,projectId:r,prefix:s,severityAllowList:n=[\"error\"],sendExceptionsToPostHog:o=!0}=void 0===i?{}:i;return i=>{var a,l,u,h,d;if(!(\"*\"===n||n.includes(i.level))||!t.__loaded)return i;i.tags||(i.tags={});var v=t.requestRouter.endpointFor(\"ui\",\"/project/\"+t.config.token+\"/person/\"+t.get_distinct_id());i.tags[\"PostHog Person URL\"]=v,t.sessionRecordingStarted()&&(i.tags[\"PostHog Recording URL\"]=t.get_session_replay_url({withTimestamp:!0}));var c=(null==(a=i.exception)?void 0:a.values)||[],f=c.map((t=>g({},t,{stacktrace:t.stacktrace?g({},t.stacktrace,{type:\"raw\",frames:(t.stacktrace.frames||[]).map((t=>g({},t,{platform:\"web:javascript\"})))}):void 0}))),p={$exception_message:(null==(l=c[0])?void 0:l.value)||i.message,$exception_type:null==(u=c[0])?void 0:u.type,$exception_level:i.level,$exception_list:f,$sentry_event_id:i.event_id,$sentry_exception:i.exception,$sentry_exception_message:(null==(h=c[0])?void 0:h.value)||i.message,$sentry_exception_type:null==(d=c[0])?void 0:d.type,$sentry_tags:i.tags};return e&&r&&(p.$sentry_url=(s||\"https://sentry.io/organizations/\")+e+\"/issues/?project=\"+r+\"&query=\"+i.event_id),o&&t.exceptions.sendExceptionEvent(p),i}}class Jr{constructor(t,i,e,r,s,n){this.name=Gr,this.setupOnce=function(o){o(Vr(t,{organization:i,projectId:e,prefix:r,severityAllowList:s,sendExceptionsToPostHog:null==n||n}))}}}var Kr=null!=t&&t.location?lr(t.location.hash,\"__posthog\")||lr(location.hash,\"state\"):null,Yr=\"_postHogToolbarParams\",Xr=$i(\"[Toolbar]\"),Qr=function(t){return t[t.UNINITIALIZED=0]=\"UNINITIALIZED\",t[t.LOADING=1]=\"LOADING\",t[t.LOADED=2]=\"LOADED\",t}(Qr||{});class Zr{constructor(t){this.instance=t}bt(t){v.ph_toolbar_state=t}wt(){var t;return null!==(t=v.ph_toolbar_state)&&void 0!==t?t:Qr.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=Kr||lr(i.hash,\"__posthog\")||lr(i.hash,\"state\"),a=n?Mi((()=>JSON.parse(atob(decodeURIComponent(n)))))||Mi((()=>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(Yr)||\"{}\")).source=\"localstorage\",delete s.userIntent),!(!s.token||this.instance.config.token!==s.token)&&(this.loadToolbar(s),!0)}catch(t){return!1}}xt(t){var i=v.ph_load_toolbar||v.ph_load_editor;!j(i)&&C(i)?i(t,this.instance):Xr.warn(\"No toolbar load function found\")}loadToolbar(i){var e=!(null==o||!o.getElementById(ge));if(!t||e)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=g({token:this.instance.config.token},i,{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(t.localStorage.setItem(Yr,JSON.stringify(g({},s,{source:void 0}))),this.wt()===Qr.LOADED)this.xt(s);else if(this.wt()===Qr.UNINITIALIZED){var n;this.bt(Qr.LOADING),null==(n=v.__PosthogExtensions__)||null==n.loadExternalDependency||n.loadExternalDependency(this.instance,\"toolbar\",(t=>{if(t)return Xr.error(\"[Toolbar] Failed to load\",t),void this.bt(Qr.UNINITIALIZED);this.bt(Qr.LOADED),this.xt(s)})),Ui(t,\"turbolinks:load\",(()=>{this.bt(Qr.UNINITIALIZED),this.loadToolbar(s)}))}return!0}Et(t){return this.loadToolbar(t)}maybeLoadEditor(t,i,e){return void 0===t&&(t=void 0),void 0===i&&(i=void 0),void 0===e&&(e=void 0),this.maybeLoadToolbar(t,i,e)}}var ts=$i(\"[TracingHeaders]\");class is{constructor(t){this.$t=void 0,this.St=void 0,this.rt=()=>{var t,i;M(this.$t)&&(null==(t=v.__PosthogExtensions__)||null==(t=t.tracingHeadersPatchFns)||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager));M(this.St)&&(null==(i=v.__PosthogExtensions__)||null==(i=i.tracingHeadersPatchFns)||i._patchFetch(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager))},this._instance=t}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.tracingHeadersPatchFns&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"tracing-headers\",(i=>{if(i)return ts.error(\"failed to load script\",i);t()}))}startIfEnabledOrStop(){var t,i;this._instance.config.__add_tracing_headers?this.it(this.rt):(null==(t=this.$t)||t.call(this),null==(i=this.St)||i.call(this),this.$t=void 0,this.St=void 0)}}var es=\"https?://(.*)\",rs=[\"gclid\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"igshid\",\"ttclid\",\"rdt_cid\",\"epik\",\"qclid\",\"sccid\",\"irclid\",\"_kx\"],ss=Ri([\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gad_source\",\"mc_cid\"],rs),ns=\"<masked>\",os=[\"li_fat_id\"];function as(t,i,e){if(!o)return{};var r,s=i?Ri([],rs,e||[]):[],n=ls(ar(o.URL,s,ns),t),a=(r={},Ii(os,(function(t){var i=kr.q(t);r[t]=i||null})),r);return Ci(a,n)}function ls(t,i){var e=ss.concat(i||[]),r={};return Ii(e,(function(i){var e=or(t,i);r[i]=e||null})),r}function us(t){var i=function(t){return t?0===t.search(es+\"google.([^/?]*)\")?\"google\":0===t.search(es+\"bing.com\")?\"bing\":0===t.search(es+\"yahoo.com\")?\"yahoo\":0===t.search(es+\"duckduckgo.com\")?\"duckduckgo\":null:null}(t),e=\"yahoo\"!=i?\"q\":\"p\",r={};if(!D(i)){r.$search_engine=i;var s=o?or(o.referrer,e):\"\";s.length&&(r.ph_keyword=s)}return r}function hs(){return navigator.language||navigator.userLanguage}function ds(){return(null==o?void 0:o.referrer)||\"$direct\"}function vs(t,i){var e=t?Ri([],rs,i||[]):[],r=null==a?void 0:a.href.substring(0,1e3);return{r:ds().substring(0,1e3),u:r?ar(r,e,ns):void 0}}function cs(t){var i,{r:e,u:r}=t,s={$referrer:e,$referring_domain:null==e?void 0:\"$direct\"==e?\"$direct\":null==(i=sr(e))?void 0:i.host};if(r){s.$current_url=r;var n=sr(r);s.$host=null==n?void 0:n.host,s.$pathname=null==n?void 0:n.pathname;var o=ls(r);Ci(s,o)}if(e){var a=us(e);Ci(s,a)}return s}function fs(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(t){return}}function ps(){try{return(new Date).getTimezoneOffset()}catch(t){return}}function gs(i,e){if(!d)return{};var r,s,n,o=i?Ri([],rs,e||[]):[],[l,u]=function(t){for(var i=0;i<Vt.length;i++){var[e,r]=Vt[i],s=e.exec(t),n=s&&(C(r)?r(s,t):r);if(n)return n}return[\"\",\"\"]}(d);return Ci(Ai({$os:l,$os_version:u,$browser:qt(d,navigator.vendor),$device:Jt(d),$device_type:(s=d,n=Jt(s),n===it||n===tt||\"Kobo\"===n||\"Kindle Fire\"===n||n===Rt?Z:n===bt||n===xt||n===wt||n===Tt?\"Console\":n===rt?\"Wearable\":n?Y:\"Desktop\"),$timezone:fs(),$timezone_offset:ps()}),{$current_url:ar(null==a?void 0:a.href,o,ns),$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:Gt(d,navigator.vendor),$browser_language:hs(),$browser_language_prefix:(r=hs(),\"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 _s=$i(\"[Web Vitals]\"),ms=9e5;class ys{constructor(t){var i;this.kt=!1,this.P=!1,this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Pt=()=>{clearTimeout(this.Tt),0!==this.N.metrics.length&&(this._instance.capture(\"$web_vitals\",this.N.metrics.reduce(((t,i)=>g({},t,{[\"$web_vitals_\"+i.name+\"_event\"]:g({},i),[\"$web_vitals_\"+i.name+\"_value\"]:i.value})),{})),this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.It=t=>{var i,e=null==(i=this._instance.sessionManager)?void 0:i.checkAndGetSessionAndWindowId(!0);if(M(e))_s.error(\"Could not read session ID. Dropping metrics!\");else{this.N=this.N||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=this.Ct();if(!M(r))if(j(null==t?void 0:t.name)||j(null==t?void 0:t.value))_s.error(\"Invalid metric received\",t);else if(this.Rt&&t.value>=this.Rt)_s.error(\"Ignoring metric with value >= \"+this.Rt,t);else this.N.url!==r&&(this.Pt(),this.Tt=setTimeout(this.Pt,this.flushToCaptureTimeoutMs)),M(this.N.url)&&(this.N.url=r),this.N.firstMetricTimestamp=M(this.N.firstMetricTimestamp)?Date.now():this.N.firstMetricTimestamp,t.attribution&&t.attribution.interactionTargetElement&&(t.attribution.interactionTargetElement=void 0),this.N.metrics.push(g({},t,{$current_url:r,$session_id:e.sessionId,$window_id:e.windowId,timestamp:Date.now()})),this.N.metrics.length===this.allowedMetrics.length&&this.Pt()}},this.rt=()=>{var t,i,e,r,s=v.__PosthogExtensions__;M(s)||M(s.postHogWebVitalsCallbacks)||({onLCP:t,onCLS:i,onFCP:e,onINP:r}=s.postHogWebVitalsCallbacks),t&&i&&e&&r?(this.allowedMetrics.indexOf(\"LCP\")>-1&&t(this.It.bind(this)),this.allowedMetrics.indexOf(\"CLS\")>-1&&i(this.It.bind(this)),this.allowedMetrics.indexOf(\"FCP\")>-1&&e(this.It.bind(this)),this.allowedMetrics.indexOf(\"INP\")>-1&&r(this.It.bind(this)),this.P=!0):_s.error(\"web vitals callbacks not loaded - not starting\")},this._instance=t,this.kt=!(null==(i=this._instance.persistence)||!i.props[Ki]),this.startIfEnabled()}get allowedMetrics(){var t,i,e=R(this._instance.config.capture_performance)?null==(t=this._instance.config.capture_performance)?void 0:t.web_vitals_allowed_metrics:void 0;return M(e)?(null==(i=this._instance.persistence)?void 0:i.props[Qi])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:e}get flushToCaptureTimeoutMs(){return(R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get Rt(){var t=R(this._instance.config.capture_performance)&&L(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:ms;return 0<t&&t<=6e4?ms:t}get isEnabled(){var t=null==a?void 0:a.protocol;if(\"http:\"!==t&&\"https:\"!==t)return _s.info(\"Web Vitals are disabled on non-http/https protocols\"),!1;var i=R(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals:N(this._instance.config.capture_performance)?this._instance.config.capture_performance:void 0;return N(i)?i:this.kt}startIfEnabled(){this.isEnabled&&!this.P&&(_s.info(\"enabled, starting...\"),this.it(this.rt))}onRemoteConfig(t){var i=R(t.capturePerformance)&&!!t.capturePerformance.web_vitals,e=R(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Ki]:i}),this._instance.persistence.register({[Qi]:e})),this.kt=i,this.startIfEnabled()}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.postHogWebVitalsCallbacks&&t(),null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"web-vitals\",(i=>{i?_s.error(\"failed to load script\",i):t()}))}Ct(){var i=t?t.location.href:void 0;if(i){var e=this._instance.config.mask_personal_data_properties,r=this._instance.config.custom_personal_data_properties,s=e?Ri([],rs,r||[]):[];return ar(i,s,ns)}_s.error(\"Could not determine current URL\")}}var bs=$i(\"[Heatmaps]\");function ws(t){return R(t)&&\"clientX\"in t&&\"clientY\"in t&&L(t.clientX)&&L(t.clientY)}class xs{constructor(t){var i;this.kt=!1,this.P=!1,this.Ft=null,this.instance=t,this.kt=!(null==(i=this.instance.persistence)||!i.props[Wi]),this.rageclicks=new tr(t.config.rageclick)}get flushIntervalMilliseconds(){var t=5e3;return R(this.instance.config.capture_heatmaps)&&this.instance.config.capture_heatmaps.flush_interval_milliseconds&&(t=this.instance.config.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return M(this.instance.config.capture_heatmaps)?M(this.instance.config.enable_heatmaps)?this.kt:this.instance.config.enable_heatmaps:!1!==this.instance.config.capture_heatmaps}startIfEnabled(){if(this.isEnabled){if(this.P)return;bs.info(\"starting...\"),this.Mt(),this.Ot()}else{var t;clearInterval(null!==(t=this.Ft)&&void 0!==t?t:void 0),this.At(),this.getAndClearBuffer()}}onRemoteConfig(t){var i=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[Wi]:i}),this.kt=i,this.startIfEnabled()}getAndClearBuffer(){var t=this.N;return this.N=void 0,t}Dt(t){this.jt(t.originalEvent,\"deadclick\")}Ot(){this.Ft&&clearInterval(this.Ft),this.Ft=function(t){return\"visible\"===(null==t?void 0:t.visibilityState)}(o)?setInterval(this.Lt.bind(this),this.flushIntervalMilliseconds):null}Mt(){t&&o&&(this.Nt=this.Lt.bind(this),Ui(t,\"beforeunload\",this.Nt),this.Ut=i=>this.jt(i||(null==t?void 0:t.event)),Ui(o,\"click\",this.Ut,{capture:!0}),this.zt=i=>this.Ht(i||(null==t?void 0:t.event)),Ui(o,\"mousemove\",this.zt,{capture:!0}),this.Bt=new Nr(this.instance,jr,this.Dt.bind(this)),this.Bt.startIfEnabled(),this.qt=this.Ot.bind(this),Ui(o,\"visibilitychange\",this.qt),this.P=!0)}At(){var i;t&&o&&(this.Nt&&t.removeEventListener(\"beforeunload\",this.Nt),this.Ut&&o.removeEventListener(\"click\",this.Ut,{capture:!0}),this.zt&&o.removeEventListener(\"mousemove\",this.zt,{capture:!0}),this.qt&&o.removeEventListener(\"visibilitychange\",this.qt),clearTimeout(this.Wt),null==(i=this.Bt)||i.stop(),this.P=!1)}Gt(i,e){var r=this.instance.scrollManager.scrollY(),s=this.instance.scrollManager.scrollX(),n=this.instance.scrollManager.scrollElement(),o=function(i,e,r){for(var s=i;s&&be(s)&&!we(s,\"body\");){if(s===r)return!1;if(w(e,null==t?void 0:t.getComputedStyle(s).position))return!0;s=Fe(s)}return!1}(Ie(i),[\"fixed\",\"sticky\"],n);return{x:i.clientX+(o?0:s),y:i.clientY+(o?0:r),target_fixed:o,type:e}}jt(t,i){var e;if(void 0===i&&(i=\"click\"),!ye(t.target)&&ws(t)){var r=this.Gt(t,i);null!=(e=this.rageclicks)&&e.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this.Vt(g({},r,{type:\"rageclick\"})),this.Vt(r)}}Ht(t){!ye(t.target)&&ws(t)&&(clearTimeout(this.Wt),this.Wt=setTimeout((()=>{this.Vt(this.Gt(t,\"mousemove\"))}),500))}Vt(i){if(t){var e=t.location.href,r=this.instance.config.mask_personal_data_properties,s=this.instance.config.custom_personal_data_properties,n=r?Ri([],rs,s||[]):[],o=ar(e,n,ns);this.N=this.N||{},this.N[o]||(this.N[o]=[]),this.N[o].push(i)}}Lt(){this.N&&!F(this.N)&&this.instance.capture(\"$$heatmap\",{$heatmap_data:this.getAndClearBuffer()})}}class Es{constructor(t){this.Jt=(t,i,e)=>{e&&(e.noSessionId||e.activityTimeout||e.sessionPastMaximumLength)&&(Ei.info(\"[PageViewManager] Session rotated, clearing pageview state\",{sessionId:t,changeReason:e}),this.Kt=void 0,this._instance.scrollManager.resetContext())},this._instance=t,this.Yt()}Yt(){var t;this.Xt=null==(t=this._instance.sessionManager)?void 0:t.onSessionId(this.Jt)}destroy(){var t;null==(t=this.Xt)||t.call(this),this.Xt=void 0}doPageView(i,e){var r,s=this.Qt(i,e);return this.Kt={pathname:null!==(r=null==t?void 0:t.location.pathname)&&void 0!==r?r:\"\",pageViewId:e,timestamp:i},this._instance.scrollManager.resetContext(),s}doPageLeave(t){var i;return this.Qt(t,null==(i=this.Kt)?void 0:i.pageViewId)}doEvent(){var t;return{$pageview_id:null==(t=this.Kt)?void 0:t.pageViewId}}Qt(t,i){var e=this.Kt;if(!e)return{$pageview_id:i};var r={$pageview_id:i,$prev_pageview_id:e.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:n,lastScrollY:o,maxScrollY:a,maxContentHeight:l,lastContentY:u,maxContentY:h}=s;if(!(M(n)||M(o)||M(a)||M(l)||M(u)||M(h))){n=Math.ceil(n),o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),h=Math.ceil(h);var d=n<=1?1:J(o/n,0,1,Ei),v=n<=1?1:J(a/n,0,1,Ei),c=l<=1?1:J(u/l,0,1,Ei),f=l<=1?1:J(h/l,0,1,Ei);r=Ci(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 $s=Uint8Array,Ss=Uint16Array,ks=Uint32Array,Ps=new $s([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]),Ts=new $s([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]),Is=new $s([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Cs=function(t,i){for(var e=new Ss(31),r=0;r<31;++r)e[r]=i+=1<<t[r-1];var s=new ks(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]},Rs=Cs(Ps,2),Fs=Rs[0],Ms=Rs[1];Fs[28]=258,Ms[258]=28;for(var Os=Cs(Ts,0)[1],As=new Ss(32768),Ds=0;Ds<32768;++Ds){var js=(43690&Ds)>>>1|(21845&Ds)<<1;js=(61680&(js=(52428&js)>>>2|(13107&js)<<2))>>>4|(3855&js)<<4,As[Ds]=((65280&js)>>>8|(255&js)<<8)>>>1}var Ls=function(t,i,e){for(var r=t.length,s=0,n=new Ss(i);s<r;++s)++n[t[s]-1];var o,a=new Ss(i);for(s=0;s<i;++s)a[s]=a[s-1]+n[s-1]<<1;if(e){o=new Ss(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[As[d]>>>l]=u}else for(o=new Ss(r),s=0;s<r;++s)o[s]=As[a[t[s]-1]++]>>>15-t[s];return o},Ns=new $s(288);for(Ds=0;Ds<144;++Ds)Ns[Ds]=8;for(Ds=144;Ds<256;++Ds)Ns[Ds]=9;for(Ds=256;Ds<280;++Ds)Ns[Ds]=7;for(Ds=280;Ds<288;++Ds)Ns[Ds]=8;var Us=new $s(32);for(Ds=0;Ds<32;++Ds)Us[Ds]=5;var zs=Ls(Ns,9,0),Hs=Ls(Us,5,0),Bs=function(t){return(t/8>>0)+(7&t&&1)},qs=function(t,i,e){(null==e||e>t.length)&&(e=t.length);var r=new(t instanceof Ss?Ss:t instanceof ks?ks:$s)(e-i);return r.set(t.subarray(i,e)),r},Ws=function(t,i,e){e<<=7&i;var r=i/8>>0;t[r]|=e,t[r+1]|=e>>>8},Gs=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},Vs=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 $s(0),0];if(1==s){var o=new $s(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 Ss(v+1),f=Js(e[h-1],c,0);if(f>i){r=0;var p=0,g=f-i,_=1<<g;for(n.sort((function(t,i){return c[i.s]-c[t.s]||t.f-i.f}));r<s;++r){var m=n[r].s;if(!(c[m]>i))break;p+=_-(1<<f-c[m]),c[m]=i}for(p>>>=g;p>0;){var y=n[r].s;c[y]<i?p-=1<<i-c[y]++-1:++r}for(;r>=0&&p;--r){var b=n[r].s;c[b]==i&&(--c[b],++p)}f=i}return[new $s(c),f]},Js=function(t,i,e){return-1==t.s?Math.max(Js(t.l,i,e+1),Js(t.r,i,e+1)):i[t.s]=e},Ks=function(t){for(var i=t.length;i&&!t[--i];);for(var e=new Ss(++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]},Ys=function(t,i){for(var e=0,r=0;r<i.length;++r)e+=t[r]*i[r];return e},Xs=function(t,i,e){var r=e.length,s=Bs(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)},Qs=function(t,i,e,r,s,n,o,a,l,u,h){Ws(i,h++,e),++s[256];for(var d=Vs(s,15),v=d[0],c=d[1],f=Vs(n,15),p=f[0],g=f[1],_=Ks(v),m=_[0],y=_[1],b=Ks(p),w=b[0],x=b[1],E=new Ss(19),S=0;S<m.length;++S)E[31&m[S]]++;for(S=0;S<w.length;++S)E[31&w[S]]++;for(var k=Vs(E,7),P=k[0],T=k[1],I=19;I>4&&!P[Is[I-1]];--I);var C,R,F,M,O=u+5<<3,A=Ys(s,Ns)+Ys(n,Us)+o,D=Ys(s,v)+Ys(n,p)+o+14+3*I+Ys(E,P)+(2*E[16]+3*E[17]+7*E[18]);if(O<=A&&O<=D)return Xs(i,h,t.subarray(l,l+u));if(Ws(i,h,1+(D<A)),h+=2,D<A){C=Ls(v,c,0),R=v,F=Ls(p,g,0),M=p;var j=Ls(P,T,0);Ws(i,h,y-257),Ws(i,h+5,x-1),Ws(i,h+10,I-4),h+=14;for(S=0;S<I;++S)Ws(i,h+3*S,P[Is[S]]);h+=3*I;for(var L=[m,w],N=0;N<2;++N){var U=L[N];for(S=0;S<U.length;++S){var z=31&U[S];Ws(i,h,j[z]),h+=P[z],z>15&&(Ws(i,h,U[S]>>>5&127),h+=U[S]>>>12)}}}else C=zs,R=Ns,F=Hs,M=Us;for(S=0;S<a;++S)if(r[S]>255){z=r[S]>>>18&31;Gs(i,h,C[z+257]),h+=R[z+257],z>7&&(Ws(i,h,r[S]>>>23&31),h+=Ps[z]);var H=31&r[S];Gs(i,h,F[H]),h+=M[H],H>3&&(Gs(i,h,r[S]>>>5&8191),h+=Ts[H])}else Gs(i,h,C[r[S]]),h+=R[r[S]];return Gs(i,h,C[256]),h+R[256]},Zs=new ks([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),tn=function(){for(var t=new ks(256),i=0;i<256;++i){for(var e=i,r=9;--r;)e=(1&e&&3988292384)^e>>>1;t[i]=e}return t}(),en=function(t,i,e,r,s){return function(t,i,e,r,s,n){var o=t.length,a=new $s(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=Xs(l,u,t.subarray(h,d)):(l[h]=n,u=Xs(l,u,t.subarray(h,o)))}else{for(var v=Zs[i-1],c=v>>>13,f=8191&v,p=(1<<e)-1,g=new Ss(32768),_=new Ss(p+1),m=Math.ceil(e/3),y=2*m,b=function(i){return(t[i]^t[i+1]<<m^t[i+2]<<y)&p},w=new ks(25e3),x=new Ss(288),E=new Ss(32),S=0,k=0,P=(h=0,0),T=0,I=0;h<o;++h){var C=b(h),R=32767&h,F=_[C];if(g[R]=F,_[C]=R,T<=h){var M=o-h;if((S>7e3||P>24576)&&M>423){u=Qs(t,l,0,w,x,E,k,P,I,h-I,u),P=S=k=0,I=h;for(var O=0;O<286;++O)x[O]=0;for(O=0;O<30;++O)E[O]=0}var A=2,D=0,j=f,L=R-F&32767;if(M>2&&C==b(h-L))for(var N=Math.min(c,M)-1,U=Math.min(32767,h),z=Math.min(258,M);L<=U&&--j&&R!=F;){if(t[h+A]==t[h+A-L]){for(var H=0;H<z&&t[h+H]==t[h+H-L];++H);if(H>A){if(A=H,D=L,H>N)break;var B=Math.min(L,H-2),q=0;for(O=0;O<B;++O){var W=h-L+O+32768&32767,G=W-g[W]+32768&32767;G>q&&(q=G,F=W)}}}L+=(R=F)-(F=g[R])+32768&32767}if(D){w[P++]=268435456|Ms[A]<<18|Os[D];var V=31&Ms[A],J=31&Os[D];k+=Ps[V]+Ts[J],++x[257+V],++E[J],T=h+A,++S}else w[P++]=t[h],++x[t[h]]}}u=Qs(t,l,n,w,x,E,k,P,I,h-I,u)}return qs(a,0,r+Bs(u)+s)}(t,null==i.level?6:i.level,null==i.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+i.mem,e,r,!0)},rn=function(t,i,e){for(;e;++i)t[i]=e,e>>>=8};function sn(t,i){void 0===i&&(i={});var e=function(){var t=4294967295;return{p:function(i){for(var e=t,r=0;r<i.length;++r)e=tn[255&e^i[r]]^e>>>8;t=e},d:function(){return 4294967295^t}}}(),r=t.length;e.p(t);var s,n=en(t,i,10+((s=i).filename&&s.filename.length+1||0),8),o=n.length;return function(t,i){var e=i.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=i.level<2?4:9==i.level?2:0,t[9]=3,0!=i.mtime&&rn(t,4,Math.floor(new Date(i.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}}(n,i),rn(n,o-8,e.d()),rn(n,o-4,r),n}var nn=function(t){var i,e,r,s,n=\"\";for(i=e=0,r=(t=(t+\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\")).length,s=0;s<r;s++){var o=t.charCodeAt(s),a=null;o<128?e++:a=o>127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),D(a)||(e>i&&(n+=t.substring(i,e)),n+=a,i=e=s+1)}return e>i&&(n+=t.substring(i,t.length)),n},on=!!u||!!l,an=\"text/plain\",ln=function(t,i,e){var r;void 0===e&&(e=!0);var[s,n]=t.split(\"?\"),o=g({},i),a=null!==(r=null==n?void 0:n.split(\"&\").map((t=>{var i,[r,s]=t.split(\"=\"),n=e&&null!==(i=o[r])&&void 0!==i?i:s;return delete o[r],r+\"=\"+n})))&&void 0!==r?r:[],l=nr(o);return l&&a.push(l),s+\"?\"+a.join(\"&\")},un=(t,i)=>JSON.stringify(t,((t,i)=>\"bigint\"==typeof i?i.toString():i),i),hn=t=>{var{data:i,compression:e}=t;if(i){if(e===er.GZipJS){var r=sn(function(t,i){var e=t.length;if(\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(t);for(var r=new $s(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 $s(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 qs(r,0,s)}(un(i)),{mtime:0}),s=new Blob([r],{type:an});return{contentType:an,body:s,estimatedSize:s.size}}if(e===er.Base64){var n=function(t){var i,e,r,s,n,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,l=0,u=\"\",h=[];if(!t)return t;t=nn(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}(un(i)),o=(t=>\"data=\"+encodeURIComponent(\"string\"==typeof t?t:un(t)))(n);return{contentType:\"application/x-www-form-urlencoded\",body:o,estimatedSize:new Blob([o]).size}}var a=un(i);return{contentType:\"application/json\",body:a,estimatedSize:new Blob([a]).size}}},dn=[];l&&dn.push({transport:\"fetch\",method:t=>{var i,e,{contentType:r,body:s,estimatedSize:n}=null!==(i=hn(t))&&void 0!==i?i:{},o=new Headers;Ii(t.headers,(function(t,i){o.append(i,t)})),r&&o.append(\"Content-Type\",r);var a=t.url,u=null;if(h){var d=new h;u={signal:d.signal,timeout:setTimeout((()=>d.abort()),t.timeout)}}l(a,g({method:(null==t?void 0:t.method)||\"GET\",headers:o,keepalive:\"POST\"===t.method&&(n||0)<52428.8,body:s,signal:null==(e=u)?void 0:e.signal},t.fetchOptions)).then((i=>i.text().then((e=>{var r={statusCode:i.status,text:e};if(200===i.status)try{r.json=JSON.parse(e)}catch(t){Ei.error(t)}null==t.callback||t.callback(r)})))).catch((i=>{Ei.error(i),null==t.callback||t.callback({statusCode:0,text:i})})).finally((()=>u?clearTimeout(u.timeout):null))}}),u&&dn.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=hn(t))&&void 0!==i?i:{};Ii(t.headers,(function(t,i){e.setRequestHeader(i,t)})),r&&e.setRequestHeader(\"Content-Type\",r),t.timeout&&(e.timeout=t.timeout),t.disableXHRCredentials||(e.withCredentials=!0),e.onreadystatechange=()=>{if(4===e.readyState){var i={statusCode:e.status,text:e.responseText};if(200===e.status)try{i.json=JSON.parse(e.responseText)}catch(t){}null==t.callback||t.callback(i)}},e.send(s)}}),null!=n&&n.sendBeacon&&dn.push({transport:\"sendBeacon\",method:t=>{var i=ln(t.url,{beacon:\"1\"});try{var e,{contentType:r,body:s}=null!==(e=hn(t))&&void 0!==e?e:{},o=\"string\"==typeof s?new Blob([s],{type:r}):s;n.sendBeacon(i,o)}catch(t){}}});var vn=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 cn(t,i,e){return un({distinct_id:t,userPropertiesToSet:i,userPropertiesToSetOnce:e})}var fn={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=>vn(i,t))))),not_regex:(t,i)=>i.every((i=>t.every((t=>!vn(i,t))))),icontains:(t,i)=>i.map(pn).some((i=>t.map(pn).some((t=>i.includes(t))))),not_icontains:(t,i)=>i.map(pn).every((i=>t.map(pn).every((t=>!i.includes(t))))),gt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e>parseFloat(t)))})),lt:(t,i)=>i.some((i=>{var e=parseFloat(i);return!isNaN(e)&&t.some((t=>e<parseFloat(t)))}))},pn=t=>t.toLowerCase();function gn(t,i){return!t||Object.entries(t).every((t=>{var[e,r]=t,s=null==i?void 0:i[e];if(M(s)||D(s))return!1;var n=[String(s)],o=fn[r.operator];return!!o&&o(r.values,n)}))}var _n=$i(\"[Error tracking]\");class mn{constructor(t){var i,e;this.Zt=[],this.ti=new Xt([new di,new wi,new ci,new vi,new yi,new mi,new pi,new bi],hi(\"web:javascript\",si,ai)),this._instance=t,this.Zt=null!==(i=null==(e=this._instance.persistence)?void 0:e.get_property(Vi))&&void 0!==i?i:[]}onRemoteConfig(t){var i,e,r,s=null!==(i=null==(e=t.errorTracking)?void 0:e.suppressionRules)&&void 0!==i?i:[],n=null==(r=t.errorTracking)?void 0:r.captureExtensionExceptions;this.Zt=s,this._instance.persistence&&this._instance.persistence.register({[Vi]:this.Zt,[Ji]:n})}get ii(){var t,i=!!this._instance.get_property(Ji),e=this._instance.config.error_tracking.captureExtensionExceptions;return null!==(t=null!=e?e:i)&&void 0!==t&&t}buildProperties(t,i){return this.ti.buildFromUnknown(t,{syntheticException:null==i?void 0:i.syntheticException,mechanism:{handled:null==i?void 0:i.handled}})}sendExceptionEvent(t){var i=t.$exception_list;if(this.ei(i)){if(this.ri(i))return void _n.info(\"Skipping exception capture because a suppression rule matched\");if(!this.ii&&this.si(i))return void _n.info(\"Skipping exception capture because it was thrown by an extension\");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.ni(i))return void _n.info(\"Skipping exception capture because it was thrown by the PostHog SDK\")}return this._instance.capture(\"$exception\",t,{_noTruncate:!0,_batchKey:\"exceptionEvent\"})}ri(t){if(0===t.length)return!1;var i=t.reduce(((t,i)=>{var{type:e,value:r}=i;return O(e)&&e.length>0&&t.$exception_types.push(e),O(r)&&r.length>0&&t.$exception_values.push(r),t}),{$exception_types:[],$exception_values:[]});return this.Zt.some((t=>{var e=t.values.map((t=>{var e,r=fn[t.operator],s=I(t.value)?t.value:[t.value],n=null!==(e=i[t.key])&&void 0!==e?e:[];return s.length>0&&r(s,n)}));return\"OR\"===t.type?e.some(Boolean):e.every(Boolean)}))}si(t){return t.flatMap((t=>{var i,e;return null!==(i=null==(e=t.stacktrace)?void 0:e.frames)&&void 0!==i?i:[]})).some((t=>t.filename&&t.filename.startsWith(\"chrome-extension://\")))}ni(t){if(t.length>0){var i,e,r,s,n=null!==(i=null==(e=t[0].stacktrace)?void 0:e.frames)&&void 0!==i?i:[],o=n[n.length-1];return null!==(r=null==o||null==(s=o.filename)?void 0:s.includes(\"posthog.com/static\"))&&void 0!==r&&r}return!1}ei(t){return!j(t)&&I(t)}}var yn=$i(\"[FeatureFlags]\"),bn=$i(\"[FeatureFlags]\",{debugEnabled:!0}),wn=\"$active_feature_flags\",xn=\"$override_feature_flags\",En=\"$feature_flag_payloads\",$n=\"$override_feature_flag_payloads\",Sn=\"$feature_flag_request_id\",kn=\"$feature_flag_evaluated_at\",Pn=t=>{var i={};for(var[e,r]of Fi(t||{}))r&&(i[e]=r);return i},Tn=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]})))):yn.warn(\"Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version\"),t},In=function(t){return t.FeatureFlags=\"feature_flags\",t.Recordings=\"recordings\",t}({});class Cn{constructor(t){this.oi=!1,this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this._instance=t,this.featureFlagEventHandlers=[]}ci(){var t=this._instance.config.evaluation_environments;return null!=t&&t.length?t.filter((t=>{var i=t&&\"string\"==typeof t&&t.trim().length>0;return i||yn.error(\"Invalid evaluation environment found:\",t,\"Expected non-empty string\"),i})):[]}fi(){return this.ci().length>0}flags(){if(this._instance.config.__preview_remote_config)this.di=!0;else{var t=!this.pi&&(this._instance.config.advanced_disable_feature_flags||this._instance.config.advanced_disable_feature_flags_on_first_load);this.gi({disableFlags:t})}}get hasLoadedFlags(){return this.ai}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this._instance.get_property(se),i=this._instance.get_property(xn),e=this._instance.get_property($n);if(!e&&!i)return t||{};var r=Ci({},t||{}),s=[...new Set([...Object.keys(e||{}),...Object.keys(i||{})])];for(var n of s){var o,a,l=r[n],u=null==i?void 0:i[n],h=M(u)?null!==(o=null==l?void 0:l.enabled)&&void 0!==o&&o:!!u,d=M(u)?l.variant:\"string\"==typeof u?u:void 0,v=null==e?void 0:e[n],c=g({},l,{enabled:h,variant:h?null!=d?d:null==l?void 0:l.variant:void 0});if(h!==(null==l?void 0:l.enabled)&&(c.original_enabled=null==l?void 0:l.enabled),d!==(null==l?void 0:l.variant)&&(c.original_variant=null==l?void 0:l.variant),v)c.metadata=g({},null==l?void 0:l.metadata,{payload:v,original_payload:null==l||null==(a=l.metadata)?void 0:a.payload});r[n]=c}return this.oi||(yn.warn(\" Overriding feature flag details!\",{flagDetails:t,overriddenPayloads:e,finalDetails:r}),this.oi=!0),r}getFlagVariants(){var t=this._instance.get_property(ee),i=this._instance.get_property(xn);if(!i)return t||{};for(var e=Ci({},t),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(yn.warn(\" Overriding feature flags!\",{enabledFlags:t,overriddenFlags:i,finalFlags:e}),this.oi=!0),e}getFlagPayloads(){var t=this._instance.get_property(En),i=this._instance.get_property($n);if(!i)return t||{};for(var e=Ci({},t||{}),r=Object.keys(i),s=0;s<r.length;s++)e[r[s]]=i[r[s]];return this.oi||(yn.warn(\" Overriding feature flag payloads!\",{flagPayloads:t,overriddenPayloads:i,finalPayloads:e}),this.oi=!0),e}reloadFeatureFlags(){this.ui||this._instance.config.advanced_disable_feature_flags||this.pi||(this.pi=setTimeout((()=>{this.gi()}),5))}mi(){clearTimeout(this.pi),this.pi=void 0}ensureFlagsLoaded(){this.ai||this.li||this.pi||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.ui=t}gi(t){var i;if(this.mi(),!this._instance.O())if(this.li)this.hi=!0;else{var e=this._instance.config.token,r=this._instance.get_property(\"$device_id\"),s={token:e,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:g({},(null==(i=this._instance.persistence)?void 0:i.get_initial_props())||{},this._instance.get_property(ne)||{}),group_properties:this._instance.get_property(oe)};D(r)||M(r)||(s.$device_id=r),(null!=t&&t.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(s.disable_flags=!0),this.fi()&&(s.evaluation_environments=this.ci());var n=this._instance.config.__preview_remote_config,o=n?\"/flags/?v=2\":\"/flags/?v=2&config=true\",a=this._instance.config.advanced_only_evaluate_survey_feature_flags?\"&only_evaluate_survey_feature_flags=true\":\"\",l=this._instance.requestRouter.endpointFor(\"flags\",o+a);n&&(s.timezone=fs()),this.li=!0,this._instance._send_request({method:\"POST\",url:l,data:s,compression:this._instance.config.disable_compression?void 0:er.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:t=>{var i,e,r=!0;(200===t.statusCode&&(this.hi||(this.$anon_distinct_id=void 0),r=!1),this.li=!1,this.di)||(this.di=!0,this._instance.yi(null!==(e=t.json)&&void 0!==e?e:{}));if(!s.disable_flags||this.hi)if(this.vi=!r,t.json&&null!=(i=t.json.quotaLimited)&&i.includes(In.FeatureFlags))yn.warn(\"You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more.\");else{var n;if(!s.disable_flags)this.receivedFeatureFlags(null!==(n=t.json)&&void 0!==n?n:{},r);this.hi&&(this.hi=!1,this.gi())}}})}}getFeatureFlag(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFlagVariants()[t],r=\"\"+e,s=this._instance.get_property(Sn)||void 0,n=this._instance.get_property(kn)||void 0,o=this._instance.get_property(le)||{};if((i.send_event||!(\"send_event\"in i))&&(!(t in o)||!o[t].includes(r))){var a,l,u,h,d,v,c,f,p;I(o[t])?o[t].push(r):o[t]=[r],null==(a=this._instance.persistence)||a.register({[le]:o});var g=this.getFeatureFlagDetails(t),_={$feature_flag:t,$feature_flag_response:e,$feature_flag_payload:this.getFeatureFlagPayload(t)||null,$feature_flag_request_id:s,$feature_flag_evaluated_at:n,$feature_flag_bootstrapped_response:(null==(l=this._instance.config.bootstrap)||null==(l=l.featureFlags)?void 0:l[t])||null,$feature_flag_bootstrapped_payload:(null==(u=this._instance.config.bootstrap)||null==(u=u.featureFlagPayloads)?void 0:u[t])||null,$used_bootstrap_value:!this.vi};M(null==g||null==(h=g.metadata)?void 0:h.version)||(_.$feature_flag_version=g.metadata.version);var m,y=null!==(d=null==g||null==(v=g.reason)?void 0:v.description)&&void 0!==d?d:null==g||null==(c=g.reason)?void 0:c.code;if(y&&(_.$feature_flag_reason=y),null!=g&&null!=(f=g.metadata)&&f.id&&(_.$feature_flag_id=g.metadata.id),M(null==g?void 0:g.original_variant)&&M(null==g?void 0:g.original_enabled)||(_.$feature_flag_original_response=M(g.original_variant)?g.original_enabled:g.original_variant),null!=g&&null!=(p=g.metadata)&&p.original_payload)_.$feature_flag_original_payload=null==g||null==(m=g.metadata)?void 0:m.original_payload;this._instance.capture(\"$feature_flag_called\",_)}return e}yn.warn('getFeatureFlag for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){return this.getFlagPayloads()[t]}getRemoteConfigPayload(t,i){var e=this._instance.config.token,r={distinct_id:this._instance.get_distinct_id(),token:e};this.fi()&&(r.evaluation_environments=this.ci()),this._instance._send_request({method:\"POST\",url:this._instance.requestRouter.endpointFor(\"flags\",\"/flags/?v=2&config=true\"),data:r,compression:this._instance.config.disable_compression?void 0:er.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:e=>{var r,s=null==(r=e.json)?void 0:r.featureFlagPayloads;i((null==s?void 0:s[t])||void 0)}})}isFeatureEnabled(t,i){if(void 0===i&&(i={}),this.ai||this.getFlags()&&this.getFlags().length>0){var e=this.getFeatureFlag(t,i);return M(e)?void 0:!!e}yn.warn('isFeatureEnabled for key \"'+t+\"\\\" failed. Feature flags didn't load in time.\")}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((i=>i!==t))}receivedFeatureFlags(t,i){if(this._instance.persistence){this.ai=!0;var e=this.getFlagVariants(),r=this.getFlagPayloads(),s=this.getFlagsWithDetails();!function(t,i,e,r,s){void 0===e&&(e={}),void 0===r&&(r={}),void 0===s&&(s={});var n=Tn(t),o=n.flags,a=n.featureFlags,l=n.featureFlagPayloads;if(a){var u=t.requestId,h=t.evaluatedAt;if(I(a)){yn.warn(\"v1 of the feature flags endpoint is deprecated. Please use the latest version.\");var d={};if(a)for(var v=0;v<a.length;v++)d[a[v]]=!0;i&&i.register({[wn]:a,[ee]:d})}else{var c=a,f=l,p=o;t.errorsWhileComputingFlags&&(c=g({},e,c),f=g({},r,f),p=g({},s,p)),i&&i.register(g({[wn]:Object.keys(Pn(c)),[ee]:c||{},[En]:f||{},[se]:p||{}},u?{[Sn]:u}:{},h?{[kn]:h}:{}))}}}(t,this._instance.persistence,e,r,s),this.bi(i)}}override(t,i){void 0===i&&(i=!1),yn.warn(\"override is deprecated. Please use overrideFeatureFlags instead.\"),this.overrideFeatureFlags({flags:t,suppressWarning:i})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this._instance.persistence)return yn.uninitializedWarning(\"posthog.featureFlags.overrideFeatureFlags\");if(!1===t)return this._instance.persistence.unregister(xn),this._instance.persistence.unregister($n),this.bi(),bn.info(\"All overrides cleared\");if(t&&\"object\"==typeof t&&(\"flags\"in t||\"payloads\"in t)){var i,e=t;if(this.oi=Boolean(null!==(i=e.suppressWarning)&&void 0!==i&&i),\"flags\"in e)if(!1===e.flags)this._instance.persistence.unregister(xn),bn.info(\"Flag overrides cleared\");else if(e.flags){if(I(e.flags)){for(var r={},s=0;s<e.flags.length;s++)r[e.flags[s]]=!0;this._instance.persistence.register({[xn]:r})}else this._instance.persistence.register({[xn]:e.flags});bn.info(\"Flag overrides set\",{flags:e.flags})}return\"payloads\"in e&&(!1===e.payloads?(this._instance.persistence.unregister($n),bn.info(\"Payload overrides cleared\")):e.payloads&&(this._instance.persistence.register({[$n]:e.payloads}),bn.info(\"Payload overrides set\",{payloads:e.payloads}))),void this.bi()}this.bi()}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ai){var{flags:i,flagVariants:e}=this.wi();t(i,e)}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,i,e){var r,s=(this._instance.get_property(re)||[]).find((i=>i.flagKey===t)),n={[\"$feature_enrollment/\"+t]:i},o={$feature_flag:t,$feature_enrollment:i,$set:n};s&&(o.$early_access_feature_name=s.name),e&&(o.$feature_enrollment_stage=e),this._instance.capture(\"$feature_enrollment_update\",o),this.setPersonPropertiesForFlags(n,!1);var a=g({},this.getFlagVariants(),{[t]:i});null==(r=this._instance.persistence)||r.register({[wn]:Object.keys(Pn(a)),[ee]:a}),this.bi()}getEarlyAccessFeatures(t,i,e){void 0===i&&(i=!1);var r=this._instance.get_property(re),s=e?\"&\"+e.map((t=>\"stage=\"+t)).join(\"&\"):\"\";if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/early_access_features/?token=\"+this._instance.config.token+s),method:\"GET\",callback:i=>{var e,r;if(i.json){var s=i.json.earlyAccessFeatures;return null==(e=this._instance.persistence)||e.unregister(re),null==(r=this._instance.persistence)||r.register({[re]:s}),t(s)}}})}wi(){var t=this.getFlags(),i=this.getFlagVariants();return{flags:t.filter((t=>i[t])),flagVariants:Object.keys(i).filter((t=>i[t])).reduce(((t,e)=>(t[e]=i[e],t)),{})}}bi(t){var{flags:i,flagVariants:e}=this.wi();this.featureFlagEventHandlers.forEach((r=>r(i,e,{errorsLoading:t})))}setPersonPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(ne)||{};this._instance.register({[ne]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(ne)}setGroupPropertiesForFlags(t,i){void 0===i&&(i=!0);var e=this._instance.get_property(oe)||{};0!==Object.keys(e).length&&Object.keys(e).forEach((i=>{e[i]=g({},e[i],t[i]),delete t[i]})),this._instance.register({[oe]:g({},e,t)}),i&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var i=this._instance.get_property(oe)||{};this._instance.register({[oe]:g({},i,{[t]:{}})})}else this._instance.unregister(oe)}reset(){this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.$anon_distinct_id=void 0,this.mi(),this.oi=!1}}var Rn=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"];class Fn{constructor(t,i){this.R=t,this.props={},this.xi=!1,this.Ei=(t=>{var i=\"\";return t.token&&(i=t.token.replace(/\\+/g,\"PL\").replace(/\\//g,\"SL\").replace(/=/g,\"EQ\")),t.persistence_name?\"ph_\"+t.persistence_name:\"ph_\"+i+\"_posthog\"})(t),this.Y=this.$i(t),this.load(),t.debug&&Ei.info(\"Persistence loaded\",t.persistence,g({},this.props)),this.update_config(t,t,i),this.save()}isDisabled(){return!!this.Si}$i(i){-1===Rn.indexOf(i.persistence.toLowerCase())&&(Ei.critical(\"Unknown persistence type \"+i.persistence+\"; falling back to localStorage+cookie\"),i.persistence=\"localStorage+cookie\");var e=function(i){void 0===i&&(i=[]);var e=[...Ir,...i];return g({},Tr,{W:function(t){try{var i={};try{i=kr.W(t)||{}}catch(t){}var e=Ci(i,JSON.parse(Tr.q(t)||\"{}\"));return Tr.G(t,e),e}catch(t){}return null},G:function(t,i,r,s,n,o){try{Tr.G(t,i,void 0,void 0,o);var a={};e.forEach((t=>{i[t]&&(a[t]=i[t])})),Object.keys(a).length&&kr.G(t,a,r,s,n,o)}catch(t){Tr.B(t)}},V:function(i,e){try{null==t||t.localStorage.removeItem(i),kr.V(i,e)}catch(t){Tr.B(t)}}})}(i.cookie_persisted_properties||[]),r=i.persistence.toLowerCase();return\"localstorage\"===r&&Tr.H()?Tr:\"localstorage+cookie\"===r&&e.H()?e:\"sessionstorage\"===r&&Mr.H()?Mr:\"memory\"===r?Rr:\"cookie\"===r?kr:e.H()?e:kr}properties(){var t={};return Ii(this.props,(function(i,e){if(e===ee&&R(i))for(var r=Object.keys(i),n=0;n<r.length;n++)t[\"$feature/\"+r[n]]=i[r[n]];else a=e,l=!1,(D(o=me)?l:s&&o.indexOf===s?-1!=o.indexOf(a):(Ii(o,(function(t){if(l||(l=t===a))return Pi})),l))||(t[e]=i);var o,a,l})),t}load(){if(!this.Si){var t=this.Y.W(this.Ei);t&&(this.props=Ci({},t))}}save(){this.Si||this.Y.G(this.Ei,this.props,this.ki,this.Pi,this.Ti,this.R.debug)}remove(){this.Y.V(this.Ei,!1),this.Y.V(this.Ei,!0)}clear(){this.remove(),this.props={}}register_once(t,i,e){if(R(t)){M(i)&&(i=\"None\"),this.ki=M(e)?this.Ii:e;var r=!1;if(Ii(t,((t,e)=>{this.props.hasOwnProperty(e)&&this.props[e]!==i||(this.props[e]=t,r=!0)})),r)return this.save(),!0}return!1}register(t,i){if(R(t)){this.ki=M(i)?this.Ii:i;var e=!1;if(Ii(t,((i,r)=>{t.hasOwnProperty(r)&&this.props[r]!==i&&(this.props[r]=i,e=!0)})),e)return this.save(),!0}return!1}unregister(t){t in this.props&&(delete this.props[t],this.save())}update_campaign_params(){if(!this.xi){var t=as(this.R.custom_campaign_params,this.R.mask_personal_data_properties,this.R.custom_personal_data_properties);F(Ai(t))||this.register(t),this.xi=!0}}update_search_keyword(){var t;this.register((t=null==o?void 0:o.referrer)?us(t):{})}update_referrer_info(){var t;this.register_once({$referrer:ds(),$referring_domain:null!=o&&o.referrer&&(null==(t=sr(o.referrer))?void 0:t.host)||\"$direct\"},void 0)}set_initial_person_info(){this.props[ve]||this.props[ce]||this.register_once({[fe]:vs(this.R.mask_personal_data_properties,this.R.custom_personal_data_properties)},void 0)}get_initial_props(){var t={};Ii([ce,ve],(i=>{var e=this.props[i];e&&Ii(e,(function(i,e){t[\"$initial_\"+E(e)]=i}))}));var i,e,r=this.props[fe];if(r){var s=(i=cs(r),e={},Ii(i,(function(t,i){e[\"$initial_\"+E(i)]=t})),e);Ci(t,s)}return t}safe_merge(t){return Ii(this.props,(function(i,e){e in t||(t[e]=i)})),t}update_config(t,i,e){if(this.Ii=this.ki=t.cookie_expiration,this.set_disabled(t.disable_persistence||!!e),this.set_cross_subdomain(t.cross_subdomain_cookie),this.set_secure(t.secure_cookie),t.persistence!==i.persistence||!((t,i)=>{if(t.length!==i.length)return!1;var e=[...t].sort(),r=[...i].sort();return e.every(((t,i)=>t===r[i]))})(t.cookie_persisted_properties||[],i.cookie_persisted_properties||[])){var r=this.$i(t),s=this.props;this.clear(),this.Y=r,this.props=s,this.save()}}set_disabled(t){this.Si=t,this.Si?this.remove():this.save()}set_cross_subdomain(t){t!==this.Pi&&(this.Pi=t,this.remove(),this.save())}set_secure(t){t!==this.Ti&&(this.Ti=t,this.remove(),this.save())}set_event_timer(t,i){var e=this.props[Bi]||{};e[t]=i,this.props[Bi]=e,this.save()}remove_event_timer(t){var i=(this.props[Bi]||{})[t];return M(i)||(delete this.props[Bi][t],this.save()),i}get_property(t){return this.props[t]}set_property(t,i){this.props[t]=i,this.save()}}var Mn=$i(\"[Product Tours]\"),On=\"ph_product_tours\";class An{constructor(t){this.Ci=null,this.Ri=null,this._instance=t}onRemoteConfig(t){this._instance.persistence&&this._instance.persistence.register({[Xi]:!(null==t||!t.productTours)}),this.loadIfEnabled()}loadIfEnabled(){var t,i;this.Ci||((t=this._instance).config.disable_product_tours||null==(i=t.persistence)||!i.get_property(Xi))||this.it((()=>this.Fi()))}it(t){var i,e;null!=(i=v.__PosthogExtensions__)&&i.generateProductTours?t():null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,\"product-tours\",(i=>{i?Mn.error(\"Could not load product tours script\",i):t()}))}Fi(){var t;!this.Ci&&null!=(t=v.__PosthogExtensions__)&&t.generateProductTours&&(this.Ci=v.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,i){if(void 0===i&&(i=!1),!I(this.Ri)||i){var e=this._instance.persistence;if(e){var r=e.props[On];if(I(r)&&!i)return this.Ri=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/product_tours/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{var r=i.statusCode;if(200!==r||!i.json){var s=\"Product Tours API could not be loaded, status: \"+r;return Mn.error(s),void t([],{isLoaded:!1,error:s})}var n=I(i.json.product_tours)?i.json.product_tours:[];this.Ri=n,e&&e.register({[On]:n}),t(n,{isLoaded:!0})}})}else t(this.Ri,{isLoaded:!0})}getActiveProductTours(t){j(this.Ci)?t([],{isLoaded:!1,error:\"Product tours not loaded\"}):this.Ci.getActiveProductTours(t)}showProductTour(t){var i;null==(i=this.Ci)||i.showTourById(t)}previewTour(t){this.Ci?this.Ci.previewTour(t):this.it((()=>{var i;this.Fi(),null==(i=this.Ci)||i.previewTour(t)}))}dismissProductTour(){var t;null==(t=this.Ci)||t.dismissTour(\"user_clicked_skip\")}nextStep(){var t;null==(t=this.Ci)||t.nextStep()}previousStep(){var t;null==(t=this.Ci)||t.previousStep()}clearCache(){var t;this.Ri=null,null==(t=this._instance.persistence)||t.unregister(On)}resetTour(t){var i;null==(i=this.Ci)||i.resetTour(t)}resetAllTours(){var t;null==(t=this.Ci)||t.resetAllTours()}cancelPendingTour(t){var i;null==(i=this.Ci)||i.cancelPendingTour(t)}}var Dn=function(t){return t.Activation=\"events\",t.Cancellation=\"cancelEvents\",t}({}),jn=function(t){return t.Button=\"button\",t.Tab=\"tab\",t.Selector=\"selector\",t}({}),Ln=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}({}),Nn=function(t){return t.Top=\"top\",t.Left=\"left\",t.Right=\"right\",t.Bottom=\"bottom\",t}({}),Un=function(t){return t.Popover=\"popover\",t.API=\"api\",t.Widget=\"widget\",t.ExternalSurvey=\"external_survey\",t}({}),zn=function(t){return t.Open=\"open\",t.MultipleChoice=\"multiple_choice\",t.SingleChoice=\"single_choice\",t.Rating=\"rating\",t.Link=\"link\",t}({}),Hn=function(t){return t.NextQuestion=\"next_question\",t.End=\"end\",t.ResponseBased=\"response_based\",t.SpecificQuestion=\"specific_question\",t}({}),Bn=function(t){return t.Once=\"once\",t.Recurring=\"recurring\",t.Always=\"always\",t}({}),qn=function(t){return t.SHOWN=\"survey shown\",t.DISMISSED=\"survey dismissed\",t.SENT=\"survey sent\",t.ABANDONED=\"survey abandoned\",t}({}),Wn=function(t){return t.SURVEY_ID=\"$survey_id\",t.SURVEY_NAME=\"$survey_name\",t.SURVEY_RESPONSE=\"$survey_response\",t.SURVEY_ITERATION=\"$survey_iteration\",t.SURVEY_ITERATION_START_DATE=\"$survey_iteration_start_date\",t.SURVEY_PARTIALLY_COMPLETED=\"$survey_partially_completed\",t.SURVEY_SUBMISSION_ID=\"$survey_submission_id\",t.SURVEY_QUESTIONS=\"$survey_questions\",t.SURVEY_COMPLETED=\"$survey_completed\",t.PRODUCT_TOUR_ID=\"$product_tour_id\",t.SURVEY_LAST_SEEN_DATE=\"$survey_last_seen_date\",t}({}),Gn=function(t){return t.Popover=\"popover\",t.Inline=\"inline\",t}({}),Vn=$i(\"[Surveys]\");var Jn=\"seenSurvey_\",Kn=(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},Yn=t=>((t,i)=>{var e=\"\"+t+i.id;return i.current_iteration&&i.current_iteration>0&&(e=\"\"+t+i.id+\"_\"+i.current_iteration),e})(Jn,t),Xn=[Un.Popover,Un.Widget,Un.API],Qn={ignoreConditions:!1,ignoreDelay:!1,displayType:Gn.Popover};class Zn{constructor(){this.Mi={},this.Mi={}}on(t,i){return this.Mi[t]||(this.Mi[t]=[]),this.Mi[t].push(i),()=>{this.Mi[t]=this.Mi[t].filter((t=>t!==i))}}emit(t,i){for(var e of this.Mi[t]||[])e(i);for(var r of this.Mi[\"*\"]||[])r(t,i)}}function to(t,i,e){if(j(t))return!1;switch(e){case\"exact\":return t===i;case\"contains\":var r=i.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\").replace(/_/g,\".\").replace(/%/g,\".*\");return new RegExp(r,\"i\").test(t);case\"regex\":try{return new RegExp(i).test(t)}catch(t){return!1}default:return!1}}class io{constructor(t){this.Oi=new Zn,this.Ai=(t,i)=>this.Di(t,i)&&this.ji(t,i)&&this.Li(t,i)&&this.Ni(t,i),this.Di=(t,i)=>null==i||!i.event||(null==t?void 0:t.event)===(null==i?void 0:i.event),this._instance=t,this.Ui=new Set,this.zi=new Set}init(){var t;if(!M(null==(t=this._instance)?void 0:t.Hi)){var i;null==(i=this._instance)||i.Hi(((t,i)=>{this.on(t,i)}))}}register(t){var i,e;if(!M(null==(i=this._instance)?void 0:i.Hi)&&(t.forEach((t=>{var i,e;null==(i=this.zi)||i.add(t),null==(e=t.steps)||e.forEach((t=>{var i;null==(i=this.Ui)||i.add((null==t?void 0:t.event)||\"\")}))})),null!=(e=this._instance)&&e.autocapture)){var r,s=new Set;t.forEach((t=>{var i;null==(i=t.steps)||i.forEach((t=>{null!=t&&t.selector&&s.add(null==t?void 0:t.selector)}))})),null==(r=this._instance)||r.autocapture.setElementSelectors(s)}}on(t,i){var e;null!=i&&0!=t.length&&(this.Ui.has(t)||this.Ui.has(null==i?void 0:i.event))&&this.zi&&(null==(e=this.zi)?void 0:e.size)>0&&this.zi.forEach((t=>{this.Bi(i,t)&&this.Oi.emit(\"actionCaptured\",t.name)}))}qi(t){this.onAction(\"actionCaptured\",(i=>t(i)))}Bi(t,i){if(null==(null==i?void 0:i.steps))return!1;for(var e of i.steps)if(this.Ai(t,e))return!0;return!1}onAction(t,i){return this.Oi.on(t,i)}ji(t,i){if(null!=i&&i.url){var e,r=null==t||null==(e=t.properties)?void 0:e.$current_url;if(!r||\"string\"!=typeof r)return!1;if(!to(r,i.url,i.url_matching||\"contains\"))return!1}return!0}Li(t,i){return!!this.Wi(t,i)&&(!!this.Gi(t,i)&&!!this.Vi(t,i))}Wi(t,i){var e;if(null==i||!i.href)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>to(t.href,i.href,i.href_matching||\"exact\")));var s,n=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!n&&to((s=n.match(/(?::|\")href=\"(.*?)\"/))?s[1]:\"\",i.href,i.href_matching||\"exact\")}Gi(t,i){var e;if(null==i||!i.text)return!0;var r=this.Ji(t);if(r.length>0)return r.some((t=>to(t.text,i.text,i.text_matching||\"exact\")||to(t.$el_text,i.text,i.text_matching||\"exact\")));var s,n,o,a=(null==t||null==(e=t.properties)?void 0:e.$elements_chain)||\"\";return!!a&&(s=function(t){for(var i,e=[],r=/(?::|\")text=\"(.*?)\"/g;!j(i=r.exec(t));)e.includes(i[1])||e.push(i[1]);return e}(a),n=i.text,o=i.text_matching||\"exact\",s.some((t=>to(t,n,o))))}Vi(t,i){var e,r;if(null==i||!i.selector)return!0;var s=null==t||null==(e=t.properties)?void 0:e.$element_selectors;if(null!=s&&s.includes(i.selector))return!0;var n=(null==t||null==(r=t.properties)?void 0:r.$elements_chain)||\"\";if(i.selector_regex&&n)try{return new RegExp(i.selector_regex).test(n)}catch(t){return!1}return!1}Ji(t){var i;return null==(null==t||null==(i=t.properties)?void 0:i.$elements)?[]:null==t?void 0:t.properties.$elements}Ni(t,i){return null==i||!i.properties||0===i.properties.length||gn(i.properties.reduce(((t,i)=>{var e=I(i.value)?i.value.map(String):null!=i.value?[String(i.value)]:[];return t[i.key]={values:e,operator:i.operator||\"exact\"},t}),{}),null==t?void 0:t.properties)}}class eo{constructor(t){this._instance=t,this.Ki=new Map,this.Yi=new Map,this.Xi=new Map}Qi(t,i){return!!t&&gn(t.propertyFilters,null==i?void 0:i.properties)}Zi(t,i){var e=new Map;return t.forEach((t=>{var r;null==(r=t.conditions)||null==(r=r[i])||null==(r=r.values)||r.forEach((i=>{if(null!=i&&i.name){var r=e.get(i.name)||[];r.push(t.id),e.set(i.name,r)}}))})),e}te(t,i,e){var r=(e===Dn.Activation?this.Ki:this.Yi).get(t),s=[];return this.ie((t=>{s=t.filter((t=>null==r?void 0:r.includes(t.id)))})),s.filter((r=>{var s,n=null==(s=r.conditions)||null==(s=s[e])||null==(s=s.values)?void 0:s.find((i=>i.name===t));return this.Qi(n,i)}))}register(t){var i;M(null==(i=this._instance)?void 0:i.Hi)||(this.ee(t),this.re(t))}re(t){var i=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.actions)&&(null==(e=t.conditions)||null==(e=e.actions)||null==(e=e.values)?void 0:e.length)>0}));if(0!==i.length){if(null==this.se){this.se=new io(this._instance),this.se.init();this.se.qi((t=>{this.onAction(t)}))}i.forEach((t=>{var i,e,r,s,n;t.conditions&&null!=(i=t.conditions)&&i.actions&&null!=(e=t.conditions)&&null!=(e=e.actions)&&e.values&&(null==(r=t.conditions)||null==(r=r.actions)||null==(r=r.values)?void 0:r.length)>0&&(null==(s=this.se)||s.register(t.conditions.actions.values),null==(n=t.conditions)||null==(n=n.actions)||null==(n=n.values)||n.forEach((i=>{if(i&&i.name){var e=this.Xi.get(i.name);e&&e.push(t.id),this.Xi.set(i.name,e||[t.id])}})))}))}}ee(t){var i,e=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.events)&&(null==(e=t.conditions)||null==(e=e.events)||null==(e=e.values)?void 0:e.length)>0})),r=t.filter((t=>{var i,e;return(null==(i=t.conditions)?void 0:i.cancelEvents)&&(null==(e=t.conditions)||null==(e=e.cancelEvents)||null==(e=e.values)?void 0:e.length)>0}));if(0!==e.length||0!==r.length){null==(i=this._instance)||i.Hi(((t,i)=>{this.onEvent(t,i)})),this.Ki=this.Zi(t,Dn.Activation),this.Yi=this.Zi(t,Dn.Cancellation)}}onEvent(t,i){var e,r=this.ne(),s=this.oe(),n=this.ae(),o=(null==(e=this._instance)||null==(e=e.persistence)?void 0:e.props[s])||[];if(n===t&&i&&o.length>0){var a,l;r.info(\"event matched, removing item from activated items\",{event:t,eventPayload:i,existingActivatedItems:o});var u=(null==i||null==(a=i.properties)?void 0:a.$survey_id)||(null==i||null==(l=i.properties)?void 0:l.$product_tour_id);if(u){var h=o.indexOf(u);h>=0&&(o.splice(h,1),this.le(o))}}else{if(this.Yi.has(t)){var d=this.te(t,i,Dn.Cancellation);d.length>0&&(r.info(\"cancel event matched, cancelling items\",{event:t,itemsToCancel:d.map((t=>t.id))}),d.forEach((t=>{var i=o.indexOf(t.id);i>=0&&o.splice(i,1),this.ue(t.id)})),this.le(o))}if(this.Ki.has(t)){r.info(\"event name matched\",{event:t,eventPayload:i,items:this.Ki.get(t)});var v=this.te(t,i,Dn.Activation);this.le(o.concat(v.map((t=>t.id))||[]))}}}onAction(t){var i,e=this.oe(),r=(null==(i=this._instance)||null==(i=i.persistence)?void 0:i.props[e])||[];this.Xi.has(t)&&this.le(r.concat(this.Xi.get(t)||[]))}le(t){var i,e=this.ne(),r=this.oe(),s=[...new Set(t)].filter((t=>!this.he(t)));e.info(\"updating activated items\",{activatedItems:s}),null==(i=this._instance)||null==(i=i.persistence)||i.register({[r]:s})}getActivatedIds(){var t,i=this.oe(),e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.props[i];return e||[]}getEventToItemsMap(){return this.Ki}de(){return this.se}}class ro extends eo{constructor(t){super(t)}oe(){return\"$surveys_activated\"}ae(){return qn.SHOWN}ie(t){var i;null==(i=this._instance)||i.getSurveys(t)}ue(t){var i;null==(i=this._instance)||i.cancelPendingSurvey(t)}ne(){return Vn}he(){return!1}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}class so{constructor(t){this.ve=void 0,this._surveyManager=null,this.ce=!1,this.fe=[],this.pe=null,this._instance=t,this._surveyEventReceiver=null}onRemoteConfig(t){if(!this._instance.config.disable_surveys){var i=t.surveys;if(j(i))return Vn.warn(\"Flags not loaded yet. Not loading surveys.\");var e=I(i);this.ve=e?i.length>0:i,Vn.info(\"flags response received, isSurveysEnabled: \"+this.ve),this.loadIfEnabled()}}reset(){localStorage.removeItem(\"lastSeenSurveyDate\");for(var t=[],i=0;i<localStorage.length;i++){var e=localStorage.key(i);(null!=e&&e.startsWith(Jn)||null!=e&&e.startsWith(\"inProgressSurvey_\"))&&t.push(e)}t.forEach((t=>localStorage.removeItem(t)))}loadIfEnabled(){if(!this._surveyManager)if(this.ce)Vn.info(\"Already initializing surveys, skipping...\");else if(this._instance.config.disable_surveys)Vn.info(\"Disabled. Not loading surveys.\");else if(this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())Vn.info(\"Not loading surveys in cookieless mode without consent.\");else{var t=null==v?void 0:v.__PosthogExtensions__;if(t){if(!M(this.ve)||this._instance.config.advanced_enable_surveys){var i=this.ve||this._instance.config.advanced_enable_surveys;this.ce=!0;try{var e=t.generateSurveys;if(e)return void this.ge(e,i);var r=t.loadExternalDependency;if(!r)return void this._e(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"surveys\",(e=>{e||!t.generateSurveys?this._e(\"Could not load surveys script\",e):this.ge(t.generateSurveys,i)}))}catch(t){throw this._e(\"Error initializing surveys\",t),t}finally{this.ce=!1}}}else Vn.error(\"PostHog Extensions not found.\")}}ge(t,i){this._surveyManager=t(this._instance,i),this._surveyEventReceiver=new ro(this._instance),Vn.info(\"Surveys loaded successfully\"),this.me({isLoaded:!0})}_e(t,i){Vn.error(t,i),this.me({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.fe.push(t),this._surveyManager&&this.me({isLoaded:!0}),()=>{this.fe=this.fe.filter((i=>i!==t))}}getSurveys(t,i){if(void 0===i&&(i=!1),this._instance.config.disable_surveys)return Vn.info(\"Disabled. Not loading surveys.\"),t([]);var e,r=this._instance.get_property(ae);if(r&&!i)return t(r,{isLoaded:!0});\"undefined\"!=typeof Promise&&this.pe?this.pe.then((i=>{var{surveys:e,context:r}=i;return t(e,r)})):(\"undefined\"!=typeof Promise&&(this.pe=new Promise((t=>{e=t}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/surveys/?token=\"+this._instance.config.token),method:\"GET\",timeout:this._instance.config.surveys_request_timeout_ms,callback:i=>{var r;this.pe=null;var s=i.statusCode;if(200!==s||!i.json){var n=\"Surveys API could not be loaded, status: \"+s;Vn.error(n);var o={isLoaded:!1,error:n};return t([],o),void(null==e||e({surveys:[],context:o}))}var a,l=i.json.surveys||[],u=l.filter((t=>function(t){return!(!t.start_date||t.end_date)}(t)&&(function(t){var i;return!(null==(i=t.conditions)||null==(i=i.events)||null==(i=i.values)||!i.length)}(t)||function(t){var i;return!(null==(i=t.conditions)||null==(i=i.actions)||null==(i=i.values)||!i.length)}(t))));u.length>0&&(null==(a=this._surveyEventReceiver)||a.register(u));null==(r=this._instance.persistence)||r.register({[ae]:l});var h={isLoaded:!0};t(l,h),null==e||e({surveys:l,context:h})}}))}me(t){for(var i of this.fe)try{if(!t.isLoaded)return i([],t);this.getSurveys(i)}catch(t){Vn.error(\"Error in survey callback\",t)}}getActiveMatchingSurveys(t,i){if(void 0===i&&(i=!1),!j(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,i);Vn.warn(\"init was not called\")}ye(t){var i=null;return this.getSurveys((e=>{var r;i=null!==(r=e.find((i=>i.id===t)))&&void 0!==r?r:null})),i}be(t){if(j(this._surveyManager))return{eligible:!1,reason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=\"string\"==typeof t?this.ye(t):t;return i?this._surveyManager.checkSurveyEligibility(i):{eligible:!1,reason:\"Survey not found\"}}canRenderSurvey(t){if(j(this._surveyManager))return Vn.warn(\"init was not called\"),{visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"};var i=this.be(t);return{visible:i.eligible,disabledReason:i.reason}}canRenderSurveyAsync(t,i){return j(this._surveyManager)?(Vn.warn(\"init was not called\"),Promise.resolve({visible:!1,disabledReason:\"SDK is not enabled or survey functionality is not yet loaded\"})):new Promise((e=>{this.getSurveys((i=>{var r,s=null!==(r=i.find((i=>i.id===t)))&&void 0!==r?r:null;if(s){var n=this.be(s);e({visible:n.eligible,disabledReason:n.reason})}else e({visible:!1,disabledReason:\"Survey not found\"})}),i)}))}renderSurvey(t,i){var e;if(j(this._surveyManager))Vn.warn(\"init was not called\");else{var r=\"string\"==typeof t?this.ye(t):t;if(null!=r&&r.id)if(Xn.includes(r.type)){var s=null==o?void 0:o.querySelector(i);if(s)return null!=(e=r.appearance)&&e.surveyPopupDelaySeconds?(Vn.info(\"Rendering survey \"+r.id+\" with delay of \"+r.appearance.surveyPopupDelaySeconds+\" seconds\"),void setTimeout((()=>{var t,i;Vn.info(\"Rendering survey \"+r.id+\" with delay of \"+(null==(t=r.appearance)?void 0:t.surveyPopupDelaySeconds)+\" seconds\"),null==(i=this._surveyManager)||i.renderSurvey(r,s),Vn.info(\"Survey \"+r.id+\" rendered\")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s);Vn.warn(\"Survey element not found\")}else Vn.warn(\"Surveys of type \"+r.type+\" cannot be rendered in the app\");else Vn.warn(\"Survey not found\")}}displaySurvey(t,i){var e;if(j(this._surveyManager))Vn.warn(\"init was not called\");else{var r=this.ye(t);if(r){var s=r;if(null!=(e=r.appearance)&&e.surveyPopupDelaySeconds&&i.ignoreDelay&&(s=g({},r,{appearance:g({},r.appearance,{surveyPopupDelaySeconds:0})})),!1===i.ignoreConditions){var n=this.canRenderSurvey(r);if(!n.visible)return void Vn.warn(\"Survey is not eligible to be displayed: \",n.disabledReason)}i.displayType!==Gn.Inline?this._surveyManager.handlePopoverSurvey(s):this.renderSurvey(s,i.selector)}else Vn.warn(\"Survey not found\")}}cancelPendingSurvey(t){j(this._surveyManager)?Vn.warn(\"init was not called\"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;null==(t=this._surveyManager)||t.handlePageUnload()}}var no=$i(\"[Conversations]\");class oo{constructor(t){this.we=void 0,this._conversationsManager=null,this.xe=!1,this.Ee=null,this._instance=t}onRemoteConfig(t){if(!this._instance.config.disable_conversations){var i=t.conversations;j(i)||(N(i)?this.we=i:(this.we=i.enabled,this.Ee=i),this.loadIfEnabled())}}reset(){var t;null==(t=this._conversationsManager)||t.reset(),this._conversationsManager=null,this.we=void 0,this.Ee=null}loadIfEnabled(){if(!this._conversationsManager&&!this.xe&&!(this._instance.config.disable_conversations||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var i=null==v?void 0:v.__PosthogExtensions__;if(i&&!M(this.we)&&this.we)if(this.Ee&&this.Ee.token){if(function(i){var e;if(!i||0===i.length)return!0;var r=null==t||null==(e=t.location)?void 0:e.hostname;return!r||i.some((t=>{var i=function(t){var i=t.replace(/^https?:\\/\\//,\"\");return(i=i.split(\"/\")[0].split(\"?\")[0].split(\":\")[0])||null}(t);if(!i)return!1;if(i.startsWith(\"*.\")){var e=i.slice(2);return r.endsWith(\".\"+e)||r===e}return r===i}))}(this.Ee.domains)){this.xe=!0;try{var e=i.initConversations;if(e)return this.$e(e),void(this.xe=!1);var r=i.loadExternalDependency;if(!r)return void this.Se(\"PostHog loadExternalDependency extension not found.\");r(this._instance,\"conversations\",(t=>{t||!i.initConversations?this.Se(\"Could not load conversations script\",t):this.$e(i.initConversations),this.xe=!1}))}catch(t){this.Se(\"Error initializing conversations\",t),this.xe=!1}}}else no.error(\"Conversations enabled but missing token in remote config.\")}}$e(t){if(this.Ee)try{this._conversationsManager=t(this.Ee,this._instance),no.info(\"Conversations loaded successfully\")}catch(t){this.Se(\"Error completing conversations initialization\",t)}else no.error(\"Cannot complete initialization: remote config is null\")}Se(t,i){no.error(t,i),this._conversationsManager=null,this.xe=!1}enable(){this._conversationsManager?this._conversationsManager.enable():no.warn(\"Conversations not loaded yet.\")}disable(){this._conversationsManager&&this._conversationsManager.disable()}isLoaded(){return!D(this._conversationsManager)}isEnabled(){return!0===this.we}}var ao=$i(\"[RateLimiter]\");class lo{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=>{ao.info((t||\"events\")+\" is quota limited.\"),this.serverLimits[t]=(new Date).getTime()+6e4}))}catch(t){return void ao.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(de))&&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(de,n),{isRateLimited:o,remainingTokens:n.tokens}}isServerRateLimited(t){var i=this.serverLimits[t||\"events\"]||!1;return!1!==i&&(new Date).getTime()<i}}var uo=$i(\"[RemoteConfig]\");class ho{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}ke(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))):(uo.error(\"PostHog Extensions not found. Cannot load remote config.\"),t())}Pe(t){this._instance._send_request({method:\"GET\",url:this._instance.requestRouter.endpointFor(\"assets\",\"/array/\"+this._instance.config.token+\"/config\"),callback:i=>{t(i.json)}})}load(){try{if(this.remoteConfig)return uo.info(\"Using preloaded remote config\",this.remoteConfig),void this.yi(this.remoteConfig);if(this._instance.O())return void uo.warn(\"Remote config is disabled. Falling back to local config.\");this.ke((t=>{if(!t)return uo.info(\"No config found after loading remote JS config. Falling back to JSON.\"),void this.Pe((t=>{this.yi(t)}));this.yi(t)}))}catch(t){uo.error(\"Error loading remote config\",t)}}yi(t){t?this._instance.config.__preview_remote_config?(this._instance.yi(t),!1!==t.hasFeatureFlags&&this._instance.featureFlags.ensureFlagsLoaded()):uo.info(\"__preview_remote_config is disabled. Logging config instead\",t):uo.error(\"Failed to fetch remote config from PostHog.\")}}var vo=3e3;class co{constructor(t,i){this.Te=!0,this.Ie=[],this.Ce=J((null==i?void 0:i.flush_interval_ms)||vo,250,5e3,Ei.createLogger(\"flush interval\"),vo),this.Re=t}enqueue(t){this.Ie.push(t),this.Fe||this.Me()}unload(){this.Oe();var t=this.Ie.length>0?this.Ae():{},i=Object.values(t);[...i.filter((t=>0===t.url.indexOf(\"/e\"))),...i.filter((t=>0!==t.url.indexOf(\"/e\")))].map((t=>{this.Re(g({},t,{transport:\"sendBeacon\"}))}))}enable(){this.Te=!1,this.Me()}Me(){var t=this;this.Te||(this.Fe=setTimeout((()=>{if(this.Oe(),this.Ie.length>0){var i=this.Ae(),e=function(){var e=i[r],s=(new Date).getTime();e.data&&I(e.data)&&Ii(e.data,(t=>{t.offset=Math.abs(t.timestamp-s),delete t.timestamp})),t.Re(e)};for(var r in i)e()}}),this.Ce))}Oe(){clearTimeout(this.Fe),this.Fe=void 0}Ae(){var t={};return Ii(this.Ie,(i=>{var e,r=i,s=(r?r.batchKey:null)||r.url;M(t[s])&&(t[s]=g({},r,{data:[]})),null==(e=t[s].data)||e.push(r.data)})),this.Ie=[],t}}var fo=[\"retriesPerformedSoFar\"];class po{constructor(i){this.De=!1,this.je=3e3,this.Ie=[],this._instance=i,this.Ie=[],this.Le=!0,!M(t)&&\"onLine\"in t.navigator&&(this.Le=t.navigator.onLine,this.Ne=()=>{this.Le=!0,this.Lt()},this.Ue=()=>{this.Le=!1},Ui(t,\"online\",this.Ne),Ui(t,\"offline\",this.Ue))}get length(){return this.Ie.length}retriableRequest(t){var{retriesPerformedSoFar:i}=t,e=_(t,fo);L(i)&&i>0&&(e.url=ln(e.url,{retry_count:i})),this._instance._send_request(g({},e,{callback:t=>{200!==t.statusCode&&(t.statusCode<400||t.statusCode>=500)&&(null!=i?i:0)<10?this.ze(g({retriesPerformedSoFar:i},e)):null==e.callback||e.callback(t)}}))}ze(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.Ie.push({retryAt:r,requestOptions:t});var s=\"Enqueued failed request for retry in \"+e;navigator.onLine||(s+=\" (Browser is offline)\"),Ei.warn(s),this.De||(this.De=!0,this.He())}He(){if(this.Be&&clearTimeout(this.Be),0===this.Ie.length)return this.De=!1,void(this.Be=void 0);this.Be=setTimeout((()=>{this.Le&&this.Ie.length>0&&this.Lt(),this.He()}),this.je)}Lt(){var t=Date.now(),i=[],e=this.Ie.filter((e=>e.retryAt<t||(i.push(e),!1)));if(this.Ie=i,e.length>0)for(var{requestOptions:r}of e)this.retriableRequest(r)}unload(){for(var{requestOptions:i}of(this.Be&&(clearTimeout(this.Be),this.Be=void 0),this.De=!1,M(t)||(this.Ne&&(t.removeEventListener(\"online\",this.Ne),this.Ne=void 0),this.Ue&&(t.removeEventListener(\"offline\",this.Ue),this.Ue=void 0)),this.Ie))try{this._instance._send_request(g({},i,{transport:\"sendBeacon\"}))}catch(t){Ei.error(t)}this.Ie=[]}}class go{constructor(t){this.qe=()=>{var t,i,e,r;this.We||(this.We={});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.We.lastScrollY=Math.ceil(n),this.We.maxScrollY=Math.max(n,null!==(t=this.We.maxScrollY)&&void 0!==t?t:0),this.We.maxScrollHeight=Math.max(o,null!==(i=this.We.maxScrollHeight)&&void 0!==i?i:0),this.We.lastContentY=a,this.We.maxContentY=Math.max(a,null!==(e=this.We.maxContentY)&&void 0!==e?e:0),this.We.maxContentHeight=Math.max(l,null!==(r=this.We.maxContentHeight)&&void 0!==r?r:0)},this._instance=t}getContext(){return this.We}resetContext(){var t=this.We;return setTimeout(this.qe,0),t}startMeasuringScrollPosition(){Ui(t,\"scroll\",this.qe,{capture:!0}),Ui(t,\"scrollend\",this.qe,{capture:!0}),Ui(t,\"resize\",this.qe)}scrollElement(){if(!this._instance.config.scroll_root_selector)return null==t?void 0:t.document.documentElement;var i=I(this._instance.config.scroll_root_selector)?this._instance.config.scroll_root_selector:[this._instance.config.scroll_root_selector];for(var e of i){var r=null==t?void 0:t.document.querySelector(e);if(r)return r}}scrollY(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollTop||0}return t&&(t.scrollY||t.pageYOffset||t.document.documentElement.scrollTop)||0}scrollX(){if(this._instance.config.scroll_root_selector){var i=this.scrollElement();return i&&i.scrollLeft||0}return t&&(t.scrollX||t.pageXOffset||t.document.documentElement.scrollLeft)||0}}var _o=t=>vs(null==t?void 0:t.config.mask_personal_data_properties,null==t?void 0:t.config.custom_personal_data_properties);class mo{constructor(t,i,e,r){this.Ge=t=>{var i=this.Ve();if(!i||i.sessionId!==t){var e={sessionId:t,props:this.Je(this._instance)};this.Ke.register({[he]:e})}},this._instance=t,this.Ye=i,this.Ke=e,this.Je=r||_o,this.Ye.onSessionId(this.Ge)}Ve(){return this.Ke.props[he]}getSetOnceProps(){var t,i=null==(t=this.Ve())?void 0:t.props;return i?\"r\"in i?cs(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 Ii(Ai(this.getSetOnceProps()),((i,e)=>{\"$current_url\"===e&&(e=\"url\"),t[\"$session_entry_\"+E(e)]=i})),t}}var yo=$i(\"[SessionId]\");class bo{on(t,i){return this.Xe.on(t,i)}constructor(t,i,e){var r;if(this.Qe=[],this.Ze=void 0,this.Xe=new Zn,this.tr=(t,i)=>Math.abs(t-i)>this.sessionTimeoutMs,!t.persistence)throw new Error(\"SessionIdManager requires a PostHogPersistence instance\");if(\"always\"===t.config.cookieless_mode)throw new Error('SessionIdManager cannot be used with cookieless_mode=\"always\"');this.R=t.config,this.Ke=t.persistence,this.ir=void 0,this.er=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.rr=i||wr,this.sr=e||wr;var s=this.R.persistence_name||this.R.token,n=this.R.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*J(n,60,36e3,yo.createLogger(\"session_idle_timeout_seconds\"),1800),t.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.nr(),this.ar=\"ph_\"+s+\"_window_id\",this.lr=\"ph_\"+s+\"_primary_window_exists\",this.ur()){var o=Mr.W(this.ar),a=Mr.W(this.lr);o&&!a?this.ir=o:Mr.V(this.ar),Mr.G(this.lr,!0)}if(null!=(r=this.R.bootstrap)&&r.sessionID)try{var l=(t=>{var i=t.replace(/-/g,\"\");if(32!==i.length)throw new Error(\"Not a valid UUID\");if(\"7\"!==i[12])throw new Error(\"Not a UUIDv7\");return parseInt(i.substring(0,12),16)})(this.R.bootstrap.sessionID);this.hr(this.R.bootstrap.sessionID,(new Date).getTime(),l)}catch(t){yo.error(\"Invalid sessionID in bootstrap\",t)}this.dr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(t){return M(this.Qe)&&(this.Qe=[]),this.Qe.push(t),this.er&&t(this.er,this.ir),()=>{this.Qe=this.Qe.filter((i=>i!==t))}}ur(){return\"memory\"!==this.R.persistence&&!this.Ke.Si&&Mr.H()}vr(t){t!==this.ir&&(this.ir=t,this.ur()&&Mr.G(this.ar,t))}cr(){return this.ir?this.ir:this.ur()?Mr.W(this.ar):null}hr(t,i,e){t===this.er&&i===this._sessionActivityTimestamp&&e===this._sessionStartTimestamp||(this._sessionStartTimestamp=e,this._sessionActivityTimestamp=i,this.er=t,this.Ke.register({[te]:[i,t,e]}))}pr(){var t=this.Ke.props[te];return I(t)&&2===t.length&&t.push(t[0]),t||[0,null,0]}resetSessionId(){this.hr(null,null,null)}destroy(){clearTimeout(this.gr),this.gr=void 0,this.Ze&&t&&(t.removeEventListener(\"beforeunload\",this.Ze,{capture:!1}),this.Ze=void 0),this.Qe=[]}dr(){this.Ze=()=>{this.ur()&&Mr.V(this.lr)},Ui(t,\"beforeunload\",this.Ze,{capture:!1})}checkAndGetSessionAndWindowId(t,i){if(void 0===t&&(t=!1),void 0===i&&(i=null),\"always\"===this.R.cookieless_mode)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode=\"always\"');var e=i||(new Date).getTime(),[r,s,n]=this.pr(),o=this.cr(),a=L(n)&&n>0&&Math.abs(e-n)>864e5,l=!1,u=!s,h=!u&&!t&&this.tr(e,r);u||h||a?(s=this.rr(),o=this.sr(),yo.info(\"new session ID generated\",{sessionId:s,windowId:o,changeReason:{noSessionId:u,activityTimeout:h,sessionPastMaximumLength:a}}),n=e,l=!0):o||(o=this.sr(),l=!0);var d=0===r||!t||a?e:r,v=0===n?(new Date).getTime():n;return this.vr(o),this.hr(s,d,v),t||this.nr(),l&&this.Qe.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}}nr(){clearTimeout(this.gr),this.gr=setTimeout((()=>{var[t]=this.pr();if(this.tr((new Date).getTime(),t)){var i=this.er;this.resetSessionId(),this.Xe.emit(\"forcedIdleReset\",{idleSessionId:i})}}),1.1*this.sessionTimeoutMs)}}var wo=[\"$set_once\",\"$set\"],xo=$i(\"[SiteApps]\");class Eo{constructor(t){this._instance=t,this._r=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}mr(t,i){if(i){var e=this.globalsForEvent(i);this._r.push(e),this._r.length>1e3&&(this._r=this._r.slice(10))}}get siteAppLoaders(){var t;return null==(t=v._POSTHOG_REMOTE_CONFIG)||null==(t=t[this._instance.config.token])?void 0:t.siteApps}init(){if(this.isEnabled){var t=this._instance.Hi(this.mr.bind(this));this.yr=()=>{t(),this._r=[],this.yr=void 0}}}globalsForEvent(t){var i,e,r,s,n,o,a;if(!t)throw new Error(\"Event payload is required\");var l={},u=this._instance.get_property(\"$groups\")||[],h=this._instance.get_property(\"$stored_group_properties\")||{};for(var[d,v]of Object.entries(h))l[d]={id:u[d],type:d,properties:v};var{$set_once:c,$set:f}=t;return{event:g({},_(t,wo),{properties:g({},t.properties,f?{$set:g({},null!==(i=null==(e=t.properties)?void 0:e.$set)&&void 0!==i?i:{},f)}:{},c?{$set_once:g({},null!==(r=null==(s=t.properties)?void 0:s.$set_once)&&void 0!==r?r:{},c)}:{}),elements_chain:null!==(n=null==(o=t.properties)?void 0:o.$elements_chain)&&void 0!==n?n:\"\",distinct_id:null==(a=t.properties)?void 0:a.distinct_id}),person:{properties:this._instance.get_property(\"$stored_person_properties\")},groups:l}}setupSiteApp(t){var i=this.apps[t.id],e=()=>{var e;(!i.errored&&this._r.length&&(xo.info(\"Processing \"+this._r.length+\" events for site app with id \"+t.id),this._r.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.yr)||e.call(this))},r=!1,s=s=>{i.errored=!s,i.loaded=!0,xo.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){xo.error(\"Error while initializing PostHog app with config id \"+t.id,i),s(!1)}if(r&&i.loaded)try{e()}catch(e){xo.error(\"Error while processing buffered events PostHog app with config id \"+t.id,e),i.errored=!0}}br(){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)}wr(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){xo.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.br(),void this._instance.on(\"eventCaptured\",(t=>this.wr(t)))):void xo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');if(null==(e=this.yr)||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 xo.error(\"Error while initializing PostHog app with config id \"+t,i)}))};for(var{id:o,url:a}of t.siteApps)n(o)}else xo.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}var $o=function(t,i){if(!t)return!1;var e=t.userAgent;if(e&&y(e,i))return!0;try{var r=null==t?void 0:t.userAgentData;if(null!=r&&r.brands&&r.brands.some((t=>y(null==t?void 0:t.brand,i))))return!0}catch(t){}return!!t.webdriver},So=function(t){return t.US=\"us\",t.EU=\"eu\",t.CUSTOM=\"custom\",t}({}),ko=\"i.posthog.com\";class Po{constructor(t){this.Er={},this.instance=t}get apiHost(){var t=this.instance.config.api_host.trim().replace(/\\/$/,\"\");return\"https://app.posthog.com\"===t?\"https://us.i.posthog.com\":t}get flagsApiHost(){var t=this.instance.config.flags_api_host;return t?t.trim().replace(/\\/$/,\"\"):this.apiHost}get uiHost(){var t,i=null==(t=this.instance.config.ui_host)?void 0:t.replace(/\\/$/,\"\");return i||(i=this.apiHost.replace(\".\"+ko,\".posthog.com\")),\"https://app.posthog.com\"===i?\"https://us.posthog.com\":i}get region(){return this.Er[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Er[this.apiHost]=So.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this.Er[this.apiHost]=So.EU:this.Er[this.apiHost]=So.CUSTOM),this.Er[this.apiHost]}endpointFor(t,i){if(void 0===i&&(i=\"\"),i&&(i=\"/\"===i[0]?i:\"/\"+i),\"ui\"===t)return this.uiHost+i;if(\"flags\"===t)return this.flagsApiHost+i;if(this.region===So.CUSTOM)return this.apiHost+i;var e=ko+i;switch(t){case\"assets\":return\"https://\"+this.region+\"-assets.\"+e;case\"api\":return\"https://\"+this.region+\".\"+e}}}var To={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&&vn(e.href,i),not_regex:(i,e)=>!!t&&!vn(e.href,i),exact:(t,i)=>i.href===t,is_not:(t,i)=>i.href!==t};class Io{constructor(t){var i=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(t){void 0===t&&(t=!1),i.getWebExperiments((t=>{Io.$r(\"retrieved web experiments from the server\"),i.Sr=new Map,t.forEach((t=>{if(t.feature_flag_key){var e;if(i.Sr)Io.$r(\"setting flag key \",t.feature_flag_key,\" to web experiment \",t),null==(e=i.Sr)||e.set(t.feature_flag_key,t);var r=i._instance.getFeatureFlag(t.feature_flag_key);O(r)&&t.variants[r]&&i.kr(t.name,r,t.variants[r].transforms)}else if(t.variants)for(var s in t.variants){var n=t.variants[s];Io.Pr(n)&&i.kr(t.name,s,n.transforms)}}))}),t)},this._instance=t,this._instance.onFeatureFlags((t=>{this.onFeatureFlags(t)}))}onFeatureFlags(t){if(this._is_bot())Io.$r(\"Refusing to render web experiment since the viewer is a likely bot\");else if(!this._instance.config.disable_web_experiments){if(j(this.Sr))return this.Sr=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Io.$r(\"applying feature flags\",t),t.forEach((t=>{var i;if(this.Sr&&null!=(i=this.Sr)&&i.has(t)){var e,r=this._instance.getFeatureFlag(t),s=null==(e=this.Sr)?void 0:e.get(t);r&&null!=s&&s.variants[r]&&this.kr(s.name,r,s.variants[r].transforms)}}))}}previewWebExperiment(){var t=Io.getWindowLocation();if(null!=t&&t.search){var i=or(null==t?void 0:t.search,\"__experiment_id\"),e=or(null==t?void 0:t.search,\"__experiment_variant\");i&&e&&(Io.$r(\"previewing web experiments \"+i+\" && \"+e),this.getWebExperiments((t=>{this.Tr(parseInt(i),e,t)}),!1,!0))}}loadIfEnabled(){this._instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(t,i,e){if(this._instance.config.disable_web_experiments&&!e)return t([]);var r=this._instance.get_property(\"$web_experiments\");if(r&&!i)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor(\"api\",\"/api/web_experiments/?token=\"+this._instance.config.token),method:\"GET\",callback:i=>{if(200!==i.statusCode||!i.json)return t([]);var e=i.json.experiments||[];return t(e)}})}Tr(t,i,e){var r=e.filter((i=>i.id===t));r&&r.length>0&&(Io.$r(\"Previewing web experiment [\"+r[0].name+\"] with variant [\"+i+\"]\"),this.kr(r[0].name,i,r[0].variants[i].transforms))}static Pr(t){return!j(t.conditions)&&(Io.Ir(t)&&Io.Cr(t))}static Ir(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.url))return!0;var e,r,s,n=Io.getWindowLocation();return!!n&&(null==(e=t.conditions)||!e.url||To[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 Cr(t){var i;if(j(t.conditions)||j(null==(i=t.conditions)?void 0:i.utm))return!0;var e=as();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 $r(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),r=1;r<i;r++)e[r-1]=arguments[r];Ei.info(\"[WebExperiments] \"+t,e)}kr(t,i,e){this._is_bot()?Io.$r(\"Refusing to render web experiment since the viewer is a likely bot\"):\"control\"!==i?e.forEach((e=>{if(e.selector){var r;Io.$r(\"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)}))}})):Io.$r(\"Control variants leave the page unmodified.\")}_is_bot(){return n&&this._instance?$o(n,this._instance.config.custom_blocked_useragents):void 0}}var Co=$i(\"[PostHog ExternalIntegrations]\"),Ro={intercom:\"intercom-integration\",crispChat:\"crisp-chat-integration\"};class Fo{constructor(t){this._instance=t}it(t,i){var e;null==(e=v.__PosthogExtensions__)||null==e.loadExternalDependency||e.loadExternalDependency(this._instance,t,(t=>{if(t)return Co.error(\"failed to load script\",t);i()}))}startIfEnabledOrStop(){var t=this,i=function(i){var e,s,n;(!r||null!=(e=v.__PosthogExtensions__)&&null!=(e=e.integrations)&&e[i]||t.it(Ro[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 Mo=\"[SessionRecording]\",Oo=$i(Mo);class Ao{get started(){var t;return!(null==(t=this.Rr)||!t.isStarted)}get status(){return this.Rr?this.Rr.status:this.Fr&&!this.Mr?\"disabled\":\"lazy_loading\"}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Fr=!1,this.Or=void 0,this._instance=t,!this._instance.sessionManager)throw Oo.error(\"started without valid sessionManager\"),new Error(Mo+\" started without valid sessionManager. This is a bug.\");if(\"always\"===this._instance.config.cookieless_mode)throw new Error(Mo+' cannot be used with cookieless_mode=\"always\"')}get Mr(){var i,e=!(null==(i=this._instance.get_property(Zi))||!i.enabled),r=!this._instance.config.disable_session_recording,s=this._instance.config.disable_session_recording||this._instance.consent.isOptedOut();return t&&e&&r&&!s}startIfEnabledOrStop(t){var i;if(!this.Mr||null==(i=this.Rr)||!i.isStarted){var e=!M(Object.assign)&&!M(Array.from);this.Mr&&e?(this.Ar(t),Oo.info(\"starting\")):this.stopRecording()}}Ar(t){var i,e,r;this.Mr&&(null!=v&&null!=(i=v.__PosthogExtensions__)&&null!=(i=i.rrweb)&&i.record&&null!=(e=v.__PosthogExtensions__)&&e.initSessionRecording?this.Dr(t):null==(r=v.__PosthogExtensions__)||null==r.loadExternalDependency||r.loadExternalDependency(this._instance,this.jr,(i=>{if(i)return Oo.error(\"could not load recorder\",i);this.Dr(t)})))}stopRecording(){var t,i;null==(t=this.Or)||t.call(this),this.Or=void 0,null==(i=this.Rr)||i.stop()}Lr(){var t;null==(t=this._instance.persistence)||t.unregister(ie)}Nr(t){if(this._instance.persistence){var i,e,r=this._instance.persistence,s=()=>{var i=!1===t.sessionRecording?void 0:t.sessionRecording,e=null==i?void 0:i.sampleRate,s=j(e)?null:parseFloat(e);j(s)&&this.Lr();var n=null==i?void 0:i.minimumDurationMilliseconds;r.register({[Zi]:g({enabled:!!i},i,{networkPayloadCapture:g({capturePerformance:t.capturePerformance},null==i?void 0:i.networkPayloadCapture),canvasRecording:{enabled:null==i?void 0:i.recordCanvas,fps:null==i?void 0:i.canvasFps,quality:null==i?void 0:i.canvasQuality},sampleRate:s,minimumDurationMilliseconds:M(n)?null:n,endpoint:null==i?void 0:i.endpoint,triggerMatchType:null==i?void 0:i.triggerMatchType,masking:null==i?void 0:i.masking,urlTriggers:null==i?void 0:i.urlTriggers})})};s(),null==(i=this.Or)||i.call(this),this.Or=null==(e=this._instance.sessionManager)?void 0:e.onSessionId(s)}}onRemoteConfig(t){\"sessionRecording\"in t?!1!==t.sessionRecording?(this.Nr(t),this.Fr=!0,this.startIfEnabledOrStop()):this.Fr=!0:Oo.info(\"skipping remote config with no sessionRecording\",t)}log(t,i){var e;void 0===i&&(i=\"log\"),null!=(e=this.Rr)&&e.log?this.Rr.log(t,i):Oo.warn(\"log called before recorder was ready\")}get jr(){var t,i,e=null==(t=this._instance)||null==(t=t.persistence)?void 0:t.get_property(Zi);return(null==e||null==(i=e.scriptConfig)?void 0:i.script)||\"lazy-recorder\"}Dr(t){var i,e;if(null==(i=v.__PosthogExtensions__)||!i.initSessionRecording)throw Error(\"Called on script loaded before session recording is available\");this.Rr||(this.Rr=null==(e=v.__PosthogExtensions__)?void 0:e.initSessionRecording(this._instance),this.Rr._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture);this.Rr.start(t)}onRRwebEmit(t){var i;null==(i=this.Rr)||null==i.onRRwebEmit||i.onRRwebEmit(t)}overrideLinkedFlag(){var t,i;this.Rr||(null==(i=this._instance.persistence)||i.register({$replay_override_linked_flag:!0}));null==(t=this.Rr)||t.overrideLinkedFlag()}overrideSampling(){var t,i;this.Rr||(null==(i=this._instance.persistence)||i.register({$replay_override_sampling:!0}));null==(t=this.Rr)||t.overrideSampling()}overrideTrigger(t){var i,e;this.Rr||(null==(e=this._instance.persistence)||e.register({[\"url\"===t?\"$replay_override_url_trigger\":\"$replay_override_event_trigger\"]:!0}));null==(i=this.Rr)||i.overrideTrigger(t)}get sdkDebugProperties(){var t;return(null==(t=this.Rr)?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,i){var e;return!(null==(e=this.Rr)||!e.tryAddCustomEvent(t,i))}}var Do={},jo=()=>{},Lo=\"posthog\",No=!on&&-1===(null==d?void 0:d.indexOf(\"MSIE\"))&&-1===(null==d?void 0:d.indexOf(\"Mozilla\")),Uo=i=>{var e;return g({api_host:\"https://us.i.posthog.com\",flags_api_host:null,ui_host:null,token:\"\",autocapture:!0,cross_subdomain_cookie:Li(null==o?void 0:o.location),persistence:\"localStorage+cookie\",persistence_name:\"\",cookie_persisted_properties:[],loaded:jo,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:\"if_capture_pageview\",defaults:null!=i?i:\"unset\",__preview_deferred_init_extensions:!1,debug:a&&O(null==a?void 0:a.search)&&-1!==a.search.indexOf(\"__posthog_debug=true\")||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!0,disable_external_dependency_loading:!1,enable_recording_console_log:void 0,secure_cookie:\"https:\"===(null==t||null==(e=t.location)?void 0:e.protocol),ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:\"localStorage\",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error:t=>{var i=\"Bad HTTP status: \"+t.statusCode+\" \"+t.text;Ei.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:vo},error_tracking:{},_onCapture:jo,__preview_eager_load_replay:!1},(t=>({rageclick:!(t&&t>=\"2025-11-30\")||{content_ignorelist:!0},capture_pageview:!(t&&t>=\"2025-05-24\")||\"history_change\",session_recording:t&&t>=\"2025-11-30\"?{strictMinimumDuration:!0}:{}}))(i))},zo=t=>{var i={};M(t.process_person)||(i.person_profiles=t.process_person),M(t.xhr_headers)||(i.request_headers=t.xhr_headers),M(t.cookie_name)||(i.persistence_name=t.cookie_name),M(t.disable_cookie)||(i.disable_persistence=t.disable_cookie),M(t.store_google)||(i.save_campaign_params=t.store_google),M(t.verbose)||(i.debug=t.verbose);var e=Ci({},i,t);return I(t.property_blacklist)&&(M(t.property_denylist)?e.property_denylist=t.property_blacklist:I(t.property_denylist)?e.property_denylist=[...t.property_blacklist,...t.property_denylist]:Ei.error(\"Invalid value for property_denylist config: \"+t.property_denylist)),e};class Ho{constructor(){this.__forceAllowLocalhost=!1}get Ur(){return this.__forceAllowLocalhost}set Ur(t){Ei.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"),this.__forceAllowLocalhost=t}}class Bo{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 Ho,this.zr=!1,this.version=c.LIB_VERSION,this.Hr=new Zn,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=Uo(),this.SentryIntegration=Jr,this.sentryIntegration=t=>function(t,i){var e=Vr(t,i);return{name:Gr,processEvent:t=>e(t)}}(this,t),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint=\"/e/\",this.Br=!1,this.qr=null,this.Wr=null,this.Gr=null,this.featureFlags=new Cn(this),this.toolbar=new Zr(this),this.scrollManager=new go(this),this.pageViewManager=new Es(this),this.surveys=new so(this),this.conversations=new oo(this),this.experiments=new Io(this),this.exceptions=new mn(this),this.rateLimiter=new lo(this),this.requestRouter=new Po(this),this.consent=new Ar(this),this.externalIntegrations=new Fo(this),this.people={set:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(r),null==e||e({})},set_once:(t,i,e)=>{var r=O(t)?{[t]:i}:t;this.setPersonProperties(void 0,r),null==e||e({})}},this.on(\"eventCaptured\",(t=>Ei.info('send \"'+(null==t?void 0:t.event)+'\"',t)))}init(t,i,e){if(e&&e!==Lo){var r,s=null!==(r=Do[e])&&void 0!==r?r:new Bo;return s._init(t,i,e),Do[e]=s,Do[Lo][e]=s,s}return this._init(t,i,e)}_init(i,e,r){var s;if(void 0===e&&(e={}),M(i)||A(i))return Ei.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"),this;if(this.__loaded)return console.warn(\"[PostHog.js]\",\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},e.debug=this.Vr(e.debug),this.Jr=e,this.Kr=[],e.person_profiles&&(this.Wr=e.person_profiles),this.set_config(Ci({},Uo(e.defaults),zo(e),{name:r,token:i})),this.config.on_xhr_error&&Ei.error(\"on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=e.disable_compression?void 0:er.GZipJS;var n=this.Yr();this.persistence=new Fn(this.config,n),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Fn(g({},this.config,{persistence:\"sessionStorage\"}),n);var o=g({},this.persistence.props),a=g({},this.sessionPersistence.props);this.register({$initialization_time:(new Date).toISOString()}),this.Xr=new co((t=>this.Qr(t)),this.config.request_queue_config),this.Zr=new po(this),this.__request_queue=[];var l=\"always\"===this.config.cookieless_mode||\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut();if(l||(this.sessionManager=new bo(this),this.sessionPropsManager=new mo(this,this.sessionManager,this.persistence)),this.config.__preview_deferred_init_extensions?(Ei.info(\"Deferring extension initialization to improve startup performance\"),setTimeout((()=>{this.ts(l)}),0)):(Ei.info(\"Initializing extensions synchronously\"),this.ts(l)),c.DEBUG=c.DEBUG||this.config.debug,c.DEBUG&&Ei.info(\"Starting in debug mode\",{this:this,config:e,thisC:g({},this.config),p:o,s:a}),void 0!==(null==(s=e.bootstrap)?void 0:s.distinctID)){var u,h,d=this.config.get_device_id(wr()),v=null!=(u=e.bootstrap)&&u.isIdentifiedID?d:e.bootstrap.distinctID;this.persistence.set_property(ue,null!=(h=e.bootstrap)&&h.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:e.bootstrap.distinctID,$device_id:v})}if(this.es()){var f,p,_=Object.keys((null==(f=e.bootstrap)?void 0:f.featureFlags)||{}).filter((t=>{var i;return!(null==(i=e.bootstrap)||null==(i=i.featureFlags)||!i[t])})).reduce(((t,i)=>{var r;return t[i]=(null==(r=e.bootstrap)||null==(r=r.featureFlags)?void 0:r[i])||!1,t}),{}),m=Object.keys((null==(p=e.bootstrap)?void 0:p.featureFlagPayloads)||{}).filter((t=>_[t])).reduce(((t,i)=>{var r,s;null!=(r=e.bootstrap)&&null!=(r=r.featureFlagPayloads)&&r[i]&&(t[i]=null==(s=e.bootstrap)||null==(s=s.featureFlagPayloads)?void 0:s[i]);return t}),{});this.featureFlags.receivedFeatureFlags({featureFlags:_,featureFlagPayloads:m})}if(l)this.register_once({distinct_id:_e,$device_id:null},\"\");else if(!this.get_distinct_id()){var y=this.config.get_device_id(wr());this.register_once({distinct_id:y,$device_id:y},\"\"),this.persistence.set_property(ue,\"anonymous\")}return Ui(t,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),e.segment?Wr(this,(()=>this.rs())):this.rs(),C(this.config._onCapture)&&this.config._onCapture!==jo&&(Ei.warn(\"onCapture is deprecated. Please use `before_send` instead\"),this.on(\"eventCaptured\",(t=>this.config._onCapture(t.event,t)))),this.config.ip&&Ei.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}ts(t){var i=performance.now();this.historyAutocapture=new Br(this),this.historyAutocapture.startIfEnabled();var e=[];e.push((()=>{new is(this).startIfEnabledOrStop()})),e.push((()=>{var t;this.siteApps=new Eo(this),null==(t=this.siteApps)||t.init()})),t||e.push((()=>{this.sessionRecording=new Ao(this),this.sessionRecording.startIfEnabledOrStop()})),this.config.disable_scroll_properties||e.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),e.push((()=>{this.autocapture=new fr(this),this.autocapture.startIfEnabled()})),e.push((()=>{this.surveys.loadIfEnabled()})),e.push((()=>{this.conversations.loadIfEnabled()})),e.push((()=>{this.productTours=new An(this),this.productTours.loadIfEnabled()})),e.push((()=>{this.heatmaps=new xs(this),this.heatmaps.startIfEnabled()})),e.push((()=>{this.webVitalsAutocapture=new ys(this)})),e.push((()=>{this.exceptionObserver=new zr(this),this.exceptionObserver.startIfEnabledOrStop()})),e.push((()=>{this.deadClicksAutocapture=new Nr(this,Lr),this.deadClicksAutocapture.startIfEnabled()})),e.push((()=>{if(this.ss){var t=this.ss;this.ss=void 0,this.yi(t)}})),this.ns(e,i)}ns(t,i){for(;t.length>0;){if(this.config.__preview_deferred_init_extensions)if(performance.now()-i>=30&&t.length>0)return void setTimeout((()=>{this.ns(t,i)}),0);var e=t.shift();if(e)try{e()}catch(t){Ei.error(\"Error initializing extension:\",t)}}var r=Math.round(performance.now()-i);this.register_for_session({$sdk_debug_extensions_init_method:this.config.__preview_deferred_init_extensions?\"deferred\":\"synchronous\",$sdk_debug_extensions_init_time_ms:r}),this.config.__preview_deferred_init_extensions&&Ei.info(\"PostHog extensions initialized (\"+r+\"ms)\")}yi(t){var i,e,r,s,n,a,l,u,h;if(!o||!o.body)return Ei.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((()=>{this.yi(t)}),500);this.config.__preview_deferred_init_extensions&&(this.ss=t),this.compression=void 0,t.supportedCompression&&!this.config.disable_compression&&(this.compression=w(t.supportedCompression,er.GZipJS)?er.GZipJS:w(t.supportedCompression,er.Base64)?er.Base64:void 0),null!=(i=t.analytics)&&i.endpoint&&(this.analyticsDefaultEndpoint=t.analytics.endpoint),this.set_config({person_profiles:this.Wr?this.Wr:\"identified_only\"}),null==(e=this.siteApps)||e.onRemoteConfig(t),null==(r=this.sessionRecording)||r.onRemoteConfig(t),null==(s=this.autocapture)||s.onRemoteConfig(t),null==(n=this.heatmaps)||n.onRemoteConfig(t),this.surveys.onRemoteConfig(t),this.conversations.onRemoteConfig(t),null==(a=this.productTours)||a.onRemoteConfig(t),null==(l=this.webVitalsAutocapture)||l.onRemoteConfig(t),null==(u=this.exceptionObserver)||u.onRemoteConfig(t),this.exceptions.onRemoteConfig(t),null==(h=this.deadClicksAutocapture)||h.onRemoteConfig(t)}rs(){try{this.config.loaded(this)}catch(t){Ei.critical(\"`loaded` function failed\",t)}this.os(),this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||\"always\"===this.config.cookieless_mode)&&this.ls()}),1),new ho(this).load(),this.featureFlags.flags()}os(){var t;this.is_capturing()&&(this.config.request_batching&&(null==(t=this.Xr)||t.enable()))}_dom_loaded(){this.is_capturing()&&Ti(this.__request_queue,(t=>this.Qr(t))),this.__request_queue=[],this.os()}_handle_unload(){var t,i;this.surveys.handlePageUnload(),this.config.request_batching?(this.us()&&this.capture(\"$pageleave\"),null==(t=this.Xr)||t.unload(),null==(i=this.Zr)||i.unload()):this.us()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}_send_request(t){this.__loaded&&(No?this.__request_queue.push(t):this.rateLimiter.isServerRateLimited(t.batchKey)||(t.transport=t.transport||this.config.api_transport,t.url=ln(t.url,{ip:this.config.ip?1:0}),t.headers=g({},this.config.request_headers,t.headers),t.compression=\"best-available\"===t.compression?this.compression:t.compression,t.disableXHRCredentials=this.config.__preview_disable_xhr_credentials,this.config.__preview_disable_beacon&&(t.disableTransport=[\"sendBeacon\"]),t.fetchOptions=t.fetchOptions||this.config.fetch_options,(t=>{var i,e,r,s=g({},t);s.timeout=s.timeout||6e4,s.url=ln(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=dn.filter((t=>!s.disableTransport||!t.transport||!s.disableTransport.includes(t.transport))),a=null!==(e=null==(r=Ni(o,(t=>t.transport===n)))?void 0:r.method)&&void 0!==e?e:o[0].method;if(!a)throw new Error(\"No available transport method\");a(s)})(g({},t,{callback:i=>{var e,r;(this.rateLimiter.checkForLimiting(i),i.statusCode>=400)&&(null==(e=(r=this.config).on_request_error)||e.call(r,i));null==t.callback||t.callback(i)}}))))}Qr(t){this.Zr?this.Zr.retriableRequest(t):this._send_request(t)}_execute_array(t){var i,e=[],r=[],s=[];Ti(t,(t=>{t&&(i=t[0],I(i)?s.push(t):C(t)?t.call(this):I(t)&&\"alias\"===i?e.push(t):I(t)&&-1!==i.indexOf(\"capture\")&&C(this[i])?s.push(t):r.push(t))}));var n=function(t,i){Ti(t,(function(t){if(I(t[0])){var e=i;Ii(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)}es(){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.Xr){if(this.is_capturing())if(!M(t)&&O(t)){var s=!this.config.opt_out_useragent_filter&&this._is_bot();if(!(s&&!this.config.__preview_capture_bot_pageviews)){var n=null!=e&&e.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==n||!n.isRateLimited){null!=i&&i.$current_url&&!O(null==i?void 0:i.$current_url)&&(Ei.error(\"Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value.\"),null==i||delete i.$current_url),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var o=new Date,a=(null==e?void 0:e.timestamp)||o,l=wr(),u={uuid:l,event:t,properties:this.calculateEventProperties(t,i||{},a,l)};\"$pageview\"===t&&this.config.__preview_capture_bot_pageviews&&s&&(u.event=\"$bot_pageview\",u.properties.$browser_type=\"bot\"),n&&(u.properties.$lib_rate_limit_remaining_tokens=n.remainingTokens),(null==e?void 0:e.$set)&&(u.$set=null==e?void 0:e.$set);var h,d=\"$groupidentify\"!==t,v=this.hs(null==e?void 0:e.$set_once,d);if(v&&(u.$set_once=v),(u=Di(u,null!=e&&e._noTruncate?null:this.config.properties_string_max_length)).timestamp=a,M(null==e?void 0:e.timestamp)||(u.properties.$event_time_override_provided=!0,u.properties.$event_time_override_system_time=o),t===qn.DISMISSED||t===qn.SENT){var c=null==i?void 0:i[Wn.SURVEY_ID],f=null==i?void 0:i[Wn.SURVEY_ITERATION];h={id:c,current_iteration:f},localStorage.getItem(Yn(h))||localStorage.setItem(Yn(h),\"true\"),u.$set=g({},u.$set,{[Kn({id:c,current_iteration:f},t===qn.SENT?\"responded\":\"dismissed\")]:!0})}else t===qn.SHOWN&&(u.$set=g({},u.$set,{[Wn.SURVEY_LAST_SEEN_DATE]:(new Date).toISOString()}));var p=g({},u.properties.$set,u.$set);if(F(p)||this.setPersonPropertiesForFlags(p),!j(this.config.before_send)){var _=this.ds(u);if(!_)return;u=_}this.Hr.emit(\"eventCaptured\",u);var m={method:\"POST\",url:null!==(r=null==e?void 0:e._url)&&void 0!==r?r:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:u,compression:\"best-available\",batchKey:null==e?void 0:e._batchKey};return!this.config.request_batching||e&&(null==e||!e._batchKey)||null!=e&&e.send_instantly?this.Qr(m):this.Xr.enqueue(m),u}Ei.critical(\"This capture call is ignored due to client rate limiting.\")}}else Ei.error(\"No event name provided to posthog.capture\")}else Ei.uninitializedWarning(\"posthog.capture\")}Hi(t){return this.on(\"eventCaptured\",(i=>t(i.event,i)))}calculateEventProperties(t,i,e,r,s){if(e=e||new Date,!this.persistence||!this.sessionPersistence)return i;var n=s?void 0:this.persistence.remove_event_timer(t),a=g({},i);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,(\"always\"==this.config.cookieless_mode||\"on_reject\"==this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())&&(a.$cookieless_mode=!0),\"$snapshot\"===t){var l=g({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!O(a.distinct_id)&&!L(a.distinct_id)||A(a.distinct_id))&&Ei.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),a}var u,h=gs(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&&Ci(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&Ci(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=null==(f=this.Zr)?void 0:f.length}catch(t){a.$sdk_debug_error_capturing_properties=String(t)}if(this.requestRouter.region===So.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=Ci(a,u),\"$pageview\"===t&&o&&(a.title=o.title),!M(n)){var p=e.getTime()-n;a.$duration=parseFloat((p/1e3).toFixed(3))}d&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?\"bot\":\"browser\"),(a=Ci({},h,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),I(this.config.property_denylist)?Ii(this.config.property_denylist,(function(t){delete a[t]})):Ei.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var _=this.config.sanitize_properties;_&&(Ei.error(\"sanitize_properties is deprecated. Use before_send instead\"),a=_(a,t));var m=this.vs();return a.$process_person_profile=m,m&&!s&&this.cs(\"_calculate_event_properties\"),a}hs(t,i){var e;if(void 0===i&&(i=!0),!this.persistence||!this.vs())return t;if(this.zr)return t;var r=this.persistence.get_initial_props(),s=null==(e=this.sessionPropsManager)?void 0:e.getSetOnceProps(),n=Ci({},r,s||{},t||{}),o=this.config.sanitize_properties;return o&&(Ei.error(\"sanitize_properties is deprecated. Use before_send instead\"),n=o(n,\"$set_once\")),i&&(this.zr=!0),F(n)?void 0:n}register(t,i){var e;null==(e=this.persistence)||e.register(t,i)}register_once(t,i,e){var r;null==(r=this.persistence)||r.register_once(t,i,e)}register_for_session(t){var i;null==(i=this.sessionPersistence)||i.register(t)}unregister(t){var i;null==(i=this.persistence)||i.unregister(t)}unregister_for_session(t){var i;null==(i=this.sessionPersistence)||i.unregister(t)}fs(t,i){this.register({[t]:i})}getFeatureFlag(t,i){return this.featureFlags.getFeatureFlag(t,i)}getFeatureFlagPayload(t){var i=this.featureFlags.getFeatureFlagPayload(t);try{return JSON.parse(i)}catch(t){return i}}isFeatureEnabled(t,i){return this.featureFlags.isFeatureEnabled(t,i)}reloadFeatureFlags(){this.featureFlags.reloadFeatureFlags()}updateFlags(t,i,e){var r=null!=e&&e.merge?this.featureFlags.getFlagVariants():{},s=null!=e&&e.merge?this.featureFlags.getFlagPayloads():{},n=g({},r,t),o=g({},s,i),a={};for(var[l,u]of Object.entries(n)){var h=\"string\"==typeof u;a[l]={key:l,enabled:!!h||Boolean(u),variant:h?u:void 0,reason:void 0,metadata:M(null==o?void 0:o[l])?void 0:{id:0,version:void 0,description:void 0,payload:o[l]}}}this.featureFlags.receivedFeatureFlags({flags:a})}updateEarlyAccessFeatureEnrollment(t,i,e){this.featureFlags.updateEarlyAccessFeatureEnrollment(t,i,e)}getEarlyAccessFeatures(t,i,e){return void 0===i&&(i=!1),this.featureFlags.getEarlyAccessFeatures(t,i,e)}on(t,i){return this.Hr.on(t,i)}onFeatureFlags(t){return this.featureFlags.onFeatureFlags(t)}onSurveysLoaded(t){return this.surveys.onSurveysLoaded(t)}onSessionId(t){var i,e;return null!==(i=null==(e=this.sessionManager)?void 0:e.onSessionId(t))&&void 0!==i?i:()=>{}}getSurveys(t,i){void 0===i&&(i=!1),this.surveys.getSurveys(t,i)}getActiveMatchingSurveys(t,i){void 0===i&&(i=!1),this.surveys.getActiveMatchingSurveys(t,i)}renderSurvey(t,i){this.surveys.renderSurvey(t,i)}displaySurvey(t,i){void 0===i&&(i=Qn),this.surveys.displaySurvey(t,i)}cancelPendingSurvey(t){this.surveys.cancelPendingSurvey(t)}canRenderSurvey(t){return this.surveys.canRenderSurvey(t)}canRenderSurveyAsync(t,i){return void 0===i&&(i=!1),this.surveys.canRenderSurveyAsync(t,i)}identify(t,i,e){if(!this.__loaded||!this.persistence)return Ei.uninitializedWarning(\"posthog.identify\");if(L(t)&&(t=t.toString(),Ei.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()))Ei.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!==_e){if(this.cs(\"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(Hi)&&(this.unregister(Hi),this.register({distinct_id:t}));var n=\"anonymous\"===(this.persistence.get_property(ue)||\"anonymous\");t!==r&&n?(this.persistence.set_property(ue,\"identified\"),this.setPersonPropertiesForFlags(g({},e||{},i||{}),!1),this.capture(\"$identify\",{distinct_id:t,$anon_distinct_id:r},{$set:i||{},$set_once:e||{}}),this.Gr=cn(t,i,e),this.featureFlags.setAnonymousDistinctId(r)):(i||e)&&this.setPersonProperties(i,e),t!==r&&(this.reloadFeatureFlags(),this.unregister(le))}}else Ei.critical('The string \"'+_e+'\" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else Ei.error(\"Unique user id has not been set in posthog.identify\")}setPersonProperties(t,i){if((t||i)&&this.cs(\"posthog.setPersonProperties\")){var e=cn(this.get_distinct_id(),t,i);this.Gr!==e?(this.setPersonPropertiesForFlags(g({},i||{},t||{})),this.capture(\"$set\",{$set:t||{},$set_once:i||{}}),this.Gr=e):Ei.info(\"A duplicate setPersonProperties call was made with the same properties. It has been ignored.\")}}group(t,i,e){if(t&&i){var r=this.getGroups();r[t]!==i&&this.resetGroupPropertiesForFlags(t),this.register({$groups:g({},r,{[t]:i})}),e&&(this.capture(\"$groupidentify\",{$group_type:t,$group_key:i,$group_set:e}),this.setGroupPropertiesForFlags({[t]:e})),r[t]===i||e||this.reloadFeatureFlags()}else Ei.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.cs(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(t,i)}resetGroupPropertiesForFlags(t){this.featureFlags.resetGroupPropertiesForFlags(t)}reset(t){var i,e,r,s;if(Ei.info(\"reset\"),!this.__loaded)return Ei.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(ue,\"anonymous\"),null==(s=this.sessionManager)||s.resetSessionId(),this.Gr=null,\"always\"===this.config.cookieless_mode)this.register_once({distinct_id:_e,$device_id:null},\"\");else{var o=this.config.get_device_id(wr());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(zi)?(Ei.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this.cs(\"posthog.alias\")?(M(i)&&(i=this.get_distinct_id()),t!==i?(this.fs(Hi,t),this.capture(\"$create_alias\",{alias:t,distinct_id:i})):(Ei.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(t),-1)):void 0}set_config(t){var i=g({},this.config);if(R(t)){var e,r,s,n,o,a,l;Ci(this.config,zo(t));var u=this.Yr();null==(e=this.persistence)||e.update_config(this.config,i,u),this.sessionPersistence=\"sessionStorage\"===this.config.persistence||\"memory\"===this.config.persistence?this.persistence:new Fn(g({},this.config,{persistence:\"sessionStorage\"}),u);var h=this.Vr(this.config.debug);N(h)&&(this.config.debug=h),N(this.config.debug)&&(this.config.debug?(c.DEBUG=!0,Tr.H()&&Tr.G(\"ph_debug\",\"true\"),Ei.info(\"set_config\",{config:t,oldConfig:i,newConfig:g({},this.config)})):(c.DEBUG=!1,Tr.H()&&Tr.V(\"ph_debug\"))),null==(r=this.exceptionObserver)||r.onConfigChange(),null==(s=this.sessionRecording)||s.startIfEnabledOrStop(),null==(n=this.autocapture)||n.startIfEnabled(),null==(o=this.heatmaps)||o.startIfEnabled(),null==(a=this.exceptionObserver)||a.startIfEnabledOrStop(),this.surveys.loadIfEnabled(),this.ps(),null==(l=this.externalIntegrations)||l.startIfEnabledOrStop()}}startSessionRecording(t){var i=!0===t,e={sampling:i||!(null==t||!t.sampling),linked_flag:i||!(null==t||!t.linked_flag),url_trigger:i||!(null==t||!t.url_trigger),event_trigger:i||!(null==t||!t.event_trigger)};if(Object.values(e).some(Boolean)){var r,s,n,o,a;if(null==(r=this.sessionManager)||r.checkAndGetSessionAndWindowId(),e.sampling)null==(s=this.sessionRecording)||s.overrideSampling();if(e.linked_flag)null==(n=this.sessionRecording)||n.overrideLinkedFlag();if(e.url_trigger)null==(o=this.sessionRecording)||o.overrideTrigger(\"url\");if(e.event_trigger)null==(a=this.sessionRecording)||a.overrideTrigger(\"event\")}this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var t;return!(null==(t=this.sessionRecording)||!t.started)}captureException(t,i){var e=new Error(\"PostHog syntheticException\"),r=this.exceptions.buildProperties(t,{handled:!0,syntheticException:e});return this.exceptions.sendExceptionEvent(g({},r,i))}startExceptionAutocapture(t){this.set_config({capture_exceptions:null==t||t})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(t){return this.toolbar.loadToolbar(t)}get_property(t){var i;return null==(i=this.persistence)?void 0:i.props[t]}getSessionProperty(t){var i;return null==(i=this.sessionPersistence)?void 0:i.props[t]}toString(){var t,i=null!==(t=this.config.name)&&void 0!==t?t:Lo;return i!==Lo&&(i=Lo+\".\"+i),i}_isIdentified(){var t,i;return\"identified\"===(null==(t=this.persistence)?void 0:t.get_property(ue))||\"identified\"===(null==(i=this.sessionPersistence)?void 0:i.get_property(ue))}vs(){var t,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&F(this.getGroups())&&(null==(t=this.persistence)||null==(t=t.props)||!t[Hi])&&(null==(i=this.persistence)||null==(i=i.props)||!i[pe]))}us(){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.vs()||this.cs(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}cs(t){return\"never\"===this.config.person_profiles?(Ei.error(t+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this.fs(pe,!0),!0)}Yr(){if(\"always\"===this.config.cookieless_mode)return!0;var t=this.consent.isOptedOut(),i=this.config.opt_out_persistence_by_default||\"on_reject\"===this.config.cookieless_mode;return this.config.disable_persistence||t&&!!i}ps(){var t,i,e,r,s=this.Yr();(null==(t=this.persistence)?void 0:t.Si)!==s&&(null==(e=this.persistence)||e.set_disabled(s));(null==(i=this.sessionPersistence)?void 0:i.Si)!==s&&(null==(r=this.sessionPersistence)||r.set_disabled(s));return s}opt_in_capturing(t){var i;if(\"always\"!==this.config.cookieless_mode){var e,r,s;if(\"on_reject\"===this.config.cookieless_mode&&this.consent.isExplicitlyOptedOut())this.reset(!0),null==(e=this.sessionManager)||e.destroy(),null==(r=this.pageViewManager)||r.destroy(),this.sessionManager=new bo(this),this.pageViewManager=new Es(this),this.persistence&&(this.sessionPropsManager=new mo(this,this.sessionManager,this.persistence)),this.sessionRecording=new Ao(this),this.sessionRecording.startIfEnabledOrStop();if(this.consent.optInOut(!0),this.ps(),this.os(),null==(i=this.sessionRecording)||i.startIfEnabledOrStop(),\"on_reject\"==this.config.cookieless_mode&&this.surveys.loadIfEnabled(),M(null==t?void 0:t.captureEventName)||null!=t&&t.captureEventName)this.capture(null!==(s=null==t?void 0:t.captureEventName)&&void 0!==s?s:\"$opt_in\",null==t?void 0:t.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this.ls()}else Ei.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}opt_out_capturing(){var t,i,e;\"always\"!==this.config.cookieless_mode?(\"on_reject\"===this.config.cookieless_mode&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this.ps(),\"on_reject\"===this.config.cookieless_mode&&(this.register({distinct_id:_e,$device_id:null}),null==(t=this.sessionManager)||t.destroy(),null==(i=this.pageViewManager)||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,null==(e=this.sessionRecording)||e.stopRecording(),this.sessionRecording=void 0,this.ls())):Ei.warn('Consent opt in/out is not valid with cookieless_mode=\"always\" and will be ignored')}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var t=this.consent.consent;return t===Or.GRANTED?\"granted\":t===Or.DENIED?\"denied\":\"pending\"}is_capturing(){return\"always\"===this.config.cookieless_mode||(\"on_reject\"===this.config.cookieless_mode?this.consent.isExplicitlyOptedOut()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.ps()}_is_bot(){return n?$o(n,this.config.custom_blocked_useragents):void 0}ls(){o&&(\"visible\"===o.visibilityState?this.Br||(this.Br=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}),this.qr&&(o.removeEventListener(\"visibilitychange\",this.qr),this.qr=null)):this.qr||(this.qr=this.ls.bind(this),Ui(o,\"visibilitychange\",this.qr)))}debug(i){!1===i?(null==t||t.console.log(\"You've disabled debug mode.\"),this.set_config({debug:!1})):(null==t||t.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"),this.set_config({debug:!0}))}O(){var t,i,e,r,s,n,o,a=this.Jr||{};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?(Ei.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=Ei,n=(i=\"advanced_disable_flags\")in(t=a)&&!M(t[i]),o=e in t&&!M(t[e]),n?t[i]:o?(s&&s.warn(\"Config field '\"+e+\"' is deprecated. Please use '\"+i+\"' instead. The old field will be removed in a future major version.\"),t[e]):r)}ds(t){if(j(this.config.before_send))return t;var i=I(this.config.before_send)?this.config.before_send:[this.config.before_send],e=t;for(var r of i){if(e=r(e),j(e)){var s=\"Event '\"+t.event+\"' was rejected in beforeSend function\";return z(t.event)?Ei.warn(s+\". This can cause unexpected behavior.\"):Ei.info(s),null}e.properties&&!F(e.properties)||Ei.warn(\"Event '\"+t.event+\"' has no properties after beforeSend function, this is likely an error.\")}return e}getPageViewId(){var t;return null==(t=this.pageViewManager.Kt)?void 0:t.pageViewId}captureTraceFeedback(t,i){this.capture(\"$ai_feedback\",{$ai_trace_id:String(t),$ai_feedback_text:i})}captureTraceMetric(t,i,e){this.capture(\"$ai_metric\",{$ai_trace_id:String(t),$ai_metric_name:i,$ai_metric_value:String(e)})}Vr(t){var i=N(t)&&!t,e=Tr.H()&&\"true\"===Tr.q(\"ph_debug\");return!i&&(!!e||t)}}!function(t,i){for(var e=0;e<i.length;e++)t.prototype[i[e]]=Oi(t.prototype[i[e]])}(Bo,[\"identify\"]);var qo,Wo={backgroundColor:\"#ffffff\",textColor:\"#1d1f27\",buttonColor:\"#1d1f27\",borderRadius:8,buttonBorderRadius:6,borderColor:\"#e5e7eb\",fontFamily:\"system-ui\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",showOverlay:!0,whiteLabel:!1},Go=(qo=Do[Lo]=new Bo,function(){function i(){i.done||(i.done=!0,No=!1,Ii(Do,(function(t){t._dom_loaded()})))}null!=o&&o.addEventListener?\"complete\"===o.readyState?i():Ui(o,\"DOMContentLoaded\",i,{capture:!1}):t&&Ei.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")}(),qo);export{ir as COPY_AUTOCAPTURE_EVENT,er as Compression,Wo as DEFAULT_PRODUCT_TOUR_APPEARANCE,Gn as DisplaySurveyType,Bo as PostHog,qn as SurveyEventName,Wn as SurveyEventProperties,Dn as SurveyEventType,Ln as SurveyPosition,Hn as SurveyQuestionBranchingType,zn as SurveyQuestionType,Bn as SurveySchedule,Nn as SurveyTabPosition,Un as SurveyType,jn as SurveyWidgetType,Go as default,Go as posthog,rr as severityLevels};\n//# sourceMappingURL=module.js.map\n","import posthogJs from 'posthog-js';\nimport React, { createContext, useRef, useMemo, useEffect, useContext, useState, useCallback, Children } from 'react';\n\nvar PostHogContext = createContext({\n client: posthogJs,\n bootstrap: undefined,\n});\n\nfunction isDeepEqual(obj1, obj2, visited) {\n if (visited === void 0) { visited = new WeakMap(); }\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n if (visited.has(obj1) && visited.get(obj1) === obj2) {\n return true;\n }\n visited.set(obj1, obj2);\n var keys1 = Object.keys(obj1);\n var keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {\n var key = keys1_1[_i];\n if (!keys2.includes(key)) {\n return false;\n }\n if (!isDeepEqual(obj1[key], obj2[key], visited)) {\n return false;\n }\n }\n return true;\n}\n\nfunction PostHogProvider(_a) {\n var _b, _c;\n var children = _a.children, client = _a.client, apiKey = _a.apiKey, options = _a.options;\n var previousInitializationRef = useRef(null);\n var posthog = useMemo(function () {\n if (client) {\n if (apiKey) {\n console.warn('[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`.');\n }\n if (options) {\n console.warn('[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`.');\n }\n return client;\n }\n if (apiKey) {\n return posthogJs;\n }\n console.warn('[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior.');\n return posthogJs;\n }, [client, apiKey, JSON.stringify(options)]);\n useEffect(function () {\n if (client) {\n return;\n }\n var previousInitialization = previousInitializationRef.current;\n if (!previousInitialization) {\n if (posthogJs.__loaded) {\n console.warn('[PostHog.js] `posthog` was already loaded elsewhere. This may cause issues.');\n }\n posthogJs.init(apiKey, options);\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n else {\n if (apiKey !== previousInitialization.apiKey) {\n console.warn(\"[PostHog.js] You have provided a different `apiKey` to `PostHogProvider` than the one that was already initialized. This is not supported by our provider and we'll keep using the previous key. If you need to toggle between API Keys you need to control the `client` yourself and pass it in as a prop rather than an `apiKey` prop.\");\n }\n if (options && !isDeepEqual(options, previousInitialization.options)) {\n posthogJs.set_config(options);\n }\n previousInitializationRef.current = {\n apiKey: apiKey,\n options: options !== null && options !== void 0 ? options : {},\n };\n }\n }, [client, apiKey, JSON.stringify(options)]);\n return (React.createElement(PostHogContext.Provider, { value: { client: posthog, bootstrap: (_b = options === null || options === void 0 ? void 0 : options.bootstrap) !== null && _b !== void 0 ? _b : (_c = client === null || client === void 0 ? void 0 : client.config) === null || _c === void 0 ? void 0 : _c.bootstrap } }, children));\n}\n\nvar isFunction = function (f) {\n return typeof f === 'function';\n};\nvar isUndefined = function (x) {\n return x === void 0;\n};\nvar isNull = function (x) {\n return x === null;\n};\n\nfunction useFeatureFlagEnabled(flag) {\n var _a, _b;\n var _c = useContext(PostHogContext), client = _c.client, bootstrap = _c.bootstrap;\n var _d = useState(function () { return client.isFeatureEnabled(flag); }), featureEnabled = _d[0], setFeatureEnabled = _d[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureEnabled(client.isFeatureEnabled(flag));\n });\n }, [client, flag]);\n var bootstrapped = (_a = bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags) === null || _a === void 0 ? void 0 : _a[flag];\n if (!((_b = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _b === void 0 ? void 0 : _b.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return isUndefined(bootstrapped) ? undefined : !!bootstrapped;\n }\n return featureEnabled;\n}\n\nfunction useFeatureFlagPayload(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.getFeatureFlagPayload(flag); }), featureFlagPayload = _c[0], setFeatureFlagPayload = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagPayload(client.getFeatureFlagPayload(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlagPayloads)) {\n return bootstrap.featureFlagPayloads[flag];\n }\n return featureFlagPayload;\n}\n\nfunction useActiveFeatureFlags() {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () { return client.featureFlags.getFlags(); }), featureFlags = _c[0], setFeatureFlags = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function (flags) {\n setFeatureFlags(flags);\n });\n }, [client]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return Object.keys(bootstrap.featureFlags);\n }\n return featureFlags;\n}\n\nfunction useFeatureFlagVariantKey(flag) {\n var _a;\n var _b = useContext(PostHogContext), client = _b.client, bootstrap = _b.bootstrap;\n var _c = useState(function () {\n return client.getFeatureFlag(flag);\n }), featureFlagVariantKey = _c[0], setFeatureFlagVariantKey = _c[1];\n useEffect(function () {\n return client.onFeatureFlags(function () {\n setFeatureFlagVariantKey(client.getFeatureFlag(flag));\n });\n }, [client, flag]);\n if (!((_a = client === null || client === void 0 ? void 0 : client.featureFlags) === null || _a === void 0 ? void 0 : _a.hasLoadedFlags) && (bootstrap === null || bootstrap === void 0 ? void 0 : bootstrap.featureFlags)) {\n return bootstrap.featureFlags[flag];\n }\n return featureFlagVariantKey;\n}\n\nvar usePostHog = function () {\n var client = useContext(PostHogContext).client;\n return client;\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction VisibilityAndClickTracker(_a) {\n var children = _a.children, onIntersect = _a.onIntersect, onClick = _a.onClick, trackView = _a.trackView, options = _a.options, props = __rest(_a, [\"children\", \"onIntersect\", \"onClick\", \"trackView\", \"options\"]);\n var ref = useRef(null);\n var observerOptions = useMemo(function () { return (__assign({ threshold: 0.1 }, options)); }, [options === null || options === void 0 ? void 0 : options.threshold, options === null || options === void 0 ? void 0 : options.root, options === null || options === void 0 ? void 0 : options.rootMargin]);\n useEffect(function () {\n if (isNull(ref.current) || !trackView)\n return;\n var observer = new IntersectionObserver(function (_a) {\n var entry = _a[0];\n return onIntersect(entry);\n }, observerOptions);\n observer.observe(ref.current);\n return function () { return observer.disconnect(); };\n }, [observerOptions, trackView, onIntersect]);\n return (React.createElement(\"div\", __assign({ ref: ref }, props, { onClick: onClick }), children));\n}\n\nfunction VisibilityAndClickTrackers(_a) {\n var children = _a.children, trackInteraction = _a.trackInteraction, trackView = _a.trackView, options = _a.options, onInteract = _a.onInteract, onView = _a.onView, props = __rest(_a, [\"children\", \"trackInteraction\", \"trackView\", \"options\", \"onInteract\", \"onView\"]);\n var clickTrackedRef = useRef(false);\n var visibilityTrackedRef = useRef(false);\n var cachedOnClick = useCallback(function () {\n if (!clickTrackedRef.current && trackInteraction && onInteract) {\n onInteract();\n clickTrackedRef.current = true;\n }\n }, [trackInteraction, onInteract]);\n var onIntersect = function (entry) {\n if (!visibilityTrackedRef.current && entry.isIntersecting && onView) {\n onView();\n visibilityTrackedRef.current = true;\n }\n };\n var trackedChildren = Children.map(children, function (child) {\n return (React.createElement(VisibilityAndClickTracker, __assign({ onClick: cachedOnClick, onIntersect: onIntersect, trackView: trackView, options: options }, props), child));\n });\n return React.createElement(React.Fragment, null, trackedChildren);\n}\n\nfunction PostHogFeature(_a) {\n var flag = _a.flag, match = _a.match, children = _a.children, fallback = _a.fallback, visibilityObserverOptions = _a.visibilityObserverOptions, trackInteraction = _a.trackInteraction, trackView = _a.trackView, props = __rest(_a, [\"flag\", \"match\", \"children\", \"fallback\", \"visibilityObserverOptions\", \"trackInteraction\", \"trackView\"]);\n var payload = useFeatureFlagPayload(flag);\n var variant = useFeatureFlagVariantKey(flag);\n var posthog = usePostHog();\n var shouldTrackInteraction = trackInteraction !== null && trackInteraction !== void 0 ? trackInteraction : true;\n var shouldTrackView = trackView !== null && trackView !== void 0 ? trackView : true;\n if (isUndefined(match) || variant === match) {\n var childNode = isFunction(children) ? children(payload) : children;\n return (React.createElement(VisibilityAndClickTrackers, __assign({ flag: flag, options: visibilityObserverOptions, trackInteraction: shouldTrackInteraction, trackView: shouldTrackView, onInteract: function () { return captureFeatureInteraction({ flag: flag, posthog: posthog, flagVariant: variant }); }, onView: function () { return captureFeatureView({ flag: flag, posthog: posthog, flagVariant: variant }); } }, props), childNode));\n }\n return React.createElement(React.Fragment, null, fallback);\n}\nfunction captureFeatureInteraction(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_interaction/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_interaction', properties);\n}\nfunction captureFeatureView(_a) {\n var _b;\n var flag = _a.flag, posthog = _a.posthog, flagVariant = _a.flagVariant;\n var properties = {\n feature_flag: flag,\n $set: (_b = {}, _b[\"$feature_view/\".concat(flag)] = flagVariant !== null && flagVariant !== void 0 ? flagVariant : true, _b),\n };\n if (typeof flagVariant === 'string') {\n properties.feature_flag_variant = flagVariant;\n }\n posthog.capture('$feature_view', properties);\n}\n\nfunction TrackedChild(_a) {\n var child = _a.child, index = _a.index, name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions;\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name, child_index: index }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, index, properties]);\n return (React.createElement(VisibilityAndClickTracker, { onIntersect: onIntersect, trackView: true, options: observerOptions }, child));\n}\nfunction PostHogCaptureOnViewed(_a) {\n var name = _a.name, properties = _a.properties, observerOptions = _a.observerOptions, trackAllChildren = _a.trackAllChildren, children = _a.children, props = __rest(_a, [\"name\", \"properties\", \"observerOptions\", \"trackAllChildren\", \"children\"]);\n var trackedRef = useRef(false);\n var posthog = usePostHog();\n var onIntersect = useCallback(function (entry) {\n if (entry.isIntersecting && !trackedRef.current) {\n posthog.capture('$element_viewed', __assign({ element_name: name }, properties));\n trackedRef.current = true;\n }\n }, [posthog, name, properties]);\n if (trackAllChildren) {\n var trackedChildren = Children.map(children, function (child, index) {\n return (React.createElement(TrackedChild, { key: index, child: child, index: index, name: name, properties: properties, observerOptions: observerOptions }));\n });\n return React.createElement(\"div\", __assign({}, props), trackedChildren);\n }\n return (React.createElement(VisibilityAndClickTracker, __assign({ onIntersect: onIntersect, trackView: true, options: observerOptions }, props), children));\n}\n\nvar INITIAL_STATE = {\n componentStack: null,\n exceptionEvent: null,\n error: null,\n};\nvar __POSTHOG_ERROR_MESSAGES = {\n INVALID_FALLBACK: '[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element.',\n};\nvar PostHogErrorBoundary = (function (_super) {\n __extends(PostHogErrorBoundary, _super);\n function PostHogErrorBoundary(props) {\n var _this = _super.call(this, props) || this;\n _this.state = INITIAL_STATE;\n return _this;\n }\n PostHogErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {\n var additionalProperties = this.props.additionalProperties;\n var currentProperties;\n if (isFunction(additionalProperties)) {\n currentProperties = additionalProperties(error);\n }\n else if (typeof additionalProperties === 'object') {\n currentProperties = additionalProperties;\n }\n var client = this.context.client;\n var exceptionEvent = client.captureException(error, currentProperties);\n var componentStack = errorInfo.componentStack;\n this.setState({\n error: error,\n componentStack: componentStack !== null && componentStack !== void 0 ? componentStack : null,\n exceptionEvent: exceptionEvent,\n });\n };\n PostHogErrorBoundary.prototype.render = function () {\n var _a = this.props, children = _a.children, fallback = _a.fallback;\n var state = this.state;\n if (state.componentStack == null) {\n return isFunction(children) ? children() : children;\n }\n var element = isFunction(fallback)\n ? React.createElement(fallback, {\n error: state.error,\n componentStack: state.componentStack,\n exceptionEvent: state.exceptionEvent,\n })\n : fallback;\n if (React.isValidElement(element)) {\n return element;\n }\n console.warn(__POSTHOG_ERROR_MESSAGES.INVALID_FALLBACK);\n return React.createElement(React.Fragment, null);\n };\n PostHogErrorBoundary.contextType = PostHogContext;\n return PostHogErrorBoundary;\n}(React.Component));\n\nvar setupReactErrorHandler = function (client, callback) {\n return function (error, errorInfo) {\n var event = client.captureException(error);\n if (callback) {\n callback(event, error, errorInfo);\n }\n };\n};\n\nexport { PostHogCaptureOnViewed, PostHogContext, PostHogErrorBoundary, PostHogFeature, PostHogProvider, captureFeatureInteraction, captureFeatureView, setupReactErrorHandler, useActiveFeatureFlags, useFeatureFlagEnabled, useFeatureFlagPayload, useFeatureFlagVariantKey, usePostHog };\n//# sourceMappingURL=index.js.map\n","/**\n * Package version constant.\n * Imports version directly from package.json\n * \n * @example\n * ```typescript\n * import { getPackageVersion } from './utils/version';\n * console.log(getPackageVersion()); // \"0.14.11\"\n * ```\n */\n\nimport packageJson from '../../package.json';\n\n/**\n * Get the package version from package.json\n * @returns The package version from package.json\n */\nexport function getPackageVersion(): string {\n return packageJson.version;\n}\n\n/**\n * Get the package name\n * @returns The package name from package.json\n */\nexport function getPackageName(): string {\n return packageJson.name;\n}\n","/**\n * Analytics utility for tracking Twick package usage.\n * Provides a safe wrapper around PostHog that respects opt-out preferences.\n * \n * @example\n * ```typescript\n * // Disable analytics via environment variable\n * // VITE_TWICK_ANALYTICS_ENABLED=false\n * \n * // Or via config\n * <TimelineProvider analytics={{ enabled: false }} />\n * ```\n */\n\nimport { PostHog } from \"posthog-js\";\nimport { getPackageVersion, getPackageName } from \"./version\";\n\n/**\n * Configuration for analytics tracking\n */\nexport interface AnalyticsConfig {\n /** Whether analytics is enabled */\n enabled?: boolean;\n /** PostHog API key (optional, can use environment variable) */\n apiKey?: string;\n /** PostHog API host */\n apiHost?: string;\n /** Disable session recording */\n disableSessionRecording?: boolean;\n}\n\n/**\n * Check if analytics should be enabled\n */\nexport function isAnalyticsEnabled(config?: AnalyticsConfig): boolean {\n // Check environment variable first\n if (typeof window !== \"undefined\") {\n const envDisabled = \n (window as any).__TWICK_ANALYTICS_DISABLED__ === true ||\n (import.meta as any).env?.VITE_TWICK_ANALYTICS_ENABLED === \"false\" ||\n (typeof process !== \"undefined\" && (process as any).env?.TWICK_ANALYTICS_ENABLED === \"false\");\n \n if (envDisabled) return false;\n }\n\n // Check config prop\n if (config?.enabled === false) return false;\n \n // return true by default\n return true;\n}\n\n/**\n * Get PostHog API key from config or environment\n */\nexport function getPostHogApiKey(config?: AnalyticsConfig): string | undefined {\n // Priority: config prop > environment variable > default\n return (\n config?.apiKey ||\n (typeof window !== \"undefined\" && (import.meta as any).env?.VITE_POSTHOG_API_KEY) ||\n (typeof process !== \"undefined\" && (process as any).env?.POSTHOG_API_KEY) ||\n \"phc_v92Ybiir6eGbEOXmI60g7n0MhUZ1zSknfaf9a3wpAU0\" // Default key\n );\n}\n\n/**\n * Get PostHog API host\n */\nexport function getPostHogApiHost(config?: AnalyticsConfig): string {\n return config?.apiHost || \"https://us.i.posthog.com\";\n}\n\n/**\n * Safely capture an event if analytics is enabled\n */\nexport function trackEvent(\n posthog: PostHog,\n eventName: string,\n properties?: Record<string, any>,\n config?: AnalyticsConfig\n): void {\n if (!isAnalyticsEnabled(config)) {\n return;\n }\n\n try {\n // Get package version and name dynamically from package.json\n const packageVersion = getPackageVersion();\n const packageName = getPackageName();\n\n posthog.capture(eventName, {\n ...properties,\n packageName,\n packageVersion,\n timestamp: new Date().toISOString(),\n });\n } catch (error) {\n // Silently fail to avoid breaking user's application\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.warn(\"[Twick Analytics] Failed to track event:\", error);\n }\n }\n}\n\n/**\n * Get PostHog options based on config\n */\nexport function getPostHogOptions(config?: AnalyticsConfig, onLoaded?: (posthog: PostHog) => void) {\n return {\n api_host: getPostHogApiHost(config),\n disable_session_recording: config?.disableSessionRecording ?? true,\n loaded: onLoaded,\n };\n}\n","import {\n createContext,\n useContext,\n useState,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { TIMELINE_ACTION } from \"../utils/constants\";\nimport { UndoRedoProvider, useUndoRedo } from \"./undo-redo-context\";\nimport { Track } from \"../core/track/track\";\nimport { TrackElement } from \"../core/elements/base.element\";\nimport { ProjectJSON, Size, TrackJSON } from \"../types\";\nimport { TimelineEditor } from \"../core/editor/timeline.editor\";\nimport { editorRegistry } from \"../utils/register-editor\";\nimport { PostHogProvider } from \"posthog-js/react\";\nimport {\n AnalyticsConfig,\n isAnalyticsEnabled,\n getPostHogApiKey,\n getPostHogOptions,\n trackEvent,\n} from \"../utils/analytics\";\nimport { PostHog } 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","_","m","y","b","w","x","E","S","k","P","T","I","C","R","F","M","O","A","D","L","N","U","z","H","B","q","W","G","V","J","posthogJs","_i"],"mappings":"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","x_google_ignoreList":[29,30]}
|