@evercam/ui 0.0.62 → 0.0.63-Add-timeline-tests-1aaeb4ea7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +0 -2
  3. package/dist/attributes.json +530 -25
  4. package/dist/components/EActionButton.vue.d.ts +17 -0
  5. package/dist/components/EAvatar.vue.d.ts +2 -0
  6. package/dist/components/ECopyToClipboardBtn.vue.d.ts +31 -0
  7. package/dist/components/EDialog.vue.d.ts +3 -0
  8. package/dist/components/EEvercamLogo.vue.d.ts +6 -0
  9. package/dist/components/EExpandableMenu.vue.d.ts +10 -7
  10. package/dist/components/EFadeTransition.vue.d.ts +7 -0
  11. package/dist/components/EFeedackButton.vue.d.ts +38 -0
  12. package/dist/components/EFlagIcon.vue.d.ts +3 -0
  13. package/dist/components/EGlobalSearch.vue.d.ts +1 -0
  14. package/dist/components/EHeatmapBar.vue.d.ts +13 -2
  15. package/dist/components/EImagePlayer.vue.d.ts +127 -0
  16. package/dist/components/EImagesComparator.vue.d.ts +31 -0
  17. package/dist/components/ELayout.vue.d.ts +32 -0
  18. package/dist/components/EPulsatingDot.vue.d.ts +19 -0
  19. package/dist/components/ERadioGroup.vue.d.ts +22 -0
  20. package/dist/components/EToggleSwitch.vue.d.ts +11 -13
  21. package/dist/components/ETooltip.vue.d.ts +12 -0
  22. package/dist/components/EVideoPlayer.vue.d.ts +0 -1
  23. package/dist/components/EVoiceInput.vue.d.ts +49 -0
  24. package/dist/components/EVoiceInputVolumeIndicator.vue.d.ts +13 -0
  25. package/dist/components/EZoomSlider.vue.d.ts +5 -0
  26. package/dist/components/EZoomableImg.vue.d.ts +160 -0
  27. package/dist/components/charts/ECursor.vue.d.ts +74 -0
  28. package/dist/components/charts/ECursorBehavior.vue.d.ts +21 -0
  29. package/dist/components/charts/ETimelineGroupContainer.vue.d.ts +90 -0
  30. package/dist/components/charts/ETimelineRectsChart.vue.d.ts +111 -0
  31. package/dist/components/charts/ETimelineSVGDefs.vue.d.ts +3 -0
  32. package/dist/components/charts/EXAxis.vue.d.ts +83 -0
  33. package/dist/components/charts/EXAxisBackground.vue.d.ts +69 -0
  34. package/dist/components/charts/EXAxisDetailed.vue.d.ts +69 -0
  35. package/dist/components/charts/EXAxisOverview.vue.d.ts +69 -0
  36. package/dist/components/charts/EZoomBehavior.vue.d.ts +58 -0
  37. package/dist/components/charts/constants.d.ts +64 -0
  38. package/dist/components/chat/EChat.vue.d.ts +54 -0
  39. package/dist/components/chat/EChatBody.vue.d.ts +21 -0
  40. package/dist/components/chat/EChatFooter.vue.d.ts +9 -0
  41. package/dist/components/chat/EChatHeader.vue.d.ts +11 -0
  42. package/dist/components/chat/EChatInput.vue.d.ts +28 -0
  43. package/dist/components/chat/EChatMessage.vue.d.ts +38 -0
  44. package/dist/components/chat/EChatMessageActions.vue.d.ts +19 -0
  45. package/dist/components/chat/EChatSuggestionCard.vue.d.ts +13 -0
  46. package/dist/components/chat/EChatWrapper.vue.d.ts +9 -0
  47. package/dist/components/chat/EMarkdown.vue.d.ts +27 -0
  48. package/dist/components/chat/MarkdownProcessor.d.ts +59 -0
  49. package/dist/components/svgIcons/Robot.vue.d.ts +3 -0
  50. package/dist/components/svgIcons/Tag.vue.d.ts +6 -0
  51. package/dist/components/svgIcons/TagPlus.vue.d.ts +6 -0
  52. package/dist/components/svgIcons/index.d.ts +8 -2
  53. package/dist/components/{ETimeline.config.d.ts → timeline/ETimeline.config.d.ts} +1 -1
  54. package/dist/components/{ETimeline.vue.d.ts → timeline/ETimeline.vue.d.ts} +43 -139
  55. package/dist/components/timeline/ETimelineCursor.vue.d.ts +9 -0
  56. package/dist/components/timeline/ETimelineMarker.vue.d.ts +17 -0
  57. package/dist/components/timeline/ETimelineMarkers.vue.d.ts +31 -0
  58. package/dist/components/{ETimelineMilestone.vue.d.ts → timeline/ETimelineMilestone.vue.d.ts} +53 -17
  59. package/dist/components/timeline/ETimelineSelectedTimestampCursor.vue.d.ts +9 -0
  60. package/dist/constants.d.ts +4 -2
  61. package/dist/directives/clickOutside.d.ts +3 -0
  62. package/dist/directives/index.d.ts +3 -2
  63. package/dist/index.d.ts +604 -160
  64. package/dist/index.mjs +15505 -5592
  65. package/dist/index.mjs.map +1 -1
  66. package/dist/index.umd.js +22 -14
  67. package/dist/index.umd.js.map +1 -1
  68. package/dist/mixins/event-listeners.d.ts +2 -0
  69. package/dist/mixins/inactivity-listener.d.ts +10 -6
  70. package/dist/style.css +1 -1
  71. package/dist/styles.css +28386 -27327
  72. package/dist/tags.json +173 -9
  73. package/dist/types.d.ts +98 -5
  74. package/dist/utils.d.ts +9 -0
  75. package/dist/web-types.json +1181 -57
  76. package/package.json +30 -15
  77. package/dist/components/charts/classNames.d.ts +0 -7
  78. /package/dist/directives/{resize-observer.d.ts → resizeObserver.d.ts} +0 -0
@@ -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.base, 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(clearTimeout)\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 $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 $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\n beforeDestroy() {\n this.$removeInactivityListeners()\n },\n methods: {\n resetInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\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 }\n },\n\n $registerInactivityListener({\n callback = () => {},\n duration = 0,\n reminders = [],\n }: InactivityListenerMixinProps) {\n this.resetInactivityListenerTimer(callback, duration, reminders)\n this.$addEventListener(\"mousemove\", () =>\n this.resetInactivityListenerTimer(callback, duration, reminders)\n )\n },\n $removeInactivityListeners() {\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","_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","_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/tailwindcss/lib/util/negateValue.js","../node_modules/tailwindcss/lib/corePluginList.js","../node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/picocolors/picocolors.browser.js","../node_modules/tailwindcss/lib/util/log.js","../node_modules/tailwindcss/lib/public/colors.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","../node_modules/tailwindcss/colors.js","../node_modules/tailwindcss/lib/util/createPlugin.js","../node_modules/tailwindcss/lib/public/create-plugin.js","../node_modules/tailwindcss/plugin.js","../node_modules/lodash.merge/index.js","../node_modules/lodash.castarray/index.js","../node_modules/@tailwindcss/typography/src/styles.js","../node_modules/lodash.isplainobject/index.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/cssesc/cssesc.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../node_modules/util-deprecate/browser.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/parser.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/processor.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser/dist/index.js","../node_modules/@tailwindcss/typography/src/utils.js","../node_modules/@tailwindcss/typography/src/index.js","../tailwind.config.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/directives/resizeObserver.ts","../src/directives/clickOutside.ts","../src/directives/index.ts","../src/components/charts/constants.ts","../src/components/charts/utils.ts","../src/components/timeline/ETimelineMilestone.vue?vue&type=script&lang.ts","../src/components/timeline/ETimelineMarker.vue?vue&type=script&lang.ts","../src/components/timeline/ETimelineMarkers.vue?vue&type=script&lang.ts","../src/components/charts/EZoomBehavior.vue?vue&type=script&lang.ts","../src/components/charts/EXAxis.vue?vue&type=script&lang.ts","../src/components/timeline/ETimeline.config.ts","../src/components/charts/EXAxisOverview.vue?vue&type=script&lang.ts","../src/components/charts/EXAxisDetailed.vue?vue&type=script&lang.ts","../src/components/charts/EXAxisBackground.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineSVGDefs.vue?vue&type=script&lang.ts","../src/components/charts/ECursor.vue?vue&type=script&lang.ts","../src/components/timeline/ETimelineCursor.vue?vue&type=script&lang.ts","../src/components/timeline/ETimelineSelectedTimestampCursor.vue?vue&type=script&lang.ts","../src/components/charts/ECursorBehavior.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineGroupContainer.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineRectsChart.vue?vue&type=script&lang.ts","../src/components/timeline/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/Tag.vue?vue&type=script&lang.ts","../src/components/svgIcons/TagPlus.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/components/ETooltip.vue?vue&type=script&lang.ts","../src/components/EActionButton.vue?vue&type=script&lang.ts","../src/components/EZoomSlider.vue?vue&type=script&lang.ts","../src/components/EFadeTransition.vue?vue&type=script&lang.ts","../src/components/EZoomableImg.vue?vue&type=script&lang.ts","../src/components/EImagePlayer.vue?vue&type=script&lang.ts","../src/components/ELayout.vue?vue&type=script&lang.ts","../src/components/chat/EChatWrapper.vue?vue&type=script&lang.ts","../src/components/EEvercamLogo.vue?vue&type=script&lang.ts","../src/components/chat/EChatHeader.vue?vue&type=script&lang.ts","../src/components/chat/EChatBody.vue?vue&type=script&lang.ts","../src/components/EPulsatingDot.vue?vue&type=script&lang.ts","../node_modules/typewriter-effect/dist/core.js","../src/components/chat/MarkdownProcessor.ts","../src/components/chat/EMarkdown.vue?vue&type=script&lang.ts","../src/components/ECopyToClipboardBtn.vue?vue&type=script&lang.ts","../src/components/EDialog.vue?vue&type=script&lang.ts","../src/components/EFeedackButton.vue?vue&type=script&lang.ts","../src/components/chat/EChatMessageActions.vue?vue&type=script&lang.ts","../src/components/chat/EChatMessage.vue?vue&type=script&lang.ts","../src/components/chat/EChatFooter.vue?vue&type=script&lang.ts","../src/components/EVoiceInputVolumeIndicator.vue?vue&type=script&lang.ts","../src/components/EVoiceInput.vue?vue&type=script&lang.ts","../src/components/chat/EChatInput.vue?vue&type=script&lang.ts","../src/components/chat/EChatSuggestionCard.vue?vue&type=script&lang.ts","../src/components/chat/EChat.vue?vue&type=script&lang.ts","../src/components/ERadioGroup.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 \"2xs\" = \"2xs\",\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 gray = \"gray\",\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 id?: string | number\n name: string\n count: number\n value: string | number\n itemClass?: string | Record<string, boolean>\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 | number\n timezone?: string\n}\n\nexport type D3DateParams = {\n date: Date | string\n timezone?: string\n}\n\nexport type TimelineDomain = Date[] | string[]\n\nexport enum ImageQuality {\n _360 = \"360\",\n _480 = \"480\",\n _720 = \"720\",\n _1080 = \"1080\",\n auto = \"auto\",\n}\n\nexport type SrcSet = { [q in ImageQuality]: string }\n\nexport interface Frame {\n label: string\n src: string\n srcSet?: SrcSet\n timestamp: Timestamp\n}\n\nexport enum Position {\n top = \"top\",\n right = \"right\",\n bottom = \"bottom\",\n left = \"left\",\n}\n\nexport enum ChatMessageRole {\n System = \"system\",\n Copilot = \"copilot\",\n User = \"user\",\n}\n\nexport enum ChatMessageType {\n Text = \"text\",\n Error = \"error\",\n Json = \"json\",\n}\n\nexport type ChatMessageAnnotation = {\n index: number\n text: string\n url?: string\n [key: string]: unknown\n}\n\nexport interface ChatMessage {\n id: number\n role: ChatMessageRole\n content: string | string[] | Record<string, unknown>\n timestamp?: Timestamp\n isLoading?: boolean\n type?: ChatMessageType\n data?: unknown\n annotations?: ChatMessageAnnotation[]\n withActions?: boolean\n}\n\nexport interface ChatSuggestion {\n type: string\n text: string\n icon: string\n color?: string\n width?: number\n display?: \"row\" | \"column\"\n}\n\nexport enum FeedbackType {\n positive = \"positive\",\n negative = \"negative\",\n}\n\nexport type DialogAction = {\n label: string\n id?: string | number\n closeOnClick?: boolean\n}\n\nexport type Feedback = {\n type: FeedbackType\n message: string\n [key: string]: unknown\n}\n\nexport type EMarkdownRegex = {\n regex: RegExp\n type: string\n}\n\nexport type EMarkdownRegexMatch = { match: string; type: string }\n\nexport type ESelectionGroupOption = {\n label: string\n value: unknown\n disabled?: boolean\n}\n\nexport type ERadioGroupOption = ESelectionGroupOption & {\n description?: string\n}\n\nexport type EToggleSwitchOption = ESelectionGroupOption\n\nexport type CssClassMap = Record<string, boolean>\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 backgroundClasses: {\n type: String,\n default: \"e-bg-gradient-to-r e-from-purple-500 e-to-indigo-500\",\n },\n },\n data() {\n return {\n sizes: {\n [Size[\"2xs\"]]: \"e-w-6 e-h-6 e-text-xs\",\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 const imageClasses = this.image ? \"e-rounded-full e-overflow-hidden\" : \"\"\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-text-white e-font-medium\",\n sizeClasses,\n imageClasses,\n this.backgroundClasses,\n ]\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 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","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","\"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 } else 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 isEscaped = isEscaped ? false : char === \"\\\\\";\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 normalizeAttributeSelectors: function() {\n return normalizeAttributeSelectors;\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// - https://www.w3.org/TR/css-anchor-position-1\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 \"anchor-name\",\n \"anchor-scope\",\n \"position-anchor\",\n \"position-try-options\",\n // Shorthand properties\n \"scroll-timeline\",\n \"animation-timeline\",\n \"view-timeline\",\n \"position-try\"\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}\nfunction normalizeAttributeSelectors(value) {\n // Wrap values in attribute selectors with quotes\n if (value.includes(\"=\")) {\n value = value.replace(/(=.*)/g, (_fullMatch, match)=>{\n if (match[1] === \"'\" || match[1] === '\"') {\n return match;\n }\n // Handle regex flags on unescaped values\n if (match.length > 2) {\n let trailingCharacter = match[match.length - 1];\n if (match[match.length - 2] === \" \" && (trailingCharacter === \"i\" || trailingCharacter === \"I\" || trailingCharacter === \"s\" || trailingCharacter === \"S\")) {\n return `=\"${match.slice(1, -2)}\" ${match[match.length - 1]}`;\n }\n }\n return `=\"${match.slice(1)}\"`;\n });\n }\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>/g, 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: '',\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","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\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 createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\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 _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * lodash 4.4.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = castArray;\n","const colors = require('tailwindcss/colors')\n\nconst round = (num) =>\n num\n .toFixed(7)\n .replace(/(\\.[0-9]+?)0+$/, '$1')\n .replace(/\\.0$/, '')\nconst rem = (px) => `${round(px / 16)}rem`\nconst em = (px, base) => `${round(px / base)}em`\nconst hexToRgb = (hex) => {\n hex = hex.replace('#', '')\n hex = hex.length === 3 ? hex.replace(/./g, '$&$&') : hex\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n return `${r} ${g} ${b}`\n}\n\nlet defaultModifiers = {\n sm: {\n css: [\n {\n fontSize: rem(14),\n lineHeight: round(24 / 14),\n p: {\n marginTop: em(16, 14),\n marginBottom: em(16, 14),\n },\n '[class~=\"lead\"]': {\n fontSize: em(18, 14),\n lineHeight: round(28 / 18),\n marginTop: em(16, 18),\n marginBottom: em(16, 18),\n },\n blockquote: {\n marginTop: em(24, 18),\n marginBottom: em(24, 18),\n paddingInlineStart: em(20, 18),\n },\n h1: {\n fontSize: em(30, 14),\n marginTop: '0',\n marginBottom: em(24, 30),\n lineHeight: round(36 / 30),\n },\n h2: {\n fontSize: em(20, 14),\n marginTop: em(32, 20),\n marginBottom: em(16, 20),\n lineHeight: round(28 / 20),\n },\n h3: {\n fontSize: em(18, 14),\n marginTop: em(28, 18),\n marginBottom: em(8, 18),\n lineHeight: round(28 / 18),\n },\n h4: {\n marginTop: em(20, 14),\n marginBottom: em(8, 14),\n lineHeight: round(20 / 14),\n },\n img: {\n marginTop: em(24, 14),\n marginBottom: em(24, 14),\n },\n picture: {\n marginTop: em(24, 14),\n marginBottom: em(24, 14),\n },\n 'picture > img': {\n marginTop: '0',\n marginBottom: '0',\n },\n video: {\n marginTop: em(24, 14),\n marginBottom: em(24, 14),\n },\n kbd: {\n fontSize: em(12, 14),\n borderRadius: rem(5),\n paddingTop: em(2, 14),\n paddingInlineEnd: em(5, 14),\n paddingBottom: em(2, 14),\n paddingInlineStart: em(5, 14),\n },\n code: {\n fontSize: em(12, 14),\n },\n 'h2 code': {\n fontSize: em(18, 20),\n },\n 'h3 code': {\n fontSize: em(16, 18),\n },\n pre: {\n fontSize: em(12, 14),\n lineHeight: round(20 / 12),\n marginTop: em(20, 12),\n marginBottom: em(20, 12),\n borderRadius: rem(4),\n paddingTop: em(8, 12),\n paddingInlineEnd: em(12, 12),\n paddingBottom: em(8, 12),\n paddingInlineStart: em(12, 12),\n },\n ol: {\n marginTop: em(16, 14),\n marginBottom: em(16, 14),\n paddingInlineStart: em(22, 14),\n },\n ul: {\n marginTop: em(16, 14),\n marginBottom: em(16, 14),\n paddingInlineStart: em(22, 14),\n },\n li: {\n marginTop: em(4, 14),\n marginBottom: em(4, 14),\n },\n 'ol > li': {\n paddingInlineStart: em(6, 14),\n },\n 'ul > li': {\n paddingInlineStart: em(6, 14),\n },\n '> ul > li p': {\n marginTop: em(8, 14),\n marginBottom: em(8, 14),\n },\n '> ul > li > p:first-child': {\n marginTop: em(16, 14),\n },\n '> ul > li > p:last-child': {\n marginBottom: em(16, 14),\n },\n '> ol > li > p:first-child': {\n marginTop: em(16, 14),\n },\n '> ol > li > p:last-child': {\n marginBottom: em(16, 14),\n },\n 'ul ul, ul ol, ol ul, ol ol': {\n marginTop: em(8, 14),\n marginBottom: em(8, 14),\n },\n dl: {\n marginTop: em(16, 14),\n marginBottom: em(16, 14),\n },\n dt: {\n marginTop: em(16, 14),\n },\n dd: {\n marginTop: em(4, 14),\n paddingInlineStart: em(22, 14),\n },\n hr: {\n marginTop: em(40, 14),\n marginBottom: em(40, 14),\n },\n 'hr + *': {\n marginTop: '0',\n },\n 'h2 + *': {\n marginTop: '0',\n },\n 'h3 + *': {\n marginTop: '0',\n },\n 'h4 + *': {\n marginTop: '0',\n },\n table: {\n fontSize: em(12, 14),\n lineHeight: round(18 / 12),\n },\n 'thead th': {\n paddingInlineEnd: em(12, 12),\n paddingBottom: em(8, 12),\n paddingInlineStart: em(12, 12),\n },\n 'thead th:first-child': {\n paddingInlineStart: '0',\n },\n 'thead th:last-child': {\n paddingInlineEnd: '0',\n },\n 'tbody td, tfoot td': {\n paddingTop: em(8, 12),\n paddingInlineEnd: em(12, 12),\n paddingBottom: em(8, 12),\n paddingInlineStart: em(12, 12),\n },\n 'tbody td:first-child, tfoot td:first-child': {\n paddingInlineStart: '0',\n },\n 'tbody td:last-child, tfoot td:last-child': {\n paddingInlineEnd: '0',\n },\n figure: {\n marginTop: em(24, 14),\n marginBottom: em(24, 14),\n },\n 'figure > *': {\n marginTop: '0',\n marginBottom: '0',\n },\n figcaption: {\n fontSize: em(12, 14),\n lineHeight: round(16 / 12),\n marginTop: em(8, 12),\n },\n },\n {\n '> :first-child': {\n marginTop: '0',\n },\n '> :last-child': {\n marginBottom: '0',\n },\n },\n ],\n },\n base: {\n css: [\n {\n fontSize: rem(16),\n lineHeight: round(28 / 16),\n p: {\n marginTop: em(20, 16),\n marginBottom: em(20, 16),\n },\n '[class~=\"lead\"]': {\n fontSize: em(20, 16),\n lineHeight: round(32 / 20),\n marginTop: em(24, 20),\n marginBottom: em(24, 20),\n },\n blockquote: {\n marginTop: em(32, 20),\n marginBottom: em(32, 20),\n paddingInlineStart: em(20, 20),\n },\n h1: {\n fontSize: em(36, 16),\n marginTop: '0',\n marginBottom: em(32, 36),\n lineHeight: round(40 / 36),\n },\n h2: {\n fontSize: em(24, 16),\n marginTop: em(48, 24),\n marginBottom: em(24, 24),\n lineHeight: round(32 / 24),\n },\n h3: {\n fontSize: em(20, 16),\n marginTop: em(32, 20),\n marginBottom: em(12, 20),\n lineHeight: round(32 / 20),\n },\n h4: {\n marginTop: em(24, 16),\n marginBottom: em(8, 16),\n lineHeight: round(24 / 16),\n },\n img: {\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n },\n picture: {\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n },\n 'picture > img': {\n marginTop: '0',\n marginBottom: '0',\n },\n video: {\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n },\n kbd: {\n fontSize: em(14, 16),\n borderRadius: rem(5),\n paddingTop: em(3, 16),\n paddingInlineEnd: em(6, 16),\n paddingBottom: em(3, 16),\n paddingInlineStart: em(6, 16),\n },\n code: {\n fontSize: em(14, 16),\n },\n 'h2 code': {\n fontSize: em(21, 24),\n },\n 'h3 code': {\n fontSize: em(18, 20),\n },\n pre: {\n fontSize: em(14, 16),\n lineHeight: round(24 / 14),\n marginTop: em(24, 14),\n marginBottom: em(24, 14),\n borderRadius: rem(6),\n paddingTop: em(12, 14),\n paddingInlineEnd: em(16, 14),\n paddingBottom: em(12, 14),\n paddingInlineStart: em(16, 14),\n },\n ol: {\n marginTop: em(20, 16),\n marginBottom: em(20, 16),\n paddingInlineStart: em(26, 16),\n },\n ul: {\n marginTop: em(20, 16),\n marginBottom: em(20, 16),\n paddingInlineStart: em(26, 16),\n },\n li: {\n marginTop: em(8, 16),\n marginBottom: em(8, 16),\n },\n 'ol > li': {\n paddingInlineStart: em(6, 16),\n },\n 'ul > li': {\n paddingInlineStart: em(6, 16),\n },\n '> ul > li p': {\n marginTop: em(12, 16),\n marginBottom: em(12, 16),\n },\n '> ul > li > p:first-child': {\n marginTop: em(20, 16),\n },\n '> ul > li > p:last-child': {\n marginBottom: em(20, 16),\n },\n '> ol > li > p:first-child': {\n marginTop: em(20, 16),\n },\n '> ol > li > p:last-child': {\n marginBottom: em(20, 16),\n },\n 'ul ul, ul ol, ol ul, ol ol': {\n marginTop: em(12, 16),\n marginBottom: em(12, 16),\n },\n dl: {\n marginTop: em(20, 16),\n marginBottom: em(20, 16),\n },\n dt: {\n marginTop: em(20, 16),\n },\n dd: {\n marginTop: em(8, 16),\n paddingInlineStart: em(26, 16),\n },\n hr: {\n marginTop: em(48, 16),\n marginBottom: em(48, 16),\n },\n 'hr + *': {\n marginTop: '0',\n },\n 'h2 + *': {\n marginTop: '0',\n },\n 'h3 + *': {\n marginTop: '0',\n },\n 'h4 + *': {\n marginTop: '0',\n },\n table: {\n fontSize: em(14, 16),\n lineHeight: round(24 / 14),\n },\n 'thead th': {\n paddingInlineEnd: em(8, 14),\n paddingBottom: em(8, 14),\n paddingInlineStart: em(8, 14),\n },\n 'thead th:first-child': {\n paddingInlineStart: '0',\n },\n 'thead th:last-child': {\n paddingInlineEnd: '0',\n },\n 'tbody td, tfoot td': {\n paddingTop: em(8, 14),\n paddingInlineEnd: em(8, 14),\n paddingBottom: em(8, 14),\n paddingInlineStart: em(8, 14),\n },\n 'tbody td:first-child, tfoot td:first-child': {\n paddingInlineStart: '0',\n },\n 'tbody td:last-child, tfoot td:last-child': {\n paddingInlineEnd: '0',\n },\n figure: {\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n },\n 'figure > *': {\n marginTop: '0',\n marginBottom: '0',\n },\n figcaption: {\n fontSize: em(14, 16),\n lineHeight: round(20 / 14),\n marginTop: em(12, 14),\n },\n },\n {\n '> :first-child': {\n marginTop: '0',\n },\n '> :last-child': {\n marginBottom: '0',\n },\n },\n ],\n },\n lg: {\n css: [\n {\n fontSize: rem(18),\n lineHeight: round(32 / 18),\n p: {\n marginTop: em(24, 18),\n marginBottom: em(24, 18),\n },\n '[class~=\"lead\"]': {\n fontSize: em(22, 18),\n lineHeight: round(32 / 22),\n marginTop: em(24, 22),\n marginBottom: em(24, 22),\n },\n blockquote: {\n marginTop: em(40, 24),\n marginBottom: em(40, 24),\n paddingInlineStart: em(24, 24),\n },\n h1: {\n fontSize: em(48, 18),\n marginTop: '0',\n marginBottom: em(40, 48),\n lineHeight: round(48 / 48),\n },\n h2: {\n fontSize: em(30, 18),\n marginTop: em(56, 30),\n marginBottom: em(32, 30),\n lineHeight: round(40 / 30),\n },\n h3: {\n fontSize: em(24, 18),\n marginTop: em(40, 24),\n marginBottom: em(16, 24),\n lineHeight: round(36 / 24),\n },\n h4: {\n marginTop: em(32, 18),\n marginBottom: em(8, 18),\n lineHeight: round(28 / 18),\n },\n img: {\n marginTop: em(32, 18),\n marginBottom: em(32, 18),\n },\n picture: {\n marginTop: em(32, 18),\n marginBottom: em(32, 18),\n },\n 'picture > img': {\n marginTop: '0',\n marginBottom: '0',\n },\n video: {\n marginTop: em(32, 18),\n marginBottom: em(32, 18),\n },\n kbd: {\n fontSize: em(16, 18),\n borderRadius: rem(5),\n paddingTop: em(4, 18),\n paddingInlineEnd: em(8, 18),\n paddingBottom: em(4, 18),\n paddingInlineStart: em(8, 18),\n },\n code: {\n fontSize: em(16, 18),\n },\n 'h2 code': {\n fontSize: em(26, 30),\n },\n 'h3 code': {\n fontSize: em(21, 24),\n },\n pre: {\n fontSize: em(16, 18),\n lineHeight: round(28 / 16),\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n borderRadius: rem(6),\n paddingTop: em(16, 16),\n paddingInlineEnd: em(24, 16),\n paddingBottom: em(16, 16),\n paddingInlineStart: em(24, 16),\n },\n ol: {\n marginTop: em(24, 18),\n marginBottom: em(24, 18),\n paddingInlineStart: em(28, 18),\n },\n ul: {\n marginTop: em(24, 18),\n marginBottom: em(24, 18),\n paddingInlineStart: em(28, 18),\n },\n li: {\n marginTop: em(12, 18),\n marginBottom: em(12, 18),\n },\n 'ol > li': {\n paddingInlineStart: em(8, 18),\n },\n 'ul > li': {\n paddingInlineStart: em(8, 18),\n },\n '> ul > li p': {\n marginTop: em(16, 18),\n marginBottom: em(16, 18),\n },\n '> ul > li > p:first-child': {\n marginTop: em(24, 18),\n },\n '> ul > li > p:last-child': {\n marginBottom: em(24, 18),\n },\n '> ol > li > p:first-child': {\n marginTop: em(24, 18),\n },\n '> ol > li > p:last-child': {\n marginBottom: em(24, 18),\n },\n 'ul ul, ul ol, ol ul, ol ol': {\n marginTop: em(16, 18),\n marginBottom: em(16, 18),\n },\n dl: {\n marginTop: em(24, 18),\n marginBottom: em(24, 18),\n },\n dt: {\n marginTop: em(24, 18),\n },\n dd: {\n marginTop: em(12, 18),\n paddingInlineStart: em(28, 18),\n },\n hr: {\n marginTop: em(56, 18),\n marginBottom: em(56, 18),\n },\n 'hr + *': {\n marginTop: '0',\n },\n 'h2 + *': {\n marginTop: '0',\n },\n 'h3 + *': {\n marginTop: '0',\n },\n 'h4 + *': {\n marginTop: '0',\n },\n table: {\n fontSize: em(16, 18),\n lineHeight: round(24 / 16),\n },\n 'thead th': {\n paddingInlineEnd: em(12, 16),\n paddingBottom: em(12, 16),\n paddingInlineStart: em(12, 16),\n },\n 'thead th:first-child': {\n paddingInlineStart: '0',\n },\n 'thead th:last-child': {\n paddingInlineEnd: '0',\n },\n 'tbody td, tfoot td': {\n paddingTop: em(12, 16),\n paddingInlineEnd: em(12, 16),\n paddingBottom: em(12, 16),\n paddingInlineStart: em(12, 16),\n },\n 'tbody td:first-child, tfoot td:first-child': {\n paddingInlineStart: '0',\n },\n 'tbody td:last-child, tfoot td:last-child': {\n paddingInlineEnd: '0',\n },\n figure: {\n marginTop: em(32, 18),\n marginBottom: em(32, 18),\n },\n 'figure > *': {\n marginTop: '0',\n marginBottom: '0',\n },\n figcaption: {\n fontSize: em(16, 18),\n lineHeight: round(24 / 16),\n marginTop: em(16, 16),\n },\n },\n {\n '> :first-child': {\n marginTop: '0',\n },\n '> :last-child': {\n marginBottom: '0',\n },\n },\n ],\n },\n xl: {\n css: [\n {\n fontSize: rem(20),\n lineHeight: round(36 / 20),\n p: {\n marginTop: em(24, 20),\n marginBottom: em(24, 20),\n },\n '[class~=\"lead\"]': {\n fontSize: em(24, 20),\n lineHeight: round(36 / 24),\n marginTop: em(24, 24),\n marginBottom: em(24, 24),\n },\n blockquote: {\n marginTop: em(48, 30),\n marginBottom: em(48, 30),\n paddingInlineStart: em(32, 30),\n },\n h1: {\n fontSize: em(56, 20),\n marginTop: '0',\n marginBottom: em(48, 56),\n lineHeight: round(56 / 56),\n },\n h2: {\n fontSize: em(36, 20),\n marginTop: em(56, 36),\n marginBottom: em(32, 36),\n lineHeight: round(40 / 36),\n },\n h3: {\n fontSize: em(30, 20),\n marginTop: em(48, 30),\n marginBottom: em(20, 30),\n lineHeight: round(40 / 30),\n },\n h4: {\n marginTop: em(36, 20),\n marginBottom: em(12, 20),\n lineHeight: round(32 / 20),\n },\n img: {\n marginTop: em(40, 20),\n marginBottom: em(40, 20),\n },\n picture: {\n marginTop: em(40, 20),\n marginBottom: em(40, 20),\n },\n 'picture > img': {\n marginTop: '0',\n marginBottom: '0',\n },\n video: {\n marginTop: em(40, 20),\n marginBottom: em(40, 20),\n },\n kbd: {\n fontSize: em(18, 20),\n borderRadius: rem(5),\n paddingTop: em(5, 20),\n paddingInlineEnd: em(8, 20),\n paddingBottom: em(5, 20),\n paddingInlineStart: em(8, 20),\n },\n code: {\n fontSize: em(18, 20),\n },\n 'h2 code': {\n fontSize: em(31, 36),\n },\n 'h3 code': {\n fontSize: em(27, 30),\n },\n pre: {\n fontSize: em(18, 20),\n lineHeight: round(32 / 18),\n marginTop: em(36, 18),\n marginBottom: em(36, 18),\n borderRadius: rem(8),\n paddingTop: em(20, 18),\n paddingInlineEnd: em(24, 18),\n paddingBottom: em(20, 18),\n paddingInlineStart: em(24, 18),\n },\n ol: {\n marginTop: em(24, 20),\n marginBottom: em(24, 20),\n paddingInlineStart: em(32, 20),\n },\n ul: {\n marginTop: em(24, 20),\n marginBottom: em(24, 20),\n paddingInlineStart: em(32, 20),\n },\n li: {\n marginTop: em(12, 20),\n marginBottom: em(12, 20),\n },\n 'ol > li': {\n paddingInlineStart: em(8, 20),\n },\n 'ul > li': {\n paddingInlineStart: em(8, 20),\n },\n '> ul > li p': {\n marginTop: em(16, 20),\n marginBottom: em(16, 20),\n },\n '> ul > li > p:first-child': {\n marginTop: em(24, 20),\n },\n '> ul > li > p:last-child': {\n marginBottom: em(24, 20),\n },\n '> ol > li > p:first-child': {\n marginTop: em(24, 20),\n },\n '> ol > li > p:last-child': {\n marginBottom: em(24, 20),\n },\n 'ul ul, ul ol, ol ul, ol ol': {\n marginTop: em(16, 20),\n marginBottom: em(16, 20),\n },\n dl: {\n marginTop: em(24, 20),\n marginBottom: em(24, 20),\n },\n dt: {\n marginTop: em(24, 20),\n },\n dd: {\n marginTop: em(12, 20),\n paddingInlineStart: em(32, 20),\n },\n hr: {\n marginTop: em(56, 20),\n marginBottom: em(56, 20),\n },\n 'hr + *': {\n marginTop: '0',\n },\n 'h2 + *': {\n marginTop: '0',\n },\n 'h3 + *': {\n marginTop: '0',\n },\n 'h4 + *': {\n marginTop: '0',\n },\n table: {\n fontSize: em(18, 20),\n lineHeight: round(28 / 18),\n },\n 'thead th': {\n paddingInlineEnd: em(12, 18),\n paddingBottom: em(16, 18),\n paddingInlineStart: em(12, 18),\n },\n 'thead th:first-child': {\n paddingInlineStart: '0',\n },\n 'thead th:last-child': {\n paddingInlineEnd: '0',\n },\n 'tbody td, tfoot td': {\n paddingTop: em(16, 18),\n paddingInlineEnd: em(12, 18),\n paddingBottom: em(16, 18),\n paddingInlineStart: em(12, 18),\n },\n 'tbody td:first-child, tfoot td:first-child': {\n paddingInlineStart: '0',\n },\n 'tbody td:last-child, tfoot td:last-child': {\n paddingInlineEnd: '0',\n },\n figure: {\n marginTop: em(40, 20),\n marginBottom: em(40, 20),\n },\n 'figure > *': {\n marginTop: '0',\n marginBottom: '0',\n },\n figcaption: {\n fontSize: em(18, 20),\n lineHeight: round(28 / 18),\n marginTop: em(18, 18),\n },\n },\n {\n '> :first-child': {\n marginTop: '0',\n },\n '> :last-child': {\n marginBottom: '0',\n },\n },\n ],\n },\n '2xl': {\n css: [\n {\n fontSize: rem(24),\n lineHeight: round(40 / 24),\n p: {\n marginTop: em(32, 24),\n marginBottom: em(32, 24),\n },\n '[class~=\"lead\"]': {\n fontSize: em(30, 24),\n lineHeight: round(44 / 30),\n marginTop: em(32, 30),\n marginBottom: em(32, 30),\n },\n blockquote: {\n marginTop: em(64, 36),\n marginBottom: em(64, 36),\n paddingInlineStart: em(40, 36),\n },\n h1: {\n fontSize: em(64, 24),\n marginTop: '0',\n marginBottom: em(56, 64),\n lineHeight: round(64 / 64),\n },\n h2: {\n fontSize: em(48, 24),\n marginTop: em(72, 48),\n marginBottom: em(40, 48),\n lineHeight: round(52 / 48),\n },\n h3: {\n fontSize: em(36, 24),\n marginTop: em(56, 36),\n marginBottom: em(24, 36),\n lineHeight: round(44 / 36),\n },\n h4: {\n marginTop: em(40, 24),\n marginBottom: em(16, 24),\n lineHeight: round(36 / 24),\n },\n img: {\n marginTop: em(48, 24),\n marginBottom: em(48, 24),\n },\n picture: {\n marginTop: em(48, 24),\n marginBottom: em(48, 24),\n },\n 'picture > img': {\n marginTop: '0',\n marginBottom: '0',\n },\n video: {\n marginTop: em(48, 24),\n marginBottom: em(48, 24),\n },\n kbd: {\n fontSize: em(20, 24),\n borderRadius: rem(6),\n paddingTop: em(6, 24),\n paddingInlineEnd: em(8, 24),\n paddingBottom: em(6, 24),\n paddingInlineStart: em(8, 24),\n },\n code: {\n fontSize: em(20, 24),\n },\n 'h2 code': {\n fontSize: em(42, 48),\n },\n 'h3 code': {\n fontSize: em(32, 36),\n },\n pre: {\n fontSize: em(20, 24),\n lineHeight: round(36 / 20),\n marginTop: em(40, 20),\n marginBottom: em(40, 20),\n borderRadius: rem(8),\n paddingTop: em(24, 20),\n paddingInlineEnd: em(32, 20),\n paddingBottom: em(24, 20),\n paddingInlineStart: em(32, 20),\n },\n ol: {\n marginTop: em(32, 24),\n marginBottom: em(32, 24),\n paddingInlineStart: em(38, 24),\n },\n ul: {\n marginTop: em(32, 24),\n marginBottom: em(32, 24),\n paddingInlineStart: em(38, 24),\n },\n li: {\n marginTop: em(12, 24),\n marginBottom: em(12, 24),\n },\n 'ol > li': {\n paddingInlineStart: em(10, 24),\n },\n 'ul > li': {\n paddingInlineStart: em(10, 24),\n },\n '> ul > li p': {\n marginTop: em(20, 24),\n marginBottom: em(20, 24),\n },\n '> ul > li > p:first-child': {\n marginTop: em(32, 24),\n },\n '> ul > li > p:last-child': {\n marginBottom: em(32, 24),\n },\n '> ol > li > p:first-child': {\n marginTop: em(32, 24),\n },\n '> ol > li > p:last-child': {\n marginBottom: em(32, 24),\n },\n 'ul ul, ul ol, ol ul, ol ol': {\n marginTop: em(16, 24),\n marginBottom: em(16, 24),\n },\n dl: {\n marginTop: em(32, 24),\n marginBottom: em(32, 24),\n },\n dt: {\n marginTop: em(32, 24),\n },\n dd: {\n marginTop: em(12, 24),\n paddingInlineStart: em(38, 24),\n },\n hr: {\n marginTop: em(72, 24),\n marginBottom: em(72, 24),\n },\n 'hr + *': {\n marginTop: '0',\n },\n 'h2 + *': {\n marginTop: '0',\n },\n 'h3 + *': {\n marginTop: '0',\n },\n 'h4 + *': {\n marginTop: '0',\n },\n table: {\n fontSize: em(20, 24),\n lineHeight: round(28 / 20),\n },\n 'thead th': {\n paddingInlineEnd: em(12, 20),\n paddingBottom: em(16, 20),\n paddingInlineStart: em(12, 20),\n },\n 'thead th:first-child': {\n paddingInlineStart: '0',\n },\n 'thead th:last-child': {\n paddingInlineEnd: '0',\n },\n 'tbody td, tfoot td': {\n paddingTop: em(16, 20),\n paddingInlineEnd: em(12, 20),\n paddingBottom: em(16, 20),\n paddingInlineStart: em(12, 20),\n },\n 'tbody td:first-child, tfoot td:first-child': {\n paddingInlineStart: '0',\n },\n 'tbody td:last-child, tfoot td:last-child': {\n paddingInlineEnd: '0',\n },\n figure: {\n marginTop: em(48, 24),\n marginBottom: em(48, 24),\n },\n 'figure > *': {\n marginTop: '0',\n marginBottom: '0',\n },\n figcaption: {\n fontSize: em(20, 24),\n lineHeight: round(32 / 20),\n marginTop: em(20, 20),\n },\n },\n {\n '> :first-child': {\n marginTop: '0',\n },\n '> :last-child': {\n marginBottom: '0',\n },\n },\n ],\n },\n\n // Gray color themes\n\n slate: {\n css: {\n '--tw-prose-body': colors.slate[700],\n '--tw-prose-headings': colors.slate[900],\n '--tw-prose-lead': colors.slate[600],\n '--tw-prose-links': colors.slate[900],\n '--tw-prose-bold': colors.slate[900],\n '--tw-prose-counters': colors.slate[500],\n '--tw-prose-bullets': colors.slate[300],\n '--tw-prose-hr': colors.slate[200],\n '--tw-prose-quotes': colors.slate[900],\n '--tw-prose-quote-borders': colors.slate[200],\n '--tw-prose-captions': colors.slate[500],\n '--tw-prose-kbd': colors.slate[900],\n '--tw-prose-kbd-shadows': hexToRgb(colors.slate[900]),\n '--tw-prose-code': colors.slate[900],\n '--tw-prose-pre-code': colors.slate[200],\n '--tw-prose-pre-bg': colors.slate[800],\n '--tw-prose-th-borders': colors.slate[300],\n '--tw-prose-td-borders': colors.slate[200],\n '--tw-prose-invert-body': colors.slate[300],\n '--tw-prose-invert-headings': colors.white,\n '--tw-prose-invert-lead': colors.slate[400],\n '--tw-prose-invert-links': colors.white,\n '--tw-prose-invert-bold': colors.white,\n '--tw-prose-invert-counters': colors.slate[400],\n '--tw-prose-invert-bullets': colors.slate[600],\n '--tw-prose-invert-hr': colors.slate[700],\n '--tw-prose-invert-quotes': colors.slate[100],\n '--tw-prose-invert-quote-borders': colors.slate[700],\n '--tw-prose-invert-captions': colors.slate[400],\n '--tw-prose-invert-kbd': colors.white,\n '--tw-prose-invert-kbd-shadows': hexToRgb(colors.white),\n '--tw-prose-invert-code': colors.white,\n '--tw-prose-invert-pre-code': colors.slate[300],\n '--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 50%)',\n '--tw-prose-invert-th-borders': colors.slate[600],\n '--tw-prose-invert-td-borders': colors.slate[700],\n },\n },\n\n gray: {\n css: {\n '--tw-prose-body': colors.gray[700],\n '--tw-prose-headings': colors.gray[900],\n '--tw-prose-lead': colors.gray[600],\n '--tw-prose-links': colors.gray[900],\n '--tw-prose-bold': colors.gray[900],\n '--tw-prose-counters': colors.gray[500],\n '--tw-prose-bullets': colors.gray[300],\n '--tw-prose-hr': colors.gray[200],\n '--tw-prose-quotes': colors.gray[900],\n '--tw-prose-quote-borders': colors.gray[200],\n '--tw-prose-captions': colors.gray[500],\n '--tw-prose-kbd': colors.gray[900],\n '--tw-prose-kbd-shadows': hexToRgb(colors.gray[900]),\n '--tw-prose-code': colors.gray[900],\n '--tw-prose-pre-code': colors.gray[200],\n '--tw-prose-pre-bg': colors.gray[800],\n '--tw-prose-th-borders': colors.gray[300],\n '--tw-prose-td-borders': colors.gray[200],\n '--tw-prose-invert-body': colors.gray[300],\n '--tw-prose-invert-headings': colors.white,\n '--tw-prose-invert-lead': colors.gray[400],\n '--tw-prose-invert-links': colors.white,\n '--tw-prose-invert-bold': colors.white,\n '--tw-prose-invert-counters': colors.gray[400],\n '--tw-prose-invert-bullets': colors.gray[600],\n '--tw-prose-invert-hr': colors.gray[700],\n '--tw-prose-invert-quotes': colors.gray[100],\n '--tw-prose-invert-quote-borders': colors.gray[700],\n '--tw-prose-invert-captions': colors.gray[400],\n '--tw-prose-invert-kbd': colors.white,\n '--tw-prose-invert-kbd-shadows': hexToRgb(colors.white),\n '--tw-prose-invert-code': colors.white,\n '--tw-prose-invert-pre-code': colors.gray[300],\n '--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 50%)',\n '--tw-prose-invert-th-borders': colors.gray[600],\n '--tw-prose-invert-td-borders': colors.gray[700],\n },\n },\n\n zinc: {\n css: {\n '--tw-prose-body': colors.zinc[700],\n '--tw-prose-headings': colors.zinc[900],\n '--tw-prose-lead': colors.zinc[600],\n '--tw-prose-links': colors.zinc[900],\n '--tw-prose-bold': colors.zinc[900],\n '--tw-prose-counters': colors.zinc[500],\n '--tw-prose-bullets': colors.zinc[300],\n '--tw-prose-hr': colors.zinc[200],\n '--tw-prose-quotes': colors.zinc[900],\n '--tw-prose-quote-borders': colors.zinc[200],\n '--tw-prose-captions': colors.zinc[500],\n '--tw-prose-kbd': colors.zinc[900],\n '--tw-prose-kbd-shadows': hexToRgb(colors.zinc[900]),\n '--tw-prose-code': colors.zinc[900],\n '--tw-prose-pre-code': colors.zinc[200],\n '--tw-prose-pre-bg': colors.zinc[800],\n '--tw-prose-th-borders': colors.zinc[300],\n '--tw-prose-td-borders': colors.zinc[200],\n '--tw-prose-invert-body': colors.zinc[300],\n '--tw-prose-invert-headings': colors.white,\n '--tw-prose-invert-lead': colors.zinc[400],\n '--tw-prose-invert-links': colors.white,\n '--tw-prose-invert-bold': colors.white,\n '--tw-prose-invert-counters': colors.zinc[400],\n '--tw-prose-invert-bullets': colors.zinc[600],\n '--tw-prose-invert-hr': colors.zinc[700],\n '--tw-prose-invert-quotes': colors.zinc[100],\n '--tw-prose-invert-quote-borders': colors.zinc[700],\n '--tw-prose-invert-captions': colors.zinc[400],\n '--tw-prose-invert-kbd': colors.white,\n '--tw-prose-invert-kbd-shadows': hexToRgb(colors.white),\n '--tw-prose-invert-code': colors.white,\n '--tw-prose-invert-pre-code': colors.zinc[300],\n '--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 50%)',\n '--tw-prose-invert-th-borders': colors.zinc[600],\n '--tw-prose-invert-td-borders': colors.zinc[700],\n },\n },\n\n neutral: {\n css: {\n '--tw-prose-body': colors.neutral[700],\n '--tw-prose-headings': colors.neutral[900],\n '--tw-prose-lead': colors.neutral[600],\n '--tw-prose-links': colors.neutral[900],\n '--tw-prose-bold': colors.neutral[900],\n '--tw-prose-counters': colors.neutral[500],\n '--tw-prose-bullets': colors.neutral[300],\n '--tw-prose-hr': colors.neutral[200],\n '--tw-prose-quotes': colors.neutral[900],\n '--tw-prose-quote-borders': colors.neutral[200],\n '--tw-prose-captions': colors.neutral[500],\n '--tw-prose-kbd': colors.neutral[900],\n '--tw-prose-kbd-shadows': hexToRgb(colors.neutral[900]),\n '--tw-prose-code': colors.neutral[900],\n '--tw-prose-pre-code': colors.neutral[200],\n '--tw-prose-pre-bg': colors.neutral[800],\n '--tw-prose-th-borders': colors.neutral[300],\n '--tw-prose-td-borders': colors.neutral[200],\n '--tw-prose-invert-body': colors.neutral[300],\n '--tw-prose-invert-headings': colors.white,\n '--tw-prose-invert-lead': colors.neutral[400],\n '--tw-prose-invert-links': colors.white,\n '--tw-prose-invert-bold': colors.white,\n '--tw-prose-invert-counters': colors.neutral[400],\n '--tw-prose-invert-bullets': colors.neutral[600],\n '--tw-prose-invert-hr': colors.neutral[700],\n '--tw-prose-invert-quotes': colors.neutral[100],\n '--tw-prose-invert-quote-borders': colors.neutral[700],\n '--tw-prose-invert-captions': colors.neutral[400],\n '--tw-prose-invert-kbd': colors.white,\n '--tw-prose-invert-kbd-shadows': hexToRgb(colors.white),\n '--tw-prose-invert-code': colors.white,\n '--tw-prose-invert-pre-code': colors.neutral[300],\n '--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 50%)',\n '--tw-prose-invert-th-borders': colors.neutral[600],\n '--tw-prose-invert-td-borders': colors.neutral[700],\n },\n },\n\n stone: {\n css: {\n '--tw-prose-body': colors.stone[700],\n '--tw-prose-headings': colors.stone[900],\n '--tw-prose-lead': colors.stone[600],\n '--tw-prose-links': colors.stone[900],\n '--tw-prose-bold': colors.stone[900],\n '--tw-prose-counters': colors.stone[500],\n '--tw-prose-bullets': colors.stone[300],\n '--tw-prose-hr': colors.stone[200],\n '--tw-prose-quotes': colors.stone[900],\n '--tw-prose-quote-borders': colors.stone[200],\n '--tw-prose-captions': colors.stone[500],\n '--tw-prose-kbd': colors.stone[900],\n '--tw-prose-kbd-shadows': hexToRgb(colors.stone[900]),\n '--tw-prose-code': colors.stone[900],\n '--tw-prose-pre-code': colors.stone[200],\n '--tw-prose-pre-bg': colors.stone[800],\n '--tw-prose-th-borders': colors.stone[300],\n '--tw-prose-td-borders': colors.stone[200],\n '--tw-prose-invert-body': colors.stone[300],\n '--tw-prose-invert-headings': colors.white,\n '--tw-prose-invert-lead': colors.stone[400],\n '--tw-prose-invert-links': colors.white,\n '--tw-prose-invert-bold': colors.white,\n '--tw-prose-invert-counters': colors.stone[400],\n '--tw-prose-invert-bullets': colors.stone[600],\n '--tw-prose-invert-hr': colors.stone[700],\n '--tw-prose-invert-quotes': colors.stone[100],\n '--tw-prose-invert-quote-borders': colors.stone[700],\n '--tw-prose-invert-captions': colors.stone[400],\n '--tw-prose-invert-kbd': colors.white,\n '--tw-prose-invert-kbd-shadows': hexToRgb(colors.white),\n '--tw-prose-invert-code': colors.white,\n '--tw-prose-invert-pre-code': colors.stone[300],\n '--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 50%)',\n '--tw-prose-invert-th-borders': colors.stone[600],\n '--tw-prose-invert-td-borders': colors.stone[700],\n },\n },\n\n // Link-only themes (for backward compatibility)\n\n red: {\n css: {\n '--tw-prose-links': colors.red[600],\n '--tw-prose-invert-links': colors.red[500],\n },\n },\n\n orange: {\n css: {\n '--tw-prose-links': colors.orange[600],\n '--tw-prose-invert-links': colors.orange[500],\n },\n },\n\n amber: {\n css: {\n '--tw-prose-links': colors.amber[600],\n '--tw-prose-invert-links': colors.amber[500],\n },\n },\n\n yellow: {\n css: {\n '--tw-prose-links': colors.yellow[600],\n '--tw-prose-invert-links': colors.yellow[500],\n },\n },\n\n lime: {\n css: {\n '--tw-prose-links': colors.lime[600],\n '--tw-prose-invert-links': colors.lime[500],\n },\n },\n\n green: {\n css: {\n '--tw-prose-links': colors.green[600],\n '--tw-prose-invert-links': colors.green[500],\n },\n },\n\n emerald: {\n css: {\n '--tw-prose-links': colors.emerald[600],\n '--tw-prose-invert-links': colors.emerald[500],\n },\n },\n\n teal: {\n css: {\n '--tw-prose-links': colors.teal[600],\n '--tw-prose-invert-links': colors.teal[500],\n },\n },\n\n cyan: {\n css: {\n '--tw-prose-links': colors.cyan[600],\n '--tw-prose-invert-links': colors.cyan[500],\n },\n },\n\n sky: {\n css: {\n '--tw-prose-links': colors.sky[600],\n '--tw-prose-invert-links': colors.sky[500],\n },\n },\n\n blue: {\n css: {\n '--tw-prose-links': colors.blue[600],\n '--tw-prose-invert-links': colors.blue[500],\n },\n },\n\n indigo: {\n css: {\n '--tw-prose-links': colors.indigo[600],\n '--tw-prose-invert-links': colors.indigo[500],\n },\n },\n\n violet: {\n css: {\n '--tw-prose-links': colors.violet[600],\n '--tw-prose-invert-links': colors.violet[500],\n },\n },\n\n purple: {\n css: {\n '--tw-prose-links': colors.purple[600],\n '--tw-prose-invert-links': colors.purple[500],\n },\n },\n\n fuchsia: {\n css: {\n '--tw-prose-links': colors.fuchsia[600],\n '--tw-prose-invert-links': colors.fuchsia[500],\n },\n },\n\n pink: {\n css: {\n '--tw-prose-links': colors.pink[600],\n '--tw-prose-invert-links': colors.pink[500],\n },\n },\n\n rose: {\n css: {\n '--tw-prose-links': colors.rose[600],\n '--tw-prose-invert-links': colors.rose[500],\n },\n },\n\n // Invert (for dark mode)\n invert: {\n css: {\n '--tw-prose-body': 'var(--tw-prose-invert-body)',\n '--tw-prose-headings': 'var(--tw-prose-invert-headings)',\n '--tw-prose-lead': 'var(--tw-prose-invert-lead)',\n '--tw-prose-links': 'var(--tw-prose-invert-links)',\n '--tw-prose-bold': 'var(--tw-prose-invert-bold)',\n '--tw-prose-counters': 'var(--tw-prose-invert-counters)',\n '--tw-prose-bullets': 'var(--tw-prose-invert-bullets)',\n '--tw-prose-hr': 'var(--tw-prose-invert-hr)',\n '--tw-prose-quotes': 'var(--tw-prose-invert-quotes)',\n '--tw-prose-quote-borders': 'var(--tw-prose-invert-quote-borders)',\n '--tw-prose-captions': 'var(--tw-prose-invert-captions)',\n '--tw-prose-kbd': 'var(--tw-prose-invert-kbd)',\n '--tw-prose-kbd-shadows': 'var(--tw-prose-invert-kbd-shadows)',\n '--tw-prose-code': 'var(--tw-prose-invert-code)',\n '--tw-prose-pre-code': 'var(--tw-prose-invert-pre-code)',\n '--tw-prose-pre-bg': 'var(--tw-prose-invert-pre-bg)',\n '--tw-prose-th-borders': 'var(--tw-prose-invert-th-borders)',\n '--tw-prose-td-borders': 'var(--tw-prose-invert-td-borders)',\n },\n },\n}\n\nmodule.exports = {\n DEFAULT: {\n css: [\n {\n color: 'var(--tw-prose-body)',\n maxWidth: '65ch',\n p: {}, // Required to maintain correct order when merging\n '[class~=\"lead\"]': {\n color: 'var(--tw-prose-lead)',\n },\n a: {\n color: 'var(--tw-prose-links)',\n textDecoration: 'underline',\n fontWeight: '500',\n },\n strong: {\n color: 'var(--tw-prose-bold)',\n fontWeight: '600',\n },\n 'a strong': {\n color: 'inherit',\n },\n 'blockquote strong': {\n color: 'inherit',\n },\n 'thead th strong': {\n color: 'inherit',\n },\n ol: {\n listStyleType: 'decimal',\n },\n 'ol[type=\"A\"]': {\n listStyleType: 'upper-alpha',\n },\n 'ol[type=\"a\"]': {\n listStyleType: 'lower-alpha',\n },\n 'ol[type=\"A\" s]': {\n listStyleType: 'upper-alpha',\n },\n 'ol[type=\"a\" s]': {\n listStyleType: 'lower-alpha',\n },\n 'ol[type=\"I\"]': {\n listStyleType: 'upper-roman',\n },\n 'ol[type=\"i\"]': {\n listStyleType: 'lower-roman',\n },\n 'ol[type=\"I\" s]': {\n listStyleType: 'upper-roman',\n },\n 'ol[type=\"i\" s]': {\n listStyleType: 'lower-roman',\n },\n 'ol[type=\"1\"]': {\n listStyleType: 'decimal',\n },\n ul: {\n listStyleType: 'disc',\n },\n 'ol > li::marker': {\n fontWeight: '400',\n color: 'var(--tw-prose-counters)',\n },\n 'ul > li::marker': {\n color: 'var(--tw-prose-bullets)',\n },\n dt: {\n color: 'var(--tw-prose-headings)',\n fontWeight: '600',\n },\n hr: {\n borderColor: 'var(--tw-prose-hr)',\n borderTopWidth: 1,\n },\n blockquote: {\n fontWeight: '500',\n fontStyle: 'italic',\n color: 'var(--tw-prose-quotes)',\n borderInlineStartWidth: '0.25rem',\n borderInlineStartColor: 'var(--tw-prose-quote-borders)',\n quotes: '\"\\\\201C\"\"\\\\201D\"\"\\\\2018\"\"\\\\2019\"',\n },\n 'blockquote p:first-of-type::before': {\n content: 'open-quote',\n },\n 'blockquote p:last-of-type::after': {\n content: 'close-quote',\n },\n h1: {\n color: 'var(--tw-prose-headings)',\n fontWeight: '800',\n },\n 'h1 strong': {\n fontWeight: '900',\n color: 'inherit',\n },\n h2: {\n color: 'var(--tw-prose-headings)',\n fontWeight: '700',\n },\n 'h2 strong': {\n fontWeight: '800',\n color: 'inherit',\n },\n h3: {\n color: 'var(--tw-prose-headings)',\n fontWeight: '600',\n },\n 'h3 strong': {\n fontWeight: '700',\n color: 'inherit',\n },\n h4: {\n color: 'var(--tw-prose-headings)',\n fontWeight: '600',\n },\n 'h4 strong': {\n fontWeight: '700',\n color: 'inherit',\n },\n img: {}, // Required to maintain correct order when merging\n picture: {\n display: 'block',\n },\n video: {}, // Required to maintain correct order when merging\n kbd: {\n fontWeight: '500',\n fontFamily: 'inherit',\n color: 'var(--tw-prose-kbd)',\n boxShadow:\n '0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%)',\n },\n code: {\n color: 'var(--tw-prose-code)',\n fontWeight: '600',\n },\n 'code::before': {\n content: '\"`\"',\n },\n 'code::after': {\n content: '\"`\"',\n },\n 'a code': {\n color: 'inherit',\n },\n 'h1 code': {\n color: 'inherit',\n },\n 'h2 code': {\n color: 'inherit',\n },\n 'h3 code': {\n color: 'inherit',\n },\n 'h4 code': {\n color: 'inherit',\n },\n 'blockquote code': {\n color: 'inherit',\n },\n 'thead th code': {\n color: 'inherit',\n },\n pre: {\n color: 'var(--tw-prose-pre-code)',\n backgroundColor: 'var(--tw-prose-pre-bg)',\n overflowX: 'auto',\n fontWeight: '400',\n },\n 'pre code': {\n backgroundColor: 'transparent',\n borderWidth: '0',\n borderRadius: '0',\n padding: '0',\n fontWeight: 'inherit',\n color: 'inherit',\n fontSize: 'inherit',\n fontFamily: 'inherit',\n lineHeight: 'inherit',\n },\n 'pre code::before': {\n content: 'none',\n },\n 'pre code::after': {\n content: 'none',\n },\n table: {\n width: '100%',\n tableLayout: 'auto',\n marginTop: em(32, 16),\n marginBottom: em(32, 16),\n },\n thead: {\n borderBottomWidth: '1px',\n borderBottomColor: 'var(--tw-prose-th-borders)',\n },\n 'thead th': {\n color: 'var(--tw-prose-headings)',\n fontWeight: '600',\n verticalAlign: 'bottom',\n },\n 'tbody tr': {\n borderBottomWidth: '1px',\n borderBottomColor: 'var(--tw-prose-td-borders)',\n },\n 'tbody tr:last-child': {\n borderBottomWidth: '0',\n },\n 'tbody td': {\n verticalAlign: 'baseline',\n },\n tfoot: {\n borderTopWidth: '1px',\n borderTopColor: 'var(--tw-prose-th-borders)',\n },\n 'tfoot td': {\n verticalAlign: 'top',\n },\n 'th, td': {\n textAlign: 'start',\n },\n 'figure > *': {}, // Required to maintain correct order when merging\n figcaption: {\n color: 'var(--tw-prose-captions)',\n },\n },\n defaultModifiers.gray.css,\n ...defaultModifiers.base.css,\n ],\n },\n ...defaultModifiers,\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n var lower = str.toLowerCase();\n var hex = '';\n var spaceTerminated = false;\n\n for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n spaceTerminated = code === 32;\n\n if (!valid) {\n break;\n }\n\n hex += lower[i];\n }\n\n if (hex.length === 0) {\n return undefined;\n }\n\n var codePoint = parseInt(hex, 16);\n var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n }\n\n return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n var needToProcess = CONTAINS_ESCAPE.test(str);\n\n if (!needToProcess) {\n return str;\n }\n\n var ret = \"\";\n\n for (var i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n if (gobbled !== undefined) {\n ret += gobbled[0];\n i += gobbled[1];\n continue;\n } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n if (str[i + 1] === \"\\\\\") {\n ret += \"\\\\\";\n i++;\n continue;\n } // if \\\\ is at the end of the string retain it\n // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n if (str.length === i + 1) {\n ret += str[i];\n }\n\n continue;\n }\n\n ret += str[i];\n }\n\n return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n return undefined;\n }\n\n obj = obj[prop];\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n obj[prop] = {};\n }\n\n obj = obj[prop];\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n var s = \"\";\n var commentStart = str.indexOf(\"/*\");\n var lastEnd = 0;\n\n while (commentStart >= 0) {\n s = s + str.slice(lastEnd, commentStart);\n var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n if (commentEnd < 0) {\n return s;\n }\n\n lastEnd = commentEnd + 2;\n commentStart = str.indexOf(\"/*\", lastEnd);\n }\n\n s = s + str.slice(lastEnd);\n return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) {\n cloned[i] = parent;\n }\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n cloned[i] = cloneNode(value, cloned);\n }\n }\n\n return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n Object.assign(this, opts);\n this.spaces = this.spaces || {};\n this.spaces.before = this.spaces.before || '';\n this.spaces.after = this.spaces.after || '';\n }\n\n var _proto = Node.prototype;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var index in arguments) {\n this.parent.insertBefore(this, arguments[index]);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n _proto.next = function next() {\n return this.parent.at(this.parent.index(this) + 1);\n };\n\n _proto.prev = function prev() {\n return this.parent.at(this.parent.index(this) - 1);\n };\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows non standard syntax to be appended to an existing property\n * by specifying the escaped value. By specifying the escaped value,\n * illegal characters are allowed to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped optional. the escaped value of the property.\n */\n ;\n\n _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n var originalValue = this[name];\n var originalEscaped = this.raws[name];\n this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (originalEscaped || valueEscaped !== value) {\n this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n } else {\n delete this.raws[name]; // delete any escaped value that was created by the setter.\n }\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows the escaped value to be specified directly, allowing illegal\n * characters to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped the escaped value of the property.\n */\n ;\n\n _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n this.raws[name] = valueEscaped;\n }\n /**\n * When you want a value to passed through to CSS directly. This method\n * deletes the corresponding raw value causing the stringifier to fallback\n * to the unescaped value.\n * @param {string} name the property to set.\n * @param {any} value The value that is both escaped and unescaped.\n */\n ;\n\n _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (this.raws) {\n delete this.raws[name];\n }\n }\n /**\n *\n * @param {number} line The number (starting with 1)\n * @param {number} column The column number (starting with 1)\n */\n ;\n\n _proto.isAtPosition = function isAtPosition(line, column) {\n if (this.source && this.source.start && this.source.end) {\n if (this.source.start.line > line) {\n return false;\n }\n\n if (this.source.end.line < line) {\n return false;\n }\n\n if (this.source.start.line === line && this.source.start.column > column) {\n return false;\n }\n\n if (this.source.end.line === line && this.source.end.column < column) {\n return false;\n }\n\n return true;\n }\n\n return undefined;\n };\n\n _proto.stringifyProperty = function stringifyProperty(name) {\n return this.raws && this.raws[name] || this[name];\n };\n\n _proto.valueToString = function valueToString() {\n return String(this.stringifyProperty(\"value\"));\n };\n\n _proto.toString = function toString() {\n return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n };\n\n _createClass(Node, [{\n key: \"rawSpaceBefore\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces && this.spaces.before;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.before = raw;\n }\n }, {\n key: \"rawSpaceAfter\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces.after;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.after = raw;\n }\n }]);\n\n return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n\n if (!_this.nodes) {\n _this.nodes = [];\n }\n\n return _this;\n }\n\n var _proto = Container.prototype;\n\n _proto.append = function append(selector) {\n selector.parent = this;\n this.nodes.push(selector);\n return this;\n };\n\n _proto.prepend = function prepend(selector) {\n selector.parent = this;\n this.nodes.unshift(selector);\n return this;\n };\n\n _proto.at = function at(index) {\n return this.nodes[index];\n };\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.at(child).parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n _proto.removeAll = function removeAll() {\n for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n var node = _step.value;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n };\n\n _proto.empty = function empty() {\n return this.removeAll();\n };\n\n _proto.insertAfter = function insertAfter(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex + 1, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (oldIndex <= index) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto.insertBefore = function insertBefore(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index <= oldIndex) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n var found = undefined;\n this.each(function (node) {\n if (node.atPosition) {\n var foundChild = node.atPosition(line, col);\n\n if (foundChild) {\n found = foundChild;\n return false;\n }\n } else if (node.isAtPosition(line, col)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Return the most specific node at the line and column number given.\n * The source location is based on the original parsed location, locations aren't\n * updated as selector nodes are mutated.\n * \n * Note that this location is relative to the location of the first character\n * of the selector, and not the location of the selector in the overall document\n * when used in conjunction with postcss.\n *\n * If not found, returns undefined.\n * @param {number} line The line number of the node to find. (1-based index)\n * @param {number} col The column number of the node to find. (1-based index)\n */\n ;\n\n _proto.atPosition = function atPosition(line, col) {\n if (this.isAtPosition(line, col)) {\n return this._findChildAtPosition(line, col) || this;\n } else {\n return undefined;\n }\n };\n\n _proto._inferEndPosition = function _inferEndPosition() {\n if (this.last && this.last.source && this.last.source.end) {\n this.source = this.source || {};\n this.source.end = this.source.end || {};\n Object.assign(this.source.end, this.last.source.end);\n }\n };\n\n _proto.each = function each(callback) {\n if (!this.lastEach) {\n this.lastEach = 0;\n }\n\n if (!this.indexes) {\n this.indexes = {};\n }\n\n this.lastEach++;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.length) {\n return undefined;\n }\n\n var index, result;\n\n while (this.indexes[id] < this.length) {\n index = this.indexes[id];\n result = callback(this.at(index), index);\n\n if (result === false) {\n break;\n }\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n if (result === false) {\n return false;\n }\n };\n\n _proto.walk = function walk(callback) {\n return this.each(function (node, i) {\n var result = callback(node, i);\n\n if (result !== false && node.length) {\n result = node.walk(callback);\n }\n\n if (result === false) {\n return false;\n }\n });\n };\n\n _proto.walkAttributes = function walkAttributes(callback) {\n var _this2 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ATTRIBUTE) {\n return callback.call(_this2, selector);\n }\n });\n };\n\n _proto.walkClasses = function walkClasses(callback) {\n var _this3 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.CLASS) {\n return callback.call(_this3, selector);\n }\n });\n };\n\n _proto.walkCombinators = function walkCombinators(callback) {\n var _this4 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMBINATOR) {\n return callback.call(_this4, selector);\n }\n });\n };\n\n _proto.walkComments = function walkComments(callback) {\n var _this5 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMMENT) {\n return callback.call(_this5, selector);\n }\n });\n };\n\n _proto.walkIds = function walkIds(callback) {\n var _this6 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ID) {\n return callback.call(_this6, selector);\n }\n });\n };\n\n _proto.walkNesting = function walkNesting(callback) {\n var _this7 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.NESTING) {\n return callback.call(_this7, selector);\n }\n });\n };\n\n _proto.walkPseudos = function walkPseudos(callback) {\n var _this8 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.PSEUDO) {\n return callback.call(_this8, selector);\n }\n });\n };\n\n _proto.walkTags = function walkTags(callback) {\n var _this9 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.TAG) {\n return callback.call(_this9, selector);\n }\n });\n };\n\n _proto.walkUniversals = function walkUniversals(callback) {\n var _this10 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.UNIVERSAL) {\n return callback.call(_this10, selector);\n }\n });\n };\n\n _proto.split = function split(callback) {\n var _this11 = this;\n\n var current = [];\n return this.reduce(function (memo, node, index) {\n var split = callback.call(_this11, node);\n current.push(node);\n\n if (split) {\n memo.push(current);\n current = [];\n } else if (index === _this11.length - 1) {\n memo.push(current);\n }\n\n return memo;\n }, []);\n };\n\n _proto.map = function map(callback) {\n return this.nodes.map(callback);\n };\n\n _proto.reduce = function reduce(callback, memo) {\n return this.nodes.reduce(callback, memo);\n };\n\n _proto.every = function every(callback) {\n return this.nodes.every(callback);\n };\n\n _proto.some = function some(callback) {\n return this.nodes.some(callback);\n };\n\n _proto.filter = function filter(callback) {\n return this.nodes.filter(callback);\n };\n\n _proto.sort = function sort(callback) {\n return this.nodes.sort(callback);\n };\n\n _proto.toString = function toString() {\n return this.map(String).join('');\n };\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n return this.at(0);\n }\n }, {\n key: \"last\",\n get: function get() {\n return this.at(this.length - 1);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.nodes.length;\n }\n }]);\n\n return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.ROOT;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.toString = function toString() {\n var str = this.reduce(function (memo, selector) {\n memo.push(String(selector));\n return memo;\n }, []).join(',');\n return this.trailingComma ? str + ',' : str;\n };\n\n _proto.error = function error(message, options) {\n if (this._error) {\n return this._error(message, options);\n } else {\n return new Error(message);\n }\n };\n\n _createClass(Root, [{\n key: \"errorGenerator\",\n set: function set(handler) {\n this._error = handler;\n }\n }]);\n\n return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Selector, _Container);\n\n function Selector(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.SELECTOR;\n return _this;\n }\n\n return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ClassName, _Node);\n\n function ClassName(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.CLASS;\n _this._constructed = true;\n return _this;\n }\n\n var _proto = ClassName.prototype;\n\n _proto.valueToString = function valueToString() {\n return '.' + _Node.prototype.valueToString.call(this);\n };\n\n _createClass(ClassName, [{\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(v) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped !== v) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.value = escaped;\n } else if (this.raws) {\n delete this.raws.value;\n }\n }\n\n this._value = v;\n }\n }]);\n\n return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMMENT;\n return _this;\n }\n\n return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ID, _Node);\n\n function ID(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.ID;\n return _this;\n }\n\n var _proto = ID.prototype;\n\n _proto.valueToString = function valueToString() {\n return '#' + _Node.prototype.valueToString.call(this);\n };\n\n return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Namespace, _Node);\n\n function Namespace() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Namespace.prototype;\n\n _proto.qualifiedName = function qualifiedName(value) {\n if (this.namespace) {\n return this.namespaceString + \"|\" + value;\n } else {\n return value;\n }\n };\n\n _proto.valueToString = function valueToString() {\n return this.qualifiedName(_Node.prototype.valueToString.call(this));\n };\n\n _createClass(Namespace, [{\n key: \"namespace\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n this._namespace = namespace;\n\n if (this.raws) {\n delete this.raws.namespace;\n }\n\n return;\n }\n\n var escaped = (0, _cssesc[\"default\"])(namespace, {\n isIdentifier: true\n });\n this._namespace = namespace;\n\n if (escaped !== namespace) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.namespace = escaped;\n } else if (this.raws) {\n delete this.raws.namespace;\n }\n }\n }, {\n key: \"ns\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n this.namespace = namespace;\n }\n }, {\n key: \"namespaceString\",\n get: function get() {\n if (this.namespace) {\n var ns = this.stringifyProperty(\"namespace\");\n\n if (ns === true) {\n return '';\n } else {\n return ns;\n }\n } else {\n return '';\n }\n }\n }]);\n\n return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Tag, _Namespace);\n\n function Tag(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.TAG;\n return _this;\n }\n\n return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n _inheritsLoose(String, _Node);\n\n function String(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.STRING;\n return _this;\n }\n\n return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Pseudo, _Container);\n\n function Pseudo(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.PSEUDO;\n return _this;\n }\n\n var _proto = Pseudo.prototype;\n\n _proto.toString = function toString() {\n var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n };\n\n return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n var deprecatedUsage = false;\n var quoteMark = null;\n var unescaped = value;\n var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n if (m) {\n quoteMark = m[1];\n unescaped = m[2];\n }\n\n unescaped = (0, _unesc[\"default\"])(unescaped);\n\n if (unescaped !== value) {\n deprecatedUsage = true;\n }\n\n return {\n deprecatedUsage: deprecatedUsage,\n unescaped: unescaped,\n quoteMark: quoteMark\n };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n if (opts.quoteMark !== undefined) {\n return opts;\n }\n\n if (opts.value === undefined) {\n return opts;\n }\n\n warnOfDeprecatedConstructor();\n\n var _unescapeValue = unescapeValue(opts.value),\n quoteMark = _unescapeValue.quoteMark,\n unescaped = _unescapeValue.unescaped;\n\n if (!opts.raws) {\n opts.raws = {};\n }\n\n if (opts.raws.value === undefined) {\n opts.raws.value = opts.value;\n }\n\n opts.value = unescaped;\n opts.quoteMark = quoteMark;\n return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Attribute, _Namespace);\n\n function Attribute(opts) {\n var _this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n _this.type = _types.ATTRIBUTE;\n _this.raws = _this.raws || {};\n Object.defineProperty(_this.raws, 'unquoted', {\n get: deprecate(function () {\n return _this.value;\n }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n set: deprecate(function () {\n return _this.value;\n }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n });\n _this._constructed = true;\n return _this;\n }\n /**\n * Returns the Attribute's value quoted such that it would be legal to use\n * in the value of a css file. The original value's quotation setting\n * used for stringification is left unchanged. See `setValue(value, options)`\n * if you want to control the quote settings of a new value for the attribute.\n *\n * You can also change the quotation used for the current value by setting quoteMark.\n *\n * Options:\n * * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n * option is not set, the original value for quoteMark will be used. If\n * indeterminate, a double quote is used. The legal values are:\n * * `null` - the value will be unquoted and characters will be escaped as necessary.\n * * `'` - the value will be quoted with a single quote and single quotes are escaped.\n * * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n * over the quoteMark option value.\n * * smart {boolean} - if true, will select a quote mark based on the value\n * and the other options specified here. See the `smartQuoteMark()`\n * method.\n **/\n\n\n var _proto = Attribute.prototype;\n\n _proto.getQuotedValue = function getQuotedValue(options) {\n if (options === void 0) {\n options = {};\n }\n\n var quoteMark = this._determineQuoteMark(options);\n\n var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n return escaped;\n };\n\n _proto._determineQuoteMark = function _determineQuoteMark(options) {\n return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n }\n /**\n * Set the unescaped value with the specified quotation options. The value\n * provided must not include any wrapping quote marks -- those quotes will\n * be interpreted as part of the value and escaped accordingly.\n */\n ;\n\n _proto.setValue = function setValue(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._value = value;\n this._quoteMark = this._determineQuoteMark(options);\n\n this._syncRawValue();\n }\n /**\n * Intelligently select a quoteMark value based on the value's contents. If\n * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n * mark will be picked that minimizes the number of escapes.\n *\n * If there's no clear winner, the quote mark from these options is used,\n * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n * true). If the quoteMark is unspecified, a double quote is used.\n *\n * @param options This takes the quoteMark and preferCurrentQuoteMark options\n * from the quoteValue method.\n */\n ;\n\n _proto.smartQuoteMark = function smartQuoteMark(options) {\n var v = this.value;\n var numSingleQuotes = v.replace(/[^']/g, '').length;\n var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n if (numSingleQuotes + numDoubleQuotes === 0) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped === v) {\n return Attribute.NO_QUOTE;\n } else {\n var pref = this.preferredQuoteMark(options);\n\n if (pref === Attribute.NO_QUOTE) {\n // pick a quote mark that isn't none and see if it's smaller\n var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n var opts = CSSESC_QUOTE_OPTIONS[quote];\n var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n if (quoteValue.length < escaped.length) {\n return quote;\n }\n }\n\n return pref;\n }\n } else if (numDoubleQuotes === numSingleQuotes) {\n return this.preferredQuoteMark(options);\n } else if (numDoubleQuotes < numSingleQuotes) {\n return Attribute.DOUBLE_QUOTE;\n } else {\n return Attribute.SINGLE_QUOTE;\n }\n }\n /**\n * Selects the preferred quote mark based on the options and the current quote mark value.\n * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n * instead.\n */\n ;\n\n _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n if (quoteMark === undefined) {\n quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n }\n\n if (quoteMark === undefined) {\n quoteMark = Attribute.DOUBLE_QUOTE;\n }\n\n return quoteMark;\n };\n\n _proto._syncRawValue = function _syncRawValue() {\n var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n if (rawValue === this._value) {\n if (this.raws) {\n delete this.raws.value;\n }\n } else {\n this.raws.value = rawValue;\n }\n };\n\n _proto._handleEscapes = function _handleEscapes(prop, value) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(value, {\n isIdentifier: true\n });\n\n if (escaped !== value) {\n this.raws[prop] = escaped;\n } else {\n delete this.raws[prop];\n }\n }\n };\n\n _proto._spacesFor = function _spacesFor(name) {\n var attrSpaces = {\n before: '',\n after: ''\n };\n var spaces = this.spaces[name] || {};\n var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n return Object.assign(attrSpaces, spaces, rawSpaces);\n };\n\n _proto._stringFor = function _stringFor(name, spaceName, concat) {\n if (spaceName === void 0) {\n spaceName = name;\n }\n\n if (concat === void 0) {\n concat = defaultAttrConcat;\n }\n\n var attrSpaces = this._spacesFor(spaceName);\n\n return concat(this.stringifyProperty(name), attrSpaces);\n }\n /**\n * returns the offset of the attribute part specified relative to the\n * start of the node of the output string.\n *\n * * \"ns\" - alias for \"namespace\"\n * * \"namespace\" - the namespace if it exists.\n * * \"attribute\" - the attribute name\n * * \"attributeNS\" - the start of the attribute or its namespace\n * * \"operator\" - the match operator of the attribute\n * * \"value\" - The value (string or identifier)\n * * \"insensitive\" - the case insensitivity flag;\n * @param part One of the possible values inside an attribute.\n * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n */\n ;\n\n _proto.offsetOf = function offsetOf(name) {\n var count = 1;\n\n var attributeSpaces = this._spacesFor(\"attribute\");\n\n count += attributeSpaces.before.length;\n\n if (name === \"namespace\" || name === \"ns\") {\n return this.namespace ? count : -1;\n }\n\n if (name === \"attributeNS\") {\n return count;\n }\n\n count += this.namespaceString.length;\n\n if (this.namespace) {\n count += 1;\n }\n\n if (name === \"attribute\") {\n return count;\n }\n\n count += this.stringifyProperty(\"attribute\").length;\n count += attributeSpaces.after.length;\n\n var operatorSpaces = this._spacesFor(\"operator\");\n\n count += operatorSpaces.before.length;\n var operator = this.stringifyProperty(\"operator\");\n\n if (name === \"operator\") {\n return operator ? count : -1;\n }\n\n count += operator.length;\n count += operatorSpaces.after.length;\n\n var valueSpaces = this._spacesFor(\"value\");\n\n count += valueSpaces.before.length;\n var value = this.stringifyProperty(\"value\");\n\n if (name === \"value\") {\n return value ? count : -1;\n }\n\n count += value.length;\n count += valueSpaces.after.length;\n\n var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n count += insensitiveSpaces.before.length;\n\n if (name === \"insensitive\") {\n return this.insensitive ? count : -1;\n }\n\n return -1;\n };\n\n _proto.toString = function toString() {\n var _this2 = this;\n\n var selector = [this.rawSpaceBefore, '['];\n selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n if (this.operator && (this.value || this.value === '')) {\n selector.push(this._stringFor('operator'));\n selector.push(this._stringFor('value'));\n selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n attrSpaces.before = \" \";\n }\n\n return defaultAttrConcat(attrValue, attrSpaces);\n }));\n }\n\n selector.push(']');\n selector.push(this.rawSpaceAfter);\n return selector.join('');\n };\n\n _createClass(Attribute, [{\n key: \"quoted\",\n get: function get() {\n var qm = this.quoteMark;\n return qm === \"'\" || qm === '\"';\n },\n set: function set(value) {\n warnOfDeprecatedQuotedAssignment();\n }\n /**\n * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n * returns `null` if the value is not quoted.\n * returns `undefined` if the quotation state is unknown (this can happen when\n * the attribute is constructed without specifying a quote mark.)\n */\n\n }, {\n key: \"quoteMark\",\n get: function get() {\n return this._quoteMark;\n }\n /**\n * Set the quote mark to be used by this attribute's value.\n * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n * value is updated accordingly.\n *\n * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n */\n ,\n set: function set(quoteMark) {\n if (!this._constructed) {\n this._quoteMark = quoteMark;\n return;\n }\n\n if (this._quoteMark !== quoteMark) {\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n }\n }\n }, {\n key: \"qualifiedAttribute\",\n get: function get() {\n return this.qualifiedName(this.raws.attribute || this.attribute);\n }\n }, {\n key: \"insensitiveFlag\",\n get: function get() {\n return this.insensitive ? 'i' : '';\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n }\n /**\n * Before 3.0, the value had to be set to an escaped value including any wrapped\n * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n * is unescaped during parsing and any quote marks are removed.\n *\n * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n * a deprecation warning is raised when the new value contains any characters that would\n * require escaping (including if it contains wrapped quotes).\n *\n * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n * how the new value is quoted.\n */\n ,\n set: function set(v) {\n if (this._constructed) {\n var _unescapeValue2 = unescapeValue(v),\n deprecatedUsage = _unescapeValue2.deprecatedUsage,\n unescaped = _unescapeValue2.unescaped,\n quoteMark = _unescapeValue2.quoteMark;\n\n if (deprecatedUsage) {\n warnOfDeprecatedValueAssignment();\n }\n\n if (unescaped === this._value && quoteMark === this._quoteMark) {\n return;\n }\n\n this._value = unescaped;\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n } else {\n this._value = v;\n }\n }\n }, {\n key: \"attribute\",\n get: function get() {\n return this._attribute;\n },\n set: function set(name) {\n this._handleEscapes(\"attribute\", name);\n\n this._attribute = name;\n }\n }]);\n\n return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n \"'\": {\n quotes: 'single',\n wrap: true\n },\n '\"': {\n quotes: 'double',\n wrap: true\n }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Universal, _Namespace);\n\n function Universal(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.UNIVERSAL;\n _this.value = '*';\n return _this;\n }\n\n return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Combinator, _Node);\n\n function Combinator(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMBINATOR;\n return _this;\n }\n\n return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Nesting, _Node);\n\n function Nesting(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.NESTING;\n _this.value = '&';\n return _this;\n }\n\n return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n return list.sort(function (a, b) {\n return a - b;\n });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n * Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n var next = start;\n var code;\n\n do {\n code = css.charCodeAt(next);\n\n if (wordDelimiters[code]) {\n return next - 1;\n } else if (code === t.backslash) {\n next = consumeEscape(css, next) + 1;\n } else {\n // All other characters are part of the word\n next++;\n }\n } while (next < css.length);\n\n return next - 1;\n}\n/**\n * Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n var next = start;\n var code = css.charCodeAt(next + 1);\n\n if (unescapable[code]) {// just consume the escape char\n } else if (hex[code]) {\n var hexDigits = 0; // consume up to 6 hex chars\n\n do {\n next++;\n hexDigits++;\n code = css.charCodeAt(next + 1);\n } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n if (hexDigits < 6 && code === t.space) {\n next++;\n }\n } else {\n // the next char is part of the current word\n next++;\n }\n\n return next;\n}\n\nvar FIELDS = {\n TYPE: 0,\n START_LINE: 1,\n START_COL: 2,\n END_LINE: 3,\n END_COL: 4,\n START_POS: 5,\n END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n var tokens = [];\n var css = input.css.valueOf();\n var _css = css,\n length = _css.length;\n var offset = -1;\n var line = 1;\n var start = 0;\n var end = 0;\n var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n function unclosed(what, fix) {\n if (input.safe) {\n // fyi: this is never set to true.\n css += fix;\n next = css.length - 1;\n } else {\n throw input.error('Unclosed ' + what, line, start - offset, start);\n }\n }\n\n while (start < length) {\n code = css.charCodeAt(start);\n\n if (code === t.newline) {\n offset = start;\n line += 1;\n }\n\n switch (code) {\n case t.space:\n case t.tab:\n case t.newline:\n case t.cr:\n case t.feed:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === t.newline) {\n offset = next;\n line += 1;\n }\n } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n tokenType = t.space;\n endLine = line;\n endColumn = next - offset - 1;\n end = next;\n break;\n\n case t.plus:\n case t.greaterThan:\n case t.tilde:\n case t.pipe:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n tokenType = t.combinator;\n endLine = line;\n endColumn = start - offset;\n end = next;\n break;\n // Consume these characters as single tokens.\n\n case t.asterisk:\n case t.ampersand:\n case t.bang:\n case t.comma:\n case t.equals:\n case t.dollar:\n case t.caret:\n case t.openSquare:\n case t.closeSquare:\n case t.colon:\n case t.semicolon:\n case t.openParenthesis:\n case t.closeParenthesis:\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n case t.singleQuote:\n case t.doubleQuote:\n quote = code === t.singleQuote ? \"'\" : '\"';\n next = start;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n unclosed('quote', quote);\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === t.backslash) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokenType = t.str;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n default:\n if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n next = css.indexOf('*/', start + 2) + 1;\n\n if (next === 0) {\n unclosed('comment', '*/');\n }\n\n content = css.slice(start, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokenType = t.comment;\n line = nextLine;\n endLine = nextLine;\n endColumn = next - nextOffset;\n } else if (code === t.slash) {\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n } else {\n next = consumeWord(css, start);\n tokenType = t.word;\n endLine = line;\n endColumn = next - offset;\n }\n\n end = next + 1;\n break;\n } // Ensure that the token structure remains consistent\n\n\n tokens.push([tokenType, // [0] Token type\n line, // [1] Starting line\n start - offset, // [2] Starting column\n endLine, // [3] Ending line\n endColumn, // [4] Ending column\n start, // [5] Start position / Source index\n end // [6] End position\n ]); // Reset offset for the next token\n\n if (nextOffset) {\n offset = nextOffset;\n nextOffset = null;\n }\n\n start = end;\n }\n\n return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n return {\n line: token[_tokenize.FIELDS.START_LINE],\n column: token[_tokenize.FIELDS.START_COL]\n };\n}\n\nfunction tokenEnd(token) {\n return {\n line: token[_tokenize.FIELDS.END_LINE],\n column: token[_tokenize.FIELDS.END_COL]\n };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n return {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n };\n}\n\nfunction getTokenSource(token) {\n return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n if (!startToken) {\n return undefined;\n }\n\n return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n var value = node[prop];\n\n if (typeof value !== \"string\") {\n return;\n }\n\n if (value.indexOf(\"\\\\\") !== -1) {\n (0, _util.ensureObject)(node, 'raws');\n node[prop] = (0, _util.unesc)(value);\n\n if (node.raws[prop] === undefined) {\n node.raws[prop] = value;\n }\n }\n\n return node;\n}\n\nfunction indexesOf(array, item) {\n var i = -1;\n var indexes = [];\n\n while ((i = array.indexOf(item, i + 1)) !== -1) {\n indexes.push(i);\n }\n\n return indexes;\n}\n\nfunction uniqs() {\n var list = Array.prototype.concat.apply([], arguments);\n return list.filter(function (item, i) {\n return i === list.indexOf(item);\n });\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.rule = rule;\n this.options = Object.assign({\n lossy: false,\n safe: false\n }, options);\n this.position = 0;\n this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n this.tokens = (0, _tokenize[\"default\"])({\n css: this.css,\n error: this._errorGenerator(),\n safe: this.options.safe\n });\n var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n this.root = new _root[\"default\"]({\n source: rootSource\n });\n this.root.errorGenerator = this._errorGenerator();\n var selector = new _selector[\"default\"]({\n source: {\n start: {\n line: 1,\n column: 1\n }\n }\n });\n this.root.append(selector);\n this.current = selector;\n this.loop();\n }\n\n var _proto = Parser.prototype;\n\n _proto._errorGenerator = function _errorGenerator() {\n var _this = this;\n\n return function (message, errorOptions) {\n if (typeof _this.rule === 'string') {\n return new Error(message);\n }\n\n return _this.rule.error(message, errorOptions);\n };\n };\n\n _proto.attribute = function attribute() {\n var attr = [];\n var startingToken = this.currToken;\n this.position++;\n\n while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n attr.push(this.currToken);\n this.position++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n\n var len = attr.length;\n var node = {\n source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n };\n\n if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n }\n\n var pos = 0;\n var spaceBefore = '';\n var commentBefore = '';\n var lastAdded = null;\n var spaceAfterMeaningfulToken = false;\n\n while (pos < len) {\n var token = attr[pos];\n var content = this.content(token);\n var next = attr[pos + 1];\n\n switch (token[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n // if (\n // len === 1 ||\n // pos === 0 && this.content(next) === '|'\n // ) {\n // return this.expected('attribute', token[TOKEN.START_POS], content);\n // }\n spaceAfterMeaningfulToken = true;\n\n if (this.options.lossy) {\n break;\n }\n\n if (lastAdded) {\n (0, _util.ensureObject)(node, 'spaces', lastAdded);\n var prevContent = node.spaces[lastAdded].after || '';\n node.spaces[lastAdded].after = prevContent + content;\n var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n if (existingComment) {\n node.raws.spaces[lastAdded].after = existingComment + content;\n }\n } else {\n spaceBefore = spaceBefore + content;\n commentBefore = commentBefore + content;\n }\n\n break;\n\n case tokens.asterisk:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = spaceBefore;\n commentBefore = '';\n }\n\n node.namespace = (node.namespace || \"\") + content;\n var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n if (rawValue) {\n node.raws.namespace += content;\n }\n\n lastAdded = 'namespace';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.dollar:\n if (lastAdded === \"value\") {\n var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n node.value += \"$\";\n\n if (oldRawValue) {\n node.raws.value = oldRawValue + \"$\";\n }\n\n break;\n }\n\n // Falls through\n\n case tokens.caret:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.combinator:\n if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n if (content !== '|') {\n spaceAfterMeaningfulToken = false;\n break;\n }\n\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if (!node.namespace && !node.attribute) {\n node.namespace = true;\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.word:\n if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n !node.operator && !node.namespace) {\n node.namespace = content;\n lastAdded = 'namespace';\n } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = commentBefore;\n commentBefore = '';\n }\n\n node.attribute = (node.attribute || \"\") + content;\n\n var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n if (_rawValue) {\n node.raws.attribute += content;\n }\n\n lastAdded = 'attribute';\n } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n var _unescaped = (0, _util.unesc)(content);\n\n var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n var oldValue = node.value || '';\n node.value = oldValue + _unescaped;\n node.quoteMark = null;\n\n if (_unescaped !== content || _oldRawValue) {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = (_oldRawValue || oldValue) + content;\n }\n\n lastAdded = 'value';\n } else {\n var insensitive = content === 'i' || content === \"I\";\n\n if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n node.insensitive = insensitive;\n\n if (!insensitive || content === \"I\") {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.insensitiveFlag = content;\n }\n\n lastAdded = 'insensitive';\n\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n node.spaces.insensitive.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n node.raws.spaces.insensitive.before = commentBefore;\n commentBefore = '';\n }\n } else if (node.value || node.value === '') {\n lastAdded = 'value';\n node.value += content;\n\n if (node.raws.value) {\n node.raws.value += content;\n }\n }\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.str:\n if (!node.attribute || !node.operator) {\n return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n var _unescapeValue = (0, _attribute.unescapeValue)(content),\n unescaped = _unescapeValue.unescaped,\n quoteMark = _unescapeValue.quoteMark;\n\n node.value = unescaped;\n node.quoteMark = quoteMark;\n lastAdded = 'value';\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = content;\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.equals:\n if (!node.attribute) {\n return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n }\n\n if (node.value) {\n return this.error('Unexpected \"=\" found; an operator was already defined.', {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n node.operator = node.operator ? node.operator + content : content;\n lastAdded = 'operator';\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.comment:\n if (lastAdded) {\n if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n node.raws.spaces[lastAdded].after = rawLastComment + content;\n } else {\n var lastValue = node[lastAdded] || '';\n var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n (0, _util.ensureObject)(node, 'raws');\n node.raws[lastAdded] = rawLastValue + content;\n }\n } else {\n commentBefore = commentBefore + content;\n }\n\n break;\n\n default:\n return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n pos++;\n }\n\n unescapeProp(node, \"attribute\");\n unescapeProp(node, \"namespace\");\n this.newNode(new _attribute[\"default\"](node));\n this.position++;\n }\n /**\n * return a node containing meaningless garbage up to (but not including) the specified token position.\n * if the token position is negative, all remaining tokens are consumed.\n *\n * This returns an array containing a single string node if all whitespace,\n * otherwise an array of comment nodes with space before and after.\n *\n * These tokens are not added to the current selector, the caller can add them or use them to amend\n * a previous node's space metadata.\n *\n * In lossy mode, this returns only comments.\n */\n ;\n\n _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n if (stopPosition < 0) {\n stopPosition = this.tokens.length;\n }\n\n var startPosition = this.position;\n var nodes = [];\n var space = \"\";\n var lastComment = undefined;\n\n do {\n if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n if (!this.options.lossy) {\n space += this.content();\n }\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n var spaces = {};\n\n if (space) {\n spaces.before = space;\n space = \"\";\n }\n\n lastComment = new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n spaces: spaces\n });\n nodes.push(lastComment);\n }\n } while (++this.position < stopPosition);\n\n if (space) {\n if (lastComment) {\n lastComment.spaces.after = space;\n } else if (!this.options.lossy) {\n var firstToken = this.tokens[startPosition];\n var lastToken = this.tokens[this.position - 1];\n nodes.push(new _string[\"default\"]({\n value: '',\n source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: {\n before: space,\n after: ''\n }\n }));\n }\n }\n\n return nodes;\n }\n /**\n * \n * @param {*} nodes \n */\n ;\n\n _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n var _this2 = this;\n\n if (requiredSpace === void 0) {\n requiredSpace = false;\n }\n\n var space = \"\";\n var rawSpace = \"\";\n nodes.forEach(function (n) {\n var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n });\n\n if (rawSpace === space) {\n rawSpace = undefined;\n }\n\n var result = {\n space: space,\n rawSpace: rawSpace\n };\n return result;\n };\n\n _proto.isNamedCombinator = function isNamedCombinator(position) {\n if (position === void 0) {\n position = this.position;\n }\n\n return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n };\n\n _proto.namedCombinator = function namedCombinator() {\n if (this.isNamedCombinator()) {\n var nameRaw = this.content(this.tokens[this.position + 1]);\n var name = (0, _util.unesc)(nameRaw).toLowerCase();\n var raws = {};\n\n if (name !== nameRaw) {\n raws.value = \"/\" + nameRaw + \"/\";\n }\n\n var node = new _combinator[\"default\"]({\n value: \"/\" + name + \"/\",\n source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n raws: raws\n });\n this.position = this.position + 3;\n return node;\n } else {\n this.unexpected();\n }\n };\n\n _proto.combinator = function combinator() {\n var _this3 = this;\n\n if (this.content() === '|') {\n return this.namespace();\n } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n if (nodes.length > 0) {\n var last = this.current.last;\n\n if (last) {\n var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n space = _this$convertWhitespa.space,\n rawSpace = _this$convertWhitespa.rawSpace;\n\n if (rawSpace !== undefined) {\n last.rawSpaceAfter += rawSpace;\n }\n\n last.spaces.after += space;\n } else {\n nodes.forEach(function (n) {\n return _this3.newNode(n);\n });\n }\n }\n\n return;\n }\n\n var firstToken = this.currToken;\n var spaceOrDescendantSelectorNodes = undefined;\n\n if (nextSigTokenPos > this.position) {\n spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n }\n\n var node;\n\n if (this.isNamedCombinator()) {\n node = this.namedCombinator();\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n node = new _combinator[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n });\n this.position++;\n } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n } else if (!spaceOrDescendantSelectorNodes) {\n this.unexpected();\n }\n\n if (node) {\n if (spaceOrDescendantSelectorNodes) {\n var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n _space = _this$convertWhitespa2.space,\n _rawSpace = _this$convertWhitespa2.rawSpace;\n\n node.spaces.before = _space;\n node.rawSpaceBefore = _rawSpace;\n }\n } else {\n // descendant combinator\n var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n _space2 = _this$convertWhitespa3.space,\n _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n if (!_rawSpace2) {\n _rawSpace2 = _space2;\n }\n\n var spaces = {};\n var raws = {\n spaces: {}\n };\n\n if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n spaces.before = _space2.slice(0, _space2.length - 1);\n raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n spaces.after = _space2.slice(1);\n raws.spaces.after = _rawSpace2.slice(1);\n } else {\n raws.value = _rawSpace2;\n }\n\n node = new _combinator[\"default\"]({\n value: ' ',\n source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: spaces,\n raws: raws\n });\n }\n\n if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n node.spaces.after = this.optionalSpace(this.content());\n this.position++;\n }\n\n return this.newNode(node);\n };\n\n _proto.comma = function comma() {\n if (this.position === this.tokens.length - 1) {\n this.root.trailingComma = true;\n this.position++;\n return;\n }\n\n this.current._inferEndPosition();\n\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position + 1])\n }\n });\n this.current.parent.append(selector);\n this.current = selector;\n this.position++;\n };\n\n _proto.comment = function comment() {\n var current = this.currToken;\n this.newNode(new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.error = function error(message, opts) {\n throw this.root.error(message, opts);\n };\n\n _proto.missingBackslash = function missingBackslash() {\n return this.error('Expected a backslash preceding the semicolon.', {\n index: this.currToken[_tokenize.FIELDS.START_POS]\n });\n };\n\n _proto.missingParenthesis = function missingParenthesis() {\n return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.missingSquareBracket = function missingSquareBracket() {\n return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.unexpected = function unexpected() {\n return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.namespace = function namespace() {\n var before = this.prevToken && this.content(this.prevToken) || true;\n\n if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.position++;\n return this.word(before);\n } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n this.position++;\n return this.universal(before);\n }\n };\n\n _proto.nesting = function nesting() {\n if (this.nextToken) {\n var nextContent = this.content(this.nextToken);\n\n if (nextContent === \"|\") {\n this.position++;\n return;\n }\n }\n\n var current = this.currToken;\n this.newNode(new _nesting[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.parentheses = function parentheses() {\n var last = this.current.last;\n var unbalanced = 1;\n this.position++;\n\n if (last && last.type === types.PSEUDO) {\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position - 1])\n }\n });\n var cache = this.current;\n last.append(selector);\n this.current = selector;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n if (unbalanced) {\n this.parse();\n } else {\n this.current.source.end = tokenEnd(this.currToken);\n this.current.parent.source.end = tokenEnd(this.currToken);\n this.position++;\n }\n }\n\n this.current = cache;\n } else {\n // I think this case should be an error. It's used to implement a basic parse of media queries\n // but I don't think it's a good idea.\n var parenStart = this.currToken;\n var parenValue = \"(\";\n var parenEnd;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n parenEnd = this.currToken;\n parenValue += this.parseParenthesisToken(this.currToken);\n this.position++;\n }\n\n if (last) {\n last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n } else {\n this.newNode(new _string[\"default\"]({\n value: parenValue,\n source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n }));\n }\n }\n\n if (unbalanced) {\n return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.pseudo = function pseudo() {\n var _this4 = this;\n\n var pseudoStr = '';\n var startingToken = this.currToken;\n\n while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n pseudoStr += this.content();\n this.position++;\n }\n\n if (!this.currToken) {\n return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.splitWord(false, function (first, length) {\n pseudoStr += first;\n\n _this4.newNode(new _pseudo[\"default\"]({\n value: pseudoStr,\n source: getTokenSourceSpan(startingToken, _this4.currToken),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n }));\n\n if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n _this4.error('Misplaced parenthesis.', {\n index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n });\n }\n });\n } else {\n return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.space = function space() {\n var content = this.content(); // Handle space before and after the selector\n\n if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n return node.type === 'comment';\n })) {\n this.spaces = this.optionalSpace(content);\n this.position++;\n } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n this.current.last.spaces.after = this.optionalSpace(content);\n this.position++;\n } else {\n this.combinator();\n }\n };\n\n _proto.string = function string() {\n var current = this.currToken;\n this.newNode(new _string[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.universal = function universal(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n var current = this.currToken;\n this.newNode(new _universal[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }), namespace);\n this.position++;\n };\n\n _proto.splitWord = function splitWord(namespace, firstCallback) {\n var _this5 = this;\n\n var nextToken = this.nextToken;\n var word = this.content();\n\n while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n this.position++;\n var current = this.content();\n word += current;\n\n if (current.lastIndexOf('\\\\') === current.length - 1) {\n var next = this.nextToken;\n\n if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n word += this.requiredSpace(this.content(next));\n this.position++;\n }\n }\n\n nextToken = this.nextToken;\n }\n\n var hasClass = indexesOf(word, '.').filter(function (i) {\n // Allow escaped dot within class name\n var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n return !escapedDot && !isKeyframesPercent;\n });\n var hasId = indexesOf(word, '#').filter(function (i) {\n return word[i - 1] !== '\\\\';\n }); // Eliminate Sass interpolations from the list of id indexes\n\n var interpolations = indexesOf(word, '#{');\n\n if (interpolations.length) {\n hasId = hasId.filter(function (hashIndex) {\n return !~interpolations.indexOf(hashIndex);\n });\n }\n\n var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n indices.forEach(function (ind, i) {\n var index = indices[i + 1] || word.length;\n var value = word.slice(ind, index);\n\n if (i === 0 && firstCallback) {\n return firstCallback.call(_this5, value, indices.length);\n }\n\n var node;\n var current = _this5.currToken;\n var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n if (~hasClass.indexOf(ind)) {\n var classNameOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n } else if (~hasId.indexOf(ind)) {\n var idOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n } else {\n var tagOpts = {\n value: value,\n source: source,\n sourceIndex: sourceIndex\n };\n unescapeProp(tagOpts, \"value\");\n node = new _tag[\"default\"](tagOpts);\n }\n\n _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n namespace = null;\n });\n this.position++;\n };\n\n _proto.word = function word(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n return this.splitWord(namespace);\n };\n\n _proto.loop = function loop() {\n while (this.position < this.tokens.length) {\n this.parse(true);\n }\n\n this.current._inferEndPosition();\n\n return this.root;\n };\n\n _proto.parse = function parse(throwOnParenthesis) {\n switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n this.space();\n break;\n\n case tokens.comment:\n this.comment();\n break;\n\n case tokens.openParenthesis:\n this.parentheses();\n break;\n\n case tokens.closeParenthesis:\n if (throwOnParenthesis) {\n this.missingParenthesis();\n }\n\n break;\n\n case tokens.openSquare:\n this.attribute();\n break;\n\n case tokens.dollar:\n case tokens.caret:\n case tokens.equals:\n case tokens.word:\n this.word();\n break;\n\n case tokens.colon:\n this.pseudo();\n break;\n\n case tokens.comma:\n this.comma();\n break;\n\n case tokens.asterisk:\n this.universal();\n break;\n\n case tokens.ampersand:\n this.nesting();\n break;\n\n case tokens.slash:\n case tokens.combinator:\n this.combinator();\n break;\n\n case tokens.str:\n this.string();\n break;\n // These cases throw; no break needed.\n\n case tokens.closeSquare:\n this.missingSquareBracket();\n\n case tokens.semicolon:\n this.missingBackslash();\n\n default:\n this.unexpected();\n }\n }\n /**\n * Helpers\n */\n ;\n\n _proto.expected = function expected(description, index, found) {\n if (Array.isArray(description)) {\n var last = description.pop();\n description = description.join(', ') + \" or \" + last;\n }\n\n var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n if (!found) {\n return this.error(\"Expected \" + an + \" \" + description + \".\", {\n index: index\n });\n }\n\n return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n index: index\n });\n };\n\n _proto.requiredSpace = function requiredSpace(space) {\n return this.options.lossy ? ' ' : space;\n };\n\n _proto.optionalSpace = function optionalSpace(space) {\n return this.options.lossy ? '' : space;\n };\n\n _proto.lossySpace = function lossySpace(space, required) {\n if (this.options.lossy) {\n return required ? ' ' : '';\n } else {\n return space;\n }\n };\n\n _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n var content = this.content(token);\n\n if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n return this.requiredSpace(content);\n } else {\n return content;\n }\n };\n\n _proto.newNode = function newNode(node, namespace) {\n if (namespace) {\n if (/^ +$/.test(namespace)) {\n if (!this.options.lossy) {\n this.spaces = (this.spaces || '') + namespace;\n }\n\n namespace = true;\n }\n\n node.namespace = namespace;\n unescapeProp(node, \"namespace\");\n }\n\n if (this.spaces) {\n node.spaces.before = this.spaces;\n this.spaces = '';\n }\n\n return this.current.append(node);\n };\n\n _proto.content = function content(token) {\n if (token === void 0) {\n token = this.currToken;\n }\n\n return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n };\n\n /**\n * returns the index of the next non-whitespace, non-comment token.\n * returns -1 if no meaningful token is found.\n */\n _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n if (startPosition === void 0) {\n startPosition = this.position + 1;\n }\n\n var searchPosition = startPosition;\n\n while (searchPosition < this.tokens.length) {\n if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n searchPosition++;\n continue;\n } else {\n return searchPosition;\n }\n }\n\n return -1;\n };\n\n _createClass(Parser, [{\n key: \"currToken\",\n get: function get() {\n return this.tokens[this.position];\n }\n }, {\n key: \"nextToken\",\n get: function get() {\n return this.tokens[this.position + 1];\n }\n }, {\n key: \"prevToken\",\n get: function get() {\n return this.tokens[this.position - 1];\n }\n }]);\n\n return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n function Processor(func, options) {\n this.func = func || function noop() {};\n\n this.funcRes = null;\n this.options = options;\n }\n\n var _proto = Processor.prototype;\n\n _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.updateSelector === false) {\n return false;\n } else {\n return typeof rule !== \"string\";\n }\n };\n\n _proto._isLossy = function _isLossy(options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.lossless === false) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto._root = function _root(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n return parser.root;\n };\n\n _proto._parseOptions = function _parseOptions(options) {\n return {\n lossy: this._isLossy(options)\n };\n };\n\n _proto._run = function _run(rule, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var root = _this._root(rule, options);\n\n Promise.resolve(_this.func(root)).then(function (transform) {\n var string = undefined;\n\n if (_this._shouldUpdateSelector(rule, options)) {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }).then(resolve, reject);\n } catch (e) {\n reject(e);\n return;\n }\n });\n };\n\n _proto._runSync = function _runSync(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var root = this._root(rule, options);\n\n var transform = this.func(root);\n\n if (transform && typeof transform.then === \"function\") {\n throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n }\n\n var string = undefined;\n\n if (options.updateSelector && typeof rule !== \"string\") {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }\n /**\n * Process rule into a selector AST.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise<parser.Root>} The AST of the selector after processing it.\n */\n ;\n\n _proto.ast = function ast(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.root;\n });\n }\n /**\n * Process rule into a selector AST synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {parser.Root} The AST of the selector after processing it.\n */\n ;\n\n _proto.astSync = function astSync(rule, options) {\n return this._runSync(rule, options).root;\n }\n /**\n * Process a selector into a transformed value asynchronously\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise<any>} The value returned by the processor.\n */\n ;\n\n _proto.transform = function transform(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.transform;\n });\n }\n /**\n * Process a selector into a transformed value synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {any} The value returned by the processor.\n */\n ;\n\n _proto.transformSync = function transformSync(rule, options) {\n return this._runSync(rule, options).transform;\n }\n /**\n * Process a selector into a new selector string asynchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.process = function process(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.string || result.root.toString();\n });\n }\n /**\n * Process a selector into a new selector string synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.processSync = function processSync(rule, options) {\n var result = this._runSync(rule, options);\n\n return result.string || result.root.toString();\n };\n\n return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _constructors[key]) return;\n exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _guards[key]) return;\n exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","const isPlainObject = require('lodash.isplainobject')\n\nconst parser = require('postcss-selector-parser')\nconst parseSelector = parser()\n\nmodule.exports = {\n isUsableColor(color, values) {\n return isPlainObject(values) && color !== 'gray' && values[600]\n },\n\n /**\n * @param {string} selector\n */\n commonTrailingPseudos(selector) {\n let ast = parseSelector.astSync(selector)\n\n /** @type {import('postcss-selector-parser').Pseudo[][]} */\n let matrix = []\n\n // Put the pseudo elements in reverse order in a sparse, column-major 2D array\n for (let [i, sel] of ast.nodes.entries()) {\n for (const [j, child] of [...sel.nodes].reverse().entries()) {\n // We only care about pseudo elements\n if (child.type !== 'pseudo' || !child.value.startsWith('::')) {\n break\n }\n\n matrix[j] = matrix[j] || []\n matrix[j][i] = child\n }\n }\n\n let trailingPseudos = parser.selector()\n\n // At this point the pseudo elements are in a column-major 2D array\n // This means each row contains one \"column\" of pseudo elements from each selector\n // We can compare all the pseudo elements in a row to see if they are the same\n for (const pseudos of matrix) {\n // It's a sparse 2D array so there are going to be holes in the rows\n // We skip those\n if (!pseudos) {\n continue\n }\n\n let values = new Set([...pseudos.map((p) => p.value)])\n\n // The pseudo elements are not the same\n if (values.size > 1) {\n break\n }\n\n pseudos.forEach((pseudo) => pseudo.remove())\n trailingPseudos.prepend(pseudos[0])\n }\n\n if (trailingPseudos.nodes.length) {\n return [trailingPseudos.toString(), ast.toString()]\n }\n\n return [null, selector]\n },\n}\n","const plugin = require('tailwindcss/plugin')\nconst merge = require('lodash.merge')\nconst castArray = require('lodash.castarray')\nconst styles = require('./styles')\nconst { commonTrailingPseudos } = require('./utils')\n\nconst computed = {\n // Reserved for future \"magic properties\", for example:\n // bulletColor: (color) => ({ 'ul > li::before': { backgroundColor: color } }),\n}\n\nfunction inWhere(selector, { className, modifier, prefix }) {\n let prefixedNot = prefix(`.not-${className}`).slice(1)\n let selectorPrefix = selector.startsWith('>')\n ? `${modifier === 'DEFAULT' ? `.${className}` : `.${className}-${modifier}`} `\n : ''\n\n // Parse the selector, if every component ends in the same pseudo element(s) then move it to the end\n let [trailingPseudo, rebuiltSelector] = commonTrailingPseudos(selector)\n\n if (trailingPseudo) {\n return `:where(${selectorPrefix}${rebuiltSelector}):not(:where([class~=\"${prefixedNot}\"],[class~=\"${prefixedNot}\"] *))${trailingPseudo}`\n }\n\n return `:where(${selectorPrefix}${selector}):not(:where([class~=\"${prefixedNot}\"],[class~=\"${prefixedNot}\"] *))`\n}\n\nfunction isObject(value) {\n return typeof value === 'object' && value !== null\n}\n\nfunction configToCss(config = {}, { target, className, modifier, prefix }) {\n function updateSelector(k, v) {\n if (target === 'legacy') {\n return [k, v]\n }\n\n if (Array.isArray(v)) {\n return [k, v]\n }\n\n if (isObject(v)) {\n let nested = Object.values(v).some(isObject)\n if (nested) {\n return [\n inWhere(k, { className, modifier, prefix }),\n v,\n Object.fromEntries(Object.entries(v).map(([k, v]) => updateSelector(k, v))),\n ]\n }\n\n return [inWhere(k, { className, modifier, prefix }), v]\n }\n\n return [k, v]\n }\n\n return Object.fromEntries(\n Object.entries(\n merge(\n {},\n ...Object.keys(config)\n .filter((key) => computed[key])\n .map((key) => computed[key](config[key])),\n ...castArray(config.css || {})\n )\n ).map(([k, v]) => updateSelector(k, v))\n )\n}\n\nmodule.exports = plugin.withOptions(\n ({ className = 'prose', target = 'modern' } = {}) => {\n return function ({ addVariant, addComponents, theme, prefix }) {\n let modifiers = theme('typography')\n\n let options = { className, prefix }\n\n for (let [name, ...selectors] of [\n ['headings', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'th'],\n ['h1'],\n ['h2'],\n ['h3'],\n ['h4'],\n ['h5'],\n ['h6'],\n ['p'],\n ['a'],\n ['blockquote'],\n ['figure'],\n ['figcaption'],\n ['strong'],\n ['em'],\n ['kbd'],\n ['code'],\n ['pre'],\n ['ol'],\n ['ul'],\n ['li'],\n ['table'],\n ['thead'],\n ['tr'],\n ['th'],\n ['td'],\n ['img'],\n ['video'],\n ['hr'],\n ['lead', '[class~=\"lead\"]'],\n ]) {\n selectors = selectors.length === 0 ? [name] : selectors\n\n let selector =\n target === 'legacy' ? selectors.map((selector) => `& ${selector}`) : selectors.join(', ')\n\n addVariant(\n `${className}-${name}`,\n target === 'legacy' ? selector : `& :is(${inWhere(selector, options)})`\n )\n }\n\n addComponents(\n Object.keys(modifiers).map((modifier) => ({\n [modifier === 'DEFAULT' ? `.${className}` : `.${className}-${modifier}`]: configToCss(\n modifiers[modifier],\n {\n target,\n className,\n modifier,\n prefix,\n }\n ),\n }))\n )\n }\n },\n () => {\n return {\n theme: { typography: styles },\n }\n }\n)\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.red,\n info: TailwindColors.slate,\n success: TailwindColors.emerald,\n primary: TailwindColors.blue,\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 ringWidth: {\n 1: \"1px\",\n },\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: [require(\"@tailwindcss/typography\")],\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","// @ts-ignore\nimport resolveConfig from \"tailwindcss/resolveConfig\"\n// @ts-ignore\nimport tailwindConfig from \"../tailwind.config.js\"\nimport { Size, BaseColor, Position } 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 TooltipColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const TooltipPositions = [\n Position.top,\n Position.bottom,\n Position.right,\n Position.left,\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 * as d3 from \"d3\"\nimport { 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}\nexport function getImageData(\n image: HTMLImageElement,\n x = 0,\n y = 0,\n width = image.naturalWidth,\n height = image.naturalHeight\n) {\n const canvas = document.createElement(\"canvas\")\n const ctx = canvas.getContext(\"2d\")\n canvas.width = width\n canvas.height = height\n ctx?.drawImage(image, x, y, width, height, 0, 0, width, height)\n const dataUrl = canvas.toDataURL()\n canvas.remove()\n\n return dataUrl\n}\n\nexport function isValidDate(dateString?: string) {\n return Boolean(dateString?.length && !isNaN(new Date(dateString).getTime()))\n}\n\nexport function hexToRgba(hex: string, alpha = 1) {\n let r = 0,\n g = 0,\n b = 0\n if (hex.length === 4) {\n r = parseInt(hex[1] + hex[1], 16)\n g = parseInt(hex[2] + hex[2], 16)\n b = parseInt(hex[3] + hex[3], 16)\n } else if (hex.length === 7) {\n r = parseInt(hex[1] + hex[2], 16)\n g = parseInt(hex[3] + hex[4], 16)\n b = parseInt(hex[5] + hex[6], 16)\n }\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\nexport function rgbToRgba(rgb: string, alpha = 1) {\n const values = rgb.match(/\\d+/g)\n if (values && values.length === 3) {\n return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${alpha})`\n }\n\n return null\n}\n\nexport function isRgba(color: string) {\n return color.startsWith(\"rgba\")\n}\n\nexport function toRgba(color: string, alpha = 1) {\n if (isRgba(color)) {\n return color\n } else if (color.startsWith(\"#\")) {\n return hexToRgba(color, alpha)\n } else if (color.startsWith(\"rgb\")) {\n return rgbToRgba(color, alpha)\n }\n\n return color\n}\n\nexport function generateUniqueId(obj: Record<string, unknown>): string {\n const jsonString = JSON.stringify(obj)\n\n return hashCode(jsonString).toString()\n}\n\nexport function hashCode(str: string): number {\n let hash = 0,\n i,\n chr\n if (str.length === 0) {\n return hash\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0\n }\n\n return hash\n}\n\nexport function getGradientColors(\n startColor: string,\n endColor: string,\n length: number\n): string[] {\n const scale = d3\n .scaleLinear()\n .domain([0, length - 1])\n .range([0, 1])\n\n return Array.from({ length }, (_, i) =>\n d3.interpolate(startColor, endColor)(scale(i))\n )\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(\"on-frame-props-change\", { 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<\n Partial<HTMLVideoElement> & { poster: string; backgroundUrl?: string }\n >,\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 const videoOptions = this.videoOptions as Partial<HTMLVideoElement> & {\n poster: string\n }\n\n return videoOptions?.poster || videoOptions?.backgroundUrl\n },\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\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 async handler(value) {\n this.playing = value\n if (value) {\n await this.play()\n } else {\n this.pause()\n }\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(\"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 { 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 { DirectiveOptions } from \"vue\"\n\ntype TargetElement = HTMLElement & {\n // eslint-disable-next-line no-undef\n handleClick: EventListener\n}\n\nconst ClickOutsideDirective: DirectiveOptions = {\n bind(el, binding) {\n const element = el as TargetElement\n\n element.handleClick = function (event: Event) {\n if (\n !(element === event.target || element.contains(event.target as Node))\n ) {\n const callback = binding.value\n if (typeof callback === \"function\") {\n callback(event)\n }\n }\n }\n\n setTimeout(() => {\n document.addEventListener(\"click\", element.handleClick)\n })\n },\n unbind(el) {\n const element = el as TargetElement\n if (element.handleClick) {\n document.removeEventListener(\"click\", element.handleClick)\n // @ts-expect-error non-optional\n delete element.handleClick\n }\n },\n}\n\nexport default ClickOutsideDirective\n","import ResizeObserverDirective from \"@/directives/resizeObserver\"\nimport ClickOutsideDirective from \"@/directives/clickOutside\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n {\n name: \"click-outside\",\n definition: ClickOutsideDirective,\n },\n]\n\nexport { ResizeObserverDirective, ClickOutsideDirective }\n","export const defs = {\n transparencyGradient: \"transparency-gradient\",\n transparencyGradientLight: \"transparency-gradient-light\",\n loadingGradient: \"loading-gradient\",\n stripedPattern: \"stripedPattern\",\n clipPath: \"clip-path\",\n}\n\nexport const classNames = {\n xAxis: \"e-x-axis\",\n xAxisDark: \"e-x-axis--dark\",\n xAxisOverview: \"e-x-axis-overview\",\n xAxisDetailed: \"e-x-axis-detailed\",\n xAxisBackground: \"e-x-axis-background\",\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n eventGroupContent: \"event-group-content\",\n eventRect: \"event-rect\",\n eventRectContainer: \"event-rect-container\",\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 _legacyLabelGroup: \"legacy-label-g\",\n _legacyLabelBg: \"legacy-label-bg\",\n _legacyLabelBgFill: \"legacy-label-bg-fill\",\n _legacyLabelText: \"legacy-label-text\",\n _legacyLoadingIndicator: \"legacy-loading-indicator\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n marker: \"marker\",\n markerLabel: \"marker-label\",\n markerLine: \"marker-line\",\n markerDragged: \"marker--dragged\",\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 barChartGroup: \"bar-chart-group\",\n lineGraphGroup: \"line-graph-group\",\n lineGraphGroupLabel: \"line-graph-group-label\",\n areaGraphPath: \"area-graph-path\",\n lineGraphPath: \"line-graph-path\",\n lineGraphHoverZone: \"line-graph-hover-zone\",\n lineGraphDot: \"line-graph-dot\",\n forbiddenInterval: \"forbidden-interval\",\n}\n","import moment from \"moment-timezone\"\nimport { D3DateParams, D3TimestampParams } from \"@/types\"\n\nexport function tzDateToD3Date({\n timestamp,\n timezone,\n}: D3TimestampParams): Date {\n const offsetMinutes = getUtcOffset(timestamp, timezone)\n\n return moment(timestamp).add(offsetMinutes, \"minutes\").toDate()\n}\n\nexport function d3DateToTzDate({ date, timezone }: D3DateParams): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n const offsetMinutes = getUtcOffset(date, timezone)\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(offsetMinutes, true)\n .format()\n}\n\nfunction getUtcOffset(date: Date | string | number, timezone?: string) {\n return timezone\n ? moment.tz(date, timezone).utcOffset()\n : unsafeGuessUtcOffset(date)\n}\n\nfunction unsafeGuessUtcOffset(date: Date | string | number) {\n return moment.parseZone(date).utcOffset()\n}\n","\nimport Vue, { PropType } from \"vue\"\nimport * as d3 from \"d3\"\nimport { TimelineMilestoneEvent, Timestamp } from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport { classNames } from \"@/components/charts/constants\"\nimport { tzDateToD3Date } from \"@/components/charts/utils\"\n\nexport default Vue.extend({\n name: \"ETimelineMilestone\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n milestone: {\n type: Object as PropType<TimelineMilestoneEvent>,\n required: true,\n },\n y: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n default: 18,\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 timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n },\n data() {\n return {\n classNames,\n timeouts: [] as number[],\n isInitialRender: true,\n isMouseOver: false,\n containerWidth: \"\",\n containerHeight: \"\",\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.isMouseOver ? this.containerWidth : this.size}px`,\n height: `${this.isMouseOver ? this.containerHeight : this.size}px`,\n }\n },\n positionStyles(): Record<string, any> {\n return {\n left: `${this.timeScale(\n this.tzStringToDate(this.milestone.timestamp)\n )}px`,\n top: `${this.linePosition}px`,\n transform:\n this.dot && this.isMouseOver\n ? `translateY(calc(-100% - ${this.lineHeight}px))`\n : \"\",\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 linePosition(): number {\n const yOffset = this.height / 2\n\n return this.y + yOffset - 1\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 this.$emit(\"hovered-milestone\", this.milestone)\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 (!this.containerWidth) {\n this.containerWidth = container.dataset.initialContentWidth = String(\n contentBox.width\n )\n }\n if (!this.containerHeight) {\n this.containerHeight = container.dataset.initialContentHeight = String(\n contentBox.height\n )\n }\n\n container.dataset.transitionStart = String(Date.now())\n container.style.borderRadius = \"0.5em\"\n container.classList.add(classNames.milestoneHovered)\n content.style.opacity = \"1\"\n content.style.width = this.containerWidth + \"px\"\n content.style.height = this.containerHeight + \"px\"\n },\n onMilestoneMouseMove() {\n this.timeouts.forEach((timeoutId) => clearTimeout(timeoutId))\n this.isMouseOver = true\n },\n onMilestoneMouseLeave(e?: MouseEvent) {\n this.$emit(\"hovered-milestone\", null)\n\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(classNames.milestoneHovered)\n container.dataset.timeoutId = \"\"\n }, timeoutDuration)\n container.dataset.timeoutId = String(timeoutId)\n this.timeouts.push(timeoutId as unknown as number)\n this.isMouseOver = false\n },\n onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent) {\n this.$emit(\"milestone-click\", milestone)\n },\n tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timezone })\n },\n },\n})\n","\nimport { TimelineMarker } from \"@/types\"\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"ETimelineMarker\",\n props: {\n marker: {\n type: Object as PropType<TimelineMarker>,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n hidden: {\n type: [Boolean, undefined] as PropType<Boolean | undefined>,\n default: undefined,\n },\n position: {\n type: [Number, undefined] as PropType<Number | undefined>,\n default: undefined,\n },\n },\n methods: {\n getMarkerClass(marker: TimelineMarker) {\n return {\n \"marker--hidden\": this.hidden,\n \"marker--draggable\": marker?.isDraggable,\n ...(marker.className ? { [marker?.className]: true } : {}),\n }\n },\n getMarkerContainerStyle(): Record<string, string> {\n return {\n left: `${this.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.height + 12}px`,\n }\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport { TimelineMarker, Timestamp } from \"@/types\"\nimport Vue, { PropType } from \"vue\"\nimport { tzDateToD3Date, d3DateToTzDate } from \"@/components/charts/utils\"\nimport ETimelineMarker from \"@/components/timeline/ETimelineMarker.vue\"\nimport { classNames } from \"@/components/charts/constants\"\n\nexport default Vue.extend({\n name: \"ETimelineMarkers\",\n components: {\n ETimelineMarker,\n },\n props: {\n markers: {\n type: Array as PropType<Array<TimelineMarker>>,\n default: () => [],\n },\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n timeZone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n height: {\n type: Number,\n required: true,\n },\n svgLeft: {\n type: Number,\n default: undefined,\n },\n stickyMarkers: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\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 }\n },\n watch: {\n timeScale: {\n handler() {\n this.updateMarkers()\n },\n deep: true,\n },\n markers() {\n this.updateMarkers()\n },\n },\n methods: {\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 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>(`.${classNames.marker}`)\n .data(this.markers)\n .call(this.markersDragBehavior)\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>(`.${classNames.marker}`).call(\n this.markersDragBehavior\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 dragEvent.sourceEvent?.preventDefault()\n if (dragEvent.type === \"start\") {\n this.initialMarkerDragMouseOffset =\n dragEvent.x -\n markerElement\n .node()\n .querySelector(`.${classNames.markerLine}`)\n .getBoundingClientRect().left\n markerElement.classed(classNames.markerDragged, true)\n }\n\n const targetLeft = dragEvent.x - this.initialMarkerDragMouseOffset\n const newTimestamp = this.timeScale.invert(\n targetLeft - this.svgLeft\n ) as Date\n let 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\") {\n const id = marker.id || (marker.timestamp as string)\n newPosition = isNewTimestampAllowed\n ? newPosition\n : this.timeScale(this.tzStringToDate(marker.timestamp))\n this.markersPositions = {\n ...this.markersPositions,\n [id]: {\n ...this.markersPositions[id],\n position: newPosition,\n },\n }\n markerElement.classed(classNames.markerDragged, false)\n }\n\n if (dragEvent.type !== \"start\") {\n this.$emit(`marker-drag-${dragEvent.type}`, {\n marker,\n newTimestamp: isNewTimestampAllowed\n ? this.dateToTzString(newTimestamp)\n : marker.timestamp,\n })\n }\n },\n updateMarkers() {\n if (!this.markers.length) {\n return\n }\n const padding = 12\n const overlapThreshold = 200\n this.markers.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 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 tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timeZone })\n },\n dateToTzString(date: Date): string {\n return d3DateToTzDate({ date, timezone: this.timeZone })\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport * as d3 from \"d3\"\nimport { d3DateToTzDate, tzDateToD3Date } from \"@/components/charts/utils\"\nimport { TimelineDomain } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EZoomBehavior\",\n props: {\n width: {\n type: [Number, undefined] as PropType<number | undefined>,\n default: undefined,\n },\n /**\n * date range representing the time domain of the scale.\n */\n domain: {\n type: Array as PropType<TimelineDomain>,\n required: true,\n },\n /**\n * When set, the component will zoom to this domain within the main domain.\n */\n focusedDomain: {\n type: [Array, undefined] as PropType<TimelineDomain | undefined>,\n default: undefined,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n scalingDuration: {\n type: Number,\n default: 400,\n },\n translationDuration: {\n type: Number,\n default: 400,\n },\n focusedTimestamp: {\n type: [String, Date, Number],\n default: \"\",\n },\n },\n data() {\n return {\n timeScale: null as unknown as d3.ScaleTime<number, number>,\n initialTimeScale: null as unknown as d3.ScaleTime<number, number>,\n zoomBehavior: null as unknown as d3.ZoomBehavior<Element, any>,\n selection: null as unknown as d3.Selection<Element, any, any, any>,\n isTransitioning: false,\n container: null as unknown as Element,\n isLocked: false,\n transformDiff: { translation: 0, scale: 1 },\n lastTransform: { x: 0, y: 0, k: 1 },\n isLeftBoundaryReached: false,\n isRightBoundaryReached: false,\n resetBoundariesTimeout: 0,\n }\n },\n computed: {\n minDate(): Date {\n const minDate = this.domain[0]\n\n return this.toD3Date(minDate)\n },\n maxDate(): Date {\n const maxDate = this.domain[1]\n\n return this.toD3Date(maxDate)\n },\n focusedStartDate(): Date {\n const focusedDomain = this.focusedDomain || this.domain\n const focusedStartDate = focusedDomain[0]\n\n return this.toD3Date(focusedStartDate)\n },\n focusedEndDate(): Date {\n const focusedDomain = this.focusedDomain || this.domain\n const focusedEndDate = focusedDomain[1]\n\n return this.toD3Date(focusedEndDate)\n },\n },\n watch: {\n timeScale() {\n this.emitTimeScaleChange()\n this.emitFocusedDomainChange()\n },\n focusedDomain(v) {\n this.zoomToFocusedDomain(v)\n },\n focusedTimestamp(date) {\n if (date) {\n this.panToTimestamp(date)\n }\n },\n transformDiff() {\n this.$emit(\"transform-changed\", this.transformDiff)\n },\n },\n mounted() {\n this.initRefs()\n this.initTimeScale()\n this.initZoomBehavior()\n this.emitTimeScaleChange()\n },\n methods: {\n initRefs() {\n this.container = this.$refs.container as Element\n },\n initTimeScale() {\n this.timeScale = d3\n .scaleTime()\n .domain([this.focusedStartDate, this.focusedEndDate])\n .range([0, this.getWidth()])\n this.initialTimeScale = this.timeScale.copy()\n },\n calculateZoomExtents() {\n const focusedDomain = [this.focusedStartDate, this.focusedEndDate]\n const width = this.getWidth()\n const maxDuration = this.maxDate.getTime() - this.minDate.getTime()\n const focusedDuration =\n this.focusedEndDate.getTime() - this.focusedStartDate.getTime()\n const minScale = focusedDuration / maxDuration\n const scaleExtent = [minScale, Infinity] as [number, number]\n\n const scale = this.initialTimeScale.copy()\n scale.domain(focusedDomain)\n const minTranslateX = scale(this.minDate)\n const maxTranslateX = -(width - scale(this.maxDate))\n const translateExtent = [\n [minTranslateX ? minTranslateX : -Infinity, 0],\n [maxTranslateX ? maxTranslateX : Infinity, 0],\n ] as [[number, number], [number, number]]\n\n return {\n scaleExtent,\n translateExtent,\n }\n },\n initZoomBehavior() {\n const { scaleExtent, translateExtent } = this.calculateZoomExtents()\n this.zoomBehavior = d3\n .zoom()\n .scaleExtent(scaleExtent)\n .translateExtent(translateExtent)\n .on(\"zoom\", this.handleZoom)\n this.selection = d3.select(this.container)\n this.selection.call(this.zoomBehavior)\n },\n handleZoom(event: d3.D3ZoomEvent<Element, any>) {\n const newTimeScale = event.transform.rescaleX(\n this.initialTimeScale.copy()\n )\n const newDomain = newTimeScale.domain()\n\n const isLeftBoundaryReached = newDomain[0] <= this.minDate\n const isRightBoundaryReached = newDomain[1] >= this.maxDate\n\n // Revert to the last transform in case the new one exceeds the bounds\n if (isLeftBoundaryReached || isRightBoundaryReached) {\n const lastTransform = d3.zoomIdentity\n .translate(this.lastTransform.x, this.lastTransform.y)\n .scale(this.lastTransform.k)\n\n this.selection.call(this.zoomBehavior.transform, lastTransform)\n\n this.updateBoundaries(isLeftBoundaryReached, isRightBoundaryReached)\n\n return\n }\n\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 this.timeScale = event.transform\n .rescaleX(this.timeScale)\n .domain(newDomain)\n },\n toD3Date(date: string | Date) {\n return tzDateToD3Date({\n timestamp: date,\n timezone: this.timezone,\n })\n },\n toDateString(date: Date | string) {\n return d3DateToTzDate({\n date: date,\n timezone: this.timezone,\n })\n },\n getWidth() {\n if (this.width) {\n return this.width\n }\n\n return this.container?.getBoundingClientRect()?.width\n },\n zoomToFocusedDomain(focusedDomain: TimelineDomain) {\n const startDate = this.toD3Date(focusedDomain[0])\n const endDate = this.toD3Date(focusedDomain[1])\n const domain = this.timeScale.domain()\n if (\n startDate.getTime() === domain[0].getTime() &&\n endDate.getTime() === domain[1].getTime()\n ) {\n return\n }\n\n const domainSpan = this.initialTimeScale.domain().map((d) => d.getTime())\n const domainWidth = domainSpan[1] - domainSpan[0]\n const viewportSpan = endDate.getTime() - startDate.getTime()\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 const newTimeScale = this.initialTimeScale\n .copy()\n .domain([startDate, endDate])\n\n this.selection\n .transition()\n .duration(this.scalingDuration / 2)\n .call(this.zoomBehavior.scaleTo, scaleFactor)\n .on(\"end\", () =>\n this.translateIntervalIntoView(\n startDate.getTime(),\n endDate.getTime(),\n scaleFactor\n )\n )\n this.timeScale = newTimeScale\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.getWidth() / 2\n const translateX = svgCenter - centerPoint\n const currentTransform = d3.zoomTransform(this.selection.node()!)\n this.selection\n .transition()\n .duration(this.translationDuration / 2)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity\n .translate(currentTransform.x + translateX, currentTransform.y)\n .scale(scaleFactor)\n )\n },\n emitTimeScaleChange() {\n /**\n * Emitted when the timeScale changes (on initial render + when the zoom level changes).\n */\n this.$emit(\"time-scale-change\", this.timeScale)\n },\n emitFocusedDomainChange() {\n const container = this.selection.node() as HTMLElement\n if (!container) {\n return\n }\n\n const [visibleFromDate, visibleToDate] = this.timeScale.domain()\n\n /**\n * Emits the current focused-domain value when it's changed either by timeScale change or the prop being changed.\n */\n this.$emit(\"focused-domain-change\", [\n this.toDateString(visibleFromDate),\n this.toDateString(visibleToDate),\n ])\n },\n panToTimestamp(targetTimestamp: string | Date | number) {\n const targetDate = new Date(targetTimestamp)\n const targetX = this.timeScale(targetDate)\n const currentTransform = d3.zoomTransform(\n this.selection.node() as SVGGElement\n )\n const translateX = currentTransform.x - targetX + this.getWidth() / 2\n\n this.selection\n .transition()\n .duration(this.translationDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(currentTransform.k)\n )\n .on(\"end\", () => {\n this.emitFocusedDomainChange()\n })\n },\n updateBoundaries(isLeftReached: boolean, isRightReached: boolean) {\n this.isLeftBoundaryReached = isLeftReached\n this.isRightBoundaryReached = isRightReached\n\n clearTimeout(this.resetBoundariesTimeout)\n this.resetBoundariesTimeout = setTimeout(this.resetBoundaries, 300)\n },\n resetBoundaries() {\n this.isLeftBoundaryReached = false\n this.isRightBoundaryReached = false\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { TimelineTicksConfig } from \"@/types\"\nimport { classNames } from \"@/components/charts/constants\"\n\ntype TicksConfig = {\n formatFn: (d: Date) => string\n interval: any\n}\n\nexport default Vue.extend({\n name: \"EXAxis\",\n props: {\n ticksConfigs: {\n type: Array as PropType<TimelineTicksConfig[]>,\n required: true,\n },\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n default: 0,\n },\n height: {\n type: Number,\n default: 10,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n classNames,\n }\n },\n computed: {\n classes(): Record<string, boolean> {\n return {\n [classNames.xAxis]: true,\n [classNames.xAxisDark]: this.dark,\n }\n },\n axis(): d3.Axis<Date> {\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(this.currentTicksConfig.interval)\n .tickFormat(this.currentTicksConfig.formatFn)\n .tickSizeOuter(0)\n .tickSizeInner(this.height)\n },\n density(): number {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n const hoursPerPixel = (timeAtPixel1 - timeAtPixel0) / HOUR\n\n return !isNaN(hoursPerPixel) ? hoursPerPixel : 1\n },\n currentTicksConfig(): TicksConfig {\n const { interval, format } = this.ticksConfigs.find(\n (config: TimelineTicksConfig) =>\n config.precision >= this.density && 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 },\n watch: {\n timeScale: {\n handler() {\n this.update()\n },\n deep: true,\n },\n currentTicksConfig: {\n handler() {\n this.update()\n },\n deep: true,\n },\n height() {\n this.updateTicksSize()\n },\n },\n mounted() {\n this.update()\n },\n methods: {\n update() {\n const container = this.$refs.container as SVGGElement\n d3.select(container).call(this.axis)\n this.translateTicksText()\n },\n translateTicksText() {\n const container = this.$refs.container as SVGGElement\n d3.select(container)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n textElement.attr(\"x\", 5).attr(\"y\", 0).style(\"text-anchor\", \"start\")\n })\n },\n updateTicksSize() {\n this.axis.tickSizeOuter(0).tickSizeInner(this.height)\n this.update()\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 daySuffix = getFormattedSuffix(parseInt(day))\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 getFormattedSuffix = (d: number) => {\n if (d > 3 && d < 21) return \"th\"\n switch (d % 10) {\n case 1:\n return \"st\"\n case 2:\n return \"nd\"\n case 3:\n return \"rd\"\n default:\n return \"th\"\n }\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 const year = d3.utcFormat(\"%Y\")(d)\n\n return `${abbreviatedMonth} ${day} ${year}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: \"%Y – %B\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcMonth.every(3),\n format: \"%Y Q%q\",\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","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { TimelineAxis } from \"@/types\"\nimport EXAxis from \"@/components/charts/EXAxis.vue\"\nimport { classNames } from \"@/components/charts/constants\"\nimport { defaultAxesConfig } from \"@/components/timeline/ETimeline.config\"\n\nexport default Vue.extend({\n name: \"EXAxisOverview\",\n components: {\n EXAxis,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n default: 0,\n },\n height: {\n type: Number,\n default: 10,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n classNames,\n ticksConfigs: defaultAxesConfig[TimelineAxis.overview],\n }\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { TimelineAxis } from \"@/types\"\nimport EXAxis from \"@/components/charts/EXAxis.vue\"\nimport { classNames } from \"@/components/charts/constants\"\nimport { defaultAxesConfig } from \"@/components/timeline/ETimeline.config\"\n\nexport default Vue.extend({\n name: \"EXAxisDetailed\",\n components: {\n EXAxis,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n default: 0,\n },\n height: {\n type: Number,\n default: 10,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n classNames,\n ticksConfigs: defaultAxesConfig[TimelineAxis.detailed],\n }\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { TimelineAxis } from \"@/types\"\nimport EXAxis from \"@/components/charts/EXAxis.vue\"\nimport { classNames } from \"@/components/charts/constants\"\nimport { defaultAxesConfig } from \"@/components/timeline/ETimeline.config\"\n\nexport default Vue.extend({\n name: \"EXAxisBackground\",\n components: {\n EXAxis,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n default: 0,\n },\n height: {\n type: Number,\n default: 10,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n classNames,\n ticksConfigs: defaultAxesConfig[TimelineAxis.detailedBackground],\n }\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { TimelineChartType, TimelineEventsByType } from \"@/types\"\nimport { defs } from \"@/components/charts/constants\"\n\nexport default Vue.extend({\n name: \"ETimelineSVGDefs\",\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n forbiddenIntervalColor: {\n type: String,\n default: \"#ddd\",\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n data() {\n return {\n defs,\n TimelineChartType,\n transparencyGradients: [\n {\n id: \"transparency-gradient-light\",\n stop: 38,\n opacity: 0.3,\n },\n {\n id: \"transparency-gradient\",\n stop: 130,\n opacity: 0.4,\n },\n ],\n }\n },\n computed: {\n filteredEventsGroups() {\n return this.eventsGroups || {}\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { tzDateToD3Date } from \"@/components/charts/utils\"\nimport { Timestamp } from \"@/types\"\nimport { classNames } from \"@/components/charts/constants\"\n\nexport default Vue.extend({\n name: \"ECursor\",\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n timestamp: {\n type: String,\n required: true,\n },\n timezone: {\n type: String,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n color: {\n type: String,\n default: \"red\",\n },\n width: {\n type: Number,\n default: 1,\n },\n opacity: {\n type: Number,\n default: 1,\n },\n },\n data() {\n return { classNames }\n },\n watch: {\n timestamp() {\n this.repositionCursor()\n },\n timeScale() {\n this.repositionCursor()\n },\n height() {\n this.repositionCursor()\n },\n },\n methods: {\n repositionCursor() {\n const cursorRef = this.$refs.cursor as HTMLElement\n const cursor = d3.select(cursorRef)\n\n if (!cursor) {\n return\n }\n\n if (!this.timestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.timestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor\n .attr(\"x1\", cursorX)\n .attr(\"x2\", cursorX)\n .style(\"opacity\", this.opacity)\n } else {\n cursor.style(\"opacity\", 0)\n }\n\n cursor.attr(\"y2\", this.height)\n },\n tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timezone })\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport ECursor from \"@/components/charts/ECursor.vue\"\n\nexport default Vue.extend({\n name: \"ETimelineCursor\",\n components: {\n ECursor,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n selectedTimestamp: {\n type: String,\n required: true,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n height: {\n type: Number,\n required: true,\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport ECursor from \"@/components/charts/ECursor.vue\"\n\nexport default Vue.extend({\n name: \"ETimelineSelectedTimestampCursor\",\n components: {\n ECursor,\n },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n selectedTimestamp: {\n type: String,\n required: true,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n height: {\n type: Number,\n required: true,\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { d3DateToTzDate, tzDateToD3Date } from \"@/components/charts/utils\"\nimport { Timestamp } from \"@/types\"\n\nexport default Vue.extend({\n name: \"ECursorBehavior\",\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n minHoverZone: {\n type: Number,\n default: 0,\n },\n isHoveringMilestone: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n cursor: null as unknown as d3.Selection<HTMLElement, any, any, any>,\n hoveredTimestamp: null as unknown as string | undefined,\n isHoveringTimeline: false,\n }\n },\n mounted() {\n this.registerEventsListeners()\n },\n methods: {\n registerEventsListeners() {\n const cursorRef = this.$refs.cursor as HTMLElement\n this.cursor = d3.select(cursorRef)\n this.cursor.on(\"mousemove\", this.handleMouseMove)\n this.cursor.on(\"click\", this.handleClick)\n this.cursor.on(\"mouseleave\", this.handleMouseLeave)\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n this.hoveredTimestamp = undefined\n this.$emit(\"mouse-leave\")\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isHoveringMilestone) {\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(\"mouse-move\", mouseX, this.hoveredTimestamp)\n },\n handleClick(event: MouseEvent) {\n if (this.isHoveringMilestone) {\n return\n }\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 this.$emit(\"timestamp-clicked\", formattedDateTz, event.target)\n },\n tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timezone })\n },\n dateToTzString(date: Date): string {\n return d3DateToTzDate({ date, timezone: this.timezone })\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { classNames, defs } from \"@/components/charts/constants\"\n\nexport default Vue.extend({\n name: \"ETimelineGroupContainer\",\n props: {\n groupId: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n default: \"\",\n },\n color: {\n type: String,\n default: \"\",\n },\n backgroundColor: {\n type: String,\n default: \"\",\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n default: 18,\n },\n width: {\n type: Number,\n required: true,\n },\n showLabel: {\n type: Boolean,\n default: true,\n },\n labelWidth: {\n type: [Number, undefined] as PropType<number | undefined>,\n default: undefined,\n },\n labelHeight: {\n type: [Number, undefined] as PropType<number | undefined>,\n default: undefined,\n },\n labelRadius: {\n type: [Number, undefined] as PropType<number | undefined>,\n default: 3,\n },\n xPadding: {\n type: Number,\n default: 5,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return { classNames, characterWidth: 6.5, isHighlighted: false }\n },\n computed: {\n computedClasses(): { [key: string]: Record<string, boolean> } {\n return {\n label: {\n [`${classNames.labelGroup} ${classNames.labelGroup}-${this.groupId}`]:\n true,\n },\n container: {\n [`${classNames.eventGroup} ${classNames.eventGroup}-${this.groupId}`]:\n true,\n [`${classNames.eventGroup}--highlighted`]: this.isHighlighted,\n },\n }\n },\n computedLabelWidth(): number {\n const textWidth =\n this.labelWidth || this.label?.length * this.characterWidth\n\n return textWidth + this.xPadding * 2\n },\n textY(): number {\n const height = this.labelHeight || this.height\n\n return this.y + height / 2\n },\n contentX(): number {\n return this.showLabel ? this.x + this.computedLabelWidth : this.x\n },\n labelBackgroundColor(): string {\n let color = d3.color(this.color)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n textFillColor(): string {\n return (\n this.dark\n ? d3.color(this.color)?.brighter(1.5)\n : d3.color(this.color)?.darker(2)\n )!.toString()\n },\n loadingIndicatorFill(): string {\n return `url(#${defs.loadingGradient}-${this.groupId})`\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { TimelineEvent, TimelineEventsGroup, Timestamp } from \"@/types\"\nimport { d3DateToTzDate, tzDateToD3Date } from \"@/components/charts/utils\"\nimport { classNames } from \"@/components/charts/constants\"\nimport ETimelineGroupContainer from \"@/components/charts/ETimelineGroupContainer.vue\"\n\ntype ComputedEventRect = {\n x: number\n y: number\n width: number\n height: number\n color: string\n textX: number\n textY: number\n textColor: string\n textContent: string\n}\n\nexport default Vue.extend({\n name: \"ETimelineRectsChart\",\n directives: {},\n components: { ETimelineGroupContainer },\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n eventsGroup: {\n type: Object as PropType<TimelineEventsGroup>,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n x: {\n type: Number,\n default: 0,\n },\n y: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n default: 18,\n },\n width: {\n type: Number,\n required: true,\n },\n rectMinWidth: {\n type: Number,\n default: 1,\n },\n rectYPadding: {\n type: Number,\n default: 0,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n showLabel: {\n type: Boolean,\n default: true,\n },\n labelWidth: {\n type: [Number, undefined] as PropType<number | undefined>,\n default: undefined,\n },\n timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n dots: {\n type: Boolean,\n default: false,\n },\n dotsSize: {\n type: Number,\n default: 3,\n },\n barBorderRadius: {\n type: Number,\n default: 1.5,\n },\n },\n data() {\n return {\n classNames,\n characterWidth: 7.5,\n textPadding: 5,\n }\n },\n computed: {\n rectStrokeWidth() {\n return this.dots && this.dotsSize ? this.dotsSize / 10 : 5\n },\n rectRx() {\n return this.dots && this.dotsSize\n ? this.dotsSize\n : this.eventsGroup.barBorderRadius\n },\n rectRy() {\n return this.dots && this.dotsSize\n ? this.dotsSize\n : this.eventsGroup.barBorderRadius\n },\n yPosition() {\n const yOffset = this.dots ? (this.height - this.dotsSize!) / 2 : 0\n const y = this.y + this.rectYPadding / 2\n\n return y + yOffset\n },\n rectStroke() {\n if (!this.dots) {\n return \"#0000\"\n }\n const c = d3.color(this.eventsGroup.color)\n\n return c?.brighter(1).toString()\n },\n rectHeight() {\n return this.dots\n ? this.dotsSize\n : Math.max(this.height - this.rectYPadding, 1)\n },\n computedEvents(): ComputedEventRect[] {\n return this.eventsGroup.events.map((event) => {\n const x = this.getEventRectX(event, this.timeScale)\n\n return {\n x,\n y: this.yPosition,\n width: this.getEventRectWidth(\n event,\n this.timeScale,\n this.rectMinWidth\n ),\n height: this.rectHeight,\n color: event.color || this.eventsGroup.color,\n textColor: this.getFillColor(\n event.color || this.eventsGroup.color,\n 0.75,\n this.dark\n ),\n textContent: this.getEventText(\n event,\n this.textPadding,\n this.characterWidth\n ),\n textX: x + this.textPadding,\n textY: this.yPosition + this.rectHeight / 2,\n }\n })\n },\n timeScaleDensity(): number {\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 return newDensity\n } else {\n return 1\n }\n },\n },\n methods: {\n onMouseOver(e: MouseEvent, eventData: TimelineEvent, type: string) {\n const target = e.target as SVGRectElement\n target.classList.add(classNames.eventRectHovered)\n this.$emit(\"event-mouseover\", e, eventData, type)\n },\n onMouseLeave(e: MouseEvent) {\n const target = e.target as SVGRectElement\n target.classList.remove(classNames.eventRectHovered)\n this.$emit(\"event-mouseout\")\n },\n getEventText(\n e: TimelineEvent,\n textPadding: number,\n characterWidth: number\n ): string {\n if (!e.text) {\n return \"\"\n }\n const rectWidth = this.getEventRectWidth(\n e,\n this.timeScale,\n this.rectMinWidth\n )\n const maxCharacters = (rectWidth - textPadding) / 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 getEventRectWidth(\n d: TimelineEvent,\n timeScale: d3.ScaleTime<any, any, unknown>,\n rectMinWidth: number\n ) {\n if (!d) {\n return 0\n }\n if (this.dots) {\n return this.dotsSize\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width = timeScale(endTimestamp) - timeScale(startTimestamp)\n\n return Math.max(width, rectMinWidth)\n } else {\n const oneSecondWidth = 1 / (this.timeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, rectMinWidth)\n }\n },\n getEventRectX(\n d: TimelineEvent,\n timeScale: d3.ScaleTime<any, any, unknown>\n ) {\n if (isNaN(timeScale(this.tzStringToDate(d.startDate || d.timestamp)))) {\n return 0\n }\n\n return timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timezone })\n },\n dateToTzString(date: Date): string {\n return d3DateToTzDate({ date, timezone: this.timezone })\n },\n getFillColor(baseColor: string, k = 0, dark = false) {\n return (\n dark\n ? d3.color(baseColor)?.brighter(1.5 + k)\n : d3.color(baseColor)?.darker(2 + k)\n )!.toString()\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport {\n TimelineChartType,\n TimelineCountEvent,\n TimelineEvent,\n TimelineEventsByType,\n TimelineEventsGroup,\n TimelineInterval,\n TimelineIntervalChangeTrigger,\n TimelineMarker,\n TimelinePrecision,\n Timestamp,\n TimelineDomain,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\nimport { debounce } from \"@/utils\"\nimport ETimelineMilestone from \"@/components/timeline/ETimelineMilestone.vue\"\nimport ETimelineMarkers from \"@/components/timeline/ETimelineMarkers.vue\"\nimport EZoomBehavior from \"@/components/charts/EZoomBehavior.vue\"\nimport EXAxisOverview from \"@/components/charts/EXAxisOverview.vue\"\nimport EXAxisDetailed from \"@/components/charts/EXAxisDetailed.vue\"\nimport EXAxisBackground from \"@/components/charts/EXAxisBackground.vue\"\nimport { d3DateToTzDate, tzDateToD3Date } from \"@/components/charts/utils\"\nimport { defs, classNames } from \"@/components/charts/constants\"\nimport ETimelineSVGDefs from \"@/components/charts/ETimelineSVGDefs.vue\"\nimport ETimelineCursor from \"@/components/timeline/ETimelineCursor.vue\"\nimport ETimelineSelectedTimestampCursor from \"@/components/timeline/ETimelineSelectedTimestampCursor.vue\"\nimport ECursorBehavior from \"@/components/charts/ECursorBehavior.vue\"\nimport { NormalizedScopedSlot } from \"vue/types/vnode\"\nimport ETimelineRectsChart from \"@/components/charts/ETimelineRectsChart.vue\"\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ETimelineSVGDefs,\n EXAxisBackground,\n EXAxisDetailed,\n EXAxisOverview,\n ETimelineMilestone,\n ETimelineMarkers,\n ETimelineCursor,\n ETimelineSelectedTimestampCursor,\n EZoomBehavior,\n ECursorBehavior,\n ETimelineRectsChart,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: null,\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 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 minDate: {\n type: String,\n default: undefined,\n },\n maxDate: {\n type: String,\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 maxDomainPadding: {\n type: Number,\n default: 0,\n },\n showCursor: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n mainContainer: null as unknown as HTMLElement,\n tooltip: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n wrapperDiv: null as unknown as HTMLElement,\n svgElement: null as unknown as SVGSVGElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n axisHeight: 22,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n yScale: null as unknown as d3.ScaleLinear<any, any>,\n hoveredCounts: [] as { count: number; type: string; label?: 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 characterWidth: 7.5,\n textPadding: 5,\n debouncedOnResize: (() => {}) as Function,\n isFirstPaint: true,\n timeouts: [] as number[],\n groupsVisibility: {} as Record<string, boolean>,\n selectedMilestoneId: null as any,\n isInitialized: false,\n transformDiff: { translation: 0, scale: 1 },\n isZoomingInterval: false,\n hoveredMilestone: null as unknown as TimelineEvent,\n focusedDomain: null as unknown as TimelineDomain,\n transitionDuration: 400,\n focusedTimestamp: null as unknown as string | Date,\n TimelineChartType,\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 computedClasses(): 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 },\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 return this.axisHeight * 2\n },\n timelineWidth(): number {\n return (\n this.timeline?.offsetWidth ||\n this.mainContainer?.getBoundingClientRect()?.width\n )\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 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 defaultMaxDomain(): string[] {\n const oldestTime = new Date(\n this.oldestEvent.timestamp || this.oldestEvent.startDate\n ).getTime()\n const latestTime = new Date(\n this.latestEvent.timestamp || this.latestEvent.endDate\n ).getTime()\n\n const delta = latestTime - oldestTime\n const padding = delta * 0.75\n\n const startDate = new Date(oldestTime - padding)\n const endDate = new Date(latestTime + padding)\n\n return [startDate.toISOString(), endDate.toISOString()]\n },\n defaultFocusedDomain(): string[] {\n const startDate = this.oldestEvent.timestamp || this.oldestEvent.startDate\n const endDate = this.latestEvent.timestamp || this.latestEvent.endDate\n\n return [startDate, endDate]\n },\n domain(): TimelineDomain {\n let minDate: Timestamp = new Date(\n this.minDate || this.defaultMaxDomain[0]\n ).getTime()\n let maxDate: Timestamp = new Date(\n this.maxDate || this.defaultMaxDomain[1]\n ).getTime()\n\n let padding = 0\n if (this.maxDomainPadding) {\n const delta = maxDate - minDate\n padding = delta * this.maxDomainPadding\n }\n\n minDate = new Date(minDate - padding).toISOString()\n maxDate = new Date(maxDate + padding).toISOString()\n\n return [this.tzStringToDate(minDate), this.tzStringToDate(maxDate)]\n },\n svgLeft(): number {\n return this.svg?.node()?.getBoundingClientRect()?.left || 0\n },\n markersScopedSlots(): Record<string, NormalizedScopedSlot | undefined> {\n return Object.keys(this.$scopedSlots)\n .filter((name) => name.startsWith(\"marker.\"))\n .reduce(\n (slots: Record<string, NormalizedScopedSlot | undefined>, name) => {\n slots[name] = this.$scopedSlots[name]\n\n return slots\n },\n {}\n )\n },\n isHoveringMilestone(): Boolean {\n return !!this.hoveredMilestone\n },\n milestonesGroupsPlaceholder(): TimelineEventsByType {\n return Object.entries(this.milestonesGroups).reduce(\n (acc, [type, group]) => {\n return {\n ...acc,\n [type]: {\n ...group,\n events: [],\n isLoading: false,\n },\n }\n },\n {}\n )\n },\n },\n watch: {\n dark() {\n this.handleDarkModeChange()\n },\n markers() {\n if (this.fitMarkersOnChange) {\n this.zoomToFitMarkers()\n }\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n eventsGroups: {\n handler() {\n this.updateTimeline()\n },\n deep: true,\n },\n barHeight: \"updateTimeline\",\n barYPadding: \"updateTimeline\",\n chartMinHeight: \"updateTimeline\",\n selectedDate(date) {\n if (date && !this.locked) {\n this.focusedTimestamp = this.tzStringToDate(date).toISOString()\n }\n },\n groupsVisibility() {\n this.updateTimeline()\n },\n forbiddenIntervals() {\n this.updateForbiddenIntervals(true)\n },\n focusedInterval(interval) {\n if (interval && interval?.startDate && interval?.endDate) {\n this.focusedDomain = [interval.startDate, interval.endDate]\n }\n },\n },\n created() {\n this.debouncedOnResize = debounce(this.handleResize, 100)\n },\n mounted() {\n this.validateProps()\n this.initTimeline()\n this.zoomToStartAndEndDates()\n },\n beforeDestroy() {\n this.clearTimeline()\n },\n methods: {\n validateProps() {\n if (!this.minDate) {\n console.log(\n \"<ETimeline />: didn't receive a 'min-date' prop. Setting default: \",\n this.defaultMaxDomain[0]\n )\n }\n if (!this.maxDate) {\n console.log(\n \"<ETimeline />: didn't receive a 'max-date' prop. Setting default: \",\n this.defaultMaxDomain[1]\n )\n }\n if (!this.startDate) {\n console.log(\n \"<ETimeline />: didn't receive a 'start-date' prop. Setting default: \",\n this.defaultFocusedDomain[0]\n )\n }\n if (!this.endDate) {\n console.log(\n \"<ETimeline />: didn't receive an 'end-date' prop. Setting default: \",\n this.defaultFocusedDomain[1]\n )\n }\n },\n updateTimeline() {\n if (!this.isInitialized) {\n return\n }\n this.initOrUpdateSvg()\n this.updateYScale()\n this.updateForbiddenIntervals()\n this.drawEventsGroups()\n this.isInitialized = true\n },\n initTimeline() {\n this.initRefs()\n\n const startDate = this.startDate || this.defaultFocusedDomain[0]\n const endDate = this.endDate || this.defaultFocusedDomain[1]\n\n this.focusedDomain = [\n this.tzStringToDate(startDate),\n this.tzStringToDate(endDate),\n ]\n if (\n !this.timeline ||\n this.timeline.offsetWidth === 0 ||\n !this.domain ||\n !this.timeScale\n ) {\n this.timeouts.push(\n setTimeout(this.initTimeline, 500) as unknown as number\n )\n\n return\n }\n\n this.initOrUpdateSvg()\n this.initUtcOffset()\n this.initYScale()\n this.drawEventsGroups()\n\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.initial)\n\n if (this.selectedDate && this.panOnDateClick) {\n this.focusedTimestamp = this.tzStringToDate(this.selectedDate)\n }\n\n this.isInitialized = true\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.mainContainer = this.$refs.mainContainer as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.svgElement = this.$refs.timelineSvg as SVGSVGElement\n this.wrapperDiv = this.$refs.wrapperDiv as HTMLElement\n },\n initOrUpdateSvg() {\n if (!this.svg) {\n this.svg = d3.select(this.svgElement)\n }\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 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 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 const t1 = new Date(minTimestamp)\n const t2 = new Date(maxTimestamp)\n\n this.focusedDomain = [t1, t2]\n },\n clearTimeline() {\n if (this.svg) {\n this.svg.remove()\n }\n this.countsByTimestamp = {}\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 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 onResize(resizeObserverEntry: ResizeObserverEntry) {\n if (!this.autoResize) {\n return\n }\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.updateTimeline()\n },\n handleDarkModeChange() {\n if (!this.showLabels) {\n return\n }\n\n const that = this\n this.svg.selectAll(`.${classNames._legacyLabelBg}`).each(function () {\n const label = d3.select(this)\n label.style(\"fill\", that.dark ? \"black\" : \"white\")\n })\n this.svg.selectAll(`.${classNames._legacyLabelBgFill}`).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(`.${classNames._legacyLabelText}`).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 handleMouseLeave() {\n this.$emit(\"hovered-timestamp\", undefined)\n },\n handleMouseMove(mouseX: number, timestamp: string) {\n this.$emit(\"hovered-timestamp\", timestamp)\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(timestamp: string, target: HTMLElement) {\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 const isForbiddenTimestamp = Array.from(target.classList).includes(\n classNames.forbiddenInterval\n )\n if (isForbiddenTimestamp) {\n this.$emit(\"forbidden-timestamp-clicked\", timestamp)\n\n return\n }\n\n this.$emit(\"date-clicked\", timestamp)\n\n if (this.panOnDateClick) {\n this.focusedTimestamp = timestamp\n }\n },\n handleMarkerClick(marker: TimelineMarker) {\n this.$emit(\"marker-clicked\", marker)\n if (this.panOnDateClick) {\n this.focusedTimestamp = 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 if (this.hiddenGroupsLabels?.includes(type)) {\n return acc\n }\n\n return [...acc, { type, count, label: this.getExternalLabelText(type) }]\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(`.${classNames.lineGraphGroup}-${groupType}`).classed(\n `${classNames.lineGraphGroup}--highlighted`,\n true\n )\n d3.selectAll(`.${classNames.lineGraphGroupLabel}`).classed(\n `${classNames.lineGraphGroupLabel}--highlighted`,\n true\n )\n },\n handleLabelMouseLeave(groupType: string) {\n d3.selectAll(`.${classNames.lineGraphGroup}-${groupType}`).classed(\n `${classNames.lineGraphGroup}--highlighted`,\n false\n )\n d3.selectAll(`.${classNames.lineGraphGroupLabel}`).classed(\n `${classNames.lineGraphGroupLabel}--highlighted`,\n false\n )\n },\n handleTransformChange(transform: { translation: number; scale: number }) {\n this.transformDiff = transform\n },\n handleTimeScaleChange(ts: d3.ScaleTime<any, any, unknown>) {\n this.timeScale = ts\n this.updateCurrentTimeScaleDensity()\n\n if (!this.isInitialized) {\n return\n }\n\n this.updateLineGraphs()\n this.updateBarChart()\n this.updateLineGraphHoverZones()\n this.updateForbiddenIntervals()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.zoom)\n\n this.focusedTimestamp = undefined\n this.$emit(\"time-scale-change\", ts)\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 this.focusedDomain = [\n this.tzStringToDate(startDate),\n this.tzStringToDate(endDate),\n ]\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 = `.${classNames.eventBarContainer}-${type}`\n const container = this.svg.selectAll(containerSelector)\n\n // Hover zones\n const hoverZoneSelector = `.${classNames.barChartGroup} rect.${classNames.eventBarHoverZone}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(hoverZoneSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n\n // Bars\n const barSelector = `.${classNames.barChartGroup} rect.${classNames.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 = `.${classNames.barChartGroup} rect.${classNames.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 `.${classNames.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 `.${classNames.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 `.${classNames.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 updateForbiddenIntervals(reset = false) {\n if (reset) {\n this.svg.selectAll(`.${classNames.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(`.${classNames.forbiddenInterval}-${index}`)\n\n if (rect.empty()) {\n rect = this.svg\n .append(\"rect\")\n .attr(\n \"class\",\n `${classNames.forbiddenInterval} ${classNames.forbiddenInterval}-${index}`\n )\n .attr(\"fill\", `url(#${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(`.${classNames.lineGraphGroup}`).remove()\n this.svg.selectAll(`.${classNames.lineGraphGroupLabel}`).remove()\n this.svg.selectAll(`.${classNames._legacyLoadingIndicator}`).remove()\n\n this.drawLineGraphEventsGroups()\n this.drawBarChartEventsGroups()\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 `${classNames.lineGraphGroup} ${classNames.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(classNames.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 = `${defs.clipPath}-${type}`\n gElement\n .append(\"path\")\n .datum(events as TimelineCountEvent[])\n .classed(`${classNames.lineGraphPath}-${type}`, true)\n .attr(\"fill\", `url(#${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 `${classNames.lineGraphDot} ${classNames.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(`${classNames.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(`${classNames.lineGraphDot}--active`, true)\n )\n })\n .on(\"mouseout\", () => {\n this.handleLineMouseOut()\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classNames.lineGraphDot}--active`, false)\n )\n })\n })\n },\n getMilestoneClass(milestone: TimelineEvent): Record<string, boolean> {\n return {\n [classNames.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): 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 | number, 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 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 `${classNames.barChartGroup} ${classNames.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 `${classNames._legacyLoadingIndicator} ${classNames._legacyLoadingIndicator}-${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(#${defs.loadingGradient}-${type})`)\n\n rect.style(\"visibility\", isLoading ? \"visible\" : \"hidden\")\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(classNames.eventBarContainer)\n .data(events)\n .enter()\n .append(\"g\")\n .attr(\n \"class\",\n `${classNames.eventBarContainer} ${classNames.eventBarContainer}-${type}`\n )\n\n // Hover zone\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classNames.eventBarHoverZone +\n (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) => classNames.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(#${defs.transparencyGradient}-${type})`)\n // Cap (Top border)\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classNames.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(`.${classNames.eventBarContainerSelected}`)\n .classed(classNames.eventBarContainerSelected, false)\n d3.select(this).classed(classNames.eventBarContainerSelected, true)\n })\n },\n onBarChartBarMouseOver(\n container: d3.Selection<SVGGElement, any, any, any>,\n color: string\n ) {\n container.classed(classNames.eventBarContainerHovered, true)\n const hoverZone = container.selectAll(`.${classNames.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0.2)\n const bar = container.selectAll(`.${classNames.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(classNames.eventBarContainerHovered, false)\n const hoverZone = container.selectAll(`.${classNames.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0)\n const bar = container.selectAll(`.${classNames.eventBar}`)\n bar.attr(\"fill\", `url(#${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(\n \"class\",\n `${classNames._legacyLabelGroup} ${classNames._legacyLabelGroup}-${type}`\n )\n .style(\"cursor\", \"pointer\")\n .on(\"click\", () => this.toggleGroupVisibility(type))\n\n // Label rect background\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classNames._legacyLabelBg)\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\", classNames._legacyLabelBgFill)\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\", classNames._legacyLabelText)\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 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 const color = this.eventsGroups[type].color\n\n return {\n background: this.getLabelBackgroundColor(color),\n color: this.getTextFillColor(color),\n }\n },\n getExternalLabelText(type: string) {\n return this.eventsGroups[type]?.label\n },\n getExternalLabelWrapperStyles(type: string) {\n const color = this.eventsGroups[type].color\n\n return {\n borderColor: this.getTextFillColor(color),\n }\n },\n tzStringToDate(timestamp: Timestamp): Date {\n return tzDateToD3Date({ timestamp, timezone: this.timezone })\n },\n dateToTzString(date: Date): string {\n return d3DateToTzDate({ date, timezone: this.timezone })\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.focusedTimestamp = 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 onHoverMilestone(milestone: TimelineEvent) {\n this.hoveredMilestone = milestone\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, { PropType } from \"vue\"\nimport { HeatmapBarItem } from \"@/types\"\nimport { getGradientColors } from \"@/utils\"\nimport * as d3 from \"d3\"\n\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 namesOnly: {\n type: Boolean,\n default: false,\n },\n showNames: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array as PropType<string[]>,\n default: () => getGradientColors(\"#ebedf0\", \"#17459e\", 10),\n },\n colorsDark: {\n type: Array as PropType<string[]>,\n default: () => getGradientColors(\"rgba(26,53,86,0.49)\", \"#1f65ee\", 10),\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {}\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 computedColors(): string[] {\n return this.dark ? this.colorsDark : this.colors\n },\n textColor(): Record<string, string> {\n return {\n color: this.dark ? \"#eee\" : \"#111\",\n }\n },\n },\n methods: {\n getColorIndex(count: number) {\n return Math.ceil(\n (count / this.maxCount) * (this.computedColors.length - 1)\n )\n },\n getColor(count: number): string {\n const index = this.getColorIndex(count)\n\n return (this.computedColors[index] || this.computedColors[0]) as string\n },\n getItemStyle(count: number) {\n return {\n background: this.getColor(count),\n }\n },\n getItemClasses(\n itemClass: string | Record<string, boolean>\n ): Record<string, boolean> {\n if (typeof itemClass === \"object\") {\n return itemClass\n }\n\n return {\n [itemClass]: true,\n }\n },\n getCountTextStyle(count: number) {\n const backgroundColor = this.getColor(count)\n const contrastingColor = this.getContrastingPaletteColor(backgroundColor)\n\n return {\n color: contrastingColor,\n }\n },\n adjustColorBrightness(color: string, amount: number): string {\n const parsedColor = d3.hsl(color)\n parsedColor.l += amount\n\n parsedColor.l = Math.max(0.1, Math.min(0.9, parsedColor.l))\n\n return parsedColor.formatHex()\n },\n getContrastingPaletteColor(backgroundColor: string) {\n const color = d3.color(backgroundColor)\n if (!color) return backgroundColor\n\n const { r, g, b } = color.rgb()\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255\n\n const adjustment = luminance > 0.5 ? -0.5 : 0.5\n\n return this.adjustColorBrightness(backgroundColor, adjustment)\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 isMenuOpened: false,\n touched: false,\n baseSize: {},\n menuObserver: null as unknown as MutationObserver,\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.adjustButtonsPositions()\n },\n direction() {\n this.adjustButtonsPositions()\n },\n padding() {\n this.adjustButtonsPositions()\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.adjustButtonsPositions)\n this.observeMenuContentChanges()\n },\n beforeDestroy() {\n if (this.menuObserver) {\n this.menuObserver.disconnect()\n }\n },\n methods: {\n toggleMenu() {\n this.isMenuOpened = !this.isMenuOpened\n this.adjustButtonsPositions()\n },\n adjustButtonsPositions() {\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 = this.isMenuOpened ? 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 items.forEach((b, index) => {\n const buttonRect = b.getBoundingClientRect()\n const dimension = buttonRect?.[this.row ? \"width\" : \"height\"]\n const buttonSize =\n (dimension > minSize ? dimension : minSize) + this.padding\n const position = this.isMenuOpened ? buttonSize * index : 0\n b.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * position\n }px)`\n })\n },\n observeMenuContentChanges() {\n const menu = this.$refs.menu as HTMLDivElement\n if (!menu) {\n return\n }\n\n this.menuObserver = new MutationObserver(() => {\n this.adjustButtonsPositions()\n })\n\n this.menuObserver.observe(menu, {\n childList: true,\n subtree: true,\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","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Tag\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"#000\",\n },\n backgroundColor: {\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: \"Tag\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"#000\",\n },\n backgroundColor: {\n type: String,\n default: \"white\",\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\"\nimport Tag from \"@/components/svgIcons/Tag.vue\"\nimport TagPlus from \"@/components/svgIcons/TagPlus.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 Tag,\n TagPlus,\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 {\n type CssClassMap,\n type EToggleSwitchOption,\n Size,\n type TToggleSwitchSize,\n} from \"@/types\"\n\ntype SizeClasses = {\n container: CssClassMap\n button: CssClassMap\n text: CssClassMap\n}\n\nexport default Vue.extend({\n name: \"EToggleSwitch\",\n\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 value: {\n type: [String, Number, Boolean],\n default: null,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n checkedIndex: null as number | null,\n }\n },\n computed: {\n selectedOption(): Record<string, any> {\n return this.options[this.checkedIndex ?? 0]\n },\n sizeClasses(): SizeClasses {\n return {\n container: {\n \"e-p-1 e-leading-3\": this.size === Size.sm,\n \"e-py-1.5 e-px-1.5\": this.size === Size.md,\n \"e-p-2 e-p\": this.size === Size.lg,\n },\n button: {\n \"e-py-[.2rem] e-px-2 e-rounded-md\": this.size === Size.sm,\n \"e-p-1 e-px-2.5\": this.size === Size.md,\n \"e-p-1.5 e-px-3\": 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 },\n watch: {\n value: {\n immediate: true,\n handler() {\n this.setInitialValue()\n },\n },\n },\n methods: {\n setInitialValue() {\n const checkedIndex = this.options.findIndex(\n (op) => op.value === this.value\n )\n this.checkedIndex = checkedIndex === -1 ? 0 : checkedIndex\n this.$emit(\"input\", this.options[this.checkedIndex].value)\n this.$emit(\"on-select-option\", this.options[this.checkedIndex])\n },\n getButtonClasses(index: number) {\n const dynamicClasses = {\n \"e-border-none e-text-gray-100 e-rounded-md e-shadow e-transition e-duration-200 e-ease-in-out e-cursor-pointer\":\n true,\n \"e-bg-inherit\": !this.isSelected(index),\n \"e-bg-brand-600\": this.color === \"brand\" && this.isSelected(index),\n \"e-bg-gray-600\":\n ![\"primary\", \"brand\"].includes(this.color) && this.isSelected(index),\n \"e-bg-[#629efc] e-text-gray-900 e-font-normal\":\n this.color === \"primary\" && this.isSelected(index),\n }\n\n return {\n ...this.sizeClasses.button,\n ...dynamicClasses,\n }\n },\n isSelected(index: number) {\n if (this.checkedIndex === null) {\n return index === 0\n }\n\n return this.checkedIndex === index\n },\n onItemClick(index: number) {\n const option = this.options[index]\n if (option.disabled || this.disabled) {\n return\n }\n this.checkedIndex = index\n this.$emit(\"input\", this.selectedOption.value)\n this.$emit(\"on-select-option\", this.selectedOption)\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","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Position } from \"@/types\"\nexport default Vue.extend({\n name: \"ETooltip\",\n props: {\n text: { type: String, required: true },\n position: {\n type: String as PropType<Position>,\n default: Position.top,\n },\n color: { type: String as PropType<BaseColor>, default: BaseColor.default },\n dark: { type: Boolean, default: false },\n },\n computed: {\n tooltipClasses(): Record<any, boolean> {\n const position = this.position as unknown as Position\n const color = this.color as unknown as BaseColor\n const defaultColorClasses = {\n \"e-bg-gray-800 e-text-white\": !this.dark,\n \"e-bg-slate-300 e-text-slate-800\": this.dark,\n }\n\n return {\n \"tooltip e-w-max e-text-sm e-text-center e-px-3 e-py-2 e-absolute e-rounded-md e-shadow-md e-opacity-0 group-hover:e-opacity-100 e-transition-opacity e-duration-300\":\n true,\n \"tooltip-left\": position === Position.left,\n \"tooltip-right\": position === Position.right,\n \"tooltip-top\": position === Position.top,\n \"tooltip-bottom\": position === Position.bottom,\n \"e-bg-orange-700 e-text-white\": color === BaseColor.warning,\n \"e-bg-red-700 e-text-white\": color === BaseColor.error,\n \"e-bg-green-900 e-text-white\": color === BaseColor.success,\n \"e-bg-blue-700 e-text-white\": color === BaseColor.primary,\n \"e-bg-sky-500 e-text-white\": color === BaseColor.info,\n \"e-bg-brand-900 e-text-white\": color === BaseColor.brand,\n \"e-bg-gray-200 e-text-gray-700\": color === BaseColor.gray,\n ...defaultColorClasses,\n }\n },\n triangleClasses(): Record<any, boolean> {\n const position = this.position as unknown as Position\n const color = this.color as unknown as BaseColor\n\n return {\n \"triangle e-absolute e-border-transparent\": true,\n \"triangle-left\": position === Position.left,\n \"triangle-right\": position === Position.right,\n \"triangle-top\": position === Position.top,\n \"triangle-bottom\": position === Position.bottom,\n \"e-border-b-gray-800\": color === BaseColor.default,\n \"e-border-b-orange-700\": color === BaseColor.warning,\n \"e-border-b-red-700\": color === BaseColor.error,\n \"e-border-b-green-900\": color === BaseColor.success,\n \"e-border-b-blue-700\": color === BaseColor.primary,\n \"e-border-b-sky-500\": color === BaseColor.info,\n \"e-border-b-brand-900\": color === BaseColor.brand,\n \"e-border-b-gray-900\": color === BaseColor.gray,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport ETooltip from \"@/components/ETooltip.vue\"\nimport EIcon from \"./EIcon.vue\"\nimport { BaseColor, Size, TIconSize } from \"@/types\"\nexport default Vue.extend({\n name: \"EActionButton\",\n components: { ETooltip, EIcon },\n props: {\n tooltipText: {\n type: String,\n default: null,\n },\n tooltipColor: {\n type: String,\n default: \"default\",\n },\n tooltipPosition: {\n type: String,\n default: \"top\",\n },\n buttonClasses: {\n type: [String, Object, Array],\n default: null,\n },\n icon: {\n type: String,\n default: null,\n },\n iconSize: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n iconColor: {\n type: String,\n default: BaseColor.default,\n },\n dark: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n withTooltip(): boolean {\n return !!this.tooltipText\n },\n buttonClassesContainsBg(): boolean {\n if (!this.buttonClasses) return false\n\n return (\n (typeof this.buttonClasses === \"string\" &&\n this.buttonClasses.split(\"e-bg-\").length > 1) ||\n (typeof this.buttonClasses === \"object\" &&\n Object.keys(this.buttonClasses).some(\n (key) => key.split(\"e-bg-\").length > 1\n ))\n )\n },\n buttonStyle(): string | string[] {\n const themeStyle = this.dark\n ? \"e-bg-gray-900 e-text-white hover:e-bg-gray-700\"\n : \"e-bg-white text-e-text-gray-900 hover:e-bg-gray-100\"\n\n return this.buttonClassesContainsBg\n ? this.buttonClasses\n : [this.buttonClasses, themeStyle]\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EActionButton from \"@/components/EActionButton.vue\"\nexport default Vue.extend({\n name: \"EZoomSlider\",\n components: {\n EActionButton,\n },\n props: {\n dark: {\n type: Boolean,\n default: true,\n },\n },\n})\n","\nimport Vue from \"vue\"\nexport default Vue.extend({\n name: \"EFadeTransition\",\n props: {\n duration: {\n type: Number,\n default: 300,\n },\n },\n computed: {\n durationClass(): string {\n const durations = {\n 100: \"e-duration-100\",\n 200: \"e-duration-200\",\n 300: \"e-duration-300\",\n 400: \"e-duration-400\",\n 500: \"e-duration-500\",\n 600: \"e-duration-600\",\n 700: \"e-duration-700\",\n 800: \"e-duration-800\",\n 900: \"e-duration-900\",\n 1000: \"e-duration-1000\",\n }\n\n return durations[this.duration]\n },\n },\n})\n","\nimport Vue, { StyleValue } from \"vue\"\nimport EZoomSlider from \"./EZoomSlider.vue\"\nimport { timeouts, eventListeners } from \"@/mixins\"\nimport EFadeTransition from \"./EFadeTransition.vue\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nexport type Point = {\n x: number\n y: number\n}\n\ntype TData = {\n image: HTMLImageElement | null\n frame: HTMLDivElement | null\n imageLoaded: boolean\n zoomLevel: number\n previousZoomLevel: number\n imageMouse: Point\n zoomOrigin: Point\n frameMouse: Point\n frameMousePanStart: Point\n frameMousePreviousPan: Point\n translation: Point\n isPanning: boolean\n isPinching: boolean\n zoomStarted: boolean\n firstLoad: boolean\n isSliderActive: boolean\n imgStyle: Record<string, StyleValue>\n contentStyle: Record<string, StyleValue>\n isFocused: boolean\n forceHideContent: boolean\n imageAspectRatio: number\n frameAspectRatio: number\n wrapperExtraStyle: Record<string, string>\n preventDefaultScroll: boolean\n mouseLeft: boolean\n pointers: Record<number, PointerEvent>\n pinchDistance: number\n lastTapTime: number\n minZoomLevel: number\n maxZoomLevel: number\n backgroundSnapshotSrc: string | null\n}\n/* eslint-disable vue/no-reserved-keys */\nexport default Vue.extend({\n name: \"EZoomableImg\",\n components: {\n EZoomSlider,\n EFadeTransition,\n },\n directives: {\n ResizeObserver: ResizeObserverDirective,\n },\n mixins: [timeouts, eventListeners],\n props: {\n src: {\n type: String,\n default: \"\",\n },\n alt: {\n type: String,\n default: \"\",\n },\n allowZoom: {\n type: Boolean,\n default: true,\n },\n imgProps: {\n type: Object,\n default: () => ({}),\n },\n slider: {\n type: Boolean,\n default: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n hideContentOnBlur: {\n type: Boolean,\n default: true,\n },\n initialParams: {\n type: Object,\n default: () => ({}),\n },\n embedded: {\n type: Boolean,\n default: false,\n },\n overlayStyle: {\n type: Object,\n default: () => ({}),\n },\n foregroundStyle: {\n type: Object,\n default: () => ({}),\n },\n pan: {\n type: Boolean,\n default: true,\n },\n slotTransition: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [String, Number],\n default: undefined,\n },\n isCalendarActive: {\n type: Boolean,\n default: false,\n },\n blurBackground: {\n type: Boolean,\n default: false,\n },\n cover: {\n type: Boolean,\n default: false,\n },\n isWidget: {\n type: Boolean,\n default: false,\n },\n isAnnotationActive: {\n type: Boolean,\n default: false,\n },\n isMobile: {\n type: Boolean,\n default: false,\n },\n placeholderImage: {\n type: String,\n default: \"\",\n },\n showMiniature: {\n type: Boolean,\n default: false,\n },\n miniatureWidth: {\n type: Number,\n default: 150,\n },\n },\n data(): TData {\n const defaultPoint = {\n x: 0,\n y: 0,\n }\n\n return {\n image: null as HTMLImageElement | null,\n frame: null as HTMLDivElement | null,\n imageLoaded: false,\n zoomLevel: 1,\n previousZoomLevel: 1,\n /**\n * Mouse position relative to the zoomed image\n */\n imageMouse: defaultPoint,\n /**\n * Image scaling transform origin\n */\n zoomOrigin: defaultPoint,\n /**\n * Mouse position relative to the root div frame (unaffected by zoomLevel)\n */\n frameMouse: defaultPoint,\n /**\n * Mouse position relative to the root frame at the start of a pan gesture\n */\n frameMousePanStart: defaultPoint,\n /**\n * Mouse position relative to the root frame at the start\n */\n frameMousePreviousPan: defaultPoint,\n /**\n * Translation transform applied to the image\n */\n translation: defaultPoint,\n isPanning: false,\n isPinching: false,\n zoomStarted: false,\n firstLoad: true,\n isSliderActive: false,\n imgStyle: {},\n contentStyle: {},\n isFocused: true,\n forceHideContent: false,\n imageAspectRatio: 1,\n frameAspectRatio: 1,\n wrapperExtraStyle: {},\n preventDefaultScroll: true,\n mouseLeft: false,\n pointers: {},\n pinchDistance: 0,\n lastTapTime: 0,\n minZoomLevel: 1,\n maxZoomLevel: 20,\n backgroundSnapshotSrc: null,\n miniatureOverlayStyle: {},\n }\n },\n computed: {\n frameStyle(): Record<string, StyleValue> {\n if (!this.height) {\n return {}\n }\n\n return {\n height: `${this.height}px`,\n }\n },\n wrapperStyle() {\n if (!this.imageLoaded) {\n return {\n display: \"none\",\n }\n }\n let deltaX, deltaY\n if (this.isPanning && !this.isAnnotationActive) {\n deltaX =\n this.frameMouse.x -\n this.frameMousePanStart.x +\n this.frameMousePreviousPan.x\n deltaY =\n this.frameMouse.y -\n this.frameMousePanStart.y +\n this.frameMousePreviousPan.y\n } else {\n deltaX = this.frameMousePreviousPan.x\n deltaY = this.frameMousePreviousPan.y\n }\n\n return {\n transform:\n Math.abs(deltaX) < 0.5 && Math.abs(deltaY) < 0.5\n ? \"none\"\n : `translate(${deltaX}px,${deltaY}px)`,\n }\n },\n imageCenter() {\n const image = this.image?.getBoundingClientRect()\n\n return {\n x: (image?.width || 0) / 2,\n y: (image?.height || 0) / 2,\n }\n },\n sliderModel: {\n get() {\n return this.zoomLevel * 100\n },\n set(val: number) {\n this.previousZoomLevel = this.zoomLevel\n this.zoomLevel = val / 100\n this.updateImageStyle()\n this.savePreviousPan()\n },\n },\n showContent() {\n if (!this.hideContentOnBlur) {\n return true\n }\n if (this.forceHideContent) {\n return false\n }\n\n return this.isFocused && this.touches < 2\n },\n miniatureContainerStyle(): Record<string, string> {\n if (!this.image) {\n return {}\n }\n\n const aspectRatio = this.image.naturalWidth / this.image.naturalHeight\n const height = this.miniatureWidth / aspectRatio\n\n return {\n width: `${this.miniatureWidth}px`,\n height: `${height}px`,\n }\n },\n miniatureOverlayComputedStyle(): Record<string, string> {\n return {\n ...this.miniatureOverlayStyle,\n ...this.miniatureOverlayBaseStyle,\n }\n },\n miniatureOverlayBaseStyle(): Record<string, string> {\n return {\n boxShadow: `0 0 0 ${this.miniatureWidth}px #0006`,\n }\n },\n currentState() {\n return {\n image: this.image,\n zoomLevel: this.zoomLevel,\n translation: this.translation,\n previousZoomLevel: this.previousZoomLevel,\n imageMouse: this.imageMouse,\n zoomOrigin: this.zoomOrigin,\n frameMouse: this.frameMouse,\n frameMousePanStart: this.frameMousePanStart,\n frameMousePreviousPan: this.frameMousePreviousPan,\n isPanning: this.isPanning,\n zoomStarted: this.zoomStarted,\n firstLoad: this.firstLoad,\n isSliderActive: this.isSliderActive,\n imgStyle: this.imgStyle,\n contentStyle: this.contentStyle,\n isFocused: this.isFocused,\n forceHideContent: this.forceHideContent,\n imageAspectRatio: this.imageAspectRatio,\n frameAspectRatio: this.frameAspectRatio,\n wrapperExtraStyle: this.wrapperExtraStyle,\n offsetWidth: this.image?.offsetWidth,\n offsetHeight: this.image?.offsetHeight,\n }\n },\n },\n watch: {\n isCalendarActive() {\n this.$setTimeout(this.onResize, 100)\n },\n initialParams: {\n immediate: true,\n handler(params) {\n if (typeof params !== \"object\") {\n return\n }\n for (let prop in params) {\n this[prop] = params[prop] as never\n }\n },\n },\n image: {\n immediate: true,\n deep: true,\n handler() {\n if (this.image?.offsetWidth) {\n this.emitChange()\n }\n },\n },\n wrapperStyle() {\n this.$nextTick(this.updateMiniatureOverlayStyle)\n },\n imageStyle() {\n this.$nextTick(this.updateMiniatureOverlayStyle)\n },\n },\n mounted() {\n this.$addEventListener(\"orientationchange\", this.handleOrientationChange)\n this.$root.$on(\"resize-snapshot-player\", () => {\n this.$setTimeout(this.setAspectRatio, 200)\n })\n },\n methods: {\n onResize() {\n this.updateContentStyle()\n this.$setTimeout(this.setAspectRatio, 500)\n },\n handleOrientationChange() {\n this.$setTimeout(this.setAspectRatio, 1000)\n },\n setAspectRatio() {\n this.frame = this.$refs.frame as HTMLDivElement\n this.image = this.$refs.image as HTMLImageElement\n const frame = this.frame?.getBoundingClientRect() as DOMRect\n const image = this.image?.getBoundingClientRect() as DOMRect\n this.$setTimeout(this.emitChange, 50)\n if (\n !frame ||\n (this.isMobile &&\n !this.isWidget &&\n (!image || image?.width <= 1 || image?.height <= 1))\n ) {\n this.$setTimeout(this.setAspectRatio, 50)\n\n return\n }\n this.frameAspectRatio = frame.width / frame.height\n this.imageAspectRatio = image.width / image.height\n },\n updateImageStyle() {\n this.translation = {\n x:\n this.zoomOrigin.x * (this.zoomLevel - this.previousZoomLevel) +\n this.translation.x,\n y:\n this.zoomOrigin.y * (this.zoomLevel - this.previousZoomLevel) +\n this.translation.y,\n }\n\n this.imgStyle = {\n ...this.imgStyle,\n transform: `translate(${-this.translation.x}px, ${-this.translation\n .y}px) scale(${this.zoomLevel})`,\n }\n this.emitChange()\n },\n updateMiniatureOverlayStyle() {\n if (\n !this.showMiniature ||\n !this.image ||\n !this.frame ||\n !this.$refs.miniatureImage ||\n this.zoomLevel === 1\n ) {\n this.miniatureOverlayStyle = {}\n\n return\n }\n\n const image = this.image.getBoundingClientRect()\n const frame = this.frame.getBoundingClientRect()\n\n const left = ((frame.left - image.left) / image.width) * 100\n const top = ((frame.top - image.top) / image.height) * 100\n const width = (frame.width / image.width) * 100\n const height = (frame.height / image.height) * 100\n\n this.miniatureOverlayStyle = {\n left: `${left}%`,\n top: `${top}%`,\n width: `${width}%`,\n height: `${height}%`,\n }\n },\n onImageLoaded(e) {\n this.imageLoaded = true\n this.wrapperExtraStyle = {\n ...this.wrapperExtraStyle,\n alignContent: \"flex-start !important\",\n }\n this.$setTimeout(() => {\n this.wrapperExtraStyle = {\n justifyContent: \"center\",\n alignContent: \"center !important\",\n }\n })\n if (this.blurBackground) {\n this.backgroundSnapshotSrc = this.getSnapshotSrc()\n }\n if (!this.firstLoad) {\n return\n }\n this.updateContentStyle()\n this.imageMouse = this.imageCenter\n this.zoomOrigin = this.imageCenter\n const image = this.image?.getBoundingClientRect()\n const frame = this.frame?.getBoundingClientRect()\n if (!image || !frame) {\n return\n }\n if (this.isMobile && !this.isWidget) {\n this.setAspectRatio()\n } else {\n this.$nextTick(() => {\n this.setAspectRatio()\n this.firstLoad = false\n })\n }\n this.updateImageStyle()\n this.$emit(\"load\", e)\n },\n onError(e) {\n this.$emit(\"error\", e)\n },\n onMouseEnter() {\n this.mouseLeft = false\n this.isFocused = true\n },\n onMouseLeave() {\n if (!this.isSliderActive) {\n this.isFocused = false\n }\n this.mouseLeft = true\n const fakeMouseEvent = {\n which: 1,\n preventDefault: () => {},\n }\n this.onMouseUp(fakeMouseEvent as unknown as MouseEvent)\n },\n onMouseMove(event: MouseEvent) {\n if (this.disabled || !this.imageLoaded || this.mouseLeft) {\n return\n }\n if (this.frame) {\n const frame = this.frame.getBoundingClientRect()\n const zoomedImage = this.image?.getBoundingClientRect() as DOMRect\n this.frameMouse = {\n x: event?.clientX - frame.left,\n y: event?.clientY - frame.top,\n }\n this.imageMouse = {\n x: (event?.clientX - zoomedImage?.left) / this.zoomLevel,\n y: (event?.clientY - zoomedImage?.top) / this.zoomLevel,\n }\n if (this.zoomStarted) {\n this.zoomStarted = false\n }\n this.$nextTick(this.emitChange)\n }\n },\n onMousedown(event: MouseEvent) {\n if (\n !this.pan ||\n this.disabled ||\n !this.imageLoaded ||\n event?.which !== 1 ||\n this.isSliderActive\n ) {\n return\n }\n if (this.isAnnotationActive) {\n this.frameMousePanStart = {\n x: this.frameMouse.x,\n y: this.frameMouse.y,\n }\n this.isPanning = true\n this.$nextTick(this.emitChange)\n\n return\n }\n event.preventDefault()\n this.frameMousePanStart = this.frameMouse\n this.isPanning = true\n },\n onMouseUp(event: MouseEvent) {\n if (\n !this.pan ||\n this.disabled ||\n !this.imageLoaded ||\n !this.isPanning ||\n event?.which !== 1 ||\n this.isSliderActive\n ) {\n return\n }\n if (this.isAnnotationActive) {\n this.isPanning = false\n this.$nextTick(this.emitChange)\n\n return\n }\n event.preventDefault()\n this.savePreviousPan({\n x:\n this.frameMousePreviousPan.x +\n this.frameMouse.x -\n this.frameMousePanStart.x,\n y:\n this.frameMousePreviousPan.y +\n this.frameMouse.y -\n this.frameMousePanStart.y,\n })\n this.isPanning = false\n this.isPinching = false\n this.$nextTick(this.emitChange)\n },\n onMouseWheel(event: WheelEvent) {\n if (this.disabled || !this.imageLoaded || !this.allowZoom) {\n return\n }\n this.zoom(event.deltaY)\n\n if (this.preventDefaultScroll) {\n event.preventDefault()\n }\n },\n updateZoomLevel(delta: number) {\n let newZoomLevel = 1\n\n if (this.isMobile) {\n newZoomLevel = this.zoomLevel * delta\n } else if (delta < 0) {\n newZoomLevel = this.zoomLevel * 1.2\n } else if (this.zoomLevel >= 1.25) {\n newZoomLevel = this.zoomLevel * 0.8\n }\n if (newZoomLevel < this.minZoomLevel) {\n this.zoomLevel = this.minZoomLevel\n } else if (newZoomLevel > this.maxZoomLevel) {\n this.zoomLevel = this.maxZoomLevel\n } else {\n this.zoomLevel = newZoomLevel\n }\n },\n zoom(delta: number) {\n this.isPanning = false\n this.previousZoomLevel = this.zoomLevel\n this.updateZoomLevel(delta)\n this.preventDefaultScroll = this.previousZoomLevel !== this.zoomLevel\n\n if (!this.zoomStarted) {\n this.zoomOrigin = this.imageMouse\n this.zoomStarted = true\n }\n this.updateImageStyle()\n this.$nextTick(() => {\n this.savePreviousPan()\n this.emitChange()\n })\n },\n getBounds() {\n const frame = this.frame?.getBoundingClientRect() as DOMRect\n const image = this.image?.getBoundingClientRect() as DOMRect\n const minHeight = frame.width / this.imageAspectRatio\n const minWidth = frame.height * this.imageAspectRatio\n let { top, right, bottom, left } = frame\n\n if (image.width < frame.width) {\n left = frame.left + (frame.width - minWidth) / 2\n right = left + minWidth\n } else if (image.height < frame.height) {\n top = frame.top + (frame.height - minHeight) / 2\n bottom = top + minHeight\n }\n\n return {\n top,\n right,\n bottom,\n left,\n }\n },\n savePreviousPan({ x, y }: { x?: number; y?: number } = {}) {\n if (this.image) {\n const zoomedImage = this.image?.getBoundingClientRect()\n const bounds = this.getBounds()\n // Corrections ensure there is no gap between the image and the frame when panning\n const [\n correctionRight,\n correctionTop,\n correctionBottom,\n correctionLeft,\n ] = [\n zoomedImage.right - bounds.right,\n bounds.top - zoomedImage.top,\n zoomedImage.bottom - bounds.bottom,\n bounds.left - zoomedImage.left,\n ].map((v) => (v < 0 ? v : 0))\n\n this.frameMousePreviousPan = {\n x:\n (x || this.frameMousePreviousPan.x) +\n correctionLeft -\n correctionRight,\n y:\n (y || this.frameMousePreviousPan.y) +\n correctionTop -\n correctionBottom,\n }\n }\n },\n onSliderMouseDown() {\n const frame = this.frame?.getBoundingClientRect() as DOMRect\n const image = this.image?.getBoundingClientRect() as DOMRect\n // Set the zoom origin on the frame center\n this.zoomOrigin = {\n x: (frame?.left + frame?.width / 2 - image?.left) / this.zoomLevel,\n y: (frame?.top + frame?.height / 2 - image?.top) / this.zoomLevel,\n }\n this.isSliderActive = true\n },\n onSliderMouseUp() {\n this.isSliderActive = false\n },\n updateContentStyle() {\n this.contentStyle = {\n maxWidth: `${\n window.innerWidth -\n ((this.$refs?.frame as HTMLDivElement)?.getBoundingClientRect()\n ?.left || 0)\n }px`,\n }\n },\n emitChange() {\n this.$emit(\"change\", this.currentState)\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 getPointersDistance(a: PointerEvent, b: PointerEvent) {\n return Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY)\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 updatePinchZoomOrigin() {\n const pointers = Object.values(this.pointers)\n if (pointers.length !== 2) {\n return\n }\n const midPoint = this.getPointersMidPoint(...pointers)\n this.zoomOrigin = {\n x: midPoint.x / this.zoomLevel,\n y: midPoint.y / this.zoomLevel,\n }\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)\n },\n onPointerDown(e: PointerEvent) {\n if (!this.isMobile || this.foregroundStyle.zIndex == 2) {\n return\n }\n\n this.updatePointerEvent(e)\n\n this.isPinching = Object.values(this.pointers).length === 2\n if (this.isPinching) {\n this.isPanning = false\n this.updatePinchZoomOrigin()\n this.updatePinchDistance()\n\n return\n }\n\n this.onMouseMove(e)\n this.onMousedown(e)\n },\n onPointerMove(e: PointerEvent) {\n if (!this.isMobile || this.foregroundStyle.zIndex == 2) {\n return\n }\n this.updatePointerEvent(e)\n\n if (this.isPinching) {\n const previousPinchDistance = this.pinchDistance\n\n this.updatePinchDistance()\n\n const delta = this.pinchDistance / previousPinchDistance\n\n if (delta % 1 > 0.008) {\n this.zoom(delta)\n }\n\n return\n }\n\n this.onMouseMove(e)\n },\n onPointerUp(e: PointerEvent) {\n if (!this.isMobile || this.foregroundStyle.zIndex == 2) {\n return\n }\n this.clearPointerEvent(e)\n this.onMouseUp(e)\n\n const now = new Date().getTime()\n const timeSinceLastTap = now - this.lastTapTime\n if (timeSinceLastTap > 100 && timeSinceLastTap < 200) {\n this.zoom(this.zoomLevel > 1 ? 0 : 3)\n }\n this.lastTapTime = now\n },\n getSnapshotSrc() {\n const snapshot = this.$refs.image as HTMLImageElement\n\n return snapshot?.src\n },\n },\n})\n","\nimport Vue, { PropType, StyleValue } from \"vue\"\nimport { Frame, FullscreenDocument } from \"@/types\"\nimport { eventListeners, timeouts } from \"@/mixins\"\nimport { exitFullScreen, makeFullScreen } from \"@/utils\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport EZoomableImg from \"./EZoomableImg.vue\"\nexport default Vue.extend({\n name: \"EImagePlayer\",\n components: {\n EZoomableImg,\n },\n directives: {\n ResizeObserver: ResizeObserverDirective,\n },\n mixins: [timeouts, eventListeners],\n model: {\n prop: \"frameIndex\",\n event: \"update-frame-index\",\n },\n props: {\n frames: {\n type: Array as PropType<Array<Frame>>,\n required: true,\n },\n timePerFrame: {\n type: Number,\n default: 500,\n },\n isPlaying: {\n type: Boolean,\n default: false,\n },\n frameIndex: {\n type: Number,\n default: 0,\n },\n height: {\n type: [String, Number],\n default: 0,\n },\n initialQuality: {\n type: [String, Number],\n default: \"auto\",\n },\n preload: {\n type: Boolean,\n default: true,\n },\n preloadSize: {\n type: Number,\n default: 10,\n },\n resetIndexOnFramesChange: {\n type: Boolean,\n default: false,\n },\n preloadWhilePlaying: {\n type: Boolean,\n default: true,\n },\n withControls: {\n type: Boolean,\n default: true,\n },\n playOnClick: {\n type: Boolean,\n default: true,\n },\n disablePlayPauseAnimation: {\n type: Boolean,\n default: false,\n },\n disablePlayButton: {\n type: Boolean,\n default: false,\n },\n isLive: {\n type: Boolean,\n default: false,\n },\n selectedSnapshotQuality: {\n type: [String, Number],\n default: \"auto\",\n },\n placeholderImage: {\n type: String,\n default: \"\",\n },\n isMobile: {\n type: Boolean,\n default: false,\n },\n isZoomable: {\n type: Boolean,\n default: true,\n },\n isAnnotationActive: {\n type: Boolean,\n default: false,\n },\n aspectRatio: {\n type: Number,\n default: null,\n },\n preloadingQueueId: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n src: this.placeholderImage,\n imageLoaded: false,\n playing: false,\n playerStyle: {} as Record<string, string>,\n image: null as HTMLImageElement | null,\n previousSrc: \"\",\n resolveImageLoadingPromise: (() => ({})) as (value?: any) => any,\n preloadedFrames: [] as number[],\n preloadingFramesImgs: [] as HTMLImageElement[],\n frameError: false,\n animationId: -1,\n imgStyle: {} as Record<string, StyleValue>,\n previousFrameIndex: 0,\n isFullscreen: false,\n mouseDownTime: 0,\n playPauseAnimation: false,\n latestValidSnapshotTimestamp: \"\",\n progressBar: null as HTMLDivElement | null,\n isDraggingCursor: false,\n hovered: false,\n mousePosition: {\n x: 0,\n y: 0,\n },\n screenHeight: screen.height,\n }\n },\n computed: {\n imgProps(): Record<string, string> {\n return {\n id: \"zoomable-img__img\",\n ref: \"image\",\n crossorigin: \"anonymous\",\n class:\n \"zoomable-img__img e-absolute e-w-full e-h-full e-object-contain e-z-10 d-block\",\n dataTestId: \"zoomable-img-image\",\n }\n },\n playerDimensions(): { width: string; height: number | string } {\n return {\n width: \"100%\",\n height: this.height,\n }\n },\n isLastFrame(): boolean {\n return this.frameIndex === this.frames.length - 1\n },\n altText(): string {\n return `${this.frames[this.frameIndex]?.label || \"\"} ${\n this.frames[this.frameIndex]?.timestamp || \"\"\n }`\n },\n playedPercentage(): number {\n return this.isLastFrame\n ? 100\n : Math.abs((this.frameIndex / this.frames.length) * 100)\n },\n mouseToWidthRatio(): number {\n return (\n this.mousePosition.x /\n (this.progressBar?.getBoundingClientRect()?.width ?? 1)\n )\n },\n hoverBarStyle(): { width: string } {\n return {\n width: `${100 * this.mouseToWidthRatio}%`,\n }\n },\n hoveredFrameIndex(): number {\n return Math.round(this.mouseToWidthRatio * (this.frames.length - 1))\n },\n progressStyle(): { width: string } {\n const currentFrameIndex = this.isDraggingCursor\n ? this.hoveredFrameIndex\n : this.frameIndex\n\n return {\n width: `${100 * (currentFrameIndex / (this.frames.length - 1))}%`,\n }\n },\n preloadedChunks() {\n const preloadedFrames = [...[...this.preloadedFrames]]\n preloadedFrames.sort((a, b) => {\n return a > b ? 1 : -1\n })\n\n return preloadedFrames.reduce((acc, frameIndex) => {\n if (!acc.length) {\n return [[frameIndex, frameIndex]]\n }\n\n const [start, end] = acc.slice(-1)[0] || [0, 0]\n const discontinuity = frameIndex - end > 1\n if (discontinuity) {\n return [...acc, [frameIndex, frameIndex]]\n }\n\n return [...acc.slice(0, -1), [start, frameIndex]]\n }, [])\n },\n },\n watch: {\n frames: {\n handler() {\n this.src = this.frames[this.frameIndex]?.src || \"\"\n\n if (this.resetIndexOnFramesChange) {\n this.$emit(\"update-frame-index\", 0)\n }\n this.imageLoaded = true\n this.preloadedFrames = []\n this.flushPreloadingQueue()\n this.$setTimeout(async () => {\n this.updateRefs()\n await this.loadTargetFrame()\n this.handleBuffering()\n })\n },\n immediate: true,\n deep: true,\n },\n isLastFrame(v) {\n if (v) {\n this.$emit(\"frames-ended\")\n }\n },\n frameIndex: {\n immediate: true,\n async handler() {\n if (this.frameIndex && this.frameIndex === this.previousFrameIndex) {\n return\n }\n\n if (Number.isNaN(this.frameIndex)) {\n this.$emit(\"update-frame-index\", 0)\n }\n\n if (this.frameIndex === 0) {\n this.previousFrameIndex = this.frameIndex\n }\n if (this.isLastFrame && !this.isLive) {\n this.playing = false\n }\n\n if (!this.playing) {\n this.cancelDelay()\n await this.loadTargetFrame()\n this.handleBuffering()\n }\n },\n },\n playing: {\n immediate: true,\n async handler(playing) {\n if (playing) {\n this.play()\n } else {\n this.pause()\n }\n this.animatePlayPauseOverlay()\n },\n },\n preloadedFrames: {\n handler(preloaded, _) {\n this.$emit(\"preloaded-frames-change\", preloaded)\n },\n },\n isPlaying: {\n immediate: true,\n async handler() {\n this.playing = this.isPlaying\n },\n },\n selectedSnapshotQuality() {\n this.src =\n this.getFrameSrc(this.frames[this.frameIndex]) ??\n this.frames[this.frameIndex].src\n },\n isLive: {\n immediate: true,\n handler(v) {\n if (!v) {\n this.src = this.frames[this.frameIndex]?.src\n }\n },\n },\n imageLoaded(val) {\n this.$emit(\"loading\", !val)\n },\n },\n mounted() {\n this.$setTimeout(() => {\n this.initializeFullscreenListeners()\n this.progressBar = this.$refs.progressBar as HTMLDivElement\n this.$addEventListener(\"keydown\", this.handleKeyDown)\n })\n },\n beforeDestroy() {\n this.cancelDelay()\n this.flushPreloadingQueue()\n this.removeFullscreenListeners()\n },\n methods: {\n getProgressBarMousePosition(e) {\n if (!this.progressBar) {\n return { x: 0, y: 0 }\n }\n const progrssBarRect = this.progressBar?.getBoundingClientRect()\n\n return {\n x: e.clientX - progrssBarRect.x,\n y: e.clientY - progrssBarRect.y,\n }\n },\n onProgressBarMouseEnter() {\n this.hovered = true\n },\n onProgressBarMouseMove(e) {\n this.mousePosition = this.getProgressBarMousePosition(e)\n },\n onProgressBarMouseLeave() {\n this.hovered = false\n this.isDraggingCursor = false\n },\n onProgressBarClick() {\n this.$emit(\"update-frame-index\", this.hoveredFrameIndex)\n this.$emit(\"seek\", this.hoveredFrameIndex)\n },\n getProgressBarChunkStyle(start, end) {\n const [startPercentage, endPercentage] = [\n (100 * start) / (this.frames.length - 1),\n (100 * end) / (this.frames.length - 1),\n ]\n\n return {\n left: `${startPercentage}%`,\n width: `${endPercentage - startPercentage}%`,\n }\n },\n animatePlayPauseOverlay() {\n if (this.disablePlayPauseAnimation) {\n return\n }\n this.playPauseAnimation = true\n this.$setTimeout(() => (this.playPauseAnimation = false), 500)\n },\n isImageClick(e: PointerEvent) {\n const target = e?.target as HTMLElement\n if (!target) {\n return false\n }\n\n return (\n target &&\n (target.id === \"img-foreground\" ||\n (typeof target.className === \"string\" &&\n target.className.indexOf(\"zoomable-img__img\") !== -1))\n )\n },\n onFrameMouseDown(e: PointerEvent) {\n if (!this.isImageClick(e) || !this.playOnClick) {\n return\n }\n this.mouseDownTime = new Date().getTime()\n },\n onFrameMouseUp(e: PointerEvent) {\n if (\n this.isLastFrame ||\n this.disablePlayButton ||\n !this.playOnClick ||\n this.isAnnotationActive\n ) {\n return\n }\n if (!this.isImageClick(e)) {\n return\n }\n const now = new Date().getTime()\n if (now - this.mouseDownTime > 200) {\n return\n }\n\n this.playing = !this.playing\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 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 = document.querySelector(\"#imagePlayer\") 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 updateRefs() {\n this.image = this.$refs?.zoomableImage?.$refs?.image as HTMLImageElement\n },\n incrementCurrentFrameIndex() {\n const newFrameIndex = this.frameIndex + 1\n if (!this.frames[newFrameIndex]) {\n return\n }\n this.$emit(\"update-frame-index\", newFrameIndex)\n },\n getFrameSrc(frame: Frame) {\n if (!frame) {\n return\n }\n if (!frame.srcSet) {\n return frame.src\n }\n\n return (frame.srcSet as Record<string, string>)[\n this.selectedSnapshotQuality\n ]\n },\n loadTargetFrame() {\n if (this.frameIndex && this.frameIndex === this.previousFrameIndex) {\n return\n }\n\n return new Promise((resolve) => {\n this.updateRefs()\n this.previousSrc = this.src\n this.previousFrameIndex = this.frameIndex\n this.resolveImageLoadingPromise = resolve\n this.src = this.getFrameSrc(this.frames[this.frameIndex])\n })\n },\n async handleBuffering() {\n if (this.preload) {\n await this.buffer()\n }\n },\n async buffer() {\n let end = this.frameIndex + this.preloadSize\n if (this.preloadSize === Infinity) {\n end = this.frames.length - 1\n }\n\n await this.preloadFrames({\n start: this.frameIndex,\n end,\n })\n },\n async preloadFrames({ start, end }: { start: number; end: number }) {\n const [startIndex, endIndex] = [\n Math.min(this.frames.length - 1, start),\n Math.min(this.frames.length - 1, end),\n ]\n\n const range = new Array(endIndex - startIndex + 1)\n .fill(0)\n .map((n, index) => n + startIndex + index)\n\n const queueId = this.preloadingQueueId\n for (const frameIndex of range) {\n const isCancelled =\n queueId !== this.preloadingQueueId ||\n (this.playing && !this.preloadWhilePlaying)\n if (isCancelled) {\n return\n }\n\n if (this.preloadedFrames.includes(frameIndex)) {\n continue\n }\n\n await new Promise<void>((resolve) => {\n const img = new Image()\n img.onload = () => {\n this.preloadedFrames = [...this.preloadedFrames, frameIndex]\n resolve()\n }\n img.onerror = () => {\n resolve()\n }\n this.preloadingFramesImgs = [...this.preloadingFramesImgs, img]\n const src = this.getFrameSrc(this.frames[frameIndex])\n if (!frameIndex) {\n resolve()\n }\n img.src = src\n })\n }\n },\n async delay(): Promise<void> {\n if (this.frameError) {\n this.frameError = false\n\n return Promise.resolve()\n }\n\n return new Promise<void>((resolve) => {\n const startTime = performance.now()\n const wait = (now: number) => {\n const elapsed = now - startTime\n if (elapsed < this.timePerFrame) {\n this.animationId = window.requestAnimationFrame(wait)\n } else {\n resolve()\n }\n }\n this.animationId = window.requestAnimationFrame(wait)\n })\n },\n cancelDelay() {\n window.cancelAnimationFrame(this.animationId)\n },\n async play() {\n const start = performance.now()\n if (this.isLastFrame && !this.isLive) {\n this.$emit(\"update-frame-index\", 0)\n\n return\n }\n\n this.$emit(\"update-playback\", true)\n this.playing = true\n this.cancelDelay()\n this.incrementCurrentFrameIndex()\n await this.$nextTick()\n await this.loadTargetFrame()\n this.handleBuffering()\n await this.delay()\n if (this.playing) {\n this.play()\n }\n\n const end = performance.now()\n this.$emit(\"performance-intervals-changed\", {\n id: this.frames[this.frameIndex]?.timestamp,\n frame: this.frames[this.frameIndex]?.label,\n duration: end - start,\n })\n },\n flushPreloadingQueue() {\n this.$emit(\"cancel-previous-preloading\")\n this.preloadingFramesImgs.forEach((img) => {\n img.src = \"\"\n })\n this.preloadingFramesImgs = []\n },\n async pause() {\n this.playing = false\n this.imageLoaded = true\n this.src = this.previousSrc\n this.cancelDelay()\n this.handleBuffering()\n this.$emit(\"update-playback\", false)\n },\n\n onLoad() {\n this.$emit(\"on-image-load\", this.image)\n\n this.$emit(\"snapshot-changed\", {\n data: this.frames[this.frameIndex]?.src,\n createdAt: this.frames[this.frameIndex]?.timestamp,\n })\n\n const newTimestamp = this.frames?.[this.frameIndex]?.timestamp\n if (newTimestamp) {\n this.$emit(\"timestamp-change\", newTimestamp)\n }\n\n this.imageLoaded = true\n this.previousSrc = this.src as string\n this.resolveImageLoadingPromise()\n },\n onError(e: Event) {\n if (this.frameIndex > 1) {\n return this.$emit(\"update-frame-index\", this.frameIndex - 1)\n }\n this.frameError = true\n this.src = this.previousSrc\n this.resolveImageLoadingPromise()\n this.$emit(\"error\", e)\n },\n onChange(obj: Record<string, any>) {\n this.$emit(\"change\", obj)\n },\n onBeforeUpdate(e: Event) {\n this.$emit(\"hook:beforeUpdate\", e)\n },\n onBeforeDestroy(e: Event) {\n this.$emit(\"hook:beforeDestroy\", e)\n },\n togglePlay() {\n this.playing = !this.playing\n },\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\" || this.isAnnotationActive) {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n if (!this.disablePlayButton) {\n this.togglePlay()\n }\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport { timeouts } from \"@/mixins\"\nexport default Vue.extend({\n name: \"ELayout\",\n directives: {\n ResizeObserver: ResizeObserverDirective,\n },\n mixins: [timeouts],\n props: {\n height: {\n type: [String, Number],\n default: null,\n },\n withOverlay: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n footerHeight: 0,\n overlayFooterHeight: 0,\n wrapperStyle: {\n width: \"100%\",\n height: \"100%\",\n },\n mainStyle: {\n width: \"100%\",\n height: \"100%\",\n },\n mainHeight: \"100%\",\n }\n },\n computed: {\n bottomStyle(): { bottom: string } {\n return {\n bottom: `${this.overlayFooterHeight}px`,\n }\n },\n },\n watch: {\n mainHeight() {\n this.onResize()\n },\n height: {\n immediate: true,\n handler() {\n this.onResize()\n },\n },\n },\n mounted() {\n this.setOverlayFooterHeight()\n this.setFooterHeight()\n },\n methods: {\n onResize() {\n this.setFooterHeight()\n this.setOverlayFooterHeight()\n },\n onOverlayClick(e: Event) {\n this.$emit(\"overlay-click\", e)\n },\n setOverlayFooterHeight() {\n const overlayFooter = this.$refs.overlayFooter as HTMLDivElement\n if (!overlayFooter) {\n this.$setTimeout(() => {\n this.setOverlayFooterHeight()\n\n return\n })\n }\n this.overlayFooterHeight = overlayFooter?.clientHeight\n },\n setFooterHeight() {\n const footer = this.$refs.footer as HTMLDivElement\n if (!footer) {\n this.$setTimeout(() => {\n this.setFooterHeight()\n\n return\n })\n }\n this.footerHeight = footer?.clientHeight\n if (!this.$attrs.isFullscreen) {\n this.mainHeight = `${\n // @ts-expect-error\n this.height ? this.height.split(\"px\")[0] - this.footerHeight : \"100\"\n }px`\n } else {\n this.mainHeight = `${screen.height}px`\n }\n this.mainStyle = {\n width: \"100%\",\n height: this.mainHeight,\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EChatWrapper\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n embedded: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n borderClasses(): Record<string, boolean> {\n if (this.embedded) {\n return {}\n }\n\n return {\n \"e-border-[1px] e-border-solid e-rounded-lg e-overflow-hidden\": true,\n \"e-border-gray-300\": !this.dark,\n \"e-border-gray-600\": this.dark,\n }\n },\n wrapperClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800 e-text-white\": this.dark,\n \"e-bg-white e-text-gray-800\": !this.dark,\n ...this.borderClasses,\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EAvatar from \"@/components/EAvatar.vue\"\n\nexport default Vue.extend({\n name: \"EChatHeader\",\n components: { EAvatar },\n props: {\n size: {\n type: String,\n default: \"xs\",\n },\n backgroundClasses: {\n type: String,\n default: \"\",\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EEvercamLogo from \"@/components/EEvercamLogo.vue\"\n\nexport default Vue.extend({\n name: \"EChatHeader\",\n components: { EEvercamLogo },\n props: {\n title: {\n type: String,\n default: \"Evercam Copilot\",\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n backgroundClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-700\": this.dark,\n \"e-bg-gray-50\": !this.dark,\n }\n },\n headerClasses(): Record<string, boolean> {\n return {\n \"e-hidden\": this.hidden,\n ...this.backgroundClasses,\n }\n },\n logoClasses(): Record<string, boolean> {\n return {\n \"e-bg-white e-p-[2px] e-rounded-full\": this.dark,\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nexport default Vue.extend({\n name: \"EChatBody\",\n directives: {\n ResizeObserver: ResizeObserverDirective,\n },\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n autoScroll: true,\n previousChildCount: 0,\n showGoToBottomButton: false,\n }\n },\n computed: {\n bodyClasses(): Record<string, boolean> {\n return {\n \"e-custom-scrollbar--light\": !this.dark,\n \"e-custom-scrollbar--dark\": this.dark,\n }\n },\n goToBottomButtonClasses(): Record<string, boolean> {\n return {\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-bg-gray-600\": this.dark,\n \"e-bg-gray-200\": !this.dark,\n }\n },\n },\n watch: {\n autoScroll(newVal) {\n if (newVal) {\n this.scrollToBottom()\n }\n },\n },\n mounted() {\n this.scrollToBottom()\n },\n methods: {\n onContentResized() {\n const contentWrapper = this.$refs.contentWrapper as HTMLElement\n const currentChildCount = contentWrapper.childElementCount\n\n if (currentChildCount !== this.previousChildCount) {\n this.autoScroll = true\n }\n\n if (this.autoScroll) {\n this.scrollToBottom()\n }\n\n this.previousChildCount = currentChildCount\n },\n scrollToBottom() {\n const anchor = this.$refs.anchor as HTMLElement\n\n this.$nextTick(() => {\n anchor.scrollIntoView({ behavior: \"smooth\" })\n })\n },\n disableAutoScroll() {\n this.autoScroll = false\n },\n onScroll() {\n const chatBody = this.$refs.chatBody as HTMLElement\n\n const atBottom =\n chatBody.scrollHeight - chatBody.scrollTop <= chatBody.clientHeight + 1\n if (atBottom) {\n this.autoScroll = true\n }\n\n this.showGoToBottomButton =\n chatBody.scrollHeight - chatBody.scrollTop > chatBody.clientHeight + 100\n },\n onWheel(e: WheelEvent) {\n if (e.deltaY < 0) {\n this.disableAutoScroll()\n }\n },\n onKeyUp(event: KeyboardEvent) {\n const scrollKeys = [\n \"ArrowUp\",\n \"ArrowDown\",\n \"PageUp\",\n \"PageDown\",\n \"Home\",\n \"End\",\n ]\n if (scrollKeys.includes(event.key)) {\n this.disableAutoScroll()\n }\n },\n onTouch() {\n this.disableAutoScroll()\n },\n onTouchMove() {\n this.disableAutoScroll()\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { toRgba } from \"@/utils\"\n\nexport default Vue.extend({\n props: {\n size: {\n type: Number,\n default: 12,\n },\n color: {\n type: String,\n default: \"#c5393d\",\n },\n withDot: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n computedSize(): string {\n return `${this.size}px`\n },\n computedMargin(): string {\n return `${this.size / 2}px`\n },\n computedShadowSize(): string {\n return `${this.size * 2}px`\n },\n computedSecondaryColor(): string {\n return toRgba(this.color, 0) || \"#fff\"\n },\n dotContainerStyle(): Record<string, any> {\n return {\n margin: `${this.computedMargin} auto`,\n width: this.computedSize,\n height: this.computedSize,\n position: \"relative\",\n }\n },\n shadowStyle(): Record<string, any> {\n return {\n width: this.computedSize,\n height: this.computedSize,\n \"--boxShadowColor\": toRgba(this.color, 0.7),\n \"--backgroundColor\": toRgba(this.color, 0.7),\n \"--secondaryColor\": this.computedSecondaryColor,\n \"--shadowSize\": this.computedShadowSize,\n }\n },\n secondShadowStyle(): Record<string, any> {\n return {\n ...this.shadowStyle,\n animationDelay: \".33s\",\n animationDuration: \"2.3s\",\n }\n },\n dotStyle(): Record<string, any> {\n return {\n width: this.computedSize,\n height: this.computedSize,\n backgroundColor: this.withDot ? toRgba(this.color, 1) : undefined,\n }\n },\n },\n methods: {\n toRgba,\n },\n})\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"Typewriter\",[],t):\"object\"==typeof exports?exports.Typewriter=t():e.Typewriter=t()}(\"undefined\"!=typeof self?self:this,(()=>(()=>{var e={75:function(e){(function(){var t,n,r,o,a,i;\"undefined\"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:\"undefined\"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-a)/1e6},n=process.hrtime,o=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),i=1e9*process.uptime(),a=o-i):Date.now?(e.exports=function(){return Date.now()-r},r=Date.now()):(e.exports=function(){return(new Date).getTime()-r},r=(new Date).getTime())}).call(this)},4087:(e,t,n)=>{for(var r=n(75),o=\"undefined\"==typeof window?n.g:window,a=[\"moz\",\"webkit\"],i=\"AnimationFrame\",s=o[\"request\"+i],u=o[\"cancel\"+i]||o[\"cancelRequest\"+i],l=0;!s&&l<a.length;l++)s=o[a[l]+\"Request\"+i],u=o[a[l]+\"Cancel\"+i]||o[a[l]+\"CancelRequest\"+i];if(!s||!u){var c=0,p=0,d=[];s=function(e){if(0===d.length){var t=r(),n=Math.max(0,16.666666666666668-(t-c));c=n+t,setTimeout((function(){var e=d.slice(0);d.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return d.push({handle:++p,callback:e,cancelled:!1}),p},u=function(e){for(var t=0;t<d.length;t++)d[t].handle===e&&(d[t].cancelled=!0)}}e.exports=function(e){return s.call(o,e)},e.exports.cancel=function(){u.apply(o,arguments)},e.exports.polyfill=function(e){e||(e=o),e.requestAnimationFrame=s,e.cancelAnimationFrame=u}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{\"use strict\";n.d(r,{default:()=>C});var e=n(4087),t=n.n(e);const o=function(e){return new RegExp(/<[a-z][\\s\\S]*>/i).test(e)},a=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var i=\"TYPE_CHARACTER\",s=\"REMOVE_CHARACTER\",u=\"REMOVE_ALL\",l=\"REMOVE_LAST_VISIBLE_NODE\",c=\"PAUSE_FOR\",p=\"CALL_FUNCTION\",d=\"ADD_HTML_TAG_ELEMENT\",f=\"CHANGE_DELETE_SPEED\",v=\"CHANGE_DELAY\",h=\"CHANGE_CURSOR\",m=\"PASTE_STRING\",y=\"HTML_TAG\";function g(e){return g=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},g(e)}function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e){return function(e){if(Array.isArray(e))return T(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(e){if(\"string\"==typeof e)return T(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(e,t):void 0}}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function A(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){var t=function(e,t){if(\"object\"!==g(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,\"string\");if(\"object\"!==g(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===g(t)?t:String(t)}const C=function(){function n(r,g){var E=this;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),A(this,\"state\",{cursorAnimation:null,lastFrameTime:null,pauseUntil:null,eventQueue:[],eventLoop:null,eventLoopPaused:!1,reverseCalledEvents:[],calledEvents:[],visibleNodes:[],initialOptions:null,elements:{container:null,wrapper:document.createElement(\"span\"),cursor:document.createElement(\"span\")}}),A(this,\"options\",{strings:null,cursor:\"|\",delay:\"natural\",pauseFor:1500,deleteSpeed:\"natural\",loop:!1,autoStart:!1,devMode:!1,skipAddStyles:!1,wrapperClassName:\"Typewriter__wrapper\",cursorClassName:\"Typewriter__cursor\",stringSplitter:null,onCreateTextNode:null,onRemoveNode:null}),A(this,\"setupWrapperElement\",(function(){E.state.elements.container&&(E.state.elements.wrapper.className=E.options.wrapperClassName,E.state.elements.cursor.className=E.options.cursorClassName,E.state.elements.cursor.innerHTML=E.options.cursor,E.state.elements.container.innerHTML=\"\",E.state.elements.container.appendChild(E.state.elements.wrapper),E.state.elements.container.appendChild(E.state.elements.cursor))})),A(this,\"start\",(function(){return E.state.eventLoopPaused=!1,E.runEventLoop(),E})),A(this,\"pause\",(function(){return E.state.eventLoopPaused=!0,E})),A(this,\"stop\",(function(){return E.state.eventLoop&&((0,e.cancel)(E.state.eventLoop),E.state.eventLoop=null),E})),A(this,\"pauseFor\",(function(e){return E.addEventToQueue(c,{ms:e}),E})),A(this,\"typeOutAllStrings\",(function(){return\"string\"==typeof E.options.strings?(E.typeString(E.options.strings).pauseFor(E.options.pauseFor),E):(E.options.strings.forEach((function(e){E.typeString(e).pauseFor(E.options.pauseFor).deleteAll(E.options.deleteSpeed)})),E)})),A(this,\"typeString\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(o(e))return E.typeOutHTMLString(e,t);if(e){var n=(E.options||{}).stringSplitter,r=\"function\"==typeof n?n(e):e.split(\"\");E.typeCharacters(r,t)}return E})),A(this,\"pasteString\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return o(e)?E.typeOutHTMLString(e,t,!0):(e&&E.addEventToQueue(m,{character:e,node:t}),E)})),A(this,\"typeOutHTMLString\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2?arguments[2]:void 0,r=function(e){var t=document.createElement(\"div\");return t.innerHTML=e,t.childNodes}(e);if(r.length>0)for(var o=0;o<r.length;o++){var a=r[o],i=a.innerHTML;a&&3!==a.nodeType?(a.innerHTML=\"\",E.addEventToQueue(d,{node:a,parentNode:t}),n?E.pasteString(i,a):E.typeString(i,a)):a.textContent&&(n?E.pasteString(a.textContent,t):E.typeString(a.textContent,t))}return E})),A(this,\"deleteAll\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"natural\";return E.addEventToQueue(u,{speed:e}),E})),A(this,\"changeDeleteSpeed\",(function(e){if(!e)throw new Error(\"Must provide new delete speed\");return E.addEventToQueue(f,{speed:e}),E})),A(this,\"changeDelay\",(function(e){if(!e)throw new Error(\"Must provide new delay\");return E.addEventToQueue(v,{delay:e}),E})),A(this,\"changeCursor\",(function(e){if(!e)throw new Error(\"Must provide new cursor\");return E.addEventToQueue(h,{cursor:e}),E})),A(this,\"deleteChars\",(function(e){if(!e)throw new Error(\"Must provide amount of characters to delete\");for(var t=0;t<e;t++)E.addEventToQueue(s);return E})),A(this,\"callFunction\",(function(e,t){if(!e||\"function\"!=typeof e)throw new Error(\"Callback must be a function\");return E.addEventToQueue(p,{cb:e,thisArg:t}),E})),A(this,\"typeCharacters\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e||!Array.isArray(e))throw new Error(\"Characters must be an array\");return e.forEach((function(e){E.addEventToQueue(i,{character:e,node:t})})),E})),A(this,\"removeCharacters\",(function(e){if(!e||!Array.isArray(e))throw new Error(\"Characters must be an array\");return e.forEach((function(){E.addEventToQueue(s)})),E})),A(this,\"addEventToQueue\",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return E.addEventToStateProperty(e,t,n,\"eventQueue\")})),A(this,\"addReverseCalledEvent\",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return E.options.loop?E.addEventToStateProperty(e,t,n,\"reverseCalledEvents\"):E})),A(this,\"addEventToStateProperty\",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0,o={eventName:e,eventArgs:t||{}};return E.state[r]=n?[o].concat(b(E.state[r])):[].concat(b(E.state[r]),[o]),E})),A(this,\"runEventLoop\",(function(){E.state.lastFrameTime||(E.state.lastFrameTime=Date.now());var e=Date.now(),n=e-E.state.lastFrameTime;if(!E.state.eventQueue.length){if(!E.options.loop)return;E.state.eventQueue=b(E.state.calledEvents),E.state.calledEvents=[],E.options=w({},E.state.initialOptions)}if(E.state.eventLoop=t()(E.runEventLoop),!E.state.eventLoopPaused){if(E.state.pauseUntil){if(e<E.state.pauseUntil)return;E.state.pauseUntil=null}var r,o=b(E.state.eventQueue),g=o.shift();if(!(n<=(r=g.eventName===l||g.eventName===s?\"natural\"===E.options.deleteSpeed?a(40,80):E.options.deleteSpeed:\"natural\"===E.options.delay?a(120,160):E.options.delay))){var T=g.eventName,S=g.eventArgs;switch(E.logInDevMode({currentEvent:g,state:E.state,delay:r}),T){case m:case i:var A=S.character,N=S.node,C=document.createTextNode(A),_=C;E.options.onCreateTextNode&&\"function\"==typeof E.options.onCreateTextNode&&(_=E.options.onCreateTextNode(A,C)),_&&(N?N.appendChild(_):E.state.elements.wrapper.appendChild(_)),E.state.visibleNodes=[].concat(b(E.state.visibleNodes),[{type:\"TEXT_NODE\",character:A,node:_}]);break;case s:o.unshift({eventName:l,eventArgs:{removingCharacterNode:!0}});break;case c:var O=g.eventArgs.ms;E.state.pauseUntil=Date.now()+parseInt(O);break;case p:var L=g.eventArgs,D=L.cb,M=L.thisArg;D.call(M,{elements:E.state.elements});break;case d:var x=g.eventArgs,P=x.node,j=x.parentNode;j?j.appendChild(P):E.state.elements.wrapper.appendChild(P),E.state.visibleNodes=[].concat(b(E.state.visibleNodes),[{type:y,node:P,parentNode:j||E.state.elements.wrapper}]);break;case u:var R=E.state.visibleNodes,k=S.speed,Q=[];k&&Q.push({eventName:f,eventArgs:{speed:k,temp:!0}});for(var F=0,H=R.length;F<H;F++)Q.push({eventName:l,eventArgs:{removingCharacterNode:!1}});k&&Q.push({eventName:f,eventArgs:{speed:E.options.deleteSpeed,temp:!0}}),o.unshift.apply(o,Q);break;case l:var I=g.eventArgs.removingCharacterNode;if(E.state.visibleNodes.length){var U=E.state.visibleNodes.pop(),q=U.type,G=U.node,Y=U.character;E.options.onRemoveNode&&\"function\"==typeof E.options.onRemoveNode&&E.options.onRemoveNode({node:G,character:Y}),G&&G.parentNode.removeChild(G),q===y&&I&&o.unshift({eventName:l,eventArgs:{}})}break;case f:E.options.deleteSpeed=g.eventArgs.speed;break;case v:E.options.delay=g.eventArgs.delay;break;case h:E.options.cursor=g.eventArgs.cursor,E.state.elements.cursor.innerHTML=g.eventArgs.cursor}E.options.loop&&(g.eventName===l||g.eventArgs&&g.eventArgs.temp||(E.state.calledEvents=[].concat(b(E.state.calledEvents),[g]))),E.state.eventQueue=o,E.state.lastFrameTime=e}}})),r)if(\"string\"==typeof r){var T=document.querySelector(r);if(!T)throw new Error(\"Could not find container element\");this.state.elements.container=T}else this.state.elements.container=r;g&&(this.options=w(w({},this.options),g)),this.state.initialOptions=w({},this.options),this.init()}var r,g;return r=n,(g=[{key:\"init\",value:function(){var e,t;this.setupWrapperElement(),this.addEventToQueue(h,{cursor:this.options.cursor},!0),this.addEventToQueue(u,null,!0),!window||window.___TYPEWRITER_JS_STYLES_ADDED___||this.options.skipAddStyles||(e=\".Typewriter__cursor{-webkit-animation:Typewriter-cursor 1s infinite;animation:Typewriter-cursor 1s infinite;margin-left:1px}@-webkit-keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}\",(t=document.createElement(\"style\")).appendChild(document.createTextNode(e)),document.head.appendChild(t),window.___TYPEWRITER_JS_STYLES_ADDED___=!0),!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings().start()}},{key:\"logInDevMode\",value:function(e){this.options.devMode&&console.log(e)}}])&&S(r.prototype,g),Object.defineProperty(r,\"prototype\",{writable:!1}),n}()})(),r.default})()));\n//# sourceMappingURL=core.js.map","import remarkGfm from \"remark-gfm\"\nimport remarkParse from \"remark-parse\"\nimport remarkRehype from \"remark-rehype\"\nimport remarkBreaks from \"remark-breaks\"\nimport rehypeStringify from \"rehype-stringify\"\nimport { visit } from \"unist-util-visit\"\nimport { UnistNode, UnistParent } from \"unist-util-visit/lib\"\nimport { unified, Processor as UnifiedJsProcessor } from \"unified\"\nimport morphdom from \"morphdom\"\n// @ts-expect-error missing type\nimport Typewriter from \"typewriter-effect/dist/core\"\nimport { EMarkdownRegex, EMarkdownRegexMatch } from \"@/types\"\n\nenum UnistNodeType {\n Text = \"text\",\n Html = \"html\",\n Root = \"root\",\n Table = \"table\",\n TableRow = \"tableRow\",\n TableCell = \"tableCell\",\n TableBody = \"tableBody\",\n}\n\nexport class MarkdownProcessor {\n container: HTMLElement\n htmlRenderingTarget: HTMLElement\n processor: UnifiedJsProcessor | null = null\n accumulator: string = \"\"\n totalMarkdown: string = \"\"\n lastProcessedLength: number = 0\n exposedRegexes: EMarkdownRegex[]\n regexRenderTargetsById: Record<string, EMarkdownRegexMatch> = {}\n isRenderingTable: boolean = false\n isFirstTableRender: boolean = false\n mdTableHeaderString: string = \"\"\n isIncompleteTableRow: boolean = false\n pendingRowString: string = \"\"\n tableId: number = 0\n rowId: number = 0\n animated: boolean\n useTableProcessor: boolean\n onAnimationStart: () => void\n onAnimationEnd: () => void\n typewriter: Typewriter | null = null\n\n constructor(\n container: HTMLElement,\n config: {\n exposedRegexes?: { regex: RegExp; type: string }[]\n animated?: boolean\n onAnimationStart?: () => void\n onAnimationEnd?: () => void\n useTableProcessor?: boolean\n }\n ) {\n this.container = container\n this.htmlRenderingTarget = container\n this.exposedRegexes = config.exposedRegexes || []\n this.useTableProcessor = !!config.useTableProcessor\n this.initProcessor()\n\n this.animated = !!config.animated\n if (this.animated) {\n this.typewriter = this.initTypewriter()\n }\n this.onAnimationStart = config.onAnimationStart || (() => {})\n this.onAnimationEnd = config.onAnimationEnd || (() => {})\n }\n\n initProcessor() {\n // @ts-expect-error missing type\n this.processor = unified()\n .use(remarkParse)\n .use(this.remarkCheckIncompleteTableRows.bind(this))\n .use(remarkBreaks)\n .use(remarkBreaks)\n .use(remarkGfm)\n .use(remarkRehype, { allowDangerousHtml: true })\n .use(rehypeStringify, { allowDangerousHtml: true })\n }\n\n remarkCheckIncompleteTableRows() {\n return (tree: UnistNode) => {\n visit(tree, undefined, (node, index, p) => {\n const parent = p as UnistParent\n const nodeType = node.type as UnistNodeType\n\n if (nodeType === \"text\") {\n this.exposedRegexes.forEach(({ regex, type }) => {\n this.processTextNode(node, index!, parent, regex, type)\n })\n }\n if (!this.useTableProcessor) {\n return\n }\n if (nodeType === UnistNodeType.Table && !node.data) {\n node.data = { hProperties: { id: `t-${this.tableId}` } }\n this.mdTableHeaderString = this.extractTableHeaderString(\n node as UnistParent\n )\n this.setIsRenderingTable(true)\n }\n\n if (nodeType === UnistNodeType.TableRow && !node.data) {\n node.data = { hProperties: { id: `r-${this.rowId++}` } }\n }\n\n if (nodeType === UnistNodeType.TableRow) {\n const columnCount = (parent.children[0] as UnistParent).children\n .length\n const cellCount = (node as UnistParent).children.length\n const pendingRowString = this.accumulator.slice(\n node.position?.start.offset,\n node.position?.end.offset\n )\n if (cellCount < columnCount) {\n this.isIncompleteTableRow = true\n } else if (!pendingRowString.endsWith(\"|\")) {\n this.pendingRowString = pendingRowString\n this.isIncompleteTableRow = true\n } else {\n this.isIncompleteTableRow = false\n this.pendingRowString = \"\"\n }\n }\n })\n }\n }\n\n setIsRenderingTable(v: boolean) {\n if (v && !this.isRenderingTable) {\n this.isFirstTableRender = true\n }\n\n if (!v && this.isRenderingTable) {\n this.startNewRenderingCycle()\n }\n\n this.isRenderingTable = v\n }\n\n startNewRenderingCycle() {\n const newDiv = document.createElement(\"div\")\n this.container!.appendChild(newDiv)\n this.htmlRenderingTarget = newDiv\n this.accumulator = \"\"\n\n if (this.isRenderingTable) {\n this.tableId++\n this.mdTableHeaderString = \"\"\n this.isIncompleteTableRow = false\n this.isRenderingTable = false\n }\n }\n\n extractTableHeaderString(node: UnistParent): string {\n const tableNode = node as UnistParent & { align: string[] }\n const headerRow = tableNode.children[0] as UnistParent\n const separatorRow = tableNode.align as string[]\n\n const header = headerRow.children\n .map((headerCell) => {\n const cellText = (headerCell as UnistParent).children\n // @ts-expect-error missing type\n .map((textNode) => (textNode as UnistNode).value)\n .join(\"\")\n\n return ` ${cellText} `\n })\n .join(\"|\")\n\n const separator = separatorRow\n .map((alignment: string) => {\n if (alignment === \"left\") return \":---\"\n if (alignment === \"right\") return \"---:\"\n if (alignment === \"center\") return \":---:\"\n\n return \"---\"\n })\n .join(\"|\")\n\n return `|${header}|\\n|${separator}|\\n`\n }\n\n async processMarkdown(newMarkdown: string) {\n if (!this.processor) {\n throw new Error(\"Processor not initialized\")\n }\n\n const markdown = await this.handleNewMarkdown(newMarkdown)\n\n this.accumulator += markdown\n this.totalMarkdown += markdown\n\n if (this.isRenderingTable && this.accumulator.length < 30) {\n return false\n }\n const file = await this.processor.process(this.accumulator)\n\n if (this.isIncompleteTableRow) {\n this.isIncompleteTableRow = false\n\n return false\n }\n\n const processedHtml = file.toString()\n\n if (!processedHtml) {\n return false\n }\n\n await this.render(processedHtml)\n this.lastProcessedLength = this.accumulator.length\n\n return true\n }\n\n async handleNewMarkdown(newMarkdown: string) {\n const isNewSection = newMarkdown.includes(\"\\n\\n\")\n if (!isNewSection) {\n return newMarkdown\n }\n\n let markdown = newMarkdown\n const [remainingOldSection] = newMarkdown.split(\"\\n\\n\")\n await this.processMarkdown(remainingOldSection)\n markdown = markdown.replace(remainingOldSection, \"\")\n\n this.startNewRenderingCycle()\n\n return markdown\n }\n\n async render(processedHtml: string) {\n if (this.isFirstTableRender) {\n this.updateContent(processedHtml)\n this.isFirstTableRender = false\n }\n\n if (this.isRenderingTable) {\n this.updateTableContent(processedHtml)\n this.accumulator = this.mdTableHeaderString + this.pendingRowString\n } else if (this.animated) {\n await this.animateNewChunk(processedHtml)\n } else {\n this.updateContent(processedHtml)\n }\n }\n\n updateTableContent(processedHtml: string) {\n const sourceTable = this.extractTableFromHtml(processedHtml)\n if (!sourceTable) {\n return\n }\n\n const container = this.htmlRenderingTarget!.parentNode as HTMLElement\n const destinationTable = this.ensureTableExists(container)\n this.removeEmptyTableRows(destinationTable)\n\n const sourceTBody =\n sourceTable.querySelector(\"tbody\") || document.createElement(\"tbody\")\n const destinationTBody = this.ensureTBodyExists(destinationTable)\n\n this.copyTableHead(sourceTable, destinationTable)\n this.copyTableBodyRows(sourceTBody, destinationTBody)\n }\n\n processTextNode(\n node: UnistNode,\n nodeIndex: number,\n parent: UnistParent,\n regex: RegExp,\n type: string\n ) {\n const text = (node as UnistNode & { value: string }).value\n const parts = text.split(regex)\n if (parts.length > 1) {\n const newNodes = this.replaceRegexTargets(\n parts,\n regex,\n type,\n node,\n nodeIndex\n )!\n parent.children.splice(nodeIndex, 1, ...newNodes)\n }\n }\n\n replaceRegexTargets(\n parts: string[],\n regex: RegExp,\n type: string,\n node: any,\n nodeIndex: number\n ) {\n return parts\n .map((part, partIndex) => {\n if (regex.test(part)) {\n const uniqueId = `regex-target-${type}-${partIndex}-${nodeIndex}-${\n this.totalMarkdown.length\n }-${node?.position?.start?.offset!}`\n\n this.regexRenderTargetsById[uniqueId] = { match: part, type }\n\n return {\n type: \"html\",\n value: `<span id=\"${uniqueId}\">${part}</span>`,\n }\n }\n\n return part ? { type: \"text\", value: part } : null\n })\n .filter(Boolean) as UnistNode[]\n }\n\n ensureTableExists(container: HTMLElement): HTMLTableElement {\n let destinationTable = container.querySelector(\n `table#t-${this.tableId}`\n ) as HTMLTableElement\n\n if (!destinationTable) {\n destinationTable = document.createElement(\"table\")\n destinationTable.id = `t-${this.tableId}`\n container.appendChild(destinationTable)\n }\n\n return destinationTable\n }\n\n ensureTBodyExists(table: HTMLTableElement): HTMLTableSectionElement {\n let destinationTBody = table.querySelector(\"tbody\")\n if (!destinationTBody) {\n destinationTBody = document.createElement(\"tbody\")\n table.appendChild(destinationTBody)\n }\n\n return destinationTBody\n }\n\n copyTableHead(\n sourceTable: HTMLTableElement,\n destinationTable: HTMLTableElement\n ) {\n const sourceTHead = sourceTable.querySelector(\"thead\")\n let destinationTHead = destinationTable.querySelector(\"thead\")\n if (!destinationTHead && sourceTHead) {\n destinationTable.appendChild(sourceTHead)\n }\n }\n\n copyTableBodyRows(\n sourceTBody: HTMLTableSectionElement,\n destinationTBody: HTMLTableSectionElement\n ) {\n const rows = sourceTBody.querySelectorAll(\"tr\")\n const existingRowsIds = Array.from(\n destinationTBody.querySelectorAll(\"tr\")\n ).map((row) => row.id)\n if (rows) {\n rows.forEach((row) => {\n if (!row.innerText.trim() || existingRowsIds.includes(row.id)) {\n return\n }\n destinationTBody.appendChild(row.cloneNode(true))\n })\n }\n }\n\n removeEmptyTableRows(tableElement: HTMLTableElement) {\n const rows = tableElement.querySelectorAll(\"tr\")\n rows.forEach((row) => {\n const cells = row.querySelectorAll(\"td, th\")\n let isEmpty = true\n cells.forEach((cell) => {\n if (cell.textContent!.trim() !== \"\") {\n isEmpty = false\n }\n })\n\n if (isEmpty) {\n row.parentNode!.removeChild(row)\n }\n })\n }\n\n getRegexRenderTargets() {\n return this.regexRenderTargetsById\n }\n\n clearRegexRenderTargets() {\n this.regexRenderTargetsById = {}\n }\n\n extractTableFromHtml(processedHtml: string): HTMLTableElement | null {\n const sourceDiv = document.createElement(\"div\")\n sourceDiv.innerHTML = processedHtml\n\n return sourceDiv.querySelector(`table#t-${this.tableId}`)\n }\n\n updateContent(processedHtml: string) {\n const tempDiv = document.createElement(\"div\")\n tempDiv.innerHTML = processedHtml\n\n morphdom(this.htmlRenderingTarget!, tempDiv, {\n onBeforeElUpdated: (fromEl, toEl) => {\n if (fromEl.classList.contains(\"Typewriter__wrapper\")) {\n toEl.innerHTML = fromEl.innerHTML\n\n return false\n }\n\n return true\n },\n })\n }\n\n initTypewriter() {\n return new Typewriter(this.container as HTMLElement, {\n loop: false,\n delay: 0,\n cursor: \"\",\n })\n }\n async animateNewChunk(processedHtml: string) {\n const newContent = this.getNewContent(processedHtml)\n await new Promise<void>((resolve) => {\n this.onAnimationStart()\n this.typewriter!.typeString(newContent)\n .callFunction(() => {\n this.onAnimationEnd()\n resolve()\n })\n .start()\n })\n }\n\n getNewContent(processedHtml: string): string {\n const tempDiv = document.createElement(\"div\")\n tempDiv.innerHTML = processedHtml\n const fullContent = tempDiv.textContent || \"\"\n\n return fullContent.slice(this.lastProcessedLength)\n }\n}\n","\nimport Vue, { PropType } from \"vue\"\nimport { EMarkdownRegex, EMarkdownRegexMatch } from \"@/types\"\nimport { MarkdownProcessor } from \"@/components/chat/MarkdownProcessor\"\n\nexport default Vue.extend({\n name: \"EMarkdown\",\n props: {\n nextChunks: {\n type: [Array, String] as PropType<string[] | string>,\n default: () => [],\n },\n exposedRegexes: {\n type: Array as PropType<EMarkdownRegex[]>,\n default: () => [],\n },\n animated: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n useTableProcessor: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n isProcessing: false,\n processor: null as MarkdownProcessor | null,\n }\n },\n watch: {\n nextChunks(newChunks: string[]) {\n this.handleNewChunk(newChunks.join(\"\"))\n },\n },\n mounted() {\n this.initProcessor()\n this.processInitialChunks()\n },\n methods: {\n initProcessor() {\n const contentDiv = this.$refs.content as HTMLElement\n this.processor = new MarkdownProcessor(contentDiv!, {\n exposedRegexes: this.exposedRegexes,\n animated: this.animated,\n onAnimationStart: () => this.$emit(\"animation-start\"),\n onAnimationEnd: () => this.$emit(\"animation-end\"),\n useTableProcessor: this.useTableProcessor,\n })\n },\n async processChunk(newChunk: string) {\n const ok = await this.processor?.processMarkdown(newChunk)\n\n if (!ok) {\n return\n }\n\n this.renderRegexesScopedSlots()\n },\n async handleNewChunk(newChunk: string) {\n await this.processChunk(newChunk)\n },\n async processInitialChunks() {\n const chunks = Array.isArray(this.nextChunks)\n ? this.nextChunks\n : [this.nextChunks]\n for (const chunk of chunks) {\n await this.handleNewChunk(chunk)\n }\n },\n renderRegexesScopedSlots() {\n const targets = this.processor?.getRegexRenderTargets() as Record<\n string,\n EMarkdownRegexMatch\n >\n Object.entries(targets).forEach(([id, { match, type }]) => {\n this.renderScopedSlot({ id, type, propsData: { match } })\n })\n this.processor?.clearRegexRenderTargets()\n },\n renderScopedSlot({\n id,\n type,\n propsData,\n }: {\n id: string\n type: string\n propsData: { match: string }\n }) {\n const targetElement = document.getElementById(id)\n if (!targetElement) {\n return\n }\n\n const scopedSlot = this.$scopedSlots[`markdown.regex.${type}`]\n if (!scopedSlot) {\n return\n }\n\n const ReactiveSlotWrapper = Vue.extend({\n functional: true,\n props: [\"scopedSlot\", \"propsData\"],\n render: (h, ctx) => ctx.props.scopedSlot(ctx.props.propsData),\n })\n\n const vm = new Vue({\n render: (h) =>\n h(ReactiveSlotWrapper, { props: { scopedSlot, propsData } }),\n }).$mount()\n\n targetElement.innerHTML = \"\"\n targetElement.appendChild(vm.$el)\n\n return vm\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EActionButton from \"@/components/EActionButton.vue\"\nimport { eventListeners, timeouts } from \"@/mixins\"\nexport default Vue.extend({\n name: \"ECopyToClipboardBtn\",\n components: { EActionButton },\n mixins: [eventListeners, timeouts],\n props: {\n text: {\n type: [Function, String, Number],\n required: true,\n },\n buttonText: {\n type: String,\n default: \"\",\n },\n buttonClasses: {\n type: [String, Object, Array],\n default: null,\n },\n description: {\n type: String,\n default: \"Copy\",\n },\n iconType: {\n type: String,\n default: \"far fa-copy\",\n },\n textOnlyButton: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n loading: false,\n tooltipText: this.description || \"Copy to clipboard\",\n }\n },\n computed: {\n copyButtonClasses(): Record<string, boolean> {\n return {\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-bg-gray-600\": this.dark,\n \"e-bg-gray-200\": !this.dark,\n \"e-rounded-md e-border-none copy-button\": true,\n }\n },\n },\n watch: {\n tooltipText(val) {\n if (val !== this.description) {\n this.$setTimeout(() => {\n this.tooltipText = this.description\n }, 1000)\n }\n },\n },\n mounted() {\n this.$addEventListener(\n \"focusin\",\n this.handleFocusin,\n this.$refs.copyToClipboard as HTMLTextAreaElement\n )\n },\n methods: {\n handleFocusin(e: Event) {\n e.stopPropagation()\n },\n getProp(propName: string, fallback: any) {\n if (Object.prototype.hasOwnProperty.call(this.$attrs, propName)) {\n return this.$attrs[propName]\n } else {\n return fallback\n }\n },\n\n copyTextToClipboard() {\n try {\n this.loading = true\n let text\n if (typeof this.text === \"function\") {\n text = this.text()\n } else {\n text = this.text\n }\n const copyToClipboard = this.$refs\n .copyToClipboard as HTMLTextAreaElement\n copyToClipboard.value = text\n copyToClipboard.focus()\n copyToClipboard.select()\n\n document.execCommand(\"copy\")\n this.tooltipText = \"Copied!\"\n this.$emit(\"copied\")\n } catch (error) {\n console.error(\"Failed to copy text to clipboard\", error)\n } finally {\n this.loading = false\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, DialogAction } from \"@/types\"\nimport { ClickOutsideDirective } from \"@/directives\"\nimport EFadeTransition from \"@/components/EFadeTransition.vue\"\n\nexport default Vue.extend({\n name: \"EDialog\",\n components: {\n EFadeTransition,\n },\n directives: {\n clickOutside: ClickOutsideDirective,\n },\n props: {\n value: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n actions: {\n type: Array as PropType<DialogAction[]>,\n default: () => [],\n },\n title: {\n type: String,\n default: \"\",\n },\n persistent: {\n type: Boolean,\n default: false,\n },\n width: {\n type: [Number, String],\n default: 500,\n },\n height: {\n type: [Number, String, undefined],\n default: undefined,\n },\n },\n computed: {\n visible: {\n get(): boolean {\n return this.value\n },\n set(val): void {\n this.$emit(\"input\", val)\n },\n },\n panelClasses(): string[] {\n return [\n \"e-relative e-transform e-overflow-hidden e-rounded-lg e-text-left e-shadow-xl e-transition-all e-w-full e-flex e-flex-col\",\n this.dark ? \"e-bg-gray-800\" : \"e-bg-white\",\n ]\n },\n headerContainerClasses(): string[] {\n return [\n \"e-dialog__header\",\n this.dark\n ? \"e-bg-gray-800 e-text-gray-50\"\n : \"e-bg-white e-text-slate-900\",\n \"e-px-6 e-pt-6 e-pb-4 \",\n ]\n },\n bodyContainerClasses(): string[] {\n return [\n \"e-dialog__body e-px-6\",\n this.dark\n ? \"e-bg-gray-800 e-text-gray-50\"\n : \"e-bg-white e-text-slate-900\",\n ]\n },\n footerContainerClasses(): string[] {\n return [\n \"e-dialog__footer\",\n this.dark ? \"e-bg-gray-700\" : \"e-bg-gray-50\",\n \"e-flex e-py-3 e-flex e-px-4 e-justify-end e-mt-auto e-items-end\",\n ]\n },\n panelStyles(): Record<string, unknown> {\n const width =\n typeof this.width === \"number\" ? `${this.width}px` : this.width\n const height =\n typeof this.height === \"number\" ? `${this.height}px` : this.height\n\n return {\n minWidth: width,\n minHeight: height,\n width,\n height,\n }\n },\n },\n methods: {\n getButtonClasses(color): string[] {\n const defaultClasses = this.dark\n ? \"e-bg-gray-700 e-text-gray-50 e-border-solid e-border-[1px] e-border-gray-500 hover:e-bg-gray-600\"\n : \"e-bg-white e-text-gray-900 e-border-solid e-border-[1px] e-border-gray-300 hover:e-bg-gray-50\"\n const colorClasses = {\n [BaseColor.warning]: \"e-bg-warning e-text-white e-border-none\",\n [BaseColor.error]: \"e-bg-error e-text-white e-border-none\",\n [BaseColor.info]: \"e-bg-info e-text-white e-border-none\",\n [BaseColor.success]: \"e-bg-success e-text-white e-border-none\",\n [BaseColor.primary]: \"e-bg-primary e-text-white e-border-none\",\n [BaseColor.brand]: \"e-bg-brand-500 e-text-white e-border-none\",\n [BaseColor.default]: defaultClasses,\n [BaseColor.gray]:\n \"e-bg-gray-600 e-text-white hover:e-bg-gray-light e-border-none\",\n }\n\n return [\n \"e-inline-flex e-w-full e-justify-center e-rounded-md e-px-3 e-py-2 e-text-sm e-font-semibold e-shadow-sm sm:e-ml-3 sm:e-w-auto e-cursor-pointer hover:e-opacity-90\",\n colorClasses[color] || colorClasses[BaseColor.default],\n ]\n },\n onActionClick(action) {\n if (action.closeOnClick) {\n this.visible = false\n }\n this.$emit(\"action-clicked\", action.id || action.label)\n },\n onClickOutside() {\n if (!this.persistent) {\n this.visible = false\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport EActionButton from \"@/components/EActionButton.vue\"\nimport { eventListeners, timeouts } from \"@/mixins\"\nimport EDialog from \"@/components/EDialog.vue\"\nimport { DialogAction } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EFeedbackButton\",\n components: { EDialog, EActionButton },\n mixins: [eventListeners, timeouts],\n props: {\n buttonText: {\n type: String,\n default: \"\",\n },\n buttonClasses: {\n type: [String, Object, Array],\n default: null,\n },\n description: {\n type: String,\n default: \"Submit feedback\",\n },\n iconType: {\n type: String,\n default: \"far fa-thumbs-up\",\n },\n withText: {\n type: Boolean,\n default: false,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n dialogActions: {\n type: Array as PropType<DialogAction[]>,\n default: () => [{ label: \"Submit\", color: \"primary\" }],\n },\n dialogWidth: {\n type: [Number, String],\n default: \"27rem\",\n },\n },\n data() {\n return {\n tooltipText: this.description || \"Submit feedback\",\n showDialog: false,\n feedbackText: \"\",\n }\n },\n computed: {\n eButtonClasses(): Record<string, boolean> {\n return {\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-bg-gray-600\": this.dark,\n \"e-bg-gray-200\": !this.dark,\n \"e-rounded-md e-border-none\": true,\n }\n },\n textAreaClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n \"e-text-gray-600\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-custom-scrollbar--light\": !this.dark,\n \"e-custom-scrollbar--dark\": this.dark,\n }\n },\n textAreaContainerClasses(): Record<string, boolean> {\n return {\n \"e-border-gray-600\": this.dark,\n \"e-border-gray-300\": !this.dark,\n }\n },\n },\n watch: {\n tooltipText(val) {\n if (val !== this.description) {\n this.$setTimeout(() => {\n this.tooltipText = this.description\n }, 1000)\n }\n },\n },\n methods: {\n onClick() {\n if (this.withText) {\n this.showDialog = true\n } else {\n this.submitFeedback()\n }\n },\n submitFeedback() {\n this.showDialog = false\n this.$emit(\"submit\", this.feedbackText)\n this.tooltipText = \"Thank you!\"\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FeedbackType } from \"@/types\"\nimport ECopyToClipboardBtn from \"@/components/ECopyToClipboardBtn.vue\"\nimport EFeedbackButton from \"@/components/EFeedackButton.vue\"\nimport EActionButton from \"@/components/EActionButton.vue\"\nexport default Vue.extend({\n name: \"EChatMessageActions\",\n components: {\n EFeedbackButton,\n ECopyToClipboardBtn,\n EActionButton,\n },\n props: {\n message: {\n type: [String, Array] as PropType<string | string[]>,\n default: \"\",\n },\n dark: {\n type: Boolean,\n default: false,\n },\n showCopyButton: {\n type: Boolean,\n default: false,\n },\n showFeedbackButtons: {\n type: Boolean,\n default: false,\n },\n messageId: {\n type: [String, Number],\n default: null,\n },\n },\n data() {\n return {\n FeedbackType,\n showFeedbackDialog: false,\n }\n },\n computed: {\n messageText(): string {\n const chunks = Array.isArray(this.message) ? this.message : [this.message]\n\n return chunks.join(\"\")\n },\n eButtonClasses(): Record<string, boolean> {\n return {\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-bg-gray-600\": this.dark,\n \"e-bg-gray-200\": !this.dark,\n \"e-rounded-md e-border-none\": true,\n }\n },\n },\n methods: {\n handleFeedback(type: FeedbackType, text?: string) {\n this.$emit(\"feedback\", { type, text })\n },\n openFeedbackDialog() {\n this.showFeedbackDialog = true\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport {\n ChatMessageRole,\n EMarkdownRegex,\n Feedback,\n ChatMessageType,\n} from \"@/types\"\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EEvercamLogo from \"@/components/EEvercamLogo.vue\"\nimport EPulsatingDot from \"@/components/EPulsatingDot.vue\"\nimport EMarkdown from \"@/components/chat/EMarkdown.vue\"\nimport EFadeTransition from \"@/components/EFadeTransition.vue\"\nimport EChatMessageActions from \"@/components/chat/EChatMessageActions.vue\"\nimport { timeouts } from \"@/mixins\"\n\nexport default Vue.extend({\n name: \"EChatMessage\",\n components: {\n EFadeTransition,\n EAvatar,\n EChatMessageActions,\n EEvercamLogo,\n EPulsatingDot,\n EMarkdown,\n },\n mixins: [timeouts],\n props: {\n role: {\n type: String as PropType<ChatMessageRole>,\n default: ChatMessageRole.USER,\n },\n initials: {\n type: String,\n default: null,\n },\n message: {\n type: [String, Array, Object] as PropType<\n string | string[] | Record<string, unknown>\n >,\n default: \"\",\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n avatarSrc: {\n type: String,\n default: null,\n },\n type: {\n type: String as PropType<ChatMessageType>,\n default: ChatMessageType.Text,\n },\n showAvatar: {\n type: Boolean,\n default: true,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n withActions: {\n type: Boolean,\n default: false,\n },\n showCopyButton: {\n type: Boolean,\n default: false,\n },\n showFeedbackButtons: {\n type: Boolean,\n default: false,\n },\n loadingMessage: {\n type: String,\n default: \"\",\n },\n exposedRegexes: {\n type: Array as PropType<EMarkdownRegex[]>,\n default: () => [],\n },\n animated: {\n type: Boolean,\n default: false,\n },\n eMarkdownProps: {\n type: Object as PropType<Record<string, unknown>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n showActions: false,\n nextChunks: [] as string[],\n }\n },\n computed: {\n isBotRole(): boolean {\n return (\n this.role === ChatMessageRole.Copilot ||\n this.role === ChatMessageRole.System\n )\n },\n userMessageClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-100 e-text-gray-800\": !this.dark,\n \"e-bg-gray-600 e-text-white\": this.dark,\n }\n },\n logoClasses(): Record<string, boolean> {\n return {\n \"e-bg-white e-p-[2px] e-rounded-full\": this.dark,\n }\n },\n dotColor(): string {\n return this.dark ? \"#ff2525\" : \"#c5393d\"\n },\n markdownScopedSlots(): Record<string, Vue> {\n return Object.keys(this.$scopedSlots)\n .filter((name) => name.startsWith(\"markdown.\"))\n .reduce((slots, name) => {\n slots[name] = this.$scopedSlots[name]\n\n return slots\n }, {})\n },\n },\n watch: {\n message: {\n immediate: true,\n handler(newChunks: string[], oldChunks: string[]) {\n if (!newChunks.length) {\n return\n }\n\n if (!oldChunks?.length) {\n this.nextChunks = newChunks\n } else {\n this.nextChunks = newChunks.slice(oldChunks.length)\n }\n },\n },\n },\n methods: {\n onMouseOver() {\n this.showActions = true\n },\n onMouseLeave(e: MouseEvent) {\n if (\n [null, document.documentElement].includes(\n e.relatedTarget as HTMLElement | null\n )\n ) {\n return\n }\n this.showActions = false\n },\n onFeedback(feedback: Feedback) {\n this.$emit(\"feedback\", feedback)\n this.$setTimeout(() => {\n this.showActions = false\n }, 1000)\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EChatFooter\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n inline: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n backgroundClasses(): Record<string, boolean> {\n if (this.inline) {\n return {}\n }\n\n return {\n \"e-bg-gray-700\": this.dark,\n \"e-bg-gray-50\": !this.dark,\n }\n },\n footerClasses(): Record<string, boolean> {\n return {\n ...this.backgroundClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EVoiceInputVolumeIndicator\",\n props: {\n isListening: {\n type: Boolean,\n required: true,\n },\n analyser: {\n type: Object as PropType<AnalyserNode | null>,\n required: true,\n },\n },\n data() {\n return {\n volume: 0,\n animationFrameId: 0,\n }\n },\n watch: {\n isListening: {\n immediate: true,\n handler(newVal) {\n if (newVal) {\n this.startVolumeMonitoring()\n } else {\n this.stopVolumeMonitoring()\n }\n },\n },\n },\n beforeDestroy() {\n this.stopVolumeMonitoring()\n },\n methods: {\n startVolumeMonitoring() {\n if (!this.analyser) {\n return\n }\n\n this.updateVolume()\n },\n updateVolume() {\n if (!this.analyser) {\n return\n }\n const dataArray = new Uint8Array(this.analyser.frequencyBinCount)\n this.analyser!.getByteFrequencyData(dataArray)\n\n let sum = 0\n for (const amplitude of dataArray) {\n sum += amplitude ** 2.75\n }\n this.volume = Math.sqrt(sum / dataArray.length) / 256\n this.animationFrameId = requestAnimationFrame(this.updateVolume)\n },\n stopVolumeMonitoring() {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId)\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport EVoiceInputVolumeIndicator from \"@/components/EVoiceInputVolumeIndicator.vue\"\nimport { eventListeners } from \"@/mixins\"\n\ntype SpeechRecognitionEvent = Event & {\n resultIndex: number\n results: {\n isFinal: boolean\n [key: number]: {\n transcript: string\n }\n }[]\n}\n\nexport default Vue.extend({\n name: \"EVoiceInput\",\n components: {\n EVoiceInputVolumeIndicator,\n EIcon,\n },\n mixins: [eventListeners],\n props: {\n value: {\n type: String as () => string,\n default: \"\",\n },\n dark: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n iconSize: {\n type: Number,\n default: 10,\n },\n silenceTimeout: {\n type: Number,\n default: 1500,\n },\n },\n data() {\n return {\n recognition: null as any,\n isListening: false,\n interimTranscript: \"\",\n finalTranscript: \"\",\n analyser: null as AnalyserNode | null,\n audioContext: null as AudioContext | null,\n mediaStream: null as MediaStream | null,\n mediaStreamSource: null as MediaStreamAudioSourceNode | null,\n silenceTimer: null as number | null,\n }\n },\n computed: {\n currentTranscript(): string {\n return this.finalTranscript + this.interimTranscript\n },\n buttonClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-opacity-50\": this.disabled,\n }\n },\n },\n watch: {\n currentTranscript(newTranscript: string): void {\n this.$emit(\"input\", newTranscript)\n },\n },\n mounted() {\n this.initSpeechRecognition()\n this.$addEventListener(\"keydown\", this.handleKeyDown)\n },\n beforeDestroy() {\n this.stopListening()\n },\n methods: {\n initSpeechRecognition(): void {\n const SpeechRecognition =\n (window as any).SpeechRecognition ||\n (window as any).webkitSpeechRecognition\n if (!SpeechRecognition) {\n console.error(\"Speech recognition is not supported in this browser.\")\n\n return\n }\n\n this.recognition = new SpeechRecognition()\n this.recognition.continuous = true\n this.recognition.interimResults = true\n this.recognition.lang = \"en-US\"\n this.recognition.speechStartTimeout = 200\n this.recognition.onresult = this.handleResult\n this.recognition.onerror = this.handleError\n this.recognition.onend = this.handleEnd\n this.recognition.onspeechend = this.handleSpeechEnd\n\n this.audioContext = new ((window as any).AudioContext ||\n (window as any).webkitAudioContext)()\n if (!this.audioContext) {\n console.error(\"Audio context is not supported in this browser.\")\n\n return\n }\n this.analyser = this.audioContext.createAnalyser()\n this.analyser.fftSize = 256\n },\n async toggleListening() {\n if (!this.recognition) {\n return\n }\n if (this.isListening) {\n this.stopListening()\n } else {\n await this.setupVolume()\n }\n },\n async setupVolume() {\n try {\n this.mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: true,\n })\n\n if (this.audioContext!.state !== \"running\") {\n await this.audioContext!.resume()\n }\n\n this.mediaStreamSource = this.audioContext!.createMediaStreamSource(\n this.mediaStream\n )\n this.mediaStreamSource.connect(this.analyser!)\n this.finalTranscript = \"\"\n this.interimTranscript = \"\"\n this.recognition.start()\n this.isListening = true\n } catch (error) {\n console.error(\"Error accessing microphone:\", error)\n }\n },\n stopListening() {\n this.isListening = false\n this.recognition.stop()\n if (this.silenceTimer) {\n clearTimeout(this.silenceTimer)\n this.silenceTimer = null\n }\n this.flushMediaStream()\n },\n flushMediaStream() {\n if (this.mediaStream) {\n this.mediaStream.getTracks().forEach((track) => track.stop())\n this.mediaStreamSource?.disconnect()\n this.mediaStream = null\n this.mediaStreamSource = null\n }\n },\n handleResult(event: SpeechRecognitionEvent): void {\n this.interimTranscript = \"\"\n for (let i = event.resultIndex; i < event.results.length; ++i) {\n const result = event.results[i]\n if (result.isFinal) {\n this.finalTranscript += result[0].transcript + \" \"\n } else {\n this.interimTranscript += result[0].transcript\n }\n }\n if (this.silenceTimer) {\n clearTimeout(this.silenceTimer)\n }\n // @ts-expect-error: cannot import Timeout from NodeJS namespace\n this.silenceTimer = setTimeout(() => {\n this.submitTranscript()\n }, this.silenceTimeout)\n },\n handleEnd() {\n this.isListening = false\n },\n handleSpeechEnd() {\n this.submitTranscript()\n },\n submitTranscript() {\n if (this.finalTranscript.trim().length > 0) {\n this.$emit(\"on-voice-message-end\", this.finalTranscript.trim())\n this.finalTranscript = \"\"\n this.interimTranscript = \"\"\n }\n this.stopListening()\n },\n handleKeyDown(event: KeyboardEvent): void {\n if (event.code === \"Space\" && event.ctrlKey) {\n event.preventDefault()\n this.toggleListening()\n }\n },\n handleError(event: Record<string, string>): void {\n console.error(\"Speech recognition error:\", event?.error)\n this.isListening = false\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport EVoiceInput from \"@/components/EVoiceInput.vue\"\n\nexport default Vue.extend({\n name: \"EChatInput\",\n components: {\n EIcon,\n EVoiceInput,\n },\n model: {\n prop: \"value\",\n event: \"prompt-changed\",\n },\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n placeholder: {\n type: String,\n default: \"Message Copilot\",\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n silenceTimeout: {\n type: Number,\n default: 1500,\n },\n },\n data() {\n return {\n content: \"\",\n maxHeight: 175,\n textAreaHeight: 0,\n isShiftKeyPressed: false,\n transcript: \"\",\n }\n },\n computed: {\n textAreaContainerClasses(): Record<string, boolean> {\n return {\n \"e-border-gray-600\": this.dark && !this.disabled,\n \"e-border-gray-300\": !this.dark && !this.disabled,\n \"e-border-gray-800\": this.dark && this.disabled,\n \"e-border-gray-500\": !this.dark && this.disabled,\n \"e-cursor-not-allowed e-opacity-50\": this.disabled,\n }\n },\n textAreaClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n \"e-text-gray-600\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-custom-scrollbar--light\": !this.dark,\n \"e-custom-scrollbar--dark\": this.dark,\n }\n },\n buttonClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n \"e-text-gray-500\": !this.dark,\n \"e-text-gray-300\": this.dark,\n \"e-opacity-50\": this.disabled,\n }\n },\n textareaStyle(): Record<string, string> {\n if (!this.textAreaHeight) {\n return {}\n }\n\n return {\n height: `${Math.min(this.textAreaHeight, this.maxHeight)}px`,\n overflowY: this.isOverflowing ? \"scroll\" : \"hidden\",\n }\n },\n isOverflowing(): boolean {\n return !!this.textAreaHeight && this.textAreaHeight > this.maxHeight\n },\n },\n mounted() {\n this.focus()\n },\n methods: {\n focus() {\n const textarea = this.$refs.chatTextarea as HTMLTextAreaElement\n textarea.focus()\n },\n submitMessage() {\n this.$emit(\"submit\", this.content)\n this.content = \"\"\n this.$nextTick(this.updateTextAreaHeight)\n },\n onInput(e: Event) {\n const target = e.target as HTMLTextAreaElement\n const isSubmit = this.content === target.value\n this.content = target.value\n\n if (!isSubmit) {\n this.updateTextAreaHeight()\n this.$emit(\"prompt-changed\", target.value)\n }\n },\n onKeyDown(e: KeyboardEvent) {\n if (this.disabled) {\n return\n }\n\n if (!this.isShiftKeyPressed && e.key === \"Enter\") {\n e.preventDefault()\n\n return\n }\n\n if (e.key === \"Shift\" || e.code === \"ShiftLeft\") {\n this.isShiftKeyPressed = true\n\n return\n }\n },\n onKeyUp(e: KeyboardEvent) {\n if (this.disabled) {\n return\n }\n\n if (e.key === \"Shift\" || e.code === \"ShiftLeft\") {\n this.isShiftKeyPressed = false\n\n return\n }\n\n if (e.key === \"Enter\" && !this.isShiftKeyPressed) {\n e.preventDefault()\n this.submitMessage()\n }\n },\n updateTextAreaHeight() {\n const textarea = this.$refs.chatTextarea as HTMLTextAreaElement\n textarea.style.height = \"auto\"\n this.textAreaHeight = textarea.scrollHeight\n },\n handleVoiceMessage(message: string) {\n this.$emit(\"prompt-changed\", message)\n this.$emit(\"submit\", message)\n this.transcript = \"\"\n },\n },\n})\n","\nimport Vue, { type PropType } from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport { TailwindColorClass } from \"@/types\"\nexport default Vue.extend({\n name: \"EChatSuggestionCard\",\n components: {\n EIcon,\n },\n props: {\n text: {\n type: String,\n required: true,\n },\n icon: {\n type: String,\n default: null,\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: \"e-text-gray-500\",\n },\n dark: {\n type: Boolean,\n default: false,\n },\n width: {\n type: Number,\n default: null,\n },\n display: {\n type: String as PropType<\"row\" | \"column\">,\n default: \"row\",\n },\n },\n computed: {\n classes(): Record<string, boolean> {\n return {\n \"e-flex-row\": this.display === \"row\",\n \"e-flex-col\": this.display === \"column\",\n \"hover:e-bg-gray-100 e-border-gray-200\": !this.dark,\n \"e-bg-gray-800 e-border-gray-600 hover:e-bg-gray-900\": this.dark,\n }\n },\n styles(): Record<string, string> {\n if (!this.width) {\n return {}\n }\n\n return {\n width: `${this.width}px`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport EChatWrapper from \"@/components/chat/EChatWrapper.vue\"\nimport EChatHeader from \"@/components/chat/EChatHeader.vue\"\nimport EChatBody from \"@/components/chat/EChatBody.vue\"\nimport EChatMessage from \"@/components/chat/EChatMessage.vue\"\nimport EChatFooter from \"@/components/chat/EChatFooter.vue\"\nimport EChatInput from \"@/components/chat/EChatInput.vue\"\nimport EChatSuggestionCard from \"@/components/chat/EChatSuggestionCard.vue\"\nimport {\n ChatMessage,\n ChatMessageRole,\n ChatSuggestion,\n EMarkdownRegex,\n Feedback,\n} from \"@/types\"\nimport EFadeTransition from \"@/components/EFadeTransition.vue\"\nimport { NormalizedScopedSlot } from \"vue/types/vnode\"\n\nexport default Vue.extend({\n components: {\n EFadeTransition,\n EChatWrapper,\n EChatHeader,\n EChatBody,\n EChatMessage,\n EChatFooter,\n EChatInput,\n EChatSuggestionCard,\n },\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n messages: {\n type: Array as PropType<ChatMessage[]>,\n default: () => [],\n },\n user: {\n type: String,\n default: \"You\",\n },\n embedded: {\n type: Boolean,\n default: false,\n },\n showHeader: {\n type: Boolean,\n default: true,\n },\n inlineFooter: {\n type: Boolean,\n default: false,\n },\n height: {\n type: String,\n default: undefined,\n },\n width: {\n type: String,\n default: undefined,\n },\n showUserAvatar: {\n type: Boolean,\n default: true,\n },\n showCopilotAvatar: {\n type: Boolean,\n default: true,\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n isDisabled: {\n type: Boolean,\n default: false,\n },\n headerText: {\n type: String,\n default: \"Evercam Copilot\",\n },\n inputPlaceholder: {\n type: String,\n default: \"Message Copilot\",\n },\n loadingMessage: {\n type: String,\n default: \"\",\n },\n suggestions: {\n type: Array as PropType<ChatSuggestion[]>,\n default: () => [],\n },\n exposedRegexes: {\n type: Array as PropType<EMarkdownRegex[]>,\n default: () => [],\n },\n eMarkdownProps: {\n type: Object as PropType<Record<string, unknown>>,\n default: () => ({ useTableProcessor: false }),\n },\n silenceTimeout: {\n type: Number,\n default: 1500,\n },\n },\n data() {\n return {\n prompt: \"\",\n containerHeight: 0,\n headerHeight: 0,\n bodyHeight: 0,\n footerHeight: 0,\n }\n },\n computed: {\n ChatMessageRole() {\n return ChatMessageRole\n },\n userInitials(): string {\n return (\n this.user\n .trim()\n ?.split(/\\s+/)\n ?.map((p) => p?.charAt(0)?.toUpperCase() || \"\")\n ?.join(\"\") ||\n this.user[0] ||\n \"\"\n )\n },\n chatBodyStyle(): Record<string, unknown> {\n if (!this.bodyHeight) {\n return {}\n }\n\n return {\n maxHeight: `${this.bodyHeight}px`,\n height: `${this.bodyHeight}px`,\n }\n },\n wrapperStyle(): Record<string, unknown> {\n return {\n height: this.height || \"100%\",\n width: this.width || \"100%\",\n }\n },\n bodyBorderClasses(): Record<string, boolean> {\n let borderTop = {}\n if (this.showHeader) {\n borderTop = {\n \"e-border-t-[1px] e-border-t-solid\": true,\n \"e-border-t-gray-300\": !this.dark,\n \"e-border-t-gray-600\": this.dark,\n }\n }\n\n let borderBottom = {}\n if (!this.inlineFooter) {\n borderBottom = {\n \"e-border-b-[1px] e-border-b-solid\": true,\n \"e-border-b-gray-300\": !this.dark,\n \"e-border-b-gray-600\": this.dark,\n }\n }\n\n return {\n ...borderTop,\n ...borderBottom,\n }\n },\n markdownScopedSlots(): Record<string, NormalizedScopedSlot | undefined> {\n return Object.keys(this.$scopedSlots)\n .filter((name) => name.startsWith(\"markdown.\"))\n .reduce(\n (slots: Record<string, NormalizedScopedSlot | undefined>, name) => {\n slots[name] = this.$scopedSlots[name]\n\n return slots\n },\n {}\n )\n },\n showSuggestions(): boolean {\n return this.messages.length === 0 && this.suggestions.length > 0\n },\n },\n watch: {\n height() {\n this.updateChatBodyHeight()\n },\n showHeader() {\n this.updateChatBodyHeight()\n },\n },\n mounted() {\n this.updateChatBodyHeight()\n },\n methods: {\n sendMessage() {\n if (!this.isDisabled && this.prompt.length > 0) {\n this.$emit(\"user-message\", this.prompt)\n this.prompt = \"\"\n }\n },\n isUserMessage(message: ChatMessage) {\n return message.role === ChatMessageRole.User\n },\n hasActions(message: ChatMessage) {\n if (this.isLoading || this.isDisabled) {\n return false\n }\n\n return (\n message.role === ChatMessageRole.Copilot &&\n message.withActions !== false\n )\n },\n getMessageContent(message: ChatMessage) {\n return message.content\n },\n getMessageInitials(message: ChatMessage) {\n return this.isUserMessage(message) ? this.userInitials : null\n },\n getMessageClasses(message: ChatMessage, index: number) {\n const isLast = index === this.messages.length - 1\n\n return {\n \"e-mb-11\": isLast && this.hasActions(message),\n }\n },\n updateChatBodyHeight() {\n this.$nextTick(() => {\n const chatContainer = this.$refs.chatContainer?.$el as HTMLElement\n const chatHeader = this.$refs.chatHeader?.$el as HTMLElement\n const chatFooter = this.$refs.chatFooter?.$el as HTMLElement\n\n if (!chatContainer || !chatHeader || !chatFooter) {\n return\n }\n\n this.headerHeight = chatHeader.clientHeight\n this.footerHeight = chatFooter.clientHeight\n this.containerHeight = chatContainer.clientHeight\n\n if (this.height) {\n this.bodyHeight =\n parseInt(this.height) - this.headerHeight - this.footerHeight\n } else {\n this.bodyHeight = Math.max(\n 500,\n this.containerHeight - this.headerHeight - this.footerHeight\n )\n }\n })\n },\n isAvatarVisible(message: ChatMessage) {\n if (message.role === ChatMessageRole.User) {\n return this.showUserAvatar\n } else if (message.role === ChatMessageRole.Copilot) {\n return this.showCopilotAvatar\n } else {\n return true\n }\n },\n onMessageFeedback(feedback: Feedback, messageId?: number) {\n this.$emit(\"message-feedback\", {\n ...feedback,\n messageId,\n })\n },\n },\n})\n","\nimport Vue, { type PropType } from \"vue\"\nimport { type ERadioGroupOption } from \"@/types\"\nexport default Vue.extend({\n name: \"ERadioGroup\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n value: {\n type: [Number, String, Boolean],\n default: undefined,\n },\n options: {\n type: Array as PropType<ERadioGroupOption[]>,\n default: () => [],\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n withDescription: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n checkedIndex: null as number | null,\n }\n },\n computed: {\n selectedOption(): ERadioGroupOption {\n return this.options[this.checkedIndex ?? 0]\n },\n radioItemClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800 e-text-gray-200 e-border-gray-700\": this.dark,\n \"e-text-gray-500 e-bg-white e-border-gray-300\": !this.dark,\n }\n },\n selectedItemClasses(): string {\n return \"e-text-[#00315f] e-bg-[#629efc] e-border-transparent\"\n },\n },\n watch: {\n disabled: {\n immediate: true,\n handler(newVal: boolean) {\n if (newVal) {\n return\n }\n this.setInitialValueIfNone()\n },\n },\n value: {\n immediate: true,\n handler(newVal: any) {\n if (newVal !== undefined && newVal !== null) {\n return\n }\n this.setInitialValueIfNone()\n },\n },\n },\n methods: {\n setInitialValueIfNone() {\n const checkedIndex = this.options.findIndex(\n (op) => op.value === this.value\n )\n this.checkedIndex = checkedIndex === -1 ? 0 : checkedIndex\n this.$emit(\"input\", this.options[this.checkedIndex].value)\n this.$emit(\"on-select-option\", this.options[this.checkedIndex])\n },\n onItemClick(index: number) {\n const option = this.options[index]\n if (option.disabled || this.disabled) {\n return\n }\n this.checkedIndex = index\n this.$emit(\"input\", this.selectedOption.value)\n this.$emit(\"on-select-option\", this.selectedOption)\n },\n isSelected(index: number) {\n return this.checkedIndex === index\n },\n showDescription(index: number) {\n return (\n (this.withDescription &&\n this.options?.[index]?.description &&\n this.options[index].description.length > 0) ||\n this.isSelected(index)\n )\n },\n containerClasses(index: number) {\n return [\n this.isSelected(index)\n ? this.selectedItemClasses\n : this.radioItemClasses,\n this.options[index].disabled || this.disabled\n ? \"e-opacity-50 e-cursor-not-allowed\"\n : \"e-cursor-pointer e-select-none\",\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/timeline/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\"\nimport EToggleSwitch from \"@/components/EToggleSwitch.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\n\n// Directives\nimport { DirectivesMap } from \"@/directives\"\nimport * as mixins from \"@/mixins\"\n\n// Components\nimport { VueConstructor } from \"vue\"\nimport EGlobalSearch from \"@/components/EGlobalSearch.vue\"\nimport EImagePlayer from \"@/components/EImagePlayer.vue\"\nimport EZoomableImg from \"@/components/EZoomableImg.vue\"\nimport EZoomSlider from \"@/components/EZoomSlider.vue\"\nimport EActionButton from \"@/components/EActionButton.vue\"\nimport ETooltip from \"@/components/ETooltip.vue\"\nimport ELayout from \"@/components/ELayout.vue\"\nimport EContextProvider from \"@/components/EContextProvider.vue\"\nimport EChat from \"@/components/chat/EChat.vue\"\nimport ECopyToClipboardBtn from \"@/components/ECopyToClipboardBtn.vue\"\nimport EVoiceRecorderToText from \"@/components/EVoiceInput.vue\"\nimport ERadioGroup from \"@/components/ERadioGroup.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 EImagePlayer,\n EZoomableImg,\n EZoomSlider,\n EActionButton,\n ETooltip,\n ELayout,\n EChat,\n EContextProvider,\n ECopyToClipboardBtn,\n EVoiceRecorderToText,\n ERadioGroup,\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 EImagePlayer,\n EZoomableImg,\n EZoomSlider,\n EActionButton,\n ETooltip,\n ELayout,\n ECopyToClipboardBtn,\n EVoiceRecorderToText,\n ERadioGroup,\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","ImageQuality","Position","ChatMessageRole","ChatMessageType","FeedbackType","_sfc_main$1u","Vue","colorClasses","sizeClasses","_sfc_main$1t","Badge","imageClasses","exports","negateValue","value","sign","numericFunctions","fn","_default","pluginConfig","plugins","pluginName","x","create","picocolors_browserModule","_export","target","all","name","dim","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","config","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","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","normalizeAttributeSelectors","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","_fullMatch","trailingCharacter","preventFormattingInFunctions","preventFormattingKeywords","lastChar","i","peek","word","j","consumeUntil","chars","minIndex","index","keyword","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","colors","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","colors_1","createPlugin","pluginFunction","configFunction","optionsFunction","_createPlugin","LARGE_ARRAY_SIZE","HASH_UNDEFINED","HOT_COUNT","HOT_SPAN","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","freeSelf","root","freeExports","freeModule","module","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","apply","func","thisArg","baseTimes","n","iteratee","baseUnary","getValue","overArg","arg","arrayProto","funcProto","objectProto","coreJsData","funcToString","hasOwnProperty","maskSrcKey","uid","nativeObjectToString","objectCtorString","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","splice","symToStringTag","defineProperty","getNative","nativeIsBuffer","nativeMax","nativeNow","Map","nativeCreate","baseCreate","proto","isObject","Hash","entries","entry","hashClear","hashDelete","hashGet","data","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","isIndex","assignMergeValue","eq","baseAssignValue","assignValue","objValue","array","baseFor","createBaseFor","baseGetTag","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsNative","isMasked","toSource","baseIsTypedArray","isLength","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","srcIndex","srcValue","baseMergeDeep","newValue","safeGet","keysIn","mergeFunc","stacked","isCommon","isTyped","isArrayLikeObject","copyArray","cloneBuffer","cloneTypedArray","toPlainObject","initCloneObject","baseRest","start","setToString","overRest","identity","baseSetToString","string","constant","buffer","isDeep","cloneArrayBuffer","arrayBuffer","typedArray","copyObject","props","isNew","createAssigner","assigner","guard","isIterateeCall","fromRight","keysFunc","iterable","map","isKeyable","isOwn","tag","unmasked","isArrayLike","Ctor","otherArgs","shortOut","count","lastCalled","stamp","remaining","other","stubFalse","merge","castArray","lodash_castarray","round","num","rem","px","em","base","hexToRgb","b","defaultModifiers","styles","isHostObject","lodash_isplainobject","unesc","gobbleHex","str","lower","spaceTerminated","code","valid","codePoint","isSurrogate","CONTAINS_ESCAPE","needToProcess","ret","gobbled","getProp","_len","_key","prop","ensureObject","stripComments","commentStart","lastEnd","commentEnd","util","_unesc","_interopRequireDefault","_getProp","_ensureObject","_stripComments","_util","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","cloneNode","parent","cloned","Node","opts","_proto","overrides","valueEscaped","originalValue","originalEscaped","line","column","rawSpace","raw","TAG","STRING","SELECTOR","ROOT","PSEUDO","NESTING","ID","COMMENT","COMBINATOR","CLASS","ATTRIBUTE","UNIVERSAL","_node","_interopRequireWildcard","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr","len","arr2","_inheritsLoose","subClass","superClass","_setPrototypeOf","Container","_Node","_this","selector","id","_iterator","_step","node","oldNode","newNode","oldIndex","col","found","foundChild","callback","_this2","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","current","memo","split","_container","_types","Root","_Container","handler","Selector","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","quote","isIdentifier","firstChar","output","counter","character","extra","$0","$1","$2","cssesc_1","_cssesc","ClassName","escaped","Comment","Namespace","namespace","ns","_namespace","Tag","_Namespace","String","Pseudo","params","browser","deprecate","msg","warned","deprecated","unescapeValue","_CSSESC_QUOTE_OPTIONS","WRAPPED_IN_QUOTES","warnOfDeprecatedValueAssignment","warnOfDeprecatedQuotedAssignment","warnOfDeprecatedConstructor","deprecatedUsage","quoteMark","unescaped","m","handleDeprecatedContructorOpts","_unescapeValue","Attribute","cssescopts","CSSESC_QUOTE_OPTIONS","numSingleQuotes","numDoubleQuotes","pref","quoteValue","rawValue","attrSpaces","spaces","rawSpaces","spaceName","concat","defaultAttrConcat","attributeSpaces","operatorSpaces","operator","valueSpaces","insensitiveSpaces","attrValue","qm","_unescapeValue2","Universal","Combinator","Nesting","sortAscending","list","tokenTypes","ampersand","asterisk","at","comma","colon","semicolon","openParenthesis","closeParenthesis","openSquare","closeSquare","dollar","tilde","caret","plus","equals","pipe","greaterThan","space","singleQuote","doubleQuote","slash","bang","backslash","cr","feed","newline","tab","comment","combinator","tokenize","_unescapable","_wordDelimiters","unescapable","wordDelimiters","hexChars","consumeWord","css","next","consumeEscape","hexDigits","FIELDS","tokens","_css","offset","end","endColumn","endLine","escapePos","last","lines","nextLine","nextOffset","tokenType","unclosed","what","fix","_root","_selector","_className","_comment","_id","_tag","_string","_pseudo","_attribute","_universal","_combinator","_nesting","_sortAscending","require$$12","_tokenize","require$$13","require$$14","require$$15","require$$16","_WHITESPACE_TOKENS","_Object$assign","WHITESPACE_TOKENS","WHITESPACE_EQUIV_TOKENS","tokenStart","token","tokenEnd","getSource","startLine","startColumn","getTokenSource","getTokenSourceSpan","startToken","endToken","unescapeProp","indexesOf","indexes","uniqs","Parser","rule","rootSource","errorOptions","attr","startingToken","pos","spaceBefore","commentBefore","lastAdded","spaceAfterMeaningfulToken","prevContent","existingComment","oldRawValue","_rawValue","_unescaped","_oldRawValue","insensitive","lastComment","rawLastComment","lastValue","rawLastValue","stopPosition","startPosition","nodes","firstToken","lastToken","requiredSpace","rawSpaceBefore","nameRaw","raws","nextSigTokenPos","_this$convertWhitespa","spaceOrDescendantSelectorNodes","_this$convertWhitespa2","_space","_rawSpace","_this$convertWhitespa3","_space2","_rawSpace2","before","nextContent","unbalanced","parenStart","parenValue","parenEnd","pseudoStr","first","nextToken","firstCallback","hasClass","escapedDot","isKeyframesPercent","hasId","interpolations","hashIndex","indices","ind","sourceIndex","classNameOpts","idOpts","tagOpts","throwOnParenthesis","description","an","required","searchPosition","_parser","Processor","parser","resolve","reject","constructors","attribute","nesting","pseudo","universal","guards","isNode","isPseudoElement","isPseudoClass","isContainer","isNamespace","_IS_TYPE","IS_TYPE","isNodeType","isAttribute","isClassName","isCombinator","isComment","isNesting","isPseudo","isSelector","isString","isTag","isUniversal","_constructors","_guards","_processor","processor","parseSelector","values","ast","matrix","trailingPseudos","pseudos","commonTrailingPseudos","computed","inWhere","prefixedNot","selectorPrefix","trailingPseudo","rebuiltSelector","configToCss","updateSelector","src","addVariant","addComponents","modifiers","TailwindColors","__CJS__import__0__.default","__CJS__import__0__","BrandColors","customColors","CustomColors","__CJS__import__1__.default","__CJS__import__1__","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","ToggleSwitchSizes","BadgeColors","TooltipColors","TooltipPositions","EVENTS","_sfc_main$1s","acc","iconClasses","_b","_a","_sfc_main$1r","fill","animationDuration","_sfc_main$1q","_sfc_main$1p","acceptUndefined","isFullScreen","doc","makeFullScreen","element","el","exitFullScreen","debounce","wait","timeout","getRandomChars","getImageData","y","width","height","canvas","ctx","dataUrl","isValidDate","dateString","hexToRgba","rgbToRgba","rgb","isRgba","toRgba","generateUniqueId","jsonString","hashCode","hash","chr","getGradientColors","startColor","endColor","d3","_sfc_main$1o","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$1n","ESpinner","EZoomable","Hls","videoOptions","moment","player","isTargetTimestampAvailable","playerRef","videoSource","xhr","_c","_d","manifest","firstLevelDetails","startOffset","_e","isNetworkError","isMediaError","isNotFoundError","shouldAttemptFallback","attemptFallback","handleError","event","which","timelineContainer","error","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","ResizeObserverDirective","binding","observer","ClickOutsideDirective","DirectivesMap","defs","classNames","tzDateToD3Date","timestamp","timezone","offsetMinutes","getUtcOffset","d3DateToTzDate","date","userUtcOffset","unsafeGuessUtcOffset","_sfc_main$1m","yOffset","contentFirstChild","contentBox","existingTimeoutId","timeoutId","transitionDuration","timeoutDuration","milestone","_sfc_main$1l","marker","_sfc_main$1k","ETimelineMarker","that","markerElement","dragEvent","targetLeft","newTimestamp","newPosition","isNewTimestampAllowed","padding","overlapThreshold","markersArray","markerX","isHidden","nextMarker","nextTimestamp","nextMarkerX","_sfc_main$1j","minDate","maxDate","focusedStartDate","focusedEndDate","focusedDomain","maxDuration","scaleExtent","minTranslateX","maxTranslateX","translateExtent","newDomain","isLeftBoundaryReached","isRightBoundaryReached","lastTransform","startDate","endDate","domain","domainSpan","d","domainWidth","viewportSpan","paddedViewportSpan","scaleFactor","newTimeScale","minTimestamp","maxTimestamp","scaledMinTimestampPosition","scaledMaxTimestampPosition","centerPoint","translateX","currentTransform","visibleFromDate","visibleToDate","targetTimestamp","targetDate","targetX","isLeftReached","isRightReached","_sfc_main$1i","timeAtPixel0","timeAtPixel1","HOUR","hoursPerPixel","interval","format","getFormattedDay","day","daySuffix","getFormattedSuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","abbreviatedMonth","year","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","_sfc_main$1h","EXAxis","_sfc_main$1g","_sfc_main$1f","_sfc_main$1e","_sfc_main$1d","cursorRef","cursor","cursorX","_sfc_main$1c","ECursor","_sfc_main$1b","_sfc_main$1a","formattedDateTz","_sfc_main$19","_sfc_main$18","ETimelineGroupContainer","newDensity","eventData","textPadding","characterWidth","maxCharacters","timeScale","rectMinWidth","startTimestamp","endTimestamp","oneSecondWidth","baseColor","dark","_sfc_main$17","ETimelineSVGDefs","EXAxisBackground","EXAxisDetailed","EXAxisOverview","ETimelineMilestone","ETimelineMarkers","ETimelineCursor","ETimelineSelectedTimestampCursor","EZoomBehavior","ECursorBehavior","ETimelineRectsChart","eventsGroup","combinedLabelsHeight","_group","flattenedEvents","oldestEvent","latestEvent","allTimestamps","group","isVisible","visibleStart","visibleEnd","filteredFlattenedCounts","eventStart","eventEnd","oldestTime","latestTime","slots","sampleTimestamp","markersTimestamps","t1","t2","trigger","visibleFrom","visibleTo","fromDate","toDate","resizeObserverEntry","bgFill","text","_event","eventType","groupType","ts","groupsCount","getW","getH","getX","getY","containerSelector","hoverZoneSelector","barSelector","barCapSelector","area","reset","visibleDomain","startTime","endTime","startX","endX","eventsGroups","gElement","events","isLoading","label","labelHeight","labelYPosition","loadingIndicatorYPosition","labelsGElement","clipPathId","circle","milestoneColor","groupColor","groupName","bottom","yPosition","eventBarContainers","bar","bg","labelGroup","internalVisibility","configVisibility","unit","getNextTimestamp","getPreviousTimestamp","filledEvents","currentEvent","nextEvent","currentTimestamp","fillerAfterCurrent","fillerBeforeNext","firstEventTimestamp","lastEventTimestamp","firstFiller","lastFiller","defaultEvent","milestoneType","_sfc_main$16","regExp","_sfc_main$15","itemClass","backgroundColor","amount","parsedColor","adjustment","_sfc_main$14","EHeatmapBar","h","_sfc_main$13","_sfc_main$12","_sfc_main$11","EIcon","defaultPosition","_sfc_main$10","ECompareSeparator","containerHeight","containerWidth","imageHeight","imageWidth","containerRatio","imageRatio","calculateDimension","factor","marginFactor","margin","separatorPositionX","touch","timeouts","cb","eventListeners","listener","l","_sfc_main$$","eventListener","activatorElement","activator","menu","children","minSize","activatorSize","translation","translationDirection","buttonRect","dimension","buttonSize","_sfc_main$_","_sfc_main$Z","BaseIcon","_sfc_main$Y","_sfc_main$X","_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$z","_sfc_main$y","_sfc_main$x","_sfc_main$w","_sfc_main$v","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","TagPlus","camelToKebabCase","iconName","eSvgIcons","_sfc_main$u","_sfc_main$s","_sfc_main$r","checkedIndex","op","dynamicClasses","inactivityListener","reminders","currentReminder","onMouseMove","_sfc_main$q","query","objects","currentPath","valueMatches","arrayMatches","objectMatches","ctrlKey","shiftKey","fKey","esc","searchField","_sfc_main$p","defaultColorClasses","_sfc_main$o","ETooltip","themeStyle","_sfc_main$n","EActionButton","_sfc_main$m","_sfc_main$l","EZoomSlider","EFadeTransition","defaultPoint","aspectRatio","frame","left","top","fakeMouseEvent","zoomedImage","newZoomLevel","minHeight","minWidth","right","bounds","previousPinchDistance","now","timeSinceLastTap","snapshot","_sfc_main$k","EZoomableImg","preloadedFrames","frameIndex","playing","preloaded","progrssBarRect","startPercentage","endPercentage","newFrameIndex","startIndex","endIndex","range","queueId","img","_sfc_main$j","overlayFooter","footer","_sfc_main$h","_sfc_main$g","EAvatar","_sfc_main$f","EEvercamLogo","_sfc_main$e","newVal","currentChildCount","anchor","chatBody","_sfc_main$d","this","u","C","f","E","w","A","T","S","N","O","L","D","M","P","R","Q","F","H","I","U","q","G","Y","MarkdownProcessor","unified","remarkParse","remarkBreaks","remarkGfm","remarkRehype","rehypeStringify","tree","visit","nodeType","regex","columnCount","cellCount","pendingRowString","newDiv","tableNode","headerRow","separatorRow","header","headerCell","textNode","alignment","newMarkdown","markdown","processedHtml","remainingOldSection","sourceTable","destinationTable","sourceTBody","destinationTBody","nodeIndex","newNodes","partIndex","uniqueId","table","sourceTHead","rows","existingRowsIds","row","tableElement","cells","isEmpty","cell","sourceDiv","tempDiv","morphdom","fromEl","toEl","Typewriter","newContent","_sfc_main$c","newChunks","contentDiv","newChunk","chunks","chunk","targets","propsData","targetElement","scopedSlot","ReactiveSlotWrapper","vm","_sfc_main$b","propName","fallback","copyToClipboard","_sfc_main$a","defaultClasses","action","_sfc_main$9","EDialog","_sfc_main$8","EFeedbackButton","ECopyToClipboardBtn","_sfc_main$7","EChatMessageActions","EPulsatingDot","EMarkdown","oldChunks","feedback","_sfc_main$6","_sfc_main$5","dataArray","sum","amplitude","_sfc_main$4","EVoiceInputVolumeIndicator","newTranscript","SpeechRecognition","track","_sfc_main$3","EVoiceInput","isSubmit","textarea","_sfc_main$2","_sfc_main$1","EChatWrapper","EChatHeader","EChatBody","EChatMessage","EChatFooter","EChatInput","EChatSuggestionCard","borderTop","borderBottom","chatContainer","chatHeader","chatFooter","messageId","_sfc_main","components","EBadge","ERow","ECol","EVideoPlayer","ETimeline","EVideoEmbed","EHoursHeatmap","EReadMore","ETruncatedDiv","EImagesComparator","EToggleSwitch","EExpandableMenu","EGlobalSearch","ESvgIcon","ECalendarHeatmap","EFlagIcon","EImagePlayer","ELayout","EChat","EContextProvider","EVoiceRecorderToText","ERadioGroup","mixins","definition"],"mappings":"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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,eAAeA,GA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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,163]}