@evercam/ui 0.0.63 → 0.0.65

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/components/EBadge.vue?vue&type=script&lang.ts","../src/components/EAvatar.vue?vue&type=script&lang.ts","../node_modules/picocolors/picocolors.browser.js","../node_modules/tailwindcss/lib/util/log.js","../node_modules/tailwindcss/lib/public/colors.js","../node_modules/tailwindcss/colors.js","../tailwind.config.js","../node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/tailwindcss/lib/corePluginList.js","../node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/tailwindcss/lib/util/defaults.js","../node_modules/tailwindcss/lib/util/toPath.js","../node_modules/tailwindcss/lib/featureFlags.js","../node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/tailwindcss/lib/util/colorNames.js","../node_modules/tailwindcss/lib/util/color.js","../node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/tailwindcss/lib/util/validateFormalSyntax.js","../node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/tailwindcss/stubs/config.full.js","../node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/tailwindcss/resolveConfig.js","../src/constants.ts","../src/components/EIcon.vue?vue&type=script&lang.ts","../src/components/ESpinner.vue?vue&type=script&lang.ts","../src/components/ERow.vue?vue&type=script&lang.ts","../src/components/ECol.vue?vue&type=script&lang.ts","../src/utils.ts","../src/components/EZoomable.vue?vue&type=script&lang.ts","../src/components/EVideoPlayer.vue?vue&type=script&lang.ts","../src/components/ETimeline.config.ts","../src/directives/resize-observer.ts","../src/directives/index.ts","../src/components/ETimelineMilestone.vue?vue&type=script&lang.ts","../src/components/ETimeline.vue?vue&type=script&lang.ts","../src/components/EVideoEmbed.vue?vue&type=script&lang.ts","../src/components/EHeatmapBar.vue?vue&type=script&lang.ts","../src/components/EHoursHeatmap.vue?vue&type=script&lang.ts","../src/components/EReadMore.vue?vue&type=script&lang.ts","../src/components/ETruncatedDiv.vue?vue&type=script&lang.ts","../src/components/ECompareSeparator.vue?vue&type=script&lang.ts","../src/mixins/timeouts.ts","../src/mixins/event-listeners.ts","../src/components/EExpandableMenu.vue?vue&type=script&lang.ts","../src/components/svgIcons/BaseIcon.vue?vue&type=script&lang.ts","../src/components/svgIcons/Bim.vue?vue&type=script&lang.ts","../src/components/svgIcons/Blur.vue?vue&type=script&lang.ts","../src/components/svgIcons/Compare.vue?vue&type=script&lang.ts","../src/components/svgIcons/ConcretePump.vue?vue&type=script&lang.ts","../src/components/svgIcons/DroneView.vue?vue&type=script&lang.ts","../src/components/svgIcons/Dumper.vue?vue&type=script&lang.ts","../src/components/svgIcons/Evercam.vue?vue&type=script&lang.ts","../src/components/svgIcons/EvercamLogo.vue?vue&type=script&lang.ts","../src/components/svgIcons/Excavator.vue?vue&type=script&lang.ts","../src/components/svgIcons/FlatbedSemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/FreeDrawing.vue?vue&type=script&lang.ts","../src/components/svgIcons/IModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/Inspection.vue?vue&type=script&lang.ts","../src/components/svgIcons/Loader.vue?vue&type=script&lang.ts","../src/components/svgIcons/MiniModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/OtherTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/RoadVehicle.vue?vue&type=script&lang.ts","../src/components/svgIcons/Roller.vue?vue&type=script&lang.ts","../src/components/svgIcons/SemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/SkidSteerLoader.vue?vue&type=script&lang.ts","../src/components/svgIcons/SmallTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TankTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/The360.vue?vue&type=script&lang.ts","../src/components/svgIcons/TippingTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckHead.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckMixer.vue?vue&type=script&lang.ts","../src/components/svgIcons/Worker.vue?vue&type=script&lang.ts","../src/components/svgIcons/ZohoCrm.vue?vue&type=script&lang.ts","../src/components/svgIcons/index.ts","../src/components/ESvgIcon.vue?vue&type=script&lang.ts","../src/components/EToggleSwitch.vue?vue&type=script&lang.ts","../src/mixins/inactivity-listener.ts","../src/components/EGlobalSearch.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import {\n BadgeSizes,\n AvatarSizes,\n IconSizes,\n BadgeColors,\n ToggleSwitchSizes,\n} from \"@/constants\"\n\nexport enum Size {\n dot = \"dot\",\n xs = \"xs\",\n sm = \"sm\",\n md = \"base\",\n base = \"base\",\n lg = \"lg\",\n xl = \"xl\",\n \"2xl\" = \"2xl\",\n \"3xl\" = \"3xl\",\n \"4xl\" = \"4xl\",\n \"5xl\" = \"5xl\",\n \"6xl\" = \"6xl\",\n \"7xl\" = \"7xl\",\n \"8xl\" = \"8xl\",\n \"9xl\" = \"9xl\",\n}\n\nexport enum BaseColor {\n warning = \"warning\",\n error = \"error\",\n info = \"info\",\n success = \"success\",\n primary = \"primary\",\n brand = \"brand\",\n default = \"default\",\n}\n\n/**\n * {@link Size}\n * */\nexport type TBadgeSize = (typeof BadgeSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TAvatarSize = (typeof AvatarSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TIconSize = (typeof IconSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TToggleSwitchSize = (typeof ToggleSwitchSizes)[number]\n\n/**\n * {@link BaseColor}\n * */\nexport type TBadgeColor = (typeof BadgeColors)[number]\n\nexport type TailwindColorClass = string\n\nexport type FlexJustifyContent =\n | \"around\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignItems = \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n\nexport type FlexAlignContent =\n | \"around\"\n | \"baseline\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignSelf =\n | \"auto\"\n | \"baseline\"\n | \"center\"\n | \"end\"\n | \"start\"\n | \"stretch\"\n\nexport enum TimelineAxis {\n overview = \"overview\",\n detailed = \"detailed\",\n detailedBackground = \"detailedBackground\",\n}\n\nexport type TimelineTicksConfig = {\n precision: number\n interval: any\n format: string | ((d: Date) => string)\n}\n\n/**\n * {@link TimelineAxis}\n * {@link TimelineTicksConfig}\n * */\nexport type TimelineAxesConfig = {\n [key in TimelineAxis]: TimelineTicksConfig[]\n}\n\nexport type Timestamp = Date | string | number\n\nexport type TimelineBarEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n [key: string]: any\n}\n\nexport type TimelineRangeEvent = {\n startDate: string | Date\n endDate: string | Date\n text?: string\n [key: string]: any\n}\n\nexport type TimelineCountEvent = {\n timestamp: string | Date\n count: number\n className?: string\n [key: string]: any\n}\n\nexport type TimelineMilestoneEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n milestoneType: string\n size?: number\n [key: string]: any\n}\n\n/**\n * {@link TimelineBarEvent}\n * {@link TimelineRangeEvent}\n * {@link TimelineCountEvent}\n * {@link TimelineMilestoneEvent}\n */\nexport type TimelineEvent =\n | TimelineBarEvent\n | TimelineRangeEvent\n | TimelineCountEvent\n | TimelineMilestoneEvent\n\nexport enum TimelineChartType {\n bars = \"bars\",\n dots = \"dots\",\n lineGraph = \"lineGraph\",\n barChart = \"barGraph\",\n milestones = \"milestones\",\n}\n\n/**\n * {@link TimelineEvent}\n * {@link TimelineChartType}\n * */\nexport type TimelineEventsGroup = {\n events: Array<TimelineEvent>\n label: string\n color: string\n bgColor?: string\n isLoading?: Boolean\n isHidden?: Boolean\n chartType?: TimelineChartType\n dots?: boolean\n milestonesTransitionDuration?: number\n milestonesLineHeight?: number\n milestonesDotSize?: number\n height?: number\n dotsSize?: number\n bottom?: boolean\n barBorderRadius?: number\n}\n\n/**\n * {@link TimelineEventsGroup}\n * */\nexport type TimelineEventsByType = {\n [eventsType: string]: TimelineEventsGroup\n}\n\nexport type TimelinePrecision = \"hour\" | \"day\" | \"week\" | \"month\" | \"year\"\n\nexport enum TimelineIntervalChangeTrigger {\n zoom = \"zoom\",\n autoPan = \"autoPan\",\n initial = \"initial\",\n}\n\nexport type TimelineMarker = {\n timestamp: string | Date\n label: string\n color: string\n id: string | number\n textColor?: string\n className?: string\n isDraggable?: boolean\n minDate?: string\n maxDate?: string\n [key: string]: any\n}\n\nexport type TimelineInterval = {\n startDate: Date | string | number\n endDate: Date | string | number\n}\n\nexport type HeatmapBarItem = {\n name: string\n count: number\n value: string | number\n}\n\nexport type HoursHeatmapChartItem = {\n count: number\n timestamp: Timestamp\n}\nexport type GlobalSearchMatch = {\n path: Array<string>\n value: string | number | boolean\n}\n\n/**\n * {@link GlobalSearchMatch}\n * */\nexport type GlobalSearchResult = {\n index: number\n matches: Array<GlobalSearchMatch>\n}\n\nexport type GlobalSearchResultInput = Array<Record<any, any> | Array<any>>\n\n/** @ignore */\nexport interface FullscreenHTMLElement extends HTMLElement {\n mozRequestFullScreen?: () => Promise<void>\n webkitRequestFullScreen?: () => Promise<void>\n msRequestFullscreen?: () => Promise<void>\n}\n\n/** @ignore */\nexport interface FullscreenDocument extends Document {\n mozCancelFullScreen?: () => Promise<void>\n webkitCancelFullScreen?: () => Promise<void>\n msExitFullscreen?: () => Promise<void>\n mozFullScreenElement: Element | null\n webkitFullscreenElement: Element | null\n msFullscreenElement: Element | null\n webkitFullscreenEnabled: boolean\n msFullscreenEnabled: boolean\n mozFullScreenEnabled: boolean\n}\n\nexport type D3TimestampParams = {\n timestamp: string | Date\n timezone: string\n}\n\nexport type D3DateParams = {\n date: Date\n timezone: string\n}\n\nexport type TimelineDomain = Date[] | string[]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Size, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EBadge\",\n props: {\n text: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TBadgeSize>,\n default: Size.base,\n },\n },\n data() {\n return {\n colors: {\n [BaseColor.error]: \"e-bg-rose-500 e-text-white\",\n [BaseColor.info]: \"e-bg-cyan-500 e-text-white\",\n [BaseColor.warning]: \"e-bg-amber-500 e-text-white\",\n [BaseColor.primary]: \"e-bg-sky-500 e-text-white\",\n [BaseColor.default]: \"e-bg-slate-300 e-text-white\",\n [BaseColor.success]: \"e-bg-lime-500 e-text-white\",\n },\n sizes: {\n [Size.dot]: \"e-w-2 e-h-2\",\n [Size.xs]: \"e-w-3 e-h-3\",\n [Size.sm]: \"e-w-4 e-h-4\",\n [Size.md]: \"e-w-5 e-h-5\",\n [Size.lg]:\n \"e-min-w-[2rem] e-max-w-[4rem] e-px-1 e-h-6 e-text-sm e-font-medium\",\n [Size.xl]:\n \"e-min-w-[3rem] e-max-w-[5rem] e-px-1 e-h-8 e-text-base e-font-medium\",\n },\n }\n },\n computed: {\n badgeClasses(): string[] {\n const colorClasses =\n this.colors[this.color as keyof typeof this.colors] ||\n this.colors[BaseColor.default]\n const sizeClasses = (this.sizes[this.size as keyof typeof this.sizes] ||\n this.sizes[Size.md]) as string\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full\",\n colorClasses,\n sizeClasses,\n ]\n },\n showText(): boolean {\n return [Size.lg, Size.xl].includes(this.size)\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport Badge from \"@/components/EBadge.vue\"\nimport { BaseColor, Size, TAvatarSize, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EAvatar\",\n components: {\n Badge,\n },\n props: {\n size: {\n type: String as PropType<TAvatarSize>,\n default: Size.md,\n },\n showBadge: {\n type: Boolean,\n default: false,\n },\n badgeColor: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.error,\n },\n badgeText: {\n type: String,\n default: \"\",\n },\n badgeSize: {\n type: String as PropType<TBadgeSize>,\n default: Size.md,\n },\n image: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n sizes: {\n [Size.xs]: \"e-w-8 e-h-8 e-text-xs\",\n [Size.sm]: \"e-w-10 e-h-10 e-text-sm\",\n [Size.md]: \"e-w-14 e-h-14 e-text-base\",\n [Size.lg]: \"e-w-20 e-h-20 e-text-2xl\",\n [Size.xl]: \"e-w-28 e-h-28 e-text-3xl\",\n [Size[\"2xl\"]]: \"e-w-36 e-h-36 e-text-5xl\",\n },\n }\n },\n computed: {\n avatarClasses(): string[] {\n const sizeClasses =\n this.sizes[this.size as TAvatarSize] || this.sizes[Size.xs]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-bg-gradient-to-r e-from-purple-500 e-to-indigo-500 e-text-white e-font-medium\",\n sizeClasses,\n ]\n },\n },\n})\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dim: function() {\n return dim;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n if (key && alreadyShown.has(key)) return;\n if (key) alreadyShown.add(key);\n console.warn(\"\");\n messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n return _picocolors.default.dim(input);\n}\nconst _default = {\n info (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n warn (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n risk (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\"\n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\",\n 950: \"#09090b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\",\n 950: \"#0c0a09\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\",\n 950: \"#1a2e05\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\",\n 950: \"#022c22\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\",\n 950: \"#083344\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\",\n 950: \"#1e1b4b\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\",\n 950: \"#2e1065\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n 950: \"#4a044e\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\",\n 950: \"#4c0519\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\n","const TailwindColors = require(\"tailwindcss/colors.js\")\n\nconst BrandColors = {\n 50: \"#FCE3E4\",\n 100: \"#F9CDCE\",\n 200: \"#F39699\",\n 300: \"#ED6368\",\n 400: \"#E72C32\",\n 500: \"#C4161C\",\n 600: \"#9C1216\",\n 700: \"#770D11\",\n 800: \"#4E090B\",\n 900: \"#290506\",\n}\n\nconst customColors = {\n onprimary: TailwindColors.white,\n warning: TailwindColors.amber,\n error: TailwindColors.rose,\n info: TailwindColors.cyan,\n success: TailwindColors.lime,\n primary: TailwindColors.sky,\n brand: BrandColors,\n \"video-player-progress-bar\": {\n \"base-bg\": \"#6c737a\",\n \"progress-bg\": \"#0090ff\",\n \"hover-bg\": \"#bbb\",\n \"chunk-bg\": \"#9bcdff\",\n \"tootltip-bg\": \"#333\",\n \"transition-duration\": \"0.2s\",\n \"bar-height\": \"7px\",\n },\n}\n\nconst CustomColors = {\n ...customColors,\n // Warning\n warning: customColors.warning[\"500\"],\n \"warning-darken\": customColors.warning[\"600\"],\n \"warning-lighten\": customColors.warning[\"400\"],\n // Success\n success: customColors.success[\"500\"],\n \"success-darken\": customColors.success[\"600\"],\n \"success-lighten\": customColors.success[\"400\"],\n // Error\n error: customColors.error[\"500\"],\n \"error-darken\": customColors.error[\"600\"],\n \"error-lighten\": customColors.error[\"400\"],\n // Info\n info: customColors.info[\"500\"],\n \"info-darken\": customColors.info[\"600\"],\n \"info-lighten\": customColors.info[\"400\"],\n // Primary\n primary: customColors.primary[\"500\"],\n \"primary-darken\": customColors.primary[\"600\"],\n \"primary-lighten\": customColors.primary[\"400\"],\n // Surfaces\n onsurface: TailwindColors.slate[\"500\"],\n onbackground: TailwindColors.slate[\"700\"],\n surface: TailwindColors.slate[\"50\"],\n background: TailwindColors.white,\n}\n\nconst config = {\n prefix: \"e-\",\n dark: \"class\",\n corePlugins: {\n preflight: false,\n },\n content: [\"./src/**/*.{html,js,vue,ts}\"],\n theme: {\n extend: {\n colors: CustomColors,\n lineHeight: {\n xs: \"1rem\",\n sm: \"1.25rem\",\n base: \"1.5rem\",\n lg: \"1.75rem\",\n xl: \"1.75rem\",\n \"2xl\": \"2rem\",\n \"3xl\": \"2.25rem\",\n \"4xl\": \"2.5rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n maxWidth: {\n \"1/12\": \"8.333333333%\",\n \"2/12\": \"16.666666666%\",\n \"3/12\": \"25%\",\n \"4/12\": \"33.333333333%\",\n \"5/12\": \"41.666666667%\",\n \"6/12\": \"50%\",\n \"7/12\": \"58.333333334%\",\n \"8/12\": \"66.666666666%\",\n \"9/12\": \"75%\",\n \"10/12\": \"83.333333334%\",\n \"11/12\": \"91.666666666%\",\n \"12/12\": \"100%\",\n },\n blur: {\n \"video-poster\": \"32px\",\n },\n transitionProperty: {\n \"opacity-transform\": \"opacity, transform\",\n },\n transitionDuration: {\n 600: \"600ms\",\n },\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n },\n plugins: [],\n safelist: [\n {\n pattern: /e-w-(full|auto)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-grow/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-basis-(\\d{1,2}\\/\\d{1,2}|full|auto|0)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /^!?e-max-w-(\\d{1,2}\\/\\d{1,2})/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-offset-(1[0-2]|[1-9])/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-items-(start|center|end|baseline|stretch)/,\n },\n {\n pattern: /e-self-(start|center|end|baseline|stretch)/,\n },\n {\n pattern:\n /e-justify-(around|between|center|end|evenly|normal|start|stretch)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern:\n /e-content-(around|baseline|between|center|end|evenly|normal|start|stretch)/,\n },\n {\n pattern: /e-m[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-p[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n \"e-tiny\",\n \"e-caption\",\n \"e-body\",\n \"e-title-2\",\n \"e-title-1\",\n \"e-display-3\",\n \"e-display-2\",\n \"e-display-1\",\n {\n pattern: /e-text-(warning|error|info|success|primary|brand)-./,\n },\n {\n pattern: /e-bg-(warning|error|info|success|primary|brand)-./,\n },\n ],\n}\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = config\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return negateValue;\n }\n});\nfunction negateValue(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n // What functions we support negating numeric values for\n // var() isn't inherently a numeric function but we support it anyway\n // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_\n // to produce generally useful results and that will be covered already\n let numericFunctions = [\n \"var\",\n \"calc\",\n \"min\",\n \"max\",\n \"clamp\"\n ];\n for (const fn of numericFunctions){\n if (value.includes(`${fn}(`)) {\n return `calc(${value} * -1)`;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"lineClamp\",\n \"display\",\n \"aspectRatio\",\n \"size\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"captionSide\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listStyleImage\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"hyphens\",\n \"whitespace\",\n \"textWrap\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"contain\",\n \"content\",\n \"forcedColorAdjust\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n })))\n ];\n return pluginNames;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: function() {\n return defaults;\n }\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var _target_hasOwnProperty;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k of Object.getOwnPropertySymbols(source)){\n var _target_hasOwnProperty1;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {\n target[k] = source[k];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: function() {\n return toPath;\n }\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: function() {\n return flagEnabled;\n },\n issueFlagNotices: function() {\n return issueFlagNotices;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"./util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false,\n generalizedModifiers: true,\n disableColorOpacityUtilitiesByDefault: false,\n relativeContentPathsByDefault: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\",\n \"disableColorOpacityUtilitiesByDefault\",\n \"relativeContentPathsByDefault\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"generalizedModifiers\"\n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var _config_future;\n var _config_future_flag, _ref;\n return config.future === \"all\" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var _config_experimental;\n var _config_experimental_flag, _ref1;\n return config.experimental === \"all\" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var _config_experimental;\n return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: function() {\n return normalizeConfig;\n }\n});\nconst _featureFlags = require(\"../featureFlags\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"relative\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value of Object.values(config.content.transform)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n // `config.content.relative` is optional and can be a boolean\n if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var _purge_options;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize the `blocklist`\n config.blocklist = (()=>{\n let { blocklist } = config;\n if (Array.isArray(blocklist)) {\n if (blocklist.every((item)=>typeof item === \"string\")) {\n return blocklist;\n }\n _log.default.warn(\"blocklist-invalid\", [\n \"The `blocklist` option must be an array of strings.\",\n \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n ]);\n }\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n ]);\n config.prefix = \"\";\n } else {\n var _config_prefix;\n config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n relative: (()=>{\n let { content } = config;\n if (content === null || content === void 0 ? void 0 : content.relative) {\n return content.relative;\n }\n return (0, _featureFlags.flagEnabled)(config, \"relativeContentPathsByDefault\");\n })(),\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;\n if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;\n if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var _config_purge, _config_purge_options, _config_content, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return isPlainObject;\n }\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || Object.getPrototypeOf(prototype) === null;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return escapeCommas;\n }\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = {\n aliceblue: [\n 240,\n 248,\n 255\n ],\n antiquewhite: [\n 250,\n 235,\n 215\n ],\n aqua: [\n 0,\n 255,\n 255\n ],\n aquamarine: [\n 127,\n 255,\n 212\n ],\n azure: [\n 240,\n 255,\n 255\n ],\n beige: [\n 245,\n 245,\n 220\n ],\n bisque: [\n 255,\n 228,\n 196\n ],\n black: [\n 0,\n 0,\n 0\n ],\n blanchedalmond: [\n 255,\n 235,\n 205\n ],\n blue: [\n 0,\n 0,\n 255\n ],\n blueviolet: [\n 138,\n 43,\n 226\n ],\n brown: [\n 165,\n 42,\n 42\n ],\n burlywood: [\n 222,\n 184,\n 135\n ],\n cadetblue: [\n 95,\n 158,\n 160\n ],\n chartreuse: [\n 127,\n 255,\n 0\n ],\n chocolate: [\n 210,\n 105,\n 30\n ],\n coral: [\n 255,\n 127,\n 80\n ],\n cornflowerblue: [\n 100,\n 149,\n 237\n ],\n cornsilk: [\n 255,\n 248,\n 220\n ],\n crimson: [\n 220,\n 20,\n 60\n ],\n cyan: [\n 0,\n 255,\n 255\n ],\n darkblue: [\n 0,\n 0,\n 139\n ],\n darkcyan: [\n 0,\n 139,\n 139\n ],\n darkgoldenrod: [\n 184,\n 134,\n 11\n ],\n darkgray: [\n 169,\n 169,\n 169\n ],\n darkgreen: [\n 0,\n 100,\n 0\n ],\n darkgrey: [\n 169,\n 169,\n 169\n ],\n darkkhaki: [\n 189,\n 183,\n 107\n ],\n darkmagenta: [\n 139,\n 0,\n 139\n ],\n darkolivegreen: [\n 85,\n 107,\n 47\n ],\n darkorange: [\n 255,\n 140,\n 0\n ],\n darkorchid: [\n 153,\n 50,\n 204\n ],\n darkred: [\n 139,\n 0,\n 0\n ],\n darksalmon: [\n 233,\n 150,\n 122\n ],\n darkseagreen: [\n 143,\n 188,\n 143\n ],\n darkslateblue: [\n 72,\n 61,\n 139\n ],\n darkslategray: [\n 47,\n 79,\n 79\n ],\n darkslategrey: [\n 47,\n 79,\n 79\n ],\n darkturquoise: [\n 0,\n 206,\n 209\n ],\n darkviolet: [\n 148,\n 0,\n 211\n ],\n deeppink: [\n 255,\n 20,\n 147\n ],\n deepskyblue: [\n 0,\n 191,\n 255\n ],\n dimgray: [\n 105,\n 105,\n 105\n ],\n dimgrey: [\n 105,\n 105,\n 105\n ],\n dodgerblue: [\n 30,\n 144,\n 255\n ],\n firebrick: [\n 178,\n 34,\n 34\n ],\n floralwhite: [\n 255,\n 250,\n 240\n ],\n forestgreen: [\n 34,\n 139,\n 34\n ],\n fuchsia: [\n 255,\n 0,\n 255\n ],\n gainsboro: [\n 220,\n 220,\n 220\n ],\n ghostwhite: [\n 248,\n 248,\n 255\n ],\n gold: [\n 255,\n 215,\n 0\n ],\n goldenrod: [\n 218,\n 165,\n 32\n ],\n gray: [\n 128,\n 128,\n 128\n ],\n green: [\n 0,\n 128,\n 0\n ],\n greenyellow: [\n 173,\n 255,\n 47\n ],\n grey: [\n 128,\n 128,\n 128\n ],\n honeydew: [\n 240,\n 255,\n 240\n ],\n hotpink: [\n 255,\n 105,\n 180\n ],\n indianred: [\n 205,\n 92,\n 92\n ],\n indigo: [\n 75,\n 0,\n 130\n ],\n ivory: [\n 255,\n 255,\n 240\n ],\n khaki: [\n 240,\n 230,\n 140\n ],\n lavender: [\n 230,\n 230,\n 250\n ],\n lavenderblush: [\n 255,\n 240,\n 245\n ],\n lawngreen: [\n 124,\n 252,\n 0\n ],\n lemonchiffon: [\n 255,\n 250,\n 205\n ],\n lightblue: [\n 173,\n 216,\n 230\n ],\n lightcoral: [\n 240,\n 128,\n 128\n ],\n lightcyan: [\n 224,\n 255,\n 255\n ],\n lightgoldenrodyellow: [\n 250,\n 250,\n 210\n ],\n lightgray: [\n 211,\n 211,\n 211\n ],\n lightgreen: [\n 144,\n 238,\n 144\n ],\n lightgrey: [\n 211,\n 211,\n 211\n ],\n lightpink: [\n 255,\n 182,\n 193\n ],\n lightsalmon: [\n 255,\n 160,\n 122\n ],\n lightseagreen: [\n 32,\n 178,\n 170\n ],\n lightskyblue: [\n 135,\n 206,\n 250\n ],\n lightslategray: [\n 119,\n 136,\n 153\n ],\n lightslategrey: [\n 119,\n 136,\n 153\n ],\n lightsteelblue: [\n 176,\n 196,\n 222\n ],\n lightyellow: [\n 255,\n 255,\n 224\n ],\n lime: [\n 0,\n 255,\n 0\n ],\n limegreen: [\n 50,\n 205,\n 50\n ],\n linen: [\n 250,\n 240,\n 230\n ],\n magenta: [\n 255,\n 0,\n 255\n ],\n maroon: [\n 128,\n 0,\n 0\n ],\n mediumaquamarine: [\n 102,\n 205,\n 170\n ],\n mediumblue: [\n 0,\n 0,\n 205\n ],\n mediumorchid: [\n 186,\n 85,\n 211\n ],\n mediumpurple: [\n 147,\n 112,\n 219\n ],\n mediumseagreen: [\n 60,\n 179,\n 113\n ],\n mediumslateblue: [\n 123,\n 104,\n 238\n ],\n mediumspringgreen: [\n 0,\n 250,\n 154\n ],\n mediumturquoise: [\n 72,\n 209,\n 204\n ],\n mediumvioletred: [\n 199,\n 21,\n 133\n ],\n midnightblue: [\n 25,\n 25,\n 112\n ],\n mintcream: [\n 245,\n 255,\n 250\n ],\n mistyrose: [\n 255,\n 228,\n 225\n ],\n moccasin: [\n 255,\n 228,\n 181\n ],\n navajowhite: [\n 255,\n 222,\n 173\n ],\n navy: [\n 0,\n 0,\n 128\n ],\n oldlace: [\n 253,\n 245,\n 230\n ],\n olive: [\n 128,\n 128,\n 0\n ],\n olivedrab: [\n 107,\n 142,\n 35\n ],\n orange: [\n 255,\n 165,\n 0\n ],\n orangered: [\n 255,\n 69,\n 0\n ],\n orchid: [\n 218,\n 112,\n 214\n ],\n palegoldenrod: [\n 238,\n 232,\n 170\n ],\n palegreen: [\n 152,\n 251,\n 152\n ],\n paleturquoise: [\n 175,\n 238,\n 238\n ],\n palevioletred: [\n 219,\n 112,\n 147\n ],\n papayawhip: [\n 255,\n 239,\n 213\n ],\n peachpuff: [\n 255,\n 218,\n 185\n ],\n peru: [\n 205,\n 133,\n 63\n ],\n pink: [\n 255,\n 192,\n 203\n ],\n plum: [\n 221,\n 160,\n 221\n ],\n powderblue: [\n 176,\n 224,\n 230\n ],\n purple: [\n 128,\n 0,\n 128\n ],\n rebeccapurple: [\n 102,\n 51,\n 153\n ],\n red: [\n 255,\n 0,\n 0\n ],\n rosybrown: [\n 188,\n 143,\n 143\n ],\n royalblue: [\n 65,\n 105,\n 225\n ],\n saddlebrown: [\n 139,\n 69,\n 19\n ],\n salmon: [\n 250,\n 128,\n 114\n ],\n sandybrown: [\n 244,\n 164,\n 96\n ],\n seagreen: [\n 46,\n 139,\n 87\n ],\n seashell: [\n 255,\n 245,\n 238\n ],\n sienna: [\n 160,\n 82,\n 45\n ],\n silver: [\n 192,\n 192,\n 192\n ],\n skyblue: [\n 135,\n 206,\n 235\n ],\n slateblue: [\n 106,\n 90,\n 205\n ],\n slategray: [\n 112,\n 128,\n 144\n ],\n slategrey: [\n 112,\n 128,\n 144\n ],\n snow: [\n 255,\n 250,\n 250\n ],\n springgreen: [\n 0,\n 255,\n 127\n ],\n steelblue: [\n 70,\n 130,\n 180\n ],\n tan: [\n 210,\n 180,\n 140\n ],\n teal: [\n 0,\n 128,\n 128\n ],\n thistle: [\n 216,\n 191,\n 216\n ],\n tomato: [\n 255,\n 99,\n 71\n ],\n turquoise: [\n 64,\n 224,\n 208\n ],\n violet: [\n 238,\n 130,\n 238\n ],\n wheat: [\n 245,\n 222,\n 179\n ],\n white: [\n 255,\n 255,\n 255\n ],\n whitesmoke: [\n 245,\n 245,\n 245\n ],\n yellow: [\n 255,\n 255,\n 0\n ],\n yellowgreen: [\n 154,\n 205,\n 50\n ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: function() {\n return parseColor;\n },\n formatColor: function() {\n return formatColor;\n }\n});\nconst _colorNames = /*#__PURE__*/ _interop_require_default(require(\"./colorNames\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\\(--[^ )]*?\\)))?\\)/;\nlet RGB = new RegExp(`^(rgba?)\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsla?)\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var _match_, _match__toString;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorNames.default) {\n return {\n mode: \"rgb\",\n color: _colorNames.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var _value_match;\n let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n // rgba(var(--my-color), 0.1)\n // hsla(var(--my-color), 0.1)\n if (color.length === 2 && color[0].startsWith(\"var(\")) {\n return {\n mode: match[1],\n color: [\n color[0]\n ],\n alpha: color[1]\n };\n }\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n if (mode === \"rgba\" || mode === \"hsla\") {\n return `${mode}(${color.join(\", \")}${hasAlpha ? `, ${alpha}` : \"\"})`;\n }\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: function() {\n return withAlphaValue;\n },\n default: function() {\n return withAlphaVariable;\n }\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n * ─┬─ ┬ ┬ ┬\n * x x x ╰──────── Split because top-level\n * ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: function() {\n return splitAtTopLevelOnly;\n }\n});\nfunction splitAtTopLevelOnly(input, separator) {\n let stack = [];\n let parts = [];\n let lastPos = 0;\n let isEscaped = false;\n for(let idx = 0; idx < input.length; idx++){\n let char = input[idx];\n if (stack.length === 0 && char === separator[0] && !isEscaped) {\n if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n parts.push(input.slice(lastPos, idx));\n lastPos = idx + separator.length;\n }\n }\n if (isEscaped) {\n isEscaped = false;\n } else if (char === \"\\\\\") {\n isEscaped = true;\n }\n if (char === \"(\" || char === \"[\" || char === \"{\") {\n stack.push(char);\n } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n stack.pop();\n }\n }\n parts.push(input.slice(lastPos));\n return parts;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: function() {\n return parseBoxShadowValue;\n },\n formatBoxShadowValue: function() {\n return formatBoxShadowValue;\n }\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: function() {\n return normalize;\n },\n url: function() {\n return url;\n },\n number: function() {\n return number;\n },\n percentage: function() {\n return percentage;\n },\n length: function() {\n return length;\n },\n lineWidth: function() {\n return lineWidth;\n },\n shadow: function() {\n return shadow;\n },\n color: function() {\n return color;\n },\n image: function() {\n return image;\n },\n gradient: function() {\n return gradient;\n },\n position: function() {\n return position;\n },\n familyName: function() {\n return familyName;\n },\n genericName: function() {\n return genericName;\n },\n absoluteSize: function() {\n return absoluteSize;\n },\n relativeSize: function() {\n return relativeSize;\n }\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\n// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them\n// as: `timeline-scope: --tl;`\n//\n// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add\n// the `var()` yourself.\n//\n// More info:\n// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope\n// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident\n//\nconst AUTO_VAR_INJECTION_EXCEPTIONS = new Set([\n // Concrete properties\n \"scroll-timeline-name\",\n \"timeline-scope\",\n \"view-timeline-name\",\n \"font-palette\",\n // Shorthand properties\n \"scroll-timeline\",\n \"animation-timeline\",\n \"view-timeline\"\n]);\nfunction normalize(value, context = null, isRoot = true) {\n let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property);\n if (value.startsWith(\"--\") && !isVarException) {\n return `var(${value})`;\n }\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, context, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n value = normalizeMathOperatorSpacing(value);\n return value;\n}\n/**\n * Add spaces around operators inside math functions\n * like calc() that do not follow an operator, '(', or `,`.\n *\n * @param {string} value\n * @returns {string}\n */ function normalizeMathOperatorSpacing(value) {\n let preventFormattingInFunctions = [\n \"theme\"\n ];\n let preventFormattingKeywords = [\n \"min-content\",\n \"max-content\",\n \"fit-content\",\n // Env\n \"safe-area-inset-top\",\n \"safe-area-inset-right\",\n \"safe-area-inset-bottom\",\n \"safe-area-inset-left\",\n \"titlebar-area-x\",\n \"titlebar-area-y\",\n \"titlebar-area-width\",\n \"titlebar-area-height\",\n \"keyboard-inset-top\",\n \"keyboard-inset-right\",\n \"keyboard-inset-bottom\",\n \"keyboard-inset-left\",\n \"keyboard-inset-width\",\n \"keyboard-inset-height\",\n \"radial-gradient\",\n \"linear-gradient\",\n \"conic-gradient\",\n \"repeating-radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-conic-gradient\"\n ];\n return value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n let result = \"\";\n function lastChar() {\n let char = result.trimEnd();\n return char[char.length - 1];\n }\n for(let i = 0; i < match.length; i++){\n function peek(word) {\n return word.split(\"\").every((char, j)=>match[i + j] === char);\n }\n function consumeUntil(chars) {\n let minIndex = Infinity;\n for (let char of chars){\n let index = match.indexOf(char, i);\n if (index !== -1 && index < minIndex) {\n minIndex = index;\n }\n }\n let result = match.slice(i, minIndex);\n i += result.length - 1;\n return result;\n }\n let char = match[i];\n // Handle `var(--variable)`\n if (peek(\"var\")) {\n // When we consume until `)`, then we are dealing with this scenario:\n // `var(--example)`\n //\n // When we consume until `,`, then we are dealing with this scenario:\n // `var(--example, 1rem)`\n //\n // In this case we do want to \"format\", the default value as well\n result += consumeUntil([\n \")\",\n \",\"\n ]);\n } else if (preventFormattingKeywords.some((keyword)=>peek(keyword))) {\n let keyword = preventFormattingKeywords.find((keyword)=>peek(keyword));\n result += keyword;\n i += keyword.length - 1;\n } else if (preventFormattingInFunctions.some((fn)=>peek(fn))) {\n result += consumeUntil([\n \")\"\n ]);\n } else if (peek(\"[\")) {\n result += consumeUntil([\n \"]\"\n ]);\n } else if ([\n \"+\",\n \"-\",\n \"*\",\n \"/\"\n ].includes(char) && ![\n \"(\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \",\"\n ].includes(lastChar())) {\n result += ` ${char} `;\n } else {\n result += char;\n }\n }\n // Simplify multiple spaces\n return result.replace(/\\s+/g, \" \");\n });\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\n// Please refer to MDN when updating this list:\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units\n// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\",\n \"vb\",\n \"vi\",\n \"svw\",\n \"svh\",\n \"lvw\",\n \"lvh\",\n \"dvw\",\n \"dvh\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"conic-gradient\",\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-conic-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\"\n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\"\n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"xx-large\",\n \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n enumerable: true,\n get: function() {\n return backgroundSize;\n }\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n let keywordValues = [\n \"cover\",\n \"contain\"\n ];\n // the <length-percentage> type will probably be a css function\n // so we have to use `splitAtTopLevelOnly`\n return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n if (sizes.length !== 1 && sizes.length !== 2) return false;\n return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: function() {\n return updateAllClasses;\n },\n asValue: function() {\n return asValue;\n },\n parseColorFormat: function() {\n return parseColorFormat;\n },\n asColor: function() {\n return asColor;\n },\n asLookupValue: function() {\n return asLookupValue;\n },\n typeMap: function() {\n return typeMap;\n },\n coerceValue: function() {\n return coerceValue;\n },\n getMatchingTypes: function() {\n return getMatchingTypes;\n }\n});\nconst _escapeCommas = /*#__PURE__*/ _interop_require_default(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlags = require(\"../featureFlags.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n selectors.walkClasses((sel)=>{\n sel.value = updateClass(sel.value);\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var _options_values;\n let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n // If the `/` is inside an arbitrary, we want to find the previous one if any\n // This logic probably isn't perfect but it should work for most cases\n let arbitraryStartIdx = modifier.lastIndexOf(\"[\", slashIdx);\n let arbitraryEndIdx = modifier.indexOf(\"]\", slashIdx);\n let isNextToArbitrary = modifier[slashIdx - 1] === \"]\" || modifier[slashIdx + 1] === \"[\";\n // Backtrack to the previous `/` if the one we found was inside an arbitrary\n if (!isNextToArbitrary) {\n if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {\n if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {\n slashIdx = modifier.lastIndexOf(\"/\", arbitraryStartIdx);\n }\n }\n }\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier,\n undefined\n ];\n }\n let arbitrary = isArbitraryValue(modifier);\n // The modifier could be of the form `[foo]/[bar]`\n // We want to handle this case properly\n // without affecting `[foo/bar]`\n if (arbitrary && !modifier.includes(\"]/[\")) {\n return [\n modifier,\n undefined\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction unwrapArbitraryModifier(modifier) {\n return (0, _dataTypes.normalize)(modifier.slice(1, -1));\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var _options_values;\n if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {\n var _options_values1;\n return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);\n }\n // TODO: Hoist this up to getMatchingTypes or something\n // We do this here because we need the alpha value (if any)\n let [color, alpha] = splitUtilityModifier(modifier);\n if (alpha !== undefined) {\n var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;\n var _options_values_color;\n let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));\n }\n if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var _options_values;\n return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow),\n size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (options.values && modifier in options.values) {\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n return [\n result,\n type,\n null\n ];\n }\n }\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType,\n null\n ];\n }\n }\n let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n // Find first matching type\n for (let match of matches){\n return match;\n }\n return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n if (!canUseUtilityModifier) {\n modifier = rawModifier;\n utilityModifier = undefined;\n }\n if (utilityModifier !== undefined && modifier === \"\") {\n modifier = \"DEFAULT\";\n }\n // Check the full value first\n // TODO: Move to asValue… somehow\n if (utilityModifier !== undefined) {\n if (typeof options.modifiers === \"object\") {\n var _options_modifiers;\n var _options_modifiers_utilityModifier;\n let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;\n if (configValue !== null) {\n utilityModifier = configValue;\n } else if (isArbitraryValue(utilityModifier)) {\n utilityModifier = unwrapArbitraryModifier(utilityModifier);\n }\n }\n }\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n yield [\n result,\n type,\n utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n ];\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return toColorValue;\n }\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interop_require_default(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interop_require_default(require(\"./configurePlugins\"));\nconst _colors = /*#__PURE__*/ _interop_require_default(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interop_require_default(require(\"./toColorValue\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n target[k] = mergeWith({}, target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var _config_plugins;\n const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var _plugin_config;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\"\n }\n ];\n var _t_theme, _c_plugins;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];\n }))\n }, ...allConfigs));\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridTemplateColumns: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n ...theme('spacing'),\n none: 'none',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n minWidth: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 15: '0.15',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 35: '0.35',\n 40: '0.4',\n 45: '0.45',\n 50: '0.5',\n 55: '0.55',\n 60: '0.6',\n 65: '0.65',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 85: '0.85',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n size: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n svw: '100svw',\n lvw: '100lvw',\n dvw: '100dvw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return getAllConfigs;\n }\n});\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var _config_presets;\n const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [\n _configfull.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: ({ theme })=>({\n DEFAULT: \"#3b82f67f\",\n ...theme(\"colors\")\n })\n }\n },\n disableColorOpacityUtilitiesByDefault: {\n corePlugins: {\n backgroundOpacity: false,\n borderOpacity: false,\n divideOpacity: false,\n placeholderOpacity: false,\n ringOpacity: false,\n textOpacity: false\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _resolveConfig = /*#__PURE__*/ _interop_require_default(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interop_require_default(require(\"../util/getAllConfigs\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","// @ts-ignore\nimport tailwindConfig from \"../tailwind.config.js\"\nimport resolveConfig from \"tailwindcss/resolveConfig\"\nimport { Size, BaseColor } from \"@/types\"\n\nexport const fullConfig = resolveConfig(tailwindConfig) as any\n\nexport const TextSizes = fullConfig.theme.fontSize\n\nexport const Colors = fullConfig.theme.colors\n\nexport const BadgeSizes = [\n Size.dot,\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n] as const\n\nexport const AvatarSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n] as const\n\nexport const IconSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.base,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n Size[\"3xl\"],\n Size[\"4xl\"],\n Size[\"5xl\"],\n Size[\"6xl\"],\n Size[\"7xl\"],\n Size[\"8xl\"],\n Size[\"9xl\"],\n] as const\n\nexport const ToggleSwitchSizes = [Size.sm, Size.md, Size.lg] as const\n\nexport const BadgeColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { IconSizes } from \"@/constants\"\nimport { BaseColor, Size, TailwindColorClass, TIconSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EIcon\",\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n },\n computed: {\n sizes(): Record<Size, string> {\n return IconSizes.reduce((acc, s) => {\n return {\n ...acc,\n [s]: `e-text-${s}`,\n }\n }, {}) as Record<Size, string>\n },\n iconClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.sm]\n const iconClasses = `${\n this.icon?.split(\" \")?.length > 1 ? this.icon : `fa fa-${this.icon}`\n }`\n const color = this.color\n\n return [\n \"e-inline-flex e-items-center e-justify-center e-rounded-full\",\n color,\n iconClasses,\n sizeClasses,\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size } from \"@/types\"\nimport { TextSizes, Colors } from \"@/constants\"\n\nexport default Vue.extend({\n name: \"ESpinner\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n color: {\n type: Boolean,\n default: true,\n },\n animationDuration: {\n type: [Number, String],\n default: 1000,\n },\n size: {\n type: String as PropType<Size>,\n default: Size.base,\n },\n opacity: {\n type: [String, Number],\n default: 1,\n },\n },\n data() {\n return {\n sizes: TextSizes,\n colors: Colors,\n }\n },\n computed: {\n computedSize(): number {\n return this.sizes[Size[this.size]] || this.size || this.sizes[Size.base]\n },\n fill(): { primary: string; secondary: string } {\n let fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[300],\n }\n\n if (this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[100],\n secondary: this.colors.neutral[100],\n }\n }\n\n if (!this.dark && this.color) {\n fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[950],\n }\n }\n\n if (!this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[200],\n secondary: this.colors.neutral[200],\n }\n }\n\n return fill\n },\n },\n methods: {\n getNthPathStyle(index: number) {\n const animationDuration =\n typeof this.animationDuration === \"string\"\n ? Number.parseInt(this.animationDuration)\n : this.animationDuration\n\n return {\n animationDuration: `${this.animationDuration}ms`,\n animationDelay: `${(index / 10) * animationDuration}ms`,\n fill: `${this.fill[index % 2 === 0 ? \"primary\" : \"secondary\"]}`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignContent, FlexAlignItems, FlexJustifyContent } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n align: {\n type: String as PropType<FlexAlignItems>,\n default: undefined,\n },\n alignContent: {\n type: String as PropType<FlexAlignContent>,\n default: undefined,\n },\n justify: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXs: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifySm: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyMd: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyLg: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXl: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n noGutters: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n computed: {\n justifyClasses(): Record<string, boolean> {\n return {\n [`e-justify-${this.justify}`]: !!this.justify,\n [`xs:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`sm:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`md:e-justify-${this.justifyMd}`]: !!this.justifyMd,\n [`lg:e-justify-${this.justifyLg}`]: !!this.justifyLg,\n [`xl:e-justify-${this.justifyXl}`]: !!this.justifyXl,\n }\n },\n rowClasses(): Record<string, boolean> {\n return {\n ...(this.align ? { [`e-items-${this.align}`]: true } : {}),\n ...(this.alignContent\n ? { [`e-content-${this.alignContent}`]: true }\n : {}),\n ...(this.noGutters ? { [\"e-row--no-gutters\"]: true } : {}),\n ...this.justifyClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignSelf } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n alignSelf: {\n type: String as PropType<FlexAlignSelf>,\n default: \"auto\",\n },\n cols: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n lg: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n md: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n offset: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetLg: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetMd: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetSm: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXs: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXl: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n sm: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xs: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xl: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n },\n computed: {\n colClasses(): Record<string, boolean> {\n return {\n // Align self\n ...(this.alignSelf ? { [`e-self-${this.alignSelf}`]: true } : {}),\n\n // cols=\"auto\"\n [this.autoClasses(\"xs:\", this.xs)]: this.isSizePropAuto(this.xs),\n [this.autoClasses(\"sm:\", this.sm)]: this.isSizePropAuto(this.sm),\n [this.autoClasses(\"md:\", this.md)]: this.isSizePropAuto(this.md),\n [this.autoClasses(\"lg:\", this.lg)]: this.isSizePropAuto(this.lg),\n [this.autoClasses(\"xl:e\", this.xl)]: this.isSizePropAuto(this.xl),\n [this.autoClasses(\"\", this.cols)]: this.isSizePropAuto(this.cols, true),\n\n // cols=\"12\"\n \"xs:e-basis-full xs:!e-max-w-12/12\": this.xs === 12 || this.xs === \"12\",\n \"sm:e-basis-full sm:!e-max-w-12/12\": this.sm === 12 || this.sm === \"12\",\n \"md:e-basis-full md:!e-max-w-12/12\": this.md === 12 || this.md === \"12\",\n \"lg:e-basis-full lg:!e-max-w-12/12\": this.lg === 12 || this.lg === \"12\",\n \"xl:e-basis-full xl:!e-max-w-12/12\": this.xl === 12 || this.xl === \"12\",\n \"e-basis-full e-max-w-12/12\": this.cols === 12 || this.cols === \"12\",\n\n // cols=\"n\"\n [`xs:e-basis-${this.xs}/12 xs:!e-max-w-${this.xs}/12`]:\n this.isSizePropertyNumeric(this.xs),\n [`sm:e-basis-${this.sm}/12 sm:!e-max-w-${this.sm}/12`]:\n this.isSizePropertyNumeric(this.sm),\n [`md:e-basis-${this.md}/12 md:!e-max-w-${this.md}/12`]:\n this.isSizePropertyNumeric(this.md),\n [`lg:e-basis-${this.lg}/12 lg:!e-max-w-${this.lg}/12`]:\n this.isSizePropertyNumeric(this.lg),\n [`xl:e-basis-${this.xl}/12 xl:!e-max-w-${this.xl}/12`]:\n this.isSizePropertyNumeric(this.xl),\n [`e-basis-${this.cols}/12 !e-max-w-${this.cols}/12`]:\n this.isSizePropertyNumeric(this.cols),\n\n // offset=\"n\"\n [`xs:e-offset-${this.offsetXs}`]: this.offsetXs !== undefined,\n [`sm:e-offset-${this.offsetSm}`]: this.offsetSm !== undefined,\n [`md:e-offset-${this.offsetMd}`]: this.offsetMd !== undefined,\n [`lg:e-offset-${this.offsetLg}`]: this.offsetLg !== undefined,\n [`xl:e-offset-${this.offsetXl}`]: this.offsetXl !== undefined,\n [`e-offset-${this.offset}`]: this.offset !== undefined,\n }\n },\n },\n methods: {\n autoClasses(prefix: string, value: boolean | string | number) {\n const basis = value === \"auto\" ? \"auto\" : \"0\"\n const grow = value === \"auto\" ? \"-0\" : \"\"\n const width = value === \"auto\" ? \"auto\" : \"full\"\n\n return `${prefix}e-basis-${basis} ${prefix}e-grow${grow} ${prefix}e-w-${width}`\n },\n isSizePropAuto(\n prop: boolean | string | number | undefined,\n acceptUndefined = false\n ) {\n return (\n prop === \"auto\" ||\n prop === 0 ||\n prop === \"0\" ||\n (acceptUndefined && !prop)\n )\n },\n isSizePropertyNumeric(prop: boolean | string | number | undefined) {\n const n = Number.parseInt(prop as string)\n\n return prop !== \"auto\" && !isNaN(n) && n >= 1 && n < 12\n },\n },\n})\n","import { FullscreenDocument, FullscreenHTMLElement } from \"@/types\"\n\nexport function isFullScreen() {\n const doc = document as FullscreenDocument\n\n return !!(\n doc.fullscreenElement ||\n doc.mozFullScreenElement ||\n doc.webkitFullscreenElement ||\n doc.msFullscreenElement\n )\n}\n\nexport function makeFullScreen(element: HTMLElement) {\n if (isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const el = element as FullscreenHTMLElement\n if (el.requestFullscreen) {\n return el?.requestFullscreen()\n } else if (el.mozRequestFullScreen) {\n return el?.mozRequestFullScreen()\n } else if (el.webkitRequestFullScreen) {\n return el?.webkitRequestFullScreen()\n } else if (el.msRequestFullscreen) {\n return el?.msRequestFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function exitFullScreen(): Promise<void | null> {\n if (!isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const doc = document as FullscreenDocument\n if (doc.exitFullscreen) {\n return doc.exitFullscreen()\n } else if (doc.mozCancelFullScreen) {\n return doc.mozCancelFullScreen()\n } else if (doc.webkitCancelFullScreen) {\n return doc.webkitCancelFullScreen()\n } else if (doc.msExitFullscreen) {\n return doc.msExitFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait?: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n return function (...args: Parameters<T>): void {\n // @ts-ignore\n const context = this\n\n if (timeout !== null) {\n clearTimeout(timeout)\n }\n\n timeout = setTimeout(() => {\n timeout = null\n func.apply(context, args)\n }, wait || 1000)\n }\n}\n\nexport function getRandomChars(length: number = 1): string {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n\n return result\n}\n","\nimport Vue, { StyleValue } from \"vue\"\nexport default Vue.extend({\n name: \"EZoomable\",\n props: {\n ignorePointerEvents: {\n type: Boolean,\n default: false,\n },\n withOverlay: {\n type: Boolean,\n default: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n scale: 1,\n minScale: 1,\n maxScale: 20,\n top: 0,\n left: 0,\n isPanning: false,\n panStart: { x: 0, y: 0 },\n isPinching: false,\n previousPinchDistance: 0,\n pinchDistance: 0,\n pointers: {} as Record<number, PointerEvent>,\n transform: \"matrix(1, 0, 0, 1, 0, 0)\",\n }\n },\n computed: {\n contentStyle(): StyleValue {\n return {\n transform: this.transform as string,\n }\n },\n isZoomed(): boolean {\n return this.scale > 1\n },\n },\n watch: {\n contentStyle: {\n handler(imgStyle) {\n this.$emit(\"apply-zoomable-style\", { imgStyle })\n },\n immediate: true,\n deep: true,\n },\n },\n methods: {\n updateZoomScale() {\n if (this.scale > this.maxScale) {\n this.scale = this.maxScale\n } else if (this.scale < this.minScale) {\n this.scale = this.minScale\n }\n },\n handleZoom(e: WheelEvent) {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n e.preventDefault()\n if (this.disabled) {\n return\n }\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const mouseX = e.clientX\n const mouseY = e.clientY\n // @ts-ignore\n const delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail))\n const oldScale = this.scale\n\n this.scale += delta / 10\n this.updateZoomScale()\n\n const xPercent = (\n (mouseX - contentRect.left) /\n contentRect.width\n ).toFixed(2)\n const yPercent = (\n (mouseY - contentRect.top) /\n contentRect.height\n ).toFixed(2)\n\n this.left = Math.round(\n mouseX -\n containerRect.left -\n Number(xPercent) * ((contentRect.width * this.scale) / oldScale)\n )\n this.top = Math.round(\n mouseY -\n containerRect.top -\n Number(yPercent) * ((contentRect.height * this.scale) / oldScale)\n )\n\n const maxLeft = 0\n const minLeft = 0 - containerRect.width * (this.scale - 1)\n const minTop = 0 - containerRect.height * (this.scale - 1)\n const maxTop = 0\n\n if (this.left < minLeft) {\n this.left = minLeft\n } else if (this.left > maxLeft) {\n this.left = maxLeft\n }\n\n if (this.top < minTop) {\n this.top = minTop\n } else if (this.top > maxTop) {\n this.top = maxTop\n }\n\n this.updateTransform()\n },\n handleMouseDown(e: MouseEvent) {\n if (!this.isZoomed || this.disabled) {\n return\n }\n this.isPanning = true\n this.panStart = { x: e.clientX, y: e.clientY }\n },\n handleMouseUp() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseLeave() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseMove(e: MouseEvent) {\n if (!this.isPanning || !this.isZoomed || this.disabled) {\n return\n }\n const deltaX = e.clientX - this.panStart.x\n const deltaY = e.clientY - this.panStart.y\n\n this.left += deltaX\n this.top += deltaY\n\n this.applyBoundsCorrection()\n this.panStart = { x: e.clientX, y: e.clientY }\n\n this.updateTransform()\n },\n applyBoundsCorrection() {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n // Corrections ensure there is no gap between content and container when panning\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const [correctionTop, correctionRight, correctionBottom, correctionLeft] =\n [\n containerRect.top - contentRect.top,\n contentRect.right - containerRect.right,\n contentRect.bottom - containerRect.bottom,\n containerRect.left - contentRect.left,\n ].map((v) => (v < 0 ? v : 0))\n\n this.left += correctionLeft - correctionRight\n this.top += correctionTop - correctionBottom\n },\n updateTransform() {\n this.transform = `matrix(${this.scale}, 0, 0, ${this.scale}, ${this.left}, ${this.top})`\n },\n getPointersDistance(a: PointerEvent, b: PointerEvent) {\n return Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY)\n },\n getPointersMidPoint(a: PointerEvent, b: PointerEvent) {\n return {\n x: a.clientX + (b.clientX - a.clientX) / 2,\n y: a.clientY + (b.clientY - a.clientY) / 2,\n }\n },\n updatePointerEvent(e: PointerEvent) {\n this.pointers[e.pointerId] = e\n },\n clearPointerEvent(e: PointerEvent) {\n this.$delete(this.pointers, e.pointerId)\n },\n updatePinchDistance() {\n const pointers = Object.values(this.pointers)\n if (pointers.length !== 2) {\n return\n }\n\n this.pinchDistance = this.getPointersDistance(pointers[0], pointers[1])\n },\n handlePointerDown(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n this.isPinching = Object.values(this.pointers).length === 2\n\n if (this.isPinching) {\n this.isPanning = false\n this.updatePinchDistance()\n } else {\n this.handleMouseDown(e)\n }\n },\n handlePointerMove(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n if (this.isPinching) {\n this.previousPinchDistance = this.pinchDistance\n this.updatePinchDistance()\n const delta = this.pinchDistance / this.previousPinchDistance\n this.scale *= delta\n this.updateZoomScale()\n\n const pointers = Object.values(this.pointers)\n const midPoint = this.getPointersMidPoint(pointers[0], pointers[1])\n\n this.left = midPoint.x - (midPoint.x - this.left) * delta\n this.top = midPoint.y - (midPoint.y - this.top) * delta\n\n this.applyBoundsCorrection()\n this.updateTransform()\n } else {\n this.handleMouseMove(e)\n }\n },\n handlePointerUp(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.clearPointerEvent(e)\n this.previousPinchDistance = 0\n this.pinchDistance = 0\n this.isPanning = false\n this.isPinching = false\n },\n },\n})\n","\nimport Hls, { ErrorData, Events, HlsConfig } from \"hls.js\"\nimport Vue, { PropType } from \"vue\"\nimport { makeFullScreen, exitFullScreen } from \"@/utils\"\nimport { FullscreenDocument } from \"@/types\"\n\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\nimport moment from \"moment-timezone\"\n// types:\nexport type VideoSource = {\n type: string\n src: string\n}\n\n// Helper functions\nconst leadingZeroFormatter = new Intl.NumberFormat(undefined, {\n minimumIntegerDigits: 2,\n})\n\n// List of events so we can bind them on mount\nexport const VIDEO_PLAYER_EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n \"error\",\n]\n\nconst formatDuration = (time: number) => {\n const seconds = Math.floor(time % 60)\n const minutes = Math.floor(time / 60) % 60\n const hours = Math.floor(time / 3600)\n if (hours === 0) {\n return `${minutes}:${leadingZeroFormatter.format(seconds)}`\n } else {\n return `${hours}:${leadingZeroFormatter.format(\n minutes\n )}:${leadingZeroFormatter.format(seconds)}`\n }\n}\n\nexport default Vue.extend({\n name: \"EVideoPlayer\",\n components: {\n ESpinner,\n EZoomable,\n },\n props: {\n targetTimestamp: {\n type: [String, Date],\n default: undefined,\n },\n sources: {\n type: [Array, String] as PropType<VideoSource[] | string>,\n required: true,\n },\n videoListeners: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n videoOptions: {\n type: Object as PropType<Partial<HTMLVideoElement> & { poster: string }>,\n default: () => ({}),\n },\n isHls: {\n type: Boolean,\n default: false,\n },\n streamingToken: {\n type: String,\n default: \"\",\n },\n pauseOnClick: {\n type: Boolean,\n default: true,\n },\n isHlsLoading: {\n type: Boolean,\n default: false,\n },\n isPlaying: {\n type: Boolean,\n default: false,\n },\n isZoomable: {\n type: Boolean,\n default: false,\n },\n zoomableIgnorePointerEvents: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n playPauseAnimation: {\n type: Boolean,\n default: true,\n },\n disablePlayPauseAnimation: {\n type: Boolean,\n default: false,\n },\n isWebRtc: {\n type: Boolean,\n default: false,\n },\n withColoredLoader: {\n type: Boolean,\n default: false,\n },\n loaderSize: {\n type: String,\n default: \"7xl\",\n },\n withOverlayOnBackground: {\n type: Boolean,\n default: false,\n },\n fallbackSrc: {\n type: String,\n default: \"\",\n },\n hlsOptions: {\n type: Object as PropType<Partial<HlsConfig>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n playing: false,\n percentagePlayed: 0,\n videoLength: \"0:00\",\n duration: 0,\n videoDuration: 0,\n currentTime: \"0:00\",\n realtime: 0,\n isScrubbing: false,\n wasPaused: false,\n isFullscreen: false,\n isFinished: false,\n isLoading: true,\n isError: false,\n player: new Hls(),\n playbackRetries: 0,\n preloadedSeconds: 0,\n preloadedInterval: {} as unknown as {\n start: string\n end: string\n },\n }\n },\n computed: {\n posterUrl(): string {\n return (\n this.videoOptions as Partial<HTMLVideoElement> & { poster: string }\n )?.poster\n },\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\n },\n hasStartedOrFinished(): boolean {\n return (\n (this.isFinished || this.realtime <= 0.1) &&\n !this.isLoading &&\n !this.isLooped()\n )\n },\n withControls() {\n const videoOptions = this.videoOptions as Partial<HTMLVideoElement>\n\n return videoOptions?.controls === false ? \"hide\" : \"\"\n },\n },\n watch: {\n isPlaying: {\n immediate: true,\n handler(value) {\n this.togglePlay()\n\n if (!this.isHls) {\n return\n }\n if (value) {\n this.$emit(\"hls-play\")\n } else {\n this.$emit(\"hls-pause\")\n }\n },\n },\n preloadedSeconds(val) {\n this.preloadedInterval = {\n start: moment(this.targetTimestamp).format(),\n end: moment(this.targetTimestamp).add(val, \"seconds\").format(),\n }\n this.$emit(\"preloaded-interval\", this.preloadedInterval)\n },\n targetTimestamp: {\n immediate: true,\n handler(value) {\n if (!this.isHls) {\n return\n }\n const player = this.$refs.player as HTMLVideoElement\n const start = this.preloadedInterval?.start\n const end = this.preloadedInterval?.end\n\n if (!(start && end)) {\n return\n }\n\n const isTargetTimestampAvailable = moment(value).isBetween(\n moment(start),\n moment(end),\n undefined,\n \"[]\"\n )\n\n player.currentTime = 0\n if (!isTargetTimestampAvailable) {\n this.initHls()\n }\n },\n },\n },\n mounted() {\n if (this.isHls) {\n this.initHls()\n }\n this.bindEvents()\n this.initializePlayer()\n this.initializeFullscreenListeners()\n },\n beforeDestroy() {\n this.unbindEvents()\n this.destroyPlayer()\n this.removeFullscreenListeners()\n },\n\n methods: {\n initHls(src = \"\") {\n const playerRef = this.$refs.player as HTMLVideoElement\n const videoSource = this.sources[0] as VideoSource\n if (this.player?.stopLoad) {\n this.player.stopLoad()\n }\n if (Hls.isSupported()) {\n this.isLoading = true\n this.player = new Hls({\n startPosition: 0,\n xhrSetup: (xhr) => {\n if (this.streamingToken) {\n xhr.setRequestHeader(\n \"Authorization\",\n `Bearer ${this.streamingToken}`\n )\n }\n },\n ...this.hlsOptions,\n }) as Hls\n this.player?.loadSource(src || videoSource.src)\n this.player?.attachMedia(playerRef as HTMLVideoElement)\n this.player?.on(Hls.Events.MANIFEST_PARSED, (_, manifest) => {\n const firstLevelDetails =\n manifest.levels[manifest.firstLevel]?.details\n const startOffset = firstLevelDetails?.startTimeOffset\n playerRef.currentTime = startOffset || 0\n\n if (this.playing) {\n playerRef.play()\n }\n })\n this.player?.on(Hls.Events.ERROR, this.handleHlsError)\n }\n },\n onContainerClick() {\n if (this.pauseOnClick) {\n this.togglePlay()\n }\n },\n handle404Error() {\n if (this.isWebRtc) {\n return\n }\n this.isError = true\n this.isLoading = false\n this.playing = false\n },\n handleHlsError(_: Events.ERROR, data: ErrorData) {\n if (!data.fatal) {\n return\n }\n\n this.$emit(\"hls-error\", data)\n\n const isNetworkError = data.type === Hls.ErrorTypes.NETWORK_ERROR\n const isMediaError = data.type === Hls.ErrorTypes.MEDIA_ERROR\n const isNotFoundError =\n isNetworkError && data.networkDetails?.status === 404\n const playerRef = this.$refs.player as HTMLVideoElement\n\n const shouldAttemptFallback = () =>\n this.fallbackSrc && playerRef?.currentSrc !== this.fallbackSrc\n\n const attemptFallback = () => this.initHls(this.fallbackSrc)\n\n const handleError = () => {\n if (shouldAttemptFallback()) {\n attemptFallback()\n\n return\n }\n this.player.destroy()\n if ((this.videoListeners as { error?: () => void }).error) {\n // @ts-ignore\n this.videoListeners.error()\n } else {\n this.handle404Error()\n }\n }\n\n if (isNotFoundError) {\n handleError()\n\n return\n }\n\n if (isNetworkError) {\n console.error(\"A network error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.startLoad()\n }\n\n return\n }\n\n if (isMediaError) {\n console.error(\"A media error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.recoverMediaError()\n }\n }\n\n handleError()\n },\n bindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.addEventListener(event, () => this.bindVideoEvent(event), true)\n })\n },\n onProgress() {\n const player = this.$refs.player as HTMLVideoElement\n\n if (player && player.buffered.length > 0) {\n try {\n this.preloadedSeconds = player.buffered.end(\n player.buffered.length - 1\n )\n } catch (e) {\n console.error(\"Error while fetching buffered end time:\", e)\n }\n } else {\n // Handle the case where no video data has been buffered\n console.log(\"No video data has been buffered yet.\")\n }\n },\n unbindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.removeEventListener(\n event,\n () => this.bindVideoEvent(event),\n true\n )\n })\n },\n bindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n if (!timelineContainer) {\n return\n }\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player?.currentTime / player?.duration) * 100\n timelineContainer?.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player })\n },\n initializePlayer() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n if (playerRef.autoplay) {\n this.setPlaying(true)\n }\n document.addEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n document.addEventListener(\"keydown\", this.handleKeyDown)\n },\n destroyPlayer() {\n if (this.player) {\n this.player.stopLoad()\n this.player.destroy()\n }\n window.removeEventListener(\"keydown\", this.handleKeyDown)\n document.removeEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n },\n removeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.removeEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.removeEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n initializeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.addEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.addEventListener(\"mozfullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\"MSFullscreenChange\", this.handleFullscreenChange)\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n handleFullscreenChange() {\n const doc = document as FullscreenDocument\n this.isFullscreen =\n !!doc.fullscreenElement ||\n !!doc.mozFullScreenElement ||\n !!doc.webkitFullscreenElement ||\n !!doc.msFullscreenElement ||\n (window.innerWidth == screen.width &&\n window.innerHeight == screen.height)\n },\n\n isLooped() {\n const player = this.$refs.player as HTMLVideoElement\n\n return player.loop\n },\n handleScrubbingOnMouseEnd(e: MouseEvent) {\n if (this.isScrubbing) {\n this.toggleScrubbing(e)\n }\n },\n handleEnded() {\n this.isFinished = true\n this.playing = false\n },\n handleLoading() {\n this.isLoading = false\n },\n async play() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n try {\n await playerRef.play()\n this.setPlaying(true)\n } catch (error) {\n console.error(error)\n this.playbackRetries += 1\n if (this.isHls && this.playbackRetries < 3) {\n this.initHls()\n }\n }\n },\n pause() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n playerRef.pause()\n this.setPlaying(false)\n },\n async togglePlay() {\n if (this.playing) {\n this.pause()\n } else {\n await this.play()\n }\n },\n setPlaying(state: boolean) {\n this.playing = state\n },\n seekToPercentage(percentage: number) {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const currentTime = (percentage / 100) * playerRef.duration\n playerRef.currentTime = currentTime\n },\n convertTimeToDuration(seconds: number) {\n // @ts-ignore\n return [parseInt((seconds / 60) % 60, 10), parseInt(seconds % 60, 10)]\n .join(\":\")\n .replace(/\\b(\\d)\\b/g, \"0$1\")\n },\n\n closeFullscreenMode() {\n if (document.fullscreenElement) {\n exitFullScreen().then(() => {\n this.isFullscreen = false\n })\n\n this.isFullscreen = false\n }\n },\n openFullscreenMode() {\n const element = this.$refs.videoContainer as HTMLDivElement\n if (element) {\n makeFullScreen(element).then(() => {\n this.isFullscreen = true\n })\n this.isFullscreen = true\n }\n },\n toggleFullscreenMode() {\n if (this.isFullscreen) {\n this.closeFullscreenMode()\n } else {\n this.openFullscreenMode()\n }\n },\n\n getDuration() {\n const player = this.$refs.player as HTMLVideoElement\n this.videoLength = formatDuration(player.duration)\n this.videoDuration = player.duration\n },\n handleTimeUpdate() {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (!player || !timelineContainer) {\n return\n }\n this.currentTime = formatDuration(player.currentTime)\n this.realtime = player.currentTime\n const percent = Number(this.realtime) / Number(this.videoDuration)\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n },\n handleTimelineUpdate(e: MouseEvent) {\n const player = this.$refs.player as HTMLVideoElement\n if (!document.body.contains(player)) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n timelineContainer.style.setProperty(\n \"--preview-position\",\n percent.toString()\n )\n if (this.isScrubbing) {\n e.preventDefault()\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n }\n },\n skip(duration = 5) {\n const player = this.$refs.player as HTMLVideoElement\n\n player.currentTime += duration\n },\n async toggleScrubbing(e: MouseEvent) {\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const videoContainer = this.$refs.videoContainer as HTMLDivElement\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n this.isScrubbing = (e.buttons & 1) === 1\n videoContainer.classList.toggle(\"scrubbing\", this.isScrubbing)\n if (this.isScrubbing) {\n this.wasPaused = player.paused\n await player.pause()\n this.handleTimelineUpdate(e)\n\n return\n }\n this.realtime = percent * this.videoDuration\n player.currentTime = percent * this.videoDuration\n if (this.wasPaused) {\n return\n }\n const playPromise = player.play()\n // @see issue: https://developer.chrome.com/blog/play-request-was-interrupted/\n if (playPromise !== undefined) {\n playPromise\n .then(() => this.handleTimelineUpdate(e))\n .catch(console.error)\n }\n },\n\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\") {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n this.togglePlay()\n break\n case \"k\":\n this.togglePlay()\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n case \"f\":\n this.openFullscreenMode()\n this.isFullscreen = true\n\n break\n }\n },\n },\n})\n","import * as d3 from \"d3\"\nimport { TimelineAxis, TimelineAxesConfig } from \"@/types\"\n\nconst getFormattedDay = (d: Date) => {\n const day = d3.utcFormat(\"%_d\")(d)\n const daySuffixes: { [key: string]: string } = {\n [\"1\"]: \"st\",\n [\"2\"]: \"nd\",\n [\"3\"]: \"rd\",\n }\n\n const daySuffix = daySuffixes[day.charAt(1)] || \"th\"\n\n return `${day}${daySuffix}`\n}\n\nconst getFormattedDayNoEndOfMonth = (d: Date) => {\n const nextDay = new Date(\n Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1)\n )\n const isEndOfTheMonth = nextDay.getUTCDate() === 1\n\n if (isEndOfTheMonth) {\n return \"\"\n }\n\n return d3.utcFormat(\"%-d\")(d)\n}\n\nconst getFormattedHour = (d: Date) => {\n return [\"0\", \" 0\", \"00\"].includes(d3.utcFormat(\"%H\")(d))\n ? \"\"\n : `${d3.utcFormat(\"%H\")(d)}h`\n}\n\nconst getFormattedHourMinute = (d: Date) => {\n const HH_MM = d3.utcFormat(\"%H:%M\")(d)\n\n return HH_MM === \"00:00\" ? \"\" : HH_MM\n}\n\nconst getFormattedMinuteSecond = (d: Date) => {\n return d3.utcFormat(\"%M:%S\")(d)\n}\n\nconst getFormattedOverviewMinuteSecond = (d: Date) => {\n const HH_MM_SS = d3.utcFormat(\"%Hh%Mm\")(d)\n\n return `${HH_MM_SS}`\n}\n\nconst getFormattedOverviewHour = (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n}\n\nconst getFormattedDayHourMinute = (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n}\n\nconst filterHourDivisibleBy = (n: number) => {\n return (d: Date) => {\n const hour = d3.utcFormat(\"%H\")(d)\n const minute = d3.utcFormat(\"%M\")(d)\n\n return !(minute === \"00\" && Number.parseInt(hour) % n === 0)\n }\n}\n\nconst filterMinutesDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n\n return Number.parseInt(minute) % n !== 0\n }\n}\n\nconst filterMinutesSecondsDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n const second = d3.utcFormat(\"%S\")(d)\n\n return Number.parseInt(minute) % n !== 0 && Number.parseInt(second) === 0\n }\n}\n\n/**\n * Precision of the timeline ticks\n * (measured in Hours per Pixel)\n */\nconst Precision = {\n _10_seconds: 0.000025,\n _20_seconds: 0.0001,\n _30_seconds: 0.00015,\n _1_minute: 0.0003,\n _2_minutes: 0.00075,\n _5_minutes: 0.002,\n _15_minutes: 0.005,\n _30_minutes: 0.01,\n _1_hour: 0.025,\n _2_hours: 0.05,\n _3_hours: 0.1,\n _4_hours: 0.15,\n _6_hours: 0.25,\n _1_day: 1,\n _2_days: 2,\n _1_month: 8,\n _1_month_abbr: 13,\n _1_month_letter: 22,\n _3_months: 33,\n _2_year: 48,\n _5_years: 120,\n _20_years: 480,\n _75_years: 1800,\n _300_years: 7200,\n infinity: Infinity,\n}\n\n/**\n * Map of formats and ticks intervals for the Timeline axis(s) by type.\n */\nexport const defaultAxesConfig: TimelineAxesConfig = {\n [TimelineAxis.overview]: [\n {\n precision: Precision._30_seconds,\n interval: d3.utcMinute.every(2),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.every(5),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(10),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(20),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcHour,\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcHour.every(2),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(6),\n format: (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n },\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(12),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(24),\n format: (d: Date) => {\n const day = getFormattedDay(d)\n const abbreviatedMonth = d3.utcFormat(\"%b\")(d)\n\n return `${abbreviatedMonth} ${day}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: (d: Date) => {\n const startOfTheYear = d.getUTCMonth() === 0 && d.getUTCDate() === 1\n const format = startOfTheYear ? \"%Y – %B\" : \"%B\"\n\n return d3.utcFormat(format)(d)\n },\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear.every(1),\n format: \"%Y\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(5),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(20),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(75),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(300),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth.every(12),\n format: \"%Y\",\n },\n ],\n [TimelineAxis.detailed]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond.every(10),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond\n .every(20)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond\n .every(30)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.filter(filterMinutesDivisibleBy(5)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(2)?.filter(filterMinutesDivisibleBy(10)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(5)?.filter(filterMinutesDivisibleBy(20)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(15)?.filter(filterHourDivisibleBy(1)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(30)?.filter(filterHourDivisibleBy(2)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcHour.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(2)?.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(3)?.filter(filterHourDivisibleBy(12)),\n format: getFormattedHour,\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour.every(4),\n format: getFormattedHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(6),\n format: getFormattedHour,\n },\n {\n precision: Precision._1_day,\n interval: d3.utcDay,\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._2_days,\n interval: d3.utcDay.every(2),\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._1_month,\n interval: d3.utcMonth,\n format: \"%B\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcMonth,\n format: \"%b\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcMonth,\n format: (d: Date) => d3.utcFormat(\"%B\")(d).charAt(0),\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth.every(3),\n format: \"Q%q\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcMonth.every(6),\n format: \"Q%q\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(4),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(25),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n [TimelineAxis.detailedBackground]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond,\n format: \"\",\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond.every(5),\n format: \"\",\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond.every(10),\n format: \"\",\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcSecond.every(20),\n format: \"\",\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcSecond.every(30),\n format: \"\",\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute,\n format: \"\",\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(3),\n format: \"\",\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(6),\n format: \"\",\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcMinute.every(15),\n format: \"\",\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcMinute.every(30),\n format: \"\",\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcMinute.every(120),\n format: \"\",\n },\n {\n precision: Precision._1_day,\n interval: d3.utcHour.every(8),\n format: \"\",\n },\n {\n precision: Precision._2_days,\n interval: d3.utcHour.every(12),\n format: \"\",\n },\n {\n precision: Precision._1_month,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const fifthOfMonth = Math.ceil(daysInMonth / 5) // 1/4 of the month\n\n return (\n dayOfMonth === fifthOfMonth ||\n dayOfMonth === 2 * fifthOfMonth ||\n dayOfMonth === 3 * fifthOfMonth ||\n dayOfMonth === 4 * fifthOfMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const quarterOfTheMonth = Math.ceil(daysInMonth / 4) // 1/4 of the month\n\n return (\n dayOfMonth === quarterOfTheMonth ||\n dayOfMonth === 2 * quarterOfTheMonth ||\n dayOfMonth === 3 * quarterOfTheMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const halfOfTheMonth = Math.ceil(daysInMonth / 2) // 1/4 of the month\n\n return dayOfMonth === halfOfTheMonth\n }),\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear,\n format: \"\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(5),\n format: \"\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(20),\n format: \"\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n}\n","import { DirectiveOptions } from \"vue\"\n\nexport interface ObservedElement extends HTMLElement {\n __resizeObserver__?: ResizeObserver\n}\n\nconst ResizeObserverDirective: DirectiveOptions = {\n bind(el, binding) {\n const { value: callback } = binding\n\n if (typeof callback !== \"function\") {\n console.error(\"Invalid callback function provided to v-resize-observer\")\n\n return\n }\n\n const observer: ResizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n if (!entries[0]) {\n return\n }\n\n callback(entries[0])\n }\n )\n\n observer.observe(el)\n ;(el as ObservedElement).__resizeObserver__ = observer\n },\n unbind(el) {\n if ((el as ObservedElement).__resizeObserver__) {\n ;(el as ObservedElement).__resizeObserver__!.disconnect()\n delete (el as ObservedElement).__resizeObserver__\n }\n },\n}\n\nexport default ResizeObserverDirective\n","import ResizeObserverDirective from \"@/directives/resize-observer\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n]\n\nexport { ResizeObserverDirective }\n","\nimport Vue, { PropType } from \"vue\"\nimport { TimelineMilestoneEvent } from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nexport const milestoneClasses = {\n milestone: \"e-tl-milestone\",\n milestoneBullet: \"e-tl-milestone--bullet\",\n milestoneDot: \"e-tl-milestone--dot\",\n milestoneContent: \"e-tl-milestone-content\",\n milestoneLine: \"e-tl-milestone-line\",\n milestonesContainer: \"e-tl-milestones\",\n milestoneHovered: \"e-tl-milestone--hovered\",\n milestoneSelected: \"e-tl-milestone--selected\",\n milestoneLabel: \"e-tl-milestone-label\",\n milestoneDotContainer: \"e-tl-milestone-dot-container\",\n milestoneDotLine: \"e-tl-milestone-dot-line\",\n milestoneDotDot: \"e-tl-milestone-dot-dot\",\n milestoneDotHovered: \"e-tl-milestone-dot--hovered\",\n}\n\nexport default Vue.extend({\n name: \"ETimelineMilestone\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n milestone: {\n type: Object as PropType<TimelineMilestoneEvent>,\n required: true,\n },\n size: {\n type: Number,\n default: 18,\n },\n borderColor: {\n type: String,\n default: \"#eee\",\n },\n backgroundColor: {\n type: String,\n default: \"#aaa\",\n },\n borderWidth: {\n type: Number,\n default: 2,\n },\n transitionDuration: {\n type: Number,\n default: 500,\n },\n dot: {\n type: Boolean,\n default: false,\n },\n dotSize: {\n type: Number,\n default: 8,\n },\n lineWidth: {\n type: Number,\n default: 2,\n },\n lineHeight: {\n type: Number,\n default: 28,\n },\n },\n data() {\n return {\n milestoneClasses,\n timeouts: [] as number[],\n isInitialRender: true,\n isMouseOver: false,\n }\n },\n computed: {\n transitionStyles(): Record<string, any> {\n if (this.isInitialRender) {\n return {}\n }\n\n return {\n transition: `transform ${this.transitionDuration}ms, width ${this.transitionDuration}ms, height ${this.transitionDuration}ms, padding ${this.transitionDuration}ms, border-radius ${this.transitionDuration}ms`,\n }\n },\n sizeStyles(): Record<string, any> {\n if (this.dot) {\n return {}\n }\n\n return {\n width: `${this.size}px`,\n height: `${this.size}px`,\n }\n },\n positionStyles(): Record<string, any> {\n if (!(this.dot && this.isMouseOver)) {\n return {}\n }\n\n return {\n transform: `translateY(calc(-100% - ${this.lineHeight}px))`,\n }\n },\n styles(): Record<string, any> {\n return {\n ...this.sizeStyles,\n ...this.positionStyles,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n borderWidth: `${this.borderWidth}px`,\n borderStyle: \"solid\",\n ...this.transitionStyles,\n }\n },\n contentStyles(): Record<string, any> {\n return this.transitionStyles\n },\n computedTransitionDuration(): number {\n if (this.isInitialRender) {\n return 0\n }\n\n return this.transitionDuration\n },\n labelStyles(): Record<string, any> {\n return {\n transition: `opacity ${this.computedTransitionDuration}ms`,\n }\n },\n dotContainerStyles(): Record<string, any> {\n return {\n top: this.isMouseOver\n ? `calc(100% - ${this.borderWidth}px)`\n : `calc(50% + ${this.dotSize / 2}px)`,\n height: `calc(${this.lineHeight}px + ${this.dotSize}px)`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n lineStyles(): Record<string, any> {\n return {\n bottom: `${this.dotSize / 2}px`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n width: `${this.lineWidth}px`,\n height: this.isMouseOver ? `${this.lineHeight}px` : \"0\",\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n dotStyles(): Record<string, any> {\n return {\n top: `${this.lineHeight}px`,\n left: `calc(50% - ${this.dotSize}px / 2)`,\n width: `${this.dotSize}px`,\n height: `${this.dotSize}px`,\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n },\n mounted() {\n this.$nextTick(() => {\n if (!this.dot) {\n this.onMilestoneMouseOver()\n this.onMilestoneMouseLeave()\n }\n this.isInitialRender = false\n })\n },\n methods: {\n onMilestoneMouseOver(e?: MouseEvent) {\n this.isMouseOver = true\n\n if (this.dot) {\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n const contentFirstChild = content.children[0] as HTMLElement | undefined\n if (!contentFirstChild) {\n return\n }\n\n const contentBox = contentFirstChild.getBoundingClientRect()\n const existingTimeoutId = container.dataset.timeoutId\n if (existingTimeoutId) {\n clearTimeout(Number(existingTimeoutId))\n container.dataset.timeoutId = \"\"\n }\n\n if (!container.dataset.initialWidth) {\n container.dataset.initialWidth = container.style.width\n }\n if (!container.dataset.initialHeight) {\n container.dataset.initialHeight = container.style.height\n }\n if (!container.dataset.initialContentWidth) {\n container.dataset.initialContentWidth = String(contentBox.width)\n }\n if (!container.dataset.initialContentHeight) {\n container.dataset.initialContentHeight = String(contentBox.height)\n }\n\n container.dataset.transitionStart = String(Date.now())\n container.style.width = container.dataset.initialContentWidth + \"px\"\n container.style.height = container.dataset.initialContentHeight + \"px\"\n container.style.borderRadius = \"0.5em\"\n container.classList.add(milestoneClasses.milestoneHovered)\n content.style.opacity = \"1\"\n content.style.width = container.dataset.initialContentWidth + \"px\"\n content.style.height = container.dataset.initialContentHeight + \"px\"\n },\n onMilestoneMouseMove() {\n this.timeouts.forEach((timeoutId) => clearTimeout(timeoutId))\n this.isMouseOver = true\n },\n onMilestoneMouseLeave(e?: MouseEvent) {\n if (this.dot) {\n this.timeouts.push(\n setTimeout(() => {\n this.isMouseOver = false\n }, this.transitionDuration + 100) as unknown as number\n )\n\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n container.style.width = container.dataset.initialWidth || \"\"\n container.style.height = container.dataset.initialHeight || \"\"\n container.style.borderRadius = \"10em\"\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n content.style.width = \"0\"\n content.style.height = \"0\"\n content.style.opacity = \"0\"\n const transitionDuration =\n Date.now() - Number(container.dataset.transitionStart)\n const timeoutDuration =\n transitionDuration > this.transitionDuration\n ? this.transitionDuration\n : transitionDuration\n const timeoutId = setTimeout(() => {\n container.classList.remove(milestoneClasses.milestoneHovered)\n container.dataset.timeoutId = \"\"\n }, timeoutDuration)\n container.dataset.timeoutId = String(timeoutId)\n this.timeouts.push(timeoutId as unknown as number)\n },\n onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent) {\n this.$emit(\"milestone-click\", milestone)\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport { Axis, D3ZoomEvent, ZoomBehavior } from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { defaultAxesConfig } from \"@/components/ETimeline.config\"\nimport {\n TimelineAxesConfig,\n TimelineAxis,\n TimelineChartType,\n TimelineCountEvent,\n TimelineEvent,\n TimelineEventsByType,\n TimelineEventsGroup,\n TimelineInterval,\n TimelineIntervalChangeTrigger,\n TimelineMarker,\n TimelinePrecision,\n TimelineTicksConfig,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\nimport { debounce, getRandomChars } from \"@/utils\"\nimport ETimelineMilestone, {\n milestoneClasses,\n} from \"@/components/ETimelineMilestone.vue\"\n\nconst classes = {\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n eventRect: \"event-rect\",\n eventBarContainer: \"event-bar-container\",\n eventBarContainerHovered: \"event-bar-container--hovered\",\n eventBarContainerSelected: \"event-bar-container--selected\",\n eventBar: \"event-bar\",\n eventBarHoverZone: \"event-bar-hover-zone\",\n eventBarCap: \"event-bar-cap\",\n eventRectText: \"event-rect-text\",\n eventRectHovered: \"event-rect--hovered\",\n eventRectSelected: \"event-rect--selected\",\n labelGroup: \"label-g\",\n labelBg: \"label-bg\",\n labelBgFill: \"label-bg-fill\",\n labelText: \"label-text\",\n loadingIndicator: \"loading-indicator\",\n xAxis: \"x-axis\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n marker: \"marker\",\n markerLabel: \"marker-label\",\n markerLine: \"marker-line\",\n markerDragged: \"marker--dragged\",\n milestone: \"milestone\",\n milestoneLine: \"milestone-line\",\n milestonesContainer: \"milestones\",\n milestoneHovered: \"milestone--hovered\",\n barChartGroup: \"bar-chart-group\",\n lineGraphGroup: \"line-graph-group\",\n lineGraphGroupLabel: \"line-graph-group-label\",\n lineGraphPath: \"line-graph-path\",\n lineGraphHoverZone: \"line-graph-hover-zone\",\n lineGraphDot: \"line-graph-dot\",\n curtain: \"curtain\",\n forbiddenInterval: \"forbidden-interval\",\n}\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ETimelineMilestone,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n xAxesConfig: {\n type: Object as PropType<TimelineAxesConfig>,\n default: () => defaultAxesConfig,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: String,\n default: undefined,\n },\n endDate: {\n type: String,\n default: undefined,\n },\n selectedTimestamp: {\n type: String,\n default: undefined,\n },\n showEventTooltip: {\n type: Boolean,\n default: true,\n },\n disableZoom: {\n type: Boolean,\n default: false,\n },\n insertZerosAtInterval: {\n type: String as PropType<TimelinePrecision>,\n default: undefined,\n },\n flattenLineGraphEnds: {\n type: Boolean,\n default: true,\n },\n curtains: {\n type: Boolean,\n default: false,\n },\n showLabels: {\n type: Boolean,\n default: true,\n },\n rectMinWidth: {\n type: Number,\n default: 1,\n },\n barHeight: {\n type: Number,\n default: 18,\n },\n barYPadding: {\n type: Number,\n default: 0,\n },\n barXPadding: {\n type: Number,\n default: 0,\n },\n chartMinHeight: {\n type: Number,\n default: 60,\n },\n chartMinLabelHeight: {\n type: Number,\n default: 18,\n },\n minZoom: {\n type: Number,\n default: 0.0001,\n },\n maxZoom: {\n type: Number,\n default: 850_000,\n },\n minDate: {\n type: String,\n default: undefined,\n },\n maxDate: {\n type: String,\n default: undefined,\n },\n cursorTimestamp: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n selectedClass: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n panOnDateClick: {\n type: Boolean,\n default: false,\n },\n panTransitionDuration: {\n type: Number,\n default: 800,\n },\n selectedDate: {\n type: String,\n default: \"\",\n },\n autoResize: {\n type: Boolean,\n default: true,\n },\n markers: {\n type: Array as PropType<Array<TimelineMarker>>,\n default: () => [],\n },\n stickyMarkers: {\n type: Boolean,\n default: true,\n },\n fitMarkersOnChange: {\n type: Boolean,\n default: false,\n },\n zoomToIntervalTransitionDuration: {\n type: Number,\n default: 800,\n },\n zoomToBoundariesTransitionDuration: {\n type: Number,\n default: 0,\n },\n milestoneBulletSize: {\n type: Number,\n default: 18,\n },\n milestonesFirst: {\n type: Boolean,\n default: true,\n },\n forbiddenIntervals: {\n type: Array as PropType<TimelineInterval[]>,\n default: () => [],\n },\n forbiddenIntervalColor: {\n type: String,\n default: \"#ddd\",\n },\n focusedInterval: {\n type: [Object, undefined] as PropType<TimelineInterval | undefined>,\n default: undefined,\n },\n locked: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n stopClickPropagation: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n tooltip: null as unknown as HTMLElement,\n cursor: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n wrapperDiv: null as unknown as HTMLElement,\n selectedTimestampCursor: null as unknown as HTMLElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axesContainer: null as unknown as d3.Selection<\n SVGGElement,\n any,\n any,\n any\n >,\n xAxes: {} as unknown as Record<TimelineAxis, Axis<Date>>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n initialTimeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n zoomBehavior: null as unknown as ZoomBehavior<SVGSVGElement, unknown>,\n isMouseDown: false,\n axisHeight: 22,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n isHoveringTimeline: false,\n hoveredTimestamp: null as unknown as string,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n lastTransform: { x: 0, k: 1 },\n transformDiff: { translation: 0, scale: 1 },\n yScale: null as unknown as d3.ScaleLinear<any, any>,\n hoveredCounts: [] as { count: number; type: string }[],\n countsByTimestamp: {} as Record<string, Record<string, number>>,\n dotsByTimestamp: {} as Record<\n string,\n d3.Selection<SVGCircleElement, any, any, any>[]\n >,\n visibleFrom: null as unknown as Date,\n visibleTo: null as unknown as Date,\n curtainHandleWidth: 5,\n leftCurtainWidth: 50,\n rightCurtainWidth: 50,\n isHoveringCurtain: false,\n isDraggingCurtain: false,\n characterWidth: 7.5,\n textPadding: 5,\n debouncedOnResize: (() => {}) as Function,\n isFirstPaint: true,\n timeouts: [] as number[],\n groupsVisibility: {} as Record<string, boolean>,\n markersPositions: {} as Record<\n string,\n { position: number; isHidden: boolean }\n >,\n markersDragBehavior: null as unknown as d3.DragBehavior<\n HTMLElement,\n TimelineMarker,\n any\n >,\n initialMarkerDragMouseOffset: 0,\n selectedMilestoneId: null as any,\n isInitialized: false,\n lastValidTransform: d3.zoomIdentity,\n lastPanTransform: d3.zoomIdentity,\n isZoomingInterval: false,\n defs: {\n transparencyGradient: \"transparency-gradient\" + getRandomChars(2),\n transparencyGradientLight:\n \"transparency-gradient-light\" + getRandomChars(2),\n loadingGradient: \"loading-gradient\" + getRandomChars(2),\n stripedPattern: \"stripedPattern\" + getRandomChars(2),\n },\n }\n },\n computed: {\n combinedBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (this.getBarGroupHeight(g) || this.barChartHeight),\n 0\n )\n },\n combinedBottomBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (g.bottom ? this.getBarGroupHeight(g) : 0),\n 0\n )\n },\n combinedMilestonesHeight(): number {\n return Object.values(this.milestonesGroups).reduce(\n (acc, g) => acc + (g.height || this.barChartHeight),\n 0\n )\n },\n milestonesYOffset(): number {\n return this.milestonesFirst\n ? 0\n : this.combinedBarsHeight -\n this.combinedBottomBarsHeight +\n (this.hasChart ? this.chartHeight : 0)\n },\n chartsYOffset(): number {\n return this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0\n },\n barsYOffset(): number {\n return (\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0)\n )\n },\n hasMilestones(): boolean {\n return Object.keys(this.milestonesGroups).length > 0\n },\n barChartHeight(): number {\n return this.barHeight + this.barYPadding\n },\n classes(): Record<string, string | Record<string, boolean>> {\n return {\n wrapper: {\n \"e-border-gray-700 e-timeline--dark\": this.dark,\n \"e-border-gray-300\": !this.dark,\n \"e-timeline--dragging\": this.isInteractingWithCurtain,\n },\n background: this.dark ? \"e-bg-gray-900\" : \"e-bg-gray-50\",\n tooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n eventTooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n }\n },\n lineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.lineGraph) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n chartHeight(): number {\n if (!this.showLabels) {\n return this.chartMinHeight\n }\n\n const chartLabelsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n const combinedLabelsHeight = chartLabelsCount * this.barChartHeight\n\n return Math.max(this.chartMinHeight, combinedLabelsHeight)\n },\n barGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (\n !eventsGroup.chartType ||\n [TimelineChartType.bars, TimelineChartType.dots].includes(\n eventsGroup.chartType\n )\n ) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n barChartGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.barChart) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n milestonesGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.milestones) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n hasChart(): boolean {\n const chartsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n\n return chartsCount > 0\n },\n labelRectWidth(): number {\n const eventsGroups = Object.values(\n this.eventsGroups\n ) as TimelineEventsGroup[]\n const maxLabelLength = eventsGroups.reduce((acc, eventsGroup) => {\n return Math.max(acc, eventsGroup.label?.length)\n }, 0)\n\n return maxLabelLength * this.characterWidth + 2 * this.textPadding\n },\n combinedXAxesHeight(): number {\n const axesCount = Object.keys(this.xAxesConfig).length - 1\n\n return this.axisHeight * axesCount\n },\n timelineHeight(): number {\n const chartHeight = this.hasChart ? this.chartHeight : 0\n\n return (\n chartHeight +\n this.combinedXAxesHeight +\n this.combinedBarsHeight +\n this.combinedMilestonesHeight\n )\n },\n filteredEventsGroups(): TimelineEventsByType {\n const entries = Object.entries(this.eventsGroups).filter(\n ([type, _group]) => this.getCurrentGroupVisibility(type)\n )\n\n return Object.fromEntries(entries) as TimelineEventsByType\n },\n allEventsSorted(): TimelineEvent[] {\n const flattenedEvents = (\n Object.values(this.filteredEventsGroups) as TimelineEventsGroup[]\n )\n .map((e: TimelineEventsGroup) => e.events)\n .flat()\n\n return this.getSortedEvents(flattenedEvents)\n },\n oldestEvent(): TimelineEvent {\n let oldestEvent\n if (this.allEventsSorted.length > 1) {\n oldestEvent = this.allEventsSorted[0]\n } else {\n const DAY = 86_400_000\n const yesterday = new Date(new Date().getTime() - DAY)\n\n oldestEvent = {\n timestamp: yesterday,\n }\n }\n\n return oldestEvent\n },\n latestEvent(): TimelineEvent {\n let latestEvent\n if (this.allEventsSorted.length > 1) {\n latestEvent = this.allEventsSorted[this.allEventsSorted.length - 1]\n } else {\n const defaultMaxDate = new Date()\n\n latestEvent = {\n timestamp: defaultMaxDate,\n }\n }\n\n return latestEvent\n },\n allLineChartTimestamps(): string[] {\n const allTimestamps = new Set()\n Object.values(this.lineGraphGroups).forEach((group) => {\n group.events.forEach((event) => {\n allTimestamps.add(event.timestamp)\n })\n })\n\n return Array.from(allTimestamps).sort() as unknown as string[]\n },\n placeholderLineChartGroup(): TimelineEvent[] {\n return this.fillTimeGaps(\n this.allLineChartTimestamps.map((timestamp) => ({\n timestamp,\n count: 0,\n }))\n )\n },\n filledGapsLineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.lineGraphGroups).reduce(\n (acc, [type, group]) => {\n return {\n ...acc,\n [type]: {\n ...group,\n events: this.fillEvents(group.events),\n },\n }\n },\n {}\n )\n },\n isInteractingWithCurtain(): boolean {\n return this.isHoveringCurtain || this.isDraggingCurtain\n },\n flattenedCounts(): TimelineCountEvent[] {\n return [\n ...Object.values(this.lineGraphGroups),\n ...Object.values(this.barChartGroups),\n ]\n .map((g) => g.events)\n .flat() as TimelineCountEvent[]\n },\n hiddenGroupsLabels(): Array<string> {\n return Object.entries(this.groupsVisibility).reduce<Array<string>>(\n (acc, [type, isVisible]) => (!isVisible ? [...acc, type] : acc),\n []\n )\n },\n minHoverZone(): number {\n return this.showLabels ? this.labelRectWidth : 0\n },\n sortedMarkers(): TimelineMarker[] {\n if (!this.isInitialized) {\n return []\n }\n\n return [...this.markers].sort((a, b) =>\n new Date(a.timestamp).getTime() > new Date(b.timestamp).getTime()\n ? 1\n : -1\n )\n },\n },\n watch: {\n dark() {\n this.handleDarkModeChange()\n },\n selectedTimestamp() {\n this.repositionSelectedTimestampCursor()\n },\n markers() {\n this.updateMarkers()\n if (this.fitMarkersOnChange) {\n this.zoomToFitMarkers()\n }\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n eventsGroups() {\n this.updateAndRedrawTimeline()\n },\n cursorTimestamp() {\n if (this.cursorTimestamp) {\n this.hoveredTimestamp = this.cursorTimestamp\n const timestamp = this.tzStringToDate(this.hoveredTimestamp)\n const cursorX = this.timeScale(timestamp)\n this.cursor.style.left = cursorX + \"px\"\n this.isHoveringTimeline = true\n } else {\n this.isHoveringTimeline = false\n }\n },\n selectedDate(date) {\n if (date && !this.locked) {\n this.panToTimestamp(date)\n }\n },\n groupsVisibility() {\n this.updateAndRedrawTimeline()\n },\n forbiddenIntervals() {\n this.updateForbiddenIntervals(true)\n },\n focusedInterval(interval) {\n if (interval && interval?.startDate && interval?.endDate) {\n this.zoomToTargetInterval(interval.startDate, interval.endDate)\n }\n },\n },\n created() {\n this.debouncedOnResize = debounce(this.handleResize, 100)\n },\n mounted() {\n this.initTimeline()\n },\n beforeDestroy() {\n this.clearTimeline()\n document.removeEventListener(\"mouseup\", this.handleDocumentMouseUp)\n },\n methods: {\n updateTimeline() {\n this.initOrUpdateSvg()\n this.updateXAxes()\n this.updateYScaleDomain()\n this.updateForbiddenIntervals()\n this.drawEventsGroups()\n this.updateCurtains()\n this.repositionSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.isInitialized = true\n },\n initTimeline(startDate?: string, endDate?: string) {\n this.initRefs()\n\n if (!this.timeline || this.timeline.offsetWidth === 0) {\n this.timeouts.push(\n setTimeout(this.initTimeline, 500) as unknown as number\n )\n\n return\n }\n\n this.initOrUpdateSvg()\n this.initDefs()\n this.initUtcOffset()\n this.initTimeScale(startDate, endDate)\n this.initXAxes()\n this.initYScale()\n this.initZoomBehavior()\n this.drawEventsGroups()\n\n if (this.curtains) {\n this.initCurtains()\n this.emitCurtainChange()\n }\n\n this.initSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.initial)\n\n if (this.selectedDate && this.panOnDateClick) {\n this.panToTimestamp(this.selectedDate)\n }\n\n this.isInitialized = true\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.cursor = this.$refs.cursor as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.selectedTimestampCursor = this.$refs.selectedTimestamp as HTMLElement\n this.wrapperDiv = this.$refs.wrapperDiv as HTMLElement\n },\n initOrUpdateSvg() {\n if (!this.svg) {\n this.svg = d3.select(this.timeline).append(\"svg\")\n }\n this.svg\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.timelineHeight)\n },\n initDefs() {\n const defsSelection = this.svg.append(\"defs\")\n\n Object.entries(this.filteredEventsGroups).forEach(\n ([type, eventsGroup]) => {\n const { color, chartType } = eventsGroup\n const gradient = defsSelection\n .append(\"linearGradient\")\n .attr(\"id\", `${this.defs.loadingGradient}-${type}`)\n .attr(\"x1\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"x2\", \"100%\")\n .attr(\"y2\", \"0%\")\n\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"0%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"50%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0.6\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"100%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n\n if (\n [TimelineChartType.lineGraph, TimelineChartType.barChart].includes(\n chartType as TimelineChartType\n )\n ) {\n const transparencyGradients = [\n {\n id: this.defs.transparencyGradientLight,\n stop: 38,\n opacity: 0.3,\n },\n {\n id: this.defs.transparencyGradient,\n stop: 130,\n opacity: 0.4,\n },\n ]\n\n transparencyGradients.forEach(({ id, stop, opacity }) => {\n const gradient = defsSelection\n .append(\"linearGradient\")\n .attr(\"id\", `${id}-${type}`)\n .attr(\"x1\", \"0%\")\n .attr(\"x2\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"y2\", \"100%\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"0%\")\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", opacity)\n gradient\n .append(\"stop\")\n .attr(\"offset\", `${stop}%`)\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", 0)\n })\n }\n }\n )\n\n const pattern = defsSelection\n .append(\"pattern\")\n .attr(\"id\", this.defs.stripedPattern)\n .attr(\"width\", 5)\n .attr(\"height\", 3)\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\"patternTransform\", \"rotate(45)\")\n pattern\n .append(\"rect\")\n .attr(\"width\", 1)\n .attr(\"height\", 4)\n .attr(\"transform\", \"translate(0,0)\")\n .attr(\"fill\", this.forbiddenIntervalColor)\n },\n initUtcOffset() {\n const sampleTimestamp =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n this.utcOffset = moment.parseZone(sampleTimestamp).utcOffset()\n },\n initTimeScale(start?: string, end?: string) {\n const startDate =\n start ||\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n end ||\n this.endDate ||\n this.latestEvent.timestamp ||\n this.latestEvent.endDate\n\n this.timeScale = d3\n .scaleTime()\n .domain([this.tzStringToDate(startDate), this.tzStringToDate(endDate)])\n .range([0, this.timeline.offsetWidth])\n this.initialTimeScale = this.timeScale.copy()\n this.updateCurrentTimeScaleDensity()\n },\n initXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.createAxis(axisName as TimelineAxis)\n this.xAxes[axisName as TimelineAxis] = axis\n this.svg\n .append(\"g\")\n .classed(classes.xAxis, true)\n .classed(`${classes.xAxis}-${axisName}`, true)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n this.updateXAxes()\n },\n updateXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.xAxes[axisName as TimelineAxis]\n axis!.tickSizeOuter(0)\n axis!.tickSizeInner(this.timelineHeight)\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n },\n initYScale() {\n this.yScale = d3.scaleLinear().range([this.chartHeight, 0])\n this.updateYScaleDomain()\n },\n updateYScaleDomain() {\n const [visibleStart, visibleEnd] = this.timeScale.domain()\n const filteredFlattenedCounts = this.flattenedCounts.filter((d) => {\n const eventStart = new Date(d.startDate || d.timestamp)\n const eventEnd = new Date(d.endDate || d.timestamp)\n\n return (\n (eventEnd >= visibleStart && eventEnd <= visibleEnd) ||\n (eventStart >= visibleStart && eventStart <= visibleEnd)\n )\n })\n\n const maxCount = d3.max(filteredFlattenedCounts, (d) => d.count) as number\n this.yScale.domain([0, maxCount])\n },\n initZoomBehavior() {\n if (this.disableZoom) {\n return\n }\n\n this.zoomBehavior = d3\n .zoom<SVGSVGElement, unknown>()\n .on(\"zoom\", this.handleZoom)\n .scaleExtent([this.minZoom, this.maxZoom])\n\n this.svg.call(this.zoomBehavior)\n this.svg.call(this.zoomBehavior.transform, d3.zoomIdentity)\n },\n zoomToFitMarkers() {\n const markersTimestamps = this.markers.map((marker) =>\n new Date(marker.timestamp).getTime()\n )\n if (markersTimestamps.length < 2) {\n return\n }\n\n const minTimestamp = Math.min(...markersTimestamps)\n const maxTimestamp = Math.max(...markersTimestamps)\n\n this.zoomToTargetInterval(minTimestamp, maxTimestamp)\n },\n zoomToTargetInterval(start?: string | number, end?: string | number) {\n if (!start || !end) {\n return\n }\n this.isZoomingInterval = true\n const t1 = new Date(start).getTime()\n const t2 = new Date(end).getTime()\n const domainSpan = this.initialTimeScale.domain().map((d) => d.getTime())\n const domainWidth = domainSpan[1] - domainSpan[0]\n const viewportSpan = t2 - t1\n const padding = 0.1 * viewportSpan\n const paddedViewportSpan = viewportSpan + 2 * padding\n let scaleFactor = domainWidth / paddedViewportSpan\n const scaleExtent = this.zoomBehavior.scaleExtent()\n scaleFactor = Math.min(\n Math.max(scaleFactor, scaleExtent[0]),\n scaleExtent[1]\n )\n\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(this.zoomBehavior.scaleTo, scaleFactor)\n .on(\"end\", () => this.translateIntervalIntoView(t1, t2, scaleFactor))\n },\n translateIntervalIntoView(\n minTimestamp: number,\n maxTimestamp: number,\n scaleFactor: number\n ) {\n const scaledMinTimestampPosition = this.timeScale(new Date(minTimestamp))\n const scaledMaxTimestampPosition = this.timeScale(new Date(maxTimestamp))\n const centerPoint =\n (scaledMinTimestampPosition + scaledMaxTimestampPosition) / 2\n const svgCenter = this.svg.node()!.getBoundingClientRect().width / 2\n const translateX = svgCenter - centerPoint\n const currentTransform = d3.zoomTransform(this.svg.node()!)\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity\n .translate(currentTransform.x + translateX, currentTransform.y)\n .scale(scaleFactor)\n )\n .on(\"end\", () => {\n this.isZoomingInterval = false\n })\n },\n initSelectedTimestampCursor() {\n this.svg\n .append(\"line\")\n .attr(\"class\", classes.selectedTimestampCursor)\n .style(\"stroke\", \"red\")\n .style(\"stroke-width\", \"1px\")\n .style(\"opacity\", 0)\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", 0)\n this.repositionSelectedTimestampCursor()\n },\n updateMarkers() {\n if (!this.markers.length) {\n return\n }\n const padding = 12\n const overlapThreshold = 200\n this.sortedMarkers.forEach((marker, i, markersArray) => {\n const timestamp =\n typeof marker.timestamp === \"string\"\n ? this.tzStringToDate(marker.timestamp)\n : marker.timestamp\n const markerX = this.timeScale(timestamp)\n\n let isHidden = false\n const position = this.stickyMarkers\n ? Math.max(markerX, i * padding)\n : markerX\n if (i < markersArray.length - 1) {\n const nextMarker = markersArray[i + 1]\n const nextTimestamp =\n typeof nextMarker.timestamp === \"string\"\n ? this.tzStringToDate(nextMarker.timestamp)\n : nextMarker.timestamp\n const nextMarkerX = this.timeScale(nextTimestamp)\n const nextMarkerPosition = this.stickyMarkers\n ? Math.max(nextMarkerX, (i + 1) * padding)\n : markerX\n isHidden = nextMarkerPosition - position < overlapThreshold + padding\n }\n this.markersPositions = {\n ...this.markersPositions,\n [marker.id]: {\n isHidden,\n position,\n },\n }\n })\n this.initMarkersDragBehavior()\n },\n updateAndRedrawTimeline() {\n this.updateTimeline()\n },\n clearTimeline() {\n if (this.svg) {\n this.svg.remove()\n }\n this.countsByTimestamp = {}\n },\n repositionSelectedTimestampCursor() {\n const cursor = this.svg.select(`.${classes.selectedTimestampCursor}`)\n if (!this.selectedTimestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.selectedTimestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor.attr(\"x1\", cursorX).attr(\"x2\", cursorX).style(\"opacity\", 0.5)\n } else {\n cursor.style(\"opacity\", 0)\n }\n\n cursor.attr(\"y2\", this.timelineHeight)\n },\n updateCurrentTimeScaleDensity() {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n\n const newDensity = (timeAtPixel1 - timeAtPixel0) / HOUR\n if (!isNaN(newDensity)) {\n this.currentTimeScaleDensity = newDensity\n }\n },\n registerEventsListeners() {\n document.addEventListener(\"mouseup\", this.handleDocumentMouseUp)\n this.svg.on(\"mousedown\", this.handleMouseDown)\n this.svg.on(\"mousemove\", this.handleMouseMove)\n this.svg.on(\"click\", this.handleClick)\n this.svg.on(\"mouseleave\", this.handleMouseLeave)\n },\n emitVisibleInterval(trigger: TimelineIntervalChangeTrigger) {\n const visibleFrom = this.timeScale.invert(0)\n const visibleTo = this.timeScale.invert(this.timeline.offsetWidth)\n\n if (\n this.visibleFrom &&\n this.visibleFrom.getTime() === visibleFrom.getTime() &&\n this.visibleTo &&\n this.visibleTo.getTime() === visibleTo.getTime()\n ) {\n return\n }\n\n this.visibleFrom = visibleFrom\n this.visibleTo = visibleTo\n\n const fromDate = this.dateToTzString(this.visibleFrom)\n const toDate = this.dateToTzString(this.visibleTo)\n\n this.$emit(\"visible-interval-change\", {\n fromDate,\n toDate,\n trigger,\n transform: this.transformDiff,\n })\n },\n createAxis(axisName: TimelineAxis) {\n const axis = this.xAxesConfig[axisName as TimelineAxis]\n const config = this.getAxisTicksConfig(axis)\n\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(config.interval)\n .tickFormat(config.formatFn)\n .tickSizeOuter(0)\n .tickSizeInner(this.timelineHeight)\n },\n getAxisTicksConfig(configs: TimelineTicksConfig[]) {\n const { interval, format } = configs.find(\n (config) =>\n config.precision >= this.currentTimeScaleDensity && config.interval\n ) as TimelineTicksConfig\n\n const formatFn = (d: Date): string => {\n return typeof format === \"function\"\n ? format(d)\n : d3.timeFormat(format)(d)\n }\n\n return {\n formatFn,\n interval,\n }\n },\n onResize(resizeObserverEntry: ResizeObserverEntry) {\n if (this.isFirstPaint) {\n this.handleResize(resizeObserverEntry)\n this.isFirstPaint = false\n } else {\n this.debouncedOnResize(resizeObserverEntry)\n }\n },\n handleResize({ contentRect }: ResizeObserverEntry) {\n if (!this.svg) {\n return\n }\n\n this.svg.attr(\"width\", contentRect.width)\n this.updateAndRedrawTimeline()\n },\n handleDarkModeChange() {\n if (!this.showLabels) {\n return\n }\n\n const that = this\n this.svg.selectAll(`.${classes.labelBg}`).each(function () {\n const label = d3.select(this)\n label.style(\"fill\", that.dark ? \"black\" : \"white\")\n })\n this.svg.selectAll(`.${classes.labelBgFill}`).each(function () {\n const bgFill = d3.select(this)\n const color = (bgFill.node()! as HTMLElement).dataset.color\n bgFill\n .style(\"fill\", that.getLabelBackgroundColor(color as string))\n .style(\"stroke\", that.getTextFillColor(color as string))\n .style(\"stroke-width\", 0.25)\n })\n this.svg.selectAll(`.${classes.labelText}`).each(function () {\n const text = d3.select(this)\n const color = (text.node()! as HTMLElement).dataset.color\n text.style(\"fill\", that.getTextFillColor(color as string))\n })\n },\n handleMouseDown() {\n this.isMouseDown = true\n },\n handleDocumentMouseUp(_e: MouseEvent) {\n this.isMouseDown = false\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n this.$emit(\"hovered-timestamp\", undefined)\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isMouseDown) {\n return\n }\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n this.isHoveringTimeline = false\n\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n this.hoveredTimestamp = this.dateToTzString(date)\n this.isHoveringTimeline = true\n this.$emit(\"hovered-timestamp\", this.hoveredTimestamp)\n this.cursor.style.left = mouseX + \"px\"\n\n if (!this.tooltip) {\n return\n }\n\n this.eventTooltipStyle = {\n left: `${mouseX}px`,\n bottom: `${this.timeline.getBoundingClientRect().height}px`,\n zIndex: 100,\n }\n },\n handleClick(event: MouseEvent) {\n const mouseX = event.offsetX\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n const formattedDateTz = this.dateToTzString(date)\n\n if (this.isHoveringEvent) {\n this.$emit(\"event-clicked\", {\n event: this.hoveredEvent,\n type: this.hoveredEventType,\n })\n\n if (this.stopClickPropagation) {\n return\n }\n }\n\n this.$emit(\"date-clicked\", formattedDateTz)\n\n if (this.panOnDateClick) {\n this.panToTimestamp(formattedDateTz)\n }\n },\n handleMarkerClick(marker: TimelineMarker) {\n this.$emit(\"marker-clicked\", marker)\n if (this.panOnDateClick) {\n this.panToTimestamp(marker.timestamp)\n }\n },\n handleLineMouseOver(\n _event: MouseEvent,\n eventData: TimelineCountEvent,\n eventType: string\n ) {\n this.hoveredCounts = Object.entries(\n this.countsByTimestamp[`${eventData.timestamp}`]\n ).reduce((acc, entry) => {\n const [type, count] = entry\n\n return [...acc, { type, count }]\n }, [] as { type: string; count: number }[])\n this.hoveredEvent = eventData\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", {\n eventData,\n eventType,\n hoveredCounts: this.hoveredCounts,\n })\n },\n handleLineMouseOut() {\n this.isHoveringEvent = false\n this.hoveredCounts = []\n this.$emit(\"event-mouseout\")\n },\n handleBarMouseOver(\n event: MouseEvent,\n eventData: TimelineEvent,\n eventType: string\n ) {\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n this.hoveredEvent = eventData\n this.hoveredEventType = eventType\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleBarMouseOut() {\n this.isHoveringEvent = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.$emit(\"event-mouseout\")\n },\n handleLabelMouseOver(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n true\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n true\n )\n },\n handleLabelMouseLeave(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n false\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n false\n )\n },\n isZoomAllowed(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (this.isZoomingInterval) {\n return true\n }\n const scaleCopy = this.initialTimeScale.copy()\n const newDomain = event.transform.rescaleX(scaleCopy).domain()\n const minDateLimit = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDateLimit = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n return (\n (!minDateLimit || newDomain[0] >= minDateLimit) &&\n (!maxDateLimit || newDomain[1] <= maxDateLimit)\n )\n },\n handleZoom(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (!this.isZoomAllowed(event)) {\n event?.sourceEvent?.preventDefault()\n this.svg.call(this.zoomBehavior.transform, this.lastValidTransform)\n\n return\n }\n this.lastValidTransform = event.transform\n const newScale = event.transform.rescaleX(this.initialTimeScale)\n this.timeScale.domain(newScale.domain())\n this.$emit(\"time-scale-change\", this.timeScale.copy())\n\n this.updateCurrentTimeScaleDensity()\n this.updateYScaleDomain()\n const scale = event.transform.k / this.lastTransform.k\n this.transformDiff = {\n scale: scale,\n translation: event.transform.x - this.lastTransform.x,\n }\n this.lastTransform = { ...event.transform }\n\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, newScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsBars()\n this.updateLineGraphs()\n this.updateBarChart()\n this.updateLineGraphHoverZones()\n this.updateMilestonesPositions()\n this.repositionSelectedTimestampCursor()\n this.updateForbiddenIntervals()\n this.updateMarkers()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.zoom)\n if (this.curtains) {\n this.emitCurtainChange()\n }\n },\n panToTimestamp(targetTimestamp: string | Date) {\n const targetDate = this.tzStringToDate(targetTimestamp)\n const targetX = this.timeScale(targetDate)\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const translateX =\n currentTransform.x - targetX + this.timeline.offsetWidth / 2\n const newDomainStart = this.timeScale.invert(\n -translateX / currentTransform.k\n )\n const newDomainEnd = this.timeScale.invert(\n (this.timeline.offsetWidth - translateX) / currentTransform.k\n )\n const minDate = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDate = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n if (\n (minDate && newDomainStart < minDate) ||\n (maxDate && newDomainEnd > maxDate)\n ) {\n console.log(\"Pan operation would exceed bounds. Operation cancelled.\")\n\n return\n }\n\n const scaleChange = currentTransform.k / this.lastPanTransform.k\n const transitionDuration =\n scaleChange < 10 ? this.panTransitionDuration : 0\n // @ts-ignore\n this.lastPanTransform = { ...currentTransform }\n this.svg\n .transition()\n .duration(transitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(currentTransform.k)\n )\n .on(\"end\", () => {\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.autoPan)\n })\n },\n emitCurtainChange() {\n const { startDate, endDate } = this.calculateDateRangeFromCurtains()\n this.$emit(\"curtain-range-change\", {\n startDate: new Date(startDate).toISOString(),\n endDate: new Date(endDate).toISOString(),\n })\n },\n calculateDateRangeFromCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const fullRange = this.timeScale.domain()\n const totalDuration = fullRange[1].getTime() - fullRange[0].getTime()\n\n const leftDuration =\n ((this.leftCurtainWidth - this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n const rightDuration =\n ((this.rightCurtainWidth + this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n\n const startDate = new Date(fullRange[0].getTime() + leftDuration)\n const endDate = new Date(fullRange[1].getTime() - rightDuration)\n\n return { startDate, endDate }\n },\n handleDragStart() {\n this.isDraggingCurtain = true\n },\n handleDragEnd() {\n this.isDraggingCurtain = false\n },\n handleLeftDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n const newWidth = Math.min(\n event.x,\n this.timeline.offsetWidth - this.rightCurtainWidth\n )\n this.leftCurtainWidth = Math.max(0, newWidth)\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n this.emitCurtainChange()\n },\n handleRightDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n\n const timelineWidth = this.timeline.offsetWidth\n const newWidth = Math.min(\n this.timeline.offsetWidth - event.x,\n this.timeline.offsetWidth - this.leftCurtainWidth\n )\n const newX = timelineWidth - newWidth\n this.rightCurtainWidth = Math.max(0, newWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\"width\", this.rightCurtainWidth)\n .attr(\"x\", newX)\n\n this.emitCurtainChange()\n },\n zoomToStartAndEndDates() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n const startTime = this.tzStringToDate(startDate)\n const endTime = this.tzStringToDate(endDate)\n this.initialTimeScale.domain([startTime, endTime])\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const totalDuration = endTime.getTime() - startTime.getTime()\n const currentDuration = this.initialTimeScale\n .range()\n .map((d) => this.initialTimeScale.invert(d))\n .reduce((acc, curr) => curr.getTime() - acc, 0)\n const scale = (currentDuration / totalDuration) * currentTransform.k\n const targetStartX = this.initialTimeScale(startTime) * scale\n const translateX = -targetStartX\n const [minScale, maxScale] = this.zoomBehavior.scaleExtent()\n const newScale = Math.max(minScale, Math.min(maxScale, scale))\n\n this.svg\n .transition()\n .duration(this.zoomToBoundariesTransitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(newScale)\n )\n },\n rescaleAxis(axisName: string, newScale: d3.ScaleTime<any, any, unknown>) {\n const axis: Axis<Date> = this.xAxes[axisName as TimelineAxis]\n const ticksConfig = this.getAxisTicksConfig(\n this.xAxesConfig[axisName as TimelineAxis]\n )\n axis\n .scale(newScale)\n .ticks(ticksConfig.interval)\n .tickFormat(ticksConfig.formatFn)\n .tickSizeOuter(0)\n this.svg.select<SVGGElement>(`.${classes.xAxis}-${axisName}`).call(axis)\n },\n translateTicksText(axisName: string) {\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n let textBBox = (textElement.node() as SVGGraphicsElement).getBBox()\n textElement\n .attr(\"x\", textBBox.height / 2)\n .attr(\"y\", 0)\n .style(\"text-anchor\", \"start\")\n })\n },\n updateEventsBars() {\n const rectsAndDots = `.${classes.eventGroup} > rect.${classes.eventRect}`\n const rectsOnly = `${rectsAndDots}:not(.${classes.eventRect}--dot)`\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsAndDots)\n .attr(\"x\", this.getEventRectX)\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsOnly)\n .attr(\"width\", this.getEventRectWidth)\n\n const eventTextSelector = `.${classes.eventGroup} > text.${classes.eventRectText}`\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(eventTextSelector)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .text(this.getEventText)\n },\n updateBarChart() {\n const groupsCount = Object.keys(this.barChartGroups).length\n Object.keys(this.barChartGroups).forEach((type, index) => {\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const containerSelector = `.${classes.eventBarContainer}-${type}`\n const container = this.svg.selectAll(containerSelector)\n\n // Hover zones\n const hoverZoneSelector = `.${classes.barChartGroup} rect.${classes.eventBarHoverZone}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(hoverZoneSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n\n // Bars\n const barSelector = `.${classes.barChartGroup} rect.${classes.eventBar}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n .attr(\"height\", getH)\n\n // Bar caps\n const barCapSelector = `.${classes.barChartGroup} rect.${classes.eventBarCap}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barCapSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n })\n },\n updateLineGraphs() {\n Object.entries(this.lineGraphGroups).forEach(([type]) => {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n this.svg\n .selectAll<SVGPathElement, TimelineCountEvent[]>(\n `.${classes.lineGraphPath}-${type}`\n )\n .attr(\"d\", (d) => area(d))\n })\n },\n updateLineGraphHoverZones() {\n Object.keys(this.lineGraphGroups).forEach((type) => {\n const that = this\n this.svg\n .selectAll<SVGCircleElement, TimelineCountEvent>(\n `.${classes.lineGraphDot}-${type}`\n )\n .each(function (d) {\n d3.select(this)\n .attr(\"cx\", that.timeScale(that.tzStringToDate(d.timestamp)))\n .attr(\"cy\", that.yScale(d.count))\n })\n\n this.svg\n .selectAll<SVGRectElement, TimelineCountEvent>(\n `.${classes.lineGraphHoverZone}-${type}`\n )\n .each(function (d) {\n const x =\n that.timeScale(that.tzStringToDate(d.timestamp).getTime()) - 15\n d3.select(this)\n .attr(\"x\", x)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", that.chartHeight)\n })\n })\n },\n getEventRectX(d: TimelineEvent) {\n if (\n isNaN(this.timeScale(this.tzStringToDate(d.startDate || d.timestamp)))\n ) {\n return 0\n }\n\n return this.timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n getEventRectWidth(d: TimelineEvent) {\n if (!d) {\n return 0\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width =\n this.timeScale(endTimestamp) - this.timeScale(startTimestamp)\n\n return Math.max(width, this.rectMinWidth)\n } else {\n const oneSecondWidth = 1 / (this.currentTimeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, this.rectMinWidth)\n }\n },\n getEventText(e: TimelineEvent): string {\n const rectWidth = this.getEventRectWidth(e)\n const maxCharacters = (rectWidth - this.textPadding) / this.characterWidth\n\n if (maxCharacters < 4) {\n return \"\"\n } else if (e.text?.length <= maxCharacters) {\n return e.text\n } else {\n return `${e.text.slice(0, maxCharacters - 3)}...`\n }\n },\n getElementLeftPosition(element: HTMLElement) {\n if (!element) {\n return 0\n }\n\n const style = window.getComputedStyle(element)\n\n return parseInt(style.left)\n },\n isTimestampAllowedForMarker(\n timestamp: Date | number,\n marker: TimelineMarker\n ) {\n return (\n (marker.minDate\n ? timestamp >= this.tzStringToDate(marker.minDate)\n : true) &&\n (marker.maxDate\n ? timestamp <= this.tzStringToDate(marker.maxDate)\n : true)\n )\n },\n handleMarkerDrag({\n marker,\n markerElement,\n dragEvent,\n }: {\n marker: TimelineMarker\n markerElement: d3.Selection<any, TimelineMarker, any, any>\n dragEvent: d3.D3DragEvent<any, TimelineMarker, any>\n }) {\n if (!marker.isDraggable) {\n return\n }\n\n if (dragEvent.type === \"start\") {\n this.initialMarkerDragMouseOffset =\n dragEvent.x -\n markerElement\n .node()\n .querySelector(`.${classes.markerLine}`)\n .getBoundingClientRect().left\n markerElement.classed(classes.markerDragged, true)\n }\n\n const targetLeft = dragEvent.x - this.initialMarkerDragMouseOffset\n const newTimestamp = this.timeScale.invert(\n targetLeft - this.svg.node()!.getBoundingClientRect().left\n ) as Date\n const newPosition = this.timeScale(newTimestamp)\n const isNewTimestampAllowed = this.isTimestampAllowedForMarker(\n newTimestamp,\n marker\n )\n\n if (dragEvent.type === \"drag\" && isNewTimestampAllowed) {\n markerElement.attr(\"style\", `left: ${newPosition}px`)\n }\n\n if (dragEvent.type === \"end\" && isNewTimestampAllowed) {\n const id = marker.id || (marker.timestamp as string)\n this.markersPositions = {\n ...this.markersPositions,\n [id]: {\n ...this.markersPositions[id],\n position: newPosition,\n },\n }\n markerElement.classed(classes.markerDragged, false)\n }\n\n if (dragEvent.type !== \"start\") {\n this.$emit(`marker-drag-${dragEvent.type}`, {\n marker,\n newTimestamp: newTimestamp.toISOString(),\n })\n }\n },\n removeMarkersDragBehavior() {\n if (!this.markersDragBehavior) {\n return\n }\n this.markersDragBehavior\n .on(\"start\", null)\n .on(\"drag\", null)\n .on(\"end\", null)\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`).call(\n this.markersDragBehavior\n )\n },\n initMarkersDragBehavior() {\n this.removeMarkersDragBehavior()\n type MarkerDragEvent = d3.D3DragEvent<any, TimelineMarker, any>\n const that = this\n this.markersDragBehavior = d3\n .drag<HTMLElement, TimelineMarker>()\n .on(\"start\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n event.sourceEvent?.preventDefault()\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"drag\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"end\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`)\n .data(this.sortedMarkers)\n .call(this.markersDragBehavior)\n },\n initCurtains() {\n this.createCurtains()\n this.updateCurtains()\n },\n createCurtains() {\n if (!this.curtains) {\n return\n }\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--left`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleLeftDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--right`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleRightDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.updateCurtains()\n },\n updateCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const timelineHeight = this.timelineHeight\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"x\", -this.curtainHandleWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\n \"x\",\n timelineWidth - this.rightCurtainWidth + this.curtainHandleWidth\n )\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"width\", this.rightCurtainWidth + this.curtainHandleWidth * 2)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n },\n updateForbiddenIntervals(reset = false) {\n if (reset) {\n this.svg.selectAll(`.${classes.forbiddenInterval}`).remove()\n }\n\n const visibleDomain = this.timeScale.domain()\n this.forbiddenIntervals.forEach((interval, index) => {\n const startTime =\n interval.startDate === -Infinity\n ? visibleDomain[0]\n : this.tzStringToDate(interval.startDate)\n const endTime =\n interval.endDate === Infinity\n ? visibleDomain[1]\n : this.tzStringToDate(interval.endDate)\n\n const startX = this.timeScale(startTime)\n const endX = this.timeScale(endTime)\n const width = Math.max(endX - startX, 0)\n let rect: d3.Selection<SVGRectElement, unknown, null, undefined> =\n this.svg.select(`.${classes.forbiddenInterval}-${index}`)\n\n if (rect.empty()) {\n rect = this.svg\n .append(\"rect\")\n .attr(\n \"class\",\n `${classes.forbiddenInterval} ${classes.forbiddenInterval}-${index}`\n )\n .attr(\"fill\", `url(#${this.defs.stripedPattern})`)\n }\n rect\n .attr(\"x\", startX)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", this.timelineHeight)\n })\n },\n drawEventsGroups() {\n this.svg.selectAll(`g.${classes.eventGroup}`).remove()\n this.svg.selectAll(`.${classes.barChartGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroupLabel}`).remove()\n this.svg.selectAll(`.${classes.loadingIndicator}`).remove()\n\n this.drawLineGraphEventsGroups()\n this.drawBarEventsGroups()\n this.drawBarChartEventsGroups()\n this.drawMilestonesPlaceholder()\n },\n drawLineGraphEventsGroups() {\n const yOffset = this.combinedXAxesHeight + this.chartsYOffset\n const eventsGroups = this.insertZerosAtInterval\n ? this.filledGapsLineGraphGroups\n : this.lineGraphGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup]) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.lineGraphGroup} ${classes.lineGraphGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawLineGraph({\n events,\n gElement,\n color,\n type,\n })\n this.drawLineGraphHoverZones({\n events: events as TimelineCountEvent[],\n gElement,\n color,\n type,\n })\n })\n\n Object.entries(this.lineGraphGroups).forEach(\n ([type, eventsGroup], index) => {\n const { color, isLoading, label } = eventsGroup\n const labelHeight = Math.max(\n this.chartMinLabelHeight,\n this.barChartHeight\n )\n const labelYPosition = this.chartHeight - labelHeight * (index + 1)\n const loadingIndicatorYPosition =\n yOffset + this.chartHeight - labelHeight\n const labelsGElement = this.svg\n .append(\"g\")\n .classed(classes.lineGraphGroupLabel, true)\n .attr(\"transform\", `translate(0,${yOffset})`)\n .on(\"mouseover\", () => this.handleLabelMouseOver(type))\n .on(\"mouseleave\", () => this.handleLabelMouseLeave(type))\n\n this.drawProgressIndicator({\n type,\n color,\n isLoading,\n yPosition: loadingIndicatorYPosition,\n })\n this.drawTextLabel({\n color,\n label,\n type,\n height: labelHeight,\n yPosition: labelYPosition,\n gElement: labelsGElement,\n })\n }\n )\n },\n drawLineGraph({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n const clipPathId = `clip-${type}`\n gElement\n .append(\"defs\")\n .append(\"clipPath\")\n .attr(\"id\", clipPathId)\n .append(\"rect\")\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.chartHeight)\n\n gElement\n .append(\"path\")\n .datum(events as TimelineCountEvent[])\n .classed(`${classes.lineGraphPath}-${type}`, true)\n .attr(\"fill\", `url(#${this.defs.transparencyGradientLight}-${type})`)\n .attr(\"stroke\", color)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\")\n .attr(\"stroke-width\", 1)\n .attr(\"d\", (d) => area(d))\n .attr(\"clip-path\", `url(#${clipPathId})`)\n },\n drawLineGraphHoverZones({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineCountEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n events.forEach((event: TimelineCountEvent) => {\n const timestamp = `${event.timestamp}`\n this.countsByTimestamp[timestamp] = {\n ...(this.countsByTimestamp[timestamp] || {}),\n [type]: event.count,\n }\n\n const circle = gElement\n .append(\"circle\")\n .classed(\n `${classes.lineGraphDot} ${classes.lineGraphDot}-${type}`,\n true\n )\n .attr(\"cx\", this.timeScale(this.tzStringToDate(event.timestamp)))\n .attr(\"cy\", this.yScale(event.count))\n .attr(\"r\", 1.5)\n .attr(\"fill\", color)\n .attr(\"stroke-width\", 0)\n .datum(event)\n\n this.dotsByTimestamp[timestamp] = [\n ...(this.dotsByTimestamp[timestamp] || []),\n circle,\n ]\n\n gElement\n .append(\"rect\")\n .classed(`${classes.lineGraphHoverZone}-${type}`, true)\n .attr(\"x\", this.timeScale(this.tzStringToDate(event.timestamp)) - 15)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", this.chartHeight)\n .attr(\"fill\", \"transparent\")\n .datum(event)\n .on(\"mouseover\", (e) => {\n this.handleLineMouseOver(e, event, type)\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, true)\n )\n })\n .on(\"mouseout\", () => {\n this.handleLineMouseOut()\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, false)\n )\n })\n })\n },\n drawSingleBarEventsGroup({\n type,\n eventsGroup,\n milestone,\n dots,\n dotsSize,\n bottom,\n }: {\n type: string\n eventsGroup: TimelineEventsGroup\n milestone?: boolean\n dots?: boolean\n dotsSize?: number\n bottom?: boolean\n }) {\n const {\n color,\n bgColor,\n label,\n events,\n barBorderRadius,\n isLoading,\n height,\n chartType,\n } = eventsGroup as TimelineEventsGroup\n let yPosition = this.getBarGroupYPosition(type, bottom)\n const isBarsGroup = [\n TimelineChartType.bars,\n TimelineChartType.dots,\n undefined,\n ].includes(chartType)\n const backgroundHeight = isBarsGroup\n ? this.getBarGroupHeight(eventsGroup)\n : height\n if (milestone) {\n yPosition = this.getMilestoneGroupYPosition(type)\n }\n\n this.drawProgressIndicator({\n yPosition,\n type,\n color,\n isLoading,\n })\n\n const gElement = this.svg\n .append(\"g\")\n .attr(\"data-color\", color)\n .classed(classes.eventGroup, true)\n .classed(`${classes.eventGroup}-${type}`, true)\n\n this.drawBackground({\n color: bgColor || color,\n gElement,\n yPosition,\n height: backgroundHeight,\n })\n if (milestone || dots) {\n const lineWidth = dots ? 1 : 2\n const linePosition = yPosition + backgroundHeight / 2\n gElement\n .append(\"line\")\n .classed(milestoneClasses.milestoneLine, true)\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n .style(\"stroke\", color)\n .style(\"stroke-width\", lineWidth)\n }\n this.drawBars({\n events,\n color,\n gElement,\n yPosition,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius,\n })\n if (!label) {\n return\n }\n this.drawTextLabel({\n color,\n label,\n type,\n gElement,\n yPosition,\n height,\n })\n },\n drawBarEventsGroups() {\n Object.entries(this.barGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup,\n bottom: eventsGroup.bottom,\n dots: eventsGroup.chartType === TimelineChartType.dots,\n dotsSize: eventsGroup.dotsSize || 3,\n })\n )\n },\n drawMilestonesPlaceholder() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup: {\n ...eventsGroup,\n events: [],\n isLoading: false,\n },\n milestone: true,\n })\n )\n this.updateMilestonesPositions()\n },\n getMilestoneClass(milestone: TimelineEvent): Record<string, boolean> {\n return {\n [milestoneClasses.milestoneSelected]: [\n milestone.id,\n milestone.timestamp,\n ].includes(this.selectedMilestoneId),\n }\n },\n getMilestoneColors(\n milestoneColor: string | undefined,\n groupColor: string\n ): { background: string; border: string } {\n return {\n background: milestoneColor || groupColor,\n border: this.getTextFillColor(milestoneColor || groupColor, 0.25),\n }\n },\n getMilestoneGroupYPosition(groupName: string): number {\n let offset = 0\n for (const [type, eventsGroup] of Object.entries(this.milestonesGroups)) {\n if (type === groupName) {\n break\n }\n offset += eventsGroup.height || this.barChartHeight\n }\n\n return this.combinedXAxesHeight + this.milestonesYOffset + offset\n },\n getBarGroupYPosition(groupName: string, bottom?: boolean): number {\n let offset = this.combinedXAxesHeight\n if (bottom) {\n offset +=\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones ? this.combinedMilestonesHeight : 0)\n } else {\n offset += this.barsYOffset\n }\n\n for (const [type, eventsGroup] of Object.entries(this.barGroups)) {\n const isSameGroup = type === groupName\n if (isSameGroup) {\n break\n }\n\n if (!bottom && eventsGroup.bottom) {\n continue\n }\n\n offset += this.getBarGroupHeight(eventsGroup)\n }\n\n return offset\n },\n getBarGroupHeight(eventsGroup: TimelineEventsGroup) {\n return eventsGroup.height\n ? Math.max(eventsGroup.height + this.barYPadding, 1)\n : this.barChartHeight\n },\n updateMilestonesPositions() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) => {\n const yPosition = this.getMilestoneGroupYPosition(type)\n const gElement = this.svg.select(\n `g.${classes.eventGroup}-${type}`\n ) as d3.Selection<SVGGElement, any, any, any>\n const lineWidth = 2\n const groupHeight = eventsGroup.height || this.barChartHeight\n const yOffset = groupHeight / 2\n const linePosition = yPosition + yOffset - lineWidth / 2\n gElement\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .select(`.${milestoneClasses.milestoneLine}`)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n const milestonesContainer = d3.select(\n `.${milestoneClasses.milestonesContainer}-${type}`\n )\n\n milestonesContainer\n .style(\"top\", `${yPosition}px`)\n .style(\"height\", `${eventsGroup.height || this.barChartHeight}px`)\n\n const milestones = milestonesContainer\n .selectAll<HTMLDivElement, TimelineEvent>(\n `.${milestoneClasses.milestone}`\n )\n .data(this.getSortedEvents(eventsGroup.events))\n\n milestones.exit().remove()\n milestones\n .enter()\n .append(\"div\")\n .merge(milestones)\n .style(\n \"left\",\n (d) => `${this.timeScale(this.tzStringToDate(d.timestamp))}px`\n )\n .style(\"top\", `${linePosition}px`)\n })\n },\n drawBarChartEventsGroups() {\n const yOffset = this.combinedXAxesHeight\n const eventsGroups = this.barChartGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup], index) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.barChartGroup} ${classes.barChartGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawBarsChart({\n events,\n color,\n gElement,\n yOffset,\n type,\n index,\n })\n })\n },\n drawProgressIndicator({\n yPosition,\n type,\n isLoading,\n }: {\n yPosition: number\n type: string\n color: string\n isLoading: Boolean | undefined\n }) {\n const rect = this.svg\n .append(\"rect\")\n .classed(\n `${classes.loadingIndicator} ${classes.loadingIndicator}-${type}`,\n true\n )\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth / 3)\n .attr(\"height\", this.barChartHeight)\n .attr(\"fill\", `url(#${this.defs.loadingGradient}-${type})`)\n\n rect.style(\"visibility\", isLoading ? \"visible\" : \"hidden\")\n },\n drawBackground({\n color,\n yPosition,\n gElement,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n height?: number\n }) {\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.eventGroupBg)\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", height || this.barChartHeight)\n .attr(\"fill\", d3.color(color)!.toString())\n .style(\"opacity\", 0.1)\n },\n drawBars({\n events,\n gElement,\n yPosition,\n color,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius = 1.5,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n type: string\n dots?: boolean\n dotsSize?: number\n height?: number\n barBorderRadius?: number\n }) {\n const that = this\n const y = yPosition + this.barYPadding / 2\n const yOffset = dots\n ? ((height || this.barChartHeight) - dotsSize!) / 2\n : 0\n let rectHeight = Math.max(\n (height ?? this.barChartHeight) - this.barYPadding,\n 1\n )\n\n if (dots) {\n rectHeight = dotsSize as number\n }\n\n gElement\n .selectAll(classes.eventRect)\n .data(events)\n .enter()\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventRect +\n (dots ? ` ${classes.eventRect}--dot` : \"\") +\n (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", this.getEventRectX)\n .attr(\"y\", y + yOffset)\n .attr(\"ry\", dots ? dotsSize! : barBorderRadius)\n .attr(\"rx\", dots ? dotsSize! : barBorderRadius)\n .attr(\"width\", (dots ? dotsSize : this.getEventRectWidth) as number)\n .attr(\"height\", rectHeight)\n .attr(\"stroke-width\", dots ? dotsSize / 10 : 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", (event: TimelineEvent) => {\n if (!dots) {\n return \"#0000\"\n }\n const c = d3.color(event.color || color)\n\n return c.brighter(1).toString()\n })\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n .on(\"mouseover\", function (event, eventData) {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, true)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, false)\n that.handleBarMouseOut()\n })\n\n // Label text\n gElement\n .selectAll(classes.eventRectText)\n .data(events.filter((e) => !!e.text))\n .enter()\n .append(\"text\")\n .attr(\"class\", classes.eventRectText)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .attr(\"y\", yPosition + this.barChartHeight / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 600)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"pointer-events\", \"none\")\n .style(\"fill\", (event: TimelineEvent) =>\n this.getTextFillColor(event.color || color, 0.75)\n )\n .text(this.getEventText)\n },\n drawBarsChart({\n events,\n gElement,\n color,\n yOffset,\n type,\n index,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n yOffset: number\n type: string\n index: number\n }) {\n const that = this\n const groupsCount = Object.keys(this.barChartGroups).length\n\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const eventBarContainers = gElement\n .selectAll(classes.eventBarContainer)\n .data(events)\n .enter()\n .append(\"g\")\n .attr(\n \"class\",\n `${classes.eventBarContainer} ${classes.eventBarContainer}-${type}`\n )\n\n // Hover zone\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventBarHoverZone + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", -yOffset)\n .attr(\"width\", getW)\n .attr(\"height\", this.yScale.range()[0] + yOffset)\n .attr(\"fill\", (d) => d.color || color)\n .attr(\"fill-opacity\", 0)\n // Bar\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBar + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", getH)\n .attr(\"stroke-width\", 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", \"#0000\")\n .attr(\"fill\", `url(#${this.defs.transparencyGradient}-${type})`)\n // Cap (Top border)\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBarCap + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", 2)\n .attr(\"stroke-width\", 0)\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n\n eventBarContainers\n .on(\"mouseover\", function (event, eventData) {\n const g = d3.select(this)\n that.onBarChartBarMouseOver(g, color)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const g = d3.select(this)\n that.onBarChartBarMouseOut(g, type)\n that.handleBarMouseOut()\n })\n .on(\"click\", function () {\n gElement\n .selectAll(`.${classes.eventBarContainerSelected}`)\n .classed(classes.eventBarContainerSelected, false)\n d3.select(this).classed(classes.eventBarContainerSelected, true)\n })\n },\n onBarChartBarMouseOver(\n container: d3.Selection<SVGGElement, any, any, any>,\n color: string\n ) {\n container.classed(classes.eventBarContainerHovered, true)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0.2)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", color)\n bar.attr(\"fill-opacity\", 0.5)\n },\n onBarChartBarMouseOut(\n container: d3.Selection<SVGGElement, any, any, any>,\n eventType: string\n ) {\n container.classed(classes.eventBarContainerHovered, false)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", `url(#${this.defs.transparencyGradient}-${eventType})`)\n bar.attr(\"fill-opacity\", 1)\n },\n drawTextLabel({\n gElement,\n yPosition,\n color,\n label,\n type,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n label: string\n type: string\n height?: number\n }) {\n if (!this.showLabels) {\n return\n }\n\n const bg = {\n x: -5,\n y: yPosition,\n w: this.labelRectWidth,\n h: height || this.barChartHeight,\n radius: 3,\n }\n\n const labelGroup = gElement\n .append(\"g\")\n .attr(\"class\", `${classes.labelGroup} ${classes.labelGroup}-${type}`)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", () => this.toggleGroupVisibility(type))\n\n // Label rect background\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBg)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.dark ? \"#131a29\" : \"white\")\n\n // Label rect fill\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBgFill)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.getLabelBackgroundColor(color))\n .style(\"stroke\", this.getTextFillColor(color))\n .style(\"stroke-width\", 0.25)\n\n // Label text\n labelGroup\n .append(\"text\")\n .attr(\"class\", classes.labelText)\n .attr(\"data-color\", color)\n .attr(\"x\", 5)\n .attr(\"y\", yPosition + (height || this.barChartHeight) / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 500)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"fill\", this.getTextFillColor(color))\n .text(label)\n },\n getTextFillColor(baseColor: string, k = 0) {\n return (\n this.dark\n ? d3.color(baseColor)?.brighter(1.5 + k)\n : d3.color(baseColor)?.darker(2 + k)\n )!.toString()\n },\n getLabelBackgroundColor(baseColor: string) {\n let color = d3.color(baseColor)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n getCurrentGroupVisibility(type: string) {\n const internalVisibility = this.groupsVisibility[type]\n if (internalVisibility !== undefined) {\n return internalVisibility\n }\n\n // @ts-ignore\n const configVisibility = this.eventsGroups[type]?.isHidden\n if (configVisibility !== undefined) {\n return !configVisibility\n }\n\n return true\n },\n toggleGroupVisibility(type: string) {\n this.groupsVisibility = {\n ...this.groupsVisibility,\n [type]: !this.getCurrentGroupVisibility(type),\n }\n },\n getExternalLabelStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n background: this.getLabelBackgroundColor(color),\n color: this.getTextFillColor(color),\n }\n },\n getExternalLabelWrapperStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n borderColor: this.getTextFillColor(color),\n }\n },\n getMarkerClass(marker: TimelineMarker) {\n return {\n \"marker--hidden\": this.markersPositions[marker?.id]?.isHidden,\n \"marker--draggable\": marker?.isDraggable,\n ...(marker.className ? { [marker?.className]: true } : {}),\n }\n },\n getMarkerContainerStyle(marker: TimelineMarker): Record<string, string> {\n return {\n left: `${this.markersPositions[marker.id]?.position}px`,\n }\n },\n getMarkerLabelStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n color: marker.textColor || \"\",\n }\n },\n getMarkerLineStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n height: `${this.timelineHeight + 24}px`,\n }\n },\n tzStringToDate(timestamp: Timestamp): Date {\n const offsetMinutes = this.timezone\n ? moment.tz(timestamp, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(timestamp).add(offsetMinutes, \"minutes\").toDate()\n },\n dateToTzString(date: Date): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n const offsetMinutes = this.timezone\n ? moment.tz(date, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(offsetMinutes, true)\n .format()\n },\n getCurrentTimeBounds() {\n const bounds = this.timeScale.domain() as unknown as [string, string]\n\n return { startDate: bounds[0], endDate: bounds[1] }\n },\n getFormattedTimestamp(timestamp: Timestamp): string {\n return moment.parseZone(timestamp).format(\"YYYY-MM-DDTHH:mm:ss\")\n },\n fillTimeGaps(events: TimelineEvent[]) {\n if (events.length <= 1) {\n return events\n }\n\n const unit = this.insertZerosAtInterval\n const getNextTimestamp = (date: moment.Moment) =>\n date.clone().add(1, unit)\n const getPreviousTimestamp = (date: moment.Moment) =>\n date.clone().subtract(1, unit)\n\n let filledEvents = []\n\n for (let i = 0; i < events.length; i++) {\n const currentEvent = events[i]\n filledEvents.push(currentEvent)\n\n if (i === events.length - 1) {\n break\n }\n\n const nextEvent = events[i + 1]\n const currentTimestamp = moment(currentEvent.timestamp)\n const nextTimestamp = moment(nextEvent.timestamp)\n\n if (nextTimestamp.diff(currentTimestamp, unit) > 1) {\n const fillerAfterCurrent =\n getNextTimestamp(currentTimestamp).toISOString()\n const fillerBeforeNext =\n getPreviousTimestamp(nextTimestamp).toISOString()\n\n filledEvents.push({ timestamp: fillerAfterCurrent, count: 0 })\n if (fillerAfterCurrent !== fillerBeforeNext) {\n filledEvents.push({ timestamp: fillerBeforeNext, count: 0 })\n }\n }\n }\n\n if (this.flattenLineGraphEnds) {\n const firstEventTimestamp = moment(events[0].timestamp)\n const lastEventTimestamp = moment(events[events.length - 1].timestamp)\n\n const firstFiller =\n getPreviousTimestamp(firstEventTimestamp).toISOString()\n const lastFiller = getNextTimestamp(lastEventTimestamp).toISOString()\n\n filledEvents = [\n { timestamp: firstFiller, count: 0 },\n ...filledEvents,\n { timestamp: lastFiller, count: 0 },\n ]\n }\n\n return filledEvents\n },\n fillEvents(events: TimelineEvent[]): TimelineEvent[] {\n return this.placeholderLineChartGroup.map((defaultEvent) => {\n const actualEvent = events.find(\n (event) => event.timestamp === defaultEvent.timestamp\n )\n\n return actualEvent || defaultEvent\n })\n },\n onMilestoneClick(milestone: TimelineEvent, milestoneType: any) {\n if (this.panOnDateClick) {\n this.panToTimestamp(milestone.timestamp)\n }\n this.selectedMilestoneId = milestone.id || milestone.timestamp\n this.$emit(\"milestone-click\", { milestone, milestoneType })\n },\n getSortedEvents(events: TimelineEvent[]): TimelineEvent[] {\n return [...events].sort((a, b) =>\n new Date(a.timestamp || a.startDate) >\n new Date(b.timestamp || b.startDate)\n ? 1\n : -1\n )\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EVideoEmbed\",\n props: {\n videoUrl: {\n type: String,\n required: true,\n },\n platform: {\n type: String as PropType<\"youtube\" | \"vimeo\">,\n required: true,\n validator: (value: string) => [\"youtube\", \"vimeo\"].includes(value),\n },\n iframeListeners: {\n type: Object as PropType<Partial<HTMLIFrameElement>>,\n default: () => ({}),\n },\n iframeOptions: {\n type: Object,\n default: () => ({}),\n },\n },\n computed: {\n videoId(): string | undefined {\n if (this.platform === \"youtube\") {\n const regExp =\n // eslint-disable-next-line no-useless-escape\n /^.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#\\&\\?]*).*/\n\n const match = this.videoUrl.match(regExp)\n\n return match && match[1].length === 11 ? match[1] : undefined\n } else if (this.platform === \"vimeo\") {\n const match = this.videoUrl.match(/vimeo\\.com\\/(\\d+)/)\n\n return match ? match[1] : undefined\n }\n\n return undefined\n },\n embedUrl(): string {\n if (this.platform === \"youtube\") {\n const params = new URLSearchParams({\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://www.youtube.com/embed/${\n this.videoId\n }?${params.toString()}`\n } else if (this.platform === \"vimeo\" && this.videoId) {\n const token = this.videoUrl.split(\"/\").pop()?.split(\"?\")[0]\n const params = new URLSearchParams({\n h: token || \"\",\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://player.vimeo.com/video/${\n this.videoId\n }?${params.toString()}`\n }\n\n return \"\"\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { HeatmapBarItem } from \"@/types\"\nexport default Vue.extend({\n name: \"EHeatmapBar\",\n props: {\n items: {\n type: Array,\n default: () => [] as HeatmapBarItem[],\n },\n selectedValue: {\n type: [String, Number],\n default: \"\",\n },\n showCounts: {\n type: Boolean,\n default: true,\n },\n showNames: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n heatMapBarItems(): HeatmapBarItem[] {\n return this.items as HeatmapBarItem[]\n },\n maxCount(): number {\n return this.items.reduce(\n (a: number, b): number => Math.max(a, (b as HeatmapBarItem).count),\n 0\n )\n },\n },\n methods: {\n getColorIndex(count: number) {\n return Math.ceil((count / this.maxCount) * (this.colors.length - 1))\n },\n getColor(count: number): string {\n const index = this.getColorIndex(count)\n\n return (this.colors[index] || this.colors[0]) as string\n },\n getItemStyle(count: number) {\n return {\n background: this.getColor(count),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport moment from \"moment-timezone\"\nimport { HoursHeatmapChartItem } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EHoursHeatmap\",\n components: {\n EHeatmapBar,\n },\n props: {\n items: {\n type: Array,\n default: () => [] as HoursHeatmapChartItem[],\n },\n selectedHour: {\n type: [String, Number],\n default: \"\",\n },\n showHours: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n itemsByHour(): Record<string, HoursHeatmapChartItem> {\n return (this.items as HoursHeatmapChartItem[]).reduce((acc, item) => {\n return {\n ...(acc as Record<string, HoursHeatmapChartItem>),\n [moment((item as HoursHeatmapChartItem).timestamp).format(\"H\")]: item,\n }\n }, {})\n },\n heatmapBarItems() {\n return new Array(24).fill(undefined).reduce((acc, _, hour) => {\n return [\n ...acc,\n {\n name: (this as any).getFormattedHour(hour),\n value: hour,\n count: (this as any).itemsByHour[hour]?.count || 0,\n },\n ]\n }, [])\n },\n },\n methods: {\n getFormattedHour(h: number): string {\n const hour = h.toString()\n\n return (hour.length > 1 ? hour : `0${hour}`) + (this.dense ? \"h\" : \":00\")\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EReadMore\",\n props: {\n content: {\n type: [Array, String],\n default: () => null,\n },\n maxLength: {\n type: Number,\n default: () => 2,\n },\n showAll: {\n type: Boolean,\n default: false,\n },\n expandText: {\n type: String,\n default: \"see more...\",\n },\n collapseText: {\n type: String,\n default: \"less\",\n },\n moreTextWithPlaceholder: {\n type: String,\n default: \"and {count} more...\",\n },\n },\n data() {\n return {\n showAllContent: false,\n }\n },\n computed: {\n hiddenContentLength(): number {\n return Math.max((this.content?.length ?? 0) - this.maxLength, 0)\n },\n isArrayContent(): boolean {\n return Array.isArray(this.content)\n },\n isHiddenTextContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n !this.isArrayContent\n )\n },\n isHiddenArrayContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n this.isArrayContent\n )\n },\n isContentExpanded(): boolean {\n return this.showAllContent && this.content?.length > 0\n },\n computedMoreText(): string {\n return this.moreTextWithPlaceholder.replace(\n \"{count}\",\n this.hiddenContentLength.toString()\n )\n },\n },\n mounted() {\n this.showAllContent = this.showAll\n },\n methods: {\n displayContent() {\n return this.isArrayContent\n ? this.displayArrayContent()\n : this.displayTextContent()\n },\n displayArrayContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as Record<any, any>)\n .slice(0, this.maxLength)\n .join(\", \")\n }\n\n return this.content?.length > -1\n ? (this.content as Record<any, any>).join(\", \")\n : \"\"\n },\n displayTextContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as string).substr(0, this.maxLength)\n }\n\n return this.content?.length > -1 ? this.content : \"\"\n },\n toggleContentExpansion() {\n this.showAllContent = !this.showAllContent\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ETruncatedDiv\",\n props: {\n width: {\n type: [String, Number],\n required: true,\n },\n fixedWidth: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n containerStyle(): Record<string, any> {\n let width = this.width\n if (typeof width === \"number\") {\n width = `${this.width}px`\n }\n\n return {\n maxWidth: width,\n ...(this.fixedWidth ? { width } : {}),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\n\nexport default Vue.extend({\n name: \"ECompareSeparator\",\n components: {\n EIcon,\n },\n props: {\n xOffset: {\n type: [Number, String],\n default: 50,\n },\n },\n computed: {\n separatorStyle(): Record<string, any> {\n return { left: `${this.xOffset}%` }\n },\n },\n})\n","import Vue from \"vue\"\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\nexport default Vue.extend({\n data() {\n return { timeouts: [] as number[] }\n },\n beforeDestroy() {\n this.$clearTimeouts()\n },\n methods: {\n $setTimeout(cb: Function, timeout = 0) {\n const timeoutId = setTimeout(cb, timeout)\n this.timeouts = [...this.timeouts, timeoutId as unknown as number]\n\n return timeoutId\n },\n $clearTimeouts() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n },\n },\n})\n","import Vue from \"vue\"\n\nexport interface IEventListener {\n event: string\n cb: EventListenerCallback\n element?: EventTarget\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\n\nexport type EventListenerCallback = (e: any) => unknown | Promise<unknown>\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\nexport default Vue.extend({\n data() {\n return { eventListeners: [] as IEventListener[] }\n },\n beforeDestroy() {\n this.$removeEventListeners()\n },\n methods: {\n $addEventListener(event: string, cb: () => void, element = window) {\n if (!(element instanceof HTMLElement || element instanceof Window)) {\n console.error(\n \"$addEventListener: The target element is not an HTMLElement.\"\n )\n console.log(\"$addEventListener: got: \", element)\n\n return\n }\n element.addEventListener(event, cb)\n this.eventListeners = [...this.eventListeners, { element, event, cb }]\n },\n $removeEventListener(event: string, cb: () => void, element = window) {\n const listener = this.eventListeners.find((l: IEventListener) => {\n return l.event === event && l.element === element && l.cb === cb\n })\n\n if (listener) {\n listener.element?.removeEventListener(event, cb)\n this.eventListeners = this.eventListeners.filter(\n (l) => l.event === event && l.cb === cb && l.element === element\n )\n }\n },\n $removeEventListeners() {\n this.eventListeners.forEach(({ element, event, cb }: IEventListener) => {\n element?.removeEventListener(event, cb)\n })\n this.eventListeners = []\n },\n },\n})\n","\nimport timeouts from \"@/mixins/timeouts\"\nimport eventListener from \"@/mixins/event-listeners\"\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EExpandableMenu\",\n mixins: [timeouts, eventListener],\n props: {\n padding: {\n type: Number,\n default: 4,\n },\n direction: {\n type: String as PropType<\"top\" | \"right\" | \"bottom\" | \"left\">,\n default: \"top\",\n validator: (prop: string) =>\n [\"top\", \"right\", \"bottom\", \"left\"].includes(prop),\n },\n isMobile: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n menu: false,\n touched: false,\n baseSize: {},\n }\n },\n computed: {\n row(): boolean {\n return [\"right\", \"left\"].includes(this.direction)\n },\n reverse(): boolean {\n return [\"top\", \"left\"].includes(this.direction)\n },\n },\n watch: {\n isMobile() {\n this.setButtonsPositions(this.menu)\n },\n direction() {\n this.setButtonsPositions(this.menu)\n },\n padding() {\n this.setButtonsPositions(this.menu)\n },\n },\n mounted() {\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect() || {}\n this.baseSize = {\n width: `${activator.width}px`,\n height: `${activator.height}px`,\n }\n if (!this.isMobile) {\n this.$setTimeout(this.toggleMenu, 100)\n }\n this.$addEventListener(\"resize\", this.setButtonsPositions)\n },\n methods: {\n toggleMenu() {\n this.menu = !this.menu\n this.setButtonsPositions(this.menu)\n },\n setButtonsPositions(open?: boolean) {\n const menu = this.$refs.menu as HTMLDivElement\n const children = Array.from(menu?.children).filter(\n (el) => !el.classList.contains(\"v-tooltip\")\n )\n if (!children || !children.length) {\n return\n }\n const minSize = this.isMobile ? 30 : 40\n const items = Array.from(children) as HTMLElement[]\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect()\n const activatorSize = Math.min(\n activator[this.row ? \"width\" : \"height\"],\n minSize\n )\n\n const translation = open ? activatorSize + this.padding : 0\n const translationDirection = this.row ? \"X\" : \"Y\"\n menu.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * translation\n }px)`\n let buttonSize = 0\n items.forEach((b, index) => {\n if (\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"] > minSize\n ) {\n buttonSize =\n Math.max(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n } else {\n buttonSize =\n Math.min(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n }\n const position = open ? buttonSize * index : 0\n b.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * position\n }px)`\n })\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"BaseIcon\",\n props: {\n name: {\n type: String,\n default: \"box\",\n },\n color: {\n type: String,\n default: \"#3c3c3c\",\n },\n viewBox: {\n type: String,\n default: \"0 0 128 128\",\n },\n width: {\n type: [Number, String],\n default: 60,\n },\n height: {\n type: [Number, String],\n default: 60,\n },\n size: {\n type: [Number, String, null] as PropType<number | string | null>,\n default: null,\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Bim\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Blur\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Compare\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ConcretePump\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"DroneView\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Dumper\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Evercam\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"black\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EvercamLogo\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"CompactExcavator\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FlatbedSemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FreeDrawing\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"IModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Inspection\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"MiniModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"OtherTrucks\",\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"RoadVehicle\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Roller\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SkidSteerLoader\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SmallTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TankTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"The360\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TippingTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckHead\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckMixer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ZohoCrm\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","import Bim from \"@/components/svgIcons/Bim.vue\"\nimport Blur from \"@/components/svgIcons/Blur.vue\"\nimport Compare from \"@/components/svgIcons/Compare.vue\"\nimport ConcretePump from \"@/components/svgIcons/ConcretePump.vue\"\nimport DroneView from \"@/components/svgIcons/DroneView.vue\"\nimport Dumper from \"@/components/svgIcons/Dumper.vue\"\nimport Evercam from \"@/components/svgIcons/Evercam.vue\"\nimport EvercamLogo from \"@/components/svgIcons/EvercamLogo.vue\"\nimport Excavator from \"@/components/svgIcons/Excavator.vue\"\nimport FlatbedSemiTrailer from \"@/components/svgIcons/FlatbedSemiTrailer.vue\"\nimport FreeDrawing from \"@/components/svgIcons/FreeDrawing.vue\"\nimport IModel from \"@/components/svgIcons/IModel.vue\"\nimport Inspection from \"@/components/svgIcons/Inspection.vue\"\nimport Loader from \"@/components/svgIcons/Loader.vue\"\nimport MiniModel from \"@/components/svgIcons/MiniModel.vue\"\nimport OtherTruck from \"@/components/svgIcons/OtherTruck.vue\"\nimport RoadVehicle from \"@/components/svgIcons/RoadVehicle.vue\"\nimport Roller from \"@/components/svgIcons/Roller.vue\"\nimport SemiTrailer from \"@/components/svgIcons/SemiTrailer.vue\"\nimport SkidSteerLoader from \"@/components/svgIcons/SkidSteerLoader.vue\"\nimport SmallTruck from \"@/components/svgIcons/SmallTruck.vue\"\nimport TankTruck from \"@/components/svgIcons/TankTruck.vue\"\nimport The360 from \"@/components/svgIcons/The360.vue\"\nimport TippingTruck from \"@/components/svgIcons/TippingTruck.vue\"\nimport TruckHead from \"@/components/svgIcons/TruckHead.vue\"\nimport TruckMixer from \"@/components/svgIcons/TruckMixer.vue\"\nimport Worker from \"@/components/svgIcons/Worker.vue\"\nimport ZohoCrm from \"@/components/svgIcons/ZohoCrm.vue\"\n\nconst SvgIcons = {\n Bim,\n Blur,\n Compare,\n ConcretePump,\n CompactExcavator: Excavator,\n DroneView,\n Dumper,\n Evercam,\n EvercamLogo,\n Excavator,\n FlatbedSemiTrailer,\n FreeDrawing,\n IModel,\n Inspection,\n Loader,\n MiniModel,\n OtherTruck,\n RoadVehicle,\n Roller,\n SemiTrailer,\n SkidSteerLoader,\n SmallTruck,\n TankTruck,\n The360,\n TippingTruck,\n TruckHead,\n TruckMixer,\n Unknown: OtherTruck,\n Worker,\n ZohoCrm,\n}\n\nconst camelToKebabCase = (iconName: string) => {\n return iconName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase()\n}\n\nexport const eSvgIcons = Object.fromEntries(\n Object.entries(SvgIcons).map(([key, value]) => [camelToKebabCase(key), value])\n)\n\nexport default {}\n","\nimport { eSvgIcons } from \"@/components/svgIcons\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ESvgIcon\",\n components: {\n ...eSvgIcons,\n },\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n },\n computed: {\n svgIconComponent(): any {\n return eSvgIcons[this.icon]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size, TToggleSwitchSize } from \"@/types\"\n\nexport interface EToggleSwitchOption {\n title: string\n value: any\n}\n\nexport type CssClassMap = Record<string, boolean>\ntype SizeClasses = {\n container: CssClassMap\n button: CssClassMap\n text: CssClassMap\n}\n\nexport default Vue.extend({\n name: \"EToggleSwitch\",\n props: {\n options: {\n type: Array as PropType<EToggleSwitchOption[]>,\n required: true,\n },\n color: {\n type: String as PropType<\"brand\" | \"gray\" | \"primary\">,\n default: \"brand\",\n },\n size: {\n type: String as PropType<TToggleSwitchSize>,\n default: Size.sm,\n },\n defaultValue: {\n type: [String, Number, Boolean],\n default: null,\n },\n },\n data() {\n return {\n value: this.defaultValue || this.options[0].value,\n }\n },\n computed: {\n sizeClasses(): SizeClasses {\n return {\n container: {\n \"e-p-1 e-leading-3\": this.size === Size.sm,\n \"e-p-1.5\": this.size === Size.md,\n \"e-p-2\": this.size === Size.lg,\n },\n button: {\n \"e-py-[.2rem] e-p-1 e-rounded-md\": this.size === Size.sm,\n \"e-p-1\": this.size === Size.md,\n \"e-p-1.5\": this.size === Size.lg,\n },\n text: {\n \"e-text-xs\": this.size === Size.sm,\n \"e-text-sm\": this.size === Size.md,\n \"e-text-base\": this.size === Size.lg,\n },\n }\n },\n containerClasses(): CssClassMap {\n return {\n ...this.sizeClasses.container,\n \"e-flex e-items-center e-justify-center e-w-fit e-h-min e-bg-gray-900 e-rounded-md e-e-shadow-md e-transition-colors e-duration-200 e-ease-in-out\":\n true,\n }\n },\n textClasses(): CssClassMap {\n return {\n ...this.sizeClasses.text,\n \"e-font-medium\": true,\n }\n },\n buttonBaseClasses(): CssClassMap {\n return {\n \"e-cursor-pointer\": true,\n \"e-text-gray-100 e-rounded-md e-shadow e-transition e-duration-200 e-ease-in-out\":\n true,\n }\n },\n },\n methods: {\n getButtonClasses(optionValue: any) {\n const dynamicClasses = {\n \"e-border-none\": true,\n \"e-bg-inherit\": this.value !== optionValue,\n \"e-bg-brand-600\": this.color === \"brand\" && this.value === optionValue,\n \"e-bg-gray-600\":\n ![\"primary\", \"brand\"].includes(this.color) &&\n this.value === optionValue,\n \"e-bg-[#629efc] e-text-gray-900 e-font-normal\":\n this.color === \"primary\" && this.value === optionValue,\n }\n\n return {\n ...this.buttonBaseClasses,\n ...this.sizeClasses.button,\n ...dynamicClasses,\n }\n },\n handleClick(value: any) {\n this.value = value\n this.$emit(\"input\", value)\n },\n },\n})\n","import Vue from \"vue\"\nimport eventListeners from \"@/mixins/event-listeners\"\nimport timeouts from \"@/mixins/timeouts\"\n\nexport interface InactivityListenerMixinProps {\n duration: number\n reminders?: number[]\n callback: () => void\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\n\nexport default Vue.extend({\n mixins: [eventListeners, timeouts],\n data() {\n return {\n inactivityListeners: [] as Array<() => void>,\n isInactivityListenerActive: false,\n }\n },\n beforeDestroy() {\n this.$removeInactivityListeners()\n },\n methods: {\n resetInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.$clearTimeouts()\n this.setInactivityListenerTimer(callback, duration, reminders)\n },\n\n setInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (callback && duration) {\n this.$setTimeout(() => {\n callback()\n if (reminders.length > 0) {\n this.setInactivityListenerReminderTimers(callback, reminders)\n }\n }, duration * 1000)\n }\n },\n setInactivityListenerReminderTimers(\n callback = () => {},\n reminders: number[] = [],\n index = 0\n ) {\n const currentReminder = reminders[index]\n if (index < reminders.length) {\n this.$setTimeout(() => {\n callback()\n this.setInactivityListenerReminderTimers(\n callback,\n reminders,\n index + 1\n )\n }, currentReminder * 1000)\n } else if (this.isInactivityListenerActive) {\n this.$removeInactivityListeners()\n }\n },\n $registerInactivityListener({\n callback = () => {},\n duration = 0,\n reminders = [],\n }: InactivityListenerMixinProps) {\n this.isInactivityListenerActive = true\n this.resetInactivityListenerTimer(callback, duration, reminders)\n const onMouseMove = () =>\n this.resetInactivityListenerTimer(callback, duration, reminders)\n this.$addEventListener(\"mousemove\", onMouseMove)\n this.inactivityListeners.push(onMouseMove)\n },\n $removeInactivityListeners() {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.isInactivityListenerActive = false\n this.inactivityListeners.forEach((cb) => {\n this.$removeEventListener(\"mousemove\", cb)\n })\n this.$clearTimeouts()\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { PropType } from \"vue\"\nimport {\n GlobalSearchResultInput,\n GlobalSearchResult,\n GlobalSearchMatch,\n} from \"@/types\"\nimport { eventListeners } from \"@/mixins\"\nimport moment from \"moment-timezone\"\nimport EIcon from \"@/components/EIcon.vue\"\nexport default Vue.extend({\n name: \"EGlobalSearch\",\n components: {\n EIcon,\n },\n mixins: [eventListeners],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n items: {\n type: Array as PropType<GlobalSearchResultInput>,\n default: () => [],\n },\n timezone: {\n type: String,\n default: \"Europe/Dublin\",\n },\n convertedDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ss\",\n },\n currentDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ssZ\",\n },\n isFixedPosition: {\n type: Boolean,\n default: true,\n },\n isHidden: {\n type: Boolean,\n default: true,\n },\n deep: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n search: \"\",\n isSearching: false,\n }\n },\n computed: {\n inputClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-900 e-text-white e-ring-gray-700 focus:e-ring-2 focus:e-ring-blue-500 e-placeholder-gray-500\":\n this.dark,\n \"e-bg-white e-text-[#000057] e-ring-gray-300 hover:e-ring-gray-100 focus:e-ring-blue-500 e-placeholder-gray-400\":\n !this.dark,\n }\n },\n },\n watch: {\n search(query: string) {\n if (!query) {\n this.$emit(\"reset\")\n } else if (query.length >= 3) {\n this.$emit(\n \"search-results\",\n this.searchObjectsByQuery(this.items as any[], query)\n )\n }\n },\n },\n mounted() {\n if (!this.isHidden && this.search.length > 0) {\n this.isSearching = true\n } else {\n this.$addEventListener(\"keydown\", this.onKeyHandler)\n this.$addEventListener(\"keyup\", this.onKeyHandler)\n }\n },\n methods: {\n onInput(event: InputEvent) {\n this.search = (event.target as HTMLInputElement).value\n },\n searchObjectsByQuery(\n objects: Array<GlobalSearchResultInput>,\n query: string\n ): Array<GlobalSearchResult> {\n return objects.reduce((acc, obj, index) => {\n const matches = this.findMatchesInObject(obj, query, [])\n if (matches.length > 0) {\n acc.push({ index, matches })\n }\n\n return acc\n }, []) as GlobalSearchResult[]\n },\n findMatchesInObject(\n obj: GlobalSearchResultInput,\n query: string,\n path: string[]\n ): GlobalSearchMatch[] {\n return Object.entries(obj).reduce((matches: any, [key, value]: any) => {\n const currentPath = [...path, key]\n const valueMatches = this.matchesQuery(value, query)\n ? [{ path: currentPath, value }]\n : []\n\n let arrayMatches: any[] = []\n if (this.deep && Array.isArray(value)) {\n arrayMatches = value.flatMap((item, index) =>\n this.findMatchesInObject(item, query, [...currentPath, `${index}`])\n )\n }\n\n const objectMatches =\n this.deep && typeof value === \"object\" && value !== null\n ? this.findMatchesInObject(value, query, currentPath)\n : []\n\n return [...matches, ...valueMatches, ...arrayMatches, ...objectMatches]\n }, [])\n },\n matchesQuery(value: any, query: string): boolean {\n return (\n `${this.isValidDate(value) ? this.formattedTimestamp(value) : value}`\n .toLowerCase()\n .indexOf(query.toLowerCase()) !== -1\n )\n },\n isValidDate(date: string | Date): boolean {\n return moment(date, this.currentDateFormat, true).isValid()\n },\n formattedTimestamp(timestamp: string): string {\n return moment\n .tz(timestamp, this.timezone)\n .format(this.convertedDateFormat)\n },\n onKeyHandler(event: unknown): void {\n const e = event as KeyboardEvent\n const ctrlKey = e.ctrlKey && e.type === \"keydown\"\n const shiftKey = e.shiftKey && e.type === \"keydown\"\n const fKey = [\"f\", \"F\"].includes(e.key) && e.type === \"keydown\"\n const esc = e.key === \"Escape\" && e.type === \"keydown\"\n\n if (fKey && ctrlKey && shiftKey) {\n this.isSearching = true\n this.$nextTick(() => {\n const searchField = this.$refs.searchField as HTMLElement\n searchField && searchField.focus()\n })\n }\n if (esc) {\n this.isSearching = false\n this.search = \"\"\n }\n },\n },\n})\n","// Components\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EBadge from \"@/components/EBadge.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport EVideoPlayer from \"@/components/EVideoPlayer.vue\"\nimport ETimeline from \"@/components/ETimeline.vue\"\nimport EVideoEmbed from \"@/components/EVideoEmbed.vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport EHoursHeatmap from \"@/components/EHoursHeatmap.vue\"\nimport EReadMore from \"@/components/EReadMore.vue\"\nimport ETruncatedDiv from \"@/components/ETruncatedDiv.vue\"\nimport ECompareSeparator from \"@/components/ECompareSeparator.vue\"\nimport EExpandableMenu from \"@/components/EExpandableMenu.vue\"\nimport ESvgIcon from \"@/components/ESvgIcon.vue\"\n\nimport EToggleSwitch from \"@/components/EToggleSwitch.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\n// Directives\nimport { DirectivesMap } from \"@/directives\"\nimport * as mixins from \"@/mixins\"\n\nimport { VueConstructor } from \"vue\"\nimport EGlobalSearch from \"@/components/EGlobalSearch.vue\"\n\nexport const components = {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n}\n\nexport default {\n install(Vue: VueConstructor) {\n // Register components\n Object.keys(components).forEach((name) => {\n // @ts-ignore\n Vue.component(name, components[name])\n })\n\n // Register mixins\n Object.keys(mixins).forEach((name) => {\n // @ts-ignore\n Vue.mixin(name, mixins[name])\n })\n\n // Register directives\n DirectivesMap.forEach(({ name, definition }) => {\n Vue.directive(name, definition)\n })\n },\n}\n\nexport {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n}\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n\nexport * from \"@/mixins\"\n"],"names":["Size","BaseColor","TimelineAxis","TimelineChartType","TimelineIntervalChangeTrigger","_sfc_main$M","Vue","colorClasses","sizeClasses","_sfc_main$L","Badge","x","create","picocolors_browserModule","exports","_export","target","all","name","dim","_default","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","colors","colors_1","TailwindColors","__CJS__import__0__.default","__CJS__import__0__","BrandColors","customColors","CustomColors","config","module","negateValue","value","sign","numericFunctions","fn","pluginConfig","plugins","pluginName","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","flag","_config_future","_config_future_flag","_ref","_config_experimental","_config_experimental_flag","_ref1","experimentalFlagsEnabled","changes","s","normalizeConfig","_featureFlags","_interop_require_wildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","_purge_options","content","purge","safelist","blocklist","item","_config_prefix","extract","_config_purge","_config_content","_config_purge1","_config_purge_extract","_config_content1","_config_content_extract","_config_purge2","_config_purge_options","_config_content2","_config_content_options","extractors","defaultExtractor","extensions","extractor","extension","transform","_config_purge_transform","_config_content_transform","transformers","file","isPlainObject","prototype","cloneDeep","child","v","escapeCommas","className","parseColor","formatColor","_colorNames","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","_match_","_match__toString","hex","_","r","g","b","a","_value_match","match","color","part","mode","alpha","hasAlpha","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","properties","p","splitAtTopLevelOnly","separator","stack","parts","lastPos","isEscaped","idx","char","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","result","seen","shadows","normalize","url","number","percentage","length","lineWidth","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","require$$2","cssFunctions","isCSSFunction","AUTO_VAR_INJECTION_EXCEPTIONS","context","isRoot","isVarException","fullMatch","characterBefore","normalizeMathOperatorSpacing","preventFormattingInFunctions","preventFormattingKeywords","lastChar","i","peek","word","j","consumeUntil","chars","minIndex","index","keyword","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","backgroundSize","_dataTypes","keywordValues","sizes","size","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","typeMap","coerceValue","getMatchingTypes","_escapeCommas","_withAlphaVariable","_negateValue","require$$3","_validateFormalSyntax","require$$4","require$$5","selectors","updateClass","sel","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","options","_options_values","splitUtilityModifier","slashIdx","arbitraryStartIdx","arbitraryEndIdx","oldValue","opacityValue","unwrapArbitraryModifier","tailwindConfig","_options_values1","_options_values2","_tailwindConfig_theme","_tailwindConfig_theme_opacity","_options_values_color","normalizedColor","guess","supportedTypes","splitAtFirst","delim","types","arbitraryValue","explicitType","matches","rawModifier","modifiersEnabled","utilityModifier","_options_modifiers","_options_modifiers_utilityModifier","configValue","toColorValue","maybeFunction","resolveConfig","_corePluginList","_configurePlugins","_colors","_defaults","_toPath","_normalizeConfig","require$$6","_isPlainObject","require$$7","_cloneDeep","require$$8","_pluginUtils","require$$9","require$$10","_toColorValue","require$$11","isFunction","mergeWith","customizer","merged","configUtils","scale","negativeScale","negativeValue","screens","breakpoints","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","e","toPaths","pattern","prefix","newPath","resolveFunctionKeys","object","resolvePath","val","normalized","extractPluginConfigs","configs","allConfigs","_config_plugins","plugin","_plugin_config","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","_t_theme","_c_plugins","t","c","config_full","getAllConfigs","_configfull","_config_presets","preset","features","experimentals","feature","_resolveConfig","_getAllConfigs","defaultConfigs","resolveConfig_1","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","ToggleSwitchSizes","BadgeColors","EVENTS","_sfc_main$K","acc","iconClasses","_b","_a","_sfc_main$J","fill","animationDuration","_sfc_main$I","_sfc_main$H","prop","acceptUndefined","n","isFullScreen","doc","makeFullScreen","element","resolve","el","exitFullScreen","debounce","func","wait","timeout","getRandomChars","_sfc_main$G","imgStyle","container","containerRect","contentRect","mouseX","mouseY","delta","oldScale","xPercent","yPercent","maxLeft","minLeft","minTop","maxTop","deltaX","deltaY","correctionTop","correctionRight","correctionBottom","correctionLeft","pointers","midPoint","leadingZeroFormatter","VIDEO_PLAYER_EVENTS","formatDuration","time","seconds","minutes","hours","_sfc_main$F","ESpinner","EZoomable","Hls","videoOptions","moment","player","start","end","isTargetTimestampAvailable","src","playerRef","videoSource","xhr","_c","_d","manifest","firstLevelDetails","startOffset","_e","data","isNetworkError","isMediaError","isNotFoundError","shouldAttemptFallback","attemptFallback","handleError","event","which","timelineContainer","error","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","getFormattedDay","d","day","d3","daySuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","format","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","ResizeObserverDirective","binding","callback","observer","entries","DirectivesMap","milestoneClasses","_sfc_main$E","contentFirstChild","contentBox","existingTimeoutId","timeoutId","transitionDuration","timeoutDuration","milestone","classes","_sfc_main$D","ETimelineMilestone","eventsGroup","combinedLabelsHeight","axesCount","_group","flattenedEvents","oldestEvent","latestEvent","allTimestamps","group","timestamp","isVisible","cursorX","date","interval","startDate","endDate","defsSelection","chartType","id","stop","opacity","sampleTimestamp","padding","axisName","axis","visibleStart","visibleEnd","filteredFlattenedCounts","eventStart","eventEnd","maxCount","markersTimestamps","marker","minTimestamp","maxTimestamp","t1","t2","domainSpan","domainWidth","viewportSpan","paddedViewportSpan","scaleFactor","scaleExtent","scaledMinTimestampPosition","scaledMaxTimestampPosition","centerPoint","translateX","currentTransform","overlapThreshold","markersArray","markerX","isHidden","nextMarker","nextTimestamp","nextMarkerX","cursor","timeAtPixel0","timeAtPixel1","HOUR","newDensity","trigger","visibleFrom","visibleTo","fromDate","toDate","resizeObserverEntry","that","bgFill","text","formattedDateTz","_event","eventData","eventType","entry","count","groupType","scaleCopy","newDomain","minDateLimit","maxDateLimit","newScale","targetTimestamp","targetDate","targetX","newDomainStart","newDomainEnd","minDate","maxDate","timelineWidth","fullRange","totalDuration","leftDuration","rightDuration","newWidth","newX","startTime","endTime","curr","minScale","maxScale","ticksConfig","textElement","textBBox","rectsAndDots","rectsOnly","eventTextSelector","groupsCount","getW","getH","getX","getY","containerSelector","hoverZoneSelector","barSelector","barCapSelector","area","startTimestamp","endTimestamp","width","oneSecondWidth","maxCharacters","style","markerElement","dragEvent","targetLeft","newTimestamp","newPosition","isNewTimestampAllowed","timelineHeight","reset","visibleDomain","startX","endX","yOffset","eventsGroups","gElement","events","isLoading","label","labelHeight","labelYPosition","loadingIndicatorYPosition","labelsGElement","clipPathId","circle","dots","dotsSize","bottom","bgColor","barBorderRadius","height","yPosition","backgroundHeight","linePosition","milestoneColor","groupColor","groupName","offset","milestonesContainer","milestones","y","rectHeight","eventBarContainers","bar","bg","labelGroup","baseColor","internalVisibility","configVisibility","offsetMinutes","userUtcOffset","bounds","unit","getNextTimestamp","getPreviousTimestamp","filledEvents","currentEvent","nextEvent","currentTimestamp","fillerAfterCurrent","fillerBeforeNext","firstEventTimestamp","lastEventTimestamp","firstFiller","lastFiller","defaultEvent","milestoneType","_sfc_main$C","regExp","params","token","_sfc_main$B","_sfc_main$A","EHeatmapBar","h","_sfc_main$z","_sfc_main$y","_sfc_main$x","EIcon","timeouts","cb","eventListeners","listener","l","_sfc_main$w","eventListener","activatorElement","activator","open","menu","children","minSize","activatorSize","translation","translationDirection","buttonSize","_sfc_main$v","_sfc_main$u","BaseIcon","_sfc_main$t","_sfc_main$s","_sfc_main$r","_sfc_main$q","_sfc_main$p","_sfc_main$o","_sfc_main$n","_sfc_main$m","_sfc_main$l","_sfc_main$k","_sfc_main$j","_sfc_main$i","_sfc_main$h","_sfc_main$g","_sfc_main$f","_sfc_main$e","_sfc_main$d","_sfc_main$c","_sfc_main$b","_sfc_main$a","_sfc_main$9","_sfc_main$8","_sfc_main$7","_sfc_main$6","_sfc_main$5","_sfc_main$4","_sfc_main$3","SvgIcons","Bim","Blur","Compare","ConcretePump","Excavator","DroneView","Dumper","Evercam","EvercamLogo","FlatbedSemiTrailer","FreeDrawing","IModel","Inspection","Loader","MiniModel","OtherTruck","RoadVehicle","Roller","SemiTrailer","SkidSteerLoader","SmallTruck","TankTruck","The360","TippingTruck","TruckHead","TruckMixer","Worker","ZohoCrm","camelToKebabCase","iconName","eSvgIcons","_sfc_main$2","_sfc_main$1","optionValue","dynamicClasses","inactivityListener","reminders","currentReminder","onMouseMove","_sfc_main","query","objects","currentPath","valueMatches","arrayMatches","objectMatches","ctrlKey","shiftKey","fKey","esc","searchField","components","EAvatar","EBadge","ERow","ECol","EVideoPlayer","ETimeline","EVideoEmbed","EHoursHeatmap","EReadMore","ETruncatedDiv","ECompareSeparator","EToggleSwitch","EExpandableMenu","EGlobalSearch","ESvgIcon","mixins","definition"],"mappings":"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ACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;;;;AC5LJ,SAAO,eAAwBN,GAAA,cAAc;AAAA,IACzC,OAAO;AAAA,EACX,CAAC,GACD,OAAO,eAAeA,GAAS,WAAW;AAAA,IACtC,YAAY;AAAA,IA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","x_google_ignoreList":[3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}
1
+ {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/components/EBadge.vue?vue&type=script&lang.ts","../src/components/EAvatar.vue?vue&type=script&lang.ts","../node_modules/picocolors/picocolors.browser.js","../node_modules/tailwindcss/lib/util/log.js","../node_modules/tailwindcss/lib/public/colors.js","../node_modules/tailwindcss/colors.js","../tailwind.config.js","../node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/tailwindcss/lib/corePluginList.js","../node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/tailwindcss/lib/util/defaults.js","../node_modules/tailwindcss/lib/util/toPath.js","../node_modules/tailwindcss/lib/featureFlags.js","../node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/tailwindcss/lib/util/colorNames.js","../node_modules/tailwindcss/lib/util/color.js","../node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/tailwindcss/lib/util/validateFormalSyntax.js","../node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/tailwindcss/stubs/config.full.js","../node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/tailwindcss/resolveConfig.js","../src/constants.ts","../src/components/EIcon.vue?vue&type=script&lang.ts","../src/components/ESpinner.vue?vue&type=script&lang.ts","../src/components/ERow.vue?vue&type=script&lang.ts","../src/components/ECol.vue?vue&type=script&lang.ts","../src/utils.ts","../src/components/EZoomable.vue?vue&type=script&lang.ts","../src/components/EVideoPlayer.vue?vue&type=script&lang.ts","../src/components/ETimeline.config.ts","../src/directives/resize-observer.ts","../src/directives/index.ts","../src/components/ETimelineMilestone.vue?vue&type=script&lang.ts","../src/components/ETimeline.vue?vue&type=script&lang.ts","../src/components/EVideoEmbed.vue?vue&type=script&lang.ts","../src/components/EHeatmapBar.vue?vue&type=script&lang.ts","../src/components/EHoursHeatmap.vue?vue&type=script&lang.ts","../src/components/EReadMore.vue?vue&type=script&lang.ts","../src/components/ETruncatedDiv.vue?vue&type=script&lang.ts","../src/components/ECompareSeparator.vue?vue&type=script&lang.ts","../src/components/EImagesComparator.vue?vue&type=script&lang.ts","../src/mixins/timeouts.ts","../src/mixins/event-listeners.ts","../src/components/EExpandableMenu.vue?vue&type=script&lang.ts","../src/components/svgIcons/BaseIcon.vue?vue&type=script&lang.ts","../src/components/svgIcons/Bim.vue?vue&type=script&lang.ts","../src/components/svgIcons/Blur.vue?vue&type=script&lang.ts","../src/components/svgIcons/Compare.vue?vue&type=script&lang.ts","../src/components/svgIcons/ConcretePump.vue?vue&type=script&lang.ts","../src/components/svgIcons/DroneView.vue?vue&type=script&lang.ts","../src/components/svgIcons/Dumper.vue?vue&type=script&lang.ts","../src/components/svgIcons/Evercam.vue?vue&type=script&lang.ts","../src/components/svgIcons/EvercamLogo.vue?vue&type=script&lang.ts","../src/components/svgIcons/Excavator.vue?vue&type=script&lang.ts","../src/components/svgIcons/FlatbedSemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/FreeDrawing.vue?vue&type=script&lang.ts","../src/components/svgIcons/IModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/Inspection.vue?vue&type=script&lang.ts","../src/components/svgIcons/Loader.vue?vue&type=script&lang.ts","../src/components/svgIcons/MiniModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/OtherTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/RoadVehicle.vue?vue&type=script&lang.ts","../src/components/svgIcons/Roller.vue?vue&type=script&lang.ts","../src/components/svgIcons/Robot.vue?vue&type=script&lang.ts","../src/components/svgIcons/SemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/SkidSteerLoader.vue?vue&type=script&lang.ts","../src/components/svgIcons/SmallTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TankTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/The360.vue?vue&type=script&lang.ts","../src/components/svgIcons/TippingTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckHead.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckMixer.vue?vue&type=script&lang.ts","../src/components/svgIcons/Worker.vue?vue&type=script&lang.ts","../src/components/svgIcons/ZohoCrm.vue?vue&type=script&lang.ts","../src/components/svgIcons/index.ts","../src/components/ESvgIcon.vue?vue&type=script&lang.ts","../src/components/EFlagIcon.vue?vue&type=script&lang.ts","../src/components/EToggleSwitch.vue?vue&type=script&lang.ts","../src/mixins/inactivity-listener.ts","../src/components/EGlobalSearch.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import {\n BadgeSizes,\n AvatarSizes,\n IconSizes,\n BadgeColors,\n ToggleSwitchSizes,\n} from \"@/constants\"\n\nexport enum Size {\n dot = \"dot\",\n xs = \"xs\",\n sm = \"sm\",\n md = \"base\",\n base = \"base\",\n lg = \"lg\",\n xl = \"xl\",\n \"2xl\" = \"2xl\",\n \"3xl\" = \"3xl\",\n \"4xl\" = \"4xl\",\n \"5xl\" = \"5xl\",\n \"6xl\" = \"6xl\",\n \"7xl\" = \"7xl\",\n \"8xl\" = \"8xl\",\n \"9xl\" = \"9xl\",\n}\n\nexport enum BaseColor {\n warning = \"warning\",\n error = \"error\",\n info = \"info\",\n success = \"success\",\n primary = \"primary\",\n brand = \"brand\",\n default = \"default\",\n}\n\n/**\n * {@link Size}\n * */\nexport type TBadgeSize = (typeof BadgeSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TAvatarSize = (typeof AvatarSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TIconSize = (typeof IconSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TToggleSwitchSize = (typeof ToggleSwitchSizes)[number]\n\n/**\n * {@link BaseColor}\n * */\nexport type TBadgeColor = (typeof BadgeColors)[number]\n\nexport type TailwindColorClass = string\n\nexport type FlexJustifyContent =\n | \"around\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignItems = \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n\nexport type FlexAlignContent =\n | \"around\"\n | \"baseline\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignSelf =\n | \"auto\"\n | \"baseline\"\n | \"center\"\n | \"end\"\n | \"start\"\n | \"stretch\"\n\nexport enum TimelineAxis {\n overview = \"overview\",\n detailed = \"detailed\",\n detailedBackground = \"detailedBackground\",\n}\n\nexport type TimelineTicksConfig = {\n precision: number\n interval: any\n format: string | ((d: Date) => string)\n}\n\n/**\n * {@link TimelineAxis}\n * {@link TimelineTicksConfig}\n * */\nexport type TimelineAxesConfig = {\n [key in TimelineAxis]: TimelineTicksConfig[]\n}\n\nexport type Timestamp = Date | string | number\n\nexport type TimelineBarEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n [key: string]: any\n}\n\nexport type TimelineRangeEvent = {\n startDate: string | Date\n endDate: string | Date\n text?: string\n [key: string]: any\n}\n\nexport type TimelineCountEvent = {\n timestamp: string | Date\n count: number\n className?: string\n [key: string]: any\n}\n\nexport type TimelineMilestoneEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n milestoneType: string\n size?: number\n [key: string]: any\n}\n\n/**\n * {@link TimelineBarEvent}\n * {@link TimelineRangeEvent}\n * {@link TimelineCountEvent}\n * {@link TimelineMilestoneEvent}\n */\nexport type TimelineEvent =\n | TimelineBarEvent\n | TimelineRangeEvent\n | TimelineCountEvent\n | TimelineMilestoneEvent\n\nexport enum TimelineChartType {\n bars = \"bars\",\n dots = \"dots\",\n lineGraph = \"lineGraph\",\n barChart = \"barGraph\",\n milestones = \"milestones\",\n}\n\n/**\n * {@link TimelineEvent}\n * {@link TimelineChartType}\n * */\nexport type TimelineEventsGroup = {\n events: Array<TimelineEvent>\n label: string\n color: string\n bgColor?: string\n isLoading?: Boolean\n isHidden?: Boolean\n chartType?: TimelineChartType\n dots?: boolean\n milestonesTransitionDuration?: number\n milestonesLineHeight?: number\n milestonesDotSize?: number\n height?: number\n dotsSize?: number\n bottom?: boolean\n barBorderRadius?: number\n}\n\n/**\n * {@link TimelineEventsGroup}\n * */\nexport type TimelineEventsByType = {\n [eventsType: string]: TimelineEventsGroup\n}\n\nexport type TimelinePrecision = \"hour\" | \"day\" | \"week\" | \"month\" | \"year\"\n\nexport enum TimelineIntervalChangeTrigger {\n zoom = \"zoom\",\n autoPan = \"autoPan\",\n initial = \"initial\",\n}\n\nexport type TimelineMarker = {\n timestamp: string | Date\n label: string\n color: string\n id: string | number\n textColor?: string\n className?: string\n isDraggable?: boolean\n minDate?: string\n maxDate?: string\n [key: string]: any\n}\n\nexport type TimelineInterval = {\n startDate: Date | string | number\n endDate: Date | string | number\n}\n\nexport type HeatmapBarItem = {\n name: string\n count: number\n value: string | number\n}\n\nexport type HoursHeatmapChartItem = {\n count: number\n timestamp: Timestamp\n}\nexport type GlobalSearchMatch = {\n path: Array<string>\n value: string | number | boolean\n}\n\n/**\n * {@link GlobalSearchMatch}\n * */\nexport type GlobalSearchResult = {\n index: number\n matches: Array<GlobalSearchMatch>\n}\n\nexport type GlobalSearchResultInput = Array<Record<any, any> | Array<any>>\n\n/** @ignore */\nexport interface FullscreenHTMLElement extends HTMLElement {\n mozRequestFullScreen?: () => Promise<void>\n webkitRequestFullScreen?: () => Promise<void>\n msRequestFullscreen?: () => Promise<void>\n}\n\n/** @ignore */\nexport interface FullscreenDocument extends Document {\n mozCancelFullScreen?: () => Promise<void>\n webkitCancelFullScreen?: () => Promise<void>\n msExitFullscreen?: () => Promise<void>\n mozFullScreenElement: Element | null\n webkitFullscreenElement: Element | null\n msFullscreenElement: Element | null\n webkitFullscreenEnabled: boolean\n msFullscreenEnabled: boolean\n mozFullScreenEnabled: boolean\n}\n\nexport type D3TimestampParams = {\n timestamp: string | Date\n timezone: string\n}\n\nexport type D3DateParams = {\n date: Date\n timezone: string\n}\n\nexport type TimelineDomain = Date[] | string[]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Size, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EBadge\",\n props: {\n text: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TBadgeSize>,\n default: Size.base,\n },\n },\n data() {\n return {\n colors: {\n [BaseColor.error]: \"e-bg-rose-500 e-text-white\",\n [BaseColor.info]: \"e-bg-cyan-500 e-text-white\",\n [BaseColor.warning]: \"e-bg-amber-500 e-text-white\",\n [BaseColor.primary]: \"e-bg-sky-500 e-text-white\",\n [BaseColor.default]: \"e-bg-slate-300 e-text-white\",\n [BaseColor.success]: \"e-bg-lime-500 e-text-white\",\n },\n sizes: {\n [Size.dot]: \"e-w-2 e-h-2\",\n [Size.xs]: \"e-w-3 e-h-3\",\n [Size.sm]: \"e-w-4 e-h-4\",\n [Size.md]: \"e-w-5 e-h-5\",\n [Size.lg]:\n \"e-min-w-[2rem] e-max-w-[4rem] e-px-1 e-h-6 e-text-sm e-font-medium\",\n [Size.xl]:\n \"e-min-w-[3rem] e-max-w-[5rem] e-px-1 e-h-8 e-text-base e-font-medium\",\n },\n }\n },\n computed: {\n badgeClasses(): string[] {\n const colorClasses =\n this.colors[this.color as keyof typeof this.colors] ||\n this.colors[BaseColor.default]\n const sizeClasses = (this.sizes[this.size as keyof typeof this.sizes] ||\n this.sizes[Size.md]) as string\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full\",\n colorClasses,\n sizeClasses,\n ]\n },\n showText(): boolean {\n return [Size.lg, Size.xl].includes(this.size)\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport Badge from \"@/components/EBadge.vue\"\nimport { BaseColor, Size, TAvatarSize, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EAvatar\",\n components: {\n Badge,\n },\n props: {\n size: {\n type: String as PropType<TAvatarSize>,\n default: Size.md,\n },\n showBadge: {\n type: Boolean,\n default: false,\n },\n badgeColor: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.error,\n },\n badgeText: {\n type: String,\n default: \"\",\n },\n badgeSize: {\n type: String as PropType<TBadgeSize>,\n default: Size.md,\n },\n image: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n sizes: {\n [Size.xs]: \"e-w-8 e-h-8 e-text-xs\",\n [Size.sm]: \"e-w-10 e-h-10 e-text-sm\",\n [Size.md]: \"e-w-14 e-h-14 e-text-base\",\n [Size.lg]: \"e-w-20 e-h-20 e-text-2xl\",\n [Size.xl]: \"e-w-28 e-h-28 e-text-3xl\",\n [Size[\"2xl\"]]: \"e-w-36 e-h-36 e-text-5xl\",\n },\n }\n },\n computed: {\n avatarClasses(): string[] {\n const sizeClasses =\n this.sizes[this.size as TAvatarSize] || this.sizes[Size.xs]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-bg-gradient-to-r e-from-purple-500 e-to-indigo-500 e-text-white e-font-medium\",\n sizeClasses,\n ]\n },\n },\n})\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dim: function() {\n return dim;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n if (key && alreadyShown.has(key)) return;\n if (key) alreadyShown.add(key);\n console.warn(\"\");\n messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n return _picocolors.default.dim(input);\n}\nconst _default = {\n info (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n warn (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n risk (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\"\n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\",\n 950: \"#09090b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\",\n 950: \"#0c0a09\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\",\n 950: \"#1a2e05\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\",\n 950: \"#022c22\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\",\n 950: \"#083344\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\",\n 950: \"#1e1b4b\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\",\n 950: \"#2e1065\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n 950: \"#4a044e\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\",\n 950: \"#4c0519\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\n","const TailwindColors = require(\"tailwindcss/colors.js\")\n\nconst BrandColors = {\n 50: \"#FCE3E4\",\n 100: \"#F9CDCE\",\n 200: \"#F39699\",\n 300: \"#ED6368\",\n 400: \"#E72C32\",\n 500: \"#C4161C\",\n 600: \"#9C1216\",\n 700: \"#770D11\",\n 800: \"#4E090B\",\n 900: \"#290506\",\n}\n\nconst customColors = {\n onprimary: TailwindColors.white,\n warning: TailwindColors.amber,\n error: TailwindColors.rose,\n info: TailwindColors.cyan,\n success: TailwindColors.lime,\n primary: TailwindColors.sky,\n brand: BrandColors,\n \"video-player-progress-bar\": {\n \"base-bg\": \"#6c737a\",\n \"progress-bg\": \"#0090ff\",\n \"hover-bg\": \"#bbb\",\n \"chunk-bg\": \"#9bcdff\",\n \"tootltip-bg\": \"#333\",\n \"transition-duration\": \"0.2s\",\n \"bar-height\": \"7px\",\n },\n}\n\nconst CustomColors = {\n ...customColors,\n // Warning\n warning: customColors.warning[\"500\"],\n \"warning-darken\": customColors.warning[\"600\"],\n \"warning-lighten\": customColors.warning[\"400\"],\n // Success\n success: customColors.success[\"500\"],\n \"success-darken\": customColors.success[\"600\"],\n \"success-lighten\": customColors.success[\"400\"],\n // Error\n error: customColors.error[\"500\"],\n \"error-darken\": customColors.error[\"600\"],\n \"error-lighten\": customColors.error[\"400\"],\n // Info\n info: customColors.info[\"500\"],\n \"info-darken\": customColors.info[\"600\"],\n \"info-lighten\": customColors.info[\"400\"],\n // Primary\n primary: customColors.primary[\"500\"],\n \"primary-darken\": customColors.primary[\"600\"],\n \"primary-lighten\": customColors.primary[\"400\"],\n // Surfaces\n onsurface: TailwindColors.slate[\"500\"],\n onbackground: TailwindColors.slate[\"700\"],\n surface: TailwindColors.slate[\"50\"],\n background: TailwindColors.white,\n}\n\nconst config = {\n prefix: \"e-\",\n dark: \"class\",\n corePlugins: {\n preflight: false,\n },\n content: [\"./src/**/*.{html,js,vue,ts}\"],\n theme: {\n extend: {\n colors: CustomColors,\n lineHeight: {\n xs: \"1rem\",\n sm: \"1.25rem\",\n base: \"1.5rem\",\n lg: \"1.75rem\",\n xl: \"1.75rem\",\n \"2xl\": \"2rem\",\n \"3xl\": \"2.25rem\",\n \"4xl\": \"2.5rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n maxWidth: {\n \"1/12\": \"8.333333333%\",\n \"2/12\": \"16.666666666%\",\n \"3/12\": \"25%\",\n \"4/12\": \"33.333333333%\",\n \"5/12\": \"41.666666667%\",\n \"6/12\": \"50%\",\n \"7/12\": \"58.333333334%\",\n \"8/12\": \"66.666666666%\",\n \"9/12\": \"75%\",\n \"10/12\": \"83.333333334%\",\n \"11/12\": \"91.666666666%\",\n \"12/12\": \"100%\",\n },\n blur: {\n \"video-poster\": \"32px\",\n },\n transitionProperty: {\n \"opacity-transform\": \"opacity, transform\",\n },\n transitionDuration: {\n 600: \"600ms\",\n },\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n },\n plugins: [],\n safelist: [\n {\n pattern: /e-w-(full|auto)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-grow/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-basis-(\\d{1,2}\\/\\d{1,2}|full|auto|0)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /^!?e-max-w-(\\d{1,2}\\/\\d{1,2})/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-offset-(1[0-2]|[1-9])/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-items-(start|center|end|baseline|stretch)/,\n },\n {\n pattern: /e-self-(start|center|end|baseline|stretch)/,\n },\n {\n pattern:\n /e-justify-(around|between|center|end|evenly|normal|start|stretch)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern:\n /e-content-(around|baseline|between|center|end|evenly|normal|start|stretch)/,\n },\n {\n pattern: /e-m[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-p[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n \"e-tiny\",\n \"e-caption\",\n \"e-body\",\n \"e-title-2\",\n \"e-title-1\",\n \"e-display-3\",\n \"e-display-2\",\n \"e-display-1\",\n {\n pattern: /e-text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)/,\n },\n {\n pattern: /e-text-(warning|error|info|success|primary|brand)-./,\n },\n {\n pattern: /e-bg-(warning|error|info|success|primary|brand)-./,\n },\n ],\n}\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = config\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return negateValue;\n }\n});\nfunction negateValue(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n // What functions we support negating numeric values for\n // var() isn't inherently a numeric function but we support it anyway\n // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_\n // to produce generally useful results and that will be covered already\n let numericFunctions = [\n \"var\",\n \"calc\",\n \"min\",\n \"max\",\n \"clamp\"\n ];\n for (const fn of numericFunctions){\n if (value.includes(`${fn}(`)) {\n return `calc(${value} * -1)`;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"lineClamp\",\n \"display\",\n \"aspectRatio\",\n \"size\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"captionSide\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listStyleImage\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"hyphens\",\n \"whitespace\",\n \"textWrap\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"contain\",\n \"content\",\n \"forcedColorAdjust\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n })))\n ];\n return pluginNames;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: function() {\n return defaults;\n }\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var _target_hasOwnProperty;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k of Object.getOwnPropertySymbols(source)){\n var _target_hasOwnProperty1;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {\n target[k] = source[k];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: function() {\n return toPath;\n }\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: function() {\n return flagEnabled;\n },\n issueFlagNotices: function() {\n return issueFlagNotices;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"./util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false,\n generalizedModifiers: true,\n disableColorOpacityUtilitiesByDefault: false,\n relativeContentPathsByDefault: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\",\n \"disableColorOpacityUtilitiesByDefault\",\n \"relativeContentPathsByDefault\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"generalizedModifiers\"\n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var _config_future;\n var _config_future_flag, _ref;\n return config.future === \"all\" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var _config_experimental;\n var _config_experimental_flag, _ref1;\n return config.experimental === \"all\" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var _config_experimental;\n return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: function() {\n return normalizeConfig;\n }\n});\nconst _featureFlags = require(\"../featureFlags\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"relative\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value of Object.values(config.content.transform)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n // `config.content.relative` is optional and can be a boolean\n if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var _purge_options;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize the `blocklist`\n config.blocklist = (()=>{\n let { blocklist } = config;\n if (Array.isArray(blocklist)) {\n if (blocklist.every((item)=>typeof item === \"string\")) {\n return blocklist;\n }\n _log.default.warn(\"blocklist-invalid\", [\n \"The `blocklist` option must be an array of strings.\",\n \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n ]);\n }\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n ]);\n config.prefix = \"\";\n } else {\n var _config_prefix;\n config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n relative: (()=>{\n let { content } = config;\n if (content === null || content === void 0 ? void 0 : content.relative) {\n return content.relative;\n }\n return (0, _featureFlags.flagEnabled)(config, \"relativeContentPathsByDefault\");\n })(),\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;\n if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;\n if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var _config_purge, _config_purge_options, _config_content, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return isPlainObject;\n }\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || Object.getPrototypeOf(prototype) === null;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return escapeCommas;\n }\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = {\n aliceblue: [\n 240,\n 248,\n 255\n ],\n antiquewhite: [\n 250,\n 235,\n 215\n ],\n aqua: [\n 0,\n 255,\n 255\n ],\n aquamarine: [\n 127,\n 255,\n 212\n ],\n azure: [\n 240,\n 255,\n 255\n ],\n beige: [\n 245,\n 245,\n 220\n ],\n bisque: [\n 255,\n 228,\n 196\n ],\n black: [\n 0,\n 0,\n 0\n ],\n blanchedalmond: [\n 255,\n 235,\n 205\n ],\n blue: [\n 0,\n 0,\n 255\n ],\n blueviolet: [\n 138,\n 43,\n 226\n ],\n brown: [\n 165,\n 42,\n 42\n ],\n burlywood: [\n 222,\n 184,\n 135\n ],\n cadetblue: [\n 95,\n 158,\n 160\n ],\n chartreuse: [\n 127,\n 255,\n 0\n ],\n chocolate: [\n 210,\n 105,\n 30\n ],\n coral: [\n 255,\n 127,\n 80\n ],\n cornflowerblue: [\n 100,\n 149,\n 237\n ],\n cornsilk: [\n 255,\n 248,\n 220\n ],\n crimson: [\n 220,\n 20,\n 60\n ],\n cyan: [\n 0,\n 255,\n 255\n ],\n darkblue: [\n 0,\n 0,\n 139\n ],\n darkcyan: [\n 0,\n 139,\n 139\n ],\n darkgoldenrod: [\n 184,\n 134,\n 11\n ],\n darkgray: [\n 169,\n 169,\n 169\n ],\n darkgreen: [\n 0,\n 100,\n 0\n ],\n darkgrey: [\n 169,\n 169,\n 169\n ],\n darkkhaki: [\n 189,\n 183,\n 107\n ],\n darkmagenta: [\n 139,\n 0,\n 139\n ],\n darkolivegreen: [\n 85,\n 107,\n 47\n ],\n darkorange: [\n 255,\n 140,\n 0\n ],\n darkorchid: [\n 153,\n 50,\n 204\n ],\n darkred: [\n 139,\n 0,\n 0\n ],\n darksalmon: [\n 233,\n 150,\n 122\n ],\n darkseagreen: [\n 143,\n 188,\n 143\n ],\n darkslateblue: [\n 72,\n 61,\n 139\n ],\n darkslategray: [\n 47,\n 79,\n 79\n ],\n darkslategrey: [\n 47,\n 79,\n 79\n ],\n darkturquoise: [\n 0,\n 206,\n 209\n ],\n darkviolet: [\n 148,\n 0,\n 211\n ],\n deeppink: [\n 255,\n 20,\n 147\n ],\n deepskyblue: [\n 0,\n 191,\n 255\n ],\n dimgray: [\n 105,\n 105,\n 105\n ],\n dimgrey: [\n 105,\n 105,\n 105\n ],\n dodgerblue: [\n 30,\n 144,\n 255\n ],\n firebrick: [\n 178,\n 34,\n 34\n ],\n floralwhite: [\n 255,\n 250,\n 240\n ],\n forestgreen: [\n 34,\n 139,\n 34\n ],\n fuchsia: [\n 255,\n 0,\n 255\n ],\n gainsboro: [\n 220,\n 220,\n 220\n ],\n ghostwhite: [\n 248,\n 248,\n 255\n ],\n gold: [\n 255,\n 215,\n 0\n ],\n goldenrod: [\n 218,\n 165,\n 32\n ],\n gray: [\n 128,\n 128,\n 128\n ],\n green: [\n 0,\n 128,\n 0\n ],\n greenyellow: [\n 173,\n 255,\n 47\n ],\n grey: [\n 128,\n 128,\n 128\n ],\n honeydew: [\n 240,\n 255,\n 240\n ],\n hotpink: [\n 255,\n 105,\n 180\n ],\n indianred: [\n 205,\n 92,\n 92\n ],\n indigo: [\n 75,\n 0,\n 130\n ],\n ivory: [\n 255,\n 255,\n 240\n ],\n khaki: [\n 240,\n 230,\n 140\n ],\n lavender: [\n 230,\n 230,\n 250\n ],\n lavenderblush: [\n 255,\n 240,\n 245\n ],\n lawngreen: [\n 124,\n 252,\n 0\n ],\n lemonchiffon: [\n 255,\n 250,\n 205\n ],\n lightblue: [\n 173,\n 216,\n 230\n ],\n lightcoral: [\n 240,\n 128,\n 128\n ],\n lightcyan: [\n 224,\n 255,\n 255\n ],\n lightgoldenrodyellow: [\n 250,\n 250,\n 210\n ],\n lightgray: [\n 211,\n 211,\n 211\n ],\n lightgreen: [\n 144,\n 238,\n 144\n ],\n lightgrey: [\n 211,\n 211,\n 211\n ],\n lightpink: [\n 255,\n 182,\n 193\n ],\n lightsalmon: [\n 255,\n 160,\n 122\n ],\n lightseagreen: [\n 32,\n 178,\n 170\n ],\n lightskyblue: [\n 135,\n 206,\n 250\n ],\n lightslategray: [\n 119,\n 136,\n 153\n ],\n lightslategrey: [\n 119,\n 136,\n 153\n ],\n lightsteelblue: [\n 176,\n 196,\n 222\n ],\n lightyellow: [\n 255,\n 255,\n 224\n ],\n lime: [\n 0,\n 255,\n 0\n ],\n limegreen: [\n 50,\n 205,\n 50\n ],\n linen: [\n 250,\n 240,\n 230\n ],\n magenta: [\n 255,\n 0,\n 255\n ],\n maroon: [\n 128,\n 0,\n 0\n ],\n mediumaquamarine: [\n 102,\n 205,\n 170\n ],\n mediumblue: [\n 0,\n 0,\n 205\n ],\n mediumorchid: [\n 186,\n 85,\n 211\n ],\n mediumpurple: [\n 147,\n 112,\n 219\n ],\n mediumseagreen: [\n 60,\n 179,\n 113\n ],\n mediumslateblue: [\n 123,\n 104,\n 238\n ],\n mediumspringgreen: [\n 0,\n 250,\n 154\n ],\n mediumturquoise: [\n 72,\n 209,\n 204\n ],\n mediumvioletred: [\n 199,\n 21,\n 133\n ],\n midnightblue: [\n 25,\n 25,\n 112\n ],\n mintcream: [\n 245,\n 255,\n 250\n ],\n mistyrose: [\n 255,\n 228,\n 225\n ],\n moccasin: [\n 255,\n 228,\n 181\n ],\n navajowhite: [\n 255,\n 222,\n 173\n ],\n navy: [\n 0,\n 0,\n 128\n ],\n oldlace: [\n 253,\n 245,\n 230\n ],\n olive: [\n 128,\n 128,\n 0\n ],\n olivedrab: [\n 107,\n 142,\n 35\n ],\n orange: [\n 255,\n 165,\n 0\n ],\n orangered: [\n 255,\n 69,\n 0\n ],\n orchid: [\n 218,\n 112,\n 214\n ],\n palegoldenrod: [\n 238,\n 232,\n 170\n ],\n palegreen: [\n 152,\n 251,\n 152\n ],\n paleturquoise: [\n 175,\n 238,\n 238\n ],\n palevioletred: [\n 219,\n 112,\n 147\n ],\n papayawhip: [\n 255,\n 239,\n 213\n ],\n peachpuff: [\n 255,\n 218,\n 185\n ],\n peru: [\n 205,\n 133,\n 63\n ],\n pink: [\n 255,\n 192,\n 203\n ],\n plum: [\n 221,\n 160,\n 221\n ],\n powderblue: [\n 176,\n 224,\n 230\n ],\n purple: [\n 128,\n 0,\n 128\n ],\n rebeccapurple: [\n 102,\n 51,\n 153\n ],\n red: [\n 255,\n 0,\n 0\n ],\n rosybrown: [\n 188,\n 143,\n 143\n ],\n royalblue: [\n 65,\n 105,\n 225\n ],\n saddlebrown: [\n 139,\n 69,\n 19\n ],\n salmon: [\n 250,\n 128,\n 114\n ],\n sandybrown: [\n 244,\n 164,\n 96\n ],\n seagreen: [\n 46,\n 139,\n 87\n ],\n seashell: [\n 255,\n 245,\n 238\n ],\n sienna: [\n 160,\n 82,\n 45\n ],\n silver: [\n 192,\n 192,\n 192\n ],\n skyblue: [\n 135,\n 206,\n 235\n ],\n slateblue: [\n 106,\n 90,\n 205\n ],\n slategray: [\n 112,\n 128,\n 144\n ],\n slategrey: [\n 112,\n 128,\n 144\n ],\n snow: [\n 255,\n 250,\n 250\n ],\n springgreen: [\n 0,\n 255,\n 127\n ],\n steelblue: [\n 70,\n 130,\n 180\n ],\n tan: [\n 210,\n 180,\n 140\n ],\n teal: [\n 0,\n 128,\n 128\n ],\n thistle: [\n 216,\n 191,\n 216\n ],\n tomato: [\n 255,\n 99,\n 71\n ],\n turquoise: [\n 64,\n 224,\n 208\n ],\n violet: [\n 238,\n 130,\n 238\n ],\n wheat: [\n 245,\n 222,\n 179\n ],\n white: [\n 255,\n 255,\n 255\n ],\n whitesmoke: [\n 245,\n 245,\n 245\n ],\n yellow: [\n 255,\n 255,\n 0\n ],\n yellowgreen: [\n 154,\n 205,\n 50\n ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: function() {\n return parseColor;\n },\n formatColor: function() {\n return formatColor;\n }\n});\nconst _colorNames = /*#__PURE__*/ _interop_require_default(require(\"./colorNames\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\\(--[^ )]*?\\)))?\\)/;\nlet RGB = new RegExp(`^(rgba?)\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsla?)\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var _match_, _match__toString;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorNames.default) {\n return {\n mode: \"rgb\",\n color: _colorNames.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var _value_match;\n let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n // rgba(var(--my-color), 0.1)\n // hsla(var(--my-color), 0.1)\n if (color.length === 2 && color[0].startsWith(\"var(\")) {\n return {\n mode: match[1],\n color: [\n color[0]\n ],\n alpha: color[1]\n };\n }\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n if (mode === \"rgba\" || mode === \"hsla\") {\n return `${mode}(${color.join(\", \")}${hasAlpha ? `, ${alpha}` : \"\"})`;\n }\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: function() {\n return withAlphaValue;\n },\n default: function() {\n return withAlphaVariable;\n }\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n * ─┬─ ┬ ┬ ┬\n * x x x ╰──────── Split because top-level\n * ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: function() {\n return splitAtTopLevelOnly;\n }\n});\nfunction splitAtTopLevelOnly(input, separator) {\n let stack = [];\n let parts = [];\n let lastPos = 0;\n let isEscaped = false;\n for(let idx = 0; idx < input.length; idx++){\n let char = input[idx];\n if (stack.length === 0 && char === separator[0] && !isEscaped) {\n if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n parts.push(input.slice(lastPos, idx));\n lastPos = idx + separator.length;\n }\n }\n if (isEscaped) {\n isEscaped = false;\n } else if (char === \"\\\\\") {\n isEscaped = true;\n }\n if (char === \"(\" || char === \"[\" || char === \"{\") {\n stack.push(char);\n } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n stack.pop();\n }\n }\n parts.push(input.slice(lastPos));\n return parts;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: function() {\n return parseBoxShadowValue;\n },\n formatBoxShadowValue: function() {\n return formatBoxShadowValue;\n }\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: function() {\n return normalize;\n },\n url: function() {\n return url;\n },\n number: function() {\n return number;\n },\n percentage: function() {\n return percentage;\n },\n length: function() {\n return length;\n },\n lineWidth: function() {\n return lineWidth;\n },\n shadow: function() {\n return shadow;\n },\n color: function() {\n return color;\n },\n image: function() {\n return image;\n },\n gradient: function() {\n return gradient;\n },\n position: function() {\n return position;\n },\n familyName: function() {\n return familyName;\n },\n genericName: function() {\n return genericName;\n },\n absoluteSize: function() {\n return absoluteSize;\n },\n relativeSize: function() {\n return relativeSize;\n }\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\n// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them\n// as: `timeline-scope: --tl;`\n//\n// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add\n// the `var()` yourself.\n//\n// More info:\n// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope\n// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident\n//\nconst AUTO_VAR_INJECTION_EXCEPTIONS = new Set([\n // Concrete properties\n \"scroll-timeline-name\",\n \"timeline-scope\",\n \"view-timeline-name\",\n \"font-palette\",\n // Shorthand properties\n \"scroll-timeline\",\n \"animation-timeline\",\n \"view-timeline\"\n]);\nfunction normalize(value, context = null, isRoot = true) {\n let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property);\n if (value.startsWith(\"--\") && !isVarException) {\n return `var(${value})`;\n }\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, context, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n value = normalizeMathOperatorSpacing(value);\n return value;\n}\n/**\n * Add spaces around operators inside math functions\n * like calc() that do not follow an operator, '(', or `,`.\n *\n * @param {string} value\n * @returns {string}\n */ function normalizeMathOperatorSpacing(value) {\n let preventFormattingInFunctions = [\n \"theme\"\n ];\n let preventFormattingKeywords = [\n \"min-content\",\n \"max-content\",\n \"fit-content\",\n // Env\n \"safe-area-inset-top\",\n \"safe-area-inset-right\",\n \"safe-area-inset-bottom\",\n \"safe-area-inset-left\",\n \"titlebar-area-x\",\n \"titlebar-area-y\",\n \"titlebar-area-width\",\n \"titlebar-area-height\",\n \"keyboard-inset-top\",\n \"keyboard-inset-right\",\n \"keyboard-inset-bottom\",\n \"keyboard-inset-left\",\n \"keyboard-inset-width\",\n \"keyboard-inset-height\",\n \"radial-gradient\",\n \"linear-gradient\",\n \"conic-gradient\",\n \"repeating-radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-conic-gradient\"\n ];\n return value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n let result = \"\";\n function lastChar() {\n let char = result.trimEnd();\n return char[char.length - 1];\n }\n for(let i = 0; i < match.length; i++){\n function peek(word) {\n return word.split(\"\").every((char, j)=>match[i + j] === char);\n }\n function consumeUntil(chars) {\n let minIndex = Infinity;\n for (let char of chars){\n let index = match.indexOf(char, i);\n if (index !== -1 && index < minIndex) {\n minIndex = index;\n }\n }\n let result = match.slice(i, minIndex);\n i += result.length - 1;\n return result;\n }\n let char = match[i];\n // Handle `var(--variable)`\n if (peek(\"var\")) {\n // When we consume until `)`, then we are dealing with this scenario:\n // `var(--example)`\n //\n // When we consume until `,`, then we are dealing with this scenario:\n // `var(--example, 1rem)`\n //\n // In this case we do want to \"format\", the default value as well\n result += consumeUntil([\n \")\",\n \",\"\n ]);\n } else if (preventFormattingKeywords.some((keyword)=>peek(keyword))) {\n let keyword = preventFormattingKeywords.find((keyword)=>peek(keyword));\n result += keyword;\n i += keyword.length - 1;\n } else if (preventFormattingInFunctions.some((fn)=>peek(fn))) {\n result += consumeUntil([\n \")\"\n ]);\n } else if (peek(\"[\")) {\n result += consumeUntil([\n \"]\"\n ]);\n } else if ([\n \"+\",\n \"-\",\n \"*\",\n \"/\"\n ].includes(char) && ![\n \"(\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \",\"\n ].includes(lastChar())) {\n result += ` ${char} `;\n } else {\n result += char;\n }\n }\n // Simplify multiple spaces\n return result.replace(/\\s+/g, \" \");\n });\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\n// Please refer to MDN when updating this list:\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units\n// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\",\n \"vb\",\n \"vi\",\n \"svw\",\n \"svh\",\n \"lvw\",\n \"lvh\",\n \"dvw\",\n \"dvh\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"conic-gradient\",\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-conic-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\"\n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\"\n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"xx-large\",\n \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n enumerable: true,\n get: function() {\n return backgroundSize;\n }\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n let keywordValues = [\n \"cover\",\n \"contain\"\n ];\n // the <length-percentage> type will probably be a css function\n // so we have to use `splitAtTopLevelOnly`\n return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n if (sizes.length !== 1 && sizes.length !== 2) return false;\n return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: function() {\n return updateAllClasses;\n },\n asValue: function() {\n return asValue;\n },\n parseColorFormat: function() {\n return parseColorFormat;\n },\n asColor: function() {\n return asColor;\n },\n asLookupValue: function() {\n return asLookupValue;\n },\n typeMap: function() {\n return typeMap;\n },\n coerceValue: function() {\n return coerceValue;\n },\n getMatchingTypes: function() {\n return getMatchingTypes;\n }\n});\nconst _escapeCommas = /*#__PURE__*/ _interop_require_default(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlags = require(\"../featureFlags.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n selectors.walkClasses((sel)=>{\n sel.value = updateClass(sel.value);\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var _options_values;\n let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n // If the `/` is inside an arbitrary, we want to find the previous one if any\n // This logic probably isn't perfect but it should work for most cases\n let arbitraryStartIdx = modifier.lastIndexOf(\"[\", slashIdx);\n let arbitraryEndIdx = modifier.indexOf(\"]\", slashIdx);\n let isNextToArbitrary = modifier[slashIdx - 1] === \"]\" || modifier[slashIdx + 1] === \"[\";\n // Backtrack to the previous `/` if the one we found was inside an arbitrary\n if (!isNextToArbitrary) {\n if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {\n if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {\n slashIdx = modifier.lastIndexOf(\"/\", arbitraryStartIdx);\n }\n }\n }\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier,\n undefined\n ];\n }\n let arbitrary = isArbitraryValue(modifier);\n // The modifier could be of the form `[foo]/[bar]`\n // We want to handle this case properly\n // without affecting `[foo/bar]`\n if (arbitrary && !modifier.includes(\"]/[\")) {\n return [\n modifier,\n undefined\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction unwrapArbitraryModifier(modifier) {\n return (0, _dataTypes.normalize)(modifier.slice(1, -1));\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var _options_values;\n if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {\n var _options_values1;\n return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);\n }\n // TODO: Hoist this up to getMatchingTypes or something\n // We do this here because we need the alpha value (if any)\n let [color, alpha] = splitUtilityModifier(modifier);\n if (alpha !== undefined) {\n var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;\n var _options_values_color;\n let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));\n }\n if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var _options_values;\n return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow),\n size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (options.values && modifier in options.values) {\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n return [\n result,\n type,\n null\n ];\n }\n }\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType,\n null\n ];\n }\n }\n let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n // Find first matching type\n for (let match of matches){\n return match;\n }\n return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n if (!canUseUtilityModifier) {\n modifier = rawModifier;\n utilityModifier = undefined;\n }\n if (utilityModifier !== undefined && modifier === \"\") {\n modifier = \"DEFAULT\";\n }\n // Check the full value first\n // TODO: Move to asValue… somehow\n if (utilityModifier !== undefined) {\n if (typeof options.modifiers === \"object\") {\n var _options_modifiers;\n var _options_modifiers_utilityModifier;\n let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;\n if (configValue !== null) {\n utilityModifier = configValue;\n } else if (isArbitraryValue(utilityModifier)) {\n utilityModifier = unwrapArbitraryModifier(utilityModifier);\n }\n }\n }\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n yield [\n result,\n type,\n utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n ];\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return toColorValue;\n }\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interop_require_default(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interop_require_default(require(\"./configurePlugins\"));\nconst _colors = /*#__PURE__*/ _interop_require_default(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interop_require_default(require(\"./toColorValue\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n target[k] = mergeWith({}, target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var _config_plugins;\n const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var _plugin_config;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\"\n }\n ];\n var _t_theme, _c_plugins;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];\n }))\n }, ...allConfigs));\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridTemplateColumns: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n ...theme('spacing'),\n none: 'none',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n minWidth: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 15: '0.15',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 35: '0.35',\n 40: '0.4',\n 45: '0.45',\n 50: '0.5',\n 55: '0.55',\n 60: '0.6',\n 65: '0.65',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 85: '0.85',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n size: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n svw: '100svw',\n lvw: '100lvw',\n dvw: '100dvw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return getAllConfigs;\n }\n});\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var _config_presets;\n const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [\n _configfull.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: ({ theme })=>({\n DEFAULT: \"#3b82f67f\",\n ...theme(\"colors\")\n })\n }\n },\n disableColorOpacityUtilitiesByDefault: {\n corePlugins: {\n backgroundOpacity: false,\n borderOpacity: false,\n divideOpacity: false,\n placeholderOpacity: false,\n ringOpacity: false,\n textOpacity: false\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _resolveConfig = /*#__PURE__*/ _interop_require_default(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interop_require_default(require(\"../util/getAllConfigs\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","// @ts-ignore\nimport tailwindConfig from \"../tailwind.config.js\"\nimport resolveConfig from \"tailwindcss/resolveConfig\"\nimport { Size, BaseColor } from \"@/types\"\n\nexport const fullConfig = resolveConfig(tailwindConfig) as any\n\nexport const TextSizes = fullConfig.theme.fontSize\n\nexport const Colors = fullConfig.theme.colors\n\nexport const BadgeSizes = [\n Size.dot,\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n] as const\n\nexport const AvatarSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n] as const\n\nexport const IconSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.base,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n Size[\"3xl\"],\n Size[\"4xl\"],\n Size[\"5xl\"],\n Size[\"6xl\"],\n Size[\"7xl\"],\n Size[\"8xl\"],\n Size[\"9xl\"],\n] as const\n\nexport const ToggleSwitchSizes = [Size.sm, Size.md, Size.lg] as const\n\nexport const BadgeColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { IconSizes } from \"@/constants\"\nimport { BaseColor, Size, TailwindColorClass, TIconSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EIcon\",\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n },\n computed: {\n sizes(): Record<Size, string> {\n return IconSizes.reduce((acc, s) => {\n return {\n ...acc,\n [s]: `e-text-${s}`,\n }\n }, {}) as Record<Size, string>\n },\n iconClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.sm]\n const iconClasses = `${\n this.icon?.split(\" \")?.length > 1 ? this.icon : `fa fa-${this.icon}`\n }`\n const color = this.color\n\n return [\n \"e-inline-flex e-items-center e-justify-center e-rounded-full\",\n color,\n iconClasses,\n sizeClasses,\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size } from \"@/types\"\nimport { TextSizes, Colors } from \"@/constants\"\n\nexport default Vue.extend({\n name: \"ESpinner\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n color: {\n type: Boolean,\n default: true,\n },\n animationDuration: {\n type: [Number, String],\n default: 1000,\n },\n size: {\n type: String as PropType<Size>,\n default: Size.base,\n },\n opacity: {\n type: [String, Number],\n default: 1,\n },\n },\n data() {\n return {\n sizes: TextSizes,\n colors: Colors,\n }\n },\n computed: {\n computedSize(): number {\n return this.sizes[Size[this.size]] || this.size || this.sizes[Size.base]\n },\n fill(): { primary: string; secondary: string } {\n let fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[300],\n }\n\n if (this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[100],\n secondary: this.colors.neutral[100],\n }\n }\n\n if (!this.dark && this.color) {\n fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[950],\n }\n }\n\n if (!this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[200],\n secondary: this.colors.neutral[200],\n }\n }\n\n return fill\n },\n },\n methods: {\n getNthPathStyle(index: number) {\n const animationDuration =\n typeof this.animationDuration === \"string\"\n ? Number.parseInt(this.animationDuration)\n : this.animationDuration\n\n return {\n animationDuration: `${this.animationDuration}ms`,\n animationDelay: `${(index / 10) * animationDuration}ms`,\n fill: `${this.fill[index % 2 === 0 ? \"primary\" : \"secondary\"]}`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignContent, FlexAlignItems, FlexJustifyContent } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n align: {\n type: String as PropType<FlexAlignItems>,\n default: undefined,\n },\n alignContent: {\n type: String as PropType<FlexAlignContent>,\n default: undefined,\n },\n justify: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXs: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifySm: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyMd: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyLg: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXl: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n noGutters: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n computed: {\n justifyClasses(): Record<string, boolean> {\n return {\n [`e-justify-${this.justify}`]: !!this.justify,\n [`xs:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`sm:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`md:e-justify-${this.justifyMd}`]: !!this.justifyMd,\n [`lg:e-justify-${this.justifyLg}`]: !!this.justifyLg,\n [`xl:e-justify-${this.justifyXl}`]: !!this.justifyXl,\n }\n },\n rowClasses(): Record<string, boolean> {\n return {\n ...(this.align ? { [`e-items-${this.align}`]: true } : {}),\n ...(this.alignContent\n ? { [`e-content-${this.alignContent}`]: true }\n : {}),\n ...(this.noGutters ? { [\"e-row--no-gutters\"]: true } : {}),\n ...this.justifyClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignSelf } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n alignSelf: {\n type: String as PropType<FlexAlignSelf>,\n default: \"auto\",\n },\n cols: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n lg: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n md: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n offset: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetLg: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetMd: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetSm: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXs: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXl: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n sm: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xs: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xl: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n },\n computed: {\n colClasses(): Record<string, boolean> {\n return {\n // Align self\n ...(this.alignSelf ? { [`e-self-${this.alignSelf}`]: true } : {}),\n\n // cols=\"auto\"\n [this.autoClasses(\"xs:\", this.xs)]: this.isSizePropAuto(this.xs),\n [this.autoClasses(\"sm:\", this.sm)]: this.isSizePropAuto(this.sm),\n [this.autoClasses(\"md:\", this.md)]: this.isSizePropAuto(this.md),\n [this.autoClasses(\"lg:\", this.lg)]: this.isSizePropAuto(this.lg),\n [this.autoClasses(\"xl:e\", this.xl)]: this.isSizePropAuto(this.xl),\n [this.autoClasses(\"\", this.cols)]: this.isSizePropAuto(this.cols, true),\n\n // cols=\"12\"\n \"xs:e-basis-full xs:!e-max-w-12/12\": this.xs === 12 || this.xs === \"12\",\n \"sm:e-basis-full sm:!e-max-w-12/12\": this.sm === 12 || this.sm === \"12\",\n \"md:e-basis-full md:!e-max-w-12/12\": this.md === 12 || this.md === \"12\",\n \"lg:e-basis-full lg:!e-max-w-12/12\": this.lg === 12 || this.lg === \"12\",\n \"xl:e-basis-full xl:!e-max-w-12/12\": this.xl === 12 || this.xl === \"12\",\n \"e-basis-full e-max-w-12/12\": this.cols === 12 || this.cols === \"12\",\n\n // cols=\"n\"\n [`xs:e-basis-${this.xs}/12 xs:!e-max-w-${this.xs}/12`]:\n this.isSizePropertyNumeric(this.xs),\n [`sm:e-basis-${this.sm}/12 sm:!e-max-w-${this.sm}/12`]:\n this.isSizePropertyNumeric(this.sm),\n [`md:e-basis-${this.md}/12 md:!e-max-w-${this.md}/12`]:\n this.isSizePropertyNumeric(this.md),\n [`lg:e-basis-${this.lg}/12 lg:!e-max-w-${this.lg}/12`]:\n this.isSizePropertyNumeric(this.lg),\n [`xl:e-basis-${this.xl}/12 xl:!e-max-w-${this.xl}/12`]:\n this.isSizePropertyNumeric(this.xl),\n [`e-basis-${this.cols}/12 !e-max-w-${this.cols}/12`]:\n this.isSizePropertyNumeric(this.cols),\n\n // offset=\"n\"\n [`xs:e-offset-${this.offsetXs}`]: this.offsetXs !== undefined,\n [`sm:e-offset-${this.offsetSm}`]: this.offsetSm !== undefined,\n [`md:e-offset-${this.offsetMd}`]: this.offsetMd !== undefined,\n [`lg:e-offset-${this.offsetLg}`]: this.offsetLg !== undefined,\n [`xl:e-offset-${this.offsetXl}`]: this.offsetXl !== undefined,\n [`e-offset-${this.offset}`]: this.offset !== undefined,\n }\n },\n },\n methods: {\n autoClasses(prefix: string, value: boolean | string | number) {\n const basis = value === \"auto\" ? \"auto\" : \"0\"\n const grow = value === \"auto\" ? \"-0\" : \"\"\n const width = value === \"auto\" ? \"auto\" : \"full\"\n\n return `${prefix}e-basis-${basis} ${prefix}e-grow${grow} ${prefix}e-w-${width}`\n },\n isSizePropAuto(\n prop: boolean | string | number | undefined,\n acceptUndefined = false\n ) {\n return (\n prop === \"auto\" ||\n prop === 0 ||\n prop === \"0\" ||\n (acceptUndefined && !prop)\n )\n },\n isSizePropertyNumeric(prop: boolean | string | number | undefined) {\n const n = Number.parseInt(prop as string)\n\n return prop !== \"auto\" && !isNaN(n) && n >= 1 && n < 12\n },\n },\n})\n","import { FullscreenDocument, FullscreenHTMLElement } from \"@/types\"\n\nexport function isFullScreen() {\n const doc = document as FullscreenDocument\n\n return !!(\n doc.fullscreenElement ||\n doc.mozFullScreenElement ||\n doc.webkitFullscreenElement ||\n doc.msFullscreenElement\n )\n}\n\nexport function makeFullScreen(element: HTMLElement) {\n if (isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const el = element as FullscreenHTMLElement\n if (el.requestFullscreen) {\n return el?.requestFullscreen()\n } else if (el.mozRequestFullScreen) {\n return el?.mozRequestFullScreen()\n } else if (el.webkitRequestFullScreen) {\n return el?.webkitRequestFullScreen()\n } else if (el.msRequestFullscreen) {\n return el?.msRequestFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function exitFullScreen(): Promise<void | null> {\n if (!isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const doc = document as FullscreenDocument\n if (doc.exitFullscreen) {\n return doc.exitFullscreen()\n } else if (doc.mozCancelFullScreen) {\n return doc.mozCancelFullScreen()\n } else if (doc.webkitCancelFullScreen) {\n return doc.webkitCancelFullScreen()\n } else if (doc.msExitFullscreen) {\n return doc.msExitFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait?: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n return function (...args: Parameters<T>): void {\n // @ts-ignore\n const context = this\n\n if (timeout !== null) {\n clearTimeout(timeout)\n }\n\n timeout = setTimeout(() => {\n timeout = null\n func.apply(context, args)\n }, wait || 1000)\n }\n}\n\nexport function getRandomChars(length: number = 1): string {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n\n return result\n}\n","\nimport Vue, { StyleValue } from \"vue\"\nexport default Vue.extend({\n name: \"EZoomable\",\n props: {\n ignorePointerEvents: {\n type: Boolean,\n default: false,\n },\n withOverlay: {\n type: Boolean,\n default: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n scale: 1,\n minScale: 1,\n maxScale: 20,\n top: 0,\n left: 0,\n isPanning: false,\n panStart: { x: 0, y: 0 },\n isPinching: false,\n previousPinchDistance: 0,\n pinchDistance: 0,\n pointers: {} as Record<number, PointerEvent>,\n transform: \"matrix(1, 0, 0, 1, 0, 0)\",\n }\n },\n computed: {\n contentStyle(): StyleValue {\n return {\n transform: this.transform as string,\n }\n },\n isZoomed(): boolean {\n return this.scale > 1\n },\n },\n watch: {\n contentStyle: {\n handler(imgStyle) {\n this.$emit(\"apply-zoomable-style\", { imgStyle })\n },\n immediate: true,\n deep: true,\n },\n },\n methods: {\n updateZoomScale() {\n if (this.scale > this.maxScale) {\n this.scale = this.maxScale\n } else if (this.scale < this.minScale) {\n this.scale = this.minScale\n }\n },\n handleZoom(e: WheelEvent) {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n e.preventDefault()\n if (this.disabled) {\n return\n }\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const mouseX = e.clientX\n const mouseY = e.clientY\n // @ts-ignore\n const delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail))\n const oldScale = this.scale\n\n this.scale += delta / 10\n this.updateZoomScale()\n\n const xPercent = (\n (mouseX - contentRect.left) /\n contentRect.width\n ).toFixed(2)\n const yPercent = (\n (mouseY - contentRect.top) /\n contentRect.height\n ).toFixed(2)\n\n this.left = Math.round(\n mouseX -\n containerRect.left -\n Number(xPercent) * ((contentRect.width * this.scale) / oldScale)\n )\n this.top = Math.round(\n mouseY -\n containerRect.top -\n Number(yPercent) * ((contentRect.height * this.scale) / oldScale)\n )\n\n const maxLeft = 0\n const minLeft = 0 - containerRect.width * (this.scale - 1)\n const minTop = 0 - containerRect.height * (this.scale - 1)\n const maxTop = 0\n\n if (this.left < minLeft) {\n this.left = minLeft\n } else if (this.left > maxLeft) {\n this.left = maxLeft\n }\n\n if (this.top < minTop) {\n this.top = minTop\n } else if (this.top > maxTop) {\n this.top = maxTop\n }\n\n this.updateTransform()\n },\n handleMouseDown(e: MouseEvent) {\n if (!this.isZoomed || this.disabled) {\n return\n }\n this.isPanning = true\n this.panStart = { x: e.clientX, y: e.clientY }\n },\n handleMouseUp() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseLeave() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseMove(e: MouseEvent) {\n if (!this.isPanning || !this.isZoomed || this.disabled) {\n return\n }\n const deltaX = e.clientX - this.panStart.x\n const deltaY = e.clientY - this.panStart.y\n\n this.left += deltaX\n this.top += deltaY\n\n this.applyBoundsCorrection()\n this.panStart = { x: e.clientX, y: e.clientY }\n\n this.updateTransform()\n },\n applyBoundsCorrection() {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n // Corrections ensure there is no gap between content and container when panning\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const [correctionTop, correctionRight, correctionBottom, correctionLeft] =\n [\n containerRect.top - contentRect.top,\n contentRect.right - containerRect.right,\n contentRect.bottom - containerRect.bottom,\n containerRect.left - contentRect.left,\n ].map((v) => (v < 0 ? v : 0))\n\n this.left += correctionLeft - correctionRight\n this.top += correctionTop - correctionBottom\n },\n updateTransform() {\n this.transform = `matrix(${this.scale}, 0, 0, ${this.scale}, ${this.left}, ${this.top})`\n },\n getPointersDistance(a: PointerEvent, b: PointerEvent) {\n return Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY)\n },\n getPointersMidPoint(a: PointerEvent, b: PointerEvent) {\n return {\n x: a.clientX + (b.clientX - a.clientX) / 2,\n y: a.clientY + (b.clientY - a.clientY) / 2,\n }\n },\n updatePointerEvent(e: PointerEvent) {\n this.pointers[e.pointerId] = e\n },\n clearPointerEvent(e: PointerEvent) {\n this.$delete(this.pointers, e.pointerId)\n },\n updatePinchDistance() {\n const pointers = Object.values(this.pointers)\n if (pointers.length !== 2) {\n return\n }\n\n this.pinchDistance = this.getPointersDistance(pointers[0], pointers[1])\n },\n handlePointerDown(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n this.isPinching = Object.values(this.pointers).length === 2\n\n if (this.isPinching) {\n this.isPanning = false\n this.updatePinchDistance()\n } else {\n this.handleMouseDown(e)\n }\n },\n handlePointerMove(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n if (this.isPinching) {\n this.previousPinchDistance = this.pinchDistance\n this.updatePinchDistance()\n const delta = this.pinchDistance / this.previousPinchDistance\n this.scale *= delta\n this.updateZoomScale()\n\n const pointers = Object.values(this.pointers)\n const midPoint = this.getPointersMidPoint(pointers[0], pointers[1])\n\n this.left = midPoint.x - (midPoint.x - this.left) * delta\n this.top = midPoint.y - (midPoint.y - this.top) * delta\n\n this.applyBoundsCorrection()\n this.updateTransform()\n } else {\n this.handleMouseMove(e)\n }\n },\n handlePointerUp(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.clearPointerEvent(e)\n this.previousPinchDistance = 0\n this.pinchDistance = 0\n this.isPanning = false\n this.isPinching = false\n },\n },\n})\n","\nimport Hls, { ErrorData, Events, HlsConfig } from \"hls.js\"\nimport Vue, { PropType } from \"vue\"\nimport { makeFullScreen, exitFullScreen } from \"@/utils\"\nimport { FullscreenDocument } from \"@/types\"\n\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\nimport moment from \"moment-timezone\"\n// types:\nexport type VideoSource = {\n type: string\n src: string\n}\n\n// Helper functions\nconst leadingZeroFormatter = new Intl.NumberFormat(undefined, {\n minimumIntegerDigits: 2,\n})\n\n// List of events so we can bind them on mount\nexport const VIDEO_PLAYER_EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n \"error\",\n]\n\nconst formatDuration = (time: number) => {\n const seconds = Math.floor(time % 60)\n const minutes = Math.floor(time / 60) % 60\n const hours = Math.floor(time / 3600)\n if (hours === 0) {\n return `${minutes}:${leadingZeroFormatter.format(seconds)}`\n } else {\n return `${hours}:${leadingZeroFormatter.format(\n minutes\n )}:${leadingZeroFormatter.format(seconds)}`\n }\n}\n\nexport default Vue.extend({\n name: \"EVideoPlayer\",\n components: {\n ESpinner,\n EZoomable,\n },\n props: {\n targetTimestamp: {\n type: [String, Date],\n default: undefined,\n },\n sources: {\n type: [Array, String] as PropType<VideoSource[] | string>,\n required: true,\n },\n videoListeners: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n videoOptions: {\n type: Object as PropType<Partial<HTMLVideoElement> & { poster: string }>,\n default: () => ({}),\n },\n isHls: {\n type: Boolean,\n default: false,\n },\n streamingToken: {\n type: String,\n default: \"\",\n },\n pauseOnClick: {\n type: Boolean,\n default: true,\n },\n isHlsLoading: {\n type: Boolean,\n default: false,\n },\n isPlaying: {\n type: Boolean,\n default: false,\n },\n isZoomable: {\n type: Boolean,\n default: false,\n },\n zoomableIgnorePointerEvents: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n playPauseAnimation: {\n type: Boolean,\n default: true,\n },\n disablePlayPauseAnimation: {\n type: Boolean,\n default: false,\n },\n isWebRtc: {\n type: Boolean,\n default: false,\n },\n withColoredLoader: {\n type: Boolean,\n default: false,\n },\n loaderSize: {\n type: String,\n default: \"7xl\",\n },\n withOverlayOnBackground: {\n type: Boolean,\n default: false,\n },\n fallbackSrc: {\n type: String,\n default: \"\",\n },\n hlsOptions: {\n type: Object as PropType<Partial<HlsConfig>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n playing: false,\n percentagePlayed: 0,\n videoLength: \"0:00\",\n duration: 0,\n videoDuration: 0,\n currentTime: \"0:00\",\n realtime: 0,\n isScrubbing: false,\n wasPaused: false,\n isFullscreen: false,\n isFinished: false,\n isLoading: true,\n isError: false,\n player: new Hls(),\n playbackRetries: 0,\n preloadedSeconds: 0,\n preloadedInterval: {} as unknown as {\n start: string\n end: string\n },\n }\n },\n computed: {\n posterUrl(): string {\n return (\n this.videoOptions as Partial<HTMLVideoElement> & { poster: string }\n )?.poster\n },\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\n },\n hasStartedOrFinished(): boolean {\n return (\n (this.isFinished || this.realtime <= 0.1) &&\n !this.isLoading &&\n !this.isLooped()\n )\n },\n withControls() {\n const videoOptions = this.videoOptions as Partial<HTMLVideoElement>\n\n return videoOptions?.controls === false ? \"hide\" : \"\"\n },\n },\n watch: {\n isPlaying: {\n immediate: true,\n handler(value) {\n this.togglePlay()\n\n if (!this.isHls) {\n return\n }\n if (value) {\n this.$emit(\"hls-play\")\n } else {\n this.$emit(\"hls-pause\")\n }\n },\n },\n preloadedSeconds(val) {\n this.preloadedInterval = {\n start: moment(this.targetTimestamp).format(),\n end: moment(this.targetTimestamp).add(val, \"seconds\").format(),\n }\n this.$emit(\"preloaded-interval\", this.preloadedInterval)\n },\n targetTimestamp: {\n immediate: true,\n handler(value) {\n if (!this.isHls) {\n return\n }\n const player = this.$refs.player as HTMLVideoElement\n const start = this.preloadedInterval?.start\n const end = this.preloadedInterval?.end\n\n if (!(start && end)) {\n return\n }\n\n const isTargetTimestampAvailable = moment(value).isBetween(\n moment(start),\n moment(end),\n undefined,\n \"[]\"\n )\n\n player.currentTime = 0\n if (!isTargetTimestampAvailable) {\n this.initHls()\n }\n },\n },\n },\n mounted() {\n if (this.isHls) {\n this.initHls()\n }\n this.bindEvents()\n this.initializePlayer()\n this.initializeFullscreenListeners()\n },\n beforeDestroy() {\n this.unbindEvents()\n this.destroyPlayer()\n this.removeFullscreenListeners()\n },\n\n methods: {\n initHls(src = \"\") {\n const playerRef = this.$refs.player as HTMLVideoElement\n const videoSource = this.sources[0] as VideoSource\n if (this.player?.stopLoad) {\n this.player.stopLoad()\n }\n if (Hls.isSupported()) {\n this.isLoading = true\n this.player = new Hls({\n startPosition: 0,\n xhrSetup: (xhr) => {\n if (this.streamingToken) {\n xhr.setRequestHeader(\n \"Authorization\",\n `Bearer ${this.streamingToken}`\n )\n }\n },\n ...this.hlsOptions,\n }) as Hls\n this.player?.loadSource(src || videoSource.src)\n this.player?.attachMedia(playerRef as HTMLVideoElement)\n this.player?.on(Hls.Events.MANIFEST_PARSED, (_, manifest) => {\n const firstLevelDetails =\n manifest.levels[manifest.firstLevel]?.details\n const startOffset = firstLevelDetails?.startTimeOffset\n playerRef.currentTime = startOffset || 0\n\n if (this.playing) {\n playerRef.play()\n }\n })\n this.player?.on(Hls.Events.ERROR, this.handleHlsError)\n }\n },\n onContainerClick() {\n if (this.pauseOnClick) {\n this.togglePlay()\n }\n },\n handle404Error() {\n if (this.isWebRtc) {\n return\n }\n this.isError = true\n this.isLoading = false\n this.playing = false\n },\n handleHlsError(_: Events.ERROR, data: ErrorData) {\n if (!data.fatal) {\n return\n }\n\n this.$emit(\"hls-error\", data)\n\n const isNetworkError = data.type === Hls.ErrorTypes.NETWORK_ERROR\n const isMediaError = data.type === Hls.ErrorTypes.MEDIA_ERROR\n const isNotFoundError =\n isNetworkError && data.networkDetails?.status === 404\n const playerRef = this.$refs.player as HTMLVideoElement\n\n const shouldAttemptFallback = () =>\n this.fallbackSrc && playerRef?.currentSrc !== this.fallbackSrc\n\n const attemptFallback = () => this.initHls(this.fallbackSrc)\n\n const handleError = () => {\n if (shouldAttemptFallback()) {\n attemptFallback()\n\n return\n }\n this.player.destroy()\n if ((this.videoListeners as { error?: () => void }).error) {\n // @ts-ignore\n this.videoListeners.error()\n } else {\n this.handle404Error()\n }\n }\n\n if (isNotFoundError) {\n handleError()\n\n return\n }\n\n if (isNetworkError) {\n console.error(\"A network error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.startLoad()\n }\n\n return\n }\n\n if (isMediaError) {\n console.error(\"A media error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.recoverMediaError()\n }\n }\n\n handleError()\n },\n bindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.addEventListener(event, () => this.bindVideoEvent(event), true)\n })\n },\n onProgress() {\n const player = this.$refs.player as HTMLVideoElement\n\n if (player && player.buffered.length > 0) {\n try {\n this.preloadedSeconds = player.buffered.end(\n player.buffered.length - 1\n )\n } catch (e) {\n console.error(\"Error while fetching buffered end time:\", e)\n }\n } else {\n // Handle the case where no video data has been buffered\n console.log(\"No video data has been buffered yet.\")\n }\n },\n unbindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.removeEventListener(\n event,\n () => this.bindVideoEvent(event),\n true\n )\n })\n },\n bindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n if (!timelineContainer) {\n return\n }\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player?.currentTime / player?.duration) * 100\n timelineContainer?.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player })\n },\n initializePlayer() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n if (playerRef.autoplay) {\n this.setPlaying(true)\n }\n document.addEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n document.addEventListener(\"keydown\", this.handleKeyDown)\n },\n destroyPlayer() {\n if (this.player) {\n this.player.stopLoad()\n this.player.destroy()\n }\n window.removeEventListener(\"keydown\", this.handleKeyDown)\n document.removeEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n },\n removeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.removeEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.removeEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n initializeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.addEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.addEventListener(\"mozfullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\"MSFullscreenChange\", this.handleFullscreenChange)\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n handleFullscreenChange() {\n const doc = document as FullscreenDocument\n this.isFullscreen =\n !!doc.fullscreenElement ||\n !!doc.mozFullScreenElement ||\n !!doc.webkitFullscreenElement ||\n !!doc.msFullscreenElement ||\n (window.innerWidth == screen.width &&\n window.innerHeight == screen.height)\n },\n\n isLooped() {\n const player = this.$refs.player as HTMLVideoElement\n\n return player.loop\n },\n handleScrubbingOnMouseEnd(e: MouseEvent) {\n if (this.isScrubbing) {\n this.toggleScrubbing(e)\n }\n },\n handleEnded() {\n this.isFinished = true\n this.playing = false\n },\n handleLoading() {\n this.isLoading = false\n },\n async play() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n try {\n await playerRef.play()\n this.setPlaying(true)\n } catch (error) {\n console.error(error)\n this.playbackRetries += 1\n if (this.isHls && this.playbackRetries < 3) {\n this.initHls()\n }\n }\n },\n pause() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n playerRef.pause()\n this.setPlaying(false)\n },\n async togglePlay() {\n if (this.playing) {\n this.pause()\n } else {\n await this.play()\n }\n },\n setPlaying(state: boolean) {\n this.playing = state\n },\n seekToPercentage(percentage: number) {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const currentTime = (percentage / 100) * playerRef.duration\n playerRef.currentTime = currentTime\n },\n convertTimeToDuration(seconds: number) {\n // @ts-ignore\n return [parseInt((seconds / 60) % 60, 10), parseInt(seconds % 60, 10)]\n .join(\":\")\n .replace(/\\b(\\d)\\b/g, \"0$1\")\n },\n\n closeFullscreenMode() {\n if (document.fullscreenElement) {\n exitFullScreen().then(() => {\n this.isFullscreen = false\n })\n\n this.isFullscreen = false\n }\n },\n openFullscreenMode() {\n const element = this.$refs.videoContainer as HTMLDivElement\n if (element) {\n makeFullScreen(element).then(() => {\n this.isFullscreen = true\n })\n this.isFullscreen = true\n }\n },\n toggleFullscreenMode() {\n if (this.isFullscreen) {\n this.closeFullscreenMode()\n } else {\n this.openFullscreenMode()\n }\n },\n\n getDuration() {\n const player = this.$refs.player as HTMLVideoElement\n this.videoLength = formatDuration(player.duration)\n this.videoDuration = player.duration\n },\n handleTimeUpdate() {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (!player || !timelineContainer) {\n return\n }\n this.currentTime = formatDuration(player.currentTime)\n this.realtime = player.currentTime\n const percent = Number(this.realtime) / Number(this.videoDuration)\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n },\n handleTimelineUpdate(e: MouseEvent) {\n const player = this.$refs.player as HTMLVideoElement\n if (!document.body.contains(player)) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n timelineContainer.style.setProperty(\n \"--preview-position\",\n percent.toString()\n )\n if (this.isScrubbing) {\n e.preventDefault()\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n }\n },\n skip(duration = 5) {\n const player = this.$refs.player as HTMLVideoElement\n\n player.currentTime += duration\n },\n async toggleScrubbing(e: MouseEvent) {\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const videoContainer = this.$refs.videoContainer as HTMLDivElement\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n this.isScrubbing = (e.buttons & 1) === 1\n videoContainer.classList.toggle(\"scrubbing\", this.isScrubbing)\n if (this.isScrubbing) {\n this.wasPaused = player.paused\n await player.pause()\n this.handleTimelineUpdate(e)\n\n return\n }\n this.realtime = percent * this.videoDuration\n player.currentTime = percent * this.videoDuration\n if (this.wasPaused) {\n return\n }\n const playPromise = player.play()\n // @see issue: https://developer.chrome.com/blog/play-request-was-interrupted/\n if (playPromise !== undefined) {\n playPromise\n .then(() => this.handleTimelineUpdate(e))\n .catch(console.error)\n }\n },\n\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\") {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n this.togglePlay()\n break\n case \"k\":\n this.togglePlay()\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n case \"f\":\n this.openFullscreenMode()\n this.isFullscreen = true\n\n break\n }\n },\n },\n})\n","import * as d3 from \"d3\"\nimport { TimelineAxis, TimelineAxesConfig } from \"@/types\"\n\nconst getFormattedDay = (d: Date) => {\n const day = d3.utcFormat(\"%_d\")(d)\n const daySuffixes: { [key: string]: string } = {\n [\"1\"]: \"st\",\n [\"2\"]: \"nd\",\n [\"3\"]: \"rd\",\n }\n\n const daySuffix = daySuffixes[day.charAt(1)] || \"th\"\n\n return `${day}${daySuffix}`\n}\n\nconst getFormattedDayNoEndOfMonth = (d: Date) => {\n const nextDay = new Date(\n Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1)\n )\n const isEndOfTheMonth = nextDay.getUTCDate() === 1\n\n if (isEndOfTheMonth) {\n return \"\"\n }\n\n return d3.utcFormat(\"%-d\")(d)\n}\n\nconst getFormattedHour = (d: Date) => {\n return [\"0\", \" 0\", \"00\"].includes(d3.utcFormat(\"%H\")(d))\n ? \"\"\n : `${d3.utcFormat(\"%H\")(d)}h`\n}\n\nconst getFormattedHourMinute = (d: Date) => {\n const HH_MM = d3.utcFormat(\"%H:%M\")(d)\n\n return HH_MM === \"00:00\" ? \"\" : HH_MM\n}\n\nconst getFormattedMinuteSecond = (d: Date) => {\n return d3.utcFormat(\"%M:%S\")(d)\n}\n\nconst getFormattedOverviewMinuteSecond = (d: Date) => {\n const HH_MM_SS = d3.utcFormat(\"%Hh%Mm\")(d)\n\n return `${HH_MM_SS}`\n}\n\nconst getFormattedOverviewHour = (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n}\n\nconst getFormattedDayHourMinute = (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n}\n\nconst filterHourDivisibleBy = (n: number) => {\n return (d: Date) => {\n const hour = d3.utcFormat(\"%H\")(d)\n const minute = d3.utcFormat(\"%M\")(d)\n\n return !(minute === \"00\" && Number.parseInt(hour) % n === 0)\n }\n}\n\nconst filterMinutesDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n\n return Number.parseInt(minute) % n !== 0\n }\n}\n\nconst filterMinutesSecondsDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n const second = d3.utcFormat(\"%S\")(d)\n\n return Number.parseInt(minute) % n !== 0 && Number.parseInt(second) === 0\n }\n}\n\n/**\n * Precision of the timeline ticks\n * (measured in Hours per Pixel)\n */\nconst Precision = {\n _10_seconds: 0.000025,\n _20_seconds: 0.0001,\n _30_seconds: 0.00015,\n _1_minute: 0.0003,\n _2_minutes: 0.00075,\n _5_minutes: 0.002,\n _15_minutes: 0.005,\n _30_minutes: 0.01,\n _1_hour: 0.025,\n _2_hours: 0.05,\n _3_hours: 0.1,\n _4_hours: 0.15,\n _6_hours: 0.25,\n _1_day: 1,\n _2_days: 2,\n _1_month: 8,\n _1_month_abbr: 13,\n _1_month_letter: 22,\n _3_months: 33,\n _2_year: 48,\n _5_years: 120,\n _20_years: 480,\n _75_years: 1800,\n _300_years: 7200,\n infinity: Infinity,\n}\n\n/**\n * Map of formats and ticks intervals for the Timeline axis(s) by type.\n */\nexport const defaultAxesConfig: TimelineAxesConfig = {\n [TimelineAxis.overview]: [\n {\n precision: Precision._30_seconds,\n interval: d3.utcMinute.every(2),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.every(5),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(10),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(20),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcHour,\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcHour.every(2),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(6),\n format: (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n },\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(12),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(24),\n format: (d: Date) => {\n const day = getFormattedDay(d)\n const abbreviatedMonth = d3.utcFormat(\"%b\")(d)\n\n return `${abbreviatedMonth} ${day}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: (d: Date) => {\n const startOfTheYear = d.getUTCMonth() === 0 && d.getUTCDate() === 1\n const format = startOfTheYear ? \"%Y – %B\" : \"%B\"\n\n return d3.utcFormat(format)(d)\n },\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear.every(1),\n format: \"%Y\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(5),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(20),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(75),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(300),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth.every(12),\n format: \"%Y\",\n },\n ],\n [TimelineAxis.detailed]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond.every(10),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond\n .every(20)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond\n .every(30)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.filter(filterMinutesDivisibleBy(5)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(2)?.filter(filterMinutesDivisibleBy(10)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(5)?.filter(filterMinutesDivisibleBy(20)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(15)?.filter(filterHourDivisibleBy(1)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(30)?.filter(filterHourDivisibleBy(2)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcHour.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(2)?.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(3)?.filter(filterHourDivisibleBy(12)),\n format: getFormattedHour,\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour.every(4),\n format: getFormattedHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(6),\n format: getFormattedHour,\n },\n {\n precision: Precision._1_day,\n interval: d3.utcDay,\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._2_days,\n interval: d3.utcDay.every(2),\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._1_month,\n interval: d3.utcMonth,\n format: \"%B\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcMonth,\n format: \"%b\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcMonth,\n format: (d: Date) => d3.utcFormat(\"%B\")(d).charAt(0),\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth.every(3),\n format: \"Q%q\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcMonth.every(6),\n format: \"Q%q\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(4),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(25),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n [TimelineAxis.detailedBackground]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond,\n format: \"\",\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond.every(5),\n format: \"\",\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond.every(10),\n format: \"\",\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcSecond.every(20),\n format: \"\",\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcSecond.every(30),\n format: \"\",\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute,\n format: \"\",\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(3),\n format: \"\",\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(6),\n format: \"\",\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcMinute.every(15),\n format: \"\",\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcMinute.every(30),\n format: \"\",\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcMinute.every(120),\n format: \"\",\n },\n {\n precision: Precision._1_day,\n interval: d3.utcHour.every(8),\n format: \"\",\n },\n {\n precision: Precision._2_days,\n interval: d3.utcHour.every(12),\n format: \"\",\n },\n {\n precision: Precision._1_month,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const fifthOfMonth = Math.ceil(daysInMonth / 5) // 1/4 of the month\n\n return (\n dayOfMonth === fifthOfMonth ||\n dayOfMonth === 2 * fifthOfMonth ||\n dayOfMonth === 3 * fifthOfMonth ||\n dayOfMonth === 4 * fifthOfMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const quarterOfTheMonth = Math.ceil(daysInMonth / 4) // 1/4 of the month\n\n return (\n dayOfMonth === quarterOfTheMonth ||\n dayOfMonth === 2 * quarterOfTheMonth ||\n dayOfMonth === 3 * quarterOfTheMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const halfOfTheMonth = Math.ceil(daysInMonth / 2) // 1/4 of the month\n\n return dayOfMonth === halfOfTheMonth\n }),\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear,\n format: \"\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(5),\n format: \"\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(20),\n format: \"\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n}\n","import { DirectiveOptions } from \"vue\"\n\nexport interface ObservedElement extends HTMLElement {\n __resizeObserver__?: ResizeObserver\n}\n\nconst ResizeObserverDirective: DirectiveOptions = {\n bind(el, binding) {\n const { value: callback } = binding\n\n if (typeof callback !== \"function\") {\n console.error(\"Invalid callback function provided to v-resize-observer\")\n\n return\n }\n\n const observer: ResizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n if (!entries[0]) {\n return\n }\n\n callback(entries[0])\n }\n )\n\n observer.observe(el)\n ;(el as ObservedElement).__resizeObserver__ = observer\n },\n unbind(el) {\n if ((el as ObservedElement).__resizeObserver__) {\n ;(el as ObservedElement).__resizeObserver__!.disconnect()\n delete (el as ObservedElement).__resizeObserver__\n }\n },\n}\n\nexport default ResizeObserverDirective\n","import ResizeObserverDirective from \"@/directives/resize-observer\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n]\n\nexport { ResizeObserverDirective }\n","\nimport Vue, { PropType } from \"vue\"\nimport { TimelineMilestoneEvent } from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nexport const milestoneClasses = {\n milestone: \"e-tl-milestone\",\n milestoneBullet: \"e-tl-milestone--bullet\",\n milestoneDot: \"e-tl-milestone--dot\",\n milestoneContent: \"e-tl-milestone-content\",\n milestoneLine: \"e-tl-milestone-line\",\n milestonesContainer: \"e-tl-milestones\",\n milestoneHovered: \"e-tl-milestone--hovered\",\n milestoneSelected: \"e-tl-milestone--selected\",\n milestoneLabel: \"e-tl-milestone-label\",\n milestoneDotContainer: \"e-tl-milestone-dot-container\",\n milestoneDotLine: \"e-tl-milestone-dot-line\",\n milestoneDotDot: \"e-tl-milestone-dot-dot\",\n milestoneDotHovered: \"e-tl-milestone-dot--hovered\",\n}\n\nexport default Vue.extend({\n name: \"ETimelineMilestone\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n milestone: {\n type: Object as PropType<TimelineMilestoneEvent>,\n required: true,\n },\n size: {\n type: Number,\n default: 18,\n },\n borderColor: {\n type: String,\n default: \"#eee\",\n },\n backgroundColor: {\n type: String,\n default: \"#aaa\",\n },\n borderWidth: {\n type: Number,\n default: 2,\n },\n transitionDuration: {\n type: Number,\n default: 500,\n },\n dot: {\n type: Boolean,\n default: false,\n },\n dotSize: {\n type: Number,\n default: 8,\n },\n lineWidth: {\n type: Number,\n default: 2,\n },\n lineHeight: {\n type: Number,\n default: 28,\n },\n },\n data() {\n return {\n milestoneClasses,\n timeouts: [] as number[],\n isInitialRender: true,\n isMouseOver: false,\n }\n },\n computed: {\n transitionStyles(): Record<string, any> {\n if (this.isInitialRender) {\n return {}\n }\n\n return {\n transition: `transform ${this.transitionDuration}ms, width ${this.transitionDuration}ms, height ${this.transitionDuration}ms, padding ${this.transitionDuration}ms, border-radius ${this.transitionDuration}ms`,\n }\n },\n sizeStyles(): Record<string, any> {\n if (this.dot) {\n return {}\n }\n\n return {\n width: `${this.size}px`,\n height: `${this.size}px`,\n }\n },\n positionStyles(): Record<string, any> {\n if (!(this.dot && this.isMouseOver)) {\n return {}\n }\n\n return {\n transform: `translateY(calc(-100% - ${this.lineHeight}px))`,\n }\n },\n styles(): Record<string, any> {\n return {\n ...this.sizeStyles,\n ...this.positionStyles,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n borderWidth: `${this.borderWidth}px`,\n borderStyle: \"solid\",\n ...this.transitionStyles,\n }\n },\n contentStyles(): Record<string, any> {\n return this.transitionStyles\n },\n computedTransitionDuration(): number {\n if (this.isInitialRender) {\n return 0\n }\n\n return this.transitionDuration\n },\n labelStyles(): Record<string, any> {\n return {\n transition: `opacity ${this.computedTransitionDuration}ms`,\n }\n },\n dotContainerStyles(): Record<string, any> {\n return {\n top: this.isMouseOver\n ? `calc(100% - ${this.borderWidth}px)`\n : `calc(50% + ${this.dotSize / 2}px)`,\n height: `calc(${this.lineHeight}px + ${this.dotSize}px)`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n lineStyles(): Record<string, any> {\n return {\n bottom: `${this.dotSize / 2}px`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n width: `${this.lineWidth}px`,\n height: this.isMouseOver ? `${this.lineHeight}px` : \"0\",\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n dotStyles(): Record<string, any> {\n return {\n top: `${this.lineHeight}px`,\n left: `calc(50% - ${this.dotSize}px / 2)`,\n width: `${this.dotSize}px`,\n height: `${this.dotSize}px`,\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n },\n mounted() {\n this.$nextTick(() => {\n if (!this.dot) {\n this.onMilestoneMouseOver()\n this.onMilestoneMouseLeave()\n }\n this.isInitialRender = false\n })\n },\n methods: {\n onMilestoneMouseOver(e?: MouseEvent) {\n this.isMouseOver = true\n\n if (this.dot) {\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n const contentFirstChild = content.children[0] as HTMLElement | undefined\n if (!contentFirstChild) {\n return\n }\n\n const contentBox = contentFirstChild.getBoundingClientRect()\n const existingTimeoutId = container.dataset.timeoutId\n if (existingTimeoutId) {\n clearTimeout(Number(existingTimeoutId))\n container.dataset.timeoutId = \"\"\n }\n\n if (!container.dataset.initialWidth) {\n container.dataset.initialWidth = container.style.width\n }\n if (!container.dataset.initialHeight) {\n container.dataset.initialHeight = container.style.height\n }\n if (!container.dataset.initialContentWidth) {\n container.dataset.initialContentWidth = String(contentBox.width)\n }\n if (!container.dataset.initialContentHeight) {\n container.dataset.initialContentHeight = String(contentBox.height)\n }\n\n container.dataset.transitionStart = String(Date.now())\n container.style.width = container.dataset.initialContentWidth + \"px\"\n container.style.height = container.dataset.initialContentHeight + \"px\"\n container.style.borderRadius = \"0.5em\"\n container.classList.add(milestoneClasses.milestoneHovered)\n content.style.opacity = \"1\"\n content.style.width = container.dataset.initialContentWidth + \"px\"\n content.style.height = container.dataset.initialContentHeight + \"px\"\n },\n onMilestoneMouseMove() {\n this.timeouts.forEach((timeoutId) => clearTimeout(timeoutId))\n this.isMouseOver = true\n },\n onMilestoneMouseLeave(e?: MouseEvent) {\n if (this.dot) {\n this.timeouts.push(\n setTimeout(() => {\n this.isMouseOver = false\n }, this.transitionDuration + 100) as unknown as number\n )\n\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n container.style.width = container.dataset.initialWidth || \"\"\n container.style.height = container.dataset.initialHeight || \"\"\n container.style.borderRadius = \"10em\"\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n content.style.width = \"0\"\n content.style.height = \"0\"\n content.style.opacity = \"0\"\n const transitionDuration =\n Date.now() - Number(container.dataset.transitionStart)\n const timeoutDuration =\n transitionDuration > this.transitionDuration\n ? this.transitionDuration\n : transitionDuration\n const timeoutId = setTimeout(() => {\n container.classList.remove(milestoneClasses.milestoneHovered)\n container.dataset.timeoutId = \"\"\n }, timeoutDuration)\n container.dataset.timeoutId = String(timeoutId)\n this.timeouts.push(timeoutId as unknown as number)\n },\n onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent) {\n this.$emit(\"milestone-click\", milestone)\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport { Axis, D3ZoomEvent, ZoomBehavior } from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { defaultAxesConfig } from \"@/components/ETimeline.config\"\nimport {\n TimelineAxesConfig,\n TimelineAxis,\n TimelineChartType,\n TimelineCountEvent,\n TimelineEvent,\n TimelineEventsByType,\n TimelineEventsGroup,\n TimelineInterval,\n TimelineIntervalChangeTrigger,\n TimelineMarker,\n TimelinePrecision,\n TimelineTicksConfig,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\nimport { debounce, getRandomChars } from \"@/utils\"\nimport ETimelineMilestone, {\n milestoneClasses,\n} from \"@/components/ETimelineMilestone.vue\"\n\nconst classes = {\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n eventRect: \"event-rect\",\n eventBarContainer: \"event-bar-container\",\n eventBarContainerHovered: \"event-bar-container--hovered\",\n eventBarContainerSelected: \"event-bar-container--selected\",\n eventBar: \"event-bar\",\n eventBarHoverZone: \"event-bar-hover-zone\",\n eventBarCap: \"event-bar-cap\",\n eventRectText: \"event-rect-text\",\n eventRectHovered: \"event-rect--hovered\",\n eventRectSelected: \"event-rect--selected\",\n labelGroup: \"label-g\",\n labelBg: \"label-bg\",\n labelBgFill: \"label-bg-fill\",\n labelText: \"label-text\",\n loadingIndicator: \"loading-indicator\",\n xAxis: \"x-axis\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n marker: \"marker\",\n markerLabel: \"marker-label\",\n markerLine: \"marker-line\",\n markerDragged: \"marker--dragged\",\n milestone: \"milestone\",\n milestoneLine: \"milestone-line\",\n milestonesContainer: \"milestones\",\n milestoneHovered: \"milestone--hovered\",\n barChartGroup: \"bar-chart-group\",\n lineGraphGroup: \"line-graph-group\",\n lineGraphGroupLabel: \"line-graph-group-label\",\n lineGraphPath: \"line-graph-path\",\n lineGraphHoverZone: \"line-graph-hover-zone\",\n lineGraphDot: \"line-graph-dot\",\n curtain: \"curtain\",\n forbiddenInterval: \"forbidden-interval\",\n}\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ETimelineMilestone,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n xAxesConfig: {\n type: Object as PropType<TimelineAxesConfig>,\n default: () => defaultAxesConfig,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: String,\n default: undefined,\n },\n endDate: {\n type: String,\n default: undefined,\n },\n selectedTimestamp: {\n type: String,\n default: undefined,\n },\n showEventTooltip: {\n type: Boolean,\n default: true,\n },\n disableZoom: {\n type: Boolean,\n default: false,\n },\n insertZerosAtInterval: {\n type: String as PropType<TimelinePrecision>,\n default: undefined,\n },\n flattenLineGraphEnds: {\n type: Boolean,\n default: true,\n },\n curtains: {\n type: Boolean,\n default: false,\n },\n showLabels: {\n type: Boolean,\n default: true,\n },\n rectMinWidth: {\n type: Number,\n default: 1,\n },\n barHeight: {\n type: Number,\n default: 18,\n },\n barYPadding: {\n type: Number,\n default: 0,\n },\n barXPadding: {\n type: Number,\n default: 0,\n },\n chartMinHeight: {\n type: Number,\n default: 60,\n },\n chartMinLabelHeight: {\n type: Number,\n default: 18,\n },\n minZoom: {\n type: Number,\n default: 0.0001,\n },\n maxZoom: {\n type: Number,\n default: 850_000,\n },\n minDate: {\n type: String,\n default: undefined,\n },\n maxDate: {\n type: String,\n default: undefined,\n },\n cursorTimestamp: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n selectedClass: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n panOnDateClick: {\n type: Boolean,\n default: false,\n },\n panTransitionDuration: {\n type: Number,\n default: 800,\n },\n selectedDate: {\n type: String,\n default: \"\",\n },\n autoResize: {\n type: Boolean,\n default: true,\n },\n markers: {\n type: Array as PropType<Array<TimelineMarker>>,\n default: () => [],\n },\n stickyMarkers: {\n type: Boolean,\n default: true,\n },\n fitMarkersOnChange: {\n type: Boolean,\n default: false,\n },\n zoomToIntervalTransitionDuration: {\n type: Number,\n default: 800,\n },\n zoomToBoundariesTransitionDuration: {\n type: Number,\n default: 0,\n },\n milestoneBulletSize: {\n type: Number,\n default: 18,\n },\n milestonesFirst: {\n type: Boolean,\n default: true,\n },\n forbiddenIntervals: {\n type: Array as PropType<TimelineInterval[]>,\n default: () => [],\n },\n forbiddenIntervalColor: {\n type: String,\n default: \"#ddd\",\n },\n focusedInterval: {\n type: [Object, undefined] as PropType<TimelineInterval | undefined>,\n default: undefined,\n },\n locked: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n stopClickPropagation: {\n type: Boolean,\n default: false,\n },\n tooltipPosition: {\n type: String,\n default: \"top\",\n validator: (value: string) => [\"top\", \"bottom\"].includes(value),\n },\n },\n data() {\n return {\n tooltip: null as unknown as HTMLElement,\n cursor: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n wrapperDiv: null as unknown as HTMLElement,\n selectedTimestampCursor: null as unknown as HTMLElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axesContainer: null as unknown as d3.Selection<\n SVGGElement,\n any,\n any,\n any\n >,\n xAxes: {} as unknown as Record<TimelineAxis, Axis<Date>>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n initialTimeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n zoomBehavior: null as unknown as ZoomBehavior<SVGSVGElement, unknown>,\n isMouseDown: false,\n axisHeight: 22,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n isHoveringTimeline: false,\n hoveredTimestamp: null as unknown as string,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n lastTransform: { x: 0, k: 1 },\n transformDiff: { translation: 0, scale: 1 },\n yScale: null as unknown as d3.ScaleLinear<any, any>,\n hoveredCounts: [] as { count: number; type: string }[],\n countsByTimestamp: {} as Record<string, Record<string, number>>,\n dotsByTimestamp: {} as Record<\n string,\n d3.Selection<SVGCircleElement, any, any, any>[]\n >,\n visibleFrom: null as unknown as Date,\n visibleTo: null as unknown as Date,\n curtainHandleWidth: 5,\n leftCurtainWidth: 50,\n rightCurtainWidth: 50,\n isHoveringCurtain: false,\n isDraggingCurtain: false,\n characterWidth: 7.5,\n textPadding: 5,\n debouncedOnResize: (() => {}) as Function,\n isFirstPaint: true,\n timeouts: [] as number[],\n groupsVisibility: {} as Record<string, boolean>,\n markersPositions: {} as Record<\n string,\n { position: number; isHidden: boolean }\n >,\n markersDragBehavior: null as unknown as d3.DragBehavior<\n HTMLElement,\n TimelineMarker,\n any\n >,\n initialMarkerDragMouseOffset: 0,\n selectedMilestoneId: null as any,\n isInitialized: false,\n lastValidTransform: d3.zoomIdentity,\n lastPanTransform: d3.zoomIdentity,\n isZoomingInterval: false,\n defs: {\n transparencyGradient: \"transparency-gradient\" + getRandomChars(2),\n transparencyGradientLight:\n \"transparency-gradient-light\" + getRandomChars(2),\n loadingGradient: \"loading-gradient\" + getRandomChars(2),\n stripedPattern: \"stripedPattern\" + getRandomChars(2),\n },\n }\n },\n computed: {\n combinedBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (this.getBarGroupHeight(g) || this.barChartHeight),\n 0\n )\n },\n combinedBottomBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (g.bottom ? this.getBarGroupHeight(g) : 0),\n 0\n )\n },\n combinedMilestonesHeight(): number {\n return Object.values(this.milestonesGroups).reduce(\n (acc, g) => acc + (g.height || this.barChartHeight),\n 0\n )\n },\n milestonesYOffset(): number {\n return this.milestonesFirst\n ? 0\n : this.combinedBarsHeight -\n this.combinedBottomBarsHeight +\n (this.hasChart ? this.chartHeight : 0)\n },\n chartsYOffset(): number {\n return this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0\n },\n barsYOffset(): number {\n return (\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0)\n )\n },\n hasMilestones(): boolean {\n return Object.keys(this.milestonesGroups).length > 0\n },\n barChartHeight(): number {\n return this.barHeight + this.barYPadding\n },\n classes(): Record<string, string | Record<string, boolean>> {\n return {\n wrapper: {\n \"e-border-gray-700 e-timeline--dark\": this.dark,\n \"e-border-gray-300\": !this.dark,\n \"e-timeline--dragging\": this.isInteractingWithCurtain,\n },\n background: this.dark ? \"e-bg-gray-900\" : \"e-bg-gray-50\",\n tooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n eventTooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n }\n },\n lineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.lineGraph) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n chartHeight(): number {\n if (!this.showLabels) {\n return this.chartMinHeight\n }\n\n const chartLabelsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n const combinedLabelsHeight = chartLabelsCount * this.barChartHeight\n\n return Math.max(this.chartMinHeight, combinedLabelsHeight)\n },\n barGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (\n !eventsGroup.chartType ||\n [TimelineChartType.bars, TimelineChartType.dots].includes(\n eventsGroup.chartType\n )\n ) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n barChartGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.barChart) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n milestonesGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.milestones) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n hasChart(): boolean {\n const chartsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n\n return chartsCount > 0\n },\n labelRectWidth(): number {\n const eventsGroups = Object.values(\n this.eventsGroups\n ) as TimelineEventsGroup[]\n const maxLabelLength = eventsGroups.reduce((acc, eventsGroup) => {\n return Math.max(acc, eventsGroup.label?.length)\n }, 0)\n\n return maxLabelLength * this.characterWidth + 2 * this.textPadding\n },\n combinedXAxesHeight(): number {\n const axesCount = Object.keys(this.xAxesConfig).length - 1\n\n return this.axisHeight * axesCount\n },\n timelineHeight(): number {\n const chartHeight = this.hasChart ? this.chartHeight : 0\n\n return (\n chartHeight +\n this.combinedXAxesHeight +\n this.combinedBarsHeight +\n this.combinedMilestonesHeight\n )\n },\n filteredEventsGroups(): TimelineEventsByType {\n const entries = Object.entries(this.eventsGroups).filter(\n ([type, _group]) => this.getCurrentGroupVisibility(type)\n )\n\n return Object.fromEntries(entries) as TimelineEventsByType\n },\n allEventsSorted(): TimelineEvent[] {\n const flattenedEvents = (\n Object.values(this.filteredEventsGroups) as TimelineEventsGroup[]\n )\n .map((e: TimelineEventsGroup) => e.events)\n .flat()\n\n return this.getSortedEvents(flattenedEvents)\n },\n oldestEvent(): TimelineEvent {\n let oldestEvent\n if (this.allEventsSorted.length > 1) {\n oldestEvent = this.allEventsSorted[0]\n } else {\n const DAY = 86_400_000\n const yesterday = new Date(new Date().getTime() - DAY)\n\n oldestEvent = {\n timestamp: yesterday,\n }\n }\n\n return oldestEvent\n },\n latestEvent(): TimelineEvent {\n let latestEvent\n if (this.allEventsSorted.length > 1) {\n latestEvent = this.allEventsSorted[this.allEventsSorted.length - 1]\n } else {\n const defaultMaxDate = new Date()\n\n latestEvent = {\n timestamp: defaultMaxDate,\n }\n }\n\n return latestEvent\n },\n allLineChartTimestamps(): string[] {\n const allTimestamps = new Set()\n Object.values(this.lineGraphGroups).forEach((group) => {\n group.events.forEach((event) => {\n allTimestamps.add(event.timestamp)\n })\n })\n\n return Array.from(allTimestamps).sort() as unknown as string[]\n },\n placeholderLineChartGroup(): TimelineEvent[] {\n return this.fillTimeGaps(\n this.allLineChartTimestamps.map((timestamp) => ({\n timestamp,\n count: 0,\n }))\n )\n },\n filledGapsLineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.lineGraphGroups).reduce(\n (acc, [type, group]) => {\n return {\n ...acc,\n [type]: {\n ...group,\n events: this.fillEvents(group.events),\n },\n }\n },\n {}\n )\n },\n isInteractingWithCurtain(): boolean {\n return this.isHoveringCurtain || this.isDraggingCurtain\n },\n flattenedCounts(): TimelineCountEvent[] {\n return [\n ...Object.values(this.lineGraphGroups),\n ...Object.values(this.barChartGroups),\n ]\n .map((g) => g.events)\n .flat() as TimelineCountEvent[]\n },\n hiddenGroupsLabels(): Array<string> {\n return Object.entries(this.groupsVisibility).reduce<Array<string>>(\n (acc, [type, isVisible]) => (!isVisible ? [...acc, type] : acc),\n []\n )\n },\n minHoverZone(): number {\n return this.showLabels ? this.labelRectWidth : 0\n },\n sortedMarkers(): TimelineMarker[] {\n if (!this.isInitialized) {\n return []\n }\n\n return [...this.markers].sort((a, b) =>\n new Date(a.timestamp).getTime() > new Date(b.timestamp).getTime()\n ? 1\n : -1\n )\n },\n maxVisibleCount(): number {\n const [visibleStart, visibleEnd] = this.timeScale.domain()\n const filteredFlattenedCounts = this.flattenedCounts.filter((d) => {\n const eventStart = new Date(d.startDate || d.timestamp)\n const eventEnd = new Date(d.endDate || d.timestamp)\n\n return (\n (eventEnd >= visibleStart && eventEnd <= visibleEnd) ||\n (eventStart >= visibleStart && eventStart <= visibleEnd)\n )\n })\n\n return d3.max(filteredFlattenedCounts, (d) => d.count) as number\n },\n },\n watch: {\n dark() {\n this.handleDarkModeChange()\n },\n selectedTimestamp() {\n this.repositionSelectedTimestampCursor()\n },\n markers() {\n this.updateMarkers()\n if (this.fitMarkersOnChange) {\n this.zoomToFitMarkers()\n }\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n eventsGroups() {\n this.updateAndRedrawTimeline()\n },\n cursorTimestamp() {\n if (this.cursorTimestamp) {\n this.hoveredTimestamp = this.cursorTimestamp\n const timestamp = this.tzStringToDate(this.hoveredTimestamp)\n const cursorX = this.timeScale(timestamp)\n this.cursor.style.left = cursorX + \"px\"\n this.isHoveringTimeline = true\n } else {\n this.isHoveringTimeline = false\n }\n },\n selectedDate(date) {\n if (date && !this.locked) {\n this.panToTimestamp(date)\n }\n },\n groupsVisibility() {\n this.updateAndRedrawTimeline()\n },\n forbiddenIntervals() {\n this.updateForbiddenIntervals(true)\n },\n focusedInterval(interval) {\n if (interval && interval?.startDate && interval?.endDate) {\n this.zoomToTargetInterval(interval.startDate, interval.endDate)\n }\n },\n },\n created() {\n this.debouncedOnResize = debounce(this.handleResize, 100)\n },\n mounted() {\n this.initTimeline()\n },\n beforeDestroy() {\n this.clearTimeline()\n document.removeEventListener(\"mouseup\", this.handleDocumentMouseUp)\n },\n methods: {\n updateTimeline() {\n this.initOrUpdateSvg()\n this.initOrUpdateDefs()\n this.updateXAxes()\n this.updateYScale()\n this.updateForbiddenIntervals()\n this.drawEventsGroups()\n this.updateCurtains()\n this.repositionSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.isInitialized = true\n },\n initTimeline(startDate?: string, endDate?: string) {\n this.initRefs()\n\n if (!this.timeline || this.timeline.offsetWidth === 0) {\n this.timeouts.push(\n setTimeout(this.initTimeline, 500) as unknown as number\n )\n\n return\n }\n\n this.initOrUpdateSvg()\n this.initOrUpdateDefs()\n this.initUtcOffset()\n this.initTimeScale(startDate, endDate)\n this.initXAxes()\n this.initYScale()\n this.initZoomBehavior()\n this.drawEventsGroups()\n\n if (this.curtains) {\n this.initCurtains()\n this.emitCurtainChange()\n }\n\n this.initSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.initial)\n\n if (this.selectedDate && this.panOnDateClick) {\n this.panToTimestamp(this.selectedDate)\n }\n\n this.isInitialized = true\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.cursor = this.$refs.cursor as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.selectedTimestampCursor = this.$refs.selectedTimestamp as HTMLElement\n this.wrapperDiv = this.$refs.wrapperDiv as HTMLElement\n },\n initOrUpdateSvg() {\n if (!this.svg) {\n this.svg = d3.select(this.timeline).append(\"svg\")\n }\n this.svg\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.timelineHeight)\n },\n initOrUpdateDefs() {\n const defsSelection = this.selectOrAppend({\n parent: this.svg,\n targetId: \"defs-container\",\n targetType: \"defs\"\n })\n\n Object.entries(this.filteredEventsGroups).forEach(\n ([type, eventsGroup]) => {\n const { color, chartType } = eventsGroup\n const gradient = this.selectOrAppend({\n parent: defsSelection,\n targetId: `${this.defs.loadingGradient}-${type}`,\n targetType: \"linearGradient\",\n })\n .attr(\"x1\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"x2\", \"100%\")\n .attr(\"y2\", \"0%\")\n\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"0%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"50%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0.6\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"100%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n\n if (\n [TimelineChartType.lineGraph, TimelineChartType.barChart].includes(\n chartType as TimelineChartType\n )\n ) {\n const transparencyGradients = [\n {\n id: this.defs.transparencyGradientLight,\n stop: 38,\n opacity: 0.3,\n },\n {\n id: this.defs.transparencyGradient,\n stop: 130,\n opacity: 0.4,\n },\n ]\n\n transparencyGradients.forEach(({ id, stop, opacity }) => {\n const gradient = this.selectOrAppend({\n parent: defsSelection,\n targetId: `${id}-${type}`,\n targetType: \"linearGradient\",\n })\n .attr(\"x1\", \"0%\")\n .attr(\"x2\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"y2\", \"100%\")\n\n this.selectOrAppend({\n parent: gradient,\n targetId: \"stop-1\",\n targetType: \"stop\",\n })\n .attr(\"offset\", \"0%\")\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", opacity)\n\n this.selectOrAppend({\n parent: gradient,\n targetId: \"stop-2\",\n targetType: \"stop\",\n })\n .attr(\"offset\", `${stop}%`)\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", 0)\n })\n }\n }\n )\n\n const pattern = this.selectOrAppend({\n parent: defsSelection,\n targetId: this.defs.stripedPattern,\n targetType: \"linearGradient\",\n })\n .attr(\"width\", 5)\n .attr(\"height\", 3)\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\"patternTransform\", \"rotate(45)\")\n\n this.selectOrAppend({\n parent: pattern,\n targetId: \"pattern-rect\",\n targetType: \"rect\",\n })\n .attr(\"width\", 1)\n .attr(\"height\", 4)\n .attr(\"transform\", \"translate(0,0)\")\n .attr(\"fill\", this.forbiddenIntervalColor)\n },\n initUtcOffset() {\n const sampleTimestamp =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n this.utcOffset = moment.parseZone(sampleTimestamp).utcOffset()\n },\n initTimeScale(start?: string, end?: string) {\n const startDate =\n start ||\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n end ||\n this.endDate ||\n this.latestEvent.timestamp ||\n this.latestEvent.endDate\n\n this.timeScale = d3\n .scaleTime()\n .domain([this.tzStringToDate(startDate), this.tzStringToDate(endDate)])\n .range([0, this.timeline.offsetWidth])\n this.initialTimeScale = this.timeScale.copy()\n this.updateCurrentTimeScaleDensity()\n },\n initXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.createAxis(axisName as TimelineAxis)\n this.xAxes[axisName as TimelineAxis] = axis\n this.svg\n .append(\"g\")\n .classed(classes.xAxis, true)\n .classed(`${classes.xAxis}-${axisName}`, true)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n this.updateXAxes()\n },\n updateXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.xAxes[axisName as TimelineAxis]\n axis!.tickSizeOuter(0)\n axis!.tickSizeInner(this.timelineHeight)\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n },\n initYScale() {\n this.yScale = d3.scaleLinear().range([this.chartHeight, 0])\n this.updateYScale()\n },\n updateYScale() {\n this.yScale.range([this.chartHeight, 0])\n this.yScale.domain([0, this.maxVisibleCount])\n },\n initZoomBehavior() {\n if (this.disableZoom) {\n return\n }\n\n this.zoomBehavior = d3\n .zoom<SVGSVGElement, unknown>()\n .on(\"zoom\", this.handleZoom)\n .scaleExtent([this.minZoom, this.maxZoom])\n\n this.svg.call(this.zoomBehavior)\n this.svg.call(this.zoomBehavior.transform, d3.zoomIdentity)\n },\n zoomToFitMarkers() {\n const markersTimestamps = this.markers.map((marker) =>\n new Date(marker.timestamp).getTime()\n )\n if (markersTimestamps.length < 2) {\n return\n }\n\n const minTimestamp = Math.min(...markersTimestamps)\n const maxTimestamp = Math.max(...markersTimestamps)\n\n this.zoomToTargetInterval(minTimestamp, maxTimestamp)\n },\n zoomToTargetInterval(start?: string | number, end?: string | number) {\n if (!start || !end) {\n return\n }\n this.isZoomingInterval = true\n const t1 = new Date(start).getTime()\n const t2 = new Date(end).getTime()\n const domainSpan = this.initialTimeScale.domain().map((d) => d.getTime())\n const domainWidth = domainSpan[1] - domainSpan[0]\n const viewportSpan = t2 - t1\n const padding = 0.1 * viewportSpan\n const paddedViewportSpan = viewportSpan + 2 * padding\n let scaleFactor = domainWidth / paddedViewportSpan\n const scaleExtent = this.zoomBehavior.scaleExtent()\n scaleFactor = Math.min(\n Math.max(scaleFactor, scaleExtent[0]),\n scaleExtent[1]\n )\n\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(this.zoomBehavior.scaleTo, scaleFactor)\n .on(\"end\", () => this.translateIntervalIntoView(t1, t2, scaleFactor))\n },\n translateIntervalIntoView(\n minTimestamp: number,\n maxTimestamp: number,\n scaleFactor: number\n ) {\n const scaledMinTimestampPosition = this.timeScale(new Date(minTimestamp))\n const scaledMaxTimestampPosition = this.timeScale(new Date(maxTimestamp))\n const centerPoint =\n (scaledMinTimestampPosition + scaledMaxTimestampPosition) / 2\n const svgCenter = this.svg.node()!.getBoundingClientRect().width / 2\n const translateX = svgCenter - centerPoint\n const currentTransform = d3.zoomTransform(this.svg.node()!)\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity\n .translate(currentTransform.x + translateX, currentTransform.y)\n .scale(scaleFactor)\n )\n .on(\"end\", () => {\n this.isZoomingInterval = false\n })\n },\n initSelectedTimestampCursor() {\n this.svg\n .append(\"line\")\n .attr(\"class\", classes.selectedTimestampCursor)\n .style(\"stroke\", \"red\")\n .style(\"stroke-width\", \"1px\")\n .style(\"opacity\", 0)\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", 0)\n this.repositionSelectedTimestampCursor()\n },\n updateMarkers() {\n if (!this.markers.length) {\n return\n }\n const padding = 12\n const overlapThreshold = 200\n this.sortedMarkers.forEach((marker, i, markersArray) => {\n const timestamp =\n typeof marker.timestamp === \"string\"\n ? this.tzStringToDate(marker.timestamp)\n : marker.timestamp\n const markerX = this.timeScale(timestamp)\n\n let isHidden = false\n const position = this.stickyMarkers\n ? Math.max(markerX, i * padding)\n : markerX\n if (i < markersArray.length - 1) {\n const nextMarker = markersArray[i + 1]\n const nextTimestamp =\n typeof nextMarker.timestamp === \"string\"\n ? this.tzStringToDate(nextMarker.timestamp)\n : nextMarker.timestamp\n const nextMarkerX = this.timeScale(nextTimestamp)\n const nextMarkerPosition = this.stickyMarkers\n ? Math.max(nextMarkerX, (i + 1) * padding)\n : markerX\n isHidden = nextMarkerPosition - position < overlapThreshold + padding\n }\n this.markersPositions = {\n ...this.markersPositions,\n [marker.id]: {\n isHidden,\n position,\n },\n }\n })\n this.initMarkersDragBehavior()\n },\n selectOrAppend({\n parent,\n targetId,\n targetType,\n }: {\n parent: d3.Selection\n selector: string\n nodeType: string\n }) {\n let selection = parent.select(`#${targetId}`)\n\n if (selection.empty()) {\n selection = parent.append(targetType).attr(\"id\", targetId)\n }\n\n return selection\n },\n updateAndRedrawTimeline() {\n this.updateTimeline()\n },\n clearTimeline() {\n if (this.svg) {\n this.svg.remove()\n }\n this.countsByTimestamp = {}\n },\n repositionSelectedTimestampCursor() {\n const cursor = this.svg.select(`.${classes.selectedTimestampCursor}`)\n if (!this.selectedTimestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.selectedTimestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor.attr(\"x1\", cursorX).attr(\"x2\", cursorX).style(\"opacity\", 0.5)\n } else {\n cursor.style(\"opacity\", 0)\n }\n\n cursor.attr(\"y2\", this.timelineHeight)\n },\n updateCurrentTimeScaleDensity() {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n\n const newDensity = (timeAtPixel1 - timeAtPixel0) / HOUR\n if (!isNaN(newDensity)) {\n this.currentTimeScaleDensity = newDensity\n }\n },\n registerEventsListeners() {\n document.addEventListener(\"mouseup\", this.handleDocumentMouseUp)\n this.svg.on(\"mousedown\", this.handleMouseDown)\n this.svg.on(\"mousemove\", this.handleMouseMove)\n this.svg.on(\"click\", this.handleClick)\n this.svg.on(\"mouseleave\", this.handleMouseLeave)\n },\n emitVisibleInterval(trigger: TimelineIntervalChangeTrigger) {\n const visibleFrom = this.timeScale.invert(0)\n const visibleTo = this.timeScale.invert(this.timeline.offsetWidth)\n\n if (\n this.visibleFrom &&\n this.visibleFrom.getTime() === visibleFrom.getTime() &&\n this.visibleTo &&\n this.visibleTo.getTime() === visibleTo.getTime()\n ) {\n return\n }\n\n this.visibleFrom = visibleFrom\n this.visibleTo = visibleTo\n\n const fromDate = this.dateToTzString(this.visibleFrom)\n const toDate = this.dateToTzString(this.visibleTo)\n\n this.$emit(\"visible-interval-change\", {\n fromDate,\n toDate,\n trigger,\n transform: this.transformDiff,\n })\n },\n createAxis(axisName: TimelineAxis) {\n const axis = this.xAxesConfig[axisName as TimelineAxis]\n const config = this.getAxisTicksConfig(axis)\n\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(config.interval)\n .tickFormat(config.formatFn)\n .tickSizeOuter(0)\n .tickSizeInner(this.timelineHeight)\n },\n getAxisTicksConfig(configs: TimelineTicksConfig[]) {\n const { interval, format } = configs.find(\n (config) =>\n config.precision >= this.currentTimeScaleDensity && config.interval\n ) as TimelineTicksConfig\n\n const formatFn = (d: Date): string => {\n return typeof format === \"function\"\n ? format(d)\n : d3.timeFormat(format)(d)\n }\n\n return {\n formatFn,\n interval,\n }\n },\n onResize(resizeObserverEntry: ResizeObserverEntry) {\n if (this.isFirstPaint) {\n this.handleResize(resizeObserverEntry)\n this.isFirstPaint = false\n } else {\n this.debouncedOnResize(resizeObserverEntry)\n }\n },\n handleResize({ contentRect }: ResizeObserverEntry) {\n if (!this.svg) {\n return\n }\n\n this.svg.attr(\"width\", contentRect.width)\n this.updateAndRedrawTimeline()\n },\n handleDarkModeChange() {\n if (!this.showLabels) {\n return\n }\n\n const that = this\n this.svg.selectAll(`.${classes.labelBg}`).each(function () {\n const label = d3.select(this)\n label.style(\"fill\", that.dark ? \"black\" : \"white\")\n })\n this.svg.selectAll(`.${classes.labelBgFill}`).each(function () {\n const bgFill = d3.select(this)\n const color = (bgFill.node()! as HTMLElement).dataset.color\n bgFill\n .style(\"fill\", that.getLabelBackgroundColor(color as string))\n .style(\"stroke\", that.getTextFillColor(color as string))\n .style(\"stroke-width\", 0.25)\n })\n this.svg.selectAll(`.${classes.labelText}`).each(function () {\n const text = d3.select(this)\n const color = (text.node()! as HTMLElement).dataset.color\n text.style(\"fill\", that.getTextFillColor(color as string))\n })\n },\n handleMouseDown() {\n this.isMouseDown = true\n },\n handleDocumentMouseUp(_e: MouseEvent) {\n this.isMouseDown = false\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n this.$emit(\"hovered-timestamp\", undefined)\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isMouseDown) {\n return\n }\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n this.isHoveringTimeline = false\n\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n this.hoveredTimestamp = this.dateToTzString(date)\n this.isHoveringTimeline = true\n this.$emit(\"hovered-timestamp\", this.hoveredTimestamp)\n this.cursor.style.left = mouseX + \"px\"\n\n if (!this.tooltip) {\n return\n }\n\n this.eventTooltipStyle = {\n left: `${mouseX}px`,\n zIndex: 100,\n [this.tooltipPosition === \"top\" ? \"bottom\" : \"top\"]: `${\n this.timeline.getBoundingClientRect().height\n }px`,\n }\n },\n handleClick(event: MouseEvent) {\n const mouseX = event.offsetX\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n const formattedDateTz = this.dateToTzString(date)\n\n if (this.isHoveringEvent) {\n this.$emit(\"event-clicked\", {\n event: this.hoveredEvent,\n type: this.hoveredEventType,\n })\n\n if (this.stopClickPropagation) {\n return\n }\n }\n\n this.$emit(\"date-clicked\", formattedDateTz)\n\n if (this.panOnDateClick) {\n this.panToTimestamp(formattedDateTz)\n }\n },\n handleMarkerClick(marker: TimelineMarker) {\n this.$emit(\"marker-clicked\", marker)\n if (this.panOnDateClick) {\n this.panToTimestamp(marker.timestamp)\n }\n },\n handleLineMouseOver(\n _event: MouseEvent,\n eventData: TimelineCountEvent,\n eventType: string\n ) {\n this.hoveredCounts = Object.entries(\n this.countsByTimestamp[`${eventData.timestamp}`]\n ).reduce((acc, entry) => {\n const [type, count] = entry\n\n return [...acc, { type, count }]\n }, [] as { type: string; count: number }[])\n this.hoveredEvent = eventData\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", {\n eventData,\n eventType,\n hoveredCounts: this.hoveredCounts,\n })\n },\n handleLineMouseOut() {\n this.isHoveringEvent = false\n this.hoveredCounts = []\n this.$emit(\"event-mouseout\")\n },\n handleBarMouseOver(\n event: MouseEvent,\n eventData: TimelineEvent,\n eventType: string\n ) {\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n this.hoveredEvent = eventData\n this.hoveredEventType = eventType\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleBarMouseOut() {\n this.isHoveringEvent = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.$emit(\"event-mouseout\")\n },\n handleLabelMouseOver(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n true\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n true\n )\n },\n handleLabelMouseLeave(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n false\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n false\n )\n },\n isZoomAllowed(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (this.isZoomingInterval) {\n return true\n }\n const scaleCopy = this.initialTimeScale.copy()\n const newDomain = event.transform.rescaleX(scaleCopy).domain()\n const minDateLimit = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDateLimit = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n return (\n (!minDateLimit || newDomain[0] >= minDateLimit) &&\n (!maxDateLimit || newDomain[1] <= maxDateLimit)\n )\n },\n handleZoom(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (!this.isZoomAllowed(event)) {\n event?.sourceEvent?.preventDefault()\n this.svg.call(this.zoomBehavior.transform, this.lastValidTransform)\n\n return\n }\n this.lastValidTransform = event.transform\n const newScale = event.transform.rescaleX(this.initialTimeScale)\n this.timeScale.domain(newScale.domain())\n this.$emit(\"time-scale-change\", this.timeScale.copy())\n\n this.updateCurrentTimeScaleDensity()\n this.updateYScale()\n const scale = event.transform.k / this.lastTransform.k\n this.transformDiff = {\n scale: scale,\n translation: event.transform.x - this.lastTransform.x,\n }\n this.lastTransform = { ...event.transform }\n\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, newScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsBars()\n this.updateLineGraphs()\n this.updateBarChart()\n this.updateLineGraphHoverZones()\n this.updateMilestonesPositions()\n this.repositionSelectedTimestampCursor()\n this.updateForbiddenIntervals()\n this.updateMarkers()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.zoom)\n if (this.curtains) {\n this.emitCurtainChange()\n }\n },\n panToTimestamp(targetTimestamp: string | Date) {\n const targetDate = this.tzStringToDate(targetTimestamp)\n const targetX = this.timeScale(targetDate)\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const translateX =\n currentTransform.x - targetX + this.timeline.offsetWidth / 2\n const newDomainStart = this.timeScale.invert(\n -translateX / currentTransform.k\n )\n const newDomainEnd = this.timeScale.invert(\n (this.timeline.offsetWidth - translateX) / currentTransform.k\n )\n const minDate = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDate = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n if (\n (minDate && newDomainStart < minDate) ||\n (maxDate && newDomainEnd > maxDate)\n ) {\n console.log(\"Pan operation would exceed bounds. Operation cancelled.\")\n\n return\n }\n\n const scaleChange = currentTransform.k / this.lastPanTransform.k\n const transitionDuration =\n scaleChange < 10 ? this.panTransitionDuration : 0\n // @ts-ignore\n this.lastPanTransform = { ...currentTransform }\n this.svg\n .transition()\n .duration(transitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(currentTransform.k)\n )\n .on(\"end\", () => {\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.autoPan)\n })\n },\n emitCurtainChange() {\n const { startDate, endDate } = this.calculateDateRangeFromCurtains()\n this.$emit(\"curtain-range-change\", {\n startDate: new Date(startDate).toISOString(),\n endDate: new Date(endDate).toISOString(),\n })\n },\n calculateDateRangeFromCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const fullRange = this.timeScale.domain()\n const totalDuration = fullRange[1].getTime() - fullRange[0].getTime()\n\n const leftDuration =\n ((this.leftCurtainWidth - this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n const rightDuration =\n ((this.rightCurtainWidth + this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n\n const startDate = new Date(fullRange[0].getTime() + leftDuration)\n const endDate = new Date(fullRange[1].getTime() - rightDuration)\n\n return { startDate, endDate }\n },\n handleDragStart() {\n this.isDraggingCurtain = true\n },\n handleDragEnd() {\n this.isDraggingCurtain = false\n },\n handleLeftDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n const newWidth = Math.min(\n event.x,\n this.timeline.offsetWidth - this.rightCurtainWidth\n )\n this.leftCurtainWidth = Math.max(0, newWidth)\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n this.emitCurtainChange()\n },\n handleRightDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n\n const timelineWidth = this.timeline.offsetWidth\n const newWidth = Math.min(\n this.timeline.offsetWidth - event.x,\n this.timeline.offsetWidth - this.leftCurtainWidth\n )\n const newX = timelineWidth - newWidth\n this.rightCurtainWidth = Math.max(0, newWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\"width\", this.rightCurtainWidth)\n .attr(\"x\", newX)\n\n this.emitCurtainChange()\n },\n zoomToStartAndEndDates() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n const startTime = this.tzStringToDate(startDate)\n const endTime = this.tzStringToDate(endDate)\n this.initialTimeScale.domain([startTime, endTime])\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const totalDuration = endTime.getTime() - startTime.getTime()\n const currentDuration = this.initialTimeScale\n .range()\n .map((d) => this.initialTimeScale.invert(d))\n .reduce((acc, curr) => curr.getTime() - acc, 0)\n const scale = (currentDuration / totalDuration) * currentTransform.k\n const targetStartX = this.initialTimeScale(startTime) * scale\n const translateX = -targetStartX\n const [minScale, maxScale] = this.zoomBehavior.scaleExtent()\n const newScale = Math.max(minScale, Math.min(maxScale, scale))\n\n this.svg\n .transition()\n .duration(this.zoomToBoundariesTransitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(newScale)\n )\n },\n rescaleAxis(axisName: string, newScale: d3.ScaleTime<any, any, unknown>) {\n const axis: Axis<Date> = this.xAxes[axisName as TimelineAxis]\n const ticksConfig = this.getAxisTicksConfig(\n this.xAxesConfig[axisName as TimelineAxis]\n )\n axis\n .scale(newScale)\n .ticks(ticksConfig.interval)\n .tickFormat(ticksConfig.formatFn)\n .tickSizeOuter(0)\n this.svg.select<SVGGElement>(`.${classes.xAxis}-${axisName}`).call(axis)\n },\n translateTicksText(axisName: string) {\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n let textBBox = (textElement.node() as SVGGraphicsElement).getBBox()\n textElement\n .attr(\"x\", textBBox.height / 2)\n .attr(\"y\", 0)\n .style(\"text-anchor\", \"start\")\n })\n },\n updateEventsBars() {\n const rectsAndDots = `.${classes.eventGroup} > rect.${classes.eventRect}`\n const rectsOnly = `${rectsAndDots}:not(.${classes.eventRect}--dot)`\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsAndDots)\n .attr(\"x\", this.getEventRectX)\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsOnly)\n .attr(\"width\", this.getEventRectWidth)\n\n const eventTextSelector = `.${classes.eventGroup} > text.${classes.eventRectText}`\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(eventTextSelector)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .text(this.getEventText)\n },\n updateBarChart() {\n const groupsCount = Object.keys(this.barChartGroups).length\n Object.keys(this.barChartGroups).forEach((type, index) => {\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const containerSelector = `.${classes.eventBarContainer}-${type}`\n const container = this.svg.selectAll(containerSelector)\n\n // Hover zones\n const hoverZoneSelector = `.${classes.barChartGroup} rect.${classes.eventBarHoverZone}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(hoverZoneSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n\n // Bars\n const barSelector = `.${classes.barChartGroup} rect.${classes.eventBar}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n .attr(\"height\", getH)\n\n // Bar caps\n const barCapSelector = `.${classes.barChartGroup} rect.${classes.eventBarCap}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barCapSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n })\n },\n updateLineGraphs() {\n Object.entries(this.lineGraphGroups).forEach(([type]) => {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n this.svg\n .selectAll<SVGPathElement, TimelineCountEvent[]>(\n `.${classes.lineGraphPath}-${type}`\n )\n .attr(\"d\", (d) => area(d))\n })\n },\n updateLineGraphHoverZones() {\n Object.keys(this.lineGraphGroups).forEach((type) => {\n const that = this\n this.svg\n .selectAll<SVGCircleElement, TimelineCountEvent>(\n `.${classes.lineGraphDot}-${type}`\n )\n .each(function (d) {\n d3.select(this)\n .attr(\"cx\", that.timeScale(that.tzStringToDate(d.timestamp)))\n .attr(\"cy\", that.yScale(d.count))\n })\n\n this.svg\n .selectAll<SVGRectElement, TimelineCountEvent>(\n `.${classes.lineGraphHoverZone}-${type}`\n )\n .each(function (d) {\n const x =\n that.timeScale(that.tzStringToDate(d.timestamp).getTime()) - 15\n d3.select(this)\n .attr(\"x\", x)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", that.chartHeight)\n })\n })\n },\n getEventRectX(d: TimelineEvent) {\n if (\n isNaN(this.timeScale(this.tzStringToDate(d.startDate || d.timestamp)))\n ) {\n return 0\n }\n\n return this.timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n getEventRectWidth(d: TimelineEvent) {\n if (!d) {\n return 0\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width =\n this.timeScale(endTimestamp) - this.timeScale(startTimestamp)\n\n return Math.max(width, this.rectMinWidth)\n } else {\n const oneSecondWidth = 1 / (this.currentTimeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, this.rectMinWidth)\n }\n },\n getEventText(e: TimelineEvent): string {\n const rectWidth = this.getEventRectWidth(e)\n const maxCharacters = (rectWidth - this.textPadding) / this.characterWidth\n\n if (maxCharacters < 4) {\n return \"\"\n } else if (e.text?.length <= maxCharacters) {\n return e.text\n } else {\n return `${e.text.slice(0, maxCharacters - 3)}...`\n }\n },\n getElementLeftPosition(element: HTMLElement) {\n if (!element) {\n return 0\n }\n\n const style = window.getComputedStyle(element)\n\n return parseInt(style.left)\n },\n isTimestampAllowedForMarker(\n timestamp: Date | number,\n marker: TimelineMarker\n ) {\n return (\n (marker.minDate\n ? timestamp >= this.tzStringToDate(marker.minDate)\n : true) &&\n (marker.maxDate\n ? timestamp <= this.tzStringToDate(marker.maxDate)\n : true)\n )\n },\n handleMarkerDrag({\n marker,\n markerElement,\n dragEvent,\n }: {\n marker: TimelineMarker\n markerElement: d3.Selection<any, TimelineMarker, any, any>\n dragEvent: d3.D3DragEvent<any, TimelineMarker, any>\n }) {\n if (!marker.isDraggable) {\n return\n }\n\n if (dragEvent.type === \"start\") {\n this.initialMarkerDragMouseOffset =\n dragEvent.x -\n markerElement\n .node()\n .querySelector(`.${classes.markerLine}`)\n .getBoundingClientRect().left\n markerElement.classed(classes.markerDragged, true)\n }\n\n const targetLeft = dragEvent.x - this.initialMarkerDragMouseOffset\n const newTimestamp = this.timeScale.invert(\n targetLeft - this.svg.node()!.getBoundingClientRect().left\n ) as Date\n const newPosition = this.timeScale(newTimestamp)\n const isNewTimestampAllowed = this.isTimestampAllowedForMarker(\n newTimestamp,\n marker\n )\n\n if (dragEvent.type === \"drag\" && isNewTimestampAllowed) {\n markerElement.attr(\"style\", `left: ${newPosition}px`)\n }\n\n if (dragEvent.type === \"end\" && isNewTimestampAllowed) {\n const id = marker.id || (marker.timestamp as string)\n this.markersPositions = {\n ...this.markersPositions,\n [id]: {\n ...this.markersPositions[id],\n position: newPosition,\n },\n }\n markerElement.classed(classes.markerDragged, false)\n }\n\n if (dragEvent.type !== \"start\") {\n this.$emit(`marker-drag-${dragEvent.type}`, {\n marker,\n newTimestamp: newTimestamp.toISOString(),\n })\n }\n },\n removeMarkersDragBehavior() {\n if (!this.markersDragBehavior) {\n return\n }\n this.markersDragBehavior\n .on(\"start\", null)\n .on(\"drag\", null)\n .on(\"end\", null)\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`).call(\n this.markersDragBehavior\n )\n },\n initMarkersDragBehavior() {\n this.removeMarkersDragBehavior()\n type MarkerDragEvent = d3.D3DragEvent<any, TimelineMarker, any>\n const that = this\n this.markersDragBehavior = d3\n .drag<HTMLElement, TimelineMarker>()\n .on(\"start\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n event.sourceEvent?.preventDefault()\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"drag\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"end\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`)\n .data(this.sortedMarkers)\n .call(this.markersDragBehavior)\n },\n initCurtains() {\n this.createCurtains()\n this.updateCurtains()\n },\n createCurtains() {\n if (!this.curtains) {\n return\n }\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--left`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleLeftDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--right`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleRightDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.updateCurtains()\n },\n updateCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const timelineHeight = this.timelineHeight\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"x\", -this.curtainHandleWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\n \"x\",\n timelineWidth - this.rightCurtainWidth + this.curtainHandleWidth\n )\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"width\", this.rightCurtainWidth + this.curtainHandleWidth * 2)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n },\n updateForbiddenIntervals(reset = false) {\n if (reset) {\n this.svg.selectAll(`.${classes.forbiddenInterval}`).remove()\n }\n\n const visibleDomain = this.timeScale.domain()\n this.forbiddenIntervals.forEach((interval, index) => {\n const startTime =\n interval.startDate === -Infinity\n ? visibleDomain[0]\n : this.tzStringToDate(interval.startDate)\n const endTime =\n interval.endDate === Infinity\n ? visibleDomain[1]\n : this.tzStringToDate(interval.endDate)\n\n const startX = this.timeScale(startTime)\n const endX = this.timeScale(endTime)\n const width = Math.max(endX - startX, 0)\n let rect: d3.Selection<SVGRectElement, unknown, null, undefined> =\n this.svg.select(`.${classes.forbiddenInterval}-${index}`)\n\n if (rect.empty()) {\n rect = this.svg\n .append(\"rect\")\n .attr(\n \"class\",\n `${classes.forbiddenInterval} ${classes.forbiddenInterval}-${index}`\n )\n .attr(\"fill\", `url(#${this.defs.stripedPattern})`)\n }\n rect\n .attr(\"x\", startX)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", this.timelineHeight)\n })\n },\n drawEventsGroups() {\n this.svg.selectAll(`g.${classes.eventGroup}`).remove()\n this.svg.selectAll(`.${classes.barChartGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroupLabel}`).remove()\n this.svg.selectAll(`.${classes.loadingIndicator}`).remove()\n\n this.drawLineGraphEventsGroups()\n this.drawBarEventsGroups()\n this.drawBarChartEventsGroups()\n this.drawMilestonesPlaceholder()\n },\n drawLineGraphEventsGroups() {\n const yOffset = this.combinedXAxesHeight + this.chartsYOffset\n const eventsGroups = this.insertZerosAtInterval\n ? this.filledGapsLineGraphGroups\n : this.lineGraphGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup]) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.lineGraphGroup} ${classes.lineGraphGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawLineGraph({\n events,\n gElement,\n color,\n type,\n })\n this.drawLineGraphHoverZones({\n events: events as TimelineCountEvent[],\n gElement,\n color,\n type,\n })\n })\n\n Object.entries(this.lineGraphGroups).forEach(\n ([type, eventsGroup], index) => {\n const { color, isLoading, label } = eventsGroup\n const labelHeight = Math.max(\n this.chartMinLabelHeight,\n this.barChartHeight\n )\n const labelYPosition = this.chartHeight - labelHeight * (index + 1)\n const loadingIndicatorYPosition =\n yOffset + this.chartHeight - labelHeight\n const labelsGElement = this.svg\n .append(\"g\")\n .classed(classes.lineGraphGroupLabel, true)\n .attr(\"transform\", `translate(0,${yOffset})`)\n .on(\"mouseover\", () => this.handleLabelMouseOver(type))\n .on(\"mouseleave\", () => this.handleLabelMouseLeave(type))\n\n this.drawProgressIndicator({\n type,\n color,\n isLoading,\n yPosition: loadingIndicatorYPosition,\n })\n this.drawTextLabel({\n color,\n label,\n type,\n height: labelHeight,\n yPosition: labelYPosition,\n gElement: labelsGElement,\n })\n }\n )\n },\n drawLineGraph({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n const clipPathId = `clip-${type}`\n gElement\n .append(\"defs\")\n .append(\"clipPath\")\n .attr(\"id\", clipPathId)\n .append(\"rect\")\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.chartHeight)\n\n gElement\n .append(\"path\")\n .datum(events as TimelineCountEvent[])\n .classed(`${classes.lineGraphPath}-${type}`, true)\n .attr(\"fill\", `url(#${this.defs.transparencyGradientLight}-${type})`)\n .attr(\"stroke\", color)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\")\n .attr(\"stroke-width\", 1)\n .attr(\"d\", (d) => area(d))\n .attr(\"clip-path\", `url(#${clipPathId})`)\n },\n drawLineGraphHoverZones({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineCountEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n events.forEach((event: TimelineCountEvent) => {\n const timestamp = `${event.timestamp}`\n this.countsByTimestamp[timestamp] = {\n ...(this.countsByTimestamp[timestamp] || {}),\n [type]: event.count,\n }\n\n const circle = gElement\n .append(\"circle\")\n .classed(\n `${classes.lineGraphDot} ${classes.lineGraphDot}-${type}`,\n true\n )\n .attr(\"cx\", this.timeScale(this.tzStringToDate(event.timestamp)))\n .attr(\"cy\", this.yScale(event.count))\n .attr(\"r\", 1.5)\n .attr(\"fill\", color)\n .attr(\"stroke-width\", 0)\n .datum(event)\n\n this.dotsByTimestamp[timestamp] = [\n ...(this.dotsByTimestamp[timestamp] || []),\n circle,\n ]\n\n gElement\n .append(\"rect\")\n .classed(`${classes.lineGraphHoverZone}-${type}`, true)\n .attr(\"x\", this.timeScale(this.tzStringToDate(event.timestamp)) - 15)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", this.chartHeight)\n .attr(\"fill\", \"transparent\")\n .datum(event)\n .on(\"mouseover\", (e) => {\n this.handleLineMouseOver(e, event, type)\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, true)\n )\n })\n .on(\"mouseout\", () => {\n this.handleLineMouseOut()\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, false)\n )\n })\n })\n },\n drawSingleBarEventsGroup({\n type,\n eventsGroup,\n milestone,\n dots,\n dotsSize,\n bottom,\n }: {\n type: string\n eventsGroup: TimelineEventsGroup\n milestone?: boolean\n dots?: boolean\n dotsSize?: number\n bottom?: boolean\n }) {\n const {\n color,\n bgColor,\n label,\n events,\n barBorderRadius,\n isLoading,\n height,\n chartType,\n } = eventsGroup as TimelineEventsGroup\n let yPosition = this.getBarGroupYPosition(type, bottom)\n const isBarsGroup = [\n TimelineChartType.bars,\n TimelineChartType.dots,\n undefined,\n ].includes(chartType)\n const backgroundHeight = isBarsGroup\n ? this.getBarGroupHeight(eventsGroup)\n : height\n if (milestone) {\n yPosition = this.getMilestoneGroupYPosition(type)\n }\n\n this.drawProgressIndicator({\n yPosition,\n type,\n color,\n isLoading,\n })\n\n const gElement = this.svg\n .append(\"g\")\n .attr(\"data-color\", color)\n .classed(classes.eventGroup, true)\n .classed(`${classes.eventGroup}-${type}`, true)\n\n this.drawBackground({\n color: bgColor || color,\n gElement,\n yPosition,\n height: backgroundHeight,\n })\n if (milestone || dots) {\n const lineWidth = dots ? 1 : 2\n const linePosition = yPosition + backgroundHeight / 2\n gElement\n .append(\"line\")\n .classed(milestoneClasses.milestoneLine, true)\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n .style(\"stroke\", color)\n .style(\"stroke-width\", lineWidth)\n }\n this.drawBars({\n events,\n color,\n gElement,\n yPosition,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius,\n })\n if (!label) {\n return\n }\n this.drawTextLabel({\n color,\n label,\n type,\n gElement,\n yPosition,\n height,\n })\n },\n drawBarEventsGroups() {\n Object.entries(this.barGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup,\n bottom: eventsGroup.bottom,\n dots: eventsGroup.chartType === TimelineChartType.dots,\n dotsSize: eventsGroup.dotsSize || 3,\n })\n )\n },\n drawMilestonesPlaceholder() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup: {\n ...eventsGroup,\n events: [],\n isLoading: false,\n },\n milestone: true,\n })\n )\n this.updateMilestonesPositions()\n },\n getMilestoneClass(milestone: TimelineEvent): Record<string, boolean> {\n return {\n [milestoneClasses.milestoneSelected]: [\n milestone.id,\n milestone.timestamp,\n ].includes(this.selectedMilestoneId),\n }\n },\n getMilestoneColors(\n milestoneColor: string | undefined,\n groupColor: string\n ): { background: string; border: string } {\n return {\n background: milestoneColor || groupColor,\n border: this.getTextFillColor(milestoneColor || groupColor, 0.25),\n }\n },\n getMilestoneGroupYPosition(groupName: string): number {\n let offset = 0\n for (const [type, eventsGroup] of Object.entries(this.milestonesGroups)) {\n if (type === groupName) {\n break\n }\n offset += eventsGroup.height || this.barChartHeight\n }\n\n return this.combinedXAxesHeight + this.milestonesYOffset + offset\n },\n getBarGroupYPosition(groupName: string, bottom?: boolean): number {\n let offset = this.combinedXAxesHeight\n if (bottom) {\n offset +=\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones ? this.combinedMilestonesHeight : 0)\n } else {\n offset += this.barsYOffset\n }\n\n for (const [type, eventsGroup] of Object.entries(this.barGroups)) {\n const isSameGroup = type === groupName\n if (isSameGroup) {\n break\n }\n\n if (!bottom && eventsGroup.bottom) {\n continue\n }\n\n offset += this.getBarGroupHeight(eventsGroup)\n }\n\n return offset\n },\n getBarGroupHeight(eventsGroup: TimelineEventsGroup) {\n return eventsGroup.height\n ? Math.max(eventsGroup.height + this.barYPadding, 1)\n : this.barChartHeight\n },\n updateMilestonesPositions() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) => {\n const yPosition = this.getMilestoneGroupYPosition(type)\n const gElement = this.svg.select(\n `g.${classes.eventGroup}-${type}`\n ) as d3.Selection<SVGGElement, any, any, any>\n const lineWidth = 2\n const groupHeight = eventsGroup.height || this.barChartHeight\n const yOffset = groupHeight / 2\n const linePosition = yPosition + yOffset - lineWidth / 2\n gElement\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .select(`.${milestoneClasses.milestoneLine}`)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n const milestonesContainer = d3.select(\n `.${milestoneClasses.milestonesContainer}-${type}`\n )\n\n milestonesContainer\n .style(\"top\", `${yPosition}px`)\n .style(\"height\", `${eventsGroup.height || this.barChartHeight}px`)\n\n const milestones = milestonesContainer\n .selectAll<HTMLDivElement, TimelineEvent>(\n `.${milestoneClasses.milestone}`\n )\n .data(this.getSortedEvents(eventsGroup.events))\n\n milestones.exit().remove()\n milestones\n .enter()\n .append(\"div\")\n .merge(milestones)\n .style(\n \"left\",\n (d) => `${this.timeScale(this.tzStringToDate(d.timestamp))}px`\n )\n .style(\"top\", `${linePosition}px`)\n })\n },\n drawBarChartEventsGroups() {\n const yOffset = this.combinedXAxesHeight\n const eventsGroups = this.barChartGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup], index) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.barChartGroup} ${classes.barChartGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawBarsChart({\n events,\n color,\n gElement,\n yOffset,\n type,\n index,\n })\n })\n },\n drawProgressIndicator({\n yPosition,\n type,\n isLoading,\n }: {\n yPosition: number\n type: string\n color: string\n isLoading: Boolean | undefined\n }) {\n const rect = this.svg\n .append(\"rect\")\n .classed(\n `${classes.loadingIndicator} ${classes.loadingIndicator}-${type}`,\n true\n )\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth / 3)\n .attr(\"height\", this.barChartHeight)\n .attr(\"fill\", `url(#${this.defs.loadingGradient}-${type})`)\n\n rect.style(\"visibility\", isLoading ? \"visible\" : \"hidden\")\n },\n drawBackground({\n color,\n yPosition,\n gElement,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n height?: number\n }) {\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.eventGroupBg)\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", height || this.barChartHeight)\n .attr(\"fill\", d3.color(color)!.toString())\n .style(\"opacity\", 0.1)\n },\n drawBars({\n events,\n gElement,\n yPosition,\n color,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius = 1.5,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n type: string\n dots?: boolean\n dotsSize?: number\n height?: number\n barBorderRadius?: number\n }) {\n const that = this\n const y = yPosition + this.barYPadding / 2\n const yOffset = dots\n ? ((height || this.barChartHeight) - dotsSize!) / 2\n : 0\n let rectHeight = Math.max(\n (height ?? this.barChartHeight) - this.barYPadding,\n 1\n )\n\n if (dots) {\n rectHeight = dotsSize as number\n }\n\n gElement\n .selectAll(classes.eventRect)\n .data(events)\n .enter()\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventRect +\n (dots ? ` ${classes.eventRect}--dot` : \"\") +\n (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", this.getEventRectX)\n .attr(\"y\", y + yOffset)\n .attr(\"ry\", dots ? dotsSize! : barBorderRadius)\n .attr(\"rx\", dots ? dotsSize! : barBorderRadius)\n .attr(\"width\", (dots ? dotsSize : this.getEventRectWidth) as number)\n .attr(\"height\", rectHeight)\n .attr(\"stroke-width\", dots ? dotsSize / 10 : 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", (event: TimelineEvent) => {\n if (!dots) {\n return \"#0000\"\n }\n const c = d3.color(event.color || color)\n\n return c.brighter(1).toString()\n })\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n .on(\"mouseover\", function (event, eventData) {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, true)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, false)\n that.handleBarMouseOut()\n })\n\n // Label text\n gElement\n .selectAll(classes.eventRectText)\n .data(events.filter((e) => !!e.text))\n .enter()\n .append(\"text\")\n .attr(\"class\", classes.eventRectText)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .attr(\"y\", yPosition + this.barChartHeight / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 600)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"pointer-events\", \"none\")\n .style(\"fill\", (event: TimelineEvent) =>\n this.getTextFillColor(event.color || color, 0.75)\n )\n .text(this.getEventText)\n },\n drawBarsChart({\n events,\n gElement,\n color,\n yOffset,\n type,\n index,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n yOffset: number\n type: string\n index: number\n }) {\n const that = this\n const groupsCount = Object.keys(this.barChartGroups).length\n\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const eventBarContainers = gElement\n .selectAll(classes.eventBarContainer)\n .data(events)\n .enter()\n .append(\"g\")\n .attr(\n \"class\",\n `${classes.eventBarContainer} ${classes.eventBarContainer}-${type}`\n )\n\n // Hover zone\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventBarHoverZone + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", -yOffset)\n .attr(\"width\", getW)\n .attr(\"height\", this.yScale.range()[0] + yOffset)\n .attr(\"fill\", (d) => d.color || color)\n .attr(\"fill-opacity\", 0)\n // Bar\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBar + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", getH)\n .attr(\"stroke-width\", 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", \"#0000\")\n .attr(\"fill\", `url(#${this.defs.transparencyGradient}-${type})`)\n // Cap (Top border)\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBarCap + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", 2)\n .attr(\"stroke-width\", 0)\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n\n eventBarContainers\n .on(\"mouseover\", function (event, eventData) {\n const g = d3.select(this)\n that.onBarChartBarMouseOver(g, color)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const g = d3.select(this)\n that.onBarChartBarMouseOut(g, type)\n that.handleBarMouseOut()\n })\n .on(\"click\", function () {\n gElement\n .selectAll(`.${classes.eventBarContainerSelected}`)\n .classed(classes.eventBarContainerSelected, false)\n d3.select(this).classed(classes.eventBarContainerSelected, true)\n })\n },\n onBarChartBarMouseOver(\n container: d3.Selection<SVGGElement, any, any, any>,\n color: string\n ) {\n container.classed(classes.eventBarContainerHovered, true)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0.2)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", color)\n bar.attr(\"fill-opacity\", 0.5)\n },\n onBarChartBarMouseOut(\n container: d3.Selection<SVGGElement, any, any, any>,\n eventType: string\n ) {\n container.classed(classes.eventBarContainerHovered, false)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", `url(#${this.defs.transparencyGradient}-${eventType})`)\n bar.attr(\"fill-opacity\", 1)\n },\n drawTextLabel({\n gElement,\n yPosition,\n color,\n label,\n type,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n label: string\n type: string\n height?: number\n }) {\n if (!this.showLabels) {\n return\n }\n\n const bg = {\n x: -5,\n y: yPosition,\n w: this.labelRectWidth,\n h: height || this.barChartHeight,\n radius: 3,\n }\n\n const labelGroup = gElement\n .append(\"g\")\n .attr(\"class\", `${classes.labelGroup} ${classes.labelGroup}-${type}`)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", () => this.toggleGroupVisibility(type))\n\n // Label rect background\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBg)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.dark ? \"#131a29\" : \"white\")\n\n // Label rect fill\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBgFill)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.getLabelBackgroundColor(color))\n .style(\"stroke\", this.getTextFillColor(color))\n .style(\"stroke-width\", 0.25)\n\n // Label text\n labelGroup\n .append(\"text\")\n .attr(\"class\", classes.labelText)\n .attr(\"data-color\", color)\n .attr(\"x\", 5)\n .attr(\"y\", yPosition + (height || this.barChartHeight) / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 500)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"fill\", this.getTextFillColor(color))\n .text(label)\n },\n getTextFillColor(baseColor: string, k = 0) {\n return (\n this.dark\n ? d3.color(baseColor)?.brighter(1.5 + k)\n : d3.color(baseColor)?.darker(2 + k)\n )!.toString()\n },\n getLabelBackgroundColor(baseColor: string) {\n let color = d3.color(baseColor)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n getCurrentGroupVisibility(type: string) {\n const internalVisibility = this.groupsVisibility[type]\n if (internalVisibility !== undefined) {\n return internalVisibility\n }\n\n // @ts-ignore\n const configVisibility = this.eventsGroups[type]?.isHidden\n if (configVisibility !== undefined) {\n return !configVisibility\n }\n\n return true\n },\n toggleGroupVisibility(type: string) {\n this.groupsVisibility = {\n ...this.groupsVisibility,\n [type]: !this.getCurrentGroupVisibility(type),\n }\n },\n getExternalLabelStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n background: this.getLabelBackgroundColor(color),\n color: this.getTextFillColor(color),\n }\n },\n getExternalLabelWrapperStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n borderColor: this.getTextFillColor(color),\n }\n },\n getMarkerClass(marker: TimelineMarker) {\n return {\n \"marker--hidden\": this.markersPositions[marker?.id]?.isHidden,\n \"marker--draggable\": marker?.isDraggable,\n ...(marker.className ? { [marker?.className]: true } : {}),\n }\n },\n getMarkerContainerStyle(marker: TimelineMarker): Record<string, string> {\n return {\n left: `${this.markersPositions[marker.id]?.position}px`,\n }\n },\n getMarkerLabelStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n color: marker.textColor || \"\",\n }\n },\n getMarkerLineStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n height: `${this.timelineHeight + 24}px`,\n }\n },\n tzStringToDate(timestamp: Timestamp): Date {\n const offsetMinutes = this.timezone\n ? moment.tz(timestamp, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(timestamp).add(offsetMinutes, \"minutes\").toDate()\n },\n dateToTzString(date: Date): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n const offsetMinutes = this.timezone\n ? moment.tz(date, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(offsetMinutes, true)\n .format()\n },\n getCurrentTimeBounds() {\n const bounds = this.timeScale.domain() as unknown as [string, string]\n\n return { startDate: bounds[0], endDate: bounds[1] }\n },\n getFormattedTimestamp(timestamp: Timestamp): string {\n return moment.parseZone(timestamp).format(\"YYYY-MM-DDTHH:mm:ss\")\n },\n fillTimeGaps(events: TimelineEvent[]) {\n if (events.length <= 1) {\n return events\n }\n\n const unit = this.insertZerosAtInterval\n const getNextTimestamp = (date: moment.Moment) =>\n date.clone().add(1, unit)\n const getPreviousTimestamp = (date: moment.Moment) =>\n date.clone().subtract(1, unit)\n\n let filledEvents = []\n\n for (let i = 0; i < events.length; i++) {\n const currentEvent = events[i]\n filledEvents.push(currentEvent)\n\n if (i === events.length - 1) {\n break\n }\n\n const nextEvent = events[i + 1]\n const currentTimestamp = moment(currentEvent.timestamp)\n const nextTimestamp = moment(nextEvent.timestamp)\n\n if (nextTimestamp.diff(currentTimestamp, unit) > 1) {\n const fillerAfterCurrent =\n getNextTimestamp(currentTimestamp).toISOString()\n const fillerBeforeNext =\n getPreviousTimestamp(nextTimestamp).toISOString()\n\n filledEvents.push({ timestamp: fillerAfterCurrent, count: 0 })\n if (fillerAfterCurrent !== fillerBeforeNext) {\n filledEvents.push({ timestamp: fillerBeforeNext, count: 0 })\n }\n }\n }\n\n if (this.flattenLineGraphEnds) {\n const firstEventTimestamp = moment(events[0].timestamp)\n const lastEventTimestamp = moment(events[events.length - 1].timestamp)\n\n const firstFiller =\n getPreviousTimestamp(firstEventTimestamp).toISOString()\n const lastFiller = getNextTimestamp(lastEventTimestamp).toISOString()\n\n filledEvents = [\n { timestamp: firstFiller, count: 0 },\n ...filledEvents,\n { timestamp: lastFiller, count: 0 },\n ]\n }\n\n return filledEvents\n },\n fillEvents(events: TimelineEvent[]): TimelineEvent[] {\n return this.placeholderLineChartGroup.map((defaultEvent) => {\n const actualEvent = events.find(\n (event) => event.timestamp === defaultEvent.timestamp\n )\n\n return actualEvent || defaultEvent\n })\n },\n onMilestoneClick(milestone: TimelineEvent, milestoneType: any) {\n if (this.panOnDateClick) {\n this.panToTimestamp(milestone.timestamp)\n }\n this.selectedMilestoneId = milestone.id || milestone.timestamp\n this.$emit(\"milestone-click\", { milestone, milestoneType })\n },\n getSortedEvents(events: TimelineEvent[]): TimelineEvent[] {\n return [...events].sort((a, b) =>\n new Date(a.timestamp || a.startDate) >\n new Date(b.timestamp || b.startDate)\n ? 1\n : -1\n )\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EVideoEmbed\",\n props: {\n videoUrl: {\n type: String,\n required: true,\n },\n platform: {\n type: String as PropType<\"youtube\" | \"vimeo\">,\n required: true,\n validator: (value: string) => [\"youtube\", \"vimeo\"].includes(value),\n },\n iframeListeners: {\n type: Object as PropType<Partial<HTMLIFrameElement>>,\n default: () => ({}),\n },\n iframeOptions: {\n type: Object,\n default: () => ({}),\n },\n },\n computed: {\n videoId(): string | undefined {\n if (this.platform === \"youtube\") {\n const regExp =\n // eslint-disable-next-line no-useless-escape\n /^.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#\\&\\?]*).*/\n\n const match = this.videoUrl.match(regExp)\n\n return match && match[1].length === 11 ? match[1] : undefined\n } else if (this.platform === \"vimeo\") {\n const match = this.videoUrl.match(/vimeo\\.com\\/(\\d+)/)\n\n return match ? match[1] : undefined\n }\n\n return undefined\n },\n embedUrl(): string {\n if (this.platform === \"youtube\") {\n const params = new URLSearchParams({\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://www.youtube.com/embed/${\n this.videoId\n }?${params.toString()}`\n } else if (this.platform === \"vimeo\" && this.videoId) {\n const token = this.videoUrl.split(\"/\").pop()?.split(\"?\")[0]\n const params = new URLSearchParams({\n h: token || \"\",\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://player.vimeo.com/video/${\n this.videoId\n }?${params.toString()}`\n }\n\n return \"\"\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { HeatmapBarItem } from \"@/types\"\nexport default Vue.extend({\n name: \"EHeatmapBar\",\n props: {\n items: {\n type: Array,\n default: () => [] as HeatmapBarItem[],\n },\n selectedValue: {\n type: [String, Number],\n default: \"\",\n },\n showCounts: {\n type: Boolean,\n default: true,\n },\n showNames: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n heatMapBarItems(): HeatmapBarItem[] {\n return this.items as HeatmapBarItem[]\n },\n maxCount(): number {\n return this.items.reduce(\n (a: number, b): number => Math.max(a, (b as HeatmapBarItem).count),\n 0\n )\n },\n },\n methods: {\n getColorIndex(count: number) {\n return Math.ceil((count / this.maxCount) * (this.colors.length - 1))\n },\n getColor(count: number): string {\n const index = this.getColorIndex(count)\n\n return (this.colors[index] || this.colors[0]) as string\n },\n getItemStyle(count: number) {\n return {\n background: this.getColor(count),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport moment from \"moment-timezone\"\nimport { HoursHeatmapChartItem } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EHoursHeatmap\",\n components: {\n EHeatmapBar,\n },\n props: {\n items: {\n type: Array,\n default: () => [] as HoursHeatmapChartItem[],\n },\n selectedHour: {\n type: [String, Number],\n default: \"\",\n },\n showHours: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n itemsByHour(): Record<string, HoursHeatmapChartItem> {\n return (this.items as HoursHeatmapChartItem[]).reduce((acc, item) => {\n return {\n ...(acc as Record<string, HoursHeatmapChartItem>),\n [moment((item as HoursHeatmapChartItem).timestamp).format(\"H\")]: item,\n }\n }, {})\n },\n heatmapBarItems() {\n return new Array(24).fill(undefined).reduce((acc, _, hour) => {\n return [\n ...acc,\n {\n name: (this as any).getFormattedHour(hour),\n value: hour,\n count: (this as any).itemsByHour[hour]?.count || 0,\n },\n ]\n }, [])\n },\n },\n methods: {\n getFormattedHour(h: number): string {\n const hour = h.toString()\n\n return (hour.length > 1 ? hour : `0${hour}`) + (this.dense ? \"h\" : \":00\")\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EReadMore\",\n props: {\n content: {\n type: [Array, String],\n default: () => null,\n },\n maxLength: {\n type: Number,\n default: () => 2,\n },\n showAll: {\n type: Boolean,\n default: false,\n },\n expandText: {\n type: String,\n default: \"see more...\",\n },\n collapseText: {\n type: String,\n default: \"less\",\n },\n moreTextWithPlaceholder: {\n type: String,\n default: \"and {count} more...\",\n },\n },\n data() {\n return {\n showAllContent: false,\n }\n },\n computed: {\n hiddenContentLength(): number {\n return Math.max((this.content?.length ?? 0) - this.maxLength, 0)\n },\n isArrayContent(): boolean {\n return Array.isArray(this.content)\n },\n isHiddenTextContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n !this.isArrayContent\n )\n },\n isHiddenArrayContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n this.isArrayContent\n )\n },\n isContentExpanded(): boolean {\n return this.showAllContent && this.content?.length > 0\n },\n computedMoreText(): string {\n return this.moreTextWithPlaceholder.replace(\n \"{count}\",\n this.hiddenContentLength.toString()\n )\n },\n },\n mounted() {\n this.showAllContent = this.showAll\n },\n methods: {\n displayContent() {\n return this.isArrayContent\n ? this.displayArrayContent()\n : this.displayTextContent()\n },\n displayArrayContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as Record<any, any>)\n .slice(0, this.maxLength)\n .join(\", \")\n }\n\n return this.content?.length > -1\n ? (this.content as Record<any, any>).join(\", \")\n : \"\"\n },\n displayTextContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as string).substr(0, this.maxLength)\n }\n\n return this.content?.length > -1 ? this.content : \"\"\n },\n toggleContentExpansion() {\n this.showAllContent = !this.showAllContent\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ETruncatedDiv\",\n props: {\n width: {\n type: [String, Number],\n required: true,\n },\n fixedWidth: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n containerStyle(): Record<string, any> {\n let width = this.width\n if (typeof width === \"number\") {\n width = `${this.width}px`\n }\n\n return {\n maxWidth: width,\n ...(this.fixedWidth ? { width } : {}),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\n\nexport default Vue.extend({\n name: \"ECompareSeparator\",\n components: {\n EIcon,\n },\n props: {\n xOffset: {\n type: [Number, String],\n default: 50,\n },\n },\n computed: {\n separatorStyle(): Record<string, any> {\n return { left: `${this.xOffset}%` }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport ECompareSeparator from \"@/components/ECompareSeparator.vue\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nconst defaultPosition = { width: 0, height: 0, left: 0, top: 0 } as Record<\n string,\n any\n>\n\nexport default Vue.extend({\n name: \"EImagesComparator\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ECompareSeparator,\n },\n props: {\n beforeImageSrc: {\n type: String,\n default: null,\n },\n afterImageSrc: {\n type: String,\n default: null,\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n separatorPositionX: 50,\n startSeparatorPositionX: 50,\n computedImageDimension: defaultPosition,\n isSeparatorDragging: false,\n watermarkDimension: defaultPosition,\n touchIdentifier: null as null | number,\n startTouchX: 0,\n containerRect: {} as DOMRect,\n container: {} as HTMLElement,\n afterImage: {} as HTMLImageElement,\n }\n },\n computed: {\n clipStyle(): Record<string, string> {\n return {\n clip: `rect(auto, ${\n (this.computedImageDimension.width * this.separatorPositionX) / 100 +\n this.computedImageDimension.left\n }px, auto, auto)`,\n }\n },\n contentStyle(): Record<string, string> {\n return {\n width: `${this.computedImageDimension.width}px`,\n height: this.computedImageDimension.height\n ? `${this.computedImageDimension.height}px`\n : \"100%\",\n top: `${this.computedImageDimension.top}px`,\n left: `${this.computedImageDimension.left}px`,\n }\n },\n imageSizeClasses() {\n if (\n !this.isLoading ||\n (this.computedImageDimension.width &&\n this.computedImageDimension.height)\n ) {\n return \"e-w-full e-h-full\"\n }\n\n return \"e-w-0 e-h-0\"\n },\n },\n methods: {\n handleResize() {\n this.container = this.$refs.container as HTMLElement\n this.containerRect = this.container.getBoundingClientRect()\n const { clientHeight: containerHeight, clientWidth: containerWidth } =\n this.container\n this.afterImage = this.$refs.afterImage as HTMLImageElement\n const { naturalHeight: imageHeight, naturalWidth: imageWidth } =\n this.afterImage\n\n const containerRatio = containerWidth / containerHeight\n const imageRatio = imageWidth / imageHeight\n\n if (containerRatio > imageRatio) {\n const width = containerHeight * imageRatio\n this.computedImageDimension = {\n width,\n height: containerHeight,\n top: 0,\n left: (containerWidth - width) / 2,\n }\n } else {\n const height = containerWidth / imageRatio\n this.computedImageDimension = {\n width: containerWidth,\n height,\n top: (containerHeight - height) / 2,\n left: 0,\n }\n }\n this.handleWatermarkResize()\n },\n handleWatermarkResize() {\n const { naturalWidth: imageWidth } = this.afterImage\n const calculateDimension = (factor: number) =>\n (factor * this.computedImageDimension.width) / imageWidth\n\n const scaleFactor = (imageWidth / 100) * 4\n const marginFactor = (imageWidth / 100) * 2\n const size = calculateDimension(scaleFactor)\n const margin = calculateDimension(marginFactor)\n\n this.watermarkDimension = {\n right: `${margin}px`,\n bottom: `${margin}px`,\n width: `${size}px`,\n height: `${size}px`,\n }\n },\n handleMouseMove(event: MouseEvent) {\n if (!this.isSeparatorDragging) {\n return\n }\n\n const offsetX =\n event.clientX -\n this.containerRect.left -\n this.computedImageDimension.left\n const separatorPositionX =\n (offsetX / this.computedImageDimension.width) * 100\n this.separatorPositionX = Math.max(0, Math.min(100, separatorPositionX))\n },\n handleMouseDown() {\n this.isSeparatorDragging = true\n this.container.addEventListener(\"mousemove\", this.handleMouseMove)\n this.container.addEventListener(\"mouseup\", this.handleMouseUp)\n },\n handleMouseUp() {\n if (this.isSeparatorDragging) {\n this.container.removeEventListener(\"mousemove\", this.handleMouseMove)\n this.container.removeEventListener(\"mouseup\", this.handleMouseUp)\n this.isSeparatorDragging = false\n }\n },\n handleTouchStart(event: TouchEvent) {\n const touch = event.touches[0]\n\n if (touch && event.touches.length === 1) {\n this.container.addEventListener(\"touchmove\", this.handleTouchMove)\n this.container.addEventListener(\"touchend\", this.handleTouchEnd)\n this.touchIdentifier = touch.identifier\n this.startTouchX = touch.clientX\n this.startSeparatorPositionX = this.separatorPositionX\n }\n },\n handleTouchMove(event: TouchEvent) {\n const touch = Array.from(event.touches).find(\n (t) => t.identifier === this.touchIdentifier\n )\n\n if (touch) {\n const deltaX = touch.clientX - this.startTouchX\n this.separatorPositionX = Math.max(\n 0,\n Math.min(\n 100,\n (deltaX / this.computedImageDimension.width) * 100 +\n this.startSeparatorPositionX\n )\n )\n }\n },\n handleTouchEnd(event: TouchEvent) {\n const touch = Array.from(event.touches).find(\n (t) => t.identifier === this.touchIdentifier\n )\n if (!touch) {\n this.container.removeEventListener(\"touchmove\", this.handleTouchMove)\n this.container.removeEventListener(\"touchend\", this.handleTouchEnd)\n this.touchIdentifier = null\n }\n },\n },\n})\n","import Vue from \"vue\"\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\nexport default Vue.extend({\n data() {\n return { timeouts: [] as number[] }\n },\n beforeDestroy() {\n this.$clearTimeouts()\n },\n methods: {\n $setTimeout(cb: Function, timeout = 0) {\n const timeoutId = setTimeout(cb, timeout)\n this.timeouts = [...this.timeouts, timeoutId as unknown as number]\n\n return timeoutId\n },\n $clearTimeouts() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n },\n },\n})\n","import Vue from \"vue\"\n\nexport interface IEventListener {\n event: string\n cb: EventListenerCallback\n element?: EventTarget\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\n\nexport type EventListenerCallback = (e: any) => unknown | Promise<unknown>\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\nexport default Vue.extend({\n data() {\n return { eventListeners: [] as IEventListener[] }\n },\n beforeDestroy() {\n this.$removeEventListeners()\n },\n methods: {\n $addEventListener(event: string, cb: () => void, element = window) {\n if (!(element instanceof HTMLElement || element instanceof Window)) {\n console.error(\n \"$addEventListener: The target element is not an HTMLElement.\"\n )\n console.log(\"$addEventListener: got: \", element)\n\n return\n }\n element.addEventListener(event, cb)\n this.eventListeners = [...this.eventListeners, { element, event, cb }]\n },\n $removeEventListener(event: string, cb: () => void, element = window) {\n const listener = this.eventListeners.find((l: IEventListener) => {\n return l.event === event && l.element === element && l.cb === cb\n })\n\n if (listener) {\n listener.element?.removeEventListener(event, cb)\n this.eventListeners = this.eventListeners.filter(\n (l) => l.event === event && l.cb === cb && l.element === element\n )\n }\n },\n $removeEventListeners() {\n this.eventListeners.forEach(({ element, event, cb }: IEventListener) => {\n element?.removeEventListener(event, cb)\n })\n this.eventListeners = []\n },\n },\n})\n","\nimport timeouts from \"@/mixins/timeouts\"\nimport eventListener from \"@/mixins/event-listeners\"\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EExpandableMenu\",\n mixins: [timeouts, eventListener],\n props: {\n padding: {\n type: Number,\n default: 4,\n },\n direction: {\n type: String as PropType<\"top\" | \"right\" | \"bottom\" | \"left\">,\n default: \"top\",\n validator: (prop: string) =>\n [\"top\", \"right\", \"bottom\", \"left\"].includes(prop),\n },\n isMobile: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n menu: false,\n touched: false,\n baseSize: {},\n }\n },\n computed: {\n row(): boolean {\n return [\"right\", \"left\"].includes(this.direction)\n },\n reverse(): boolean {\n return [\"top\", \"left\"].includes(this.direction)\n },\n },\n watch: {\n isMobile() {\n this.setButtonsPositions(this.menu)\n },\n direction() {\n this.setButtonsPositions(this.menu)\n },\n padding() {\n this.setButtonsPositions(this.menu)\n },\n },\n mounted() {\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect() || {}\n this.baseSize = {\n width: `${activator.width}px`,\n height: `${activator.height}px`,\n }\n if (!this.isMobile) {\n this.$setTimeout(this.toggleMenu, 100)\n }\n this.$addEventListener(\"resize\", this.setButtonsPositions)\n },\n methods: {\n toggleMenu() {\n this.menu = !this.menu\n this.setButtonsPositions(this.menu)\n },\n setButtonsPositions(open?: boolean) {\n const menu = this.$refs.menu as HTMLDivElement\n const children = Array.from(menu?.children).filter(\n (el) => !el.classList.contains(\"v-tooltip\")\n )\n if (!children || !children.length) {\n return\n }\n const minSize = this.isMobile ? 30 : 40\n const items = Array.from(children) as HTMLElement[]\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect()\n const activatorSize = Math.min(\n activator[this.row ? \"width\" : \"height\"],\n minSize\n )\n\n const translation = open ? activatorSize + this.padding : 0\n const translationDirection = this.row ? \"X\" : \"Y\"\n menu.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * translation\n }px)`\n let buttonSize = 0\n items.forEach((b, index) => {\n if (\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"] > minSize\n ) {\n buttonSize =\n Math.max(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n } else {\n buttonSize =\n Math.min(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n }\n const position = open ? buttonSize * index : 0\n b.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * position\n }px)`\n })\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"BaseIcon\",\n props: {\n name: {\n type: String,\n default: \"box\",\n },\n color: {\n type: String,\n default: \"#3c3c3c\",\n },\n viewBox: {\n type: String,\n default: \"0 0 128 128\",\n },\n width: {\n type: [Number, String],\n default: 60,\n },\n height: {\n type: [Number, String],\n default: 60,\n },\n size: {\n type: [Number, String, null] as PropType<number | string | null>,\n default: null,\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Bim\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Blur\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Compare\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ConcretePump\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"DroneView\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Dumper\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Evercam\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"black\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EvercamLogo\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"CompactExcavator\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FlatbedSemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FreeDrawing\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"IModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Inspection\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"MiniModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"OtherTrucks\",\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"RoadVehicle\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Roller\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Robot\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SkidSteerLoader\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SmallTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TankTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"The360\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TippingTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckHead\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckMixer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ZohoCrm\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","import Bim from \"@/components/svgIcons/Bim.vue\"\nimport Blur from \"@/components/svgIcons/Blur.vue\"\nimport Compare from \"@/components/svgIcons/Compare.vue\"\nimport ConcretePump from \"@/components/svgIcons/ConcretePump.vue\"\nimport DroneView from \"@/components/svgIcons/DroneView.vue\"\nimport Dumper from \"@/components/svgIcons/Dumper.vue\"\nimport Evercam from \"@/components/svgIcons/Evercam.vue\"\nimport EvercamLogo from \"@/components/svgIcons/EvercamLogo.vue\"\nimport Excavator from \"@/components/svgIcons/Excavator.vue\"\nimport FlatbedSemiTrailer from \"@/components/svgIcons/FlatbedSemiTrailer.vue\"\nimport FreeDrawing from \"@/components/svgIcons/FreeDrawing.vue\"\nimport IModel from \"@/components/svgIcons/IModel.vue\"\nimport Inspection from \"@/components/svgIcons/Inspection.vue\"\nimport Loader from \"@/components/svgIcons/Loader.vue\"\nimport MiniModel from \"@/components/svgIcons/MiniModel.vue\"\nimport OtherTruck from \"@/components/svgIcons/OtherTruck.vue\"\nimport RoadVehicle from \"@/components/svgIcons/RoadVehicle.vue\"\nimport Roller from \"@/components/svgIcons/Roller.vue\"\nimport Robot from \"@/components/svgIcons/Robot.vue\"\nimport SemiTrailer from \"@/components/svgIcons/SemiTrailer.vue\"\nimport SkidSteerLoader from \"@/components/svgIcons/SkidSteerLoader.vue\"\nimport SmallTruck from \"@/components/svgIcons/SmallTruck.vue\"\nimport TankTruck from \"@/components/svgIcons/TankTruck.vue\"\nimport The360 from \"@/components/svgIcons/The360.vue\"\nimport TippingTruck from \"@/components/svgIcons/TippingTruck.vue\"\nimport TruckHead from \"@/components/svgIcons/TruckHead.vue\"\nimport TruckMixer from \"@/components/svgIcons/TruckMixer.vue\"\nimport Worker from \"@/components/svgIcons/Worker.vue\"\nimport ZohoCrm from \"@/components/svgIcons/ZohoCrm.vue\"\n\nconst SvgIcons = {\n Bim,\n Blur,\n Compare,\n ConcretePump,\n CompactExcavator: Excavator,\n DroneView,\n Dumper,\n Evercam,\n EvercamLogo,\n Excavator,\n FlatbedSemiTrailer,\n FreeDrawing,\n IModel,\n Inspection,\n Loader,\n MiniModel,\n OtherTruck,\n RoadVehicle,\n Roller,\n Robot,\n SemiTrailer,\n SkidSteerLoader,\n SmallTruck,\n TankTruck,\n The360,\n TippingTruck,\n TruckHead,\n TruckMixer,\n Unknown: OtherTruck,\n Worker,\n ZohoCrm,\n}\n\nconst camelToKebabCase = (iconName: string) => {\n return iconName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase()\n}\n\nexport const eSvgIcons = Object.fromEntries(\n Object.entries(SvgIcons).map(([key, value]) => [camelToKebabCase(key), value])\n)\n\nexport default {}\n","\nimport { eSvgIcons } from \"@/components/svgIcons\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ESvgIcon\",\n components: {\n ...eSvgIcons,\n },\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n },\n computed: {\n svgIconComponent(): any {\n return eSvgIcons[this.icon]\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EFlagIcon\",\n props: {\n code: {\n type: String,\n required: true,\n },\n },\n computed: {\n flagCountryIcon() {\n return `fi fi-${this.code?.toLowerCase()}`\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size, TToggleSwitchSize } from \"@/types\"\n\nexport interface EToggleSwitchOption {\n title: string\n value: any\n}\n\nexport type CssClassMap = Record<string, boolean>\ntype SizeClasses = {\n container: CssClassMap\n button: CssClassMap\n text: CssClassMap\n}\n\nexport default Vue.extend({\n name: \"EToggleSwitch\",\n props: {\n options: {\n type: Array as PropType<EToggleSwitchOption[]>,\n required: true,\n },\n color: {\n type: String as PropType<\"brand\" | \"gray\" | \"primary\">,\n default: \"brand\",\n },\n size: {\n type: String as PropType<TToggleSwitchSize>,\n default: Size.sm,\n },\n defaultValue: {\n type: [String, Number, Boolean],\n default: null,\n },\n },\n data() {\n return {\n value: this.defaultValue || this.options[0].value,\n }\n },\n computed: {\n sizeClasses(): SizeClasses {\n return {\n container: {\n \"e-p-1 e-leading-3\": this.size === Size.sm,\n \"e-p-1.5\": this.size === Size.md,\n \"e-p-2\": this.size === Size.lg,\n },\n button: {\n \"e-py-[.2rem] e-p-1 e-rounded-md\": this.size === Size.sm,\n \"e-p-1\": this.size === Size.md,\n \"e-p-1.5\": this.size === Size.lg,\n },\n text: {\n \"e-text-xs\": this.size === Size.sm,\n \"e-text-sm\": this.size === Size.md,\n \"e-text-base\": this.size === Size.lg,\n },\n }\n },\n containerClasses(): CssClassMap {\n return {\n ...this.sizeClasses.container,\n \"e-flex e-items-center e-justify-center e-w-fit e-h-min e-bg-gray-900 e-rounded-md e-e-shadow-md e-transition-colors e-duration-200 e-ease-in-out\":\n true,\n }\n },\n textClasses(): CssClassMap {\n return {\n ...this.sizeClasses.text,\n \"e-font-medium\": true,\n }\n },\n buttonBaseClasses(): CssClassMap {\n return {\n \"e-cursor-pointer\": true,\n \"e-text-gray-100 e-rounded-md e-shadow e-transition e-duration-200 e-ease-in-out\":\n true,\n }\n },\n },\n methods: {\n getButtonClasses(optionValue: any) {\n const dynamicClasses = {\n \"e-border-none\": true,\n \"e-bg-inherit\": this.value !== optionValue,\n \"e-bg-brand-600\": this.color === \"brand\" && this.value === optionValue,\n \"e-bg-gray-600\":\n ![\"primary\", \"brand\"].includes(this.color) &&\n this.value === optionValue,\n \"e-bg-[#629efc] e-text-gray-900 e-font-normal\":\n this.color === \"primary\" && this.value === optionValue,\n }\n\n return {\n ...this.buttonBaseClasses,\n ...this.sizeClasses.button,\n ...dynamicClasses,\n }\n },\n handleClick(value: any) {\n this.value = value\n this.$emit(\"input\", value)\n },\n },\n})\n","import Vue from \"vue\"\nimport eventListeners from \"@/mixins/event-listeners\"\nimport timeouts from \"@/mixins/timeouts\"\n\nexport interface InactivityListenerMixinProps {\n duration: number\n reminders?: number[]\n callback: () => void\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\n\nexport default Vue.extend({\n mixins: [eventListeners, timeouts],\n data() {\n return {\n inactivityListeners: [] as Array<() => void>,\n isInactivityListenerActive: false,\n }\n },\n beforeDestroy() {\n this.$removeInactivityListeners()\n },\n methods: {\n resetInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.$clearTimeouts()\n this.setInactivityListenerTimer(callback, duration, reminders)\n },\n\n setInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (callback && duration) {\n this.$setTimeout(() => {\n callback()\n if (reminders.length > 0) {\n this.setInactivityListenerReminderTimers(callback, reminders)\n }\n }, duration * 1000)\n }\n },\n setInactivityListenerReminderTimers(\n callback = () => {},\n reminders: number[] = [],\n index = 0\n ) {\n const currentReminder = reminders[index]\n if (index < reminders.length) {\n this.$setTimeout(() => {\n callback()\n this.setInactivityListenerReminderTimers(\n callback,\n reminders,\n index + 1\n )\n }, currentReminder * 1000)\n } else if (this.isInactivityListenerActive) {\n this.$removeInactivityListeners()\n }\n },\n $registerInactivityListener({\n callback = () => {},\n duration = 0,\n reminders = [],\n }: InactivityListenerMixinProps) {\n this.isInactivityListenerActive = true\n this.resetInactivityListenerTimer(callback, duration, reminders)\n const onMouseMove = () =>\n this.resetInactivityListenerTimer(callback, duration, reminders)\n this.$addEventListener(\"mousemove\", onMouseMove)\n this.inactivityListeners.push(onMouseMove)\n },\n $removeInactivityListeners() {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.isInactivityListenerActive = false\n this.inactivityListeners.forEach((cb) => {\n this.$removeEventListener(\"mousemove\", cb)\n })\n this.$clearTimeouts()\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { PropType } from \"vue\"\nimport {\n GlobalSearchResultInput,\n GlobalSearchResult,\n GlobalSearchMatch,\n} from \"@/types\"\nimport { eventListeners } from \"@/mixins\"\nimport moment from \"moment-timezone\"\nimport EIcon from \"@/components/EIcon.vue\"\nexport default Vue.extend({\n name: \"EGlobalSearch\",\n components: {\n EIcon,\n },\n mixins: [eventListeners],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n items: {\n type: Array as PropType<GlobalSearchResultInput>,\n default: () => [],\n },\n timezone: {\n type: String,\n default: \"Europe/Dublin\",\n },\n convertedDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ss\",\n },\n currentDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ssZ\",\n },\n isFixedPosition: {\n type: Boolean,\n default: true,\n },\n isHidden: {\n type: Boolean,\n default: true,\n },\n deep: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n search: \"\",\n isSearching: false,\n }\n },\n computed: {\n inputClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-900 e-text-white e-ring-gray-700 focus:e-ring-2 focus:e-ring-blue-500 e-placeholder-gray-500\":\n this.dark,\n \"e-bg-white e-text-[#000057] e-ring-gray-300 hover:e-ring-gray-100 focus:e-ring-blue-500 e-placeholder-gray-400\":\n !this.dark,\n }\n },\n },\n watch: {\n search(query: string) {\n if (!query) {\n this.$emit(\"reset\")\n } else if (query.length >= 3) {\n this.$emit(\n \"search-results\",\n this.searchObjectsByQuery(this.items as any[], query)\n )\n }\n },\n },\n mounted() {\n if (!this.isHidden && this.search.length > 0) {\n this.isSearching = true\n } else {\n this.$addEventListener(\"keydown\", this.onKeyHandler)\n this.$addEventListener(\"keyup\", this.onKeyHandler)\n }\n },\n methods: {\n onInput(event: InputEvent) {\n this.search = (event.target as HTMLInputElement).value\n },\n searchObjectsByQuery(\n objects: Array<GlobalSearchResultInput>,\n query: string\n ): Array<GlobalSearchResult> {\n return objects.reduce((acc, obj, index) => {\n const matches = this.findMatchesInObject(obj, query, [])\n if (matches.length > 0) {\n acc.push({ index, matches })\n }\n\n return acc\n }, []) as GlobalSearchResult[]\n },\n findMatchesInObject(\n obj: GlobalSearchResultInput,\n query: string,\n path: string[]\n ): GlobalSearchMatch[] {\n return Object.entries(obj).reduce((matches: any, [key, value]: any) => {\n const currentPath = [...path, key]\n const valueMatches = this.matchesQuery(value, query)\n ? [{ path: currentPath, value }]\n : []\n\n let arrayMatches: any[] = []\n if (this.deep && Array.isArray(value)) {\n arrayMatches = value.flatMap((item, index) =>\n this.findMatchesInObject(item, query, [...currentPath, `${index}`])\n )\n }\n\n const objectMatches =\n this.deep && typeof value === \"object\" && value !== null\n ? this.findMatchesInObject(value, query, currentPath)\n : []\n\n return [...matches, ...valueMatches, ...arrayMatches, ...objectMatches]\n }, [])\n },\n matchesQuery(value: any, query: string): boolean {\n return (\n `${this.isValidDate(value) ? this.formattedTimestamp(value) : value}`\n .toLowerCase()\n .indexOf(query.toLowerCase()) !== -1\n )\n },\n isValidDate(date: string | Date): boolean {\n return moment(date, this.currentDateFormat, true).isValid()\n },\n formattedTimestamp(timestamp: string): string {\n return moment\n .tz(timestamp, this.timezone)\n .format(this.convertedDateFormat)\n },\n onKeyHandler(event: unknown): void {\n const e = event as KeyboardEvent\n const ctrlKey = e.ctrlKey && e.type === \"keydown\"\n const shiftKey = e.shiftKey && e.type === \"keydown\"\n const fKey = [\"f\", \"F\"].includes(e.key) && e.type === \"keydown\"\n const esc = e.key === \"Escape\" && e.type === \"keydown\"\n\n if (fKey && ctrlKey && shiftKey) {\n this.isSearching = true\n this.$nextTick(() => {\n const searchField = this.$refs.searchField as HTMLElement\n searchField && searchField.focus()\n })\n }\n if (esc) {\n this.isSearching = false\n this.search = \"\"\n }\n },\n },\n})\n","// Components\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EBadge from \"@/components/EBadge.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport EVideoPlayer from \"@/components/EVideoPlayer.vue\"\nimport ETimeline from \"@/components/ETimeline.vue\"\nimport EVideoEmbed from \"@/components/EVideoEmbed.vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport EHoursHeatmap from \"@/components/EHoursHeatmap.vue\"\nimport EReadMore from \"@/components/EReadMore.vue\"\nimport ETruncatedDiv from \"@/components/ETruncatedDiv.vue\"\nimport ECompareSeparator from \"@/components/ECompareSeparator.vue\"\nimport EImagesComparator from \"@/components/EImagesComparator.vue\"\nimport EExpandableMenu from \"@/components/EExpandableMenu.vue\"\nimport ESvgIcon from \"@/components/ESvgIcon.vue\"\nimport ECalendarHeatmap from \"@/components/ECalendarHeatmap.vue\"\nimport EFlagIcon from \"@/components/EFlagIcon.vue\"\n\nimport EToggleSwitch from \"@/components/EToggleSwitch.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\n// Directives\nimport { DirectivesMap } from \"@/directives\"\nimport * as mixins from \"@/mixins\"\n\nimport { VueConstructor } from \"vue\"\nimport EGlobalSearch from \"@/components/EGlobalSearch.vue\"\n\nexport const components = {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EImagesComparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n ECalendarHeatmap,\n EFlagIcon,\n}\n\nexport default {\n install(Vue: VueConstructor) {\n // Register components\n Object.keys(components).forEach((name) => {\n // @ts-ignore\n Vue.component(name, components[name])\n })\n\n // Register mixins\n Object.keys(mixins).forEach((name) => {\n // @ts-ignore\n Vue.mixin(name, mixins[name])\n })\n\n // Register directives\n DirectivesMap.forEach(({ name, definition }) => {\n Vue.directive(name, definition)\n })\n },\n}\n\nexport {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EImagesComparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n ECalendarHeatmap,\n EFlagIcon,\n}\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n\nexport * from \"@/mixins\"\n"],"names":["Size","BaseColor","TimelineAxis","TimelineChartType","TimelineIntervalChangeTrigger","_sfc_main$Q","Vue","colorClasses","sizeClasses","_sfc_main$P","Badge","x","create","picocolors_browserModule","exports","_export","target","all","name","dim","_default","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","colors","colors_1","TailwindColors","__CJS__import__0__.default","__CJS__import__0__","BrandColors","customColors","CustomColors","config","module","negateValue","value","sign","numericFunctions","fn","pluginConfig","plugins","pluginName","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","flag","_config_future","_config_future_flag","_ref","_config_experimental","_config_experimental_flag","_ref1","experimentalFlagsEnabled","changes","s","normalizeConfig","_featureFlags","_interop_require_wildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","_purge_options","content","purge","safelist","blocklist","item","_config_prefix","extract","_config_purge","_config_content","_config_purge1","_config_purge_extract","_config_content1","_config_content_extract","_config_purge2","_config_purge_options","_config_content2","_config_content_options","extractors","defaultExtractor","extensions","extractor","extension","transform","_config_purge_transform","_config_content_transform","transformers","file","isPlainObject","prototype","cloneDeep","child","v","escapeCommas","className","parseColor","formatColor","_colorNames","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","_match_","_match__toString","hex","_","r","g","b","a","_value_match","match","color","part","mode","alpha","hasAlpha","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","properties","p","splitAtTopLevelOnly","separator","stack","parts","lastPos","isEscaped","idx","char","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","result","seen","shadows","normalize","url","number","percentage","length","lineWidth","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","require$$2","cssFunctions","isCSSFunction","AUTO_VAR_INJECTION_EXCEPTIONS","context","isRoot","isVarException","fullMatch","characterBefore","normalizeMathOperatorSpacing","preventFormattingInFunctions","preventFormattingKeywords","lastChar","i","peek","word","j","consumeUntil","chars","minIndex","index","keyword","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","backgroundSize","_dataTypes","keywordValues","sizes","size","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","typeMap","coerceValue","getMatchingTypes","_escapeCommas","_withAlphaVariable","_negateValue","require$$3","_validateFormalSyntax","require$$4","require$$5","selectors","updateClass","sel","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","options","_options_values","splitUtilityModifier","slashIdx","arbitraryStartIdx","arbitraryEndIdx","oldValue","opacityValue","unwrapArbitraryModifier","tailwindConfig","_options_values1","_options_values2","_tailwindConfig_theme","_tailwindConfig_theme_opacity","_options_values_color","normalizedColor","guess","supportedTypes","splitAtFirst","delim","types","arbitraryValue","explicitType","matches","rawModifier","modifiersEnabled","utilityModifier","_options_modifiers","_options_modifiers_utilityModifier","configValue","toColorValue","maybeFunction","resolveConfig","_corePluginList","_configurePlugins","_colors","_defaults","_toPath","_normalizeConfig","require$$6","_isPlainObject","require$$7","_cloneDeep","require$$8","_pluginUtils","require$$9","require$$10","_toColorValue","require$$11","isFunction","mergeWith","customizer","merged","configUtils","scale","negativeScale","negativeValue","screens","breakpoints","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","e","toPaths","pattern","prefix","newPath","resolveFunctionKeys","object","resolvePath","val","normalized","extractPluginConfigs","configs","allConfigs","_config_plugins","plugin","_plugin_config","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","_t_theme","_c_plugins","t","c","config_full","getAllConfigs","_configfull","_config_presets","preset","features","experimentals","feature","_resolveConfig","_getAllConfigs","defaultConfigs","resolveConfig_1","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","ToggleSwitchSizes","BadgeColors","EVENTS","_sfc_main$O","acc","iconClasses","_b","_a","_sfc_main$N","fill","animationDuration","_sfc_main$M","_sfc_main$L","prop","acceptUndefined","n","isFullScreen","doc","makeFullScreen","element","resolve","el","exitFullScreen","debounce","func","wait","timeout","getRandomChars","_sfc_main$K","imgStyle","container","containerRect","contentRect","mouseX","mouseY","delta","oldScale","xPercent","yPercent","maxLeft","minLeft","minTop","maxTop","deltaX","deltaY","correctionTop","correctionRight","correctionBottom","correctionLeft","pointers","midPoint","leadingZeroFormatter","VIDEO_PLAYER_EVENTS","formatDuration","time","seconds","minutes","hours","_sfc_main$J","ESpinner","EZoomable","Hls","videoOptions","moment","player","start","end","isTargetTimestampAvailable","src","playerRef","videoSource","xhr","_c","_d","manifest","firstLevelDetails","startOffset","_e","data","isNetworkError","isMediaError","isNotFoundError","shouldAttemptFallback","attemptFallback","handleError","event","which","timelineContainer","error","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","getFormattedDay","d","day","d3","daySuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","format","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","ResizeObserverDirective","binding","callback","observer","entries","DirectivesMap","milestoneClasses","_sfc_main$I","contentFirstChild","contentBox","existingTimeoutId","timeoutId","transitionDuration","timeoutDuration","milestone","classes","_sfc_main$H","ETimelineMilestone","eventsGroup","combinedLabelsHeight","axesCount","_group","flattenedEvents","oldestEvent","latestEvent","allTimestamps","group","timestamp","isVisible","visibleStart","visibleEnd","filteredFlattenedCounts","eventStart","eventEnd","cursorX","date","interval","startDate","endDate","defsSelection","chartType","id","stop","opacity","sampleTimestamp","padding","axisName","axis","markersTimestamps","marker","minTimestamp","maxTimestamp","t1","t2","domainSpan","domainWidth","viewportSpan","paddedViewportSpan","scaleFactor","scaleExtent","scaledMinTimestampPosition","scaledMaxTimestampPosition","centerPoint","translateX","currentTransform","overlapThreshold","markersArray","markerX","isHidden","nextMarker","nextTimestamp","nextMarkerX","parent","targetId","targetType","selection","cursor","timeAtPixel0","timeAtPixel1","HOUR","newDensity","trigger","visibleFrom","visibleTo","fromDate","toDate","resizeObserverEntry","that","bgFill","text","formattedDateTz","_event","eventData","eventType","entry","count","groupType","scaleCopy","newDomain","minDateLimit","maxDateLimit","newScale","targetTimestamp","targetDate","targetX","newDomainStart","newDomainEnd","minDate","maxDate","timelineWidth","fullRange","totalDuration","leftDuration","rightDuration","newWidth","newX","startTime","endTime","curr","minScale","maxScale","ticksConfig","textElement","textBBox","rectsAndDots","rectsOnly","eventTextSelector","groupsCount","getW","getH","getX","getY","containerSelector","hoverZoneSelector","barSelector","barCapSelector","area","startTimestamp","endTimestamp","width","oneSecondWidth","maxCharacters","style","markerElement","dragEvent","targetLeft","newTimestamp","newPosition","isNewTimestampAllowed","timelineHeight","reset","visibleDomain","startX","endX","yOffset","eventsGroups","gElement","events","isLoading","label","labelHeight","labelYPosition","loadingIndicatorYPosition","labelsGElement","clipPathId","circle","dots","dotsSize","bottom","bgColor","barBorderRadius","height","yPosition","backgroundHeight","linePosition","milestoneColor","groupColor","groupName","offset","milestonesContainer","milestones","y","rectHeight","eventBarContainers","bar","bg","labelGroup","baseColor","internalVisibility","configVisibility","offsetMinutes","userUtcOffset","bounds","unit","getNextTimestamp","getPreviousTimestamp","filledEvents","currentEvent","nextEvent","currentTimestamp","fillerAfterCurrent","fillerBeforeNext","firstEventTimestamp","lastEventTimestamp","firstFiller","lastFiller","defaultEvent","milestoneType","_sfc_main$G","regExp","params","token","_sfc_main$F","_sfc_main$E","EHeatmapBar","h","_sfc_main$D","_sfc_main$C","_sfc_main$B","EIcon","defaultPosition","_sfc_main$A","ECompareSeparator","containerHeight","containerWidth","imageHeight","imageWidth","containerRatio","imageRatio","calculateDimension","factor","marginFactor","margin","separatorPositionX","touch","timeouts","cb","eventListeners","listener","l","_sfc_main$z","eventListener","activatorElement","activator","open","menu","children","minSize","activatorSize","translation","translationDirection","buttonSize","_sfc_main$y","_sfc_main$x","BaseIcon","_sfc_main$w","_sfc_main$v","_sfc_main$u","_sfc_main$t","_sfc_main$s","_sfc_main$r","_sfc_main$q","_sfc_main$p","_sfc_main$o","_sfc_main$n","_sfc_main$m","_sfc_main$l","_sfc_main$k","_sfc_main$j","_sfc_main$i","_sfc_main$h","_sfc_main$g","_sfc_main$f","_sfc_main$e","_sfc_main$d","_sfc_main$c","_sfc_main$b","_sfc_main$a","_sfc_main$9","_sfc_main$8","_sfc_main$7","_sfc_main$6","_sfc_main$5","SvgIcons","Bim","Blur","Compare","ConcretePump","Excavator","DroneView","Dumper","Evercam","EvercamLogo","FlatbedSemiTrailer","FreeDrawing","IModel","Inspection","Loader","MiniModel","OtherTruck","RoadVehicle","Roller","Robot","SemiTrailer","SkidSteerLoader","SmallTruck","TankTruck","The360","TippingTruck","TruckHead","TruckMixer","Worker","ZohoCrm","camelToKebabCase","iconName","eSvgIcons","_sfc_main$4","_sfc_main$2","_sfc_main$1","optionValue","dynamicClasses","inactivityListener","reminders","currentReminder","onMouseMove","_sfc_main","query","objects","currentPath","valueMatches","arrayMatches","objectMatches","ctrlKey","shiftKey","fKey","esc","searchField","components","EAvatar","EBadge","ERow","ECol","EVideoPlayer","ETimeline","EVideoEmbed","EHoursHeatmap","EReadMore","ETruncatedDiv","EImagesComparator","EToggleSwitch","EExpandableMenu","EGlobalSearch","ESvgIcon","ECalendarHeatmap","EFlagIcon","mixins","definition"],"mappings":"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AAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;;;;AC5LJ,SAAO,eAAwBN,GAAA,cAAc;AAAA,IACzC,OAAO;AAAA,EACX,CAAC,GACD,OAAO,eAAe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","x_google_ignoreList":[3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}