@evercam/ui 0.0.65 → 1.0.0-1b091ef3a

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 (95) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +2 -2
  3. package/dist/attributes.json +796 -69
  4. package/dist/components/EActionButton.vue.d.ts +17 -0
  5. package/dist/components/EAvatar.vue.d.ts +2 -0
  6. package/dist/components/{EFlagIcon.vue.d.ts → ECard.vue.d.ts} +1 -1
  7. package/dist/components/ECheckbox.vue.d.ts +5 -0
  8. package/dist/components/ECopyToClipboardBtn.vue.d.ts +31 -0
  9. package/dist/components/EDialog.vue.d.ts +34 -0
  10. package/dist/components/EDivider.vue.d.ts +5 -0
  11. package/dist/components/EEvercamLogo.vue.d.ts +6 -0
  12. package/dist/components/EExpandableMenu.vue.d.ts +9 -8
  13. package/dist/components/EFadeTransition.vue.d.ts +7 -0
  14. package/dist/components/EFeedackButton.vue.d.ts +42 -0
  15. package/dist/components/EGlobalSearch.vue.d.ts +1 -1
  16. package/dist/components/EHeatmapBar.vue.d.ts +13 -2
  17. package/dist/components/EImagePlayer.vue.d.ts +127 -0
  18. package/dist/components/ELayout.vue.d.ts +32 -0
  19. package/dist/components/EPopover.vue.d.ts +17 -0
  20. package/dist/components/EPulsatingDot.vue.d.ts +19 -0
  21. package/dist/components/ERadioGroup.vue.d.ts +46 -0
  22. package/dist/components/ERangeSlider.vue.d.ts +31 -0
  23. package/dist/components/EReadMore.vue.d.ts +1 -0
  24. package/dist/components/ESchedulePicker.vue.d.ts +27 -0
  25. package/dist/components/ESelect.vue.d.ts +60 -0
  26. package/dist/components/ETabs.vue.d.ts +25 -0
  27. package/dist/components/EToggleSwitch.vue.d.ts +42 -17
  28. package/dist/components/ETooltip.vue.d.ts +16 -0
  29. package/dist/components/EVideoPlayer.vue.d.ts +4 -2
  30. package/dist/components/EVoiceInput.vue.d.ts +49 -0
  31. package/dist/components/EVoiceInputVolumeIndicator.vue.d.ts +13 -0
  32. package/dist/components/EZoomSlider.vue.d.ts +5 -0
  33. package/dist/components/EZoomableImg.vue.d.ts +160 -0
  34. package/dist/components/charts/ECursor.vue.d.ts +73 -0
  35. package/dist/components/charts/ECursorBehavior.vue.d.ts +21 -0
  36. package/dist/components/charts/ETimelineBarsChart.vue.d.ts +114 -0
  37. package/dist/components/charts/ETimelineForbiddenInterval.vue.d.ts +83 -0
  38. package/dist/components/charts/ETimelineGroupContainer.vue.d.ts +89 -0
  39. package/dist/components/charts/ETimelineLinesChart.vue.d.ts +105 -0
  40. package/dist/components/charts/ETimelineRectsChart.vue.d.ts +122 -0
  41. package/dist/components/charts/ETimelineRectsChartGroupedDots.vue.d.ts +83 -0
  42. package/dist/components/charts/ETimelineSVGDefs.vue.d.ts +24 -0
  43. package/dist/components/charts/EXAxis.vue.d.ts +82 -0
  44. package/dist/components/charts/EXAxisBackground.vue.d.ts +68 -0
  45. package/dist/components/charts/EXAxisDetailed.vue.d.ts +68 -0
  46. package/dist/components/charts/EXAxisOverview.vue.d.ts +68 -0
  47. package/dist/components/charts/EZoomBehavior.vue.d.ts +57 -0
  48. package/dist/components/charts/constants.d.ts +64 -0
  49. package/dist/components/chat/EChat.vue.d.ts +54 -0
  50. package/dist/components/chat/EChatBody.vue.d.ts +21 -0
  51. package/dist/components/chat/EChatFooter.vue.d.ts +9 -0
  52. package/dist/components/chat/EChatHeader.vue.d.ts +10 -0
  53. package/dist/components/chat/EChatInput.vue.d.ts +28 -0
  54. package/dist/components/chat/EChatMessage.vue.d.ts +39 -0
  55. package/dist/components/chat/EChatMessageActions.vue.d.ts +20 -0
  56. package/dist/components/chat/EChatSuggestionCard.vue.d.ts +13 -0
  57. package/dist/components/chat/EChatWrapper.vue.d.ts +9 -0
  58. package/dist/components/chat/EMarkdown.vue.d.ts +27 -0
  59. package/dist/components/chat/MarkdownProcessor.d.ts +59 -0
  60. package/dist/components/svgIcons/Brightness.vue.d.ts +5 -0
  61. package/dist/components/svgIcons/MarkUp.vue.d.ts +5 -0
  62. package/dist/components/svgIcons/Nerves.vue.d.ts +5 -0
  63. package/dist/components/svgIcons/Tag.vue.d.ts +6 -0
  64. package/dist/components/svgIcons/TagPlus.vue.d.ts +6 -0
  65. package/dist/components/svgIcons/index.d.ts +14 -2
  66. package/dist/components/{ETimeline.config.d.ts → timeline/ETimeline.config.d.ts} +1 -1
  67. package/dist/components/timeline/ETimeline.vue.d.ts +171 -0
  68. package/dist/components/timeline/ETimelineCursor.vue.d.ts +9 -0
  69. package/dist/components/timeline/ETimelineMarker.vue.d.ts +17 -0
  70. package/dist/components/timeline/ETimelineMarkers.vue.d.ts +31 -0
  71. package/dist/components/{ETimelineMilestone.vue.d.ts → timeline/ETimelineMilestone.vue.d.ts} +52 -17
  72. package/dist/components/timeline/ETimelineSelectedTimestampCursor.vue.d.ts +9 -0
  73. package/dist/constants.d.ts +8 -6
  74. package/dist/directives/clickOutside.d.ts +3 -0
  75. package/dist/directives/index.d.ts +3 -2
  76. package/dist/index.d.ts +776 -259
  77. package/dist/index.mjs +17184 -6229
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/index.umd.js +70 -27
  80. package/dist/index.umd.js.map +1 -1
  81. package/dist/mixins/form-field.d.ts +12 -0
  82. package/dist/mixins/inactivity-listener.d.ts +5 -5
  83. package/dist/mixins/index.d.ts +4 -1
  84. package/dist/mixins/select-form-field.d.ts +44 -0
  85. package/dist/mixins/toggle-open.d.ts +14 -0
  86. package/dist/style.css +1 -1
  87. package/dist/styles.css +1 -38965
  88. package/dist/tags.json +241 -21
  89. package/dist/types.d.ts +152 -38
  90. package/dist/utils.d.ts +16 -0
  91. package/dist/web-types.json +1730 -139
  92. package/package.json +29 -10
  93. package/dist/components/ETimeline.vue.d.ts +0 -339
  94. package/dist/components/charts/classNames.d.ts +0 -7
  95. /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/components/EImagesComparator.vue?vue&type=script&lang.ts","../src/mixins/timeouts.ts","../src/mixins/event-listeners.ts","../src/components/EExpandableMenu.vue?vue&type=script&lang.ts","../src/components/svgIcons/BaseIcon.vue?vue&type=script&lang.ts","../src/components/svgIcons/Bim.vue?vue&type=script&lang.ts","../src/components/svgIcons/Blur.vue?vue&type=script&lang.ts","../src/components/svgIcons/Compare.vue?vue&type=script&lang.ts","../src/components/svgIcons/ConcretePump.vue?vue&type=script&lang.ts","../src/components/svgIcons/DroneView.vue?vue&type=script&lang.ts","../src/components/svgIcons/Dumper.vue?vue&type=script&lang.ts","../src/components/svgIcons/Evercam.vue?vue&type=script&lang.ts","../src/components/svgIcons/EvercamLogo.vue?vue&type=script&lang.ts","../src/components/svgIcons/Excavator.vue?vue&type=script&lang.ts","../src/components/svgIcons/FlatbedSemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/FreeDrawing.vue?vue&type=script&lang.ts","../src/components/svgIcons/IModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/Inspection.vue?vue&type=script&lang.ts","../src/components/svgIcons/Loader.vue?vue&type=script&lang.ts","../src/components/svgIcons/MiniModel.vue?vue&type=script&lang.ts","../src/components/svgIcons/OtherTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/RoadVehicle.vue?vue&type=script&lang.ts","../src/components/svgIcons/Roller.vue?vue&type=script&lang.ts","../src/components/svgIcons/Robot.vue?vue&type=script&lang.ts","../src/components/svgIcons/SemiTrailer.vue?vue&type=script&lang.ts","../src/components/svgIcons/SkidSteerLoader.vue?vue&type=script&lang.ts","../src/components/svgIcons/SmallTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TankTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/The360.vue?vue&type=script&lang.ts","../src/components/svgIcons/TippingTruck.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckHead.vue?vue&type=script&lang.ts","../src/components/svgIcons/TruckMixer.vue?vue&type=script&lang.ts","../src/components/svgIcons/Worker.vue?vue&type=script&lang.ts","../src/components/svgIcons/ZohoCrm.vue?vue&type=script&lang.ts","../src/components/svgIcons/index.ts","../src/components/ESvgIcon.vue?vue&type=script&lang.ts","../src/components/EFlagIcon.vue?vue&type=script&lang.ts","../src/components/EToggleSwitch.vue?vue&type=script&lang.ts","../src/mixins/inactivity-listener.ts","../src/components/EGlobalSearch.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import {\n BadgeSizes,\n AvatarSizes,\n IconSizes,\n BadgeColors,\n ToggleSwitchSizes,\n} from \"@/constants\"\n\nexport enum Size {\n dot = \"dot\",\n xs = \"xs\",\n sm = \"sm\",\n md = \"base\",\n base = \"base\",\n lg = \"lg\",\n xl = \"xl\",\n \"2xl\" = \"2xl\",\n \"3xl\" = \"3xl\",\n \"4xl\" = \"4xl\",\n \"5xl\" = \"5xl\",\n \"6xl\" = \"6xl\",\n \"7xl\" = \"7xl\",\n \"8xl\" = \"8xl\",\n \"9xl\" = \"9xl\",\n}\n\nexport enum BaseColor {\n warning = \"warning\",\n error = \"error\",\n info = \"info\",\n success = \"success\",\n primary = \"primary\",\n brand = \"brand\",\n default = \"default\",\n}\n\n/**\n * {@link Size}\n * */\nexport type TBadgeSize = (typeof BadgeSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TAvatarSize = (typeof AvatarSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TIconSize = (typeof IconSizes)[number]\n\n/**\n * {@link Size}\n * */\nexport type TToggleSwitchSize = (typeof ToggleSwitchSizes)[number]\n\n/**\n * {@link BaseColor}\n * */\nexport type TBadgeColor = (typeof BadgeColors)[number]\n\nexport type TailwindColorClass = string\n\nexport type FlexJustifyContent =\n | \"around\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignItems = \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n\nexport type FlexAlignContent =\n | \"around\"\n | \"baseline\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignSelf =\n | \"auto\"\n | \"baseline\"\n | \"center\"\n | \"end\"\n | \"start\"\n | \"stretch\"\n\nexport enum TimelineAxis {\n overview = \"overview\",\n detailed = \"detailed\",\n detailedBackground = \"detailedBackground\",\n}\n\nexport type TimelineTicksConfig = {\n precision: number\n interval: any\n format: string | ((d: Date) => string)\n}\n\n/**\n * {@link TimelineAxis}\n * {@link TimelineTicksConfig}\n * */\nexport type TimelineAxesConfig = {\n [key in TimelineAxis]: TimelineTicksConfig[]\n}\n\nexport type Timestamp = Date | string | number\n\nexport type TimelineBarEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n [key: string]: any\n}\n\nexport type TimelineRangeEvent = {\n startDate: string | Date\n endDate: string | Date\n text?: string\n [key: string]: any\n}\n\nexport type TimelineCountEvent = {\n timestamp: string | Date\n count: number\n className?: string\n [key: string]: any\n}\n\nexport type TimelineMilestoneEvent = {\n timestamp: string | Date\n color?: string\n className?: string\n text?: string\n milestoneType: string\n size?: number\n [key: string]: any\n}\n\n/**\n * {@link TimelineBarEvent}\n * {@link TimelineRangeEvent}\n * {@link TimelineCountEvent}\n * {@link TimelineMilestoneEvent}\n */\nexport type TimelineEvent =\n | TimelineBarEvent\n | TimelineRangeEvent\n | TimelineCountEvent\n | TimelineMilestoneEvent\n\nexport enum TimelineChartType {\n bars = \"bars\",\n dots = \"dots\",\n lineGraph = \"lineGraph\",\n barChart = \"barGraph\",\n milestones = \"milestones\",\n}\n\n/**\n * {@link TimelineEvent}\n * {@link TimelineChartType}\n * */\nexport type TimelineEventsGroup = {\n events: Array<TimelineEvent>\n label: string\n color: string\n bgColor?: string\n isLoading?: Boolean\n isHidden?: Boolean\n chartType?: TimelineChartType\n dots?: boolean\n milestonesTransitionDuration?: number\n milestonesLineHeight?: number\n milestonesDotSize?: number\n height?: number\n dotsSize?: number\n bottom?: boolean\n barBorderRadius?: number\n}\n\n/**\n * {@link TimelineEventsGroup}\n * */\nexport type TimelineEventsByType = {\n [eventsType: string]: TimelineEventsGroup\n}\n\nexport type TimelinePrecision = \"hour\" | \"day\" | \"week\" | \"month\" | \"year\"\n\nexport enum TimelineIntervalChangeTrigger {\n zoom = \"zoom\",\n autoPan = \"autoPan\",\n initial = \"initial\",\n}\n\nexport type TimelineMarker = {\n timestamp: string | Date\n label: string\n color: string\n id: string | number\n textColor?: string\n className?: string\n isDraggable?: boolean\n minDate?: string\n maxDate?: string\n [key: string]: any\n}\n\nexport type TimelineInterval = {\n startDate: Date | string | number\n endDate: Date | string | number\n}\n\nexport type HeatmapBarItem = {\n name: string\n count: number\n value: string | number\n}\n\nexport type HoursHeatmapChartItem = {\n count: number\n timestamp: Timestamp\n}\nexport type GlobalSearchMatch = {\n path: Array<string>\n value: string | number | boolean\n}\n\n/**\n * {@link GlobalSearchMatch}\n * */\nexport type GlobalSearchResult = {\n index: number\n matches: Array<GlobalSearchMatch>\n}\n\nexport type GlobalSearchResultInput = Array<Record<any, any> | Array<any>>\n\n/** @ignore */\nexport interface FullscreenHTMLElement extends HTMLElement {\n mozRequestFullScreen?: () => Promise<void>\n webkitRequestFullScreen?: () => Promise<void>\n msRequestFullscreen?: () => Promise<void>\n}\n\n/** @ignore */\nexport interface FullscreenDocument extends Document {\n mozCancelFullScreen?: () => Promise<void>\n webkitCancelFullScreen?: () => Promise<void>\n msExitFullscreen?: () => Promise<void>\n mozFullScreenElement: Element | null\n webkitFullscreenElement: Element | null\n msFullscreenElement: Element | null\n webkitFullscreenEnabled: boolean\n msFullscreenEnabled: boolean\n mozFullScreenEnabled: boolean\n}\n\nexport type D3TimestampParams = {\n timestamp: string | Date\n timezone: string\n}\n\nexport type D3DateParams = {\n date: Date\n timezone: string\n}\n\nexport type TimelineDomain = Date[] | string[]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Size, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EBadge\",\n props: {\n text: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TBadgeSize>,\n default: Size.base,\n },\n },\n data() {\n return {\n colors: {\n [BaseColor.error]: \"e-bg-rose-500 e-text-white\",\n [BaseColor.info]: \"e-bg-cyan-500 e-text-white\",\n [BaseColor.warning]: \"e-bg-amber-500 e-text-white\",\n [BaseColor.primary]: \"e-bg-sky-500 e-text-white\",\n [BaseColor.default]: \"e-bg-slate-300 e-text-white\",\n [BaseColor.success]: \"e-bg-lime-500 e-text-white\",\n },\n sizes: {\n [Size.dot]: \"e-w-2 e-h-2\",\n [Size.xs]: \"e-w-3 e-h-3\",\n [Size.sm]: \"e-w-4 e-h-4\",\n [Size.md]: \"e-w-5 e-h-5\",\n [Size.lg]:\n \"e-min-w-[2rem] e-max-w-[4rem] e-px-1 e-h-6 e-text-sm e-font-medium\",\n [Size.xl]:\n \"e-min-w-[3rem] e-max-w-[5rem] e-px-1 e-h-8 e-text-base e-font-medium\",\n },\n }\n },\n computed: {\n badgeClasses(): string[] {\n const colorClasses =\n this.colors[this.color as keyof typeof this.colors] ||\n this.colors[BaseColor.default]\n const sizeClasses = (this.sizes[this.size as keyof typeof this.sizes] ||\n this.sizes[Size.md]) as string\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full\",\n colorClasses,\n sizeClasses,\n ]\n },\n showText(): boolean {\n return [Size.lg, Size.xl].includes(this.size)\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport Badge from \"@/components/EBadge.vue\"\nimport { BaseColor, Size, TAvatarSize, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EAvatar\",\n components: {\n Badge,\n },\n props: {\n size: {\n type: String as PropType<TAvatarSize>,\n default: Size.md,\n },\n showBadge: {\n type: Boolean,\n default: false,\n },\n badgeColor: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.error,\n },\n badgeText: {\n type: String,\n default: \"\",\n },\n badgeSize: {\n type: String as PropType<TBadgeSize>,\n default: Size.md,\n },\n image: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n sizes: {\n [Size.xs]: \"e-w-8 e-h-8 e-text-xs\",\n [Size.sm]: \"e-w-10 e-h-10 e-text-sm\",\n [Size.md]: \"e-w-14 e-h-14 e-text-base\",\n [Size.lg]: \"e-w-20 e-h-20 e-text-2xl\",\n [Size.xl]: \"e-w-28 e-h-28 e-text-3xl\",\n [Size[\"2xl\"]]: \"e-w-36 e-h-36 e-text-5xl\",\n },\n }\n },\n computed: {\n avatarClasses(): string[] {\n const sizeClasses =\n this.sizes[this.size as TAvatarSize] || this.sizes[Size.xs]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-bg-gradient-to-r e-from-purple-500 e-to-indigo-500 e-text-white e-font-medium\",\n sizeClasses,\n ]\n },\n },\n})\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dim: function() {\n return dim;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n if (key && alreadyShown.has(key)) return;\n if (key) alreadyShown.add(key);\n console.warn(\"\");\n messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n return _picocolors.default.dim(input);\n}\nconst _default = {\n info (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n warn (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n risk (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\"\n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\",\n 950: \"#09090b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\",\n 950: \"#0c0a09\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\",\n 950: \"#1a2e05\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\",\n 950: \"#022c22\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\",\n 950: \"#083344\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\",\n 950: \"#1e1b4b\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\",\n 950: \"#2e1065\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n 950: \"#4a044e\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\",\n 950: \"#4c0519\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\n","const TailwindColors = require(\"tailwindcss/colors.js\")\n\nconst BrandColors = {\n 50: \"#FCE3E4\",\n 100: \"#F9CDCE\",\n 200: \"#F39699\",\n 300: \"#ED6368\",\n 400: \"#E72C32\",\n 500: \"#C4161C\",\n 600: \"#9C1216\",\n 700: \"#770D11\",\n 800: \"#4E090B\",\n 900: \"#290506\",\n}\n\nconst customColors = {\n onprimary: TailwindColors.white,\n warning: TailwindColors.amber,\n error: TailwindColors.rose,\n info: TailwindColors.cyan,\n success: TailwindColors.lime,\n primary: TailwindColors.sky,\n brand: BrandColors,\n \"video-player-progress-bar\": {\n \"base-bg\": \"#6c737a\",\n \"progress-bg\": \"#0090ff\",\n \"hover-bg\": \"#bbb\",\n \"chunk-bg\": \"#9bcdff\",\n \"tootltip-bg\": \"#333\",\n \"transition-duration\": \"0.2s\",\n \"bar-height\": \"7px\",\n },\n}\n\nconst CustomColors = {\n ...customColors,\n // Warning\n warning: customColors.warning[\"500\"],\n \"warning-darken\": customColors.warning[\"600\"],\n \"warning-lighten\": customColors.warning[\"400\"],\n // Success\n success: customColors.success[\"500\"],\n \"success-darken\": customColors.success[\"600\"],\n \"success-lighten\": customColors.success[\"400\"],\n // Error\n error: customColors.error[\"500\"],\n \"error-darken\": customColors.error[\"600\"],\n \"error-lighten\": customColors.error[\"400\"],\n // Info\n info: customColors.info[\"500\"],\n \"info-darken\": customColors.info[\"600\"],\n \"info-lighten\": customColors.info[\"400\"],\n // Primary\n primary: customColors.primary[\"500\"],\n \"primary-darken\": customColors.primary[\"600\"],\n \"primary-lighten\": customColors.primary[\"400\"],\n // Surfaces\n onsurface: TailwindColors.slate[\"500\"],\n onbackground: TailwindColors.slate[\"700\"],\n surface: TailwindColors.slate[\"50\"],\n background: TailwindColors.white,\n}\n\nconst config = {\n prefix: \"e-\",\n dark: \"class\",\n corePlugins: {\n preflight: false,\n },\n content: [\"./src/**/*.{html,js,vue,ts}\"],\n theme: {\n extend: {\n colors: CustomColors,\n lineHeight: {\n xs: \"1rem\",\n sm: \"1.25rem\",\n base: \"1.5rem\",\n lg: \"1.75rem\",\n xl: \"1.75rem\",\n \"2xl\": \"2rem\",\n \"3xl\": \"2.25rem\",\n \"4xl\": \"2.5rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n maxWidth: {\n \"1/12\": \"8.333333333%\",\n \"2/12\": \"16.666666666%\",\n \"3/12\": \"25%\",\n \"4/12\": \"33.333333333%\",\n \"5/12\": \"41.666666667%\",\n \"6/12\": \"50%\",\n \"7/12\": \"58.333333334%\",\n \"8/12\": \"66.666666666%\",\n \"9/12\": \"75%\",\n \"10/12\": \"83.333333334%\",\n \"11/12\": \"91.666666666%\",\n \"12/12\": \"100%\",\n },\n blur: {\n \"video-poster\": \"32px\",\n },\n transitionProperty: {\n \"opacity-transform\": \"opacity, transform\",\n },\n transitionDuration: {\n 600: \"600ms\",\n },\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n },\n plugins: [],\n safelist: [\n {\n pattern: /e-w-(full|auto)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-grow/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-basis-(\\d{1,2}\\/\\d{1,2}|full|auto|0)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /^!?e-max-w-(\\d{1,2}\\/\\d{1,2})/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-offset-(1[0-2]|[1-9])/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-items-(start|center|end|baseline|stretch)/,\n },\n {\n pattern: /e-self-(start|center|end|baseline|stretch)/,\n },\n {\n pattern:\n /e-justify-(around|between|center|end|evenly|normal|start|stretch)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern:\n /e-content-(around|baseline|between|center|end|evenly|normal|start|stretch)/,\n },\n {\n pattern: /e-m[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-p[trblxy]?-[\\w\\-/]+/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n \"e-tiny\",\n \"e-caption\",\n \"e-body\",\n \"e-title-2\",\n \"e-title-1\",\n \"e-display-3\",\n \"e-display-2\",\n \"e-display-1\",\n {\n pattern: /e-text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)/,\n },\n {\n pattern: /e-text-(warning|error|info|success|primary|brand)-./,\n },\n {\n pattern: /e-bg-(warning|error|info|success|primary|brand)-./,\n },\n ],\n}\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = config\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return negateValue;\n }\n});\nfunction negateValue(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n // What functions we support negating numeric values for\n // var() isn't inherently a numeric function but we support it anyway\n // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_\n // to produce generally useful results and that will be covered already\n let numericFunctions = [\n \"var\",\n \"calc\",\n \"min\",\n \"max\",\n \"clamp\"\n ];\n for (const fn of numericFunctions){\n if (value.includes(`${fn}(`)) {\n return `calc(${value} * -1)`;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"lineClamp\",\n \"display\",\n \"aspectRatio\",\n \"size\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"captionSide\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listStyleImage\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"hyphens\",\n \"whitespace\",\n \"textWrap\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"contain\",\n \"content\",\n \"forcedColorAdjust\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n })))\n ];\n return pluginNames;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: function() {\n return defaults;\n }\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var _target_hasOwnProperty;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k of Object.getOwnPropertySymbols(source)){\n var _target_hasOwnProperty1;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {\n target[k] = source[k];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: function() {\n return toPath;\n }\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: function() {\n return flagEnabled;\n },\n issueFlagNotices: function() {\n return issueFlagNotices;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"./util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false,\n generalizedModifiers: true,\n disableColorOpacityUtilitiesByDefault: false,\n relativeContentPathsByDefault: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\",\n \"disableColorOpacityUtilitiesByDefault\",\n \"relativeContentPathsByDefault\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"generalizedModifiers\"\n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var _config_future;\n var _config_future_flag, _ref;\n return config.future === \"all\" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var _config_experimental;\n var _config_experimental_flag, _ref1;\n return config.experimental === \"all\" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var _config_experimental;\n return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: function() {\n return normalizeConfig;\n }\n});\nconst _featureFlags = require(\"../featureFlags\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"relative\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value of Object.values(config.content.transform)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n // `config.content.relative` is optional and can be a boolean\n if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var _purge_options;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize the `blocklist`\n config.blocklist = (()=>{\n let { blocklist } = config;\n if (Array.isArray(blocklist)) {\n if (blocklist.every((item)=>typeof item === \"string\")) {\n return blocklist;\n }\n _log.default.warn(\"blocklist-invalid\", [\n \"The `blocklist` option must be an array of strings.\",\n \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n ]);\n }\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n ]);\n config.prefix = \"\";\n } else {\n var _config_prefix;\n config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n relative: (()=>{\n let { content } = config;\n if (content === null || content === void 0 ? void 0 : content.relative) {\n return content.relative;\n }\n return (0, _featureFlags.flagEnabled)(config, \"relativeContentPathsByDefault\");\n })(),\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;\n if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;\n if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var _config_purge, _config_purge_options, _config_content, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return isPlainObject;\n }\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || Object.getPrototypeOf(prototype) === null;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return escapeCommas;\n }\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = {\n aliceblue: [\n 240,\n 248,\n 255\n ],\n antiquewhite: [\n 250,\n 235,\n 215\n ],\n aqua: [\n 0,\n 255,\n 255\n ],\n aquamarine: [\n 127,\n 255,\n 212\n ],\n azure: [\n 240,\n 255,\n 255\n ],\n beige: [\n 245,\n 245,\n 220\n ],\n bisque: [\n 255,\n 228,\n 196\n ],\n black: [\n 0,\n 0,\n 0\n ],\n blanchedalmond: [\n 255,\n 235,\n 205\n ],\n blue: [\n 0,\n 0,\n 255\n ],\n blueviolet: [\n 138,\n 43,\n 226\n ],\n brown: [\n 165,\n 42,\n 42\n ],\n burlywood: [\n 222,\n 184,\n 135\n ],\n cadetblue: [\n 95,\n 158,\n 160\n ],\n chartreuse: [\n 127,\n 255,\n 0\n ],\n chocolate: [\n 210,\n 105,\n 30\n ],\n coral: [\n 255,\n 127,\n 80\n ],\n cornflowerblue: [\n 100,\n 149,\n 237\n ],\n cornsilk: [\n 255,\n 248,\n 220\n ],\n crimson: [\n 220,\n 20,\n 60\n ],\n cyan: [\n 0,\n 255,\n 255\n ],\n darkblue: [\n 0,\n 0,\n 139\n ],\n darkcyan: [\n 0,\n 139,\n 139\n ],\n darkgoldenrod: [\n 184,\n 134,\n 11\n ],\n darkgray: [\n 169,\n 169,\n 169\n ],\n darkgreen: [\n 0,\n 100,\n 0\n ],\n darkgrey: [\n 169,\n 169,\n 169\n ],\n darkkhaki: [\n 189,\n 183,\n 107\n ],\n darkmagenta: [\n 139,\n 0,\n 139\n ],\n darkolivegreen: [\n 85,\n 107,\n 47\n ],\n darkorange: [\n 255,\n 140,\n 0\n ],\n darkorchid: [\n 153,\n 50,\n 204\n ],\n darkred: [\n 139,\n 0,\n 0\n ],\n darksalmon: [\n 233,\n 150,\n 122\n ],\n darkseagreen: [\n 143,\n 188,\n 143\n ],\n darkslateblue: [\n 72,\n 61,\n 139\n ],\n darkslategray: [\n 47,\n 79,\n 79\n ],\n darkslategrey: [\n 47,\n 79,\n 79\n ],\n darkturquoise: [\n 0,\n 206,\n 209\n ],\n darkviolet: [\n 148,\n 0,\n 211\n ],\n deeppink: [\n 255,\n 20,\n 147\n ],\n deepskyblue: [\n 0,\n 191,\n 255\n ],\n dimgray: [\n 105,\n 105,\n 105\n ],\n dimgrey: [\n 105,\n 105,\n 105\n ],\n dodgerblue: [\n 30,\n 144,\n 255\n ],\n firebrick: [\n 178,\n 34,\n 34\n ],\n floralwhite: [\n 255,\n 250,\n 240\n ],\n forestgreen: [\n 34,\n 139,\n 34\n ],\n fuchsia: [\n 255,\n 0,\n 255\n ],\n gainsboro: [\n 220,\n 220,\n 220\n ],\n ghostwhite: [\n 248,\n 248,\n 255\n ],\n gold: [\n 255,\n 215,\n 0\n ],\n goldenrod: [\n 218,\n 165,\n 32\n ],\n gray: [\n 128,\n 128,\n 128\n ],\n green: [\n 0,\n 128,\n 0\n ],\n greenyellow: [\n 173,\n 255,\n 47\n ],\n grey: [\n 128,\n 128,\n 128\n ],\n honeydew: [\n 240,\n 255,\n 240\n ],\n hotpink: [\n 255,\n 105,\n 180\n ],\n indianred: [\n 205,\n 92,\n 92\n ],\n indigo: [\n 75,\n 0,\n 130\n ],\n ivory: [\n 255,\n 255,\n 240\n ],\n khaki: [\n 240,\n 230,\n 140\n ],\n lavender: [\n 230,\n 230,\n 250\n ],\n lavenderblush: [\n 255,\n 240,\n 245\n ],\n lawngreen: [\n 124,\n 252,\n 0\n ],\n lemonchiffon: [\n 255,\n 250,\n 205\n ],\n lightblue: [\n 173,\n 216,\n 230\n ],\n lightcoral: [\n 240,\n 128,\n 128\n ],\n lightcyan: [\n 224,\n 255,\n 255\n ],\n lightgoldenrodyellow: [\n 250,\n 250,\n 210\n ],\n lightgray: [\n 211,\n 211,\n 211\n ],\n lightgreen: [\n 144,\n 238,\n 144\n ],\n lightgrey: [\n 211,\n 211,\n 211\n ],\n lightpink: [\n 255,\n 182,\n 193\n ],\n lightsalmon: [\n 255,\n 160,\n 122\n ],\n lightseagreen: [\n 32,\n 178,\n 170\n ],\n lightskyblue: [\n 135,\n 206,\n 250\n ],\n lightslategray: [\n 119,\n 136,\n 153\n ],\n lightslategrey: [\n 119,\n 136,\n 153\n ],\n lightsteelblue: [\n 176,\n 196,\n 222\n ],\n lightyellow: [\n 255,\n 255,\n 224\n ],\n lime: [\n 0,\n 255,\n 0\n ],\n limegreen: [\n 50,\n 205,\n 50\n ],\n linen: [\n 250,\n 240,\n 230\n ],\n magenta: [\n 255,\n 0,\n 255\n ],\n maroon: [\n 128,\n 0,\n 0\n ],\n mediumaquamarine: [\n 102,\n 205,\n 170\n ],\n mediumblue: [\n 0,\n 0,\n 205\n ],\n mediumorchid: [\n 186,\n 85,\n 211\n ],\n mediumpurple: [\n 147,\n 112,\n 219\n ],\n mediumseagreen: [\n 60,\n 179,\n 113\n ],\n mediumslateblue: [\n 123,\n 104,\n 238\n ],\n mediumspringgreen: [\n 0,\n 250,\n 154\n ],\n mediumturquoise: [\n 72,\n 209,\n 204\n ],\n mediumvioletred: [\n 199,\n 21,\n 133\n ],\n midnightblue: [\n 25,\n 25,\n 112\n ],\n mintcream: [\n 245,\n 255,\n 250\n ],\n mistyrose: [\n 255,\n 228,\n 225\n ],\n moccasin: [\n 255,\n 228,\n 181\n ],\n navajowhite: [\n 255,\n 222,\n 173\n ],\n navy: [\n 0,\n 0,\n 128\n ],\n oldlace: [\n 253,\n 245,\n 230\n ],\n olive: [\n 128,\n 128,\n 0\n ],\n olivedrab: [\n 107,\n 142,\n 35\n ],\n orange: [\n 255,\n 165,\n 0\n ],\n orangered: [\n 255,\n 69,\n 0\n ],\n orchid: [\n 218,\n 112,\n 214\n ],\n palegoldenrod: [\n 238,\n 232,\n 170\n ],\n palegreen: [\n 152,\n 251,\n 152\n ],\n paleturquoise: [\n 175,\n 238,\n 238\n ],\n palevioletred: [\n 219,\n 112,\n 147\n ],\n papayawhip: [\n 255,\n 239,\n 213\n ],\n peachpuff: [\n 255,\n 218,\n 185\n ],\n peru: [\n 205,\n 133,\n 63\n ],\n pink: [\n 255,\n 192,\n 203\n ],\n plum: [\n 221,\n 160,\n 221\n ],\n powderblue: [\n 176,\n 224,\n 230\n ],\n purple: [\n 128,\n 0,\n 128\n ],\n rebeccapurple: [\n 102,\n 51,\n 153\n ],\n red: [\n 255,\n 0,\n 0\n ],\n rosybrown: [\n 188,\n 143,\n 143\n ],\n royalblue: [\n 65,\n 105,\n 225\n ],\n saddlebrown: [\n 139,\n 69,\n 19\n ],\n salmon: [\n 250,\n 128,\n 114\n ],\n sandybrown: [\n 244,\n 164,\n 96\n ],\n seagreen: [\n 46,\n 139,\n 87\n ],\n seashell: [\n 255,\n 245,\n 238\n ],\n sienna: [\n 160,\n 82,\n 45\n ],\n silver: [\n 192,\n 192,\n 192\n ],\n skyblue: [\n 135,\n 206,\n 235\n ],\n slateblue: [\n 106,\n 90,\n 205\n ],\n slategray: [\n 112,\n 128,\n 144\n ],\n slategrey: [\n 112,\n 128,\n 144\n ],\n snow: [\n 255,\n 250,\n 250\n ],\n springgreen: [\n 0,\n 255,\n 127\n ],\n steelblue: [\n 70,\n 130,\n 180\n ],\n tan: [\n 210,\n 180,\n 140\n ],\n teal: [\n 0,\n 128,\n 128\n ],\n thistle: [\n 216,\n 191,\n 216\n ],\n tomato: [\n 255,\n 99,\n 71\n ],\n turquoise: [\n 64,\n 224,\n 208\n ],\n violet: [\n 238,\n 130,\n 238\n ],\n wheat: [\n 245,\n 222,\n 179\n ],\n white: [\n 255,\n 255,\n 255\n ],\n whitesmoke: [\n 245,\n 245,\n 245\n ],\n yellow: [\n 255,\n 255,\n 0\n ],\n yellowgreen: [\n 154,\n 205,\n 50\n ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: function() {\n return parseColor;\n },\n formatColor: function() {\n return formatColor;\n }\n});\nconst _colorNames = /*#__PURE__*/ _interop_require_default(require(\"./colorNames\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\\(--[^ )]*?\\)))?\\)/;\nlet RGB = new RegExp(`^(rgba?)\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsla?)\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var _match_, _match__toString;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorNames.default) {\n return {\n mode: \"rgb\",\n color: _colorNames.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var _value_match;\n let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n // rgba(var(--my-color), 0.1)\n // hsla(var(--my-color), 0.1)\n if (color.length === 2 && color[0].startsWith(\"var(\")) {\n return {\n mode: match[1],\n color: [\n color[0]\n ],\n alpha: color[1]\n };\n }\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n if (mode === \"rgba\" || mode === \"hsla\") {\n return `${mode}(${color.join(\", \")}${hasAlpha ? `, ${alpha}` : \"\"})`;\n }\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: function() {\n return withAlphaValue;\n },\n default: function() {\n return withAlphaVariable;\n }\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n * ─┬─ ┬ ┬ ┬\n * x x x ╰──────── Split because top-level\n * ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: function() {\n return splitAtTopLevelOnly;\n }\n});\nfunction splitAtTopLevelOnly(input, separator) {\n let stack = [];\n let parts = [];\n let lastPos = 0;\n let isEscaped = false;\n for(let idx = 0; idx < input.length; idx++){\n let char = input[idx];\n if (stack.length === 0 && char === separator[0] && !isEscaped) {\n if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n parts.push(input.slice(lastPos, idx));\n lastPos = idx + separator.length;\n }\n }\n if (isEscaped) {\n isEscaped = false;\n } else if (char === \"\\\\\") {\n isEscaped = true;\n }\n if (char === \"(\" || char === \"[\" || char === \"{\") {\n stack.push(char);\n } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n stack.pop();\n }\n }\n parts.push(input.slice(lastPos));\n return parts;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: function() {\n return parseBoxShadowValue;\n },\n formatBoxShadowValue: function() {\n return formatBoxShadowValue;\n }\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: function() {\n return normalize;\n },\n url: function() {\n return url;\n },\n number: function() {\n return number;\n },\n percentage: function() {\n return percentage;\n },\n length: function() {\n return length;\n },\n lineWidth: function() {\n return lineWidth;\n },\n shadow: function() {\n return shadow;\n },\n color: function() {\n return color;\n },\n image: function() {\n return image;\n },\n gradient: function() {\n return gradient;\n },\n position: function() {\n return position;\n },\n familyName: function() {\n return familyName;\n },\n genericName: function() {\n return genericName;\n },\n absoluteSize: function() {\n return absoluteSize;\n },\n relativeSize: function() {\n return relativeSize;\n }\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\n// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them\n// as: `timeline-scope: --tl;`\n//\n// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add\n// the `var()` yourself.\n//\n// More info:\n// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope\n// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident\n//\nconst AUTO_VAR_INJECTION_EXCEPTIONS = new Set([\n // Concrete properties\n \"scroll-timeline-name\",\n \"timeline-scope\",\n \"view-timeline-name\",\n \"font-palette\",\n // Shorthand properties\n \"scroll-timeline\",\n \"animation-timeline\",\n \"view-timeline\"\n]);\nfunction normalize(value, context = null, isRoot = true) {\n let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property);\n if (value.startsWith(\"--\") && !isVarException) {\n return `var(${value})`;\n }\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, context, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n value = normalizeMathOperatorSpacing(value);\n return value;\n}\n/**\n * Add spaces around operators inside math functions\n * like calc() that do not follow an operator, '(', or `,`.\n *\n * @param {string} value\n * @returns {string}\n */ function normalizeMathOperatorSpacing(value) {\n let preventFormattingInFunctions = [\n \"theme\"\n ];\n let preventFormattingKeywords = [\n \"min-content\",\n \"max-content\",\n \"fit-content\",\n // Env\n \"safe-area-inset-top\",\n \"safe-area-inset-right\",\n \"safe-area-inset-bottom\",\n \"safe-area-inset-left\",\n \"titlebar-area-x\",\n \"titlebar-area-y\",\n \"titlebar-area-width\",\n \"titlebar-area-height\",\n \"keyboard-inset-top\",\n \"keyboard-inset-right\",\n \"keyboard-inset-bottom\",\n \"keyboard-inset-left\",\n \"keyboard-inset-width\",\n \"keyboard-inset-height\",\n \"radial-gradient\",\n \"linear-gradient\",\n \"conic-gradient\",\n \"repeating-radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-conic-gradient\"\n ];\n return value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n let result = \"\";\n function lastChar() {\n let char = result.trimEnd();\n return char[char.length - 1];\n }\n for(let i = 0; i < match.length; i++){\n function peek(word) {\n return word.split(\"\").every((char, j)=>match[i + j] === char);\n }\n function consumeUntil(chars) {\n let minIndex = Infinity;\n for (let char of chars){\n let index = match.indexOf(char, i);\n if (index !== -1 && index < minIndex) {\n minIndex = index;\n }\n }\n let result = match.slice(i, minIndex);\n i += result.length - 1;\n return result;\n }\n let char = match[i];\n // Handle `var(--variable)`\n if (peek(\"var\")) {\n // When we consume until `)`, then we are dealing with this scenario:\n // `var(--example)`\n //\n // When we consume until `,`, then we are dealing with this scenario:\n // `var(--example, 1rem)`\n //\n // In this case we do want to \"format\", the default value as well\n result += consumeUntil([\n \")\",\n \",\"\n ]);\n } else if (preventFormattingKeywords.some((keyword)=>peek(keyword))) {\n let keyword = preventFormattingKeywords.find((keyword)=>peek(keyword));\n result += keyword;\n i += keyword.length - 1;\n } else if (preventFormattingInFunctions.some((fn)=>peek(fn))) {\n result += consumeUntil([\n \")\"\n ]);\n } else if (peek(\"[\")) {\n result += consumeUntil([\n \"]\"\n ]);\n } else if ([\n \"+\",\n \"-\",\n \"*\",\n \"/\"\n ].includes(char) && ![\n \"(\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \",\"\n ].includes(lastChar())) {\n result += ` ${char} `;\n } else {\n result += char;\n }\n }\n // Simplify multiple spaces\n return result.replace(/\\s+/g, \" \");\n });\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\n// Please refer to MDN when updating this list:\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units\n// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\",\n \"vb\",\n \"vi\",\n \"svw\",\n \"svh\",\n \"lvw\",\n \"lvh\",\n \"dvw\",\n \"dvh\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"conic-gradient\",\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-conic-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\"\n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\"\n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"xx-large\",\n \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n enumerable: true,\n get: function() {\n return backgroundSize;\n }\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n let keywordValues = [\n \"cover\",\n \"contain\"\n ];\n // the <length-percentage> type will probably be a css function\n // so we have to use `splitAtTopLevelOnly`\n return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n if (sizes.length !== 1 && sizes.length !== 2) return false;\n return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: function() {\n return updateAllClasses;\n },\n asValue: function() {\n return asValue;\n },\n parseColorFormat: function() {\n return parseColorFormat;\n },\n asColor: function() {\n return asColor;\n },\n asLookupValue: function() {\n return asLookupValue;\n },\n typeMap: function() {\n return typeMap;\n },\n coerceValue: function() {\n return coerceValue;\n },\n getMatchingTypes: function() {\n return getMatchingTypes;\n }\n});\nconst _escapeCommas = /*#__PURE__*/ _interop_require_default(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlags = require(\"../featureFlags.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n selectors.walkClasses((sel)=>{\n sel.value = updateClass(sel.value);\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var _options_values;\n let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n // If the `/` is inside an arbitrary, we want to find the previous one if any\n // This logic probably isn't perfect but it should work for most cases\n let arbitraryStartIdx = modifier.lastIndexOf(\"[\", slashIdx);\n let arbitraryEndIdx = modifier.indexOf(\"]\", slashIdx);\n let isNextToArbitrary = modifier[slashIdx - 1] === \"]\" || modifier[slashIdx + 1] === \"[\";\n // Backtrack to the previous `/` if the one we found was inside an arbitrary\n if (!isNextToArbitrary) {\n if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {\n if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {\n slashIdx = modifier.lastIndexOf(\"/\", arbitraryStartIdx);\n }\n }\n }\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier,\n undefined\n ];\n }\n let arbitrary = isArbitraryValue(modifier);\n // The modifier could be of the form `[foo]/[bar]`\n // We want to handle this case properly\n // without affecting `[foo/bar]`\n if (arbitrary && !modifier.includes(\"]/[\")) {\n return [\n modifier,\n undefined\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction unwrapArbitraryModifier(modifier) {\n return (0, _dataTypes.normalize)(modifier.slice(1, -1));\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var _options_values;\n if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {\n var _options_values1;\n return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);\n }\n // TODO: Hoist this up to getMatchingTypes or something\n // We do this here because we need the alpha value (if any)\n let [color, alpha] = splitUtilityModifier(modifier);\n if (alpha !== undefined) {\n var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;\n var _options_values_color;\n let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));\n }\n if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var _options_values;\n return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow),\n size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (options.values && modifier in options.values) {\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n return [\n result,\n type,\n null\n ];\n }\n }\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType,\n null\n ];\n }\n }\n let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n // Find first matching type\n for (let match of matches){\n return match;\n }\n return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n if (!canUseUtilityModifier) {\n modifier = rawModifier;\n utilityModifier = undefined;\n }\n if (utilityModifier !== undefined && modifier === \"\") {\n modifier = \"DEFAULT\";\n }\n // Check the full value first\n // TODO: Move to asValue… somehow\n if (utilityModifier !== undefined) {\n if (typeof options.modifiers === \"object\") {\n var _options_modifiers;\n var _options_modifiers_utilityModifier;\n let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;\n if (configValue !== null) {\n utilityModifier = configValue;\n } else if (isArbitraryValue(utilityModifier)) {\n utilityModifier = unwrapArbitraryModifier(utilityModifier);\n }\n }\n }\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n yield [\n result,\n type,\n utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n ];\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return toColorValue;\n }\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interop_require_default(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interop_require_default(require(\"./configurePlugins\"));\nconst _colors = /*#__PURE__*/ _interop_require_default(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interop_require_default(require(\"./toColorValue\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n target[k] = mergeWith({}, target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var _config_plugins;\n const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var _plugin_config;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\"\n }\n ];\n var _t_theme, _c_plugins;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];\n }))\n }, ...allConfigs));\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridTemplateColumns: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n subgrid: 'subgrid',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n ...theme('spacing'),\n none: 'none',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n svh: '100svh',\n lvh: '100lvh',\n dvh: '100dvh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n minWidth: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 15: '0.15',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 35: '0.35',\n 40: '0.4',\n 45: '0.45',\n 50: '0.5',\n 55: '0.55',\n 60: '0.6',\n 65: '0.65',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 85: '0.85',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n size: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n svw: '100svw',\n lvw: '100lvw',\n dvw: '100dvw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return getAllConfigs;\n }\n});\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var _config_presets;\n const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [\n _configfull.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: ({ theme })=>({\n DEFAULT: \"#3b82f67f\",\n ...theme(\"colors\")\n })\n }\n },\n disableColorOpacityUtilitiesByDefault: {\n corePlugins: {\n backgroundOpacity: false,\n borderOpacity: false,\n divideOpacity: false,\n placeholderOpacity: false,\n ringOpacity: false,\n textOpacity: false\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _resolveConfig = /*#__PURE__*/ _interop_require_default(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interop_require_default(require(\"../util/getAllConfigs\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","// @ts-ignore\nimport tailwindConfig from \"../tailwind.config.js\"\nimport resolveConfig from \"tailwindcss/resolveConfig\"\nimport { Size, BaseColor } from \"@/types\"\n\nexport const fullConfig = resolveConfig(tailwindConfig) as any\n\nexport const TextSizes = fullConfig.theme.fontSize\n\nexport const Colors = fullConfig.theme.colors\n\nexport const BadgeSizes = [\n Size.dot,\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n] as const\n\nexport const AvatarSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n] as const\n\nexport const IconSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.base,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n Size[\"3xl\"],\n Size[\"4xl\"],\n Size[\"5xl\"],\n Size[\"6xl\"],\n Size[\"7xl\"],\n Size[\"8xl\"],\n Size[\"9xl\"],\n] as const\n\nexport const ToggleSwitchSizes = [Size.sm, Size.md, Size.lg] as const\n\nexport const BadgeColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { IconSizes } from \"@/constants\"\nimport { BaseColor, Size, TailwindColorClass, TIconSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EIcon\",\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n },\n computed: {\n sizes(): Record<Size, string> {\n return IconSizes.reduce((acc, s) => {\n return {\n ...acc,\n [s]: `e-text-${s}`,\n }\n }, {}) as Record<Size, string>\n },\n iconClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.sm]\n const iconClasses = `${\n this.icon?.split(\" \")?.length > 1 ? this.icon : `fa fa-${this.icon}`\n }`\n const color = this.color\n\n return [\n \"e-inline-flex e-items-center e-justify-center e-rounded-full\",\n color,\n iconClasses,\n sizeClasses,\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size } from \"@/types\"\nimport { TextSizes, Colors } from \"@/constants\"\n\nexport default Vue.extend({\n name: \"ESpinner\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n color: {\n type: Boolean,\n default: true,\n },\n animationDuration: {\n type: [Number, String],\n default: 1000,\n },\n size: {\n type: String as PropType<Size>,\n default: Size.base,\n },\n opacity: {\n type: [String, Number],\n default: 1,\n },\n },\n data() {\n return {\n sizes: TextSizes,\n colors: Colors,\n }\n },\n computed: {\n computedSize(): number {\n return this.sizes[Size[this.size]] || this.size || this.sizes[Size.base]\n },\n fill(): { primary: string; secondary: string } {\n let fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[300],\n }\n\n if (this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[100],\n secondary: this.colors.neutral[100],\n }\n }\n\n if (!this.dark && this.color) {\n fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[950],\n }\n }\n\n if (!this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[200],\n secondary: this.colors.neutral[200],\n }\n }\n\n return fill\n },\n },\n methods: {\n getNthPathStyle(index: number) {\n const animationDuration =\n typeof this.animationDuration === \"string\"\n ? Number.parseInt(this.animationDuration)\n : this.animationDuration\n\n return {\n animationDuration: `${this.animationDuration}ms`,\n animationDelay: `${(index / 10) * animationDuration}ms`,\n fill: `${this.fill[index % 2 === 0 ? \"primary\" : \"secondary\"]}`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignContent, FlexAlignItems, FlexJustifyContent } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n align: {\n type: String as PropType<FlexAlignItems>,\n default: undefined,\n },\n alignContent: {\n type: String as PropType<FlexAlignContent>,\n default: undefined,\n },\n justify: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXs: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifySm: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyMd: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyLg: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXl: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n noGutters: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n computed: {\n justifyClasses(): Record<string, boolean> {\n return {\n [`e-justify-${this.justify}`]: !!this.justify,\n [`xs:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`sm:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`md:e-justify-${this.justifyMd}`]: !!this.justifyMd,\n [`lg:e-justify-${this.justifyLg}`]: !!this.justifyLg,\n [`xl:e-justify-${this.justifyXl}`]: !!this.justifyXl,\n }\n },\n rowClasses(): Record<string, boolean> {\n return {\n ...(this.align ? { [`e-items-${this.align}`]: true } : {}),\n ...(this.alignContent\n ? { [`e-content-${this.alignContent}`]: true }\n : {}),\n ...(this.noGutters ? { [\"e-row--no-gutters\"]: true } : {}),\n ...this.justifyClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignSelf } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n alignSelf: {\n type: String as PropType<FlexAlignSelf>,\n default: \"auto\",\n },\n cols: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n lg: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n md: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n offset: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetLg: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetMd: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetSm: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXs: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXl: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n sm: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xs: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xl: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n },\n computed: {\n colClasses(): Record<string, boolean> {\n return {\n // Align self\n ...(this.alignSelf ? { [`e-self-${this.alignSelf}`]: true } : {}),\n\n // cols=\"auto\"\n [this.autoClasses(\"xs:\", this.xs)]: this.isSizePropAuto(this.xs),\n [this.autoClasses(\"sm:\", this.sm)]: this.isSizePropAuto(this.sm),\n [this.autoClasses(\"md:\", this.md)]: this.isSizePropAuto(this.md),\n [this.autoClasses(\"lg:\", this.lg)]: this.isSizePropAuto(this.lg),\n [this.autoClasses(\"xl:e\", this.xl)]: this.isSizePropAuto(this.xl),\n [this.autoClasses(\"\", this.cols)]: this.isSizePropAuto(this.cols, true),\n\n // cols=\"12\"\n \"xs:e-basis-full xs:!e-max-w-12/12\": this.xs === 12 || this.xs === \"12\",\n \"sm:e-basis-full sm:!e-max-w-12/12\": this.sm === 12 || this.sm === \"12\",\n \"md:e-basis-full md:!e-max-w-12/12\": this.md === 12 || this.md === \"12\",\n \"lg:e-basis-full lg:!e-max-w-12/12\": this.lg === 12 || this.lg === \"12\",\n \"xl:e-basis-full xl:!e-max-w-12/12\": this.xl === 12 || this.xl === \"12\",\n \"e-basis-full e-max-w-12/12\": this.cols === 12 || this.cols === \"12\",\n\n // cols=\"n\"\n [`xs:e-basis-${this.xs}/12 xs:!e-max-w-${this.xs}/12`]:\n this.isSizePropertyNumeric(this.xs),\n [`sm:e-basis-${this.sm}/12 sm:!e-max-w-${this.sm}/12`]:\n this.isSizePropertyNumeric(this.sm),\n [`md:e-basis-${this.md}/12 md:!e-max-w-${this.md}/12`]:\n this.isSizePropertyNumeric(this.md),\n [`lg:e-basis-${this.lg}/12 lg:!e-max-w-${this.lg}/12`]:\n this.isSizePropertyNumeric(this.lg),\n [`xl:e-basis-${this.xl}/12 xl:!e-max-w-${this.xl}/12`]:\n this.isSizePropertyNumeric(this.xl),\n [`e-basis-${this.cols}/12 !e-max-w-${this.cols}/12`]:\n this.isSizePropertyNumeric(this.cols),\n\n // offset=\"n\"\n [`xs:e-offset-${this.offsetXs}`]: this.offsetXs !== undefined,\n [`sm:e-offset-${this.offsetSm}`]: this.offsetSm !== undefined,\n [`md:e-offset-${this.offsetMd}`]: this.offsetMd !== undefined,\n [`lg:e-offset-${this.offsetLg}`]: this.offsetLg !== undefined,\n [`xl:e-offset-${this.offsetXl}`]: this.offsetXl !== undefined,\n [`e-offset-${this.offset}`]: this.offset !== undefined,\n }\n },\n },\n methods: {\n autoClasses(prefix: string, value: boolean | string | number) {\n const basis = value === \"auto\" ? \"auto\" : \"0\"\n const grow = value === \"auto\" ? \"-0\" : \"\"\n const width = value === \"auto\" ? \"auto\" : \"full\"\n\n return `${prefix}e-basis-${basis} ${prefix}e-grow${grow} ${prefix}e-w-${width}`\n },\n isSizePropAuto(\n prop: boolean | string | number | undefined,\n acceptUndefined = false\n ) {\n return (\n prop === \"auto\" ||\n prop === 0 ||\n prop === \"0\" ||\n (acceptUndefined && !prop)\n )\n },\n isSizePropertyNumeric(prop: boolean | string | number | undefined) {\n const n = Number.parseInt(prop as string)\n\n return prop !== \"auto\" && !isNaN(n) && n >= 1 && n < 12\n },\n },\n})\n","import { FullscreenDocument, FullscreenHTMLElement } from \"@/types\"\n\nexport function isFullScreen() {\n const doc = document as FullscreenDocument\n\n return !!(\n doc.fullscreenElement ||\n doc.mozFullScreenElement ||\n doc.webkitFullscreenElement ||\n doc.msFullscreenElement\n )\n}\n\nexport function makeFullScreen(element: HTMLElement) {\n if (isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const el = element as FullscreenHTMLElement\n if (el.requestFullscreen) {\n return el?.requestFullscreen()\n } else if (el.mozRequestFullScreen) {\n return el?.mozRequestFullScreen()\n } else if (el.webkitRequestFullScreen) {\n return el?.webkitRequestFullScreen()\n } else if (el.msRequestFullscreen) {\n return el?.msRequestFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function exitFullScreen(): Promise<void | null> {\n if (!isFullScreen()) {\n return new Promise((resolve) => resolve(null))\n }\n\n const doc = document as FullscreenDocument\n if (doc.exitFullscreen) {\n return doc.exitFullscreen()\n } else if (doc.mozCancelFullScreen) {\n return doc.mozCancelFullScreen()\n } else if (doc.webkitCancelFullScreen) {\n return doc.webkitCancelFullScreen()\n } else if (doc.msExitFullscreen) {\n return doc.msExitFullscreen()\n } else {\n return new Promise((resolve) => resolve(null))\n }\n}\n\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait?: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n\n return function (...args: Parameters<T>): void {\n // @ts-ignore\n const context = this\n\n if (timeout !== null) {\n clearTimeout(timeout)\n }\n\n timeout = setTimeout(() => {\n timeout = null\n func.apply(context, args)\n }, wait || 1000)\n }\n}\n\nexport function getRandomChars(length: number = 1): string {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n\n return result\n}\n","\nimport Vue, { StyleValue } from \"vue\"\nexport default Vue.extend({\n name: \"EZoomable\",\n props: {\n ignorePointerEvents: {\n type: Boolean,\n default: false,\n },\n withOverlay: {\n type: Boolean,\n default: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n scale: 1,\n minScale: 1,\n maxScale: 20,\n top: 0,\n left: 0,\n isPanning: false,\n panStart: { x: 0, y: 0 },\n isPinching: false,\n previousPinchDistance: 0,\n pinchDistance: 0,\n pointers: {} as Record<number, PointerEvent>,\n transform: \"matrix(1, 0, 0, 1, 0, 0)\",\n }\n },\n computed: {\n contentStyle(): StyleValue {\n return {\n transform: this.transform as string,\n }\n },\n isZoomed(): boolean {\n return this.scale > 1\n },\n },\n watch: {\n contentStyle: {\n handler(imgStyle) {\n this.$emit(\"apply-zoomable-style\", { imgStyle })\n },\n immediate: true,\n deep: true,\n },\n },\n methods: {\n updateZoomScale() {\n if (this.scale > this.maxScale) {\n this.scale = this.maxScale\n } else if (this.scale < this.minScale) {\n this.scale = this.minScale\n }\n },\n handleZoom(e: WheelEvent) {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n e.preventDefault()\n if (this.disabled) {\n return\n }\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const mouseX = e.clientX\n const mouseY = e.clientY\n // @ts-ignore\n const delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail))\n const oldScale = this.scale\n\n this.scale += delta / 10\n this.updateZoomScale()\n\n const xPercent = (\n (mouseX - contentRect.left) /\n contentRect.width\n ).toFixed(2)\n const yPercent = (\n (mouseY - contentRect.top) /\n contentRect.height\n ).toFixed(2)\n\n this.left = Math.round(\n mouseX -\n containerRect.left -\n Number(xPercent) * ((contentRect.width * this.scale) / oldScale)\n )\n this.top = Math.round(\n mouseY -\n containerRect.top -\n Number(yPercent) * ((contentRect.height * this.scale) / oldScale)\n )\n\n const maxLeft = 0\n const minLeft = 0 - containerRect.width * (this.scale - 1)\n const minTop = 0 - containerRect.height * (this.scale - 1)\n const maxTop = 0\n\n if (this.left < minLeft) {\n this.left = minLeft\n } else if (this.left > maxLeft) {\n this.left = maxLeft\n }\n\n if (this.top < minTop) {\n this.top = minTop\n } else if (this.top > maxTop) {\n this.top = maxTop\n }\n\n this.updateTransform()\n },\n handleMouseDown(e: MouseEvent) {\n if (!this.isZoomed || this.disabled) {\n return\n }\n this.isPanning = true\n this.panStart = { x: e.clientX, y: e.clientY }\n },\n handleMouseUp() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseLeave() {\n if (this.disabled) {\n return\n }\n this.isPanning = false\n },\n handleMouseMove(e: MouseEvent) {\n if (!this.isPanning || !this.isZoomed || this.disabled) {\n return\n }\n const deltaX = e.clientX - this.panStart.x\n const deltaY = e.clientY - this.panStart.y\n\n this.left += deltaX\n this.top += deltaY\n\n this.applyBoundsCorrection()\n this.panStart = { x: e.clientX, y: e.clientY }\n\n this.updateTransform()\n },\n applyBoundsCorrection() {\n const container = this.$refs.container as HTMLElement\n const content = this.$refs.content as HTMLElement\n // Corrections ensure there is no gap between content and container when panning\n const containerRect = container.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n\n if (!containerRect || !contentRect) {\n return\n }\n\n const [correctionTop, correctionRight, correctionBottom, correctionLeft] =\n [\n containerRect.top - contentRect.top,\n contentRect.right - containerRect.right,\n contentRect.bottom - containerRect.bottom,\n containerRect.left - contentRect.left,\n ].map((v) => (v < 0 ? v : 0))\n\n this.left += correctionLeft - correctionRight\n this.top += correctionTop - correctionBottom\n },\n updateTransform() {\n this.transform = `matrix(${this.scale}, 0, 0, ${this.scale}, ${this.left}, ${this.top})`\n },\n getPointersDistance(a: PointerEvent, b: PointerEvent) {\n return Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY)\n },\n getPointersMidPoint(a: PointerEvent, b: PointerEvent) {\n return {\n x: a.clientX + (b.clientX - a.clientX) / 2,\n y: a.clientY + (b.clientY - a.clientY) / 2,\n }\n },\n updatePointerEvent(e: PointerEvent) {\n this.pointers[e.pointerId] = e\n },\n clearPointerEvent(e: PointerEvent) {\n this.$delete(this.pointers, e.pointerId)\n },\n updatePinchDistance() {\n const pointers = Object.values(this.pointers)\n if (pointers.length !== 2) {\n return\n }\n\n this.pinchDistance = this.getPointersDistance(pointers[0], pointers[1])\n },\n handlePointerDown(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n this.isPinching = Object.values(this.pointers).length === 2\n\n if (this.isPinching) {\n this.isPanning = false\n this.updatePinchDistance()\n } else {\n this.handleMouseDown(e)\n }\n },\n handlePointerMove(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.updatePointerEvent(e)\n if (this.isPinching) {\n this.previousPinchDistance = this.pinchDistance\n this.updatePinchDistance()\n const delta = this.pinchDistance / this.previousPinchDistance\n this.scale *= delta\n this.updateZoomScale()\n\n const pointers = Object.values(this.pointers)\n const midPoint = this.getPointersMidPoint(pointers[0], pointers[1])\n\n this.left = midPoint.x - (midPoint.x - this.left) * delta\n this.top = midPoint.y - (midPoint.y - this.top) * delta\n\n this.applyBoundsCorrection()\n this.updateTransform()\n } else {\n this.handleMouseMove(e)\n }\n },\n handlePointerUp(e: PointerEvent) {\n if (this.ignorePointerEvents || this.disabled) {\n return\n }\n\n this.clearPointerEvent(e)\n this.previousPinchDistance = 0\n this.pinchDistance = 0\n this.isPanning = false\n this.isPinching = false\n },\n },\n})\n","\nimport Hls, { ErrorData, Events, HlsConfig } from \"hls.js\"\nimport Vue, { PropType } from \"vue\"\nimport { makeFullScreen, exitFullScreen } from \"@/utils\"\nimport { FullscreenDocument } from \"@/types\"\n\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\nimport moment from \"moment-timezone\"\n// types:\nexport type VideoSource = {\n type: string\n src: string\n}\n\n// Helper functions\nconst leadingZeroFormatter = new Intl.NumberFormat(undefined, {\n minimumIntegerDigits: 2,\n})\n\n// List of events so we can bind them on mount\nexport const VIDEO_PLAYER_EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n \"error\",\n]\n\nconst formatDuration = (time: number) => {\n const seconds = Math.floor(time % 60)\n const minutes = Math.floor(time / 60) % 60\n const hours = Math.floor(time / 3600)\n if (hours === 0) {\n return `${minutes}:${leadingZeroFormatter.format(seconds)}`\n } else {\n return `${hours}:${leadingZeroFormatter.format(\n minutes\n )}:${leadingZeroFormatter.format(seconds)}`\n }\n}\n\nexport default Vue.extend({\n name: \"EVideoPlayer\",\n components: {\n ESpinner,\n EZoomable,\n },\n props: {\n targetTimestamp: {\n type: [String, Date],\n default: undefined,\n },\n sources: {\n type: [Array, String] as PropType<VideoSource[] | string>,\n required: true,\n },\n videoListeners: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n videoOptions: {\n type: Object as PropType<Partial<HTMLVideoElement> & { poster: string }>,\n default: () => ({}),\n },\n isHls: {\n type: Boolean,\n default: false,\n },\n streamingToken: {\n type: String,\n default: \"\",\n },\n pauseOnClick: {\n type: Boolean,\n default: true,\n },\n isHlsLoading: {\n type: Boolean,\n default: false,\n },\n isPlaying: {\n type: Boolean,\n default: false,\n },\n isZoomable: {\n type: Boolean,\n default: false,\n },\n zoomableIgnorePointerEvents: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n playPauseAnimation: {\n type: Boolean,\n default: true,\n },\n disablePlayPauseAnimation: {\n type: Boolean,\n default: false,\n },\n isWebRtc: {\n type: Boolean,\n default: false,\n },\n withColoredLoader: {\n type: Boolean,\n default: false,\n },\n loaderSize: {\n type: String,\n default: \"7xl\",\n },\n withOverlayOnBackground: {\n type: Boolean,\n default: false,\n },\n fallbackSrc: {\n type: String,\n default: \"\",\n },\n hlsOptions: {\n type: Object as PropType<Partial<HlsConfig>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n playing: false,\n percentagePlayed: 0,\n videoLength: \"0:00\",\n duration: 0,\n videoDuration: 0,\n currentTime: \"0:00\",\n realtime: 0,\n isScrubbing: false,\n wasPaused: false,\n isFullscreen: false,\n isFinished: false,\n isLoading: true,\n isError: false,\n player: new Hls(),\n playbackRetries: 0,\n preloadedSeconds: 0,\n preloadedInterval: {} as unknown as {\n start: string\n end: string\n },\n }\n },\n computed: {\n posterUrl(): string {\n return (\n this.videoOptions as Partial<HTMLVideoElement> & { poster: string }\n )?.poster\n },\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\n },\n hasStartedOrFinished(): boolean {\n return (\n (this.isFinished || this.realtime <= 0.1) &&\n !this.isLoading &&\n !this.isLooped()\n )\n },\n withControls() {\n const videoOptions = this.videoOptions as Partial<HTMLVideoElement>\n\n return videoOptions?.controls === false ? \"hide\" : \"\"\n },\n },\n watch: {\n isPlaying: {\n immediate: true,\n handler(value) {\n this.togglePlay()\n\n if (!this.isHls) {\n return\n }\n if (value) {\n this.$emit(\"hls-play\")\n } else {\n this.$emit(\"hls-pause\")\n }\n },\n },\n preloadedSeconds(val) {\n this.preloadedInterval = {\n start: moment(this.targetTimestamp).format(),\n end: moment(this.targetTimestamp).add(val, \"seconds\").format(),\n }\n this.$emit(\"preloaded-interval\", this.preloadedInterval)\n },\n targetTimestamp: {\n immediate: true,\n handler(value) {\n if (!this.isHls) {\n return\n }\n const player = this.$refs.player as HTMLVideoElement\n const start = this.preloadedInterval?.start\n const end = this.preloadedInterval?.end\n\n if (!(start && end)) {\n return\n }\n\n const isTargetTimestampAvailable = moment(value).isBetween(\n moment(start),\n moment(end),\n undefined,\n \"[]\"\n )\n\n player.currentTime = 0\n if (!isTargetTimestampAvailable) {\n this.initHls()\n }\n },\n },\n },\n mounted() {\n if (this.isHls) {\n this.initHls()\n }\n this.bindEvents()\n this.initializePlayer()\n this.initializeFullscreenListeners()\n },\n beforeDestroy() {\n this.unbindEvents()\n this.destroyPlayer()\n this.removeFullscreenListeners()\n },\n\n methods: {\n initHls(src = \"\") {\n const playerRef = this.$refs.player as HTMLVideoElement\n const videoSource = this.sources[0] as VideoSource\n if (this.player?.stopLoad) {\n this.player.stopLoad()\n }\n if (Hls.isSupported()) {\n this.isLoading = true\n this.player = new Hls({\n startPosition: 0,\n xhrSetup: (xhr) => {\n if (this.streamingToken) {\n xhr.setRequestHeader(\n \"Authorization\",\n `Bearer ${this.streamingToken}`\n )\n }\n },\n ...this.hlsOptions,\n }) as Hls\n this.player?.loadSource(src || videoSource.src)\n this.player?.attachMedia(playerRef as HTMLVideoElement)\n this.player?.on(Hls.Events.MANIFEST_PARSED, (_, manifest) => {\n const firstLevelDetails =\n manifest.levels[manifest.firstLevel]?.details\n const startOffset = firstLevelDetails?.startTimeOffset\n playerRef.currentTime = startOffset || 0\n\n if (this.playing) {\n playerRef.play()\n }\n })\n this.player?.on(Hls.Events.ERROR, this.handleHlsError)\n }\n },\n onContainerClick() {\n if (this.pauseOnClick) {\n this.togglePlay()\n }\n },\n handle404Error() {\n if (this.isWebRtc) {\n return\n }\n this.isError = true\n this.isLoading = false\n this.playing = false\n },\n handleHlsError(_: Events.ERROR, data: ErrorData) {\n if (!data.fatal) {\n return\n }\n\n this.$emit(\"hls-error\", data)\n\n const isNetworkError = data.type === Hls.ErrorTypes.NETWORK_ERROR\n const isMediaError = data.type === Hls.ErrorTypes.MEDIA_ERROR\n const isNotFoundError =\n isNetworkError && data.networkDetails?.status === 404\n const playerRef = this.$refs.player as HTMLVideoElement\n\n const shouldAttemptFallback = () =>\n this.fallbackSrc && playerRef?.currentSrc !== this.fallbackSrc\n\n const attemptFallback = () => this.initHls(this.fallbackSrc)\n\n const handleError = () => {\n if (shouldAttemptFallback()) {\n attemptFallback()\n\n return\n }\n this.player.destroy()\n if ((this.videoListeners as { error?: () => void }).error) {\n // @ts-ignore\n this.videoListeners.error()\n } else {\n this.handle404Error()\n }\n }\n\n if (isNotFoundError) {\n handleError()\n\n return\n }\n\n if (isNetworkError) {\n console.error(\"A network error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.startLoad()\n }\n\n return\n }\n\n if (isMediaError) {\n console.error(\"A media error occurred:\", data)\n if (shouldAttemptFallback()) {\n attemptFallback()\n } else {\n this.player.recoverMediaError()\n }\n }\n\n handleError()\n },\n bindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.addEventListener(event, () => this.bindVideoEvent(event), true)\n })\n },\n onProgress() {\n const player = this.$refs.player as HTMLVideoElement\n\n if (player && player.buffered.length > 0) {\n try {\n this.preloadedSeconds = player.buffered.end(\n player.buffered.length - 1\n )\n } catch (e) {\n console.error(\"Error while fetching buffered end time:\", e)\n }\n } else {\n // Handle the case where no video data has been buffered\n console.log(\"No video data has been buffered yet.\")\n }\n },\n unbindEvents() {\n const player = this.$refs.player as HTMLVideoElement\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n player.removeEventListener(\n event,\n () => this.bindVideoEvent(event),\n true\n )\n })\n },\n bindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n if (!timelineContainer) {\n return\n }\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player?.currentTime / player?.duration) * 100\n timelineContainer?.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player })\n },\n initializePlayer() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n if (playerRef.autoplay) {\n this.setPlaying(true)\n }\n document.addEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n document.addEventListener(\"keydown\", this.handleKeyDown)\n },\n destroyPlayer() {\n if (this.player) {\n this.player.stopLoad()\n this.player.destroy()\n }\n window.removeEventListener(\"keydown\", this.handleKeyDown)\n document.removeEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n },\n removeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.removeEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.removeEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.removeEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n initializeFullscreenListeners() {\n const doc = document as FullscreenDocument\n if (\n doc.fullscreenEnabled ||\n doc.webkitFullscreenEnabled ||\n doc.mozFullScreenEnabled ||\n doc.msFullscreenEnabled\n ) {\n doc.addEventListener(\"fullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n doc.addEventListener(\"mozfullscreenchange\", this.handleFullscreenChange)\n doc.addEventListener(\"MSFullscreenChange\", this.handleFullscreenChange)\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n handleFullscreenChange() {\n const doc = document as FullscreenDocument\n this.isFullscreen =\n !!doc.fullscreenElement ||\n !!doc.mozFullScreenElement ||\n !!doc.webkitFullscreenElement ||\n !!doc.msFullscreenElement ||\n (window.innerWidth == screen.width &&\n window.innerHeight == screen.height)\n },\n\n isLooped() {\n const player = this.$refs.player as HTMLVideoElement\n\n return player.loop\n },\n handleScrubbingOnMouseEnd(e: MouseEvent) {\n if (this.isScrubbing) {\n this.toggleScrubbing(e)\n }\n },\n handleEnded() {\n this.isFinished = true\n this.playing = false\n },\n handleLoading() {\n this.isLoading = false\n },\n async play() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n try {\n await playerRef.play()\n this.setPlaying(true)\n } catch (error) {\n console.error(error)\n this.playbackRetries += 1\n if (this.isHls && this.playbackRetries < 3) {\n this.initHls()\n }\n }\n },\n pause() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n playerRef.pause()\n this.setPlaying(false)\n },\n async togglePlay() {\n if (this.playing) {\n this.pause()\n } else {\n await this.play()\n }\n },\n setPlaying(state: boolean) {\n this.playing = state\n },\n seekToPercentage(percentage: number) {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const currentTime = (percentage / 100) * playerRef.duration\n playerRef.currentTime = currentTime\n },\n convertTimeToDuration(seconds: number) {\n // @ts-ignore\n return [parseInt((seconds / 60) % 60, 10), parseInt(seconds % 60, 10)]\n .join(\":\")\n .replace(/\\b(\\d)\\b/g, \"0$1\")\n },\n\n closeFullscreenMode() {\n if (document.fullscreenElement) {\n exitFullScreen().then(() => {\n this.isFullscreen = false\n })\n\n this.isFullscreen = false\n }\n },\n openFullscreenMode() {\n const element = this.$refs.videoContainer as HTMLDivElement\n if (element) {\n makeFullScreen(element).then(() => {\n this.isFullscreen = true\n })\n this.isFullscreen = true\n }\n },\n toggleFullscreenMode() {\n if (this.isFullscreen) {\n this.closeFullscreenMode()\n } else {\n this.openFullscreenMode()\n }\n },\n\n getDuration() {\n const player = this.$refs.player as HTMLVideoElement\n this.videoLength = formatDuration(player.duration)\n this.videoDuration = player.duration\n },\n handleTimeUpdate() {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (!player || !timelineContainer) {\n return\n }\n this.currentTime = formatDuration(player.currentTime)\n this.realtime = player.currentTime\n const percent = Number(this.realtime) / Number(this.videoDuration)\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n },\n handleTimelineUpdate(e: MouseEvent) {\n const player = this.$refs.player as HTMLVideoElement\n if (!document.body.contains(player)) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n timelineContainer.style.setProperty(\n \"--preview-position\",\n percent.toString()\n )\n if (this.isScrubbing) {\n e.preventDefault()\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n }\n },\n skip(duration = 5) {\n const player = this.$refs.player as HTMLVideoElement\n\n player.currentTime += duration\n },\n async toggleScrubbing(e: MouseEvent) {\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const videoContainer = this.$refs.videoContainer as HTMLDivElement\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n this.isScrubbing = (e.buttons & 1) === 1\n videoContainer.classList.toggle(\"scrubbing\", this.isScrubbing)\n if (this.isScrubbing) {\n this.wasPaused = player.paused\n await player.pause()\n this.handleTimelineUpdate(e)\n\n return\n }\n this.realtime = percent * this.videoDuration\n player.currentTime = percent * this.videoDuration\n if (this.wasPaused) {\n return\n }\n const playPromise = player.play()\n // @see issue: https://developer.chrome.com/blog/play-request-was-interrupted/\n if (playPromise !== undefined) {\n playPromise\n .then(() => this.handleTimelineUpdate(e))\n .catch(console.error)\n }\n },\n\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\") {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n this.togglePlay()\n break\n case \"k\":\n this.togglePlay()\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n case \"f\":\n this.openFullscreenMode()\n this.isFullscreen = true\n\n break\n }\n },\n },\n})\n","import * as d3 from \"d3\"\nimport { TimelineAxis, TimelineAxesConfig } from \"@/types\"\n\nconst getFormattedDay = (d: Date) => {\n const day = d3.utcFormat(\"%_d\")(d)\n const daySuffixes: { [key: string]: string } = {\n [\"1\"]: \"st\",\n [\"2\"]: \"nd\",\n [\"3\"]: \"rd\",\n }\n\n const daySuffix = daySuffixes[day.charAt(1)] || \"th\"\n\n return `${day}${daySuffix}`\n}\n\nconst getFormattedDayNoEndOfMonth = (d: Date) => {\n const nextDay = new Date(\n Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1)\n )\n const isEndOfTheMonth = nextDay.getUTCDate() === 1\n\n if (isEndOfTheMonth) {\n return \"\"\n }\n\n return d3.utcFormat(\"%-d\")(d)\n}\n\nconst getFormattedHour = (d: Date) => {\n return [\"0\", \" 0\", \"00\"].includes(d3.utcFormat(\"%H\")(d))\n ? \"\"\n : `${d3.utcFormat(\"%H\")(d)}h`\n}\n\nconst getFormattedHourMinute = (d: Date) => {\n const HH_MM = d3.utcFormat(\"%H:%M\")(d)\n\n return HH_MM === \"00:00\" ? \"\" : HH_MM\n}\n\nconst getFormattedMinuteSecond = (d: Date) => {\n return d3.utcFormat(\"%M:%S\")(d)\n}\n\nconst getFormattedOverviewMinuteSecond = (d: Date) => {\n const HH_MM_SS = d3.utcFormat(\"%Hh%Mm\")(d)\n\n return `${HH_MM_SS}`\n}\n\nconst getFormattedOverviewHour = (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n}\n\nconst getFormattedDayHourMinute = (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n}\n\nconst filterHourDivisibleBy = (n: number) => {\n return (d: Date) => {\n const hour = d3.utcFormat(\"%H\")(d)\n const minute = d3.utcFormat(\"%M\")(d)\n\n return !(minute === \"00\" && Number.parseInt(hour) % n === 0)\n }\n}\n\nconst filterMinutesDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n\n return Number.parseInt(minute) % n !== 0\n }\n}\n\nconst filterMinutesSecondsDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n const second = d3.utcFormat(\"%S\")(d)\n\n return Number.parseInt(minute) % n !== 0 && Number.parseInt(second) === 0\n }\n}\n\n/**\n * Precision of the timeline ticks\n * (measured in Hours per Pixel)\n */\nconst Precision = {\n _10_seconds: 0.000025,\n _20_seconds: 0.0001,\n _30_seconds: 0.00015,\n _1_minute: 0.0003,\n _2_minutes: 0.00075,\n _5_minutes: 0.002,\n _15_minutes: 0.005,\n _30_minutes: 0.01,\n _1_hour: 0.025,\n _2_hours: 0.05,\n _3_hours: 0.1,\n _4_hours: 0.15,\n _6_hours: 0.25,\n _1_day: 1,\n _2_days: 2,\n _1_month: 8,\n _1_month_abbr: 13,\n _1_month_letter: 22,\n _3_months: 33,\n _2_year: 48,\n _5_years: 120,\n _20_years: 480,\n _75_years: 1800,\n _300_years: 7200,\n infinity: Infinity,\n}\n\n/**\n * Map of formats and ticks intervals for the Timeline axis(s) by type.\n */\nexport const defaultAxesConfig: TimelineAxesConfig = {\n [TimelineAxis.overview]: [\n {\n precision: Precision._30_seconds,\n interval: d3.utcMinute.every(2),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.every(5),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(10),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(20),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcHour,\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcHour.every(2),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(6),\n format: (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n },\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(12),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(24),\n format: (d: Date) => {\n const day = getFormattedDay(d)\n const abbreviatedMonth = d3.utcFormat(\"%b\")(d)\n\n return `${abbreviatedMonth} ${day}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: (d: Date) => {\n const startOfTheYear = d.getUTCMonth() === 0 && d.getUTCDate() === 1\n const format = startOfTheYear ? \"%Y – %B\" : \"%B\"\n\n return d3.utcFormat(format)(d)\n },\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear.every(1),\n format: \"%Y\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(5),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(20),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(75),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(300),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth.every(12),\n format: \"%Y\",\n },\n ],\n [TimelineAxis.detailed]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond.every(10),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond\n .every(20)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond\n .every(30)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.filter(filterMinutesDivisibleBy(5)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(2)?.filter(filterMinutesDivisibleBy(10)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(5)?.filter(filterMinutesDivisibleBy(20)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(15)?.filter(filterHourDivisibleBy(1)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(30)?.filter(filterHourDivisibleBy(2)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcHour.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(2)?.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(3)?.filter(filterHourDivisibleBy(12)),\n format: getFormattedHour,\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour.every(4),\n format: getFormattedHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(6),\n format: getFormattedHour,\n },\n {\n precision: Precision._1_day,\n interval: d3.utcDay,\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._2_days,\n interval: d3.utcDay.every(2),\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._1_month,\n interval: d3.utcMonth,\n format: \"%B\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcMonth,\n format: \"%b\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcMonth,\n format: (d: Date) => d3.utcFormat(\"%B\")(d).charAt(0),\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth.every(3),\n format: \"Q%q\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcMonth.every(6),\n format: \"Q%q\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"%Y\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(4),\n format: \"%Y\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(25),\n format: \"%Y\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"%Y\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n [TimelineAxis.detailedBackground]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond,\n format: \"\",\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond.every(5),\n format: \"\",\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond.every(10),\n format: \"\",\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcSecond.every(20),\n format: \"\",\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcSecond.every(30),\n format: \"\",\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute,\n format: \"\",\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(3),\n format: \"\",\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(6),\n format: \"\",\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcMinute.every(15),\n format: \"\",\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcMinute.every(30),\n format: \"\",\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcMinute.every(120),\n format: \"\",\n },\n {\n precision: Precision._1_day,\n interval: d3.utcHour.every(8),\n format: \"\",\n },\n {\n precision: Precision._2_days,\n interval: d3.utcHour.every(12),\n format: \"\",\n },\n {\n precision: Precision._1_month,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const fifthOfMonth = Math.ceil(daysInMonth / 5) // 1/4 of the month\n\n return (\n dayOfMonth === fifthOfMonth ||\n dayOfMonth === 2 * fifthOfMonth ||\n dayOfMonth === 3 * fifthOfMonth ||\n dayOfMonth === 4 * fifthOfMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const quarterOfTheMonth = Math.ceil(daysInMonth / 4) // 1/4 of the month\n\n return (\n dayOfMonth === quarterOfTheMonth ||\n dayOfMonth === 2 * quarterOfTheMonth ||\n dayOfMonth === 3 * quarterOfTheMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const halfOfTheMonth = Math.ceil(daysInMonth / 2) // 1/4 of the month\n\n return dayOfMonth === halfOfTheMonth\n }),\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision._2_year,\n interval: d3.utcYear,\n format: \"\",\n },\n {\n precision: Precision._5_years,\n interval: d3.utcYear.every(2),\n format: \"\",\n },\n {\n precision: Precision._20_years,\n interval: d3.utcYear.every(5),\n format: \"\",\n },\n {\n precision: Precision._75_years,\n interval: d3.utcYear.every(20),\n format: \"\",\n },\n {\n precision: Precision._300_years,\n interval: d3.utcYear.every(100),\n format: \"\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear.every(500),\n format: \"\",\n },\n ],\n}\n","import { DirectiveOptions } from \"vue\"\n\nexport interface ObservedElement extends HTMLElement {\n __resizeObserver__?: ResizeObserver\n}\n\nconst ResizeObserverDirective: DirectiveOptions = {\n bind(el, binding) {\n const { value: callback } = binding\n\n if (typeof callback !== \"function\") {\n console.error(\"Invalid callback function provided to v-resize-observer\")\n\n return\n }\n\n const observer: ResizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n if (!entries[0]) {\n return\n }\n\n callback(entries[0])\n }\n )\n\n observer.observe(el)\n ;(el as ObservedElement).__resizeObserver__ = observer\n },\n unbind(el) {\n if ((el as ObservedElement).__resizeObserver__) {\n ;(el as ObservedElement).__resizeObserver__!.disconnect()\n delete (el as ObservedElement).__resizeObserver__\n }\n },\n}\n\nexport default ResizeObserverDirective\n","import ResizeObserverDirective from \"@/directives/resize-observer\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n]\n\nexport { ResizeObserverDirective }\n","\nimport Vue, { PropType } from \"vue\"\nimport { TimelineMilestoneEvent } from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nexport const milestoneClasses = {\n milestone: \"e-tl-milestone\",\n milestoneBullet: \"e-tl-milestone--bullet\",\n milestoneDot: \"e-tl-milestone--dot\",\n milestoneContent: \"e-tl-milestone-content\",\n milestoneLine: \"e-tl-milestone-line\",\n milestonesContainer: \"e-tl-milestones\",\n milestoneHovered: \"e-tl-milestone--hovered\",\n milestoneSelected: \"e-tl-milestone--selected\",\n milestoneLabel: \"e-tl-milestone-label\",\n milestoneDotContainer: \"e-tl-milestone-dot-container\",\n milestoneDotLine: \"e-tl-milestone-dot-line\",\n milestoneDotDot: \"e-tl-milestone-dot-dot\",\n milestoneDotHovered: \"e-tl-milestone-dot--hovered\",\n}\n\nexport default Vue.extend({\n name: \"ETimelineMilestone\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n milestone: {\n type: Object as PropType<TimelineMilestoneEvent>,\n required: true,\n },\n size: {\n type: Number,\n default: 18,\n },\n borderColor: {\n type: String,\n default: \"#eee\",\n },\n backgroundColor: {\n type: String,\n default: \"#aaa\",\n },\n borderWidth: {\n type: Number,\n default: 2,\n },\n transitionDuration: {\n type: Number,\n default: 500,\n },\n dot: {\n type: Boolean,\n default: false,\n },\n dotSize: {\n type: Number,\n default: 8,\n },\n lineWidth: {\n type: Number,\n default: 2,\n },\n lineHeight: {\n type: Number,\n default: 28,\n },\n },\n data() {\n return {\n milestoneClasses,\n timeouts: [] as number[],\n isInitialRender: true,\n isMouseOver: false,\n }\n },\n computed: {\n transitionStyles(): Record<string, any> {\n if (this.isInitialRender) {\n return {}\n }\n\n return {\n transition: `transform ${this.transitionDuration}ms, width ${this.transitionDuration}ms, height ${this.transitionDuration}ms, padding ${this.transitionDuration}ms, border-radius ${this.transitionDuration}ms`,\n }\n },\n sizeStyles(): Record<string, any> {\n if (this.dot) {\n return {}\n }\n\n return {\n width: `${this.size}px`,\n height: `${this.size}px`,\n }\n },\n positionStyles(): Record<string, any> {\n if (!(this.dot && this.isMouseOver)) {\n return {}\n }\n\n return {\n transform: `translateY(calc(-100% - ${this.lineHeight}px))`,\n }\n },\n styles(): Record<string, any> {\n return {\n ...this.sizeStyles,\n ...this.positionStyles,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n borderWidth: `${this.borderWidth}px`,\n borderStyle: \"solid\",\n ...this.transitionStyles,\n }\n },\n contentStyles(): Record<string, any> {\n return this.transitionStyles\n },\n computedTransitionDuration(): number {\n if (this.isInitialRender) {\n return 0\n }\n\n return this.transitionDuration\n },\n labelStyles(): Record<string, any> {\n return {\n transition: `opacity ${this.computedTransitionDuration}ms`,\n }\n },\n dotContainerStyles(): Record<string, any> {\n return {\n top: this.isMouseOver\n ? `calc(100% - ${this.borderWidth}px)`\n : `calc(50% + ${this.dotSize / 2}px)`,\n height: `calc(${this.lineHeight}px + ${this.dotSize}px)`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n lineStyles(): Record<string, any> {\n return {\n bottom: `${this.dotSize / 2}px`,\n left: `calc(50% - ${this.lineWidth}px / 2)`,\n width: `${this.lineWidth}px`,\n height: this.isMouseOver ? `${this.lineHeight}px` : \"0\",\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n dotStyles(): Record<string, any> {\n return {\n top: `${this.lineHeight}px`,\n left: `calc(50% - ${this.dotSize}px / 2)`,\n width: `${this.dotSize}px`,\n height: `${this.dotSize}px`,\n backgroundColor: this.borderColor,\n transition: `${this.computedTransitionDuration}ms`,\n }\n },\n },\n mounted() {\n this.$nextTick(() => {\n if (!this.dot) {\n this.onMilestoneMouseOver()\n this.onMilestoneMouseLeave()\n }\n this.isInitialRender = false\n })\n },\n methods: {\n onMilestoneMouseOver(e?: MouseEvent) {\n this.isMouseOver = true\n\n if (this.dot) {\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n const contentFirstChild = content.children[0] as HTMLElement | undefined\n if (!contentFirstChild) {\n return\n }\n\n const contentBox = contentFirstChild.getBoundingClientRect()\n const existingTimeoutId = container.dataset.timeoutId\n if (existingTimeoutId) {\n clearTimeout(Number(existingTimeoutId))\n container.dataset.timeoutId = \"\"\n }\n\n if (!container.dataset.initialWidth) {\n container.dataset.initialWidth = container.style.width\n }\n if (!container.dataset.initialHeight) {\n container.dataset.initialHeight = container.style.height\n }\n if (!container.dataset.initialContentWidth) {\n container.dataset.initialContentWidth = String(contentBox.width)\n }\n if (!container.dataset.initialContentHeight) {\n container.dataset.initialContentHeight = String(contentBox.height)\n }\n\n container.dataset.transitionStart = String(Date.now())\n container.style.width = container.dataset.initialContentWidth + \"px\"\n container.style.height = container.dataset.initialContentHeight + \"px\"\n container.style.borderRadius = \"0.5em\"\n container.classList.add(milestoneClasses.milestoneHovered)\n content.style.opacity = \"1\"\n content.style.width = container.dataset.initialContentWidth + \"px\"\n content.style.height = container.dataset.initialContentHeight + \"px\"\n },\n onMilestoneMouseMove() {\n this.timeouts.forEach((timeoutId) => clearTimeout(timeoutId))\n this.isMouseOver = true\n },\n onMilestoneMouseLeave(e?: MouseEvent) {\n if (this.dot) {\n this.timeouts.push(\n setTimeout(() => {\n this.isMouseOver = false\n }, this.transitionDuration + 100) as unknown as number\n )\n\n return\n }\n\n const container = (e?.target as HTMLElement) || this.$refs.container\n if (!container) {\n return\n }\n\n container.style.width = container.dataset.initialWidth || \"\"\n container.style.height = container.dataset.initialHeight || \"\"\n container.style.borderRadius = \"10em\"\n const content = container.children[0] as HTMLElement | undefined\n if (!content) {\n return\n }\n\n content.style.width = \"0\"\n content.style.height = \"0\"\n content.style.opacity = \"0\"\n const transitionDuration =\n Date.now() - Number(container.dataset.transitionStart)\n const timeoutDuration =\n transitionDuration > this.transitionDuration\n ? this.transitionDuration\n : transitionDuration\n const timeoutId = setTimeout(() => {\n container.classList.remove(milestoneClasses.milestoneHovered)\n container.dataset.timeoutId = \"\"\n }, timeoutDuration)\n container.dataset.timeoutId = String(timeoutId)\n this.timeouts.push(timeoutId as unknown as number)\n },\n onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent) {\n this.$emit(\"milestone-click\", milestone)\n },\n },\n})\n","\nimport * as d3 from \"d3\"\nimport { Axis, D3ZoomEvent, ZoomBehavior } from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { defaultAxesConfig } from \"@/components/ETimeline.config\"\nimport {\n TimelineAxesConfig,\n TimelineAxis,\n TimelineChartType,\n TimelineCountEvent,\n TimelineEvent,\n TimelineEventsByType,\n TimelineEventsGroup,\n TimelineInterval,\n TimelineIntervalChangeTrigger,\n TimelineMarker,\n TimelinePrecision,\n TimelineTicksConfig,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\nimport { debounce, getRandomChars } from \"@/utils\"\nimport ETimelineMilestone, {\n milestoneClasses,\n} from \"@/components/ETimelineMilestone.vue\"\n\nconst classes = {\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n eventRect: \"event-rect\",\n eventBarContainer: \"event-bar-container\",\n eventBarContainerHovered: \"event-bar-container--hovered\",\n eventBarContainerSelected: \"event-bar-container--selected\",\n eventBar: \"event-bar\",\n eventBarHoverZone: \"event-bar-hover-zone\",\n eventBarCap: \"event-bar-cap\",\n eventRectText: \"event-rect-text\",\n eventRectHovered: \"event-rect--hovered\",\n eventRectSelected: \"event-rect--selected\",\n labelGroup: \"label-g\",\n labelBg: \"label-bg\",\n labelBgFill: \"label-bg-fill\",\n labelText: \"label-text\",\n loadingIndicator: \"loading-indicator\",\n xAxis: \"x-axis\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n marker: \"marker\",\n markerLabel: \"marker-label\",\n markerLine: \"marker-line\",\n markerDragged: \"marker--dragged\",\n milestone: \"milestone\",\n milestoneLine: \"milestone-line\",\n milestonesContainer: \"milestones\",\n milestoneHovered: \"milestone--hovered\",\n barChartGroup: \"bar-chart-group\",\n lineGraphGroup: \"line-graph-group\",\n lineGraphGroupLabel: \"line-graph-group-label\",\n lineGraphPath: \"line-graph-path\",\n lineGraphHoverZone: \"line-graph-hover-zone\",\n lineGraphDot: \"line-graph-dot\",\n curtain: \"curtain\",\n forbiddenInterval: \"forbidden-interval\",\n}\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ETimelineMilestone,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n xAxesConfig: {\n type: Object as PropType<TimelineAxesConfig>,\n default: () => defaultAxesConfig,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: String,\n default: undefined,\n },\n endDate: {\n type: String,\n default: undefined,\n },\n selectedTimestamp: {\n type: String,\n default: undefined,\n },\n showEventTooltip: {\n type: Boolean,\n default: true,\n },\n disableZoom: {\n type: Boolean,\n default: false,\n },\n insertZerosAtInterval: {\n type: String as PropType<TimelinePrecision>,\n default: undefined,\n },\n flattenLineGraphEnds: {\n type: Boolean,\n default: true,\n },\n curtains: {\n type: Boolean,\n default: false,\n },\n showLabels: {\n type: Boolean,\n default: true,\n },\n rectMinWidth: {\n type: Number,\n default: 1,\n },\n barHeight: {\n type: Number,\n default: 18,\n },\n barYPadding: {\n type: Number,\n default: 0,\n },\n barXPadding: {\n type: Number,\n default: 0,\n },\n chartMinHeight: {\n type: Number,\n default: 60,\n },\n chartMinLabelHeight: {\n type: Number,\n default: 18,\n },\n minZoom: {\n type: Number,\n default: 0.0001,\n },\n maxZoom: {\n type: Number,\n default: 850_000,\n },\n minDate: {\n type: String,\n default: undefined,\n },\n maxDate: {\n type: String,\n default: undefined,\n },\n cursorTimestamp: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n selectedClass: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n panOnDateClick: {\n type: Boolean,\n default: false,\n },\n panTransitionDuration: {\n type: Number,\n default: 800,\n },\n selectedDate: {\n type: String,\n default: \"\",\n },\n autoResize: {\n type: Boolean,\n default: true,\n },\n markers: {\n type: Array as PropType<Array<TimelineMarker>>,\n default: () => [],\n },\n stickyMarkers: {\n type: Boolean,\n default: true,\n },\n fitMarkersOnChange: {\n type: Boolean,\n default: false,\n },\n zoomToIntervalTransitionDuration: {\n type: Number,\n default: 800,\n },\n zoomToBoundariesTransitionDuration: {\n type: Number,\n default: 0,\n },\n milestoneBulletSize: {\n type: Number,\n default: 18,\n },\n milestonesFirst: {\n type: Boolean,\n default: true,\n },\n forbiddenIntervals: {\n type: Array as PropType<TimelineInterval[]>,\n default: () => [],\n },\n forbiddenIntervalColor: {\n type: String,\n default: \"#ddd\",\n },\n focusedInterval: {\n type: [Object, undefined] as PropType<TimelineInterval | undefined>,\n default: undefined,\n },\n locked: {\n type: Boolean,\n default: false,\n },\n timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n stopClickPropagation: {\n type: Boolean,\n default: false,\n },\n tooltipPosition: {\n type: String,\n default: \"top\",\n validator: (value: string) => [\"top\", \"bottom\"].includes(value),\n },\n },\n data() {\n return {\n tooltip: null as unknown as HTMLElement,\n cursor: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n wrapperDiv: null as unknown as HTMLElement,\n selectedTimestampCursor: null as unknown as HTMLElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axesContainer: null as unknown as d3.Selection<\n SVGGElement,\n any,\n any,\n any\n >,\n xAxes: {} as unknown as Record<TimelineAxis, Axis<Date>>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n initialTimeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n zoomBehavior: null as unknown as ZoomBehavior<SVGSVGElement, unknown>,\n isMouseDown: false,\n axisHeight: 22,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n isHoveringTimeline: false,\n hoveredTimestamp: null as unknown as string,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n lastTransform: { x: 0, k: 1 },\n transformDiff: { translation: 0, scale: 1 },\n yScale: null as unknown as d3.ScaleLinear<any, any>,\n hoveredCounts: [] as { count: number; type: string }[],\n countsByTimestamp: {} as Record<string, Record<string, number>>,\n dotsByTimestamp: {} as Record<\n string,\n d3.Selection<SVGCircleElement, any, any, any>[]\n >,\n visibleFrom: null as unknown as Date,\n visibleTo: null as unknown as Date,\n curtainHandleWidth: 5,\n leftCurtainWidth: 50,\n rightCurtainWidth: 50,\n isHoveringCurtain: false,\n isDraggingCurtain: false,\n characterWidth: 7.5,\n textPadding: 5,\n debouncedOnResize: (() => {}) as Function,\n isFirstPaint: true,\n timeouts: [] as number[],\n groupsVisibility: {} as Record<string, boolean>,\n markersPositions: {} as Record<\n string,\n { position: number; isHidden: boolean }\n >,\n markersDragBehavior: null as unknown as d3.DragBehavior<\n HTMLElement,\n TimelineMarker,\n any\n >,\n initialMarkerDragMouseOffset: 0,\n selectedMilestoneId: null as any,\n isInitialized: false,\n lastValidTransform: d3.zoomIdentity,\n lastPanTransform: d3.zoomIdentity,\n isZoomingInterval: false,\n defs: {\n transparencyGradient: \"transparency-gradient\" + getRandomChars(2),\n transparencyGradientLight:\n \"transparency-gradient-light\" + getRandomChars(2),\n loadingGradient: \"loading-gradient\" + getRandomChars(2),\n stripedPattern: \"stripedPattern\" + getRandomChars(2),\n },\n }\n },\n computed: {\n combinedBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (this.getBarGroupHeight(g) || this.barChartHeight),\n 0\n )\n },\n combinedBottomBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) => acc + (g.bottom ? this.getBarGroupHeight(g) : 0),\n 0\n )\n },\n combinedMilestonesHeight(): number {\n return Object.values(this.milestonesGroups).reduce(\n (acc, g) => acc + (g.height || this.barChartHeight),\n 0\n )\n },\n milestonesYOffset(): number {\n return this.milestonesFirst\n ? 0\n : this.combinedBarsHeight -\n this.combinedBottomBarsHeight +\n (this.hasChart ? this.chartHeight : 0)\n },\n chartsYOffset(): number {\n return this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0\n },\n barsYOffset(): number {\n return (\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0)\n )\n },\n hasMilestones(): boolean {\n return Object.keys(this.milestonesGroups).length > 0\n },\n barChartHeight(): number {\n return this.barHeight + this.barYPadding\n },\n classes(): Record<string, string | Record<string, boolean>> {\n return {\n wrapper: {\n \"e-border-gray-700 e-timeline--dark\": this.dark,\n \"e-border-gray-300\": !this.dark,\n \"e-timeline--dragging\": this.isInteractingWithCurtain,\n },\n background: this.dark ? \"e-bg-gray-900\" : \"e-bg-gray-50\",\n tooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n eventTooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n }\n },\n lineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.lineGraph) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n chartHeight(): number {\n if (!this.showLabels) {\n return this.chartMinHeight\n }\n\n const chartLabelsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n const combinedLabelsHeight = chartLabelsCount * this.barChartHeight\n\n return Math.max(this.chartMinHeight, combinedLabelsHeight)\n },\n barGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (\n !eventsGroup.chartType ||\n [TimelineChartType.bars, TimelineChartType.dots].includes(\n eventsGroup.chartType\n )\n ) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n barChartGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.barChart) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n milestonesGroups(): TimelineEventsByType {\n return Object.entries(this.filteredEventsGroups).reduce(\n (acc, [type, eventsGroup]) => {\n if (eventsGroup.chartType === TimelineChartType.milestones) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n },\n {}\n )\n },\n hasChart(): boolean {\n const chartsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n\n return chartsCount > 0\n },\n labelRectWidth(): number {\n const eventsGroups = Object.values(\n this.eventsGroups\n ) as TimelineEventsGroup[]\n const maxLabelLength = eventsGroups.reduce((acc, eventsGroup) => {\n return Math.max(acc, eventsGroup.label?.length)\n }, 0)\n\n return maxLabelLength * this.characterWidth + 2 * this.textPadding\n },\n combinedXAxesHeight(): number {\n const axesCount = Object.keys(this.xAxesConfig).length - 1\n\n return this.axisHeight * axesCount\n },\n timelineHeight(): number {\n const chartHeight = this.hasChart ? this.chartHeight : 0\n\n return (\n chartHeight +\n this.combinedXAxesHeight +\n this.combinedBarsHeight +\n this.combinedMilestonesHeight\n )\n },\n filteredEventsGroups(): TimelineEventsByType {\n const entries = Object.entries(this.eventsGroups).filter(\n ([type, _group]) => this.getCurrentGroupVisibility(type)\n )\n\n return Object.fromEntries(entries) as TimelineEventsByType\n },\n allEventsSorted(): TimelineEvent[] {\n const flattenedEvents = (\n Object.values(this.filteredEventsGroups) as TimelineEventsGroup[]\n )\n .map((e: TimelineEventsGroup) => e.events)\n .flat()\n\n return this.getSortedEvents(flattenedEvents)\n },\n oldestEvent(): TimelineEvent {\n let oldestEvent\n if (this.allEventsSorted.length > 1) {\n oldestEvent = this.allEventsSorted[0]\n } else {\n const DAY = 86_400_000\n const yesterday = new Date(new Date().getTime() - DAY)\n\n oldestEvent = {\n timestamp: yesterday,\n }\n }\n\n return oldestEvent\n },\n latestEvent(): TimelineEvent {\n let latestEvent\n if (this.allEventsSorted.length > 1) {\n latestEvent = this.allEventsSorted[this.allEventsSorted.length - 1]\n } else {\n const defaultMaxDate = new Date()\n\n latestEvent = {\n timestamp: defaultMaxDate,\n }\n }\n\n return latestEvent\n },\n allLineChartTimestamps(): string[] {\n const allTimestamps = new Set()\n Object.values(this.lineGraphGroups).forEach((group) => {\n group.events.forEach((event) => {\n allTimestamps.add(event.timestamp)\n })\n })\n\n return Array.from(allTimestamps).sort() as unknown as string[]\n },\n placeholderLineChartGroup(): TimelineEvent[] {\n return this.fillTimeGaps(\n this.allLineChartTimestamps.map((timestamp) => ({\n timestamp,\n count: 0,\n }))\n )\n },\n filledGapsLineGraphGroups(): TimelineEventsByType {\n return Object.entries(this.lineGraphGroups).reduce(\n (acc, [type, group]) => {\n return {\n ...acc,\n [type]: {\n ...group,\n events: this.fillEvents(group.events),\n },\n }\n },\n {}\n )\n },\n isInteractingWithCurtain(): boolean {\n return this.isHoveringCurtain || this.isDraggingCurtain\n },\n flattenedCounts(): TimelineCountEvent[] {\n return [\n ...Object.values(this.lineGraphGroups),\n ...Object.values(this.barChartGroups),\n ]\n .map((g) => g.events)\n .flat() as TimelineCountEvent[]\n },\n hiddenGroupsLabels(): Array<string> {\n return Object.entries(this.groupsVisibility).reduce<Array<string>>(\n (acc, [type, isVisible]) => (!isVisible ? [...acc, type] : acc),\n []\n )\n },\n minHoverZone(): number {\n return this.showLabels ? this.labelRectWidth : 0\n },\n sortedMarkers(): TimelineMarker[] {\n if (!this.isInitialized) {\n return []\n }\n\n return [...this.markers].sort((a, b) =>\n new Date(a.timestamp).getTime() > new Date(b.timestamp).getTime()\n ? 1\n : -1\n )\n },\n maxVisibleCount(): number {\n const [visibleStart, visibleEnd] = this.timeScale.domain()\n const filteredFlattenedCounts = this.flattenedCounts.filter((d) => {\n const eventStart = new Date(d.startDate || d.timestamp)\n const eventEnd = new Date(d.endDate || d.timestamp)\n\n return (\n (eventEnd >= visibleStart && eventEnd <= visibleEnd) ||\n (eventStart >= visibleStart && eventStart <= visibleEnd)\n )\n })\n\n return d3.max(filteredFlattenedCounts, (d) => d.count) as number\n },\n },\n watch: {\n dark() {\n this.handleDarkModeChange()\n },\n selectedTimestamp() {\n this.repositionSelectedTimestampCursor()\n },\n markers() {\n this.updateMarkers()\n if (this.fitMarkersOnChange) {\n this.zoomToFitMarkers()\n }\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n eventsGroups() {\n this.updateAndRedrawTimeline()\n },\n cursorTimestamp() {\n if (this.cursorTimestamp) {\n this.hoveredTimestamp = this.cursorTimestamp\n const timestamp = this.tzStringToDate(this.hoveredTimestamp)\n const cursorX = this.timeScale(timestamp)\n this.cursor.style.left = cursorX + \"px\"\n this.isHoveringTimeline = true\n } else {\n this.isHoveringTimeline = false\n }\n },\n selectedDate(date) {\n if (date && !this.locked) {\n this.panToTimestamp(date)\n }\n },\n groupsVisibility() {\n this.updateAndRedrawTimeline()\n },\n forbiddenIntervals() {\n this.updateForbiddenIntervals(true)\n },\n focusedInterval(interval) {\n if (interval && interval?.startDate && interval?.endDate) {\n this.zoomToTargetInterval(interval.startDate, interval.endDate)\n }\n },\n },\n created() {\n this.debouncedOnResize = debounce(this.handleResize, 100)\n },\n mounted() {\n this.initTimeline()\n },\n beforeDestroy() {\n this.clearTimeline()\n document.removeEventListener(\"mouseup\", this.handleDocumentMouseUp)\n },\n methods: {\n updateTimeline() {\n this.initOrUpdateSvg()\n this.initOrUpdateDefs()\n this.updateXAxes()\n this.updateYScale()\n this.updateForbiddenIntervals()\n this.drawEventsGroups()\n this.updateCurtains()\n this.repositionSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.isInitialized = true\n },\n initTimeline(startDate?: string, endDate?: string) {\n this.initRefs()\n\n if (!this.timeline || this.timeline.offsetWidth === 0) {\n this.timeouts.push(\n setTimeout(this.initTimeline, 500) as unknown as number\n )\n\n return\n }\n\n this.initOrUpdateSvg()\n this.initOrUpdateDefs()\n this.initUtcOffset()\n this.initTimeScale(startDate, endDate)\n this.initXAxes()\n this.initYScale()\n this.initZoomBehavior()\n this.drawEventsGroups()\n\n if (this.curtains) {\n this.initCurtains()\n this.emitCurtainChange()\n }\n\n this.initSelectedTimestampCursor()\n this.updateMarkers()\n this.registerEventsListeners()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.initial)\n\n if (this.selectedDate && this.panOnDateClick) {\n this.panToTimestamp(this.selectedDate)\n }\n\n this.isInitialized = true\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.cursor = this.$refs.cursor as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.selectedTimestampCursor = this.$refs.selectedTimestamp as HTMLElement\n this.wrapperDiv = this.$refs.wrapperDiv as HTMLElement\n },\n initOrUpdateSvg() {\n if (!this.svg) {\n this.svg = d3.select(this.timeline).append(\"svg\")\n }\n this.svg\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.timelineHeight)\n },\n initOrUpdateDefs() {\n const defsSelection = this.selectOrAppend({\n parent: this.svg,\n targetId: \"defs-container\",\n targetType: \"defs\"\n })\n\n Object.entries(this.filteredEventsGroups).forEach(\n ([type, eventsGroup]) => {\n const { color, chartType } = eventsGroup\n const gradient = this.selectOrAppend({\n parent: defsSelection,\n targetId: `${this.defs.loadingGradient}-${type}`,\n targetType: \"linearGradient\",\n })\n .attr(\"x1\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"x2\", \"100%\")\n .attr(\"y2\", \"0%\")\n\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"0%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"50%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0.6\")\n gradient\n .append(\"stop\")\n .attr(\"offset\", \"100%\")\n .attr(\"stop-color\", color)\n .attr(\"stop-opacity\", \"0\")\n\n if (\n [TimelineChartType.lineGraph, TimelineChartType.barChart].includes(\n chartType as TimelineChartType\n )\n ) {\n const transparencyGradients = [\n {\n id: this.defs.transparencyGradientLight,\n stop: 38,\n opacity: 0.3,\n },\n {\n id: this.defs.transparencyGradient,\n stop: 130,\n opacity: 0.4,\n },\n ]\n\n transparencyGradients.forEach(({ id, stop, opacity }) => {\n const gradient = this.selectOrAppend({\n parent: defsSelection,\n targetId: `${id}-${type}`,\n targetType: \"linearGradient\",\n })\n .attr(\"x1\", \"0%\")\n .attr(\"x2\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"y2\", \"100%\")\n\n this.selectOrAppend({\n parent: gradient,\n targetId: \"stop-1\",\n targetType: \"stop\",\n })\n .attr(\"offset\", \"0%\")\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", opacity)\n\n this.selectOrAppend({\n parent: gradient,\n targetId: \"stop-2\",\n targetType: \"stop\",\n })\n .attr(\"offset\", `${stop}%`)\n .style(\"stop-color\", color)\n .style(\"stop-opacity\", 0)\n })\n }\n }\n )\n\n const pattern = this.selectOrAppend({\n parent: defsSelection,\n targetId: this.defs.stripedPattern,\n targetType: \"linearGradient\",\n })\n .attr(\"width\", 5)\n .attr(\"height\", 3)\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\"patternTransform\", \"rotate(45)\")\n\n this.selectOrAppend({\n parent: pattern,\n targetId: \"pattern-rect\",\n targetType: \"rect\",\n })\n .attr(\"width\", 1)\n .attr(\"height\", 4)\n .attr(\"transform\", \"translate(0,0)\")\n .attr(\"fill\", this.forbiddenIntervalColor)\n },\n initUtcOffset() {\n const sampleTimestamp =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n this.utcOffset = moment.parseZone(sampleTimestamp).utcOffset()\n },\n initTimeScale(start?: string, end?: string) {\n const startDate =\n start ||\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n end ||\n this.endDate ||\n this.latestEvent.timestamp ||\n this.latestEvent.endDate\n\n this.timeScale = d3\n .scaleTime()\n .domain([this.tzStringToDate(startDate), this.tzStringToDate(endDate)])\n .range([0, this.timeline.offsetWidth])\n this.initialTimeScale = this.timeScale.copy()\n this.updateCurrentTimeScaleDensity()\n },\n initXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.createAxis(axisName as TimelineAxis)\n this.xAxes[axisName as TimelineAxis] = axis\n this.svg\n .append(\"g\")\n .classed(classes.xAxis, true)\n .classed(`${classes.xAxis}-${axisName}`, true)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n this.updateXAxes()\n },\n updateXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.xAxes[axisName as TimelineAxis]\n axis!.tickSizeOuter(0)\n axis!.tickSizeInner(this.timelineHeight)\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n },\n initYScale() {\n this.yScale = d3.scaleLinear().range([this.chartHeight, 0])\n this.updateYScale()\n },\n updateYScale() {\n this.yScale.range([this.chartHeight, 0])\n this.yScale.domain([0, this.maxVisibleCount])\n },\n initZoomBehavior() {\n if (this.disableZoom) {\n return\n }\n\n this.zoomBehavior = d3\n .zoom<SVGSVGElement, unknown>()\n .on(\"zoom\", this.handleZoom)\n .scaleExtent([this.minZoom, this.maxZoom])\n\n this.svg.call(this.zoomBehavior)\n this.svg.call(this.zoomBehavior.transform, d3.zoomIdentity)\n },\n zoomToFitMarkers() {\n const markersTimestamps = this.markers.map((marker) =>\n new Date(marker.timestamp).getTime()\n )\n if (markersTimestamps.length < 2) {\n return\n }\n\n const minTimestamp = Math.min(...markersTimestamps)\n const maxTimestamp = Math.max(...markersTimestamps)\n\n this.zoomToTargetInterval(minTimestamp, maxTimestamp)\n },\n zoomToTargetInterval(start?: string | number, end?: string | number) {\n if (!start || !end) {\n return\n }\n this.isZoomingInterval = true\n const t1 = new Date(start).getTime()\n const t2 = new Date(end).getTime()\n const domainSpan = this.initialTimeScale.domain().map((d) => d.getTime())\n const domainWidth = domainSpan[1] - domainSpan[0]\n const viewportSpan = t2 - t1\n const padding = 0.1 * viewportSpan\n const paddedViewportSpan = viewportSpan + 2 * padding\n let scaleFactor = domainWidth / paddedViewportSpan\n const scaleExtent = this.zoomBehavior.scaleExtent()\n scaleFactor = Math.min(\n Math.max(scaleFactor, scaleExtent[0]),\n scaleExtent[1]\n )\n\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(this.zoomBehavior.scaleTo, scaleFactor)\n .on(\"end\", () => this.translateIntervalIntoView(t1, t2, scaleFactor))\n },\n translateIntervalIntoView(\n minTimestamp: number,\n maxTimestamp: number,\n scaleFactor: number\n ) {\n const scaledMinTimestampPosition = this.timeScale(new Date(minTimestamp))\n const scaledMaxTimestampPosition = this.timeScale(new Date(maxTimestamp))\n const centerPoint =\n (scaledMinTimestampPosition + scaledMaxTimestampPosition) / 2\n const svgCenter = this.svg.node()!.getBoundingClientRect().width / 2\n const translateX = svgCenter - centerPoint\n const currentTransform = d3.zoomTransform(this.svg.node()!)\n this.svg\n .transition()\n .duration(this.zoomToIntervalTransitionDuration / 2)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity\n .translate(currentTransform.x + translateX, currentTransform.y)\n .scale(scaleFactor)\n )\n .on(\"end\", () => {\n this.isZoomingInterval = false\n })\n },\n initSelectedTimestampCursor() {\n this.svg\n .append(\"line\")\n .attr(\"class\", classes.selectedTimestampCursor)\n .style(\"stroke\", \"red\")\n .style(\"stroke-width\", \"1px\")\n .style(\"opacity\", 0)\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", 0)\n this.repositionSelectedTimestampCursor()\n },\n updateMarkers() {\n if (!this.markers.length) {\n return\n }\n const padding = 12\n const overlapThreshold = 200\n this.sortedMarkers.forEach((marker, i, markersArray) => {\n const timestamp =\n typeof marker.timestamp === \"string\"\n ? this.tzStringToDate(marker.timestamp)\n : marker.timestamp\n const markerX = this.timeScale(timestamp)\n\n let isHidden = false\n const position = this.stickyMarkers\n ? Math.max(markerX, i * padding)\n : markerX\n if (i < markersArray.length - 1) {\n const nextMarker = markersArray[i + 1]\n const nextTimestamp =\n typeof nextMarker.timestamp === \"string\"\n ? this.tzStringToDate(nextMarker.timestamp)\n : nextMarker.timestamp\n const nextMarkerX = this.timeScale(nextTimestamp)\n const nextMarkerPosition = this.stickyMarkers\n ? Math.max(nextMarkerX, (i + 1) * padding)\n : markerX\n isHidden = nextMarkerPosition - position < overlapThreshold + padding\n }\n this.markersPositions = {\n ...this.markersPositions,\n [marker.id]: {\n isHidden,\n position,\n },\n }\n })\n this.initMarkersDragBehavior()\n },\n selectOrAppend({\n parent,\n targetId,\n targetType,\n }: {\n parent: d3.Selection\n selector: string\n nodeType: string\n }) {\n let selection = parent.select(`#${targetId}`)\n\n if (selection.empty()) {\n selection = parent.append(targetType).attr(\"id\", targetId)\n }\n\n return selection\n },\n updateAndRedrawTimeline() {\n this.updateTimeline()\n },\n clearTimeline() {\n if (this.svg) {\n this.svg.remove()\n }\n this.countsByTimestamp = {}\n },\n repositionSelectedTimestampCursor() {\n const cursor = this.svg.select(`.${classes.selectedTimestampCursor}`)\n if (!this.selectedTimestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.selectedTimestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor.attr(\"x1\", cursorX).attr(\"x2\", cursorX).style(\"opacity\", 0.5)\n } else {\n cursor.style(\"opacity\", 0)\n }\n\n cursor.attr(\"y2\", this.timelineHeight)\n },\n updateCurrentTimeScaleDensity() {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n\n const newDensity = (timeAtPixel1 - timeAtPixel0) / HOUR\n if (!isNaN(newDensity)) {\n this.currentTimeScaleDensity = newDensity\n }\n },\n registerEventsListeners() {\n document.addEventListener(\"mouseup\", this.handleDocumentMouseUp)\n this.svg.on(\"mousedown\", this.handleMouseDown)\n this.svg.on(\"mousemove\", this.handleMouseMove)\n this.svg.on(\"click\", this.handleClick)\n this.svg.on(\"mouseleave\", this.handleMouseLeave)\n },\n emitVisibleInterval(trigger: TimelineIntervalChangeTrigger) {\n const visibleFrom = this.timeScale.invert(0)\n const visibleTo = this.timeScale.invert(this.timeline.offsetWidth)\n\n if (\n this.visibleFrom &&\n this.visibleFrom.getTime() === visibleFrom.getTime() &&\n this.visibleTo &&\n this.visibleTo.getTime() === visibleTo.getTime()\n ) {\n return\n }\n\n this.visibleFrom = visibleFrom\n this.visibleTo = visibleTo\n\n const fromDate = this.dateToTzString(this.visibleFrom)\n const toDate = this.dateToTzString(this.visibleTo)\n\n this.$emit(\"visible-interval-change\", {\n fromDate,\n toDate,\n trigger,\n transform: this.transformDiff,\n })\n },\n createAxis(axisName: TimelineAxis) {\n const axis = this.xAxesConfig[axisName as TimelineAxis]\n const config = this.getAxisTicksConfig(axis)\n\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(config.interval)\n .tickFormat(config.formatFn)\n .tickSizeOuter(0)\n .tickSizeInner(this.timelineHeight)\n },\n getAxisTicksConfig(configs: TimelineTicksConfig[]) {\n const { interval, format } = configs.find(\n (config) =>\n config.precision >= this.currentTimeScaleDensity && config.interval\n ) as TimelineTicksConfig\n\n const formatFn = (d: Date): string => {\n return typeof format === \"function\"\n ? format(d)\n : d3.timeFormat(format)(d)\n }\n\n return {\n formatFn,\n interval,\n }\n },\n onResize(resizeObserverEntry: ResizeObserverEntry) {\n if (this.isFirstPaint) {\n this.handleResize(resizeObserverEntry)\n this.isFirstPaint = false\n } else {\n this.debouncedOnResize(resizeObserverEntry)\n }\n },\n handleResize({ contentRect }: ResizeObserverEntry) {\n if (!this.svg) {\n return\n }\n\n this.svg.attr(\"width\", contentRect.width)\n this.updateAndRedrawTimeline()\n },\n handleDarkModeChange() {\n if (!this.showLabels) {\n return\n }\n\n const that = this\n this.svg.selectAll(`.${classes.labelBg}`).each(function () {\n const label = d3.select(this)\n label.style(\"fill\", that.dark ? \"black\" : \"white\")\n })\n this.svg.selectAll(`.${classes.labelBgFill}`).each(function () {\n const bgFill = d3.select(this)\n const color = (bgFill.node()! as HTMLElement).dataset.color\n bgFill\n .style(\"fill\", that.getLabelBackgroundColor(color as string))\n .style(\"stroke\", that.getTextFillColor(color as string))\n .style(\"stroke-width\", 0.25)\n })\n this.svg.selectAll(`.${classes.labelText}`).each(function () {\n const text = d3.select(this)\n const color = (text.node()! as HTMLElement).dataset.color\n text.style(\"fill\", that.getTextFillColor(color as string))\n })\n },\n handleMouseDown() {\n this.isMouseDown = true\n },\n handleDocumentMouseUp(_e: MouseEvent) {\n this.isMouseDown = false\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n this.$emit(\"hovered-timestamp\", undefined)\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isMouseDown) {\n return\n }\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n this.isHoveringTimeline = false\n\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n this.hoveredTimestamp = this.dateToTzString(date)\n this.isHoveringTimeline = true\n this.$emit(\"hovered-timestamp\", this.hoveredTimestamp)\n this.cursor.style.left = mouseX + \"px\"\n\n if (!this.tooltip) {\n return\n }\n\n this.eventTooltipStyle = {\n left: `${mouseX}px`,\n zIndex: 100,\n [this.tooltipPosition === \"top\" ? \"bottom\" : \"top\"]: `${\n this.timeline.getBoundingClientRect().height\n }px`,\n }\n },\n handleClick(event: MouseEvent) {\n const mouseX = event.offsetX\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n const date = this.timeScale.invert(mouseX)\n const formattedDateTz = this.dateToTzString(date)\n\n if (this.isHoveringEvent) {\n this.$emit(\"event-clicked\", {\n event: this.hoveredEvent,\n type: this.hoveredEventType,\n })\n\n if (this.stopClickPropagation) {\n return\n }\n }\n\n this.$emit(\"date-clicked\", formattedDateTz)\n\n if (this.panOnDateClick) {\n this.panToTimestamp(formattedDateTz)\n }\n },\n handleMarkerClick(marker: TimelineMarker) {\n this.$emit(\"marker-clicked\", marker)\n if (this.panOnDateClick) {\n this.panToTimestamp(marker.timestamp)\n }\n },\n handleLineMouseOver(\n _event: MouseEvent,\n eventData: TimelineCountEvent,\n eventType: string\n ) {\n this.hoveredCounts = Object.entries(\n this.countsByTimestamp[`${eventData.timestamp}`]\n ).reduce((acc, entry) => {\n const [type, count] = entry\n\n return [...acc, { type, count }]\n }, [] as { type: string; count: number }[])\n this.hoveredEvent = eventData\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", {\n eventData,\n eventType,\n hoveredCounts: this.hoveredCounts,\n })\n },\n handleLineMouseOut() {\n this.isHoveringEvent = false\n this.hoveredCounts = []\n this.$emit(\"event-mouseout\")\n },\n handleBarMouseOver(\n event: MouseEvent,\n eventData: TimelineEvent,\n eventType: string\n ) {\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n this.hoveredEvent = eventData\n this.hoveredEventType = eventType\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleBarMouseOut() {\n this.isHoveringEvent = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.$emit(\"event-mouseout\")\n },\n handleLabelMouseOver(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n true\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n true\n )\n },\n handleLabelMouseLeave(groupType: string) {\n d3.selectAll(`.${classes.lineGraphGroup}-${groupType}`).classed(\n `${classes.lineGraphGroup}--highlighted`,\n false\n )\n d3.selectAll(`.${classes.lineGraphGroupLabel}`).classed(\n `${classes.lineGraphGroupLabel}--highlighted`,\n false\n )\n },\n isZoomAllowed(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (this.isZoomingInterval) {\n return true\n }\n const scaleCopy = this.initialTimeScale.copy()\n const newDomain = event.transform.rescaleX(scaleCopy).domain()\n const minDateLimit = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDateLimit = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n return (\n (!minDateLimit || newDomain[0] >= minDateLimit) &&\n (!maxDateLimit || newDomain[1] <= maxDateLimit)\n )\n },\n handleZoom(event: D3ZoomEvent<SVGSVGElement, any>) {\n if (!this.isZoomAllowed(event)) {\n event?.sourceEvent?.preventDefault()\n this.svg.call(this.zoomBehavior.transform, this.lastValidTransform)\n\n return\n }\n this.lastValidTransform = event.transform\n const newScale = event.transform.rescaleX(this.initialTimeScale)\n this.timeScale.domain(newScale.domain())\n this.$emit(\"time-scale-change\", this.timeScale.copy())\n\n this.updateCurrentTimeScaleDensity()\n this.updateYScale()\n const scale = event.transform.k / this.lastTransform.k\n this.transformDiff = {\n scale: scale,\n translation: event.transform.x - this.lastTransform.x,\n }\n this.lastTransform = { ...event.transform }\n\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, newScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsBars()\n this.updateLineGraphs()\n this.updateBarChart()\n this.updateLineGraphHoverZones()\n this.updateMilestonesPositions()\n this.repositionSelectedTimestampCursor()\n this.updateForbiddenIntervals()\n this.updateMarkers()\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.zoom)\n if (this.curtains) {\n this.emitCurtainChange()\n }\n },\n panToTimestamp(targetTimestamp: string | Date) {\n const targetDate = this.tzStringToDate(targetTimestamp)\n const targetX = this.timeScale(targetDate)\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const translateX =\n currentTransform.x - targetX + this.timeline.offsetWidth / 2\n const newDomainStart = this.timeScale.invert(\n -translateX / currentTransform.k\n )\n const newDomainEnd = this.timeScale.invert(\n (this.timeline.offsetWidth - translateX) / currentTransform.k\n )\n const minDate = this.minDate\n ? this.tzStringToDate(this.minDate)\n : undefined\n const maxDate = this.maxDate\n ? this.tzStringToDate(this.maxDate)\n : undefined\n\n if (\n (minDate && newDomainStart < minDate) ||\n (maxDate && newDomainEnd > maxDate)\n ) {\n console.log(\"Pan operation would exceed bounds. Operation cancelled.\")\n\n return\n }\n\n const scaleChange = currentTransform.k / this.lastPanTransform.k\n const transitionDuration =\n scaleChange < 10 ? this.panTransitionDuration : 0\n // @ts-ignore\n this.lastPanTransform = { ...currentTransform }\n this.svg\n .transition()\n .duration(transitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(currentTransform.k)\n )\n .on(\"end\", () => {\n this.emitVisibleInterval(TimelineIntervalChangeTrigger.autoPan)\n })\n },\n emitCurtainChange() {\n const { startDate, endDate } = this.calculateDateRangeFromCurtains()\n this.$emit(\"curtain-range-change\", {\n startDate: new Date(startDate).toISOString(),\n endDate: new Date(endDate).toISOString(),\n })\n },\n calculateDateRangeFromCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const fullRange = this.timeScale.domain()\n const totalDuration = fullRange[1].getTime() - fullRange[0].getTime()\n\n const leftDuration =\n ((this.leftCurtainWidth - this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n const rightDuration =\n ((this.rightCurtainWidth + this.curtainHandleWidth * 2) /\n timelineWidth) *\n totalDuration\n\n const startDate = new Date(fullRange[0].getTime() + leftDuration)\n const endDate = new Date(fullRange[1].getTime() - rightDuration)\n\n return { startDate, endDate }\n },\n handleDragStart() {\n this.isDraggingCurtain = true\n },\n handleDragEnd() {\n this.isDraggingCurtain = false\n },\n handleLeftDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n const newWidth = Math.min(\n event.x,\n this.timeline.offsetWidth - this.rightCurtainWidth\n )\n this.leftCurtainWidth = Math.max(0, newWidth)\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n this.emitCurtainChange()\n },\n handleRightDrag(event: d3.D3DragEvent<SVGRectElement, any, any>) {\n event.sourceEvent.stopPropagation()\n\n const timelineWidth = this.timeline.offsetWidth\n const newWidth = Math.min(\n this.timeline.offsetWidth - event.x,\n this.timeline.offsetWidth - this.leftCurtainWidth\n )\n const newX = timelineWidth - newWidth\n this.rightCurtainWidth = Math.max(0, newWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\"width\", this.rightCurtainWidth)\n .attr(\"x\", newX)\n\n this.emitCurtainChange()\n },\n zoomToStartAndEndDates() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n const startTime = this.tzStringToDate(startDate)\n const endTime = this.tzStringToDate(endDate)\n this.initialTimeScale.domain([startTime, endTime])\n const currentTransform = d3.zoomTransform(this.svg.node() as SVGGElement)\n const totalDuration = endTime.getTime() - startTime.getTime()\n const currentDuration = this.initialTimeScale\n .range()\n .map((d) => this.initialTimeScale.invert(d))\n .reduce((acc, curr) => curr.getTime() - acc, 0)\n const scale = (currentDuration / totalDuration) * currentTransform.k\n const targetStartX = this.initialTimeScale(startTime) * scale\n const translateX = -targetStartX\n const [minScale, maxScale] = this.zoomBehavior.scaleExtent()\n const newScale = Math.max(minScale, Math.min(maxScale, scale))\n\n this.svg\n .transition()\n .duration(this.zoomToBoundariesTransitionDuration)\n .call(\n this.zoomBehavior.transform,\n d3.zoomIdentity.translate(translateX, 0).scale(newScale)\n )\n },\n rescaleAxis(axisName: string, newScale: d3.ScaleTime<any, any, unknown>) {\n const axis: Axis<Date> = this.xAxes[axisName as TimelineAxis]\n const ticksConfig = this.getAxisTicksConfig(\n this.xAxesConfig[axisName as TimelineAxis]\n )\n axis\n .scale(newScale)\n .ticks(ticksConfig.interval)\n .tickFormat(ticksConfig.formatFn)\n .tickSizeOuter(0)\n this.svg.select<SVGGElement>(`.${classes.xAxis}-${axisName}`).call(axis)\n },\n translateTicksText(axisName: string) {\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n let textBBox = (textElement.node() as SVGGraphicsElement).getBBox()\n textElement\n .attr(\"x\", textBBox.height / 2)\n .attr(\"y\", 0)\n .style(\"text-anchor\", \"start\")\n })\n },\n updateEventsBars() {\n const rectsAndDots = `.${classes.eventGroup} > rect.${classes.eventRect}`\n const rectsOnly = `${rectsAndDots}:not(.${classes.eventRect}--dot)`\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsAndDots)\n .attr(\"x\", this.getEventRectX)\n\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsOnly)\n .attr(\"width\", this.getEventRectWidth)\n\n const eventTextSelector = `.${classes.eventGroup} > text.${classes.eventRectText}`\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(eventTextSelector)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .text(this.getEventText)\n },\n updateBarChart() {\n const groupsCount = Object.keys(this.barChartGroups).length\n Object.keys(this.barChartGroups).forEach((type, index) => {\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const containerSelector = `.${classes.eventBarContainer}-${type}`\n const container = this.svg.selectAll(containerSelector)\n\n // Hover zones\n const hoverZoneSelector = `.${classes.barChartGroup} rect.${classes.eventBarHoverZone}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(hoverZoneSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n\n // Bars\n const barSelector = `.${classes.barChartGroup} rect.${classes.eventBar}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n .attr(\"height\", getH)\n\n // Bar caps\n const barCapSelector = `.${classes.barChartGroup} rect.${classes.eventBarCap}`\n container\n .selectAll<SVGRectElement, TimelineEvent>(barCapSelector)\n .attr(\"x\", getX)\n .attr(\"width\", getW)\n .attr(\"y\", getY)\n })\n },\n updateLineGraphs() {\n Object.entries(this.lineGraphGroups).forEach(([type]) => {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n this.svg\n .selectAll<SVGPathElement, TimelineCountEvent[]>(\n `.${classes.lineGraphPath}-${type}`\n )\n .attr(\"d\", (d) => area(d))\n })\n },\n updateLineGraphHoverZones() {\n Object.keys(this.lineGraphGroups).forEach((type) => {\n const that = this\n this.svg\n .selectAll<SVGCircleElement, TimelineCountEvent>(\n `.${classes.lineGraphDot}-${type}`\n )\n .each(function (d) {\n d3.select(this)\n .attr(\"cx\", that.timeScale(that.tzStringToDate(d.timestamp)))\n .attr(\"cy\", that.yScale(d.count))\n })\n\n this.svg\n .selectAll<SVGRectElement, TimelineCountEvent>(\n `.${classes.lineGraphHoverZone}-${type}`\n )\n .each(function (d) {\n const x =\n that.timeScale(that.tzStringToDate(d.timestamp).getTime()) - 15\n d3.select(this)\n .attr(\"x\", x)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", that.chartHeight)\n })\n })\n },\n getEventRectX(d: TimelineEvent) {\n if (\n isNaN(this.timeScale(this.tzStringToDate(d.startDate || d.timestamp)))\n ) {\n return 0\n }\n\n return this.timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n getEventRectWidth(d: TimelineEvent) {\n if (!d) {\n return 0\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width =\n this.timeScale(endTimestamp) - this.timeScale(startTimestamp)\n\n return Math.max(width, this.rectMinWidth)\n } else {\n const oneSecondWidth = 1 / (this.currentTimeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, this.rectMinWidth)\n }\n },\n getEventText(e: TimelineEvent): string {\n const rectWidth = this.getEventRectWidth(e)\n const maxCharacters = (rectWidth - this.textPadding) / this.characterWidth\n\n if (maxCharacters < 4) {\n return \"\"\n } else if (e.text?.length <= maxCharacters) {\n return e.text\n } else {\n return `${e.text.slice(0, maxCharacters - 3)}...`\n }\n },\n getElementLeftPosition(element: HTMLElement) {\n if (!element) {\n return 0\n }\n\n const style = window.getComputedStyle(element)\n\n return parseInt(style.left)\n },\n isTimestampAllowedForMarker(\n timestamp: Date | number,\n marker: TimelineMarker\n ) {\n return (\n (marker.minDate\n ? timestamp >= this.tzStringToDate(marker.minDate)\n : true) &&\n (marker.maxDate\n ? timestamp <= this.tzStringToDate(marker.maxDate)\n : true)\n )\n },\n handleMarkerDrag({\n marker,\n markerElement,\n dragEvent,\n }: {\n marker: TimelineMarker\n markerElement: d3.Selection<any, TimelineMarker, any, any>\n dragEvent: d3.D3DragEvent<any, TimelineMarker, any>\n }) {\n if (!marker.isDraggable) {\n return\n }\n\n if (dragEvent.type === \"start\") {\n this.initialMarkerDragMouseOffset =\n dragEvent.x -\n markerElement\n .node()\n .querySelector(`.${classes.markerLine}`)\n .getBoundingClientRect().left\n markerElement.classed(classes.markerDragged, true)\n }\n\n const targetLeft = dragEvent.x - this.initialMarkerDragMouseOffset\n const newTimestamp = this.timeScale.invert(\n targetLeft - this.svg.node()!.getBoundingClientRect().left\n ) as Date\n const newPosition = this.timeScale(newTimestamp)\n const isNewTimestampAllowed = this.isTimestampAllowedForMarker(\n newTimestamp,\n marker\n )\n\n if (dragEvent.type === \"drag\" && isNewTimestampAllowed) {\n markerElement.attr(\"style\", `left: ${newPosition}px`)\n }\n\n if (dragEvent.type === \"end\" && isNewTimestampAllowed) {\n const id = marker.id || (marker.timestamp as string)\n this.markersPositions = {\n ...this.markersPositions,\n [id]: {\n ...this.markersPositions[id],\n position: newPosition,\n },\n }\n markerElement.classed(classes.markerDragged, false)\n }\n\n if (dragEvent.type !== \"start\") {\n this.$emit(`marker-drag-${dragEvent.type}`, {\n marker,\n newTimestamp: newTimestamp.toISOString(),\n })\n }\n },\n removeMarkersDragBehavior() {\n if (!this.markersDragBehavior) {\n return\n }\n this.markersDragBehavior\n .on(\"start\", null)\n .on(\"drag\", null)\n .on(\"end\", null)\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`).call(\n this.markersDragBehavior\n )\n },\n initMarkersDragBehavior() {\n this.removeMarkersDragBehavior()\n type MarkerDragEvent = d3.D3DragEvent<any, TimelineMarker, any>\n const that = this\n this.markersDragBehavior = d3\n .drag<HTMLElement, TimelineMarker>()\n .on(\"start\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n event.sourceEvent?.preventDefault()\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"drag\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n .on(\"end\", function (event: MarkerDragEvent, marker: TimelineMarker) {\n that.handleMarkerDrag({\n marker,\n markerElement: d3.select(this),\n dragEvent: event,\n })\n })\n\n d3.selectAll<HTMLElement, TimelineMarker>(`.${classes.marker}`)\n .data(this.sortedMarkers)\n .call(this.markersDragBehavior)\n },\n initCurtains() {\n this.createCurtains()\n this.updateCurtains()\n },\n createCurtains() {\n if (!this.curtains) {\n return\n }\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--left`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleLeftDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.svg\n .append(\"rect\")\n .classed(`${classes.curtain} ${classes.curtain}--right`, true)\n .attr(\"fill\", \"rgba(0, 0, 0, 0.5)\")\n .on(\"mouseenter\", () => (this.isHoveringCurtain = true))\n .on(\"mouseleave\", () => (this.isHoveringCurtain = false))\n .call(\n d3\n .drag<SVGRectElement, any>()\n .on(\"start\", this.handleDragStart)\n .on(\"drag\", this.handleRightDrag)\n .on(\"end\", this.handleDragEnd)\n )\n\n this.updateCurtains()\n },\n updateCurtains() {\n const timelineWidth = this.timeline.offsetWidth\n const timelineHeight = this.timelineHeight\n this.svg\n .select(`.${classes.curtain}--left`)\n .attr(\"width\", this.leftCurtainWidth)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"x\", -this.curtainHandleWidth)\n\n this.svg\n .select(`.${classes.curtain}--right`)\n .attr(\n \"x\",\n timelineWidth - this.rightCurtainWidth + this.curtainHandleWidth\n )\n .attr(\"y\", -this.curtainHandleWidth)\n .attr(\"width\", this.rightCurtainWidth + this.curtainHandleWidth * 2)\n .attr(\"height\", timelineHeight + this.curtainHandleWidth * 2)\n },\n updateForbiddenIntervals(reset = false) {\n if (reset) {\n this.svg.selectAll(`.${classes.forbiddenInterval}`).remove()\n }\n\n const visibleDomain = this.timeScale.domain()\n this.forbiddenIntervals.forEach((interval, index) => {\n const startTime =\n interval.startDate === -Infinity\n ? visibleDomain[0]\n : this.tzStringToDate(interval.startDate)\n const endTime =\n interval.endDate === Infinity\n ? visibleDomain[1]\n : this.tzStringToDate(interval.endDate)\n\n const startX = this.timeScale(startTime)\n const endX = this.timeScale(endTime)\n const width = Math.max(endX - startX, 0)\n let rect: d3.Selection<SVGRectElement, unknown, null, undefined> =\n this.svg.select(`.${classes.forbiddenInterval}-${index}`)\n\n if (rect.empty()) {\n rect = this.svg\n .append(\"rect\")\n .attr(\n \"class\",\n `${classes.forbiddenInterval} ${classes.forbiddenInterval}-${index}`\n )\n .attr(\"fill\", `url(#${this.defs.stripedPattern})`)\n }\n rect\n .attr(\"x\", startX)\n .attr(\"y\", 0)\n .attr(\"width\", width)\n .attr(\"height\", this.timelineHeight)\n })\n },\n drawEventsGroups() {\n this.svg.selectAll(`g.${classes.eventGroup}`).remove()\n this.svg.selectAll(`.${classes.barChartGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroup}`).remove()\n this.svg.selectAll(`.${classes.lineGraphGroupLabel}`).remove()\n this.svg.selectAll(`.${classes.loadingIndicator}`).remove()\n\n this.drawLineGraphEventsGroups()\n this.drawBarEventsGroups()\n this.drawBarChartEventsGroups()\n this.drawMilestonesPlaceholder()\n },\n drawLineGraphEventsGroups() {\n const yOffset = this.combinedXAxesHeight + this.chartsYOffset\n const eventsGroups = this.insertZerosAtInterval\n ? this.filledGapsLineGraphGroups\n : this.lineGraphGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup]) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.lineGraphGroup} ${classes.lineGraphGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawLineGraph({\n events,\n gElement,\n color,\n type,\n })\n this.drawLineGraphHoverZones({\n events: events as TimelineCountEvent[],\n gElement,\n color,\n type,\n })\n })\n\n Object.entries(this.lineGraphGroups).forEach(\n ([type, eventsGroup], index) => {\n const { color, isLoading, label } = eventsGroup\n const labelHeight = Math.max(\n this.chartMinLabelHeight,\n this.barChartHeight\n )\n const labelYPosition = this.chartHeight - labelHeight * (index + 1)\n const loadingIndicatorYPosition =\n yOffset + this.chartHeight - labelHeight\n const labelsGElement = this.svg\n .append(\"g\")\n .classed(classes.lineGraphGroupLabel, true)\n .attr(\"transform\", `translate(0,${yOffset})`)\n .on(\"mouseover\", () => this.handleLabelMouseOver(type))\n .on(\"mouseleave\", () => this.handleLabelMouseLeave(type))\n\n this.drawProgressIndicator({\n type,\n color,\n isLoading,\n yPosition: loadingIndicatorYPosition,\n })\n this.drawTextLabel({\n color,\n label,\n type,\n height: labelHeight,\n yPosition: labelYPosition,\n gElement: labelsGElement,\n })\n }\n )\n },\n drawLineGraph({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => this.timeScale(this.tzStringToDate(d.timestamp)))\n .y0(this.timelineHeight)\n .y1((d) => this.yScale(d.count))\n .curve(d3.curveMonotoneX)\n\n const clipPathId = `clip-${type}`\n gElement\n .append(\"defs\")\n .append(\"clipPath\")\n .attr(\"id\", clipPathId)\n .append(\"rect\")\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.chartHeight)\n\n gElement\n .append(\"path\")\n .datum(events as TimelineCountEvent[])\n .classed(`${classes.lineGraphPath}-${type}`, true)\n .attr(\"fill\", `url(#${this.defs.transparencyGradientLight}-${type})`)\n .attr(\"stroke\", color)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\")\n .attr(\"stroke-width\", 1)\n .attr(\"d\", (d) => area(d))\n .attr(\"clip-path\", `url(#${clipPathId})`)\n },\n drawLineGraphHoverZones({\n events,\n gElement,\n color,\n type,\n }: {\n events: TimelineCountEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n type: string\n }) {\n events.forEach((event: TimelineCountEvent) => {\n const timestamp = `${event.timestamp}`\n this.countsByTimestamp[timestamp] = {\n ...(this.countsByTimestamp[timestamp] || {}),\n [type]: event.count,\n }\n\n const circle = gElement\n .append(\"circle\")\n .classed(\n `${classes.lineGraphDot} ${classes.lineGraphDot}-${type}`,\n true\n )\n .attr(\"cx\", this.timeScale(this.tzStringToDate(event.timestamp)))\n .attr(\"cy\", this.yScale(event.count))\n .attr(\"r\", 1.5)\n .attr(\"fill\", color)\n .attr(\"stroke-width\", 0)\n .datum(event)\n\n this.dotsByTimestamp[timestamp] = [\n ...(this.dotsByTimestamp[timestamp] || []),\n circle,\n ]\n\n gElement\n .append(\"rect\")\n .classed(`${classes.lineGraphHoverZone}-${type}`, true)\n .attr(\"x\", this.timeScale(this.tzStringToDate(event.timestamp)) - 15)\n .attr(\"y\", 0)\n .attr(\"width\", 30)\n .attr(\"height\", this.chartHeight)\n .attr(\"fill\", \"transparent\")\n .datum(event)\n .on(\"mouseover\", (e) => {\n this.handleLineMouseOver(e, event, type)\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, true)\n )\n })\n .on(\"mouseout\", () => {\n this.handleLineMouseOut()\n this.dotsByTimestamp[timestamp].forEach((d) =>\n d.classed(`${classes.lineGraphDot}--active`, false)\n )\n })\n })\n },\n drawSingleBarEventsGroup({\n type,\n eventsGroup,\n milestone,\n dots,\n dotsSize,\n bottom,\n }: {\n type: string\n eventsGroup: TimelineEventsGroup\n milestone?: boolean\n dots?: boolean\n dotsSize?: number\n bottom?: boolean\n }) {\n const {\n color,\n bgColor,\n label,\n events,\n barBorderRadius,\n isLoading,\n height,\n chartType,\n } = eventsGroup as TimelineEventsGroup\n let yPosition = this.getBarGroupYPosition(type, bottom)\n const isBarsGroup = [\n TimelineChartType.bars,\n TimelineChartType.dots,\n undefined,\n ].includes(chartType)\n const backgroundHeight = isBarsGroup\n ? this.getBarGroupHeight(eventsGroup)\n : height\n if (milestone) {\n yPosition = this.getMilestoneGroupYPosition(type)\n }\n\n this.drawProgressIndicator({\n yPosition,\n type,\n color,\n isLoading,\n })\n\n const gElement = this.svg\n .append(\"g\")\n .attr(\"data-color\", color)\n .classed(classes.eventGroup, true)\n .classed(`${classes.eventGroup}-${type}`, true)\n\n this.drawBackground({\n color: bgColor || color,\n gElement,\n yPosition,\n height: backgroundHeight,\n })\n if (milestone || dots) {\n const lineWidth = dots ? 1 : 2\n const linePosition = yPosition + backgroundHeight / 2\n gElement\n .append(\"line\")\n .classed(milestoneClasses.milestoneLine, true)\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n .style(\"stroke\", color)\n .style(\"stroke-width\", lineWidth)\n }\n this.drawBars({\n events,\n color,\n gElement,\n yPosition,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius,\n })\n if (!label) {\n return\n }\n this.drawTextLabel({\n color,\n label,\n type,\n gElement,\n yPosition,\n height,\n })\n },\n drawBarEventsGroups() {\n Object.entries(this.barGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup,\n bottom: eventsGroup.bottom,\n dots: eventsGroup.chartType === TimelineChartType.dots,\n dotsSize: eventsGroup.dotsSize || 3,\n })\n )\n },\n drawMilestonesPlaceholder() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) =>\n this.drawSingleBarEventsGroup({\n type,\n eventsGroup: {\n ...eventsGroup,\n events: [],\n isLoading: false,\n },\n milestone: true,\n })\n )\n this.updateMilestonesPositions()\n },\n getMilestoneClass(milestone: TimelineEvent): Record<string, boolean> {\n return {\n [milestoneClasses.milestoneSelected]: [\n milestone.id,\n milestone.timestamp,\n ].includes(this.selectedMilestoneId),\n }\n },\n getMilestoneColors(\n milestoneColor: string | undefined,\n groupColor: string\n ): { background: string; border: string } {\n return {\n background: milestoneColor || groupColor,\n border: this.getTextFillColor(milestoneColor || groupColor, 0.25),\n }\n },\n getMilestoneGroupYPosition(groupName: string): number {\n let offset = 0\n for (const [type, eventsGroup] of Object.entries(this.milestonesGroups)) {\n if (type === groupName) {\n break\n }\n offset += eventsGroup.height || this.barChartHeight\n }\n\n return this.combinedXAxesHeight + this.milestonesYOffset + offset\n },\n getBarGroupYPosition(groupName: string, bottom?: boolean): number {\n let offset = this.combinedXAxesHeight\n if (bottom) {\n offset +=\n (this.hasChart ? this.chartHeight : 0) +\n (this.hasMilestones ? this.combinedMilestonesHeight : 0)\n } else {\n offset += this.barsYOffset\n }\n\n for (const [type, eventsGroup] of Object.entries(this.barGroups)) {\n const isSameGroup = type === groupName\n if (isSameGroup) {\n break\n }\n\n if (!bottom && eventsGroup.bottom) {\n continue\n }\n\n offset += this.getBarGroupHeight(eventsGroup)\n }\n\n return offset\n },\n getBarGroupHeight(eventsGroup: TimelineEventsGroup) {\n return eventsGroup.height\n ? Math.max(eventsGroup.height + this.barYPadding, 1)\n : this.barChartHeight\n },\n updateMilestonesPositions() {\n Object.entries(this.milestonesGroups).forEach(([type, eventsGroup]) => {\n const yPosition = this.getMilestoneGroupYPosition(type)\n const gElement = this.svg.select(\n `g.${classes.eventGroup}-${type}`\n ) as d3.Selection<SVGGElement, any, any, any>\n const lineWidth = 2\n const groupHeight = eventsGroup.height || this.barChartHeight\n const yOffset = groupHeight / 2\n const linePosition = yPosition + yOffset - lineWidth / 2\n gElement\n .attr(\"x1\", 0)\n .attr(\"x2\", this.timeline.offsetWidth)\n .select(`.${milestoneClasses.milestoneLine}`)\n .attr(\"y1\", linePosition)\n .attr(\"y2\", linePosition)\n const milestonesContainer = d3.select(\n `.${milestoneClasses.milestonesContainer}-${type}`\n )\n\n milestonesContainer\n .style(\"top\", `${yPosition}px`)\n .style(\"height\", `${eventsGroup.height || this.barChartHeight}px`)\n\n const milestones = milestonesContainer\n .selectAll<HTMLDivElement, TimelineEvent>(\n `.${milestoneClasses.milestone}`\n )\n .data(this.getSortedEvents(eventsGroup.events))\n\n milestones.exit().remove()\n milestones\n .enter()\n .append(\"div\")\n .merge(milestones)\n .style(\n \"left\",\n (d) => `${this.timeScale(this.tzStringToDate(d.timestamp))}px`\n )\n .style(\"top\", `${linePosition}px`)\n })\n },\n drawBarChartEventsGroups() {\n const yOffset = this.combinedXAxesHeight\n const eventsGroups = this.barChartGroups\n\n Object.entries(eventsGroups).forEach(([type, eventsGroup], index) => {\n const gElement = this.svg\n .append(\"g\")\n .classed(\n `${classes.barChartGroup} ${classes.barChartGroup}-${type}`,\n true\n )\n .attr(\"transform\", `translate(0,${yOffset})`)\n const { color, events } = eventsGroup\n\n this.drawBarsChart({\n events,\n color,\n gElement,\n yOffset,\n type,\n index,\n })\n })\n },\n drawProgressIndicator({\n yPosition,\n type,\n isLoading,\n }: {\n yPosition: number\n type: string\n color: string\n isLoading: Boolean | undefined\n }) {\n const rect = this.svg\n .append(\"rect\")\n .classed(\n `${classes.loadingIndicator} ${classes.loadingIndicator}-${type}`,\n true\n )\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth / 3)\n .attr(\"height\", this.barChartHeight)\n .attr(\"fill\", `url(#${this.defs.loadingGradient}-${type})`)\n\n rect.style(\"visibility\", isLoading ? \"visible\" : \"hidden\")\n },\n drawBackground({\n color,\n yPosition,\n gElement,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n height?: number\n }) {\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.eventGroupBg)\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", height || this.barChartHeight)\n .attr(\"fill\", d3.color(color)!.toString())\n .style(\"opacity\", 0.1)\n },\n drawBars({\n events,\n gElement,\n yPosition,\n color,\n type,\n dots,\n dotsSize,\n height,\n barBorderRadius = 1.5,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n type: string\n dots?: boolean\n dotsSize?: number\n height?: number\n barBorderRadius?: number\n }) {\n const that = this\n const y = yPosition + this.barYPadding / 2\n const yOffset = dots\n ? ((height || this.barChartHeight) - dotsSize!) / 2\n : 0\n let rectHeight = Math.max(\n (height ?? this.barChartHeight) - this.barYPadding,\n 1\n )\n\n if (dots) {\n rectHeight = dotsSize as number\n }\n\n gElement\n .selectAll(classes.eventRect)\n .data(events)\n .enter()\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventRect +\n (dots ? ` ${classes.eventRect}--dot` : \"\") +\n (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", this.getEventRectX)\n .attr(\"y\", y + yOffset)\n .attr(\"ry\", dots ? dotsSize! : barBorderRadius)\n .attr(\"rx\", dots ? dotsSize! : barBorderRadius)\n .attr(\"width\", (dots ? dotsSize : this.getEventRectWidth) as number)\n .attr(\"height\", rectHeight)\n .attr(\"stroke-width\", dots ? dotsSize / 10 : 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", (event: TimelineEvent) => {\n if (!dots) {\n return \"#0000\"\n }\n const c = d3.color(event.color || color)\n\n return c.brighter(1).toString()\n })\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n .on(\"mouseover\", function (event, eventData) {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, true)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const rect = d3.select(this)\n rect.classed(classes.eventRectHovered, false)\n that.handleBarMouseOut()\n })\n\n // Label text\n gElement\n .selectAll(classes.eventRectText)\n .data(events.filter((e) => !!e.text))\n .enter()\n .append(\"text\")\n .attr(\"class\", classes.eventRectText)\n .attr(\"x\", (e) => this.getEventRectX(e) + this.textPadding)\n .attr(\"y\", yPosition + this.barChartHeight / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 600)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"pointer-events\", \"none\")\n .style(\"fill\", (event: TimelineEvent) =>\n this.getTextFillColor(event.color || color, 0.75)\n )\n .text(this.getEventText)\n },\n drawBarsChart({\n events,\n gElement,\n color,\n yOffset,\n type,\n index,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n color: string\n yOffset: number\n type: string\n index: number\n }) {\n const that = this\n const groupsCount = Object.keys(this.barChartGroups).length\n\n const getW = (d: TimelineEvent) =>\n (this.getEventRectWidth(d) - this.barXPadding * 2) / groupsCount\n const getH = (d: TimelineEvent) =>\n this.yScale.range()[0] - this.yScale(d.count)\n const getX = (d: TimelineEvent) =>\n this.getEventRectX(d) + this.barXPadding + index * getW(d)\n const getY = (d: TimelineEvent) => this.yScale(d.count)\n\n const eventBarContainers = gElement\n .selectAll(classes.eventBarContainer)\n .data(events)\n .enter()\n .append(\"g\")\n .attr(\n \"class\",\n `${classes.eventBarContainer} ${classes.eventBarContainer}-${type}`\n )\n\n // Hover zone\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) =>\n classes.eventBarHoverZone + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", -yOffset)\n .attr(\"width\", getW)\n .attr(\"height\", this.yScale.range()[0] + yOffset)\n .attr(\"fill\", (d) => d.color || color)\n .attr(\"fill-opacity\", 0)\n // Bar\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBar + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", getH)\n .attr(\"stroke-width\", 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", \"#0000\")\n .attr(\"fill\", `url(#${this.defs.transparencyGradient}-${type})`)\n // Cap (Top border)\n eventBarContainers\n .append(\"rect\")\n .attr(\n \"class\",\n (d) => classes.eventBarCap + (d.className ? ` ${d.className}` : \"\")\n )\n .attr(\"x\", getX)\n .attr(\"y\", getY)\n .attr(\"width\", getW)\n .attr(\"height\", 2)\n .attr(\"stroke-width\", 0)\n .style(\"fill\", (event: TimelineEvent) => event.color || color)\n\n eventBarContainers\n .on(\"mouseover\", function (event, eventData) {\n const g = d3.select(this)\n that.onBarChartBarMouseOver(g, color)\n that.handleBarMouseOver(event, eventData, type)\n })\n .on(\"mouseout\", function () {\n const g = d3.select(this)\n that.onBarChartBarMouseOut(g, type)\n that.handleBarMouseOut()\n })\n .on(\"click\", function () {\n gElement\n .selectAll(`.${classes.eventBarContainerSelected}`)\n .classed(classes.eventBarContainerSelected, false)\n d3.select(this).classed(classes.eventBarContainerSelected, true)\n })\n },\n onBarChartBarMouseOver(\n container: d3.Selection<SVGGElement, any, any, any>,\n color: string\n ) {\n container.classed(classes.eventBarContainerHovered, true)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0.2)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", color)\n bar.attr(\"fill-opacity\", 0.5)\n },\n onBarChartBarMouseOut(\n container: d3.Selection<SVGGElement, any, any, any>,\n eventType: string\n ) {\n container.classed(classes.eventBarContainerHovered, false)\n const hoverZone = container.selectAll(`.${classes.eventBarHoverZone}`)\n hoverZone.attr(\"fill-opacity\", 0)\n const bar = container.selectAll(`.${classes.eventBar}`)\n bar.attr(\"fill\", `url(#${this.defs.transparencyGradient}-${eventType})`)\n bar.attr(\"fill-opacity\", 1)\n },\n drawTextLabel({\n gElement,\n yPosition,\n color,\n label,\n type,\n height,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n label: string\n type: string\n height?: number\n }) {\n if (!this.showLabels) {\n return\n }\n\n const bg = {\n x: -5,\n y: yPosition,\n w: this.labelRectWidth,\n h: height || this.barChartHeight,\n radius: 3,\n }\n\n const labelGroup = gElement\n .append(\"g\")\n .attr(\"class\", `${classes.labelGroup} ${classes.labelGroup}-${type}`)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", () => this.toggleGroupVisibility(type))\n\n // Label rect background\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBg)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.dark ? \"#131a29\" : \"white\")\n\n // Label rect fill\n labelGroup\n .append(\"rect\")\n .attr(\"class\", classes.labelBgFill)\n .attr(\"data-color\", color)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.getLabelBackgroundColor(color))\n .style(\"stroke\", this.getTextFillColor(color))\n .style(\"stroke-width\", 0.25)\n\n // Label text\n labelGroup\n .append(\"text\")\n .attr(\"class\", classes.labelText)\n .attr(\"data-color\", color)\n .attr(\"x\", 5)\n .attr(\"y\", yPosition + (height || this.barChartHeight) / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 500)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"fill\", this.getTextFillColor(color))\n .text(label)\n },\n getTextFillColor(baseColor: string, k = 0) {\n return (\n this.dark\n ? d3.color(baseColor)?.brighter(1.5 + k)\n : d3.color(baseColor)?.darker(2 + k)\n )!.toString()\n },\n getLabelBackgroundColor(baseColor: string) {\n let color = d3.color(baseColor)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n getCurrentGroupVisibility(type: string) {\n const internalVisibility = this.groupsVisibility[type]\n if (internalVisibility !== undefined) {\n return internalVisibility\n }\n\n // @ts-ignore\n const configVisibility = this.eventsGroups[type]?.isHidden\n if (configVisibility !== undefined) {\n return !configVisibility\n }\n\n return true\n },\n toggleGroupVisibility(type: string) {\n this.groupsVisibility = {\n ...this.groupsVisibility,\n [type]: !this.getCurrentGroupVisibility(type),\n }\n },\n getExternalLabelStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n background: this.getLabelBackgroundColor(color),\n color: this.getTextFillColor(color),\n }\n },\n getExternalLabelWrapperStyles(type: string) {\n // @ts-ignore\n const color = this.eventsGroups[type].color\n\n return {\n borderColor: this.getTextFillColor(color),\n }\n },\n getMarkerClass(marker: TimelineMarker) {\n return {\n \"marker--hidden\": this.markersPositions[marker?.id]?.isHidden,\n \"marker--draggable\": marker?.isDraggable,\n ...(marker.className ? { [marker?.className]: true } : {}),\n }\n },\n getMarkerContainerStyle(marker: TimelineMarker): Record<string, string> {\n return {\n left: `${this.markersPositions[marker.id]?.position}px`,\n }\n },\n getMarkerLabelStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n color: marker.textColor || \"\",\n }\n },\n getMarkerLineStyle(marker: TimelineMarker): Record<string, string> {\n return {\n background: marker.color,\n height: `${this.timelineHeight + 24}px`,\n }\n },\n tzStringToDate(timestamp: Timestamp): Date {\n const offsetMinutes = this.timezone\n ? moment.tz(timestamp, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(timestamp).add(offsetMinutes, \"minutes\").toDate()\n },\n dateToTzString(date: Date): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n const offsetMinutes = this.timezone\n ? moment.tz(date, this.timezone).utcOffset()\n : this.utcOffset\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(offsetMinutes, true)\n .format()\n },\n getCurrentTimeBounds() {\n const bounds = this.timeScale.domain() as unknown as [string, string]\n\n return { startDate: bounds[0], endDate: bounds[1] }\n },\n getFormattedTimestamp(timestamp: Timestamp): string {\n return moment.parseZone(timestamp).format(\"YYYY-MM-DDTHH:mm:ss\")\n },\n fillTimeGaps(events: TimelineEvent[]) {\n if (events.length <= 1) {\n return events\n }\n\n const unit = this.insertZerosAtInterval\n const getNextTimestamp = (date: moment.Moment) =>\n date.clone().add(1, unit)\n const getPreviousTimestamp = (date: moment.Moment) =>\n date.clone().subtract(1, unit)\n\n let filledEvents = []\n\n for (let i = 0; i < events.length; i++) {\n const currentEvent = events[i]\n filledEvents.push(currentEvent)\n\n if (i === events.length - 1) {\n break\n }\n\n const nextEvent = events[i + 1]\n const currentTimestamp = moment(currentEvent.timestamp)\n const nextTimestamp = moment(nextEvent.timestamp)\n\n if (nextTimestamp.diff(currentTimestamp, unit) > 1) {\n const fillerAfterCurrent =\n getNextTimestamp(currentTimestamp).toISOString()\n const fillerBeforeNext =\n getPreviousTimestamp(nextTimestamp).toISOString()\n\n filledEvents.push({ timestamp: fillerAfterCurrent, count: 0 })\n if (fillerAfterCurrent !== fillerBeforeNext) {\n filledEvents.push({ timestamp: fillerBeforeNext, count: 0 })\n }\n }\n }\n\n if (this.flattenLineGraphEnds) {\n const firstEventTimestamp = moment(events[0].timestamp)\n const lastEventTimestamp = moment(events[events.length - 1].timestamp)\n\n const firstFiller =\n getPreviousTimestamp(firstEventTimestamp).toISOString()\n const lastFiller = getNextTimestamp(lastEventTimestamp).toISOString()\n\n filledEvents = [\n { timestamp: firstFiller, count: 0 },\n ...filledEvents,\n { timestamp: lastFiller, count: 0 },\n ]\n }\n\n return filledEvents\n },\n fillEvents(events: TimelineEvent[]): TimelineEvent[] {\n return this.placeholderLineChartGroup.map((defaultEvent) => {\n const actualEvent = events.find(\n (event) => event.timestamp === defaultEvent.timestamp\n )\n\n return actualEvent || defaultEvent\n })\n },\n onMilestoneClick(milestone: TimelineEvent, milestoneType: any) {\n if (this.panOnDateClick) {\n this.panToTimestamp(milestone.timestamp)\n }\n this.selectedMilestoneId = milestone.id || milestone.timestamp\n this.$emit(\"milestone-click\", { milestone, milestoneType })\n },\n getSortedEvents(events: TimelineEvent[]): TimelineEvent[] {\n return [...events].sort((a, b) =>\n new Date(a.timestamp || a.startDate) >\n new Date(b.timestamp || b.startDate)\n ? 1\n : -1\n )\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EVideoEmbed\",\n props: {\n videoUrl: {\n type: String,\n required: true,\n },\n platform: {\n type: String as PropType<\"youtube\" | \"vimeo\">,\n required: true,\n validator: (value: string) => [\"youtube\", \"vimeo\"].includes(value),\n },\n iframeListeners: {\n type: Object as PropType<Partial<HTMLIFrameElement>>,\n default: () => ({}),\n },\n iframeOptions: {\n type: Object,\n default: () => ({}),\n },\n },\n computed: {\n videoId(): string | undefined {\n if (this.platform === \"youtube\") {\n const regExp =\n // eslint-disable-next-line no-useless-escape\n /^.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#\\&\\?]*).*/\n\n const match = this.videoUrl.match(regExp)\n\n return match && match[1].length === 11 ? match[1] : undefined\n } else if (this.platform === \"vimeo\") {\n const match = this.videoUrl.match(/vimeo\\.com\\/(\\d+)/)\n\n return match ? match[1] : undefined\n }\n\n return undefined\n },\n embedUrl(): string {\n if (this.platform === \"youtube\") {\n const params = new URLSearchParams({\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://www.youtube.com/embed/${\n this.videoId\n }?${params.toString()}`\n } else if (this.platform === \"vimeo\" && this.videoId) {\n const token = this.videoUrl.split(\"/\").pop()?.split(\"?\")[0]\n const params = new URLSearchParams({\n h: token || \"\",\n quality: \"1080p\",\n ...this.iframeOptions,\n })\n\n return `https://player.vimeo.com/video/${\n this.videoId\n }?${params.toString()}`\n }\n\n return \"\"\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { HeatmapBarItem } from \"@/types\"\nexport default Vue.extend({\n name: \"EHeatmapBar\",\n props: {\n items: {\n type: Array,\n default: () => [] as HeatmapBarItem[],\n },\n selectedValue: {\n type: [String, Number],\n default: \"\",\n },\n showCounts: {\n type: Boolean,\n default: true,\n },\n showNames: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n heatMapBarItems(): HeatmapBarItem[] {\n return this.items as HeatmapBarItem[]\n },\n maxCount(): number {\n return this.items.reduce(\n (a: number, b): number => Math.max(a, (b as HeatmapBarItem).count),\n 0\n )\n },\n },\n methods: {\n getColorIndex(count: number) {\n return Math.ceil((count / this.maxCount) * (this.colors.length - 1))\n },\n getColor(count: number): string {\n const index = this.getColorIndex(count)\n\n return (this.colors[index] || this.colors[0]) as string\n },\n getItemStyle(count: number) {\n return {\n background: this.getColor(count),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport moment from \"moment-timezone\"\nimport { HoursHeatmapChartItem } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EHoursHeatmap\",\n components: {\n EHeatmapBar,\n },\n props: {\n items: {\n type: Array,\n default: () => [] as HoursHeatmapChartItem[],\n },\n selectedHour: {\n type: [String, Number],\n default: \"\",\n },\n showHours: {\n type: Boolean,\n default: true,\n },\n colors: {\n type: Array,\n default: () => [\"#ebedf0\", \"#c0ddf9\", \"#73b3f3\", \"#3886e1\", \"#17459e\"],\n },\n label: {\n type: String,\n default: \"\",\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n itemsByHour(): Record<string, HoursHeatmapChartItem> {\n return (this.items as HoursHeatmapChartItem[]).reduce((acc, item) => {\n return {\n ...(acc as Record<string, HoursHeatmapChartItem>),\n [moment((item as HoursHeatmapChartItem).timestamp).format(\"H\")]: item,\n }\n }, {})\n },\n heatmapBarItems() {\n return new Array(24).fill(undefined).reduce((acc, _, hour) => {\n return [\n ...acc,\n {\n name: (this as any).getFormattedHour(hour),\n value: hour,\n count: (this as any).itemsByHour[hour]?.count || 0,\n },\n ]\n }, [])\n },\n },\n methods: {\n getFormattedHour(h: number): string {\n const hour = h.toString()\n\n return (hour.length > 1 ? hour : `0${hour}`) + (this.dense ? \"h\" : \":00\")\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EReadMore\",\n props: {\n content: {\n type: [Array, String],\n default: () => null,\n },\n maxLength: {\n type: Number,\n default: () => 2,\n },\n showAll: {\n type: Boolean,\n default: false,\n },\n expandText: {\n type: String,\n default: \"see more...\",\n },\n collapseText: {\n type: String,\n default: \"less\",\n },\n moreTextWithPlaceholder: {\n type: String,\n default: \"and {count} more...\",\n },\n },\n data() {\n return {\n showAllContent: false,\n }\n },\n computed: {\n hiddenContentLength(): number {\n return Math.max((this.content?.length ?? 0) - this.maxLength, 0)\n },\n isArrayContent(): boolean {\n return Array.isArray(this.content)\n },\n isHiddenTextContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n !this.isArrayContent\n )\n },\n isHiddenArrayContent(): boolean {\n return (\n this.hiddenContentLength > 0 &&\n !this.showAllContent &&\n this.isArrayContent\n )\n },\n isContentExpanded(): boolean {\n return this.showAllContent && this.content?.length > 0\n },\n computedMoreText(): string {\n return this.moreTextWithPlaceholder.replace(\n \"{count}\",\n this.hiddenContentLength.toString()\n )\n },\n },\n mounted() {\n this.showAllContent = this.showAll\n },\n methods: {\n displayContent() {\n return this.isArrayContent\n ? this.displayArrayContent()\n : this.displayTextContent()\n },\n displayArrayContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as Record<any, any>)\n .slice(0, this.maxLength)\n .join(\", \")\n }\n\n return this.content?.length > -1\n ? (this.content as Record<any, any>).join(\", \")\n : \"\"\n },\n displayTextContent() {\n if (\n this.content?.length > this.maxLength &&\n this.showAllContent === false\n ) {\n return (this.content as string).substr(0, this.maxLength)\n }\n\n return this.content?.length > -1 ? this.content : \"\"\n },\n toggleContentExpansion() {\n this.showAllContent = !this.showAllContent\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ETruncatedDiv\",\n props: {\n width: {\n type: [String, Number],\n required: true,\n },\n fixedWidth: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n containerStyle(): Record<string, any> {\n let width = this.width\n if (typeof width === \"number\") {\n width = `${this.width}px`\n }\n\n return {\n maxWidth: width,\n ...(this.fixedWidth ? { width } : {}),\n }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\n\nexport default Vue.extend({\n name: \"ECompareSeparator\",\n components: {\n EIcon,\n },\n props: {\n xOffset: {\n type: [Number, String],\n default: 50,\n },\n },\n computed: {\n separatorStyle(): Record<string, any> {\n return { left: `${this.xOffset}%` }\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport ECompareSeparator from \"@/components/ECompareSeparator.vue\"\nimport { ResizeObserverDirective } from \"@/directives\"\n\nconst defaultPosition = { width: 0, height: 0, left: 0, top: 0 } as Record<\n string,\n any\n>\n\nexport default Vue.extend({\n name: \"EImagesComparator\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n components: {\n ECompareSeparator,\n },\n props: {\n beforeImageSrc: {\n type: String,\n default: null,\n },\n afterImageSrc: {\n type: String,\n default: null,\n },\n isLoading: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n separatorPositionX: 50,\n startSeparatorPositionX: 50,\n computedImageDimension: defaultPosition,\n isSeparatorDragging: false,\n watermarkDimension: defaultPosition,\n touchIdentifier: null as null | number,\n startTouchX: 0,\n containerRect: {} as DOMRect,\n container: {} as HTMLElement,\n afterImage: {} as HTMLImageElement,\n }\n },\n computed: {\n clipStyle(): Record<string, string> {\n return {\n clip: `rect(auto, ${\n (this.computedImageDimension.width * this.separatorPositionX) / 100 +\n this.computedImageDimension.left\n }px, auto, auto)`,\n }\n },\n contentStyle(): Record<string, string> {\n return {\n width: `${this.computedImageDimension.width}px`,\n height: this.computedImageDimension.height\n ? `${this.computedImageDimension.height}px`\n : \"100%\",\n top: `${this.computedImageDimension.top}px`,\n left: `${this.computedImageDimension.left}px`,\n }\n },\n imageSizeClasses() {\n if (\n !this.isLoading ||\n (this.computedImageDimension.width &&\n this.computedImageDimension.height)\n ) {\n return \"e-w-full e-h-full\"\n }\n\n return \"e-w-0 e-h-0\"\n },\n },\n methods: {\n handleResize() {\n this.container = this.$refs.container as HTMLElement\n this.containerRect = this.container.getBoundingClientRect()\n const { clientHeight: containerHeight, clientWidth: containerWidth } =\n this.container\n this.afterImage = this.$refs.afterImage as HTMLImageElement\n const { naturalHeight: imageHeight, naturalWidth: imageWidth } =\n this.afterImage\n\n const containerRatio = containerWidth / containerHeight\n const imageRatio = imageWidth / imageHeight\n\n if (containerRatio > imageRatio) {\n const width = containerHeight * imageRatio\n this.computedImageDimension = {\n width,\n height: containerHeight,\n top: 0,\n left: (containerWidth - width) / 2,\n }\n } else {\n const height = containerWidth / imageRatio\n this.computedImageDimension = {\n width: containerWidth,\n height,\n top: (containerHeight - height) / 2,\n left: 0,\n }\n }\n this.handleWatermarkResize()\n },\n handleWatermarkResize() {\n const { naturalWidth: imageWidth } = this.afterImage\n const calculateDimension = (factor: number) =>\n (factor * this.computedImageDimension.width) / imageWidth\n\n const scaleFactor = (imageWidth / 100) * 4\n const marginFactor = (imageWidth / 100) * 2\n const size = calculateDimension(scaleFactor)\n const margin = calculateDimension(marginFactor)\n\n this.watermarkDimension = {\n right: `${margin}px`,\n bottom: `${margin}px`,\n width: `${size}px`,\n height: `${size}px`,\n }\n },\n handleMouseMove(event: MouseEvent) {\n if (!this.isSeparatorDragging) {\n return\n }\n\n const offsetX =\n event.clientX -\n this.containerRect.left -\n this.computedImageDimension.left\n const separatorPositionX =\n (offsetX / this.computedImageDimension.width) * 100\n this.separatorPositionX = Math.max(0, Math.min(100, separatorPositionX))\n },\n handleMouseDown() {\n this.isSeparatorDragging = true\n this.container.addEventListener(\"mousemove\", this.handleMouseMove)\n this.container.addEventListener(\"mouseup\", this.handleMouseUp)\n },\n handleMouseUp() {\n if (this.isSeparatorDragging) {\n this.container.removeEventListener(\"mousemove\", this.handleMouseMove)\n this.container.removeEventListener(\"mouseup\", this.handleMouseUp)\n this.isSeparatorDragging = false\n }\n },\n handleTouchStart(event: TouchEvent) {\n const touch = event.touches[0]\n\n if (touch && event.touches.length === 1) {\n this.container.addEventListener(\"touchmove\", this.handleTouchMove)\n this.container.addEventListener(\"touchend\", this.handleTouchEnd)\n this.touchIdentifier = touch.identifier\n this.startTouchX = touch.clientX\n this.startSeparatorPositionX = this.separatorPositionX\n }\n },\n handleTouchMove(event: TouchEvent) {\n const touch = Array.from(event.touches).find(\n (t) => t.identifier === this.touchIdentifier\n )\n\n if (touch) {\n const deltaX = touch.clientX - this.startTouchX\n this.separatorPositionX = Math.max(\n 0,\n Math.min(\n 100,\n (deltaX / this.computedImageDimension.width) * 100 +\n this.startSeparatorPositionX\n )\n )\n }\n },\n handleTouchEnd(event: TouchEvent) {\n const touch = Array.from(event.touches).find(\n (t) => t.identifier === this.touchIdentifier\n )\n if (!touch) {\n this.container.removeEventListener(\"touchmove\", this.handleTouchMove)\n this.container.removeEventListener(\"touchend\", this.handleTouchEnd)\n this.touchIdentifier = null\n }\n },\n },\n})\n","import Vue from \"vue\"\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\nexport default Vue.extend({\n data() {\n return { timeouts: [] as number[] }\n },\n beforeDestroy() {\n this.$clearTimeouts()\n },\n methods: {\n $setTimeout(cb: Function, timeout = 0) {\n const timeoutId = setTimeout(cb, timeout)\n this.timeouts = [...this.timeouts, timeoutId as unknown as number]\n\n return timeoutId\n },\n $clearTimeouts() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n },\n },\n})\n","import Vue from \"vue\"\n\nexport interface IEventListener {\n event: string\n cb: EventListenerCallback\n element?: EventTarget\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\n\nexport type EventListenerCallback = (e: any) => unknown | Promise<unknown>\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $addEventListener: (\n event: string,\n cb: EventListenerCallback,\n element?: EventTarget\n ) => void\n $removeEventListeners: () => void\n }\n}\nexport default Vue.extend({\n data() {\n return { eventListeners: [] as IEventListener[] }\n },\n beforeDestroy() {\n this.$removeEventListeners()\n },\n methods: {\n $addEventListener(event: string, cb: () => void, element = window) {\n if (!(element instanceof HTMLElement || element instanceof Window)) {\n console.error(\n \"$addEventListener: The target element is not an HTMLElement.\"\n )\n console.log(\"$addEventListener: got: \", element)\n\n return\n }\n element.addEventListener(event, cb)\n this.eventListeners = [...this.eventListeners, { element, event, cb }]\n },\n $removeEventListener(event: string, cb: () => void, element = window) {\n const listener = this.eventListeners.find((l: IEventListener) => {\n return l.event === event && l.element === element && l.cb === cb\n })\n\n if (listener) {\n listener.element?.removeEventListener(event, cb)\n this.eventListeners = this.eventListeners.filter(\n (l) => l.event === event && l.cb === cb && l.element === element\n )\n }\n },\n $removeEventListeners() {\n this.eventListeners.forEach(({ element, event, cb }: IEventListener) => {\n element?.removeEventListener(event, cb)\n })\n this.eventListeners = []\n },\n },\n})\n","\nimport timeouts from \"@/mixins/timeouts\"\nimport eventListener from \"@/mixins/event-listeners\"\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"EExpandableMenu\",\n mixins: [timeouts, eventListener],\n props: {\n padding: {\n type: Number,\n default: 4,\n },\n direction: {\n type: String as PropType<\"top\" | \"right\" | \"bottom\" | \"left\">,\n default: \"top\",\n validator: (prop: string) =>\n [\"top\", \"right\", \"bottom\", \"left\"].includes(prop),\n },\n isMobile: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n menu: false,\n touched: false,\n baseSize: {},\n }\n },\n computed: {\n row(): boolean {\n return [\"right\", \"left\"].includes(this.direction)\n },\n reverse(): boolean {\n return [\"top\", \"left\"].includes(this.direction)\n },\n },\n watch: {\n isMobile() {\n this.setButtonsPositions(this.menu)\n },\n direction() {\n this.setButtonsPositions(this.menu)\n },\n padding() {\n this.setButtonsPositions(this.menu)\n },\n },\n mounted() {\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect() || {}\n this.baseSize = {\n width: `${activator.width}px`,\n height: `${activator.height}px`,\n }\n if (!this.isMobile) {\n this.$setTimeout(this.toggleMenu, 100)\n }\n this.$addEventListener(\"resize\", this.setButtonsPositions)\n },\n methods: {\n toggleMenu() {\n this.menu = !this.menu\n this.setButtonsPositions(this.menu)\n },\n setButtonsPositions(open?: boolean) {\n const menu = this.$refs.menu as HTMLDivElement\n const children = Array.from(menu?.children).filter(\n (el) => !el.classList.contains(\"v-tooltip\")\n )\n if (!children || !children.length) {\n return\n }\n const minSize = this.isMobile ? 30 : 40\n const items = Array.from(children) as HTMLElement[]\n const activatorElement = this.$refs.activator as HTMLDivElement\n const activator = activatorElement?.getBoundingClientRect()\n const activatorSize = Math.min(\n activator[this.row ? \"width\" : \"height\"],\n minSize\n )\n\n const translation = open ? activatorSize + this.padding : 0\n const translationDirection = this.row ? \"X\" : \"Y\"\n menu.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * translation\n }px)`\n let buttonSize = 0\n items.forEach((b, index) => {\n if (\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"] > minSize\n ) {\n buttonSize =\n Math.max(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n } else {\n buttonSize =\n Math.min(\n b.getBoundingClientRect()[this.row ? \"width\" : \"height\"],\n minSize\n ) + this.padding\n }\n const position = open ? buttonSize * index : 0\n b.style.transform = `translate${translationDirection}(${\n (this.reverse ? -1 : 1) * position\n }px)`\n })\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"BaseIcon\",\n props: {\n name: {\n type: String,\n default: \"box\",\n },\n color: {\n type: String,\n default: \"#3c3c3c\",\n },\n viewBox: {\n type: String,\n default: \"0 0 128 128\",\n },\n width: {\n type: [Number, String],\n default: 60,\n },\n height: {\n type: [Number, String],\n default: 60,\n },\n size: {\n type: [Number, String, null] as PropType<number | string | null>,\n default: null,\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Bim\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Blur\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Compare\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ConcretePump\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"DroneView\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Dumper\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Evercam\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"black\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EvercamLogo\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"CompactExcavator\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FlatbedSemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FreeDrawing\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"IModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Inspection\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"MiniModel\",\n components: {\n BaseIcon,\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"OtherTrucks\",\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"RoadVehicle\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Roller\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Robot\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SemiTrailer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SkidSteerLoader\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"SmallTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TankTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"The360\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TippingTruck\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckHead\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"TruckMixer\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Worker\",\n components: {\n BaseIcon,\n },\n})\n","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ZohoCrm\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"grey\",\n },\n },\n})\n","import Bim from \"@/components/svgIcons/Bim.vue\"\nimport Blur from \"@/components/svgIcons/Blur.vue\"\nimport Compare from \"@/components/svgIcons/Compare.vue\"\nimport ConcretePump from \"@/components/svgIcons/ConcretePump.vue\"\nimport DroneView from \"@/components/svgIcons/DroneView.vue\"\nimport Dumper from \"@/components/svgIcons/Dumper.vue\"\nimport Evercam from \"@/components/svgIcons/Evercam.vue\"\nimport EvercamLogo from \"@/components/svgIcons/EvercamLogo.vue\"\nimport Excavator from \"@/components/svgIcons/Excavator.vue\"\nimport FlatbedSemiTrailer from \"@/components/svgIcons/FlatbedSemiTrailer.vue\"\nimport FreeDrawing from \"@/components/svgIcons/FreeDrawing.vue\"\nimport IModel from \"@/components/svgIcons/IModel.vue\"\nimport Inspection from \"@/components/svgIcons/Inspection.vue\"\nimport Loader from \"@/components/svgIcons/Loader.vue\"\nimport MiniModel from \"@/components/svgIcons/MiniModel.vue\"\nimport OtherTruck from \"@/components/svgIcons/OtherTruck.vue\"\nimport RoadVehicle from \"@/components/svgIcons/RoadVehicle.vue\"\nimport Roller from \"@/components/svgIcons/Roller.vue\"\nimport Robot from \"@/components/svgIcons/Robot.vue\"\nimport SemiTrailer from \"@/components/svgIcons/SemiTrailer.vue\"\nimport SkidSteerLoader from \"@/components/svgIcons/SkidSteerLoader.vue\"\nimport SmallTruck from \"@/components/svgIcons/SmallTruck.vue\"\nimport TankTruck from \"@/components/svgIcons/TankTruck.vue\"\nimport The360 from \"@/components/svgIcons/The360.vue\"\nimport TippingTruck from \"@/components/svgIcons/TippingTruck.vue\"\nimport TruckHead from \"@/components/svgIcons/TruckHead.vue\"\nimport TruckMixer from \"@/components/svgIcons/TruckMixer.vue\"\nimport Worker from \"@/components/svgIcons/Worker.vue\"\nimport ZohoCrm from \"@/components/svgIcons/ZohoCrm.vue\"\n\nconst SvgIcons = {\n Bim,\n Blur,\n Compare,\n ConcretePump,\n CompactExcavator: Excavator,\n DroneView,\n Dumper,\n Evercam,\n EvercamLogo,\n Excavator,\n FlatbedSemiTrailer,\n FreeDrawing,\n IModel,\n Inspection,\n Loader,\n MiniModel,\n OtherTruck,\n RoadVehicle,\n Roller,\n Robot,\n SemiTrailer,\n SkidSteerLoader,\n SmallTruck,\n TankTruck,\n The360,\n TippingTruck,\n TruckHead,\n TruckMixer,\n Unknown: OtherTruck,\n Worker,\n ZohoCrm,\n}\n\nconst camelToKebabCase = (iconName: string) => {\n return iconName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase()\n}\n\nexport const eSvgIcons = Object.fromEntries(\n Object.entries(SvgIcons).map(([key, value]) => [camelToKebabCase(key), value])\n)\n\nexport default {}\n","\nimport { eSvgIcons } from \"@/components/svgIcons\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ESvgIcon\",\n components: {\n ...eSvgIcons,\n },\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n },\n computed: {\n svgIconComponent(): any {\n return eSvgIcons[this.icon]\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EFlagIcon\",\n props: {\n code: {\n type: String,\n required: true,\n },\n },\n computed: {\n flagCountryIcon() {\n return `fi fi-${this.code?.toLowerCase()}`\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size, TToggleSwitchSize } from \"@/types\"\n\nexport interface EToggleSwitchOption {\n title: string\n value: any\n}\n\nexport type CssClassMap = Record<string, boolean>\ntype SizeClasses = {\n container: CssClassMap\n button: CssClassMap\n text: CssClassMap\n}\n\nexport default Vue.extend({\n name: \"EToggleSwitch\",\n props: {\n options: {\n type: Array as PropType<EToggleSwitchOption[]>,\n required: true,\n },\n color: {\n type: String as PropType<\"brand\" | \"gray\" | \"primary\">,\n default: \"brand\",\n },\n size: {\n type: String as PropType<TToggleSwitchSize>,\n default: Size.sm,\n },\n defaultValue: {\n type: [String, Number, Boolean],\n default: null,\n },\n },\n data() {\n return {\n value: this.defaultValue || this.options[0].value,\n }\n },\n computed: {\n sizeClasses(): SizeClasses {\n return {\n container: {\n \"e-p-1 e-leading-3\": this.size === Size.sm,\n \"e-p-1.5\": this.size === Size.md,\n \"e-p-2\": this.size === Size.lg,\n },\n button: {\n \"e-py-[.2rem] e-p-1 e-rounded-md\": this.size === Size.sm,\n \"e-p-1\": this.size === Size.md,\n \"e-p-1.5\": this.size === Size.lg,\n },\n text: {\n \"e-text-xs\": this.size === Size.sm,\n \"e-text-sm\": this.size === Size.md,\n \"e-text-base\": this.size === Size.lg,\n },\n }\n },\n containerClasses(): CssClassMap {\n return {\n ...this.sizeClasses.container,\n \"e-flex e-items-center e-justify-center e-w-fit e-h-min e-bg-gray-900 e-rounded-md e-e-shadow-md e-transition-colors e-duration-200 e-ease-in-out\":\n true,\n }\n },\n textClasses(): CssClassMap {\n return {\n ...this.sizeClasses.text,\n \"e-font-medium\": true,\n }\n },\n buttonBaseClasses(): CssClassMap {\n return {\n \"e-cursor-pointer\": true,\n \"e-text-gray-100 e-rounded-md e-shadow e-transition e-duration-200 e-ease-in-out\":\n true,\n }\n },\n },\n methods: {\n getButtonClasses(optionValue: any) {\n const dynamicClasses = {\n \"e-border-none\": true,\n \"e-bg-inherit\": this.value !== optionValue,\n \"e-bg-brand-600\": this.color === \"brand\" && this.value === optionValue,\n \"e-bg-gray-600\":\n ![\"primary\", \"brand\"].includes(this.color) &&\n this.value === optionValue,\n \"e-bg-[#629efc] e-text-gray-900 e-font-normal\":\n this.color === \"primary\" && this.value === optionValue,\n }\n\n return {\n ...this.buttonBaseClasses,\n ...this.sizeClasses.button,\n ...dynamicClasses,\n }\n },\n handleClick(value: any) {\n this.value = value\n this.$emit(\"input\", value)\n },\n },\n})\n","import Vue from \"vue\"\nimport eventListeners from \"@/mixins/event-listeners\"\nimport timeouts from \"@/mixins/timeouts\"\n\nexport interface InactivityListenerMixinProps {\n duration: number\n reminders?: number[]\n callback: () => void\n}\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $clearTimeouts: () => void\n $setTimeout: (cb: Function, timeout?: number) => void\n }\n}\n\nexport default Vue.extend({\n mixins: [eventListeners, timeouts],\n data() {\n return {\n inactivityListeners: [] as Array<() => void>,\n isInactivityListenerActive: false,\n }\n },\n beforeDestroy() {\n this.$removeInactivityListeners()\n },\n methods: {\n resetInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.$clearTimeouts()\n this.setInactivityListenerTimer(callback, duration, reminders)\n },\n\n setInactivityListenerTimer(\n callback = () => {},\n duration = 0,\n reminders: number[] = []\n ) {\n if (callback && duration) {\n this.$setTimeout(() => {\n callback()\n if (reminders.length > 0) {\n this.setInactivityListenerReminderTimers(callback, reminders)\n }\n }, duration * 1000)\n }\n },\n setInactivityListenerReminderTimers(\n callback = () => {},\n reminders: number[] = [],\n index = 0\n ) {\n const currentReminder = reminders[index]\n if (index < reminders.length) {\n this.$setTimeout(() => {\n callback()\n this.setInactivityListenerReminderTimers(\n callback,\n reminders,\n index + 1\n )\n }, currentReminder * 1000)\n } else if (this.isInactivityListenerActive) {\n this.$removeInactivityListeners()\n }\n },\n $registerInactivityListener({\n callback = () => {},\n duration = 0,\n reminders = [],\n }: InactivityListenerMixinProps) {\n this.isInactivityListenerActive = true\n this.resetInactivityListenerTimer(callback, duration, reminders)\n const onMouseMove = () =>\n this.resetInactivityListenerTimer(callback, duration, reminders)\n this.$addEventListener(\"mousemove\", onMouseMove)\n this.inactivityListeners.push(onMouseMove)\n },\n $removeInactivityListeners() {\n if (!this.isInactivityListenerActive) {\n return\n }\n this.isInactivityListenerActive = false\n this.inactivityListeners.forEach((cb) => {\n this.$removeEventListener(\"mousemove\", cb)\n })\n this.$clearTimeouts()\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { PropType } from \"vue\"\nimport {\n GlobalSearchResultInput,\n GlobalSearchResult,\n GlobalSearchMatch,\n} from \"@/types\"\nimport { eventListeners } from \"@/mixins\"\nimport moment from \"moment-timezone\"\nimport EIcon from \"@/components/EIcon.vue\"\nexport default Vue.extend({\n name: \"EGlobalSearch\",\n components: {\n EIcon,\n },\n mixins: [eventListeners],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n items: {\n type: Array as PropType<GlobalSearchResultInput>,\n default: () => [],\n },\n timezone: {\n type: String,\n default: \"Europe/Dublin\",\n },\n convertedDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ss\",\n },\n currentDateFormat: {\n type: String,\n default: \"YYYY-MM-DDTHH:mm:ssZ\",\n },\n isFixedPosition: {\n type: Boolean,\n default: true,\n },\n isHidden: {\n type: Boolean,\n default: true,\n },\n deep: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n search: \"\",\n isSearching: false,\n }\n },\n computed: {\n inputClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-900 e-text-white e-ring-gray-700 focus:e-ring-2 focus:e-ring-blue-500 e-placeholder-gray-500\":\n this.dark,\n \"e-bg-white e-text-[#000057] e-ring-gray-300 hover:e-ring-gray-100 focus:e-ring-blue-500 e-placeholder-gray-400\":\n !this.dark,\n }\n },\n },\n watch: {\n search(query: string) {\n if (!query) {\n this.$emit(\"reset\")\n } else if (query.length >= 3) {\n this.$emit(\n \"search-results\",\n this.searchObjectsByQuery(this.items as any[], query)\n )\n }\n },\n },\n mounted() {\n if (!this.isHidden && this.search.length > 0) {\n this.isSearching = true\n } else {\n this.$addEventListener(\"keydown\", this.onKeyHandler)\n this.$addEventListener(\"keyup\", this.onKeyHandler)\n }\n },\n methods: {\n onInput(event: InputEvent) {\n this.search = (event.target as HTMLInputElement).value\n },\n searchObjectsByQuery(\n objects: Array<GlobalSearchResultInput>,\n query: string\n ): Array<GlobalSearchResult> {\n return objects.reduce((acc, obj, index) => {\n const matches = this.findMatchesInObject(obj, query, [])\n if (matches.length > 0) {\n acc.push({ index, matches })\n }\n\n return acc\n }, []) as GlobalSearchResult[]\n },\n findMatchesInObject(\n obj: GlobalSearchResultInput,\n query: string,\n path: string[]\n ): GlobalSearchMatch[] {\n return Object.entries(obj).reduce((matches: any, [key, value]: any) => {\n const currentPath = [...path, key]\n const valueMatches = this.matchesQuery(value, query)\n ? [{ path: currentPath, value }]\n : []\n\n let arrayMatches: any[] = []\n if (this.deep && Array.isArray(value)) {\n arrayMatches = value.flatMap((item, index) =>\n this.findMatchesInObject(item, query, [...currentPath, `${index}`])\n )\n }\n\n const objectMatches =\n this.deep && typeof value === \"object\" && value !== null\n ? this.findMatchesInObject(value, query, currentPath)\n : []\n\n return [...matches, ...valueMatches, ...arrayMatches, ...objectMatches]\n }, [])\n },\n matchesQuery(value: any, query: string): boolean {\n return (\n `${this.isValidDate(value) ? this.formattedTimestamp(value) : value}`\n .toLowerCase()\n .indexOf(query.toLowerCase()) !== -1\n )\n },\n isValidDate(date: string | Date): boolean {\n return moment(date, this.currentDateFormat, true).isValid()\n },\n formattedTimestamp(timestamp: string): string {\n return moment\n .tz(timestamp, this.timezone)\n .format(this.convertedDateFormat)\n },\n onKeyHandler(event: unknown): void {\n const e = event as KeyboardEvent\n const ctrlKey = e.ctrlKey && e.type === \"keydown\"\n const shiftKey = e.shiftKey && e.type === \"keydown\"\n const fKey = [\"f\", \"F\"].includes(e.key) && e.type === \"keydown\"\n const esc = e.key === \"Escape\" && e.type === \"keydown\"\n\n if (fKey && ctrlKey && shiftKey) {\n this.isSearching = true\n this.$nextTick(() => {\n const searchField = this.$refs.searchField as HTMLElement\n searchField && searchField.focus()\n })\n }\n if (esc) {\n this.isSearching = false\n this.search = \"\"\n }\n },\n },\n})\n","// Components\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EBadge from \"@/components/EBadge.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport EVideoPlayer from \"@/components/EVideoPlayer.vue\"\nimport ETimeline from \"@/components/ETimeline.vue\"\nimport EVideoEmbed from \"@/components/EVideoEmbed.vue\"\nimport EHeatmapBar from \"@/components/EHeatmapBar.vue\"\nimport EHoursHeatmap from \"@/components/EHoursHeatmap.vue\"\nimport EReadMore from \"@/components/EReadMore.vue\"\nimport ETruncatedDiv from \"@/components/ETruncatedDiv.vue\"\nimport ECompareSeparator from \"@/components/ECompareSeparator.vue\"\nimport EImagesComparator from \"@/components/EImagesComparator.vue\"\nimport EExpandableMenu from \"@/components/EExpandableMenu.vue\"\nimport ESvgIcon from \"@/components/ESvgIcon.vue\"\nimport ECalendarHeatmap from \"@/components/ECalendarHeatmap.vue\"\nimport EFlagIcon from \"@/components/EFlagIcon.vue\"\n\nimport EToggleSwitch from \"@/components/EToggleSwitch.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\n// Directives\nimport { DirectivesMap } from \"@/directives\"\nimport * as mixins from \"@/mixins\"\n\nimport { VueConstructor } from \"vue\"\nimport EGlobalSearch from \"@/components/EGlobalSearch.vue\"\n\nexport const components = {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EImagesComparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n ECalendarHeatmap,\n EFlagIcon,\n}\n\nexport default {\n install(Vue: VueConstructor) {\n // Register components\n Object.keys(components).forEach((name) => {\n // @ts-ignore\n Vue.component(name, components[name])\n })\n\n // Register mixins\n Object.keys(mixins).forEach((name) => {\n // @ts-ignore\n Vue.mixin(name, mixins[name])\n })\n\n // Register directives\n DirectivesMap.forEach(({ name, definition }) => {\n Vue.directive(name, definition)\n })\n },\n}\n\nexport {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n EVideoEmbed,\n EHeatmapBar,\n EHoursHeatmap,\n EReadMore,\n ETruncatedDiv,\n ECompareSeparator,\n EImagesComparator,\n EToggleSwitch,\n EExpandableMenu,\n EZoomable,\n EGlobalSearch,\n ESvgIcon,\n ECalendarHeatmap,\n EFlagIcon,\n}\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n\nexport * from \"@/mixins\"\n"],"names":["Size","BaseColor","TimelineAxis","TimelineChartType","TimelineIntervalChangeTrigger","_sfc_main$Q","Vue","colorClasses","sizeClasses","_sfc_main$P","Badge","x","create","picocolors_browserModule","exports","_export","target","all","name","dim","_default","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","colors","colors_1","TailwindColors","__CJS__import__0__.default","__CJS__import__0__","BrandColors","customColors","CustomColors","config","module","negateValue","value","sign","numericFunctions","fn","pluginConfig","plugins","pluginName","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","flag","_config_future","_config_future_flag","_ref","_config_experimental","_config_experimental_flag","_ref1","experimentalFlagsEnabled","changes","s","normalizeConfig","_featureFlags","_interop_require_wildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","_purge_options","content","purge","safelist","blocklist","item","_config_prefix","extract","_config_purge","_config_content","_config_purge1","_config_purge_extract","_config_content1","_config_content_extract","_config_purge2","_config_purge_options","_config_content2","_config_content_options","extractors","defaultExtractor","extensions","extractor","extension","transform","_config_purge_transform","_config_content_transform","transformers","file","isPlainObject","prototype","cloneDeep","child","v","escapeCommas","className","parseColor","formatColor","_colorNames","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","_match_","_match__toString","hex","_","r","g","b","a","_value_match","match","color","part","mode","alpha","hasAlpha","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","properties","p","splitAtTopLevelOnly","separator","stack","parts","lastPos","isEscaped","idx","char","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","result","seen","shadows","normalize","url","number","percentage","length","lineWidth","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","require$$2","cssFunctions","isCSSFunction","AUTO_VAR_INJECTION_EXCEPTIONS","context","isRoot","isVarException","fullMatch","characterBefore","normalizeMathOperatorSpacing","preventFormattingInFunctions","preventFormattingKeywords","lastChar","i","peek","word","j","consumeUntil","chars","minIndex","index","keyword","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","backgroundSize","_dataTypes","keywordValues","sizes","size","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","typeMap","coerceValue","getMatchingTypes","_escapeCommas","_withAlphaVariable","_negateValue","require$$3","_validateFormalSyntax","require$$4","require$$5","selectors","updateClass","sel","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","options","_options_values","splitUtilityModifier","slashIdx","arbitraryStartIdx","arbitraryEndIdx","oldValue","opacityValue","unwrapArbitraryModifier","tailwindConfig","_options_values1","_options_values2","_tailwindConfig_theme","_tailwindConfig_theme_opacity","_options_values_color","normalizedColor","guess","supportedTypes","splitAtFirst","delim","types","arbitraryValue","explicitType","matches","rawModifier","modifiersEnabled","utilityModifier","_options_modifiers","_options_modifiers_utilityModifier","configValue","toColorValue","maybeFunction","resolveConfig","_corePluginList","_configurePlugins","_colors","_defaults","_toPath","_normalizeConfig","require$$6","_isPlainObject","require$$7","_cloneDeep","require$$8","_pluginUtils","require$$9","require$$10","_toColorValue","require$$11","isFunction","mergeWith","customizer","merged","configUtils","scale","negativeScale","negativeValue","screens","breakpoints","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","e","toPaths","pattern","prefix","newPath","resolveFunctionKeys","object","resolvePath","val","normalized","extractPluginConfigs","configs","allConfigs","_config_plugins","plugin","_plugin_config","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","_t_theme","_c_plugins","t","c","config_full","getAllConfigs","_configfull","_config_presets","preset","features","experimentals","feature","_resolveConfig","_getAllConfigs","defaultConfigs","resolveConfig_1","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","ToggleSwitchSizes","BadgeColors","EVENTS","_sfc_main$O","acc","iconClasses","_b","_a","_sfc_main$N","fill","animationDuration","_sfc_main$M","_sfc_main$L","prop","acceptUndefined","n","isFullScreen","doc","makeFullScreen","element","resolve","el","exitFullScreen","debounce","func","wait","timeout","getRandomChars","_sfc_main$K","imgStyle","container","containerRect","contentRect","mouseX","mouseY","delta","oldScale","xPercent","yPercent","maxLeft","minLeft","minTop","maxTop","deltaX","deltaY","correctionTop","correctionRight","correctionBottom","correctionLeft","pointers","midPoint","leadingZeroFormatter","VIDEO_PLAYER_EVENTS","formatDuration","time","seconds","minutes","hours","_sfc_main$J","ESpinner","EZoomable","Hls","videoOptions","moment","player","start","end","isTargetTimestampAvailable","src","playerRef","videoSource","xhr","_c","_d","manifest","firstLevelDetails","startOffset","_e","data","isNetworkError","isMediaError","isNotFoundError","shouldAttemptFallback","attemptFallback","handleError","event","which","timelineContainer","error","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","getFormattedDay","d","day","d3","daySuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","format","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","ResizeObserverDirective","binding","callback","observer","entries","DirectivesMap","milestoneClasses","_sfc_main$I","contentFirstChild","contentBox","existingTimeoutId","timeoutId","transitionDuration","timeoutDuration","milestone","classes","_sfc_main$H","ETimelineMilestone","eventsGroup","combinedLabelsHeight","axesCount","_group","flattenedEvents","oldestEvent","latestEvent","allTimestamps","group","timestamp","isVisible","visibleStart","visibleEnd","filteredFlattenedCounts","eventStart","eventEnd","cursorX","date","interval","startDate","endDate","defsSelection","chartType","id","stop","opacity","sampleTimestamp","padding","axisName","axis","markersTimestamps","marker","minTimestamp","maxTimestamp","t1","t2","domainSpan","domainWidth","viewportSpan","paddedViewportSpan","scaleFactor","scaleExtent","scaledMinTimestampPosition","scaledMaxTimestampPosition","centerPoint","translateX","currentTransform","overlapThreshold","markersArray","markerX","isHidden","nextMarker","nextTimestamp","nextMarkerX","parent","targetId","targetType","selection","cursor","timeAtPixel0","timeAtPixel1","HOUR","newDensity","trigger","visibleFrom","visibleTo","fromDate","toDate","resizeObserverEntry","that","bgFill","text","formattedDateTz","_event","eventData","eventType","entry","count","groupType","scaleCopy","newDomain","minDateLimit","maxDateLimit","newScale","targetTimestamp","targetDate","targetX","newDomainStart","newDomainEnd","minDate","maxDate","timelineWidth","fullRange","totalDuration","leftDuration","rightDuration","newWidth","newX","startTime","endTime","curr","minScale","maxScale","ticksConfig","textElement","textBBox","rectsAndDots","rectsOnly","eventTextSelector","groupsCount","getW","getH","getX","getY","containerSelector","hoverZoneSelector","barSelector","barCapSelector","area","startTimestamp","endTimestamp","width","oneSecondWidth","maxCharacters","style","markerElement","dragEvent","targetLeft","newTimestamp","newPosition","isNewTimestampAllowed","timelineHeight","reset","visibleDomain","startX","endX","yOffset","eventsGroups","gElement","events","isLoading","label","labelHeight","labelYPosition","loadingIndicatorYPosition","labelsGElement","clipPathId","circle","dots","dotsSize","bottom","bgColor","barBorderRadius","height","yPosition","backgroundHeight","linePosition","milestoneColor","groupColor","groupName","offset","milestonesContainer","milestones","y","rectHeight","eventBarContainers","bar","bg","labelGroup","baseColor","internalVisibility","configVisibility","offsetMinutes","userUtcOffset","bounds","unit","getNextTimestamp","getPreviousTimestamp","filledEvents","currentEvent","nextEvent","currentTimestamp","fillerAfterCurrent","fillerBeforeNext","firstEventTimestamp","lastEventTimestamp","firstFiller","lastFiller","defaultEvent","milestoneType","_sfc_main$G","regExp","params","token","_sfc_main$F","_sfc_main$E","EHeatmapBar","h","_sfc_main$D","_sfc_main$C","_sfc_main$B","EIcon","defaultPosition","_sfc_main$A","ECompareSeparator","containerHeight","containerWidth","imageHeight","imageWidth","containerRatio","imageRatio","calculateDimension","factor","marginFactor","margin","separatorPositionX","touch","timeouts","cb","eventListeners","listener","l","_sfc_main$z","eventListener","activatorElement","activator","open","menu","children","minSize","activatorSize","translation","translationDirection","buttonSize","_sfc_main$y","_sfc_main$x","BaseIcon","_sfc_main$w","_sfc_main$v","_sfc_main$u","_sfc_main$t","_sfc_main$s","_sfc_main$r","_sfc_main$q","_sfc_main$p","_sfc_main$o","_sfc_main$n","_sfc_main$m","_sfc_main$l","_sfc_main$k","_sfc_main$j","_sfc_main$i","_sfc_main$h","_sfc_main$g","_sfc_main$f","_sfc_main$e","_sfc_main$d","_sfc_main$c","_sfc_main$b","_sfc_main$a","_sfc_main$9","_sfc_main$8","_sfc_main$7","_sfc_main$6","_sfc_main$5","SvgIcons","Bim","Blur","Compare","ConcretePump","Excavator","DroneView","Dumper","Evercam","EvercamLogo","FlatbedSemiTrailer","FreeDrawing","IModel","Inspection","Loader","MiniModel","OtherTruck","RoadVehicle","Roller","Robot","SemiTrailer","SkidSteerLoader","SmallTruck","TankTruck","The360","TippingTruck","TruckHead","TruckMixer","Worker","ZohoCrm","camelToKebabCase","iconName","eSvgIcons","_sfc_main$4","_sfc_main$2","_sfc_main$1","optionValue","dynamicClasses","inactivityListener","reminders","currentReminder","onMouseMove","_sfc_main","query","objects","currentPath","valueMatches","arrayMatches","objectMatches","ctrlKey","shiftKey","fKey","esc","searchField","components","EAvatar","EBadge","ERow","ECol","EVideoPlayer","ETimeline","EVideoEmbed","EHoursHeatmap","EReadMore","ETruncatedDiv","EImagesComparator","EToggleSwitch","EExpandableMenu","EGlobalSearch","ESvgIcon","ECalendarHeatmap","EFlagIcon","mixins","definition"],"mappings":"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AAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;;;;AC5LJ,SAAO,eAAwBN,GAAA,cAAc;AAAA,IACzC,OAAO;AAAA,EACX,CAAC,GACD,OAAO,eAAe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","x_google_ignoreList":[3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}
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","../node_modules/tailwindcss/lib/util/flattenColorPalette.js","../node_modules/tailwind-scrollbar/src/helpers.js","../node_modules/tailwind-scrollbar/src/utilities.js","../node_modules/tailwind-scrollbar/src/variants.js","../node_modules/tailwind-scrollbar/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/ETimelineForbiddenInterval.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/ETimelineRectsChartGroupedDots.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineRectsChart.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineLinesChart.vue?vue&type=script&lang.ts","../src/components/charts/ETimelineBarsChart.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/Brightness.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/MarkUp.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/Nerves.vue?vue&type=script&lang.ts","../src/components/svgIcons/index.ts","../src/components/ESvgIcon.vue?vue&type=script&lang.ts","../src/mixins/form-field.ts","../src/mixins/toggle-open.ts","../src/mixins/select-form-field.ts","../src/components/EToggleSwitch.vue?vue&type=script&lang.ts","../src/components/ERangeSlider.vue?vue&type=script&lang.ts","../src/components/EDivider.vue?vue&type=script&lang.ts","../src/components/ESchedulePicker.vue?vue&type=script&lang.ts","../src/mixins/inactivity-listener.ts","../src/components/EPopover.vue?vue&type=script&lang.ts","../src/components/ECheckbox.vue?vue&type=script&lang.ts","../src/components/ESelect.vue?vue&type=script&lang.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/components/ETabs.vue?vue&type=script&lang.ts","../src/components/ECard.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import {\n AvatarSizes,\n BadgeColors,\n BadgeSizes,\n IconSizes,\n ToggleSwitchSizes,\n} from \"@/constants\"\n\nexport enum ScheduleType {\n Continuous = \"continuous\",\n WorkingHours = \"workingHours\",\n Empty = \"empty\",\n Custom = \"custom\",\n}\n\nexport enum Days {\n Monday = \"monday\",\n Tuesday = \"tuesday\",\n Wednesday = \"wednesday\",\n Thursday = \"thursday\",\n Friday = \"friday\",\n Saturday = \"saturday\",\n Sunday = \"sunday\",\n}\n\nexport type Schedule = {\n [day in Days]: string[]\n}\n\nexport enum Size {\n Dot = \"dot\",\n TwoXs = \"2xs\",\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"base\",\n Base = \"base\",\n Lg = \"lg\",\n Xl = \"xl\",\n TwoXl = \"2xl\",\n ThreeXl = \"3xl\",\n FourXl = \"4xl\",\n FiveXl = \"5xl\",\n SixXl = \"6xl\",\n SevenXl = \"7xl\",\n EightXl = \"8xl\",\n NineXl = \"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 textColor?: 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 groupOverlappingDots?: boolean\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 ThreeSixty = \"360\",\n FourEighty = \"480\",\n SevenTwenty = \"720\",\n OneZeroEightZero = \"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 color: BaseColor\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: any\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.TwoXs]: \"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.TwoXl]: \"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","\"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 flattenColorPalette = (colors)=>Object.assign({}, ...Object.entries(colors !== null && colors !== void 0 ? colors : {}).flatMap(([color, values])=>typeof values == \"object\" ? Object.entries(flattenColorPalette(values)).map(([number, hex])=>({\n [color + (number === \"DEFAULT\" ? \"\" : `-${number}`)]: hex\n })) : [\n {\n [`${color}`]: values\n }\n ]));\nconst _default = flattenColorPalette;\n","/**\n * Gets the underlying default import of a module.\n *\n * This is used to handle internal imoprts from Tailwind, since Tailwind Play\n * handles these imports differently.\n *\n * @template T\n * @param {T | { __esModule: unknown, default: T }} mod The module\n * @returns {T} The bare export\n */\n// eslint-disable-next-line no-underscore-dangle\nconst importDefault = mod => (mod && mod.__esModule ? mod.default : mod);\n\nmodule.exports = {\n importDefault\n};\n","// TODO: Figure out why the linter is unhappy with this import\n// eslint-disable-next-line import/no-unresolved\nconst flattenColorPaletteImport = require('tailwindcss/lib/util/flattenColorPalette');\nconst typedefs = require('./typedefs');\nconst { importDefault } = require('./helpers');\n\n// Tailwind Play will import these internal imports as ES6 imports, while most\n// other workflows will import them as CommonJS imports.\nconst flattenColorPalette = importDefault(flattenColorPaletteImport);\n\nconst COMPONENTS = ['track', 'thumb', 'corner'];\n\n/**\n * @param {Record<never, unknown>} properties - The properties to assign\n * @param {boolean} preferPseudoElements - If true, only browsers that cannot\n * use pseudoelements will specify scrollbar properties\n * @returns {Record<string, unknown>} - The generated CSS rules\n */\nconst scrollbarProperties = (properties, preferPseudoElements) => {\n if (preferPseudoElements) {\n return {\n '@supports (-moz-appearance:none)': properties\n };\n }\n\n return properties;\n};\n\n/**\n * Base resets to make the plugin's utilities work\n *\n * @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object\n * @param {'standard' | 'peseudoelements'} preferredStrategy - The preferred\n * scrollbar styling strategy: standards track or pseudoelements\n */\nconst addBaseStyles = ({ addBase }, preferredStrategy) => {\n addBase({\n '*': scrollbarProperties({\n 'scrollbar-color': 'initial',\n 'scrollbar-width': 'initial'\n }, preferredStrategy === 'pseudoelements')\n });\n};\n\n/**\n * Generates utilties that tell an element what to do with\n * --scrollbar-track and --scrollbar-thumb custom properties\n *\n * @returns {Record<string, unknown>} - The generated CSS\n */\nconst generateBaseUtilities = () => ({\n ...Object.fromEntries(COMPONENTS.map(component => {\n const base = `&::-webkit-scrollbar-${component}`;\n\n return [\n [base, {\n 'background-color': `var(--scrollbar-${component})`,\n 'border-radius': `var(--scrollbar-${component}-radius)`\n }]\n ];\n }).flat())\n});\n\n/**\n * Utilities for initializing a custom styled scrollbar, which implicitly set\n * the scrollbar's size\n *\n * @param {object} options - Options\n * @param {boolean} options.preferPseudoElements - If true, only browsers that\n * cannot use pseudoelements will specify scrollbar-width\n * @returns {Record<string, unknown>} - Base size utilities for scrollbars\n */\nconst generateScrollbarSizeUtilities = ({ preferPseudoElements }) => ({\n '.scrollbar': {\n ...generateBaseUtilities(),\n ...scrollbarProperties({\n 'scrollbar-width': 'auto',\n 'scrollbar-color': 'var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)'\n }, preferPseudoElements),\n\n '&::-webkit-scrollbar': {\n display: 'block',\n width: 'var(--scrollbar-width, 16px)',\n height: 'var(--scrollbar-height, 16px)'\n }\n },\n\n '.scrollbar-thin': {\n ...generateBaseUtilities(),\n ...scrollbarProperties({\n 'scrollbar-width': 'thin',\n 'scrollbar-color': 'var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)'\n }, preferPseudoElements),\n\n '&::-webkit-scrollbar': {\n display: 'block',\n width: '8px',\n height: '8px'\n }\n },\n\n '.scrollbar-none': {\n ...scrollbarProperties({\n 'scrollbar-width': 'none'\n }, preferPseudoElements),\n\n '&::-webkit-scrollbar': {\n display: 'none'\n }\n }\n});\n\n/**\n * Converts a color value or function to a color value\n *\n * @param {string | Function} maybeFunction - The color value or function\n * @returns {string} - The color value\n */\nconst toColorValue = maybeFunction => (typeof maybeFunction === 'function' ? maybeFunction({}) : maybeFunction);\n\n/**\n * Adds scrollbar-COMPONENT-COLOR utilities for every scrollbar component.\n *\n * @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object\n */\nconst addColorUtilities = ({ matchUtilities, theme }) => {\n const themeColors = flattenColorPalette(theme('colors'));\n const colors = Object.fromEntries(\n Object.entries(themeColors).map(([k, v]) => [k, toColorValue(v)])\n );\n\n COMPONENTS.forEach(component => {\n matchUtilities(\n {\n [`scrollbar-${component}`]: value => ({\n [`--scrollbar-${component}`]: toColorValue(value)\n })\n },\n {\n values: colors,\n type: 'color'\n }\n );\n });\n};\n\n/**\n * Adds scrollbar-COMPONENT-rounded-VALUE utilities for every scrollbar\n * component.\n *\n * @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object\n */\nconst addRoundedUtilities = ({ theme, matchUtilities }) => {\n COMPONENTS.forEach(component => {\n matchUtilities(\n {\n [`scrollbar-${component}-rounded`]: value => ({\n [`--scrollbar-${component}-radius`]: value\n })\n },\n {\n values: theme('borderRadius')\n }\n );\n });\n};\n\n/**\n * @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object\n * @param {'standard' | 'peseudoelements'} preferredStrategy - The preferred\n * scrollbar styling strategy: standards track or pseudoelements\n */\nconst addBaseSizeUtilities = ({ addUtilities }, preferredStrategy) => {\n addUtilities(generateScrollbarSizeUtilities({\n preferPseudoElements: preferredStrategy === 'pseudoelements'\n }));\n};\n\n/**\n * Adds scrollbar-w-* and scrollbar-h-* utilities\n *\n * @param {typedefs.TailwindPlugin} tailwind - Tailwind's plugin object\n */\nconst addSizeUtilities = ({ matchUtilities, theme }) => {\n ['width', 'height'].forEach(dimension => {\n matchUtilities({\n [`scrollbar-${dimension[0]}`]: value => ({\n [`--scrollbar-${dimension}`]: value\n })\n }, {\n values: theme(dimension)\n });\n });\n};\n\nmodule.exports = {\n addBaseStyles,\n addBaseSizeUtilities,\n addColorUtilities,\n addRoundedUtilities,\n addSizeUtilities\n};\n","/** @typedef {import('./typedefs').TailwindPlugin} TailwindPlugin */\n\n/**\n * Adds scrollbar variants for styling webkit scrollbars' hover and active\n * states.\n *\n * Earlier iterations of this plugin hijacked the hover: and active: variants\n * directly to create a cleaner syntax, but there are several issues with that\n * approach:\n * - It made the plugin prone to breaking other unrelated styles\n * - It made logic like \"make an element's scrollbar green when the\n * _element_ is hovered impossible. (This is unusual, but should still\n * be possible.)\n * - It straight up does not work in Tailwind v4.\n *\n * @param {TailwindPlugin} tailwind - Tailwind's plugin object\n */\nconst addVariants = ({ addVariant }) => {\n addVariant('scrollbar-hover', '&::-webkit-scrollbar-thumb:hover');\n addVariant('scrollbar-track-hover', '&::-webkit-scrollbar-track:hover');\n addVariant('scrollbar-corner-hover', '&::-webkit-scrollbar-corner:hover');\n\n addVariant('scrollbar-active', '&::-webkit-scrollbar-thumb:active');\n addVariant('scrollbar-track-active', '&::-webkit-scrollbar-track:active');\n addVariant('scrollbar-corner-active', '&::-webkit-scrollbar-corner:active');\n};\n\nmodule.exports = {\n addVariants\n};\n","// TODO: Figure out why the linter is unhappy with this import\n// eslint-disable-next-line import/no-unresolved\nconst plugin = require('tailwindcss/plugin');\nconst {\n addBaseStyles,\n addBaseSizeUtilities,\n addColorUtilities,\n addRoundedUtilities,\n addSizeUtilities\n} = require('./utilities');\nconst { addVariants } = require('./variants');\n\nmodule.exports = plugin.withOptions((options = {}) => tailwind => {\n let preferredStrategy = options.preferredStrategy ?? 'standard';\n\n if (preferredStrategy !== 'standard' && preferredStrategy !== 'pseudoelements') {\n // eslint-disable-next-line no-console\n console.warn('WARNING: tailwind-scrollbar preferredStrategy should be \\'standard\\' or \\'pseudoelements\\'');\n preferredStrategy = 'standard';\n }\n\n addBaseStyles(tailwind, preferredStrategy);\n addBaseSizeUtilities(tailwind, preferredStrategy);\n addColorUtilities(tailwind);\n addVariants(tailwind);\n\n if (options.nocompatible) {\n addRoundedUtilities(tailwind);\n addSizeUtilities(tailwind);\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: [\n require(\"@tailwindcss/typography\"),\n require(\"tailwind-scrollbar\")({\n nocompatible: true,\n preferredStrategy: \"pseudoelements\",\n }),\n ],\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.TwoXl,\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.TwoXl,\n Size.ThreeXl,\n Size.FourXl,\n Size.FiveXl,\n Size.SixXl,\n Size.SevenXl,\n Size.EightXl,\n Size.NineXl,\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 {\n FullscreenDocument,\n FullscreenHTMLElement,\n Schedule,\n ScheduleType,\n} 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\nexport const schedules: Record<ScheduleType, Schedule> = {\n continuous: {\n monday: [\"00:00-23:59\"],\n tuesday: [\"00:00-23:59\"],\n wednesday: [\"00:00-23:59\"],\n thursday: [\"00:00-23:59\"],\n friday: [\"00:00-23:59\"],\n saturday: [\"00:00-23:59\"],\n sunday: [\"00:00-23:59\"],\n },\n custom: {\n monday: [\"00:00-23:59\"],\n tuesday: [\"00:00-23:59\"],\n wednesday: [\"00:00-23:59\"],\n thursday: [\"00:00-23:59\"],\n friday: [\"00:00-23:59\"],\n saturday: [\"00:00-23:59\"],\n sunday: [\"00:00-23:59\"],\n },\n workingHours: {\n monday: [\"08:00-18:00\"],\n tuesday: [\"08:00-18:00\"],\n wednesday: [\"08:00-18:00\"],\n thursday: [\"08:00-18:00\"],\n friday: [\"08:00-18:00\"],\n saturday: [],\n sunday: [],\n },\n empty: {\n monday: [],\n tuesday: [],\n wednesday: [],\n thursday: [],\n friday: [],\n saturday: [],\n sunday: [],\n },\n}\n\nexport const twentyFourHours = 24 * 60 - 1\n\nexport const hoursMinutesStrToMinutes = (time: string): number => {\n const [hours, minutes] = time.split(\":\")\n\n return parseInt(hours) * 60 + parseInt(minutes)\n}\n\nexport const minutesToHoursMinutesStr = (number: number): string => {\n const hour = Math.floor(number / 60)\n .toString()\n .padStart(2, \"0\")\n const minutes = (number % 60).toString().padStart(2, \"0\")\n\n return `${hour}:${minutes}`\n}\n\nexport function toNumericSchedule(\n schedule: Schedule\n): Record<string, [number, number]> {\n const sortedDays = [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\",\n ]\n\n return sortedDays.reduce((acc, day) => {\n const hours = schedule[day as keyof Schedule]\n\n return {\n ...acc,\n [day]: hours.length\n ? hours[0].split(\"-\").map((h) => hoursMinutesStrToMinutes(h))\n : [0, twentyFourHours],\n }\n }, {})\n}\n\nexport function subtractOneHourFromEndIntervals(\n schedule: Record<string, string[]>\n): Record<string, string[]> {\n return Object.fromEntries(\n Object.entries(schedule).map(([day, hours]) => [\n day,\n hours.map((interval) => {\n const [start, end] = interval.split(\"-\")\n let [endHour, endMinute]: [string | number, string | number] =\n end.split(\":\") as [string, string]\n endHour = parseInt(endHour)\n\n endHour = Math.max(0, endHour - 1)\n\n return `${start}-${endHour.toString().padStart(2, \"0\")}:${endMinute}`\n }),\n ])\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 isEdgeVideo: {\n type: Boolean,\n default: false,\n },\n edgeStreamingToken: {\n type: String,\n default: \"\",\n },\n authToken: {\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: \"SevenXl\",\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 streamingToken() {\n return this.isEdgeVideo ? this.edgeStreamingToken : this.authToken\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\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\ninterface ClickOutsideElement extends HTMLElement {\n clickOutsideHandler: {\n events: string[]\n // eslint-disable-next-line no-undef\n handler: EventListener\n callback: (event: Event) => void\n }\n}\n\nconst isWithinElement = (element: HTMLElement, target: Node): boolean => {\n return element === target || element.contains(target)\n}\n\nconst createEventHandler = (\n element: HTMLElement,\n callback: Function\n // eslint-disable-next-line no-undef\n): EventListener => {\n return (event: Event) => {\n if (!isWithinElement(element, event.target as Node)) {\n callback(event)\n }\n }\n}\n\nconst EVENTS = [\"mousedown\", \"touchstart\", \"click\"] as string[]\n\nconst ClickOutsideDirective: DirectiveOptions = {\n bind(el: HTMLElement, binding): void {\n const element = el as ClickOutsideElement\n const callback = binding.value\n\n if (typeof callback !== \"function\") {\n console.warn(\"v-click-outside requires a function value\")\n\n return\n }\n\n // Create handler object\n element.clickOutsideHandler = {\n events: EVENTS,\n handler: createEventHandler(element, callback),\n callback,\n }\n\n // Add event listeners after a microtask to ensure proper binding\n queueMicrotask(() => {\n EVENTS.forEach((event) => {\n document.addEventListener(event, element.clickOutsideHandler.handler)\n })\n })\n },\n\n unbind(el: HTMLElement): void {\n const element = el as ClickOutsideElement\n\n if (element.clickOutsideHandler) {\n element.clickOutsideHandler.events.forEach((event) => {\n document.removeEventListener(event, element.clickOutsideHandler.handler)\n })\n // @ts-expect-error non-optional\n delete element.clickOutsideHandler\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 transparencyGradientHover: \"transparency-gradient-hover\",\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 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, TimelineIntervalChangeTrigger } 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 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\n\n return this.toD3Date(minDate)\n },\n maxDate(): Date {\n const [, maxDate] = this.domain\n\n return this.toD3Date(maxDate)\n },\n focusedStartDate(): Date {\n const [startDate] = this.focusedDomain || this.domain\n\n return this.toD3Date(startDate)\n },\n focusedEndDate(): Date {\n const [, endDate] = this.focusedDomain || this.domain\n\n return this.toD3Date(endDate)\n },\n },\n watch: {\n timeScale() {\n this.emitFocusedDomainChange(TimelineIntervalChangeTrigger.Zoom)\n this.emitTimeScaleChange()\n },\n focusedDomain(v) {\n if (!v) {\n return\n }\n this.zoomToFocusedDomain(v)\n },\n focusedTimestamp(date) {\n if (date) {\n this.panToTimestamp(date)\n }\n },\n width: {\n handler(value, oldValue) {\n if (!value || value === oldValue) {\n return\n }\n this.timeScale = d3\n .scaleTime()\n .domain([this.focusedStartDate, this.focusedEndDate])\n .range([0, value])\n },\n },\n },\n mounted() {\n this.initRefs()\n this.initTimeScale()\n this.initZoomBehavior()\n this.emitTimeScaleChange()\n this.emitFocusedDomainChange(TimelineIntervalChangeTrigger.Initial)\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 [newDomainStart, newDomainEnd] = newTimeScale.domain()\n const isLeftBoundaryReached = newDomainStart <= this.minDate\n const isRightBoundaryReached = newDomainEnd >= 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([newDomainStart, newDomainEnd])\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 [startFocusedDomain, endFocusedDomain] = focusedDomain\n const startDate = this.toD3Date(\n startFocusedDomain ?? this.focusedStartDate\n )\n const endDate = this.toD3Date(endFocusedDomain ?? this.focusedEndDate)\n if (!this.timeScale) {\n return\n }\n const [start, end] = this.timeScale.domain()\n if (\n startDate.getTime() === start.getTime() &&\n endDate.getTime() === end.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(startDate, endDate, scaleFactor)\n )\n this.timeScale = newTimeScale\n },\n translateIntervalIntoView(\n minTimestamp: Date,\n maxTimestamp: Date,\n scaleFactor: number\n ) {\n const scaledMinTimestampPosition = this.timeScale(minTimestamp)\n const scaledMaxTimestampPosition = this.timeScale(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 .on(\"start\", () => {\n this.isTransitioning = true\n this.$emit(\"animation-start\")\n })\n .on(\"end\", () => {\n this.isTransitioning = false\n this.$emit(\"animation-end\")\n })\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(trigger: TimelineIntervalChangeTrigger) {\n const container = this.selection.node() as HTMLElement\n if (!container || this.isTransitioning || !this.timeScale) {\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 const fromDate = this.toDateString(visibleFromDate)\n const toDate = this.toDateString(visibleToDate)\n\n this.$emit(\"visible-interval-change\", {\n fromDate,\n toDate,\n trigger,\n transform: this.transformDiff,\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(TimelineIntervalChangeTrigger.Zoom)\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: 100,\n opacity: 0.4,\n },\n {\n id: \"transparency-gradient\",\n stop: 130,\n opacity: 0.4,\n },\n {\n id: \"transparency-gradient-hover\",\n stop: 130,\n opacity: 0.6,\n },\n ],\n }\n },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { tzDateToD3Date } from \"@/components/charts/utils\"\nimport { TimelineInterval, Timestamp } from \"@/types\"\nimport { defs, classNames } from \"@/components/charts/constants\"\n\nexport default Vue.extend({\n name: \"ETimelineForbiddenInterval\",\n props: {\n timeScale: {\n type: Function as PropType<d3.ScaleTime<any, any, unknown>>,\n required: true,\n },\n interval: {\n type: Object as PropType<TimelineInterval>,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n timezone: {\n type: String,\n default: \"UTC\",\n },\n },\n data() {\n return { classNames, defs }\n },\n computed: {\n visibleDomain(): Date[] {\n return this.timeScale.domain()\n },\n startX(): number {\n const startTime =\n this.interval.startDate === -Infinity\n ? this.visibleDomain[0]\n : this.tzStringToDate(this.interval.startDate)\n\n return this.timeScale(startTime)\n },\n endX(): number {\n const endTime =\n this.interval.endDate === Infinity\n ? this.visibleDomain[1]\n : this.tzStringToDate(this.interval.endDate)\n\n return this.timeScale(endTime)\n },\n width(): number {\n return Math.max(this.endX - this.startX, 0)\n },\n },\n methods: {\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 { 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 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 showBackground: {\n type: Boolean,\n default: true,\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 return this.y + this.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 Vue, { PropType } from \"vue\"\nimport { TimelineEvent } from \"@/types\"\nimport { classNames } from \"@/components/charts/constants\"\n\ntype EventRect = {\n x: number\n y: number\n width: number\n height: number\n color: string\n groupedEvents?: TimelineEvent[]\n}\n\nexport default Vue.extend({\n name: \"ETimelineRectsChartGroupedDots\",\n\n props: {\n event: {\n type: Object as PropType<EventRect>,\n required: true,\n },\n rectStroke: {\n type: String,\n required: true,\n },\n rectStrokeWidth: {\n type: Number,\n required: true,\n },\n rectRx: {\n type: Number,\n required: true,\n },\n rectRy: {\n type: Number,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n },\n\n data() {\n return {\n classNames,\n }\n },\n\n computed: {\n numberOfBackgroundDots(): number {\n return this.event.groupedEvents\n ? Math.min(3, this.event.groupedEvents.length - 1)\n : 0\n },\n },\n\n methods: {\n getBackgroundX(offset: number): number {\n return (\n this.event.x -\n this.event.width / 2 -\n (this.numberOfBackgroundDots - (offset - 1)) * 4.5\n )\n },\n\n getBackgroundY(offset: number): number {\n return this.event.y + (this.numberOfBackgroundDots - (offset - 1)) / 2\n },\n\n getBackgroundSize(offset: number): number {\n return this.event.width - (this.numberOfBackgroundDots - (offset - 1))\n },\n\n getBackgroundOpacity(offset: number): number {\n return 1 - (this.numberOfBackgroundDots - (offset - 1)) / 5\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\"\nimport ETimelineRectsChartGroupedDots from \"@/components/charts/ETimelineRectsChartGroupedDots.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 groupedEvents?: TimelineEvent[]\n}\n\ntype EventData = TimelineEvent | ComputedEventRect\n\ntype EventPatchFunction = (event: EventData) => EventData\n\nexport default Vue.extend({\n name: \"ETimelineRectsChart\",\n directives: {},\n components: { ETimelineGroupContainer, ETimelineRectsChartGroupedDots },\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 groupOverlappingDots: {\n type: Boolean,\n default: false,\n },\n groupingThreshold: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n classNames,\n characterWidth: 7.5,\n textPadding: 5,\n }\n },\n computed: {\n rectStrokeWidth(): number {\n return this.dots && this.dotsSize ? this.dotsSize / 10 : 5\n },\n rectRx(): number {\n return this.dots && this.dotsSize\n ? this.dotsSize\n : this.eventsGroup.barBorderRadius || 0\n },\n rectRy(): number {\n return this.dots && this.dotsSize\n ? this.dotsSize\n : this.eventsGroup.barBorderRadius || 0\n },\n computedHeight(): number {\n return this.eventsGroup.height || this.height\n },\n yPosition(): number {\n const yOffset = this.dots\n ? (this.computedHeight - this.dotsSize! + this.rectYPadding) / 2\n : this.rectYPadding / 2\n\n return this.y + yOffset\n },\n rectStroke(): string {\n if (!this.dots) {\n return \"#0000\"\n }\n const c = d3.color(this.eventsGroup.color)\n\n return c?.brighter(1).toString() || \"#0000\"\n },\n rectHeight(): number {\n return this.dots ? this.dotsSize : Math.max(this.height, 1)\n },\n preprocessedEvents(): TimelineEvent[] {\n const sortedEvents = [...this.eventsGroup.events].sort((a, b) => {\n const aTime = new Date(a.startDate || a.timestamp).getTime()\n const bTime = new Date(b.startDate || b.timestamp).getTime()\n\n return aTime - bTime\n })\n\n return sortedEvents.map(this.convertEventTzStringToDate)\n },\n computedEvents(): ComputedEventRect[] {\n const eventGroups =\n this.dots && this.groupOverlappingDots\n ? this.groupedEvents\n : this.preprocessedEvents.map((event) => [event])\n\n return eventGroups.map((group) => {\n let textConfig = {\n textContent: this.getEventText(\n group[0],\n this.textPadding,\n this.characterWidth\n ),\n textX:\n this.getEventRectX(group[0], this.timeScale) + this.textPadding,\n textY: this.yPosition + this.rectHeight / 2,\n textColor:\n group[0].textColor ||\n this.getFillColor(\n group[0].color || this.eventsGroup.color,\n 0.75,\n this.dark\n ),\n }\n\n if (!this.dots) {\n return {\n ...group[0],\n x: this.getEventRectX(group[0], this.timeScale),\n y: this.yPosition,\n width: this.getEventRectWidth(\n group[0],\n this.timeScale,\n this.rectMinWidth\n ),\n height: this.rectHeight,\n color: group[0].color || this.eventsGroup.color,\n groupedEvents: group,\n ...textConfig,\n }\n }\n\n const groupStart = this.getEventRectX(group[0], this.timeScale)\n const groupEnd = this.getEventRectX(\n group[group.length - 1],\n this.timeScale\n )\n const groupCenter = groupStart + (groupEnd - groupStart) / 2\n const isGroupedEvent = group.length > 1\n const x = groupCenter\n\n if (isGroupedEvent) {\n textConfig = {\n ...textConfig,\n textContent: `${group.length}`,\n textX:\n groupCenter - this.dotsSize / 2 - `${group.length}`.length * 2,\n textY: this.yPosition - this.dotsSize / 2,\n }\n } else {\n textConfig = {\n ...textConfig,\n textX: textConfig.textX - this.textPadding,\n }\n }\n\n return {\n ...group[0],\n x,\n y: this.yPosition,\n width: this.dotsSize,\n height: this.rectHeight,\n color: group[0].color || this.eventsGroup.color,\n groupedEvents: group,\n ...textConfig,\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 groupedEvents(): TimelineEvent[][] {\n const events = this.preprocessedEvents\n const groups: TimelineEvent[][] = []\n\n let currentGroup: TimelineEvent[] = []\n\n events.forEach((event, index) => {\n if (index === 0) {\n currentGroup.push(event)\n\n return\n }\n\n const prevEvent = events[index - 1]\n const currentX = this.getEventRectX(event, this.timeScale)\n const prevX = this.getEventRectX(prevEvent, this.timeScale)\n const prevWidth = this.getEventRectWidth(\n prevEvent,\n this.timeScale,\n this.rectMinWidth\n )\n\n if (prevX + prevWidth + this.groupingThreshold >= currentX) {\n currentGroup.push(event)\n } else {\n if (currentGroup.length > 0) {\n groups.push([...currentGroup])\n }\n currentGroup = [event]\n }\n })\n\n if (currentGroup.length > 0) {\n groups.push(currentGroup)\n }\n\n return groups\n },\n },\n methods: {\n onMouseOver(e: MouseEvent, event: EventData, type: string) {\n const target = e.target as SVGRectElement\n target.classList.add(classNames.eventRectHovered)\n\n const eventData = this.convertEventDateToTzString(event)\n\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\n Array.from(target.children).forEach((child) => {\n child.classList.remove(classNames.eventRectHovered)\n })\n\n this.$emit(\"event-mouseout\")\n },\n onGroupedEventsMouseOver(e: MouseEvent, events: EventData[], type: string) {\n const target = e.target as SVGRectElement\n target.classList.add(classNames.eventRectHovered)\n\n const eventsData = events.map(this.convertEventDateToTzString)\n\n this.$emit(\"grouped-events-mouseover\", e, eventsData, type)\n },\n getEventText(\n e: TimelineEvent,\n textPadding: number,\n characterWidth: number\n ): string {\n if (!e.text) {\n return \"\"\n }\n const text = `${e.text}`\n\n if (text.length === 1) {\n return text\n }\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 < Math.min(text?.length, 4)) {\n return \"\"\n } else if (text?.length <= maxCharacters) {\n return text\n } else {\n return `${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 const x = timeScale(d.startDate || d.timestamp)\n if (isNaN(x)) {\n return 0\n }\n\n return x\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 convertEventTzStringToDate(event: EventData): TimelineEvent {\n return this.patchTimestampField(event, this.tzStringToDate)\n },\n convertEventDateToTzString(event: EventData): TimelineEvent {\n return this.patchTimestampField(event, this.dateToTzString)\n },\n patchTimestampField(\n event: EventData,\n patchFn: EventPatchFunction\n ): EventData {\n let patchedEvent = { ...event } as TimelineEvent\n\n if (patchedEvent.timestamp) {\n patchedEvent.timestamp = patchFn(patchedEvent.timestamp)\n }\n if (patchedEvent.startDate) {\n patchedEvent.startDate = patchFn(patchedEvent.startDate)\n }\n if (patchedEvent.endDate) {\n patchedEvent.endDate = patchFn(patchedEvent.endDate)\n }\n\n return patchedEvent\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 TimelineEventsGroup,\n Timestamp,\n} from \"@/types\"\nimport { tzDateToD3Date } from \"@/components/charts/utils\"\nimport { classNames, defs } from \"@/components/charts/constants\"\nimport ETimelineGroupContainer from \"@/components/charts/ETimelineGroupContainer.vue\"\n\ntype ComputedEventRect = {\n x: number\n y: number\n height: number\n color: string\n timestamp: Timestamp\n count: number\n isHovering: boolean\n}\n\nexport default Vue.extend({\n name: \"ETimelineLinesChart\",\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 dark: {\n type: Boolean,\n default: false,\n },\n showLabel: {\n type: Boolean,\n default: true,\n },\n maxVisibleCount: {\n type: Number,\n required: 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 timezone: {\n type: [String, undefined] as PropType<string | undefined>,\n default: undefined,\n },\n hoveredTimestamp: {\n type: String,\n default: \"\",\n },\n yOffset: {\n type: Number,\n default: 20,\n },\n },\n data() {\n return {\n classNames,\n defs,\n characterWidth: 7.5,\n }\n },\n computed: {\n lineGradient(): string {\n return `${defs.transparencyGradientLight}-${this.groupId}-${TimelineChartType.LineGraph}`\n },\n lineDots() {\n const [visibleStart, visibleEnd] = this.timeScale.domain()\n const filteredFlattenedCounts = this.eventsGroup.events.filter(\n (_d, i) => {\n const index = i === 0 ? 1 : i\n const nextTimestamp = new Date(\n this.eventsGroup.events[index + 1]?.timestamp\n )\n const prevTimestamp = new Date(\n this.eventsGroup.events[index - 1]?.timestamp\n )\n\n return (\n (nextTimestamp >= visibleStart && nextTimestamp <= visibleEnd) ||\n (prevTimestamp >= visibleStart && prevTimestamp <= visibleEnd)\n )\n }\n )\n\n return filteredFlattenedCounts\n },\n hoverZones(): ComputedEventRect[] {\n return this.lineDots.map((event) => {\n const x = this.timeScale(this.tzStringToDate(event.timestamp))\n const y = this.yScale(event.count)\n const minDate = this.timeScale.invert(x - 2)\n const maxDate = this.timeScale.invert(x + 2)\n\n return {\n x,\n y,\n height: this.height - 22,\n color: event.color || this.eventsGroup.color,\n timestamp: event.timestamp,\n count: event.count,\n isHovering:\n this.tzStringToDate(this.hoveredTimestamp) >= minDate &&\n this.tzStringToDate(this.hoveredTimestamp) < maxDate,\n }\n })\n },\n yScale() {\n let yScale = d3.scaleLinear().range([this.height, 0])\n yScale = yScale.domain([0, this.maxVisibleCount || 1])\n\n return yScale\n },\n },\n watch: {\n hoverZones: {\n handler() {\n this.updateLine()\n },\n deep: true,\n immediate: true,\n },\n },\n mounted() {\n this.updateLine()\n },\n methods: {\n updateLine() {\n const area = d3\n .area<TimelineCountEvent>()\n .x((d) => d.x)\n .y0(this.height)\n .y1((d) => d.y)\n .curve(d3.curveMonotoneX)\n\n const line = d3\n .line<TimelineCountEvent>()\n .x((d) => d.x)\n .y((d) => d.y)\n .curve(d3.curveMonotoneX)\n\n d3.select(`.${classNames.areaGraphPath}-${this.groupId}`)\n .datum(this.hoverZones as TimelineCountEvent[])\n .attr(\"d\", (d) => area(d))\n\n d3.select(`.${classNames.lineGraphPath}-${this.groupId}`)\n .datum(this.hoverZones as TimelineCountEvent[])\n .attr(\"d\", (d) => line(d))\n },\n getEventRectX(\n d: TimelineEvent,\n timeScale: d3.ScaleTime<any, any, unknown>\n ) {\n const x = timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n if (isNaN(x)) {\n return 0\n }\n\n return x\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 {\n TimelineChartType,\n TimelineEvent,\n TimelineEventsGroup,\n Timestamp,\n} from \"@/types\"\nimport { tzDateToD3Date } from \"@/components/charts/utils\"\nimport { classNames, defs } from \"@/components/charts/constants\"\nimport ETimelineGroupContainer from \"@/components/charts/ETimelineGroupContainer.vue\"\n\ntype ComputedEventBar = {\n x: number\n y: number\n height: number\n width: number\n color: string\n startDate?: Timestamp\n endDate?: Timestamp\n count: number\n className?: string\n isHovering: boolean\n}\n\nexport default Vue.extend({\n name: \"ETimelineBarsChart\",\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 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 labelHeight: {\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 hoveredTimestamp: {\n type: String,\n default: \"\",\n },\n yOffset: {\n type: Number,\n default: 20,\n },\n rectMinWidth: {\n type: Number,\n default: 1,\n },\n currentTimeScaleDensity: {\n type: Number,\n default: null,\n },\n maxVisibleCount: {\n type: Number,\n default: 1,\n },\n previousCountsByTimestamp: {\n type: Object as PropType<{ [key: string]: number }>,\n default: null,\n },\n },\n data() {\n return {\n classNames,\n defs,\n characterWidth: 7.5,\n }\n },\n computed: {\n bars() {\n const [visibleStart, visibleEnd] = this.timeScale.domain()\n const filteredFlattenedCounts = this.eventsGroup.events.filter(\n (_d, i) => {\n const index = i === 0 ? 1 : i\n const nextTimestamp = new Date(\n this.eventsGroup.events[index + 1]?.endDate\n )\n const prevTimestamp = new Date(\n this.eventsGroup.events[index - 1]?.startDate\n )\n\n return (\n (nextTimestamp >= visibleStart && nextTimestamp <= visibleEnd) ||\n (prevTimestamp >= visibleStart && prevTimestamp <= visibleEnd)\n )\n }\n )\n\n return filteredFlattenedCounts\n },\n hoverZones(): ComputedEventBar[] {\n return this.bars.map((event: TimelineEvent) => {\n const width = this.getEventRectWidth(event)\n const height = this.yScale.range()[0] - this.yScale(event.count)\n const x = this.getEventRectX(event, this.timeScale)\n const previousCount =\n this.previousCountsByTimestamp[event.startDate] || 0\n\n const y = this.yScale(previousCount + event.count)\n\n return {\n x,\n y,\n height,\n width,\n color: event.color || this.eventsGroup.color,\n startDate: event.startDate,\n endDate: event.endDate,\n count: event.count,\n className: event.className,\n isHovering:\n this.hoveredTimestamp >= event.startDate &&\n this.hoveredTimestamp < event.endDate,\n }\n })\n },\n yScale() {\n let yScale = d3.scaleLinear().range([this.height, 0])\n yScale = yScale.domain([0, this.maxVisibleCount || 1])\n\n return yScale\n },\n },\n methods: {\n getBarOpacity(event: ComputedEventBar) {\n let gradient\n if (!this.hoveredTimestamp) {\n gradient = defs.transparencyGradient\n }\n\n gradient = event.isHovering\n ? defs.transparencyGradientHover\n : defs.transparencyGradientLight\n\n return `${gradient}-${this.groupId}-${TimelineChartType.BarChart}`\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 onEventClick() {\n this.$emit(\"event-clicked\")\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 },\n})\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport {\n TimelineChartType,\n TimelineCountEvent,\n TimelineDomain,\n TimelineEvent,\n TimelineEventsByType,\n TimelineEventsGroup,\n TimelineInterval,\n TimelineMarker,\n TimelinePrecision,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\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 { tzDateToD3Date } from \"@/components/charts/utils\"\nimport { classNames } from \"@/components/charts/constants\"\nimport ETimelineSVGDefs from \"@/components/charts/ETimelineSVGDefs.vue\"\nimport ETimelineForbiddenInterval from \"@/components/charts/ETimelineForbiddenInterval.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\"\nimport ETimelineLinesChart from \"@/components/charts/ETimelineLinesChart.vue\"\nimport ETimelineBarsChart from \"@/components/charts/ETimelineBarsChart.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 ETimelineForbiddenInterval,\n ETimelineLinesChart,\n ETimelineBarsChart,\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 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 barHeight: {\n type: Number,\n default: 18,\n },\n barYPadding: {\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 panOnDateClick: {\n type: Boolean,\n default: false,\n },\n selectedDate: {\n type: String,\n default: \"\",\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 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 svgElement: null as unknown as SVGSVGElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axisHeight: 22,\n isHoveringEvent: false,\n isHoveringGroupedEvents: false,\n isAnimating: false,\n hoveredEvent: null as unknown as TimelineEvent,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n hoveredCounts: [] as { count: number; type: string; label?: string }[],\n visibleFrom: null as unknown as Date,\n visibleTo: null as unknown as Date,\n characterWidth: 7.5,\n textPadding: 5,\n timeouts: [] as number[],\n groupsVisibility: {} as Record<string, boolean>,\n selectedMilestoneId: null as any,\n isInitialized: 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 hoveredGroupedEvents: null as unknown as TimelineEvent[],\n TimelineChartType,\n width: 0,\n }\n },\n computed: {\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 barGroups(): TimelineEventsByType {\n return this.getGroupByType(this.filteredEventsGroups, [\n TimelineChartType.Bars,\n TimelineChartType.Dots,\n ])\n },\n lineGraphGroups(): TimelineEventsByType {\n return this.getGroupByType(this.filteredEventsGroups, [\n TimelineChartType.LineGraph,\n ])\n },\n barChartGroups(): TimelineEventsByType {\n return this.getGroupByType(this.filteredEventsGroups, [\n TimelineChartType.BarChart,\n ])\n },\n milestonesGroups(): TimelineEventsByType {\n return this.getGroupByType(this.filteredEventsGroups, [\n TimelineChartType.Milestones,\n ])\n },\n combinedBarsHeight(): number {\n return Object.values(this.barGroups).reduce(\n (acc, g) =>\n acc +\n (this.getBarGroupHeight(g) || this.barHeight + this.barYPadding),\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.barHeight),\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 (\n this.combinedXAxesHeight +\n (this.hasMilestones && this.milestonesFirst\n ? this.combinedMilestonesHeight\n : 0)\n )\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 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 chartHeight(): number {\n if (!this.showLabels) {\n return this.chartMinHeight\n }\n const chartLabelsCount =\n Object.keys(this.lineGraphGroups).length +\n Object.keys(this.barChartGroups).length\n const combinedLabelsHeight = chartLabelsCount * this.barHeight\n\n return Math.max(this.chartMinHeight, combinedLabelsHeight)\n },\n chartLabelHeight(): number {\n return Math.max(this.chartMinLabelHeight, this.barHeight)\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 * 1.75\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 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 flattenedLinesCounts(): TimelineCountEvent[] {\n return Object.values(this.lineGraphGroups)\n .map((g) => g.events)\n .flat() as TimelineCountEvent[]\n },\n flattenedBarsCounts(): TimelineCountEvent[] {\n return Object.values(this.barChartGroups)\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 isEventVisible = (event: TimelineEvent): boolean => {\n const eventStart = new Date(event.startDate || event.timestamp)\n const eventEnd = new Date(event.endDate || event.timestamp)\n const visibleStart = new Date(this.visibleFrom)\n const visibleEnd = new Date(this.visibleTo)\n\n return (\n (eventEnd >= visibleStart && eventEnd <= visibleEnd) ||\n (eventStart >= visibleStart && eventStart <= visibleEnd)\n )\n }\n const filteredFlattenedBarsCounts =\n this.flattenedBarsCounts.filter(isEventVisible)\n const filteredFlattenedLinesCounts = this.flattenedLinesCounts\n .filter(isEventVisible)\n .map((d) => d.count)\n\n const previousCountsByTimestamp: Record<string, number> = {}\n\n filteredFlattenedBarsCounts.forEach((d) => {\n const timestamp = d.startDate || d.timestamp\n previousCountsByTimestamp[timestamp] =\n (previousCountsByTimestamp[timestamp] || 0) + d.count\n })\n\n const allCounts = Object.values(previousCountsByTimestamp).concat(\n filteredFlattenedLinesCounts\n )\n\n return (d3.max(allCounts) as number) || 1\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 countsByTimestamp(): Record<string, Record<string, number>> {\n const events = { ...this.lineGraphGroups, ...this.barChartGroups }\n\n return Object.entries(events).reduce(\n (acc: Record<string, Record<string, number>>, [type, events]) => {\n events.events.forEach((event) => {\n const timestamp = event.timestamp || event.startDate\n acc[timestamp] = {\n ...(acc[timestamp] || {}),\n [type]: event.count,\n }\n })\n\n return acc\n },\n {}\n )\n },\n },\n watch: {\n markers(oldMarkers, newMarkers) {\n if (\n oldMarkers === newMarkers ||\n !this.fitMarkersOnChange ||\n newMarkers.length === 0\n ) {\n return\n }\n this.zoomToFitMarkers()\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n selectedDate(date) {\n if (date && !this.locked) {\n this.focusedTimestamp = this.tzStringToDate(date).toISOString()\n }\n },\n focusedInterval(interval) {\n if (interval && interval?.startDate && interval?.endDate) {\n this.focusedDomain = [interval.startDate, interval.endDate]\n }\n },\n },\n mounted() {\n this.validateProps()\n this.initTimeline()\n this.zoomToStartAndEndDates()\n },\n beforeDestroy() {\n this.clearTimeline()\n },\n methods: {\n handleVisibleIntervalChange({ fromDate, toDate, trigger, transform }) {\n this.visibleFrom = fromDate\n this.visibleTo = toDate\n this.$emit(\"visible-interval-change\", {\n fromDate,\n toDate,\n trigger,\n transform,\n })\n },\n getGroupByType(groups: TimelineEventsByType, types: TimelineChartType[]) {\n return Object.entries(groups).reduce((acc, [type, eventsGroup]) => {\n if (\n (!eventsGroup.chartType && types.includes(TimelineChartType.Bars)) ||\n types.includes(eventsGroup.chartType)\n ) {\n return { ...acc, [type]: eventsGroup }\n } else {\n return acc\n }\n }, {})\n },\n getPreviousCountsByTimestamp(index: number) {\n if (index === 0) {\n return {}\n }\n\n const previousGroups = Object.fromEntries(\n Object.entries(this.barChartGroups).slice(0, index)\n )\n const count = [...Object.values(previousGroups)]\n .map((g) => g.events)\n .flat()\n const previousCountsByTimestamp: Record<string, number> = {}\n count.forEach((d) => {\n const timestamp = d.startDate || d.timestamp\n previousCountsByTimestamp[timestamp] =\n (previousCountsByTimestamp[timestamp] || 0) + d.count\n })\n\n return previousCountsByTimestamp\n },\n getChartsYPosition(groupId: string | number): number {\n const mergedGroups = Object.keys(this.lineGraphGroups).concat(\n Object.keys(this.barChartGroups)\n )\n\n return (\n this.timelineHeight -\n this.chartLabelHeight * (mergedGroups.indexOf(groupId) + 1) -\n (this.milestonesFirst ? 0 : this.combinedMilestonesHeight) -\n this.combinedBarsHeight\n )\n },\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 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 (!this.timeline || this.timeline.offsetWidth === 0 || !this.domain) {\n this.timeouts.push(\n setTimeout(this.initTimeline, 500) as unknown as number\n )\n\n return\n }\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.svg = d3.select(this.svgElement)\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 },\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 isForbiddenInterval(timestamp: string): boolean {\n const ts = new Date(timestamp).getTime()\n const isWithinForbiddenInterval = this.forbiddenIntervals.some(\n (interval) => {\n const start = isNaN(new Date(interval.startDate).getTime())\n ? -Infinity\n : new Date(interval.startDate).getTime()\n const end = isNaN(new Date(interval.endDate).getTime())\n ? Infinity\n : new Date(interval.endDate).getTime()\n\n return ts >= start && ts <= end\n }\n )\n let isBeforeStartDate = false\n if (this.startDate) {\n isBeforeStartDate = ts < new Date(this.startDate).getTime()\n }\n let isAfterEndDate = false\n if (this.endDate) {\n isAfterEndDate = ts > new Date(this.endDate).getTime()\n }\n\n return isWithinForbiddenInterval || isBeforeStartDate || isAfterEndDate\n },\n handleClick(timestamp: string) {\n if (this.isForbiddenInterval(timestamp)) {\n this.$emit(\"forbidden-timestamp-clicked\", timestamp)\n\n return\n }\n\n if (this.isHoveringGroupedEvents) {\n this.isHoveringGroupedEvents = false\n this.$emit(\"grouped-events-clicked\", {\n events: this.hoveredGroupedEvents,\n type: this.hoveredEventType,\n })\n\n if (this.stopClickPropagation) {\n return\n }\n } else if (this.isHoveringEvent) {\n this.isHoveringEvent = false\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\", 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 handleChartMouseOver(\n _event: MouseEvent,\n eventData: TimelineCountEvent,\n eventType: string\n ) {\n if (\n this.isAnimating ||\n !this.countsByTimestamp[`${eventData.timestamp || eventData.startDate}`]\n ) {\n return\n }\n\n this.hoveredCounts = Object.entries(\n this.countsByTimestamp[`${eventData.timestamp || eventData.startDate}`]\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 handleChartMouseOut() {\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.isHoveringGroupedEvents = false\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleBarGroupedEventsMouseOver(\n event: MouseEvent,\n events: TimelineEvent[],\n eventType: string\n ) {\n const mouseX = event.offsetX\n\n if (mouseX <= this.minHoverZone) {\n return\n }\n\n this.hoveredGroupedEvents = events\n this.hoveredEventType = eventType\n this.isHoveringEvent = false\n this.isHoveringGroupedEvents = true\n this.$emit(\"grouped-events-mouseover\", { events, eventType })\n },\n handleBarMouseOut() {\n this.isHoveringEvent = false\n this.isHoveringGroupedEvents = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.hoveredGroupedEvents = null as unknown as TimelineEvent[]\n this.$emit(\"event-mouseout\")\n },\n handleTimeScaleChange(ts: d3.ScaleTime<any, any, unknown>) {\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 onAnimationStart() {\n this.isAnimating = true\n this.$emit(\"animation-start\")\n },\n onAnimationEnd() {\n this.isAnimating = false\n this.$emit(\"animation-end\")\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.barHeight\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.barHeight + this.barYPadding\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 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 onResizeContainer({ contentRect }: ResizeObserverEntry) {\n if (this.width === contentRect.width || contentRect.width === 0) {\n return\n }\n\n this.width = contentRect.width\n this.$emit(\"timeline-resize\", { contentRect } as ResizeObserverEntry)\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 onePerLine: {\n type: Boolean,\n default: false,\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 const joiner = this.onePerLine ? \"<br/>\" : \", \"\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(joiner)\n }\n\n return this.content?.length > -1\n ? (this.content as Record<any, any>).join(joiner)\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, naturalHeight: imageHeight } =\n this.afterImage\n const calculateDimension = (factor: number) =>\n imageWidth > imageHeight\n ? (factor * this.computedImageDimension.width) / imageWidth\n : (factor * this.computedImageDimension.height) / imageHeight\n\n const scaleFactor =\n imageWidth > imageHeight ? imageWidth * 0.04 : imageHeight * 0.04\n const size = calculateDimension(scaleFactor)\n\n this.watermarkDimension = {\n right: `${size}px`,\n bottom: `${size}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 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: \"Brightness\",\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: \"MarkUp\",\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: \"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","\nimport BaseIcon from \"@/components/svgIcons/BaseIcon.vue\"\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"Nerves\",\n components: {\n BaseIcon,\n },\n props: {\n color: {\n type: String,\n default: \"white\",\n },\n },\n})\n","import Bim from \"@/components/svgIcons/Bim.vue\"\nimport Brightness from \"@/components/svgIcons/Brightness.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 MarkUp from \"@/components/svgIcons/MarkUp.vue\"\nimport ZohoCrm from \"@/components/svgIcons/ZohoCrm.vue\"\nimport Tag from \"@/components/svgIcons/Tag.vue\"\nimport TagPlus from \"@/components/svgIcons/TagPlus.vue\"\nimport Nerves from \"@/components/svgIcons/Nerves.vue\"\n\nconst SvgIcons = {\n Bim,\n Brightness,\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 MarkUp,\n Nerves,\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","import Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"FormField\",\n props: {\n value: {\n type: [String, Number, Boolean, Object, Array],\n default: \"\",\n },\n label: {\n type: String,\n default: \"\",\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n type: {\n type: String,\n default: \"text\",\n },\n required: {\n type: Boolean,\n default: false,\n },\n errors: {\n type: Array<String>,\n default: () => [],\n },\n },\n data() {\n return {\n currentValue: this.value,\n }\n },\n watch: {\n value(val: any) {\n this.currentValue = val\n },\n currentValue: {\n immediate: true,\n deep: true,\n handler(val) {\n this.$emit(\"input\", val)\n },\n },\n },\n})\n","import Vue from \"vue\"\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n toggleOpen: () => void\n isOpen: boolean\n }\n}\n\nexport default Vue.extend({\n name: \"ToggleOpen\",\n data() {\n return {\n isOpen: false,\n selectId: `select-${Date.now()}${Math.random()\n .toString(36)\n .substr(2, 9)}`,\n }\n },\n created() {\n // Listen for other selects opening\n this.$root.$on(\"select-opened\", (openedId: string) => {\n if (openedId !== this.selectId && this.isOpen) {\n this.isOpen = false\n }\n })\n },\n\n beforeDestroy() {\n // Clean up listener\n this.$root.$off(\"select-opened\")\n },\n methods: {\n toggleOpen(event: Event) {\n event?.stopPropagation()\n\n // If we're opening, notify other selects\n if (!this.isOpen) {\n this.$root.$emit(\"select-opened\", this.selectId)\n }\n\n this.isOpen = !this.isOpen\n },\n },\n})\n","import Vue, { PropType } from \"vue\"\nimport formField from \"@/mixins/form-field\"\nimport type {\n ERadioGroupOption,\n ESelectionGroupOption,\n EToggleSwitchOption,\n} from \"@/types\"\nimport toggleOpen from \"@/mixins/toggle-open\"\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n isSelected: (index: number) => boolean\n onItemClick: (index: number) => void\n }\n}\n\nexport default Vue.extend({\n name: \"SelectFormField\",\n mixins: [formField, toggleOpen],\n props: {\n options: {\n type: Array as PropType<EToggleSwitchOption[] | ERadioGroupOption[]>,\n required: true,\n },\n setInitialValue: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n selectedOption(): ESelectionGroupOption[] | ESelectionGroupOption | null {\n if (this.multiple) {\n return this.options.filter((op) => {\n if (\n Array.isArray(this.currentValue) &&\n (this.currentValue as ESelectionGroupOption[])?.includes(op.value)\n ) {\n return op\n }\n })\n }\n\n return this.getOptionByValue(this.currentValue)\n },\n localLabel(): string | null {\n if (\n this.multiple &&\n Array.isArray(this.selectedOption) &&\n this.selectedOption.length > 1\n ) {\n return this.selectedOption.map((option) => option.label).join(\", \")\n }\n\n if (!this.multiple && this.selectedOption) {\n return (this.selectedOption as ESelectionGroupOption).label\n }\n\n return null\n },\n isAllSelected(): boolean {\n if (!this.multiple) {\n return false\n }\n\n return (\n Array.isArray(this.currentValue) &&\n (this.currentValue as ESelectionGroupOption[]).length ===\n this.options.filter((item) => !item.disabled).length &&\n this.multiple\n )\n },\n isAtLeastOneSelected(): boolean {\n if (this.multiple) {\n return (\n Array.isArray(this.currentValue) &&\n (this.currentValue as ESelectionGroupOption[]).length > 0\n )\n } else {\n return Boolean(this.currentValue)\n }\n },\n radioItemClasses(): Record<string, boolean> {\n return {\n \"e-opacity-50 e-cursor-not-allowed \": this.disabled,\n \"e-bg-gray-800 e-text-gray-200 e-border-gray-500 \": this.dark,\n \"e-text-gray-700 e-bg-white e-border-gray-300 \": !this.dark,\n \"hover:e-border-gray-300\": !this.disabled && this.dark,\n \"hover:e-border-gray-500\": !this.disabled && !this.dark,\n }\n },\n selectedItemClasses(): (string | Record<string, boolean>)[] {\n return [\n \"e-bg-[#1976d2]/10\",\n {\n \"e-text-[#61b0ff]\": this.dark,\n \"e-text-[#1976d2]\": !this.dark,\n },\n ]\n },\n isValueProvided(): boolean {\n return this.currentValue !== null && this.currentValue !== undefined\n },\n },\n watch: {\n setInitialValue: {\n immediate: true,\n handler(val): void {\n if (!val || this.isValueProvided) {\n return\n } else {\n // @ts-expect-error - currentValue is unknown or any\n this.currentValue = (\n this.multiple ? [this.options[0].value] : this.options[0].value\n ) as unknown\n }\n this.$emit(\"input\", this.currentValue)\n this.$emit(\"on-select-option\", this.selectedOption)\n },\n },\n multiple(val: boolean) {\n if (val) {\n // @ts-expect-error - currentValue is unknown or any\n this.currentValue = [this.options[0].value] || []\n } else {\n // @ts-expect-error - currentValue is unknown or any\n this.currentValue = this.options[0].value\n }\n this.$emit(\"input\", this.currentValue)\n this.$emit(\"on-select-option\", this.selectedOption)\n },\n },\n methods: {\n isSelected(value: any): boolean {\n if (this.multiple) {\n return (\n Array.isArray(this.currentValue) &&\n (this.currentValue as ESelectionGroupOption[]).includes(value)\n )\n }\n\n if (this.currentValue === null && this.setInitialValue) {\n return value === this.options[0]?.value\n }\n\n return this.currentValue === value\n },\n onItemClick(value: any): void {\n const option = this.getOptionByValue(value)\n if (option?.disabled || this.disabled) {\n return\n }\n\n if (this.multiple) {\n const valueIndex = (this.currentValue as unknown[]).indexOf(value)\n\n if (valueIndex === -1) {\n ;(this.currentValue as unknown[]).push(value)\n } else {\n ;(this.currentValue as unknown[]).splice(valueIndex, 1)\n }\n\n this.$emit(\"input\", this.currentValue)\n this.$emit(\"on-select-option\", this.selectedOption)\n\n return\n }\n\n this.$emit(\"input\", value)\n this.$emit(\"on-select-option\", option)\n this.toggleOpen()\n },\n selectAll(): void {\n if (!this.multiple || this.disabled) {\n return\n }\n const allValues = this.options\n .filter((item) => !item.disabled)\n .map((item) => item.value)\n this.$emit(\"input\", allValues)\n this.$emit(\n \"on-select-option\",\n this.options.filter((item) => !item.disabled)\n )\n },\n deselectAll(): void {\n if (!this.multiple || this.disabled) {\n return\n }\n this.$emit(\"input\", [])\n this.$emit(\"on-select-option\", [])\n },\n toggleSelectAll(): void {\n if (!this.multiple || this.disabled) {\n return\n }\n\n if (\n Array.isArray(this.currentValue) &&\n (this.currentValue as ESelectionGroupOption[]).length ===\n this.options.length\n ) {\n this.deselectAll()\n } else {\n this.selectAll()\n }\n },\n getOptionByValue(value: number): ESelectionGroupOption | null {\n return this.options.find((op) => op.value === value) ?? null\n },\n containerClasses(item: ESelectionGroupOption) {\n const highlightClasses = this.isSelected(item.value)\n ? this.selectedItemClasses\n : this.radioItemClasses\n\n return [\n highlightClasses,\n item.disabled || this.disabled\n ? \"e-opacity-50 e-cursor-not-allowed\"\n : \"e-cursor-pointer e-select-none\",\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport {\n type CssClassMap,\n ESelectionGroupOption,\n Size,\n type TToggleSwitchSize,\n} from \"@/types\"\nimport selectFormField from \"@/mixins/select-form-field\"\n\ntype SizeClasses = {\n container: CssClassMap\n button: CssClassMap\n text: CssClassMap\n}\n\nexport default Vue.extend({\n name: \"EToggleSwitch\",\n mixins: [selectFormField],\n props: {\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 vertical: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\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 \"e-opacity-50 e-cursor-not-allowed\": this.disabled,\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 wrapperClasses(): 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 \"e-flex-col\": this.vertical,\n \"e-opacity-50 e-cursor-not-allowed\": this.disabled,\n }\n },\n textClasses(): CssClassMap {\n return {\n ...this.sizeClasses.text,\n \"e-font-medium\": true,\n }\n },\n },\n methods: {\n getButtonClasses(item: ESelectionGroupOption) {\n const dynamicClasses = {\n \"e-toggle-switch 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(item.value),\n \"e-bg-brand-600\": this.color === \"brand\" && this.isSelected(item.value),\n \"e-bg-gray-600\":\n ![\"primary\", \"brand\"].includes(this.color) &&\n this.isSelected(item.value),\n \"e-bg-[#629efc] e-text-gray-900 e-font-normal\":\n this.color === \"primary\" && this.isSelected(item.value),\n \"e-opacity-50 e-cursor-not-allowed\": item.disabled,\n }\n\n return {\n ...this.sizeClasses.button,\n ...dynamicClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nexport default Vue.extend({\n name: \"ERangeSlider\",\n props: {\n value: {\n type: Array as PropType<number[]>,\n default: () => [0, 100],\n },\n min: {\n type: Number,\n default: 0,\n },\n max: {\n type: Number,\n default: 100,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n step: {\n type: Number,\n default: 60,\n },\n isTime: {\n type: Boolean,\n default: false,\n },\n tooltip: {\n type: Boolean,\n default: true,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n slider: null as HTMLDivElement | null,\n sliderRect: {} as DOMRect,\n selectedThumb: null as HTMLElement | null,\n }\n },\n computed: {\n range: {\n get() {\n return this.value\n },\n set(newValue: number[]) {\n this.$emit(\"input\", newValue)\n },\n },\n rangeDistance(): number {\n return this.max - this.min\n },\n showTooltip(): Boolean {\n return this.tooltip && !this.disabled\n },\n },\n mounted() {\n this.range = this.value\n },\n methods: {\n getLabel(value: number): string {\n return this.isTime ? this.minutesToTime(value) : value.toString()\n },\n getPosition(value: number): number {\n return ((value - this.min) / this.rangeDistance) * 100\n },\n getEmptyRangeStyle(isLastRange: boolean = false): Record<string, string> {\n let from: number\n let to: number\n if (isLastRange) {\n from = this.range[1]\n to = this.max\n } else {\n from = this.min\n to = this.range[0]\n }\n\n const sliderColor = this.disabled ? \"#c6c6c6\" : \"#8ac5ff\"\n const rangeFrom = this.getPosition(from)\n const rangeWidth = this.getPosition(to) - rangeFrom\n\n return {\n left: `calc(${rangeFrom}% + 0px)`,\n width: `calc(${rangeWidth}% + 0px)`,\n background: `${sliderColor}`,\n }\n },\n getRangeStyle(range: number[]): Record<string, string> {\n const rangeColor = this.disabled ? \"#c6c6c6\" : \"#3b82f6\"\n const rangeFrom = this.getPosition(range[0])\n const rangeWidth = this.getPosition(range[1]) - rangeFrom\n\n return {\n left: `calc(${rangeFrom}% + 0px)`,\n width: `calc(${rangeWidth}% + 0px)`,\n background: `${rangeColor}`,\n }\n },\n onMouseMove(event: PointerEvent): void {\n if (this.selectedThumb?.hasPointerCapture(event.pointerId)) {\n this.slider = this.$refs.slider as HTMLDivElement\n this.sliderRect = this.slider.getBoundingClientRect()\n\n if (!this.sliderRect) return\n\n const position = event.clientX - this.sliderRect.left\n const percent = position / this.sliderRect.width\n const value = Math.round(percent * this.rangeDistance + this.min)\n const roundedValue = this.roundToStep(value)\n\n if (this.selectedThumb.id === \"input-min-thumb\") {\n if (roundedValue > this.range[1]) {\n this.range = [this.range[1], this.range[1]]\n\n return\n }\n if (roundedValue <= this.min) {\n this.range = [this.min, this.range[1]]\n\n return\n }\n this.range = [roundedValue, this.range[1]]\n }\n if (this.selectedThumb.id === \"input-max-thumb\") {\n if (roundedValue < this.range[0]) {\n this.range = [this.range[0], this.range[0]]\n\n return\n }\n if (roundedValue >= this.max) {\n this.range = [this.range[0], this.max]\n\n return\n }\n this.range = [this.range[0], roundedValue]\n }\n }\n },\n onMouseDown(event: PointerEvent | TouchEvent): void {\n if (\n (event.target as Element)?.matches(\n \".e-range-slider__thumb, .e-range-slider__tooltip\"\n )\n ) {\n this.selectedThumb = (event.target as Element).closest(\n \".e-range-slider__thumb\"\n ) as HTMLElement\n\n if (event instanceof PointerEvent) {\n this.selectedThumb?.setPointerCapture(event.pointerId)\n }\n }\n },\n onMouseUp(event: PointerEvent | TouchEvent): void {\n if (this.selectedThumb) {\n if (event instanceof PointerEvent) {\n this.selectedThumb?.releasePointerCapture(event.pointerId)\n }\n this.selectedThumb = null\n }\n },\n roundToStep(value: number): number {\n let q = Math.round(value / this.step)\n let n1 = this.step * q\n let n2 = value * this.step > 0 ? this.step * (q + 1) : this.step * (q - 1)\n\n if (Math.abs(value - n1) < Math.abs(value - n2)) return n1\n\n return n2\n },\n minutesToTime(minutes: number): string {\n const hour = Math.floor(minutes / 60)\n .toString()\n .padStart(2, \"0\")\n const minute = (minutes % 60).toString().padStart(2, \"0\")\n\n return `${hour}:${minute}`\n },\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"EDivider\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n },\n})\n","\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport ERangeSlider from \"@/components/ERangeSlider.vue\"\nimport EDivider from \"@/components/EDivider.vue\"\nimport { minutesToHoursMinutesStr, schedules, toNumericSchedule } from \"@/utils\"\nimport { Schedule, ScheduleType } from \"@/types\"\nimport Vue, { PropType } from \"vue\"\n\nexport default Vue.extend({\n name: \"ESchedulePicker\",\n components: {\n ERow,\n ECol,\n ERangeSlider,\n EDivider,\n },\n props: {\n scheduleType: {\n type: String as PropType<ScheduleType>,\n default: \"continuous\",\n required: true,\n },\n preloadSchedule: {\n type: [Object, String] as PropType<Schedule | string>,\n default: () => ({} as Schedule),\n required: false,\n },\n editMode: {\n type: Boolean,\n default: true,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n step: {\n type: Number,\n default: 15,\n },\n },\n data() {\n return {\n min: 0,\n max: 1439,\n enabledDays: {\n monday: true,\n tuesday: true,\n wednesday: true,\n thursday: true,\n friday: true,\n saturday: true,\n sunday: true,\n } as {\n [day: string]: boolean\n },\n schedule: null as unknown as Record<string, [number, number]>,\n hours: [0, 1439],\n }\n },\n computed: {\n isDisabled(): boolean {\n return (\n !this.editMode &&\n [ScheduleType.Continuous, ScheduleType.WorkingHours].includes(\n this.scheduleType as ScheduleType\n )\n )\n },\n },\n watch: {\n scheduleType: {\n immediate: true,\n handler() {\n this.schedule = toNumericSchedule(\n schedules[this.scheduleType as keyof typeof schedules]\n )\n this.initEnabledDays()\n this.hours = Object.values(this.schedule)[1]\n },\n },\n schedule: {\n deep: true,\n handler() {\n this.changeSchedule()\n },\n },\n },\n mounted() {\n if (Object.keys(this.preloadSchedule).length) {\n let tempSchedule =\n typeof this.preloadSchedule === \"string\"\n ? JSON.parse(this.preloadSchedule)\n : this.preloadSchedule\n\n Object.keys(this.enabledDays).forEach((day) => {\n this.enabledDays[day] = tempSchedule[day]?.length > 0\n })\n this.schedule = toNumericSchedule(tempSchedule)\n\n this.hours = Object.values(this.schedule)[1]\n }\n },\n methods: {\n initEnabledDays() {\n Object.keys(this.enabledDays).forEach((day) => {\n this.enabledDays[day] =\n this.scheduleType === ScheduleType.WorkingHours\n ? ![\"saturday\", \"sunday\"].includes(day)\n : true\n })\n },\n toTextSchedule() {\n return Object.fromEntries(\n Object.entries(this.schedule).map(([day, times]) => {\n if (!times?.length || !this.enabledDays[day]) {\n return [day, []]\n } else {\n const start = minutesToHoursMinutesStr(times[0])\n const end = minutesToHoursMinutesStr(times[1])\n\n return [day, [`${start}-${end}`]]\n }\n })\n )\n },\n changeSchedule() {\n this.$emit(\"input\", this.toTextSchedule())\n },\n onHoursChange(newRange: number[]) {\n this.schedule = Object.entries(this.schedule).reduce((acc, [day]) => {\n return {\n ...acc,\n [day]: newRange,\n }\n }, {})\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, { PropType } from \"vue\"\nimport { ClickOutsideDirective } from \"@/directives\"\nimport { toggleOpen } from \"@/mixins\"\n\nexport default Vue.extend({\n name: \"EPopover\",\n directives: {\n ClickOutside: ClickOutsideDirective,\n },\n mixins: [toggleOpen],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n label: {\n type: String,\n default: \"Click to open\",\n },\n panelSide: {\n type: String as PropType<\"right\" | \"left\" | \"center\">,\n default: \"center\",\n },\n panelClasses: {\n type: [Object, String, Array] as PropType<\n string | string[] | Record<string, boolean>\n >,\n default: () => ({}),\n },\n },\n computed: {\n panelThemeClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n \"right-0 \": this.panelSide === \"right\",\n \"left-0\": this.panelSide === \"left\",\n }\n },\n },\n methods: {\n closePopover() {\n this.isOpen = false\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport EIcon from \"@/components/EIcon.vue\"\n\nexport default Vue.extend({\n name: \"ECheckbox\",\n components: {\n EIcon,\n },\n props: {\n checked: {\n type: Boolean,\n default: false,\n },\n },\n})\n","\nimport Vue from \"vue\"\nimport { selectFormField } from \"@/mixins\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport EPopover from \"@/components/EPopover.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ECheckbox from \"@/components/ECheckbox.vue\"\nimport type { ESelectionGroupOption } from \"@/types\"\n\nexport default Vue.extend({\n name: \"ESelect\",\n components: {\n ECheckbox,\n EIcon,\n EPopover,\n },\n directives: {\n ResizeObserver: ResizeObserverDirective,\n },\n mixins: [selectFormField],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n withSelectAll: {\n type: Boolean,\n default: false,\n },\n customSelectionLabel: {\n type: String,\n default: \"\",\n },\n name: {\n type: String,\n default: \"Items\",\n },\n label: {\n type: String,\n default: \"Select an option\",\n },\n withCheckbox: {\n type: Boolean,\n default: false,\n },\n searchable: {\n type: Boolean,\n default: false,\n },\n searchPlaceholder: {\n type: String,\n default: \"Type to search...\",\n },\n withSearchQueryVisible: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n searchQuery: \"\",\n menuStyle: {},\n }\n },\n computed: {\n customLabel(): string {\n if (\n (this.multiple &&\n Array.isArray(this.value) &&\n (this.value as ESelectionGroupOption[]).length === 0) ||\n (!this.multiple && (this.value === null || this.value === undefined))\n ) {\n return this.label\n }\n\n if (this.multiple && this.customSelectionLabel.length > 0) {\n return this.customSelectionLabel\n }\n\n return this.localLabel || this.label\n },\n filteredOptions(): ESelectionGroupOption[] {\n if (!this.searchQuery) {\n return this.options\n }\n\n const query = this.searchQuery.toLowerCase().trim()\n\n return (this.options as ESelectionGroupOption[]).filter((option) =>\n option.label.toLowerCase().includes(query)\n )\n },\n scrollbarClasses(): Record<string, boolean> {\n return {\n \"e-scrollbar-track-gray-800 e-scrollbar-thumb-gray-500\": this.dark,\n \"e-scrollbar-track-white e-scrollbar-thumb-gray-400\": !this.dark,\n }\n },\n showSearchClearButton(): boolean {\n return (\n (this.searchQuery.length > 0 || this.isAtLeastOneSelected) &&\n this.searchable &&\n !this.disabled\n )\n },\n },\n methods: {\n handleTriggerClick(e: Event, callback: (e: Event) => void): void {\n if (this.disabled) {\n return\n }\n\n callback(e)\n this.$nextTick(() => {\n const searchInput = this.$refs.searchInput as HTMLInputElement\n if (searchInput) {\n searchInput.focus()\n }\n })\n if (this.withSearchQueryVisible) {\n this.searchQuery = this.getOptionByValue(this.value).label || \"\"\n }\n },\n handleMenuStyle() {\n const wrapper = this.$refs.ESelectWrapper as HTMLElement\n this.menuStyle = {\n maxWidth: `${wrapper?.clientWidth}px`,\n minWidth: \"160px\",\n }\n },\n clearSearch(): void {\n this.searchQuery = \"\"\n this.$emit(\"input\", this.multiple ? [] : null)\n\n const searchInput = this.$refs.searchInput as HTMLInputElement\n if (searchInput) {\n searchInput.focus()\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport {\n GlobalSearchMatch,\n GlobalSearchResult,\n GlobalSearchResultInput,\n} from \"@/types\"\nimport { eventListeners } from \"@/mixins\"\nimport moment from \"moment-timezone\"\nimport EIcon from \"@/components/EIcon.vue\"\n\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 focus:e-ring-2 hover:e-ring-gray-400 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 data: function () {\n return {\n isHovered: false,\n }\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 methods: {\n toggleTooltip() {\n this.isHovered = !this.isHovered\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 },\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, { CSSProperties, PropType } from \"vue\"\nimport { BaseColor, DialogAction } from \"@/types\"\nimport EFadeTransition from \"@/components/EFadeTransition.vue\"\nimport { eventListeners } from \"@/mixins\"\n\nexport default Vue.extend({\n name: \"EDialog\",\n components: {\n EFadeTransition,\n },\n mixins: [eventListeners],\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],\n default: undefined,\n },\n closeWithEscape: {\n type: Boolean,\n default: true,\n },\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-px-4 e-justify-end e-mt-auto e-items-end\",\n ]\n },\n panelStyles(): CSSProperties {\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 watch: {\n visible(val) {\n if (val) {\n this.showDialog()\n } else {\n this.closeDialog()\n }\n },\n },\n mounted() {\n if (this.visible) {\n this.showDialog()\n }\n this.$addEventListener(\"keydown\", this.handleKeyDown)\n },\n methods: {\n showDialog() {\n this.$nextTick(() => {\n const dialog = this.$refs.dialog as HTMLDialogElement\n if (dialog && !dialog.open) {\n dialog.showModal()\n }\n })\n },\n closeDialog() {\n const dialog = this.$refs.dialog as HTMLDialogElement\n if (dialog?.open) {\n dialog.close()\n }\n },\n handleBackdropClick(event: MouseEvent) {\n if (!this.persistent && event.target === event.currentTarget) {\n this.visible = false\n }\n },\n onClose() {\n if (!this.persistent) {\n this.visible = false\n }\n },\n getButtonClasses(color: BaseColor): 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: DialogAction) {\n if (action.closeOnClick) {\n this.visible = false\n }\n this.$emit(\"action-clicked\", action.id || action.label)\n },\n handleKeyDown(event: KeyboardEvent) {\n if (!(event.key === \"Escape\")) {\n return\n }\n if (this.persistent || !this.closeWithEscape) {\n event.preventDefault()\n } else {\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: () => [\n { label: \"Cancel\", color: \"default\", closeOnClick: true },\n { label: \"Submit\", color: \"primary\" },\n ],\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(value?: unknown) {\n if (this.withText) {\n this.showDialog = true\n } else {\n this.submitFeedback(value)\n }\n },\n submitFeedback(value: unknown) {\n if (value === \"Cancel\") {\n this.showDialog = false\n\n return\n }\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 showRegenerateButton: {\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 showRegenerateButton: {\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-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 from \"vue\"\nimport selectFormField from \"@/mixins/select-form-field\"\nexport default Vue.extend({\n name: \"ERadioGroup\",\n mixins: [selectFormField],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n withDescription: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\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 methods: {\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","\nimport Vue, { CreateElement, VNode } from \"vue\"\nimport { formField } from \"@/mixins\"\n\nexport default Vue.extend({\n name: \"ETabs\",\n mixins: [formField],\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n activeClass: {\n type: String,\n default: null,\n },\n },\n methods: {\n onTabSelected(index: number): void {\n // @ts-expect-error currentValue is inside the formField mixin\n this.currentValue = index\n this.$emit(\"tab-selected\", index)\n },\n\n isActive(index: number): boolean {\n return this.currentValue === index\n },\n isLink(link: string): boolean {\n return !!link && !this.isExternalLink(link)\n },\n isExternalLink(link: string): boolean {\n return !!link && link.startsWith(\"http\")\n },\n getTabBarItemClasses(\n index: number,\n link = \"\"\n ): Array<Record<string, boolean> | string> {\n return [\n \"e-tabs__item e-inline-block e-p-4 e-cursor-pointer e-text-xs\",\n {\n [this.activeClass]: this.isActive(index) && !!this.activeClass,\n \"e-bg-gray-800 !e-text-gray-200 e-border-gray-700\":\n this.dark && !this.isActive(index),\n \"hover:!e-text-gray-600 !e-text-gray-800\":\n this.isExternalLink(link) || this.isLink(link),\n \"!e-text-blue-600\": this.isExternalLink(link) || this.isLink(link),\n \" hover:e-bg-gray-100 e-bg-white \":\n !this.isActive(index) && !this.dark,\n \"!e-text-blue-600 e-bg-blue-100\": this.isActive(index) && !this.dark,\n \"e-text-[#00315f] e-bg-[#629efc] e-border-blue-600\":\n this.isActive(index) && this.dark,\n \"e-border-l-3 e-border-l-solid !e-border-b-blue-600\":\n this.vertical && this.isActive(index),\n \"e-border-b-2 e-border-b-solid !e-border-b-blue-600\":\n !this.vertical && this.isActive(index),\n },\n ]\n },\n getChildTitle(child: VNode): string {\n const propsData = child.componentOptions?.propsData as Record<\n string,\n string\n >\n if (propsData?.title) {\n return propsData.title\n }\n if (propsData?.name) {\n return propsData.name\n }\n if (child.data?.attrs?.name) {\n return child.data.attrs.name\n }\n\n return `Tab ${this.currentValue + 1}`\n },\n\n renderTab(h: CreateElement, child: VNode, index: number): VNode {\n const link = child.data?.attrs?.href || child.data?.attrs?.to\n const baseClass = this.getTabBarItemClasses(index, link)\n if (link) {\n try {\n if (this.isExternalLink(link)) {\n return h(\n \"a\",\n {\n key: index,\n class: baseClass,\n attrs: {\n href: link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n ...child.data?.attrs,\n },\n },\n [this.getChildTitle(child)]\n )\n } else {\n return h(\n \"router-link\",\n {\n key: index,\n class: baseClass,\n attrs: {\n to: link,\n ...child.data?.attrs,\n },\n },\n [this.getChildTitle(child)]\n )\n }\n } catch (error) {\n return h(\n \"a\",\n {\n key: index,\n class: baseClass,\n attrs: {\n href: link,\n ...child.data?.attrs,\n },\n },\n [this.getChildTitle(child)]\n )\n }\n }\n\n return h(\n \"div\",\n {\n key: index,\n class: baseClass,\n attrs: child.data?.attrs,\n on: {\n click: () => this.onTabSelected(index),\n },\n },\n [this.getChildTitle(child)]\n )\n },\n\n renderContent(h: CreateElement, child: VNode, index: number): VNode | null {\n if (child.data?.attrs?.href || child.data?.attrs?.to) {\n return null\n }\n\n if (!this.isActive(index)) {\n return null\n }\n\n return h(\n \"div\",\n {\n class: \"tab-content e-overflow-auto e-max-h-screen e-w-full e-pb-20\",\n },\n [child]\n )\n },\n },\n\n render(h: CreateElement): VNode {\n const children = this.$slots.default?.filter((child) => child.tag) || []\n\n return h(\n \"div\",\n {\n class: [\n \"e-tabs e-w-full e-h-full\",\n {\n \"e-flex-col\": !this.vertical,\n \"e-flex\": this.vertical,\n },\n ],\n },\n [\n // Tabs header\n h(\n \"div\",\n {\n class: [\n \"e-tabs__header e-text-sm e-font-medium e-text-center e-border-gray-300\",\n {\n \"e-flex e-border-b e-border-b-solid e-w-full\": !this.vertical,\n \"e-flex e-flex-col e-border-r e-border-r-solid\": this.vertical,\n \"e-text-gray-700\": !this.activeClass,\n },\n ],\n },\n children.map((child, index) => this.renderTab(h, child, index))\n ),\n\n // Tab content\n h(\n \"div\",\n {\n class: \"tab-content e-w-full\",\n },\n children\n .map((child, index) => this.renderContent(h, child, index))\n .filter(Boolean)\n ),\n ]\n )\n },\n})\n","\nimport Vue from \"vue\"\n\nexport default Vue.extend({\n name: \"ECard\",\n props: {\n title: {\n type: [String, undefined],\n default: undefined,\n },\n width: {\n type: [Number, String, undefined],\n default: undefined,\n },\n height: {\n type: [Number, String, undefined],\n default: undefined,\n },\n imageSize: {\n type: [Number, String, undefined],\n default: 100,\n },\n imagePadding: {\n type: Number,\n default: 0,\n },\n image: {\n type: [String, undefined],\n default: undefined,\n },\n blurBackground: {\n type: Boolean,\n default: false,\n },\n imageTranslation: {\n type: [Number, undefined],\n default: undefined,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n bodyPadding: 45,\n }\n },\n computed: {\n surfaceClasses(): Record<string, boolean> {\n return {\n \"e-border-solid e-border-[1px]\": true,\n \"e-border-gray-200\": !this.dark,\n \"e-border-gray-600\": this.dark,\n }\n },\n backgroundClasses(): Record<string, boolean> {\n return {\n \"e-bg-gray-800\": this.dark,\n \"e-bg-white\": !this.dark,\n }\n },\n textClasses(): Record<string, boolean> {\n return {\n \"e-text-gray-200\": this.dark,\n \"e-text-gray-600\": !this.dark,\n }\n },\n containerClasses(): Record<string, boolean> {\n return {\n ...this.surfaceClasses,\n ...this.backgroundClasses,\n ...this.textClasses,\n }\n },\n imageContainerClasses(): Record<string, boolean> {\n return {\n ...this.surfaceClasses,\n ...this.textClasses,\n \"e-bg-gray-100\": true,\n }\n },\n containerStyle(): Record<string, unknown> {\n let style: Record<string, unknown> = {}\n if (this.width) {\n style = {\n ...style,\n width: isNaN(this.width) ? this.width : `${this.width}px`,\n }\n }\n\n if (this.height) {\n style = {\n ...style,\n height: isNaN(this.height) ? this.height : `${this.height}px`,\n }\n }\n\n return style\n },\n effectiveImageSize(): number {\n const size = isNaN(this.imageSize)\n ? parseInt(this.imageSize)\n : this.imageSize\n\n return size - 2 * this.imagePadding\n },\n imageStyle(): Record<string, unknown> {\n return {\n height: \"auto\",\n width: `${this.effectiveImageSize}px`,\n margin: `${this.imagePadding}px`,\n }\n },\n imageContainerStyle(): Record<string, unknown> {\n const containerSize = isNaN(this.imageSize)\n ? this.imageSize\n : `${this.imageSize}px`\n\n return {\n height: containerSize,\n width: containerSize,\n top: `${-this.computedImageTranslation}px`,\n left: `${-this.computedImageTranslation}px`,\n }\n },\n computedImageTranslation(): number {\n return isNaN(this.imageTranslation) ? -20 : this.imageTranslation\n },\n titleStyle(): Record<string, unknown> {\n if (!this.image) {\n return {}\n }\n\n return {\n paddingLeft: `${this.imageSize - this.computedImageTranslation}px`,\n }\n },\n contentStyle(): Record<string, unknown> {\n if (!this.image) {\n return {}\n }\n const topPadding = Math.max(\n 0,\n this.imageSize - this.bodyPadding - this.computedImageTranslation\n )\n\n return {\n paddingTop: `${topPadding}px`,\n }\n },\n },\n mounted() {\n if (this.blurBackground && !/\\.(gif|png|svg)$/.test(this.image)) {\n console.error(\n \"ECard: Image should be a gif, png or svg to blur the background\"\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 EToggleSwitch from \"@/components/EToggleSwitch.vue\"\nimport EZoomable from \"@/components/EZoomable.vue\"\nimport ESchedulePicker from \"@/components/ESchedulePicker.vue\"\nimport ESelect from \"@/components/ESelect.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\"\nimport ETabs from \"@/components/ETabs.vue\"\nimport ECard from \"@/components/ECard.vue\"\nimport EPopover from \"@/components/EPopover.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 EImagePlayer,\n EZoomableImg,\n EZoomSlider,\n EActionButton,\n ETooltip,\n ELayout,\n EChat,\n EContextProvider,\n ECopyToClipboardBtn,\n EPopover,\n EVoiceRecorderToText,\n ERadioGroup,\n ESelect,\n ETabs,\n ECard,\n ESchedulePicker,\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 EImagePlayer,\n EZoomableImg,\n EZoomSlider,\n EActionButton,\n ETooltip,\n ELayout,\n ECopyToClipboardBtn,\n EPopover,\n EVoiceRecorderToText,\n ERadioGroup,\n ESelect,\n ETabs,\n ESchedulePicker,\n}\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n\nexport * from \"@/mixins\"\n"],"names":["ScheduleType","Days","Size","BaseColor","TimelineAxis","TimelineChartType","TimelineIntervalChangeTrigger","ImageQuality","Position","ChatMessageRole","ChatMessageType","FeedbackType","_sfc_main$1I","Vue","colorClasses","sizeClasses","_sfc_main$1H","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","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","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","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","flattenColorPalette","importDefault","mod","helpers","flattenColorPaletteImport","COMPONENTS","scrollbarProperties","preferPseudoElements","addBaseStyles","addBase","preferredStrategy","generateBaseUtilities","component","generateScrollbarSizeUtilities","addColorUtilities","matchUtilities","themeColors","addRoundedUtilities","addBaseSizeUtilities","addUtilities","addSizeUtilities","dimension","utilities","addVariants","variants","tailwind","_a","TailwindColors","__CJS__import__0__.default","__CJS__import__0__","BrandColors","customColors","CustomColors","__CJS__import__1__.default","__CJS__import__1__","__CJS__import__2__.default","__CJS__import__2__","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","ToggleSwitchSizes","BadgeColors","TooltipColors","TooltipPositions","EVENTS","_sfc_main$1G","acc","iconClasses","_b","_sfc_main$1F","fill","animationDuration","_sfc_main$1E","_sfc_main$1D","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","schedules","twentyFourHours","hoursMinutesStrToMinutes","time","hours","minutes","minutesToHoursMinutesStr","hour","toNumericSchedule","schedule","day","h","subtractOneHourFromEndIntervals","interval","endHour","endMinute","_sfc_main$1C","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","seconds","_sfc_main$1B","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","isWithinElement","createEventHandler","ClickOutsideDirective","DirectivesMap","defs","classNames","tzDateToD3Date","timestamp","timezone","offsetMinutes","getUtcOffset","d3DateToTzDate","date","userUtcOffset","unsafeGuessUtcOffset","_sfc_main$1A","yOffset","contentFirstChild","contentBox","existingTimeoutId","timeoutId","transitionDuration","timeoutDuration","milestone","_sfc_main$1z","marker","_sfc_main$1y","ETimelineMarker","that","markerElement","dragEvent","targetLeft","newTimestamp","newPosition","isNewTimestampAllowed","padding","overlapThreshold","markersArray","markerX","isHidden","nextMarker","nextTimestamp","nextMarkerX","_sfc_main$1x","minDate","maxDate","startDate","endDate","focusedDomain","maxDuration","scaleExtent","minTranslateX","maxTranslateX","translateExtent","newTimeScale","newDomainStart","newDomainEnd","isLeftBoundaryReached","isRightBoundaryReached","lastTransform","startFocusedDomain","endFocusedDomain","domainSpan","d","domainWidth","viewportSpan","paddedViewportSpan","scaleFactor","minTimestamp","maxTimestamp","scaledMinTimestampPosition","scaledMaxTimestampPosition","centerPoint","translateX","currentTransform","trigger","visibleFromDate","visibleToDate","fromDate","toDate","targetTimestamp","targetDate","targetX","isLeftReached","isRightReached","_sfc_main$1w","timeAtPixel0","timeAtPixel1","HOUR","hoursPerPixel","format","getFormattedDay","daySuffix","getFormattedSuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","abbreviatedMonth","year","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","_sfc_main$1v","EXAxis","_sfc_main$1u","_sfc_main$1t","_sfc_main$1s","_sfc_main$1r","startTime","endTime","_sfc_main$1q","cursorRef","cursor","cursorX","_sfc_main$1p","ECursor","_sfc_main$1o","_sfc_main$1n","formattedDateTz","_sfc_main$1m","_sfc_main$1l","_sfc_main$1k","ETimelineGroupContainer","ETimelineRectsChartGroupedDots","aTime","bTime","group","textConfig","groupStart","groupEnd","groupCenter","isGroupedEvent","newDensity","events","groups","currentGroup","prevEvent","currentX","prevX","prevWidth","eventData","eventsData","textPadding","characterWidth","text","maxCharacters","timeScale","rectMinWidth","startTimestamp","endTimestamp","oneSecondWidth","patchFn","patchedEvent","baseColor","dark","_sfc_main$1j","visibleStart","visibleEnd","prevTimestamp","yScale","area","_sfc_main$1i","previousCount","_sfc_main$1h","ETimelineSVGDefs","EXAxisBackground","EXAxisDetailed","EXAxisOverview","ETimelineMilestone","ETimelineMarkers","ETimelineCursor","ETimelineSelectedTimestampCursor","EZoomBehavior","ECursorBehavior","ETimelineRectsChart","ETimelineForbiddenInterval","ETimelineLinesChart","ETimelineBarsChart","_group","flattenedEvents","combinedLabelsHeight","eventsGroup","oldestEvent","latestEvent","allTimestamps","isVisible","isEventVisible","eventStart","eventEnd","filteredFlattenedBarsCounts","filteredFlattenedLinesCounts","previousCountsByTimestamp","allCounts","oldestTime","latestTime","slots","oldMarkers","newMarkers","previousGroups","groupId","mergedGroups","markersTimestamps","t1","t2","ts","isWithinForbiddenInterval","isBeforeStartDate","isAfterEndDate","_event","eventType","milestoneColor","groupColor","groupName","bottom","internalVisibility","configVisibility","unit","getNextTimestamp","getPreviousTimestamp","filledEvents","currentEvent","nextEvent","currentTimestamp","fillerAfterCurrent","fillerBeforeNext","firstEventTimestamp","lastEventTimestamp","firstFiller","lastFiller","defaultEvent","milestoneType","_sfc_main$1g","regExp","_sfc_main$1f","itemClass","backgroundColor","amount","parsedColor","adjustment","_sfc_main$1e","EHeatmapBar","_sfc_main$1d","joiner","_sfc_main$1c","_sfc_main$1b","EIcon","defaultPosition","_sfc_main$1a","ECompareSeparator","containerHeight","containerWidth","imageHeight","imageWidth","containerRatio","imageRatio","calculateDimension","factor","separatorPositionX","touch","timeouts","cb","eventListeners","listener","l","_sfc_main$19","eventListener","activatorElement","activator","menu","children","minSize","activatorSize","translation","translationDirection","buttonRect","buttonSize","_sfc_main$18","_sfc_main$17","BaseIcon","_sfc_main$16","_sfc_main$15","_sfc_main$14","_sfc_main$13","_sfc_main$12","_sfc_main$11","_sfc_main$10","_sfc_main$$","_sfc_main$_","_sfc_main$Z","_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","SvgIcons","Bim","Brightness","Blur","Compare","ConcretePump","Excavator","DroneView","Dumper","Evercam","EvercamLogo","FlatbedSemiTrailer","FreeDrawing","IModel","Inspection","Loader","MiniModel","MarkUp","Nerves","OtherTruck","RoadVehicle","Roller","Robot","SemiTrailer","SkidSteerLoader","SmallTruck","TankTruck","The360","TippingTruck","TruckHead","TruckMixer","Worker","ZohoCrm","TagPlus","camelToKebabCase","iconName","eSvgIcons","_sfc_main$B","formField","toggleOpen","openedId","selectFormField","op","option","valueIndex","allValues","_sfc_main$z","dynamicClasses","_sfc_main$y","isLastRange","sliderColor","rangeFrom","rangeWidth","range","rangeColor","roundedValue","q","n1","n2","_sfc_main$x","_sfc_main$w","ERow","ECol","ERangeSlider","EDivider","tempSchedule","times","newRange","inactivityListener","reminders","currentReminder","onMouseMove","_sfc_main$v","_sfc_main$u","_sfc_main$t","ECheckbox","EPopover","query","searchInput","wrapper","_sfc_main$s","objects","currentPath","valueMatches","arrayMatches","objectMatches","ctrlKey","shiftKey","fKey","esc","searchField","_sfc_main$r","defaultColorClasses","_sfc_main$q","ETooltip","themeStyle","_sfc_main$p","EActionButton","_sfc_main$o","_sfc_main$n","EZoomSlider","EFadeTransition","defaultPoint","aspectRatio","frame","left","top","fakeMouseEvent","zoomedImage","newZoomLevel","minHeight","minWidth","right","bounds","previousPinchDistance","now","timeSinceLastTap","snapshot","_sfc_main$m","EZoomableImg","preloadedFrames","frameIndex","playing","preloaded","progrssBarRect","startPercentage","endPercentage","newFrameIndex","startIndex","endIndex","queueId","img","_sfc_main$l","overlayFooter","footer","_sfc_main$j","_sfc_main$i","EAvatar","_sfc_main$h","EEvercamLogo","_sfc_main$g","newVal","currentChildCount","anchor","chatBody","_sfc_main$f","this","u","C","f","E","w","A","T","S","N","O","L","D","M","P","R","Q","F","H","I","U","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$e","newChunks","contentDiv","newChunk","chunks","chunk","targets","propsData","targetElement","scopedSlot","ReactiveSlotWrapper","vm","_sfc_main$d","propName","fallback","copyToClipboard","_sfc_main$c","dialog","defaultClasses","action","_sfc_main$b","EDialog","_sfc_main$a","EFeedbackButton","ECopyToClipboardBtn","_sfc_main$9","EChatMessageActions","EPulsatingDot","EMarkdown","oldChunks","feedback","_sfc_main$8","_sfc_main$7","dataArray","sum","amplitude","_sfc_main$6","EVoiceInputVolumeIndicator","newTranscript","SpeechRecognition","track","_sfc_main$5","EVoiceInput","isSubmit","textarea","_sfc_main$4","_sfc_main$3","EChatWrapper","EChatHeader","EChatBody","EChatMessage","EChatFooter","EChatInput","EChatSuggestionCard","borderTop","borderBottom","chatContainer","chatHeader","chatFooter","messageId","_sfc_main$2","_sfc_main$1","link","baseClass","_sfc_main","style","containerSize","components","EBadge","EVideoPlayer","ETimeline","EVideoEmbed","EHoursHeatmap","EReadMore","ETruncatedDiv","EImagesComparator","EToggleSwitch","EExpandableMenu","EGlobalSearch","ESvgIcon","ECalendarHeatmap","EImagePlayer","ELayout","EChat","EContextProvider","EVoiceRecorderToText","ERadioGroup","ESelect","ETabs","ECard","ESchedulePicker","mixins","definition"],"mappings":"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AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;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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,72,73,74,75,76,183]}