@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.umd.js","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","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":"uhCAQY,IAAAA,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,OACLA,EAAA,KAAO,OACPA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MACRA,EAAA,KAAQ,EAAA,MAfEA,IAAAA,GAAA,CAAA,CAAA,EAkBAC,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAPAA,IAAAA,GAAA,CAAA,CAAA,EAoEAC,IAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,mBAAqB,qBAHXA,IAAAA,IAAA,CAAA,CAAA,EAkEAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,WAAa,aALHA,IAAAA,GAAA,CAAA,CAAA,EAuCAC,IAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,QAAU,UAHAA,IAAAA,IAAA,CAAA,CAAA,ECnMG,MAAAC,GAAAC,EAAI,OAAO,CACxB,KAAM,SACN,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,OACN,QAASL,EAAU,OACrB,EACA,KAAM,CACJ,KAAM,OACN,QAASD,EAAK,IAChB,CACF,EACA,MAAO,CACE,MAAA,CACL,OAAQ,CACN,CAACC,EAAU,KAAK,EAAG,6BACnB,CAACA,EAAU,IAAI,EAAG,6BAClB,CAACA,EAAU,OAAO,EAAG,8BACrB,CAACA,EAAU,OAAO,EAAG,4BACrB,CAACA,EAAU,OAAO,EAAG,8BACrB,CAACA,EAAU,OAAO,EAAG,4BACvB,EACA,MAAO,CACL,CAACD,EAAK,GAAG,EAAG,cACZ,CAACA,EAAK,EAAE,EAAG,cACX,CAACA,EAAK,EAAE,EAAG,cACX,CAACA,EAAK,EAAE,EAAG,cACX,CAACA,EAAK,EAAE,EACN,qEACF,CAACA,EAAK,EAAE,EACN,sEACJ,CAAA,CAEJ,EACA,SAAU,CACR,cAAyB,CACjB,MAAAO,EACJ,KAAK,OAAO,KAAK,KAAiC,GAClD,KAAK,OAAON,EAAU,OAAO,EACzBO,EAAe,KAAK,MAAM,KAAK,IAA+B,GAClE,KAAK,MAAMR,EAAK,EAAE,EAEb,MAAA,CACL,wDACAO,EACAC,CAAA,CAEJ,EACA,UAAoB,CACX,MAAA,CAACR,EAAK,GAAIA,EAAK,EAAE,EAAE,SAAS,KAAK,IAAI,CAC9C,CACF,CACF,CAAC,y8BCvDcS,GAAAH,EAAI,OAAO,CACxB,KAAM,UACN,WAAY,CAAA,MACVI,EACF,EACA,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAASV,EAAK,EAChB,EACA,UAAW,CACT,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,OACN,QAASC,EAAU,KACrB,EACA,UAAW,CACT,KAAM,OACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,OACN,QAASD,EAAK,EAChB,EACA,MAAO,CACL,KAAM,OACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,MAAO,CACL,CAACA,EAAK,EAAE,EAAG,wBACX,CAACA,EAAK,EAAE,EAAG,0BACX,CAACA,EAAK,EAAE,EAAG,4BACX,CAACA,EAAK,EAAE,EAAG,2BACX,CAACA,EAAK,EAAE,EAAG,2BACX,CAACA,EAAK,KAAK,CAAC,EAAG,0BACjB,CAAA,CAEJ,EACA,SAAU,CACR,eAA0B,CAIjB,MAAA,CACL,wIAHA,KAAK,MAAM,KAAK,IAAmB,GAAK,KAAK,MAAMA,EAAK,EAAE,CAI1D,CAEJ,CACF,CACF,CAAC,yqBC3DGW,EAAE,OACFC,GAAO,UAAW,CAAC,MAAO,CAAC,iBAAiB,GAAM,MAAMD,EAAE,KAAKA,EAAE,IAAIA,EAAE,OAAOA,EAAE,UAAUA,EAAE,QAAQA,EAAE,OAAOA,EAAE,cAAcA,EAAE,MAAMA,EAAE,IAAIA,EAAE,MAAMA,EAAE,OAAOA,EAAE,KAAKA,EAAE,QAAQA,EAAE,KAAKA,EAAE,MAAMA,EAAE,KAAKA,EAAE,QAAQA,EAAE,MAAMA,EAAE,QAAQA,EAAE,SAASA,EAAE,OAAOA,EAAE,UAAUA,EAAE,OAAOA,EAAE,QAAQA,CAAC,CAAC,EACxRE,GAAc,QAACD,KACfC,GAAA,QAAA,aAA8BD,kCCF9B,OAAO,eAAwBE,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,SAASC,EAAQC,EAAQC,EAAK,CAC1B,QAAQC,KAAQD,EAAI,OAAO,eAAeD,EAAQE,EAAM,CACpD,WAAY,GACZ,IAAKD,EAAIC,CAAI,CACrB,CAAK,CACJ,CACDH,EAAQD,EAAS,CACb,IAAK,UAAW,CACZ,OAAOK,CACV,EACD,QAAS,UAAW,CAChB,OAAOC,CACV,CACL,CAAC,EACD,MAAMC,EAA4BC,EAAyBC,EAAqB,EAChF,SAASD,EAAyBE,EAAK,CACnC,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACjC,QAASA,CACjB,CACC,CACD,IAAIC,EAAe,IAAI,IACvB,SAASC,EAAIC,EAAMC,EAAUC,EAAK,CAC1B,OAAO,SAAY,aAAe,QAAQ,IAAI,gBAC9CA,GAAOJ,EAAa,IAAII,CAAG,IAC3BA,GAAKJ,EAAa,IAAII,CAAG,EAC7B,QAAQ,KAAK,EAAE,EACfD,EAAS,QAASE,GAAU,QAAQ,KAAKH,EAAM,IAAKG,CAAO,CAAC,EAC/D,CACD,SAASX,EAAIY,EAAO,CAChB,OAAOV,EAAY,QAAQ,IAAIU,CAAK,CACvC,CACD,MAAMX,EAAW,CACb,KAAMS,EAAKD,EAAU,CACjBF,EAAIL,EAAY,QAAQ,KAAKA,EAAY,QAAQ,KAAK,MAAM,CAAC,EAAG,GAAG,MAAM,QAAQQ,CAAG,EAAI,CACpFA,CACZ,EAAY,CACAD,EACAC,CACZ,CAAS,CACJ,EACD,KAAMA,EAAKD,EAAU,CACjBF,EAAIL,EAAY,QAAQ,KAAKA,EAAY,QAAQ,OAAO,MAAM,CAAC,EAAG,GAAG,MAAM,QAAQQ,CAAG,EAAI,CACtFA,CACZ,EAAY,CACAD,EACAC,CACZ,CAAS,CACJ,EACD,KAAMA,EAAKD,EAAU,CACjBF,EAAIL,EAAY,QAAQ,KAAKA,EAAY,QAAQ,QAAQ,MAAM,CAAC,EAAG,GAAG,MAAM,QAAQQ,CAAG,EAAI,CACvFA,CACZ,EAAY,CACAD,EACAC,CACZ,CAAS,CACJ,qBC1DL,OAAO,eAAwBf,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,MAAMY,EAAqBV,EAAyBC,EAAsB,EAC1E,SAASD,EAAyBE,EAAK,CACnC,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACjC,QAASA,CACjB,CACC,CACD,SAASS,EAAK,CAAE,QAAAC,EAAU,KAAAC,EAAO,GAAAC,CAAE,EAAK,CACpCJ,EAAK,QAAQ,KAAK,GAAGG,CAAI,iBAAkB,CACvC,sBAAsBD,CAAO,OAAOC,CAAI,4BAA4BC,CAAE,MACtE,yDACR,CAAK,CACJ,CACD,MAAMhB,EAAW,CACb,QAAS,UACT,QAAS,eACT,YAAa,cACb,MAAO,OACP,MAAO,OACP,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,QAAS,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,IAAK,CACD,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,QAAS,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,IAAK,CACD,GAAI,UACJ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AM,KAAM,IAAI,CACxC,EACD,SACA,YACA,SACA,YACA,YACA,cACA,cACA,cACA,CACE,QAAS,2DACV,EACD,CACE,QAAS,qDACV,EACD,CACE,QAAS,mDACV,CACF,CACH,EAGAE,GAAO,QAAUD,oGCjMjB,OAAO,eAAwB/B,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOiC,CACV,CACL,CAAC,EACD,SAASA,EAAYC,EAAO,CAExB,GADAA,EAAQ,GAAGA,CAAK,GACZA,IAAU,IACV,MAAO,IAGX,GAAI,4CAA4C,KAAKA,CAAK,EACtD,OAAOA,EAAM,QAAQ,SAAWC,GAAOA,IAAS,IAAM,GAAK,GAAG,EAMlE,IAAIC,EAAmB,CACnB,MACA,OACA,MACA,MACA,OACR,EACI,UAAWC,KAAMD,EACb,GAAIF,EAAM,SAAS,GAAGG,CAAE,GAAG,EACvB,MAAO,QAAQH,CAAK,QAGhC,+BClCA,OAAO,eAAwBlC,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,MAAMA,EAAW,CACb,YACA,YACA,gBACA,gBACA,aACA,WACA,QACA,YACA,SACA,QACA,aACA,kBACA,gBACA,UACA,eACA,aACA,QACA,QACA,SACA,YACA,YACA,UACA,cACA,OACA,SACA,YACA,YACA,QACA,WACA,WACA,OACA,aACA,WACA,YACA,cACA,cACA,iBACA,gBACA,kBACA,YACA,SACA,OACA,QACA,YACA,YACA,SACA,cACA,aACA,SACA,iBACA,kBACA,iBACA,eACA,gBACA,oBACA,gBACA,iBACA,aACA,UACA,cACA,cACA,aACA,kBACA,eACA,eACA,sBACA,mBACA,gBACA,WACA,eACA,aACA,eACA,aACA,iBACA,eACA,MACA,QACA,cACA,cACA,cACA,gBACA,YACA,YACA,cACA,WACA,qBACA,iBACA,eACA,UACA,aACA,WACA,YACA,eACA,cACA,cACA,cACA,gBACA,kBACA,oBACA,kBACA,qBACA,qBACA,iBACA,uBACA,iBACA,qBACA,mBACA,mBACA,OACA,SACA,cACA,YACA,iBACA,UACA,YACA,aACA,gBACA,aACA,WACA,aACA,gBACA,YACA,qBACA,aACA,gBACA,YACA,cACA,iBACA,sBACA,sBACA,0BACA,sBACA,gBACA,mBACA,qBACA,aACA,cACA,UACA,sBACA,eACA,YACA,iBACA,eACA,eACA,gBACA,eACA,YACA,YACA,cACA,kBACA,kBACA,OACA,aACA,WACA,aACA,YACA,YACA,SACA,WACA,QACA,SACA,eACA,qBACA,mBACA,oBACA,oBACA,iBACA,kBACA,mBACA,gBACA,iBACA,qBACA,kBACA,qBACA,2BACA,aACA,UACA,UACA,kDC5LJ,OAAO,eAAwBN,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,SAASA,EAASgC,EAAcC,EAAS,CACrC,OAAID,IAAiB,OACVC,EAES,MAAM,QAAQD,CAAY,EAAIA,EAAe,CAC7D,GAAG,IAAI,IAAIC,EAAQ,OAAQC,GAChBF,IAAiB,IAASA,EAAaE,CAAU,IAAM,EACjE,EAAE,OAAO,OAAO,KAAKF,CAAY,EAAE,OAAQE,GACjCF,EAAaE,CAAU,IAAM,EACvC,CAAC,CAAC,CACX,CAEA,+BCrBA,OAAO,eAAwBxC,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,WAAY,CACvC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOyC,CACV,CACL,CAAC,EACD,SAASA,EAASvC,KAAWwC,EAAS,CAClC,QAASC,KAAUD,EAAQ,CACvB,QAAQE,KAAKD,EAAO,CAChB,IAAIE,EACE,EAAA3C,GAAW,OAAsC2C,EAAyB3C,EAAO,kBAAoB,MAAQ2C,IAA2B,SAAkBA,EAAuB,KAAK3C,EAAQ0C,CAAC,IACjM1C,EAAO0C,CAAC,EAAID,EAAOC,CAAC,EAE3B,CACD,QA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,CAAK,EAAE,IAAI,CAAC,CAACU,EAAGgE,CAAC,IAAI,CACtDhE,EACA8D,EAAUE,CAAC,CACd,CAAA,CAAC,EAEH1E,CACX,qCCpBA,OAAO,eAAwBlC,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAO6G,CACV,CACL,CAAC,EACD,SAASA,EAAaC,EAAW,CAC7B,OAAOA,EAAU,QAAQ,OAAQ,OAAO,CAC5C,2CCXA,OAAO,eAAwB9G,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,MAAMA,EAAW,CACb,UAAW,CACP,IACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,MAAO,CACH,EACA,EACA,CACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,EACA,GACH,EACD,WAAY,CACR,IACA,GACA,GACH,EACD,MAAO,CACH,IACA,GACA,EACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,MAAO,CACH,IACA,IACA,EACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,GACA,EACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,SAAU,CACN,EACA,EACA,GACH,EACD,SAAU,CACN,EACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,EACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,UAAW,CACP,EACA,IACA,CACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,EACA,GACH,EACD,eAAgB,CACZ,GACA,IACA,EACH,EACD,WAAY,CACR,IACA,IACA,CACH,EACD,WAAY,CACR,IACA,GACA,GACH,EACD,QAAS,CACL,IACA,EACA,CACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,cAAe,CACX,GACA,GACA,GACH,EACD,cAAe,CACX,GACA,GACA,EACH,EACD,cAAe,CACX,GACA,GACA,EACH,EACD,cAAe,CACX,EACA,IACA,GACH,EACD,WAAY,CACR,IACA,EACA,GACH,EACD,SAAU,CACN,IACA,GACA,GACH,EACD,YAAa,CACT,EACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,WAAY,CACR,GACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,EACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,YAAa,CACT,GACA,IACA,EACH,EACD,QAAS,CACL,IACA,EACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,MAAO,CACH,EACA,IACA,CACH,EACD,YAAa,CACT,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,EACH,EACD,OAAQ,CACJ,GACA,EACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,CACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,qBAAsB,CAClB,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,cAAe,CACX,GACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,CACH,EACD,UAAW,CACP,GACA,IACA,EACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,EACA,GACH,EACD,OAAQ,CACJ,IACA,EACA,CACH,EACD,iBAAkB,CACd,IACA,IACA,GACH,EACD,WAAY,CACR,EACA,EACA,GACH,EACD,aAAc,CACV,IACA,GACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,eAAgB,CACZ,GACA,IACA,GACH,EACD,gBAAiB,CACb,IACA,IACA,GACH,EACD,kBAAmB,CACf,EACA,IACA,GACH,EACD,gBAAiB,CACb,GACA,IACA,GACH,EACD,gBAAiB,CACb,IACA,GACA,GACH,EACD,aAAc,CACV,GACA,GACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,EACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,GACA,CACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,EACA,GACH,EACD,cAAe,CACX,IACA,GACA,GACH,EACD,IAAK,CACD,IACA,EACA,CACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,YAAa,CACT,IACA,GACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,EACH,EACD,SAAU,CACN,GACA,IACA,EACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,GACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,YAAa,CACT,EACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,IAAK,CACD,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,GACA,EACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH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a,CACX,KAAM,OACN,QAAS,IAAMxB,EACjB,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,OACN,QAAS,MACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,MACX,EACA,kBAAmB,CACjB,KAAM,OACN,QAAS,MACX,EACA,iBAAkB,CAChB,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,QACN,QAAS,EACX,EACA,sBAAuB,CACrB,KAAM,OACN,QAAS,MACX,EACA,qBAAsB,CACpB,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,aAAc,CACZ,KAAM,OACN,QAAS,CACX,EACA,UAAW,CACT,KAAM,OACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,CACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,CACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,EACX,EACA,oBAAqB,CACnB,KAAM,OACN,QAAS,EACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,IACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,IACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,MACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,MACX,EACA,gBAAiB,CACf,KAAM,CAAC,OAAQ,MAAS,EACxB,QAAS,MACX,EACA,cAAe,CACb,KAAM,CAAC,OAAQ,MAAS,EACxB,QAAS,MACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,sBAAuB,CACrB,KAAM,OACN,QAAS,GACX,EACA,aAAc,CACZ,KAAM,OACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,QAAS,CACP,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,cAAe,CACb,KAAM,QACN,QAAS,EACX,EACA,mBAAoB,CAClB,KAAM,QACN,QAAS,EACX,EACA,iCAAkC,CAChC,KAAM,OACN,QAAS,GACX,EACA,mCAAoC,CAClC,KAAM,OACN,QAAS,CACX,EACA,o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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.umd.js","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","helpers","mod","flattenColorPaletteImport","importDefault","COMPONENTS","scrollbarProperties","preferPseudoElements","addBaseStyles","addBase","preferredStrategy","generateBaseUtilities","component","generateScrollbarSizeUtilities","utilities","addUtilities","matchUtilities","themeColors","dimension","variants","addBaseSizeUtilities","addColorUtilities","addRoundedUtilities","addSizeUtilities","addVariants","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","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","_f","_g","_h","_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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,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,MAAMA,EAAW,CACb,YACA,YACA,gBACA,gBACA,aACA,WACA,QACA,YACA,SACA,QACA,aACA,kBACA,gBACA,UACA,eACA,aACA,QACA,QACA,SACA,YACA,YACA,UACA,cACA,OACA,SACA,YACA,YACA,QACA,WACA,WACA,OACA,aACA,WACA,YACA,cACA,cACA,iBACA,gBACA,kBACA,YACA,SACA,OACA,QACA,YACA,YACA,SACA,cACA,aACA,SACA,iBACA,kBACA,iBACA,eACA,gBACA,oBACA,gBACA,iBACA,aACA,UACA,cACA,cACA,aACA,kBACA,eACA,eACA,sBACA,mBACA,gBACA,WACA,eACA,aACA,eACA,aACA,iBACA,eACA,MACA,QACA,cACA,cACA,cACA,gBACA,YACA,YACA,cACA,WACA,qBACA,iBACA,eACA,UACA,aACA,WACA,YACA,eACA,cACA,cACA,cACA,gBACA,kBACA,oBACA,kBACA,qBACA,qBACA,iBACA,uBACA,iBACA,qBACA,mBACA,mBACA,OACA,SACA,cACA,YACA,iBACA,UACA,YACA,aACA,gBACA,aACA,WACA,aACA,gBACA,YACA,qBACA,aACA,gBACA,YACA,cACA,iBACA,sBACA,sBACA,0BACA,sBACA,gBACA,mBACA,qBACA,aACA,cACA,UACA,sBACA,eACA,YACA,iBACA,eACA,eACA,gBACA,eACA,YACA,YACA,cACA,kBACA,kBACA,OACA,aACA,WACA,aACA,YACA,YACA,SACA,WACA,QACA,SACA,eACA,qBACA,mBACA,oBACA,oBACA,iBACA,kBACA,mBACA,gBACA,iBACA,qBACA,kBACA,qBACA,2BACA,aACA,UACA,UACA,kDC5LJ,OAAO,eAAwBN,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,SAASA,EAASC,EAAcC,EAAS,CACrC,OAAID,IAAiB,OACVC,EAES,MAAM,QA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ACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,QAAS,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,IAAK,CACD,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACR,EACD,QAAS,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,U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aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,EAAS,UAAW,CACtC,WAAY,GACZ,IAAK,UAAW,CACZ,OAAOM,CACV,CACL,CAAC,EACD,MAAMA,EAAW,CACb,UAAW,CACP,IACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,MAAO,CACH,EACA,EACA,CACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,EACA,GACH,EACD,WAAY,CACR,IACA,GACA,GACH,EACD,MAAO,CACH,IACA,GACA,EACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,MAAO,CACH,IACA,IACA,EACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,GACA,EACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,SAAU,CACN,EACA,EACA,GACH,EACD,SAAU,CACN,EACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,EACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,UAAW,CACP,EACA,IACA,CACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,EACA,GACH,EACD,eAAgB,CACZ,GACA,IACA,EACH,EACD,WAAY,CACR,IACA,IACA,CACH,EACD,WAAY,CACR,IACA,GACA,GACH,EACD,QAAS,CACL,IACA,EACA,CACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,cAAe,CACX,GACA,GACA,GACH,EACD,cAAe,CACX,GACA,GACA,EACH,EACD,cAAe,CACX,GACA,GACA,EACH,EACD,cAAe,CACX,EACA,IACA,GACH,EACD,WAAY,CACR,IACA,EACA,GACH,EACD,SAAU,CACN,IACA,GACA,GACH,EACD,YAAa,CACT,EACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,WAAY,CACR,GACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,EACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,YAAa,CACT,GACA,IACA,EACH,EACD,QAAS,CACL,IACA,EACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,MAAO,CACH,EACA,IACA,CACH,EACD,YAAa,CACT,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,EACH,EACD,OAAQ,CACJ,GACA,EACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,CACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,qBAAsB,CAClB,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,cAAe,CACX,GACA,IACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,eAAgB,CACZ,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,CACH,EACD,UAAW,CACP,GACA,IACA,EACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,EACA,GACH,EACD,OAAQ,CACJ,IACA,EACA,CACH,EACD,iBAAkB,CACd,IACA,IACA,GACH,EACD,WAAY,CACR,EACA,EACA,GACH,EACD,aAAc,CACV,IACA,GACA,GACH,EACD,aAAc,CACV,IACA,IACA,GACH,EACD,eAAgB,CACZ,GACA,IACA,GACH,EACD,gBAAiB,CACb,IACA,IACA,GACH,EACD,kBAAmB,CACf,EACA,IACA,GACH,EACD,gBAAiB,CACb,GACA,IACA,GACH,EACD,gBAAiB,CACb,IACA,GACA,GACH,EACD,aAAc,CACV,GACA,GACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,YAAa,CACT,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,EACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,IACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,CACH,EACD,UAAW,CACP,IACA,GACA,CACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,cAAe,CACX,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,EACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,EACA,GACH,EACD,cAAe,CACX,IACA,GACA,GACH,EACD,IAAK,CACD,IACA,EACA,CACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,YAAa,CACT,IACA,GACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,EACH,EACD,SAAU,CACN,GACA,IACA,EACH,EACD,SAAU,CACN,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,GACA,EACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,GACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,UAAW,CACP,IACA,IACA,GACH,EACD,KAAM,CACF,IACA,IACA,GACH,EACD,YAAa,CACT,EACA,IACA,GACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,IAAK,CACD,IACA,IACA,GACH,EACD,KAAM,CACF,EACA,IACA,GACH,EACD,QAAS,CACL,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,GACA,EACH,EACD,UAAW,CACP,GACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,MAAO,CACH,IACA,IACA,GACH,EACD,WAAY,CACR,IACA,IACA,GACH,EACD,OAAQ,CACJ,IACA,IACA,CACH,EACD,YAAa,CACT,IACA,IACA,EACH,qBC7uBL,OAAO,eAAwBN,EAAA,aAAc,CACzC,MAAO,EACX,CAAC,EACD,SAASa,EAAQC,EAAQC,EAAK,CAC1B,QAAQC,KAAQD,EAAI,OAAO,eAAeD,EAAQE,EAAM,CACpD,WAAY,GACZ,IAAKD,EAAIC,CAAI,CACrB,CAAK,CACJ,CACDH,EAAQb,EAAS,CACb,WAAY,UAAW,CACnB,OAAOyG,CA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d,cAAe,aAChB,EACD,eAAgB,CACd,cAAe,aAChB,EACD,iBAAkB,CAChB,cAAe,aAChB,EACD,iBAAkB,CAChB,cAAe,aAChB,EACD,eAAgB,CACd,cAAe,SAChB,EACD,GAAI,CACF,cAAe,MAChB,EACD,kBAAmB,CACjB,WAAY,MACZ,MAAO,0BACR,EACD,kBAAmB,CACjB,MAAO,yBACR,EACD,GAAI,CACF,MAAO,2BACP,WAAY,KACb,EACD,GAAI,CACF,YAAa,qBACb,eAAgB,CACjB,EACD,WAAY,CACV,WAAY,MACZ,UAAW,SACX,MAAO,yBACP,uBAAwB,UACxB,uBAAwB,gCACxB,OAAQ,kCACT,EACD,qCAAsC,CACpC,QAAS,YACV,EACD,mCAAoC,CAClC,QAAS,aACV,EACD,GAAI,CACF,MAAO,2BACP,WAAY,KACb,EACD,YAAa,CACX,WAAY,MACZ,MAAO,SACR,EACD,GAAI,CACF,MAAO,2BACP,WAAY,KACb,EACD,YAAa,CACX,WAAY,MACZ,MAAO,SACR,EACD,GAAI,CACF,MAAO,2BACP,WAAY,KACb,EACD,YAAa,CACX,WAAY,MACZ,MAAO,SACR,EACD,GAAI,CACF,MAAO,2BACP,WAAY,KACb,EACD,YAAa,CACX,WAAY,MACZ,MAAO,SACR,EACD,IAAK,CAAE,EACP,QAAS,CACP,QAAS,OACV,EACD,MAAO,CAAE,EACT,IAAK,CACH,WAAY,MACZ,WAAY,UACZ,MAAO,sBACP,UACE,kGACH,EACD,KAAM,CACJ,MAAO,uBACP,WAAY,KACb,EACD,eAAgB,CACd,QAAS,KACV,EACD,cAAe,CACb,QAAS,KACV,EACD,SAAU,CACR,MAAO,SACR,EACD,UAAW,CACT,MAAO,SACR,EACD,UAAW,CACT,MAAO,SACR,EACD,UAAW,CACT,MAAO,SACR,EACD,UAAW,CACT,MAAO,SACR,EACD,kBAAmB,CACjB,MAAO,SACR,EACD,gBAAiB,CACf,MAAO,SACR,EACD,IAAK,CACH,MAAO,2BACP,gBAAiB,yBACjB,UAAW,OACX,WAAY,KACb,EACD,WAAY,CACV,gBAAiB,cACjB,YAAa,IACb,aAAc,I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r8C,EAAI,OAAO,CACxB,KAAM,YACN,WAAY,CACV,SAAA26C,EACF,CACF,CAAC,y4sBCLc2B,GAAAt8C,EAAI,OAAO,CACxB,KAAM,aACN,WAAY,CACV,SAAA26C,EACF,CACF,CAAC,ynRCLc4B,GAAAv8C,EAAI,OAAO,CACxB,KAAM,SACN,WAAY,CACV,SAAA26C,EACF,CACF,CAAC;;;;;;;8ICLc6B,GAAAx8C,EAAI,OAAO,CACxB,KAAM,SACN,WAAY,CACV,SAAA26C,EACF,EACA,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,OACX,CACF,CACF,CAAC;;;;;;;;;;;;;;;0GCXc8B,GAAAz8C,EAAI,OAAO,CACxB,KAAM,UACN,WAAY,CACV,SAAA26C,EACF,EACA,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,MACX,CACF,CACF,CAAC,+uCCXc+B,GAAA18C,EAAI,OAAO,CACxB,KAAM,MACN,WAAY,CACV,SAAA26C,EACF,EACA,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,MACX,EACA,gBAAiB,CACf,KAAM,OACN,QAAS,OACX,CACF,CACF,CAAC,2nBCfcgC,GAAA38C,EAAI,OAAO,CACxB,KAAM,MACN,WAAY,CACV,SAAA26C,EACF,EACA,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,MACX,EACA,gBAAiB,CACf,KAAM,OACN,QAAS,OACX,CACF,CACF,CAAC,8hBCfciC,GAAA58C,EAAI,OAAO,CACxB,KAAM,SACN,WAAY,CACV,SAAA26C,EACF,EACA,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,OACX,CACF,CACF,CAAC,uxGCoBKkC,GAAW,CACf,IAAAC,GACA,WAAAC,GACA,KAAAC,GACA,QAAAC,GACA,aAAAC,GACA,iBAAkBC,GAClB,UAAAC,GACA,OAAAC,GACA,QAAAC,GACA,YAAAC,GACA,UAAAJ,GACA,mBAAAK,GACA,YAAAC,GACA,OAAAC,GACA,WAAAC,GACA,OAAAC,GACA,UAAAC,GACA,OAAAC,GACA,OAAAC,GACA,WAAAC,GACA,YAAAC,GACA,OAAAC,GACA,MAAAC,GACA,YAAAC,GACA,gBAAAC,GACA,WAAAC,GACA,UAAAC,GACA,OAAAC,GACA,aAAAC,GACA,UAAAC,GACA,WAAAC,GACA,QAASX,GACT,OAAAY,GACA,QAAAC,GACA,IAAAzxB,GACA,QAAA0xB,EACF,EAEMC,GAAoBC,GACjBA,EAAS,QAAQ,kBAAmB,OAAO,EAAE,YAAY,EAGrDC,GAAY,OAAO,YAC9B,OAAO,QAAQpC,EAAQ,EAAE,IAAI,CAAC,CAAC76C,EAAKxB,CAAK,IAAM,CAACu+C,GAAiB/8C,CAAG,EAAGxB,CAAK,CAAC,CAC/E,EC5Ee0+C,GAAAl/C,EAAI,OAAO,CACxB,KAAM,WACN,WAAY,CACV,GAAGi/C,EACL,EACA,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,EACA,SAAU,CACR,kBAAwB,CACf,OAAAA,GAAU,KAAK,IAAI,CAC5B,CACF,CACF,CAAC,6/RClBcE,GAAAn/C,EAAI,OAAO,CACxB,KAAM,YACN,MAAO,CACL,MAAO,CACL,KAAM,CAAC,OAAQ,OAAQ,QAAS,OAAQ,KAAK,EAC7C,QAAS,EACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,OACN,QAAS,MACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,CACF,EACA,MAAO,CACE,MAAA,CACL,aAAc,KAAK,KAAA,CAEvB,EACA,MAAO,CACL,MAAM2U,EAAU,CACd,KAAK,aAAeA,CACtB,EACA,aAAc,CACZ,UAAW,GACX,KAAM,GACN,QAAQA,EAAK,CACN,KAAA,MAAM,QAASA,CAAG,CACzB,CACF,CACF,CACF,CAAC,ECtCcyqC,GAAAp/C,EAAI,OAAO,CACxB,KAAM,aACN,MAAO,CACE,MAAA,CACL,OAAQ,GACR,SAAU,UAAU,KAAK,IAAK,CAAA,GAAG,KAAK,OAAO,EAC1C,SAAS,EAAE,EACX,OAAO,EAAG,CAAC,CAAC,EAAA,CAEnB,EACA,SAAU,CAER,KAAK,MAAM,IAAI,gBAAkBq/C,GAAqB,CAChDA,IAAa,KAAK,UAAY,KAAK,SACrC,KAAK,OAAS,GAChB,CACD,CACH,EAEA,eAAgB,CAET,KAAA,MAAM,KAAK,eAAe,CACjC,EACA,QAAS,CACP,WAAW9X,EAAc,CACvBA,GAAA,MAAAA,EAAO,kBAGF,KAAK,QACR,KAAK,MAAM,MAAM,gBAAiB,KAAK,QAAQ,EAG5C,KAAA,OAAS,CAAC,KAAK,MACtB,CACF,CACF,CAAC,EC5Bc+X,GAAAt/C,EAAI,OAAO,CACxB,KAAM,kBACN,OAAQ,CAACm/C,GAAWC,EAAU,EAC9B,MAAO,CACL,QAAS,CACP,KAAM,MACN,SAAU,EACZ,EACA,gBAAiB,CACf,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,gBAAyE,CACvE,OAAI,KAAK,SACA,KAAK,QAAQ,OAAQG,GAAO,OAE/B,GAAA,MAAM,QAAQ,KAAK,YAAY,KAC9BngB,EAAA,KAAK,eAAL,MAAAA,EAA+C,SAASmgB,EAAG,QAErD,OAAAA,CACT,CACD,EAGI,KAAK,iBAAiB,KAAK,YAAY,CAChD,EACA,YAA4B,CAExB,OAAA,KAAK,UACL,MAAM,QAAQ,KAAK,cAAc,GACjC,KAAK,eAAe,OAAS,EAEtB,KAAK,eAAe,IAAKC,GAAWA,EAAO,KAAK,EAAE,KAAK,IAAI,EAGhE,CAAC,KAAK,UAAY,KAAK,eACjB,KAAK,eAAyC,MAGjD,IACT,EACA,eAAyB,CACnB,OAAC,KAAK,SAKR,MAAM,QAAQ,KAAK,YAAY,GAC9B,KAAK,aAAyC,SAC7C,KAAK,QAAQ,OAAQv6C,GAAS,CAACA,EAAK,QAAQ,EAAE,QAChD,KAAK,SAPE,EASX,EACA,sBAAgC,CAC9B,OAAI,KAAK,SAEL,MAAM,QAAQ,KAAK,YAAY,GAC9B,KAAK,aAAyC,OAAS,EAGnD,EAAQ,KAAK,YAExB,EACA,kBAA4C,CACnC,MAAA,CACL,qCAAsC,KAAK,SAC3C,mDAAoD,KAAK,KACzD,gDAAiD,CAAC,KAAK,KACvD,0BAA2B,CAAC,KAAK,UAAY,KAAK,KAClD,0BAA2B,CAAC,KAAK,UAAY,CAAC,KAAK,IAAA,CAEvD,EACA,qBAA4D,CACnD,MAAA,CACL,oBACA,CACE,mBAAoB,KAAK,KACzB,mBAAoB,CAAC,KAAK,IAC5B,CAAA,CAEJ,EACA,iBAA2B,CACzB,OAAO,KAAK,eAAiB,MAAQ,KAAK,eAAiB,MAC7D,CACF,EACA,MAAO,CACL,gBAAiB,CACf,UAAW,GACX,QAAQ0P,EAAW,CACb,CAACA,GAAO,KAAK,kBAIf,KAAK,aACH,KAAK,SAAW,CAAC,KAAK,QAAQ,CAAC,EAAE,KAAK,EAAI,KAAK,QAAQ,CAAC,EAAE,MAGzD,KAAA,MAAM,QAAS,KAAK,YAAY,EAChC,KAAA,MAAM,mBAAoB,KAAK,cAAc,EACpD,CACF,EACA,SAASA,EAAc,CACjBA,EAEF,KAAK,aAAe,CAAC,KAAK,QAAQ,CAAC,EAAE,KAAK,EAG1C,KAAK,aAAe,KAAK,QAAQ,CAAC,EAAE,MAEjC,KAAA,MAAM,QAAS,KAAK,YAAY,EAChC,KAAA,MAAM,mBAAoB,KAAK,cAAc,CACpD,CACF,EACA,QAAS,CACP,WAAWnU,EAAqB,OAC9B,OAAI,KAAK,SAEL,MAAM,QAAQ,KAAK,YAAY,GAC9B,KAAK,aAAyC,SAASA,CAAK,EAI7D,KAAK,eAAiB,MAAQ,KAAK,gBAC9BA,MAAU4+B,EAAA,KAAK,QAAQ,CAAC,IAAd,YAAAA,EAAiB,OAG7B,KAAK,eAAiB5+B,CAC/B,EACA,YAAYA,EAAkB,CACtB,MAAAg/C,EAAS,KAAK,iBAAiBh/C,CAAK,EACtC,GAAA,EAAAg/C,GAAA,MAAAA,EAAQ,UAAY,KAAK,UAI7B,IAAI,KAAK,SAAU,CACjB,MAAMC,EAAc,KAAK,aAA2B,QAAQj/C,CAAK,EAE7Di/C,IAAe,GACf,KAAK,aAA2B,KAAKj/C,CAAK,EAE1C,KAAK,aAA2B,OAAOi/C,EAAY,CAAC,EAGnD,KAAA,MAAM,QAAS,KAAK,YAAY,EAChC,KAAA,MAAM,mBAAoB,KAAK,cAAc,EAElD,MACF,CAEK,KAAA,MAAM,QAASj/C,CAAK,EACpB,KAAA,MAAM,mBAAoBg/C,CAAM,EACrC,KAAK,WAAW,EAClB,EACA,WAAkB,CAChB,GAAI,CAAC,KAAK,UAAY,KAAK,SACzB,OAEF,MAAME,EAAY,KAAK,QACpB,OAAQz6C,GAAS,CAACA,EAAK,QAAQ,EAC/B,IAAKA,GAASA,EAAK,KAAK,EACtB,KAAA,MAAM,QAASy6C,CAAS,EACxB,KAAA,MACH,mBACA,KAAK,QAAQ,OAAQz6C,GAAS,CAACA,EAAK,QAAQ,CAAA,CAEhD,EACA,aAAoB,CACd,CAAC,KAAK,UAAY,KAAK,WAGtB,KAAA,MAAM,QAAS,CAAA,CAAE,EACjB,KAAA,MAAM,mBAAoB,CAAA,CAAE,EACnC,EACA,iBAAwB,CAClB,CAAC,KAAK,UAAY,KAAK,WAKzB,MAAM,QAAQ,KAAK,YAAY,GAC9B,KAAK,aAAyC,SAC7C,KAAK,QAAQ,OAEf,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEnB,EACA,iBAAiBzE,EAA6C,OACrD,OAAA4+B,EAAA,KAAK,QAAQ,KAAMmgB,GAAOA,EAAG,QAAU/+C,CAAK,IAA5C,KAAA4+B,EAAiD,IAC1D,EACA,iBAAiBn6B,EAA6B,CAKrC,MAAA,CAJkB,KAAK,WAAWA,EAAK,KAAK,EAC/C,KAAK,oBACL,KAAK,iBAIPA,EAAK,UAAY,KAAK,SAClB,oCACA,gCAAA,CAER,CACF,CACF,CAAC,EClNc06C,GAAA3/C,EAAI,OAAO,CACxB,KAAM,gBACN,OAAQ,CAACs/C,EAAe,EACxB,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,OACX,EACA,KAAM,CACJ,KAAM,OACN,QAASjgD,EAAK,EAChB,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,aAA2B,CAClB,MAAA,CACL,UAAW,CACT,oBAAqB,KAAK,OAASA,EAAK,GACxC,oBAAqB,KAAK,OAASA,EAAK,GACxC,YAAa,KAAK,OAASA,EAAK,EAClC,EACA,OAAQ,CACN,oCAAqC,KAAK,OAASA,EAAK,GACxD,iBAAkB,KAAK,OAASA,EAAK,GACrC,iBAAkB,KAAK,OAASA,EAAK,GACrC,oCAAqC,KAAK,QAC5C,EACA,KAAM,CACJ,YAAa,KAAK,OAASA,EAAK,GAChC,YAAa,KAAK,OAASA,EAAK,GAChC,cAAe,KAAK,OAASA,EAAK,EACpC,CAAA,CAEJ,EACA,gBAA8B,CACrB,MAAA,CACL,GAAG,KAAK,YAAY,UACpB,mJACE,GACF,aAAc,KAAK,SACnB,oCAAqC,KAAK,QAAA,CAE9C,EACA,aAA2B,CAClB,MAAA,CACL,GAAG,KAAK,YAAY,KACpB,gBAAiB,EAAA,CAErB,CACF,EACA,QAAS,CACP,iBAAiB4F,EAA6B,CAC5C,MAAM26C,EAAiB,CACrB,iIACE,GACF,eAAgB,CAAC,KAAK,WAAW36C,EAAK,KAAK,EAC3C,iBAAkB,KAAK,QAAU,SAAW,KAAK,WAAWA,EAAK,KAAK,EACtE,gBACE,CAAC,CAAC,UAAW,OAAO,EAAE,SAAS,KAAK,KAAK,GACzC,KAAK,WAAWA,EAAK,KAAK,EAC5B,+CACE,KAAK,QAAU,WAAa,KAAK,WAAWA,EAAK,KAAK,EACxD,oCAAqCA,EAAK,QAAA,EAGrC,MAAA,CACL,GAAG,KAAK,YAAY,OACpB,GAAG26C,CAAA,CAEP,CACF,CACF,CAAC,gWCzFcC,GAAA7/C,EAAI,OAAO,CACxB,KAAM,eACN,MAAO,CACL,MAAO,CACL,KAAM,MACN,QAAS,IAAM,CAAC,EAAG,GAAG,CACxB,EACA,IAAK,CACH,KAAM,OACN,QAAS,CACX,EACA,IAAK,CACH,KAAM,OACN,QAAS,GACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,OACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,QACN,QAAS,EACX,EACA,QAAS,CACP,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,OAAQ,KACR,WAAY,CAAC,EACb,cAAe,IAAA,CAEnB,EACA,SAAU,CACR,MAAO,CACL,KAAM,CACJ,OAAO,KAAK,KACd,EACA,IAAI6gB,EAAoB,CACjB,KAAA,MAAM,QAASA,CAAQ,CAC9B,CACF,EACA,eAAwB,CACf,OAAA,KAAK,IAAM,KAAK,GACzB,EACA,aAAuB,CACd,OAAA,KAAK,SAAW,CAAC,KAAK,QAC/B,CACF,EACA,SAAU,CACR,KAAK,MAAQ,KAAK,KACpB,EACA,QAAS,CACP,SAASrgB,EAAuB,CAC9B,OAAO,KAAK,OAAS,KAAK,cAAcA,CAAK,EAAIA,EAAM,UACzD,EACA,YAAYA,EAAuB,CACjC,OAASA,EAAQ,KAAK,KAAO,KAAK,cAAiB,GACrD,EACA,mBAAmBs/C,EAAuB,GAA+B,CACnE,IAAAx9C,EACAC,EACAu9C,GACKx9C,EAAA,KAAK,MAAM,CAAC,EACnBC,EAAK,KAAK,MAEVD,EAAO,KAAK,IACPC,EAAA,KAAK,MAAM,CAAC,GAGb,MAAAw9C,EAAc,KAAK,SAAW,UAAY,UAC1CC,EAAY,KAAK,YAAY19C,CAAI,EACjC29C,EAAa,KAAK,YAAY19C,CAAE,EAAIy9C,EAEnC,MAAA,CACL,KAAM,QAAQA,CAAS,WACvB,MAAO,QAAQC,CAAU,WACzB,WAAY,GAAGF,CAAW,EAAA,CAE9B,EACA,cAAcG,EAAyC,CAC/C,MAAAC,EAAa,KAAK,SAAW,UAAY,UACzCH,EAAY,KAAK,YAAYE,EAAM,CAAC,CAAC,EACrCD,EAAa,KAAK,YAAYC,EAAM,CAAC,CAAC,EAAIF,EAEzC,MAAA,CACL,KAAM,QAAQA,CAAS,WACvB,MAAO,QAAQC,CAAU,WACzB,WAAY,GAAGE,CAAU,EAAA,CAE7B,EACA,YAAY5Y,EAA2B,OACrC,IAAInI,EAAA,KAAK,gBAAL,MAAAA,EAAoB,kBAAkBmI,EAAM,WAAY,CAI1D,GAHK,KAAA,OAAS,KAAK,MAAM,OACpB,KAAA,WAAa,KAAK,OAAO,sBAAsB,EAEhD,CAAC,KAAK,WAAY,OAGhB,MAAAM,GADWN,EAAM,QAAU,KAAK,WAAW,MACtB,KAAK,WAAW,MACrC/mC,EAAQ,KAAK,MAAMqnC,EAAU,KAAK,cAAgB,KAAK,GAAG,EAC1DuY,EAAe,KAAK,YAAY5/C,CAAK,EAEvC,GAAA,KAAK,cAAc,KAAO,kBAAmB,CAC/C,GAAI4/C,EAAe,KAAK,MAAM,CAAC,EAAG,CAC3B,KAAA,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAG,KAAK,MAAM,CAAC,CAAC,EAE1C,MACF,CACI,GAAAA,GAAgB,KAAK,IAAK,CAC5B,KAAK,MAAQ,CAAC,KAAK,IAAK,KAAK,MAAM,CAAC,CAAC,EAErC,MACF,CACA,KAAK,MAAQ,CAACA,EAAc,KAAK,MAAM,CAAC,CAAC,CAC3C,CACI,GAAA,KAAK,cAAc,KAAO,kBAAmB,CAC/C,GAAIA,EAAe,KAAK,MAAM,CAAC,EAAG,CAC3B,KAAA,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAG,KAAK,MAAM,CAAC,CAAC,EAE1C,MACF,CACI,GAAAA,GAAgB,KAAK,IAAK,CAC5B,KAAK,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAG,KAAK,GAAG,EAErC,MACF,CACA,KAAK,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAGA,CAAY,CAC3C,CACF,CACF,EACA,YAAY7Y,EAAwC,UAE/CnI,EAAAmI,EAAM,SAAN,MAAAnI,EAA0B,QACzB,sDAGG,KAAA,cAAiBmI,EAAM,OAAmB,QAC7C,wBAAA,EAGEA,aAAiB,gBACd1G,EAAA,KAAA,gBAAA,MAAAA,EAAe,kBAAkB0G,EAAM,YAGlD,EACA,UAAUA,EAAwC,OAC5C,KAAK,gBACHA,aAAiB,gBACdnI,EAAA,KAAA,gBAAA,MAAAA,EAAe,sBAAsBmI,EAAM,YAElD,KAAK,cAAgB,KAEzB,EACA,YAAY/mC,EAAuB,CACjC,IAAI6/C,EAAI,KAAK,MAAM7/C,EAAQ,KAAK,IAAI,EAChC8/C,EAAK,KAAK,KAAOD,EACjBE,EAAK//C,EAAQ,KAAK,KAAO,EAAI,KAAK,MAAQ6/C,EAAI,GAAK,KAAK,MAAQA,EAAI,GAEpE,OAAA,KAAK,IAAI7/C,EAAQ8/C,CAAE,EAAI,KAAK,IAAI9/C,EAAQ+/C,CAAE,EAAUD,EAEjDC,CACT,EACA,cAAc7c,EAAyB,CAC/B,MAAAE,EAAO,KAAK,MAAMF,EAAU,EAAE,EACjC,WACA,SAAS,EAAG,GAAG,EACZqL,GAAUrL,EAAU,IAAI,WAAW,SAAS,EAAG,GAAG,EAEjD,MAAA,GAAGE,CAAI,IAAImL,CAAM,EAC1B,CACF,CACF,CAAC,42ECzLcyR,GAAAxgD,EAAI,OAAO,CACxB,KAAM,WACN,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,CACF,CAAC,uOCFcygD,GAAAzgD,EAAI,OAAO,CACxB,KAAM,kBACN,WAAY,CACV,KAAA0gD,GACA,KAAAC,GACA,aAAAC,GACA,SAAAC,EACF,EACA,MAAO,CACL,aAAc,CACZ,KAAM,OACN,QAAS,aACT,SAAU,EACZ,EACA,gBAAiB,CACf,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,KAAO,CAAA,GAChB,SAAU,EACZ,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,IAAK,EACL,IAAK,KACL,YAAa,CACX,OAAQ,GACR,QAAS,GACT,UAAW,GACX,SAAU,GACV,OAAQ,GACR,SAAU,GACV,OAAQ,EACV,EAGA,SAAU,KACV,MAAO,CAAC,EAAG,IAAI,CAAA,CAEnB,EACA,SAAU,CACR,YAAsB,CAElB,MAAA,CAAC,KAAK,UACN,CAAC1hD,GAAa,WAAYA,GAAa,YAAY,EAAE,SACnD,KAAK,YAAA,CAGX,CACF,EACA,MAAO,CACL,aAAc,CACZ,UAAW,GACX,SAAU,CACR,KAAK,SAAW0kC,GACdR,GAAU,KAAK,YAAsC,CAAA,EAEvD,KAAK,gBAAgB,EACrB,KAAK,MAAQ,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC,CAC7C,CACF,EACA,SAAU,CACR,KAAM,GACN,SAAU,CACR,KAAK,eAAe,CACtB,CACF,CACF,EACA,SAAU,CACR,GAAI,OAAO,KAAK,KAAK,eAAe,EAAE,OAAQ,CACxC,IAAAyd,EACF,OAAO,KAAK,iBAAoB,SAC5B,KAAK,MAAM,KAAK,eAAe,EAC/B,KAAK,gBAEX,OAAO,KAAK,KAAK,WAAW,EAAE,QAAS/c,GAAQ,OAC7C,KAAK,YAAYA,CAAG,IAAI3E,EAAA0hB,EAAa/c,CAAG,IAAhB,YAAA3E,EAAmB,QAAS,CAAA,CACrD,EACI,KAAA,SAAWyE,GAAkBid,CAAY,EAE9C,KAAK,MAAQ,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC,CAC7C,CACF,EACA,QAAS,CACP,iBAAkB,CAChB,OAAO,KAAK,KAAK,WAAW,EAAE,QAAS/c,GAAQ,CAC7C,KAAK,YAAYA,CAAG,EAClB,KAAK,eAAiB5kC,GAAa,aAC/B,CAAC,CAAC,WAAY,QAAQ,EAAE,SAAS4kC,CAAG,EACpC,EAAA,CACP,CACH,EACA,gBAAiB,CACf,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,QAAQ,EAAE,IAAI,CAAC,CAACA,EAAKgd,CAAK,IAAM,CAClD,GAAI,EAACA,GAAA,MAAAA,EAAO,SAAU,CAAC,KAAK,YAAYhd,CAAG,EAClC,MAAA,CAACA,EAAK,CAAA,CAAE,EACV,CACL,MAAMpiB,EAAQgiB,GAAyBod,EAAM,CAAC,CAAC,EACzC7tB,EAAMyQ,GAAyBod,EAAM,CAAC,CAAC,EAEtC,MAAA,CAAChd,EAAK,CAAC,GAAGpiB,CAAK,IAAIuR,CAAG,EAAE,CAAC,CAClC,CAAA,CACD,CAAA,CAEL,EACA,gBAAiB,CACf,KAAK,MAAM,QAAS,KAAK,eAAgB,CAAA,CAC3C,EACA,cAAc8tB,EAAoB,CAC3B,KAAA,SAAW,OAAO,QAAQ,KAAK,QAAQ,EAAE,OAAO,CAACrgB,EAAK,CAACoD,CAAG,KACtD,CACL,GAAGpD,EACH,CAACoD,CAAG,EAAGid,CAAA,GAER,CAAE,CAAA,CACP,CACF,CACF,CAAC,g2DCzHcC,GAAAjhD,EAAI,OAAO,CACxB,OAAQ,CAAC05C,GAAgBF,EAAQ,EACjC,MAAO,CACE,MAAA,CACL,oBAAqB,CAAC,EACtB,2BAA4B,EAAA,CAEhC,EACA,eAAgB,CACd,KAAK,2BAA2B,CAClC,EACA,QAAS,CACP,6BACE/uB,EAAW,IAAM,CACjB,EAAAsd,EAAW,EACXmZ,EAAsB,GACtB,CACK,KAAK,6BAGV,KAAK,eAAe,EACf,KAAA,2BAA2Bz2B,EAAUsd,EAAUmZ,CAAS,EAC/D,EAEA,2BACEz2B,EAAW,IAAM,CACjB,EAAAsd,EAAW,EACXmZ,EAAsB,GACtB,CACIz2B,GAAYsd,GACd,KAAK,YAAY,IAAM,CACZtd,IACLy2B,EAAU,OAAS,GAChB,KAAA,oCAAoCz2B,EAAUy2B,CAAS,CAC9D,EACCnZ,EAAW,GAAI,CAEtB,EACA,oCACEtd,EAAW,IAAM,CACjB,EAAAy2B,EAAsB,CAAA,EACtBv0C,EAAQ,EACR,CACM,MAAAw0C,EAAkBD,EAAUv0C,CAAK,EACnCA,EAAQu0C,EAAU,OACpB,KAAK,YAAY,IAAM,CACZz2B,IACJ,KAAA,oCACHA,EACAy2B,EACAv0C,EAAQ,CAAA,CACV,EACCw0C,EAAkB,GAAI,EAChB,KAAK,4BACd,KAAK,2BAA2B,CAEpC,EACA,4BAA4B,CAC1B,SAAA12B,EAAW,IAAM,CAAC,EAClB,SAAAsd,EAAW,EACX,UAAAmZ,EAAY,CAAC,CAAA,EACkB,CAC/B,KAAK,2BAA6B,GAC7B,KAAA,6BAA6Bz2B,EAAUsd,EAAUmZ,CAAS,EAC/D,MAAME,EAAc,IAClB,KAAK,6BAA6B32B,EAAUsd,EAAUmZ,CAAS,EAC5D,KAAA,kBAAkB,YAAaE,CAAW,EAC1C,KAAA,oBAAoB,KAAKA,CAAW,CAC3C,EACA,4BAA6B,CACtB,KAAK,6BAGV,KAAK,2BAA6B,GAC7B,KAAA,oBAAoB,QAAS3H,GAAO,CAClC,KAAA,qBAAqB,YAAaA,CAAE,CAAA,CAC1C,EACD,KAAK,eAAe,EACtB,CACF,CACF,CAAC,kMC5Fc4H,GAAArhD,EAAI,OAAO,CACxB,KAAM,WACN,WAAY,CACV,aAAcwoC,EAChB,EACA,OAAQ,CAAC4W,EAAU,EACnB,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,eACX,EACA,UAAW,CACT,KAAM,OACN,QAAS,QACX,EACA,aAAc,CACZ,KAAM,CAAC,OAAQ,OAAQ,KAAK,EAG5B,QAAS,KAAO,CAAA,EAClB,CACF,EACA,SAAU,CACR,mBAA6C,CACpC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,KACpB,WAAY,KAAK,YAAc,QAC/B,SAAU,KAAK,YAAc,MAAA,CAEjC,CACF,EACA,QAAS,CACP,cAAe,CACb,KAAK,OAAS,EAChB,CACF,CACF,CAAC,qtCC1CckC,GAAAthD,EAAI,OAAO,CACxB,KAAM,YACN,WAAY,CACV,MAAA04C,EACF,EACA,MAAO,CACL,QAAS,CACP,KAAM,QACN,QAAS,EACX,CACF,CACF,CAAC,mjBCNc6I,GAAAvhD,EAAI,OAAO,CACxB,KAAM,UACN,WAAY,CACV,UAAAwhD,GACA,MAAA9I,GACA,SAAA+I,EACF,EACA,WAAY,CACV,eAAgBtZ,EAClB,EACA,OAAQ,CAACmX,EAAe,EACxB,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,QACN,QAAS,EACX,EACA,qBAAsB,CACpB,KAAM,OACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,OACN,QAAS,OACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,kBACX,EACA,aAAc,CACZ,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,kBAAmB,CACjB,KAAM,OACN,QAAS,mBACX,EACA,uBAAwB,CACtB,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,YAAa,GACb,UAAW,CAAC,CAAA,CAEhB,EACA,SAAU,CACR,aAAsB,CACpB,OACG,KAAK,UACJ,MAAM,QAAQ,KAAK,KAAK,GACvB,KAAK,MAAkC,SAAW,GACpD,CAAC,KAAK,WAAa,KAAK,QAAU,MAAQ,KAAK,QAAU,QAEnD,KAAK,MAGV,KAAK,UAAY,KAAK,qBAAqB,OAAS,EAC/C,KAAK,qBAGP,KAAK,YAAc,KAAK,KACjC,EACA,iBAA2C,CACrC,GAAA,CAAC,KAAK,YACR,OAAO,KAAK,QAGd,MAAMoC,EAAQ,KAAK,YAAY,cAAc,KAAK,EAElD,OAAQ,KAAK,QAAoC,OAAQlC,GACvDA,EAAO,MAAM,YAAY,EAAE,SAASkC,CAAK,CAAA,CAE7C,EACA,kBAA4C,CACnC,MAAA,CACL,wDAAyD,KAAK,KAC9D,qDAAsD,CAAC,KAAK,IAAA,CAEhE,EACA,uBAAiC,CAE5B,OAAA,KAAK,YAAY,OAAS,GAAK,KAAK,uBACrC,KAAK,YACL,CAAC,KAAK,QAEV,CACF,EACA,QAAS,CACP,mBAAmBvtC,EAAUsW,EAAoC,CAC3D,KAAK,WAITA,EAAStW,CAAC,EACV,KAAK,UAAU,IAAM,CACb,MAAAwtC,EAAc,KAAK,MAAM,YAC3BA,GACFA,EAAY,MAAM,CACpB,CACD,EACG,KAAK,yBACP,KAAK,YAAc,KAAK,iBAAiB,KAAK,KAAK,EAAE,OAAS,IAElE,EACA,iBAAkB,CACV,MAAAC,EAAU,KAAK,MAAM,eAC3B,KAAK,UAAY,CACf,SAAU,GAAGA,GAAA,YAAAA,EAAS,WAAW,KACjC,SAAU,OAAA,CAEd,EACA,aAAoB,CAClB,KAAK,YAAc,GACnB,KAAK,MAAM,QAAS,KAAK,SAAW,CAAA,EAAK,IAAI,EAEvC,MAAAD,EAAc,KAAK,MAAM,YAC3BA,GACFA,EAAY,MAAM,CAEtB,CACF,CACF,CAAC,yqICjIcE,GAAA7hD,EAAI,OAAO,CACxB,KAAM,gBACN,WAAY,CACV,MAAA04C,EACF,EACA,OAAQ,CAACgB,EAAc,EACvB,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,SAAU,CACR,KAAM,OACN,QAAS,eACX,EACA,oBAAqB,CACnB,KAAM,OACN,QAAS,qBACX,EACA,kBAAmB,CACjB,KAAM,OACN,QAAS,sBACX,EACA,gBAAiB,CACf,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,OAAQ,GACR,YAAa,EAAA,CAEjB,EACA,SAAU,CACR,cAAwC,CAC/B,MAAA,CACL,yGACE,KAAK,KACP,gIACE,CAAC,KAAK,IAAA,CAEZ,CACF,EACA,MAAO,CACL,OAAOgI,EAAe,CACfA,EAEMA,EAAM,QAAU,GACpB,KAAA,MACH,iBACA,KAAK,qBAAqB,KAAK,MAAgBA,CAAK,CAAA,EAJtD,KAAK,MAAM,OAAO,CAOtB,CACF,EACA,SAAU,CACJ,CAAC,KAAK,UAAY,KAAK,OAAO,OAAS,EACzC,KAAK,YAAc,IAEd,KAAA,kBAAkB,UAAW,KAAK,YAAY,EAC9C,KAAA,kBAAkB,QAAS,KAAK,YAAY,EAErD,EACA,QAAS,CACP,QAAQna,EAAmB,CACpB,KAAA,OAAUA,EAAM,OAA4B,KACnD,EACA,qBACEua,EACAJ,EAC2B,CAC3B,OAAOI,EAAQ,OAAO,CAACnhB,EAAKh/B,EAAKgL,IAAU,CACzC,MAAMqE,EAAU,KAAK,oBAAoBrP,EAAK+/C,EAAO,CAAA,CAAE,EACnD,OAAA1wC,EAAQ,OAAS,GACnB2vB,EAAI,KAAK,CAAE,MAAAh0B,EAAO,QAAAqE,CAAS,CAAA,EAGtB2vB,CACT,EAAG,CAAE,CAAA,CACP,EACA,oBACEh/B,EACA+/C,EACA3+C,EACqB,CACd,OAAA,OAAO,QAAQpB,CAAG,EAAE,OAAO,CAACqP,EAAc,CAAChP,EAAKxB,CAAK,IAAW,CACrE,MAAMuhD,EAAc,CAAC,GAAGh/C,EAAMf,CAAG,EAC3BggD,EAAe,KAAK,aAAaxhD,EAAOkhD,CAAK,EAC/C,CAAC,CAAE,KAAMK,EAAa,MAAAvhD,CAAO,CAAA,EAC7B,CAAA,EAEJ,IAAIyhD,EAAsB,CAAA,EACtB,KAAK,MAAQ,MAAM,QAAQzhD,CAAK,IAClCyhD,EAAezhD,EAAM,QAAQ,CAACyE,EAAM0H,IAClC,KAAK,oBAAoB1H,EAAMy8C,EAAO,CAAC,GAAGK,EAAa,GAAGp1C,CAAK,EAAE,CAAC,CAAA,GAItE,MAAMu1C,EACJ,KAAK,MAAQ,OAAO1hD,GAAU,UAAYA,IAAU,KAChD,KAAK,oBAAoBA,EAAOkhD,EAAOK,CAAW,EAClD,CAAA,EAEC,MAAA,CAAC,GAAG/wC,EAAS,GAAGgxC,EAAc,GAAGC,EAAc,GAAGC,CAAa,CACxE,EAAG,CAAE,CAAA,CACP,EACA,aAAa1hD,EAAYkhD,EAAwB,CAC/C,MACE,GAAG,KAAK,YAAYlhD,CAAK,EAAI,KAAK,mBAAmBA,CAAK,EAAIA,CAAK,GAChE,YAAY,EACZ,QAAQkhD,EAAM,YAAa,CAAA,IAAM,EAExC,EACA,YAAYxY,EAA8B,CACxC,OAAO7C,GAAO6C,EAAM,KAAK,kBAAmB,EAAI,EAAE,SACpD,EACA,mBAAmBL,EAA2B,CACrC,OAAAxC,GACJ,GAAGwC,EAAW,KAAK,QAAQ,EAC3B,OAAO,KAAK,mBAAmB,CACpC,EACA,aAAatB,EAAsB,CACjC,MAAM,EAAIA,EACJ4a,EAAU,EAAE,SAAW,EAAE,OAAS,UAClCC,EAAW,EAAE,UAAY,EAAE,OAAS,UACpCC,EAAO,CAAC,IAAK,GAAG,EAAE,SAAS,EAAE,GAAG,GAAK,EAAE,OAAS,UAChDC,EAAM,EAAE,MAAQ,UAAY,EAAE,OAAS,UAEzCD,GAAQF,GAAWC,IACrB,KAAK,YAAc,GACnB,KAAK,UAAU,IAAM,CACb,MAAAG,EAAc,KAAK,MAAM,YAC/BA,GAAeA,EAAY,OAAM,CAClC,GAECD,IACF,KAAK,YAAc,GACnB,KAAK,OAAS,GAElB,CACF,CACF,CAAC,spCClKcE,GAAAxiD,EAAI,OAAO,CACxB,KAAM,WACN,MAAO,CACL,KAAM,CAAE,KAAM,OAAQ,SAAU,EAAK,EACrC,SAAU,CACR,KAAM,OACN,QAASL,GAAS,GACpB,EACA,MAAO,CAAE,KAAM,OAA+B,QAASL,GAAU,OAAQ,EACzE,KAAM,CAAE,KAAM,QAAS,QAAS,EAAM,CACxC,EACA,KAAM,UAAY,CACT,MAAA,CACL,UAAW,EAAA,CAEf,EACA,SAAU,CACR,gBAAuC,CACrC,MAAMyL,EAAW,KAAK,SAChB1C,EAAQ,KAAK,MACbo6C,EAAsB,CAC1B,6BAA8B,CAAC,KAAK,KACpC,kCAAmC,KAAK,IAAA,EAGnC,MAAA,CACL,sKACE,GACF,eAAgB13C,IAAapL,GAAS,KACtC,gBAAiBoL,IAAapL,GAAS,MACvC,cAAeoL,IAAapL,GAAS,IACrC,iBAAkBoL,IAAapL,GAAS,OACxC,+BAAgC0I,IAAU/I,GAAU,QACpD,4BAA6B+I,IAAU/I,GAAU,MACjD,8BAA+B+I,IAAU/I,GAAU,QACnD,6BAA8B+I,IAAU/I,GAAU,QAClD,4BAA6B+I,IAAU/I,GAAU,KACjD,8BAA+B+I,IAAU/I,GAAU,MACnD,gCAAiC+I,IAAU/I,GAAU,KACrD,GAAGmjD,CAAA,CAEP,EACA,iBAAwC,CACtC,MAAM13C,EAAW,KAAK,SAChB1C,EAAQ,KAAK,MAEZ,MAAA,CACL,2CAA4C,GAC5C,gBAAiB0C,IAAapL,GAAS,KACvC,iBAAkBoL,IAAapL,GAAS,MACxC,eAAgBoL,IAAapL,GAAS,IACtC,kBAAmBoL,IAAapL,GAAS,OACzC,sBAAuB0I,IAAU/I,GAAU,QAC3C,wBAAyB+I,IAAU/I,GAAU,QAC7C,qBAAsB+I,IAAU/I,GAAU,MAC1C,uBAAwB+I,IAAU/I,GAAU,QAC5C,sBAAuB+I,IAAU/I,GAAU,QAC3C,qBAAsB+I,IAAU/I,GAAU,KAC1C,uBAAwB+I,IAAU/I,GAAU,MAC5C,sBAAuB+I,IAAU/I,GAAU,IAAA,CAE/C,CACF,EACA,QAAS,CACP,eAAgB,CACT,KAAA,UAAY,CAAC,KAAK,SACzB,CACF,CACF,CAAC,qYClEcojD,GAAA1iD,EAAI,OAAO,CACxB,KAAM,gBACN,WAAY,CAAE,SAAA2iD,GAAU,MAAAjK,EAAM,EAC9B,MAAO,CACL,YAAa,CACX,KAAM,OACN,QAAS,IACX,EACA,aAAc,CACZ,KAAM,OACN,QAAS,SACX,EACA,gBAAiB,CACf,KAAM,OACN,QAAS,KACX,EACA,cAAe,CACb,KAAM,CAAC,OAAQ,OAAQ,KAAK,EAC5B,QAAS,IACX,EACA,KAAM,CACJ,KAAM,OACN,QAAS,IACX,EACA,SAAU,CACR,KAAM,OACN,QAASr5C,EAAK,EAChB,EACA,UAAW,CACT,KAAM,OACN,QAASC,GAAU,OACrB,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,aAAuB,CACd,MAAA,CAAC,CAAC,KAAK,WAChB,EACA,yBAAmC,CACjC,OAAK,KAAK,cAGP,OAAO,KAAK,eAAkB,UAC7B,KAAK,cAAc,MAAM,OAAO,EAAE,OAAS,GAC5C,OAAO,KAAK,eAAkB,UAC7B,OAAO,KAAK,KAAK,aAAa,EAAE,KAC7B0C,GAAQA,EAAI,MAAM,OAAO,EAAE,OAAS,CAAA,EAPX,EAUlC,EACA,aAAiC,CACzB,MAAA4gD,EAAa,KAAK,KACpB,iDACA,sDAEJ,OAAO,KAAK,wBACR,KAAK,cACL,CAAC,KAAK,cAAeA,CAAU,CACrC,CACF,CACF,CAAC,yzBCjEcC,GAAA7iD,EAAI,OAAO,CACxB,KAAM,cACN,WAAY,CACV,cAAA8iD,EACF,EACA,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,CACF,CAAC,o0BCZcC,GAAA/iD,EAAI,OAAO,CACxB,KAAM,kBACN,MAAO,CACL,SAAU,CACR,KAAM,OACN,QAAS,GACX,CACF,EACA,SAAU,CACR,eAAwB,CAcf,MAbW,CAChB,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAM,iBAAA,EAGS,KAAK,QAAQ,CAChC,CACF,CACF,CAAC,+ZCkBcgjD,GAAAhjD,EAAI,OAAO,CACxB,KAAM,eACN,WAAY,CACV,YAAAijD,GACA,gBAAAC,EACF,EACA,WAAY,CACV,eAAgB/a,EAClB,EACA,OAAQ,CAACqR,GAAUE,EAAc,EACjC,MAAO,CACL,IAAK,CACH,KAAM,OACN,QAAS,EACX,EACA,IAAK,CACH,KAAM,OACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,EACA,OAAQ,CACN,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,kBAAmB,CACjB,KAAM,QACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,aAAc,CACZ,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,EACA,gBAAiB,CACf,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,EACA,IAAK,CACH,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACX,EACA,iBAAkB,CAChB,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,mBAAoB,CAClB,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,iBAAkB,CAChB,KAAM,OACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,GACX,CACF,EACA,MAAc,CACZ,MAAMyJ,EAAe,CACnB,EAAG,EACH,EAAG,CAAA,EAGE,MAAA,CACL,MAAO,KACP,MAAO,KACP,YAAa,GACb,UAAW,EACX,kBAAmB,EAInB,WAAYA,EAIZ,WAAYA,EAIZ,WAAYA,EAIZ,mBAAoBA,EAIpB,sBAAuBA,EAIvB,YAAaA,EACb,UAAW,GACX,WAAY,GACZ,YAAa,GACb,UAAW,GACX,eAAgB,GAChB,SAAU,CAAC,EACX,aAAc,CAAC,EACf,UAAW,GACX,iBAAkB,GAClB,iBAAkB,EAClB,iBAAkB,EAClB,kBAAmB,CAAC,EACpB,qBAAsB,GACtB,UAAW,GACX,SAAU,CAAC,EACX,cAAe,EACf,YAAa,EACb,aAAc,EACd,aAAc,GACd,sBAAuB,KACvB,sBAAuB,CAAC,CAAA,CAE5B,EACA,SAAU,CACR,YAAyC,CACnC,OAAC,KAAK,OAIH,CACL,OAAQ,GAAG,KAAK,MAAM,IAAA,EAJf,EAMX,EACA,cAAe,CACT,GAAA,CAAC,KAAK,YACD,MAAA,CACL,QAAS,MAAA,EAGb,IAAI/d,EAAQC,EACZ,OAAI,KAAK,WAAa,CAAC,KAAK,oBAC1BD,EACE,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC7BC,EACE,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,IAE7BD,EAAS,KAAK,sBAAsB,EACpCC,EAAS,KAAK,sBAAsB,GAG/B,CACL,UACE,KAAK,IAAID,CAAM,EAAI,IAAO,KAAK,IAAIC,CAAM,EAAI,GACzC,OACA,aAAaD,CAAM,MAAMC,CAAM,KAAA,CAEzC,EACA,aAAc,OACN,MAAAx6B,GAAQu0B,EAAA,KAAK,QAAL,YAAAA,EAAY,wBAEnB,MAAA,CACL,IAAIv0B,GAAA,YAAAA,EAAO,QAAS,GAAK,EACzB,IAAIA,GAAA,YAAAA,EAAO,SAAU,GAAK,CAAA,CAE9B,EACA,YAAa,CACX,KAAM,CACJ,OAAO,KAAK,UAAY,GAC1B,EACA,IAAI8J,EAAa,CACf,KAAK,kBAAoB,KAAK,UAC9B,KAAK,UAAYA,EAAM,IACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,CACvB,CACF,EACA,aAAc,CACR,OAAC,KAAK,kBAGN,KAAK,iBACA,GAGF,KAAK,WAAa,KAAK,QAAU,EAN/B,EAOX,EACA,yBAAkD,CAC5C,GAAA,CAAC,KAAK,MACR,MAAO,GAGT,MAAMyuC,EAAc,KAAK,MAAM,aAAe,KAAK,MAAM,cACnDnhB,EAAS,KAAK,eAAiBmhB,EAE9B,MAAA,CACL,MAAO,GAAG,KAAK,cAAc,KAC7B,OAAQ,GAAGnhB,CAAM,IAAA,CAErB,EACA,+BAAwD,CAC/C,MAAA,CACL,GAAG,KAAK,sBACR,GAAG,KAAK,yBAAA,CAEZ,EACA,2BAAoD,CAC3C,MAAA,CACL,UAAW,SAAS,KAAK,cAAc,UAAA,CAE3C,EACA,cAAe,SACN,MAAA,CACL,MAAO,KAAK,MACZ,UAAW,KAAK,UAChB,YAAa,KAAK,YAClB,kBAAmB,KAAK,kBACxB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,mBAAoB,KAAK,mBACzB,sBAAuB,KAAK,sBAC5B,UAAW,KAAK,UAChB,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,eAAgB,KAAK,eACrB,SAAU,KAAK,SACf,aAAc,KAAK,aACnB,UAAW,KAAK,UAChB,iBAAkB,KAAK,iBACvB,iBAAkB,KAAK,iBACvB,iBAAkB,KAAK,iBACvB,kBAAmB,KAAK,kBACxB,aAAa7C,EAAA,KAAK,QAAL,YAAAA,EAAY,YACzB,cAAcyB,EAAA,KAAK,QAAL,YAAAA,EAAY,YAAA,CAE9B,CACF,EACA,MAAO,CACL,kBAAmB,CACZ,KAAA,YAAY,KAAK,SAAU,GAAG,CACrC,EACA,cAAe,CACb,UAAW,GACX,QAAQrT,EAAQ,CACV,GAAA,OAAOA,GAAW,SAGtB,QAAS1H,KAAQ0H,EACV,KAAA1H,CAAI,EAAI0H,EAAO1H,CAAI,CAE5B,CACF,EACA,MAAO,CACL,UAAW,GACX,KAAM,GACN,SAAU,QACJsZ,EAAA,KAAK,QAAL,MAAAA,EAAY,aACd,KAAK,WAAW,CAEpB,CACF,EACA,cAAe,CACR,KAAA,UAAU,KAAK,2BAA2B,CACjD,EACA,YAAa,CACN,KAAA,UAAU,KAAK,2BAA2B,CACjD,CACF,EACA,SAAU,CACH,KAAA,kBAAkB,oBAAqB,KAAK,uBAAuB,EACnE,KAAA,MAAM,IAAI,yBAA0B,IAAM,CACxC,KAAA,YAAY,KAAK,eAAgB,GAAG,CAAA,CAC1C,CACH,EACA,QAAS,CACP,UAAW,CACT,KAAK,mBAAmB,EACnB,KAAA,YAAY,KAAK,eAAgB,GAAG,CAC3C,EACA,yBAA0B,CACnB,KAAA,YAAY,KAAK,eAAgB,GAAI,CAC5C,EACA,gBAAiB,SACV,KAAA,MAAQ,KAAK,MAAM,MACnB,KAAA,MAAQ,KAAK,MAAM,MAClB,MAAAikB,GAAQjkB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACpBv0B,GAAQg2B,EAAA,KAAK,QAAL,YAAAA,EAAY,wBAE1B,GADK,KAAA,YAAY,KAAK,WAAY,EAAE,EAElC,CAACwiB,GACA,KAAK,UACJ,CAAC,KAAK,WACL,CAACx4C,IAASA,GAAA,YAAAA,EAAO,QAAS,IAAKA,GAAA,YAAAA,EAAO,SAAU,GACnD,CACK,KAAA,YAAY,KAAK,eAAgB,EAAE,EAExC,MACF,CACK,KAAA,iBAAmBw4C,EAAM,MAAQA,EAAM,OACvC,KAAA,iBAAmBx4C,EAAM,MAAQA,EAAM,MAC9C,EACA,kBAAmB,CACjB,KAAK,YAAc,CACjB,EACE,KAAK,WAAW,GAAK,KAAK,UAAY,KAAK,mBAC3C,KAAK,YAAY,EACnB,EACE,KAAK,WAAW,GAAK,KAAK,UAAY,KAAK,mBAC3C,KAAK,YAAY,CAAA,EAGrB,KAAK,SAAW,CACd,GAAG,KAAK,SACR,UAAW,aAAa,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,KAAK,YACrD,CAAC,aAAa,KAAK,SAAS,GAAA,EAEjC,KAAK,WAAW,CAClB,EACA,6BAA8B,CAC5B,GACE,CAAC,KAAK,eACN,CAAC,KAAK,OACN,CAAC,KAAK,OACN,CAAC,KAAK,MAAM,gBACZ,KAAK,YAAc,EACnB,CACA,KAAK,sBAAwB,GAE7B,MACF,CAEM,MAAAA,EAAQ,KAAK,MAAM,sBAAsB,EACzCw4C,EAAQ,KAAK,MAAM,sBAAsB,EAEzCC,GAASD,EAAM,KAAOx4C,EAAM,MAAQA,EAAM,MAAS,IACnD04C,GAAQF,EAAM,IAAMx4C,EAAM,KAAOA,EAAM,OAAU,IACjDm3B,EAASqhB,EAAM,MAAQx4C,EAAM,MAAS,IACtCo3B,EAAUohB,EAAM,OAASx4C,EAAM,OAAU,IAE/C,KAAK,sBAAwB,CAC3B,KAAM,GAAGy4C,CAAI,IACb,IAAK,GAAGC,CAAG,IACX,MAAO,GAAGvhB,CAAK,IACf,OAAQ,GAAGC,CAAM,GAAA,CAErB,EACA,cAAc9tB,EAAG,SAeX,GAdJ,KAAK,YAAc,GACnB,KAAK,kBAAoB,CACvB,GAAG,KAAK,kBACR,aAAc,uBAAA,EAEhB,KAAK,YAAY,IAAM,CACrB,KAAK,kBAAoB,CACvB,eAAgB,SAChB,aAAc,mBAAA,CAChB,CACD,EACG,KAAK,iBACF,KAAA,sBAAwB,KAAK,kBAEhC,CAAC,KAAK,UACR,OAEF,KAAK,mBAAmB,EACxB,KAAK,WAAa,KAAK,YACvB,KAAK,WAAa,KAAK,YACjB,MAAAtJ,GAAQu0B,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACpBikB,GAAQxiB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACtB,CAACh2B,GAAS,CAACw4C,IAGX,KAAK,UAAY,CAAC,KAAK,SACzB,KAAK,eAAe,EAEpB,KAAK,UAAU,IAAM,CACnB,KAAK,eAAe,EACpB,KAAK,UAAY,EAAA,CAClB,EAEH,KAAK,iBAAiB,EACjB,KAAA,MAAM,OAAQlvC,CAAC,EACtB,EACA,QAAQA,EAAG,CACJ,KAAA,MAAM,QAASA,CAAC,CACvB,EACA,cAAe,CACb,KAAK,UAAY,GACjB,KAAK,UAAY,EACnB,EACA,cAAe,CACR,KAAK,iBACR,KAAK,UAAY,IAEnB,KAAK,UAAY,GACjB,MAAMqvC,EAAiB,CACrB,MAAO,EACP,eAAgB,IAAM,CAAC,CAAA,EAEzB,KAAK,UAAUA,CAAuC,CACxD,EACA,YAAYjc,EAAmB,OAC7B,GAAI,OAAK,UAAY,CAAC,KAAK,aAAe,KAAK,YAG3C,KAAK,MAAO,CACR,MAAA8b,EAAQ,KAAK,MAAM,sBAAsB,EACzCI,GAAcrkB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBAChC,KAAK,WAAa,CAChB,GAAGmI,GAAA,YAAAA,EAAO,SAAU8b,EAAM,KAC1B,GAAG9b,GAAA,YAAAA,EAAO,SAAU8b,EAAM,GAAA,EAE5B,KAAK,WAAa,CAChB,IAAI9b,GAAA,YAAAA,EAAO,UAAUkc,GAAA,YAAAA,EAAa,OAAQ,KAAK,UAC/C,IAAIlc,GAAA,YAAAA,EAAO,UAAUkc,GAAA,YAAAA,EAAa,MAAO,KAAK,SAAA,EAE5C,KAAK,cACP,KAAK,YAAc,IAEhB,KAAA,UAAU,KAAK,UAAU,CAChC,CACF,EACA,YAAYlc,EAAmB,CAC7B,GACE,GAAC,KAAK,KACN,KAAK,UACL,CAAC,KAAK,cACNA,GAAA,YAAAA,EAAO,SAAU,GACjB,KAAK,gBAIP,IAAI,KAAK,mBAAoB,CAC3B,KAAK,mBAAqB,CACxB,EAAG,KAAK,WAAW,EACnB,EAAG,KAAK,WAAW,CAAA,EAErB,KAAK,UAAY,GACZ,KAAA,UAAU,KAAK,UAAU,EAE9B,MACF,CACAA,EAAM,eAAe,EACrB,KAAK,mBAAqB,KAAK,WAC/B,KAAK,UAAY,GACnB,EACA,UAAUA,EAAmB,CAC3B,GACE,GAAC,KAAK,KACN,KAAK,UACL,CAAC,KAAK,aACN,CAAC,KAAK,YACNA,GAAA,YAAAA,EAAO,SAAU,GACjB,KAAK,gBAIP,IAAI,KAAK,mBAAoB,CAC3B,KAAK,UAAY,GACZ,KAAA,UAAU,KAAK,UAAU,EAE9B,MACF,CACAA,EAAM,eAAe,EACrB,KAAK,gBAAgB,CACnB,EACE,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAC1B,EACE,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,CAAA,CAC3B,EACD,KAAK,UAAY,GACjB,KAAK,WAAa,GACb,KAAA,UAAU,KAAK,UAAU,EAChC,EACA,aAAaA,EAAmB,CAC1B,KAAK,UAAY,CAAC,KAAK,aAAe,CAAC,KAAK,YAG3C,KAAA,KAAKA,EAAM,MAAM,EAElB,KAAK,sBACPA,EAAM,eAAe,EAEzB,EACA,gBAAgB3C,EAAe,CAC7B,IAAI8e,EAAe,EAEf,KAAK,SACPA,EAAe,KAAK,UAAY9e,EACvBA,EAAQ,EACjB8e,EAAe,KAAK,UAAY,IACvB,KAAK,WAAa,OAC3BA,EAAe,KAAK,UAAY,IAE9BA,EAAe,KAAK,aACtB,KAAK,UAAY,KAAK,aACbA,EAAe,KAAK,aAC7B,KAAK,UAAY,KAAK,aAEtB,KAAK,UAAYA,CAErB,EACA,KAAK9e,EAAe,CAClB,KAAK,UAAY,GACjB,KAAK,kBAAoB,KAAK,UAC9B,KAAK,gBAAgBA,CAAK,EACrB,KAAA,qBAAuB,KAAK,oBAAsB,KAAK,UAEvD,KAAK,cACR,KAAK,WAAa,KAAK,WACvB,KAAK,YAAc,IAErB,KAAK,iBAAiB,EACtB,KAAK,UAAU,IAAM,CACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,CAAA,CACjB,CACH,EACA,WAAY,SACJ,MAAAye,GAAQjkB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACpBv0B,GAAQg2B,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACpB8iB,EAAYN,EAAM,MAAQ,KAAK,iBAC/BO,EAAWP,EAAM,OAAS,KAAK,iBACrC,GAAI,CAAE,IAAAE,EAAK,MAAAM,EAAO,OAAAnN,EAAQ,KAAA4M,GAASD,EAE/B,OAAAx4C,EAAM,MAAQw4C,EAAM,OACtBC,EAAOD,EAAM,MAAQA,EAAM,MAAQO,GAAY,EAC/CC,EAAQP,EAAOM,GACN/4C,EAAM,OAASw4C,EAAM,SAC9BE,EAAMF,EAAM,KAAOA,EAAM,OAASM,GAAa,EAC/CjN,EAAS6M,EAAMI,GAGV,CACL,IAAAJ,EACA,MAAAM,EACA,OAAAnN,EACA,KAAA4M,CAAA,CAEJ,EACA,gBAAgB,CAAE,EAAAtiD,EAAG,EAAA+gC,CAAE,EAAgC,CAAA,EAAI,OACzD,GAAI,KAAK,MAAO,CACR,MAAA0hB,GAAcrkB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBAC1B0kB,EAAS,KAAK,YAEd,CACJve,EACAD,EACAE,EACAC,CAAA,EACE,CACFge,EAAY,MAAQK,EAAO,MAC3BA,EAAO,IAAML,EAAY,IACzBA,EAAY,OAASK,EAAO,OAC5BA,EAAO,KAAOL,EAAY,IAAA,EAC1B,IAAK78C,GAAOA,EAAI,EAAIA,EAAI,CAAE,EAE5B,KAAK,sBAAwB,CAC3B,GACG5F,GAAK,KAAK,sBAAsB,GACjCykC,EACAF,EACF,GACGxD,GAAK,KAAK,sBAAsB,GACjCuD,EACAE,CAAA,CAEN,CACF,EACA,mBAAoB,SACZ,MAAA6d,GAAQjkB,EAAA,KAAK,QAAL,YAAAA,EAAY,wBACpBv0B,GAAQg2B,EAAA,KAAK,QAAL,YAAAA,EAAY,wBAE1B,KAAK,WAAa,CAChB,IAAIwiB,GAAA,YAAAA,EAAO,OAAOA,GAAA,YAAAA,EAAO,OAAQ,GAAIx4C,GAAA,YAAAA,EAAO,OAAQ,KAAK,UACzD,IAAIw4C,GAAA,YAAAA,EAAO,MAAMA,GAAA,YAAAA,EAAO,QAAS,GAAIx4C,GAAA,YAAAA,EAAO,MAAO,KAAK,SAAA,EAE1D,KAAK,eAAiB,EACxB,EACA,iBAAkB,CAChB,KAAK,eAAiB,EACxB,EACA,oBAAqB,WACnB,KAAK,aAAe,CAClB,SAAU,GACR,OAAO,cACL87B,GAAA9F,GAAAzB,EAAA,KAAK,QAAL,YAAAA,EAAY,QAAZ,YAAAyB,EAAsC,0BAAtC,YAAA8F,EACE,OAAQ,EACd,IAAA,CAEJ,EACA,YAAa,CACN,KAAA,MAAM,SAAU,KAAK,YAAY,CACxC,EACA,oBAAoBz+B,EAAiBD,EAAiB,CAC7C,MAAA,CACL,EAAGC,EAAE,SAAWD,EAAE,QAAUC,EAAE,SAAW,EACzC,EAAGA,EAAE,SAAWD,EAAE,QAAUC,EAAE,SAAW,CAAA,CAE7C,EACA,oBAAoBA,EAAiBD,EAAiB,CAC7C,OAAA,KAAK,MAAMA,EAAE,QAAUC,EAAE,QAASD,EAAE,QAAUC,EAAE,OAAO,CAChE,EACA,mBAAmBiM,EAAiB,CAC7B,KAAA,SAASA,EAAE,SAAS,EAAIA,CAC/B,EACA,kBAAkBA,EAAiB,CACjC,KAAK,QAAQ,KAAK,SAAUA,EAAE,SAAS,CACzC,EACA,uBAAwB,CACtB,MAAMuxB,EAAW,OAAO,OAAO,KAAK,QAAQ,EACxC,GAAAA,EAAS,SAAW,EACtB,OAEF,MAAMC,EAAW,KAAK,oBAAoB,GAAGD,CAAQ,EACrD,KAAK,WAAa,CAChB,EAAGC,EAAS,EAAI,KAAK,UACrB,EAAGA,EAAS,EAAI,KAAK,SAAA,CAEzB,EACA,qBAAsB,CACpB,MAAMD,EAAW,OAAO,OAAO,KAAK,QAAQ,EACxCA,EAAS,SAAW,IAIxB,KAAK,cAAgB,KAAK,oBAAoB,GAAGA,CAAQ,EAC3D,EACA,cAAcvxB,EAAiB,CAC7B,GAAI,GAAC,KAAK,UAAY,KAAK,gBAAgB,QAAU,GAOrD,IAHA,KAAK,mBAAmBA,CAAC,EAEzB,KAAK,WAAa,OAAO,OAAO,KAAK,QAAQ,EAAE,SAAW,EACtD,KAAK,WAAY,CACnB,KAAK,UAAY,GACjB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAEzB,MACF,CAEA,KAAK,YAAYA,CAAC,EAClB,KAAK,YAAYA,CAAC,EACpB,EACA,cAAcA,EAAiB,CAC7B,GAAI,GAAC,KAAK,UAAY,KAAK,gBAAgB,QAAU,GAKrD,IAFA,KAAK,mBAAmBA,CAAC,EAErB,KAAK,WAAY,CACnB,MAAM4vC,EAAwB,KAAK,cAEnC,KAAK,oBAAoB,EAEnB,MAAAnf,EAAQ,KAAK,cAAgBmf,EAE/Bnf,EAAQ,EAAI,MACd,KAAK,KAAKA,CAAK,EAGjB,MACF,CAEA,KAAK,YAAYzwB,CAAC,EACpB,EACA,YAAYA,EAAiB,CAC3B,GAAI,CAAC,KAAK,UAAY,KAAK,gBAAgB,QAAU,EACnD,OAEF,KAAK,kBAAkBA,CAAC,EACxB,KAAK,UAAUA,CAAC,EAEhB,MAAM6vC,EAAM,IAAI,KAAK,EAAE,QAAQ,EACzBC,EAAmBD,EAAM,KAAK,YAChCC,EAAmB,KAAOA,EAAmB,KAC/C,KAAK,KAAK,KAAK,UAAY,EAAI,EAAI,CAAC,EAEtC,KAAK,YAAcD,CACrB,EACA,gBAAiB,CACT,MAAAE,EAAW,KAAK,MAAM,MAE5B,OAAOA,GAAA,YAAAA,EAAU,GACnB,CACF,CACF,CAAC,wpHCxwBcC,GAAAnkD,EAAI,OAAO,CACxB,KAAM,eACN,WAAY,CACV,aAAAokD,EACF,EACA,WAAY,CACV,eAAgBjc,EAClB,EACA,OAAQ,CAACqR,GAAUE,EAAc,EACjC,MAAO,CACL,KAAM,aACN,MAAO,oBACT,EACA,MAAO,CACL,OAAQ,CACN,KAAM,MACN,SAAU,EACZ,EACA,aAAc,CACZ,KAAM,OACN,QAAS,GACX,EACA,UAAW,CACT,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,OACN,QAAS,CACX,EACA,OAAQ,CACN,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,CACX,EACA,eAAgB,CACd,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACX,EACA,QAAS,CACP,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,EACX,EACA,yBAA0B,CACxB,KAAM,QACN,QAAS,EACX,EACA,oBAAqB,CACnB,KAAM,QACN,QAAS,EACX,EACA,aAAc,CACZ,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,QACN,QAAS,EACX,EACA,0BAA2B,CACzB,KAAM,QACN,QAAS,EACX,EACA,kBAAmB,CACjB,KAAM,QACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,QACN,QAAS,EACX,EACA,wBAAyB,CACvB,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACX,EACA,iBAAkB,CAChB,KAAM,OACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,mBAAoB,CAClB,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,IACX,EACA,kBAAmB,CACjB,KAAM,OACN,QAAS,CACX,CACF,EACA,MAAO,CACE,MAAA,CACL,IAAK,KAAK,iBACV,YAAa,GACb,QAAS,GACT,YAAa,CAAC,EACd,MAAO,KACP,YAAa,GACb,2BAA6B,KAAO,CAAA,GACpC,gBAAiB,CAAC,EAClB,qBAAsB,CAAC,EACvB,WAAY,GACZ,YAAa,GACb,SAAU,CAAC,EACX,mBAAoB,EACpB,aAAc,GACd,cAAe,EACf,mBAAoB,GACpB,6BAA8B,GAC9B,YAAa,KACb,iBAAkB,GAClB,QAAS,GACT,cAAe,CACb,EAAG,EACH,EAAG,CACL,EACA,aAAc,OAAO,MAAA,CAEzB,EACA,SAAU,CACR,UAAmC,CAC1B,MAAA,CACL,GAAI,oBACJ,IAAK,QACL,YAAa,YACb,MACE,iFACF,WAAY,oBAAA,CAEhB,EACA,kBAA+D,CACtD,MAAA,CACL,MAAO,OACP,OAAQ,KAAK,MAAA,CAEjB,EACA,aAAuB,CACrB,OAAO,KAAK,aAAe,KAAK,OAAO,OAAS,CAClD,EACA,SAAkB,SAChB,MAAO,KAAGta,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,QAAS,EAAE,MACjDyB,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,YAAa,EAC7C,EACF,EACA,kBAA2B,CAClB,OAAA,KAAK,YACR,IACA,KAAK,IAAK,KAAK,WAAa,KAAK,OAAO,OAAU,GAAG,CAC3D,EACA,mBAA4B,WAC1B,OACE,KAAK,cAAc,IAClB8F,GAAA9F,GAAAzB,EAAA,KAAK,cAAL,YAAAA,EAAkB,0BAAlB,YAAAyB,EAA2C,QAA3C,KAAA8F,EAAoD,EAEzD,EACA,eAAmC,CAC1B,MAAA,CACL,MAAO,GAAG,IAAM,KAAK,iBAAiB,GAAA,CAE1C,EACA,mBAA4B,CAC1B,OAAO,KAAK,MAAM,KAAK,mBAAqB,KAAK,OAAO,OAAS,EAAE,CACrE,EACA,eAAmC,CAK1B,MAAA,CACL,MAAO,GAAG,MALc,KAAK,iBAC3B,KAAK,kBACL,KAAK,aAG+B,KAAK,OAAO,OAAS,GAAG,GAAA,CAElE,EACA,iBAAkB,CAChB,MAAM0d,EAAkB,CAAK,GAAG,KAAK,eAAgB,EACrC,OAAAA,EAAA,KAAK,CAACn8C,EAAGD,IAChBC,EAAID,EAAI,EAAI,EACpB,EAEMo8C,EAAgB,OAAO,CAAC1jB,EAAK2jB,IAAe,CAC7C,GAAA,CAAC3jB,EAAI,OACP,MAAO,CAAC,CAAC2jB,EAAYA,CAAU,CAAC,EAGlC,KAAM,CAAC3iC,EAAOuR,CAAG,EAAIyN,EAAI,MAAM,EAAE,EAAE,CAAC,GAAK,CAAC,EAAG,CAAC,EAE9C,OADsB2jB,EAAapxB,EAAM,EAEhC,CAAC,GAAGyN,EAAK,CAAC2jB,EAAYA,CAAU,CAAC,EAGnC,CAAC,GAAG3jB,EAAI,MAAM,EAAG,EAAE,EAAG,CAAChf,EAAO2iC,CAAU,CAAC,CAClD,EAAG,CAAE,CAAA,CACP,CACF,EACA,MAAO,CACL,OAAQ,CACN,SAAU,OACR,KAAK,MAAMllB,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,MAAO,GAE5C,KAAK,0BACF,KAAA,MAAM,qBAAsB,CAAC,EAEpC,KAAK,YAAc,GACnB,KAAK,gBAAkB,GACvB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,SAAY,CAC3B,KAAK,WAAW,EAChB,MAAM,KAAK,kBACX,KAAK,gBAAgB,CAAA,CACtB,CACH,EACA,UAAW,GACX,KAAM,EACR,EACA,YAAYx4B,EAAG,CACTA,GACF,KAAK,MAAM,cAAc,CAE7B,EACA,WAAY,CACV,UAAW,GACX,MAAM,SAAU,CACV,KAAK,YAAc,KAAK,aAAe,KAAK,qBAI5C,OAAO,MAAM,KAAK,UAAU,GACzB,KAAA,MAAM,qBAAsB,CAAC,EAGhC,KAAK,aAAe,IACtB,KAAK,mBAAqB,KAAK,YAE7B,KAAK,aAAe,CAAC,KAAK,SAC5B,KAAK,QAAU,IAGZ,KAAK,UACR,KAAK,YAAY,EACjB,MAAM,KAAK,kBACX,KAAK,gBAAgB,GAEzB,CACF,EACA,QAAS,CACP,UAAW,GACX,MAAM,QAAQ29C,EAAS,CACjBA,EACF,KAAK,KAAK,EAEV,KAAK,MAAM,EAEb,KAAK,wBAAwB,CAC/B,CACF,EACA,gBAAiB,CACf,QAAQC,EAAW18C,EAAG,CACf,KAAA,MAAM,0BAA2B08C,CAAS,CACjD,CACF,EACA,UAAW,CACT,UAAW,GACX,MAAM,SAAU,CACd,KAAK,QAAU,KAAK,SACtB,CACF,EACA,yBAA0B,OACxB,KAAK,KACHplB,EAAA,KAAK,YAAY,KAAK,OAAO,KAAK,UAAU,CAAC,IAA7C,KAAAA,EACA,KAAK,OAAO,KAAK,UAAU,EAAE,GACjC,EACA,OAAQ,CACN,UAAW,GACX,QAAQx4B,EAAG,OACJA,IACH,KAAK,KAAMw4B,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,IAE7C,CACF,EACA,YAAYzqB,EAAK,CACV,KAAA,MAAM,UAAW,CAACA,CAAG,CAC5B,CACF,EACA,SAAU,CACR,KAAK,YAAY,IAAM,CACrB,KAAK,8BAA8B,EAC9B,KAAA,YAAc,KAAK,MAAM,YACzB,KAAA,kBAAkB,UAAW,KAAK,aAAa,CAAA,CACrD,CACH,EACA,eAAgB,CACd,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,CACjC,EACA,QAAS,CACP,4BAA4BR,EAAG,OACzB,GAAA,CAAC,KAAK,YACR,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEhB,MAAAswC,GAAiBrlB,EAAA,KAAK,cAAL,YAAAA,EAAkB,wBAElC,MAAA,CACL,EAAGjrB,EAAE,QAAUswC,EAAe,EAC9B,EAAGtwC,EAAE,QAAUswC,EAAe,CAAA,CAElC,EACA,yBAA0B,CACxB,KAAK,QAAU,EACjB,EACA,uBAAuBtwC,EAAG,CACnB,KAAA,cAAgB,KAAK,4BAA4BA,CAAC,CACzD,EACA,yBAA0B,CACxB,KAAK,QAAU,GACf,KAAK,iBAAmB,EAC1B,EACA,oBAAqB,CACd,KAAA,MAAM,qBAAsB,KAAK,iBAAiB,EAClD,KAAA,MAAM,OAAQ,KAAK,iBAAiB,CAC3C,EACA,yBAAyBwN,EAAOuR,EAAK,CAC7B,KAAA,CAACwxB,EAAiBC,CAAa,EAAI,CACtC,IAAMhjC,GAAU,KAAK,OAAO,OAAS,GACrC,IAAMuR,GAAQ,KAAK,OAAO,OAAS,EAAA,EAG/B,MAAA,CACL,KAAM,GAAGwxB,CAAe,IACxB,MAAO,GAAGC,EAAgBD,CAAe,GAAA,CAE7C,EACA,yBAA0B,CACpB,KAAK,4BAGT,KAAK,mBAAqB,GAC1B,KAAK,YAAY,IAAO,KAAK,mBAAqB,GAAQ,GAAG,EAC/D,EACA,aAAavwC,EAAiB,CAC5B,MAAM/S,EAAS+S,GAAA,YAAAA,EAAG,OAClB,OAAK/S,EAKHA,IACCA,EAAO,KAAO,kBACZ,OAAOA,EAAO,WAAc,UAC3BA,EAAO,UAAU,QAAQ,mBAAmB,IAAM,IAP/C,EASX,EACA,iBAAiB+S,EAAiB,CAC5B,CAAC,KAAK,aAAaA,CAAC,GAAK,CAAC,KAAK,cAGnC,KAAK,cAAgB,IAAI,KAAK,EAAE,QAAQ,EAC1C,EACA,eAAeA,EAAiB,CAE5B,KAAK,aACL,KAAK,mBACL,CAAC,KAAK,aACN,KAAK,oBAIH,CAAC,KAAK,aAAaA,CAAC,GAGZ,IAAI,KAAK,EAAE,QAAQ,EACrB,KAAK,cAAgB,MAI1B,KAAA,QAAU,CAAC,KAAK,QACvB,EACA,2BAA4B,CAC1B,MAAMktB,EAAM,SAEVA,EAAI,mBACJA,EAAI,yBACJA,EAAI,sBACJA,EAAI,qBAEAA,EAAA,oBAAoB,mBAAoB,KAAK,sBAAsB,EACnEA,EAAA,oBACF,yBACA,KAAK,sBAAA,EAEHA,EAAA,oBACF,sBACA,KAAK,sBAAA,EAEHA,EAAA,oBACF,qBACA,KAAK,sBAAA,GAGP,QAAQ,IAAI,kDAAkD,CAElE,EACA,+BAAgC,CAC9B,MAAMA,EAAM,SAEVA,EAAI,mBACJA,EAAI,yBACJA,EAAI,sBACJA,EAAI,qBAEAA,EAAA,iBAAiB,mBAAoB,KAAK,sBAAsB,EAChEA,EAAA,iBACF,yBACA,KAAK,sBAAA,EAEHA,EAAA,iBAAiB,sBAAuB,KAAK,sBAAsB,EACnEA,EAAA,iBAAiB,qBAAsB,KAAK,sBAAsB,GAEtE,QAAQ,IAAI,kDAAkD,CAElE,EACA,wBAAyB,CACvB,MAAMA,EAAM,SACP,KAAA,aACH,CAAC,CAACA,EAAI,mBACN,CAAC,CAACA,EAAI,sBACN,CAAC,CAACA,EAAI,yBACN,CAAC,CAACA,EAAI,qBACL,OAAO,YAAc,OAAO,OAC3B,OAAO,aAAe,OAAO,MACnC,EACA,qBAAsB,CAChB,SAAS,oBACII,GAAA,EAAE,KAAK,IAAM,CAC1B,KAAK,aAAe,EAAA,CACrB,EAED,KAAK,aAAe,GAExB,EACA,oBAAqB,CACb,MAAAF,EAAU,SAAS,cAAc,cAAc,EACjDA,IACaD,GAAAC,CAAO,EAAE,KAAK,IAAM,CACjC,KAAK,aAAe,EAAA,CACrB,EACD,KAAK,aAAe,GAExB,EACA,sBAAuB,CACjB,KAAK,aACP,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,CAE5B,EACA,YAAa,WACX,KAAK,OAAQoF,GAAA9F,GAAAzB,EAAA,KAAK,QAAL,YAAAA,EAAY,gBAAZ,YAAAyB,EAA2B,QAA3B,YAAA8F,EAAkC,KACjD,EACA,4BAA6B,CACrB,MAAAie,EAAgB,KAAK,WAAa,EACnC,KAAK,OAAOA,CAAa,GAGzB,KAAA,MAAM,qBAAsBA,CAAa,CAChD,EACA,YAAYvB,EAAc,CACxB,GAAKA,EAGD,OAACA,EAAM,OAIHA,EAAM,OACZ,KAAK,uBACP,EALSA,EAAM,GAMjB,EACA,iBAAkB,CAChB,GAAI,OAAK,YAAc,KAAK,aAAe,KAAK,oBAIzC,OAAA,IAAI,QAAS5oB,GAAY,CAC9B,KAAK,WAAW,EAChB,KAAK,YAAc,KAAK,IACxB,KAAK,mBAAqB,KAAK,WAC/B,KAAK,2BAA6BA,EAClC,KAAK,IAAM,KAAK,YAAY,KAAK,OAAO,KAAK,UAAU,CAAC,CAAA,CACzD,CACH,EACA,MAAM,iBAAkB,CAClB,KAAK,SACP,MAAM,KAAK,QAEf,EACA,MAAM,QAAS,CACT,IAAAvH,EAAM,KAAK,WAAa,KAAK,YAC7B,KAAK,cAAgB,MACjBA,EAAA,KAAK,OAAO,OAAS,GAG7B,MAAM,KAAK,cAAc,CACvB,MAAO,KAAK,WACZ,IAAAA,CAAA,CACD,CACH,EACA,MAAM,cAAc,CAAE,MAAAvR,EAAO,IAAAuR,GAAuC,CAC5D,KAAA,CAAC2xB,EAAYC,CAAQ,EAAI,CAC7B,KAAK,IAAI,KAAK,OAAO,OAAS,EAAGnjC,CAAK,EACtC,KAAK,IAAI,KAAK,OAAO,OAAS,EAAGuR,CAAG,CAAA,EAGhCgtB,EAAQ,IAAI,MAAM4E,EAAWD,EAAa,CAAC,EAC9C,KAAK,CAAC,EACN,IAAI,CAACzqC,EAAGzN,IAAUyN,EAAIyqC,EAAal4C,CAAK,EAErCo4C,EAAU,KAAK,kBACrB,UAAWT,KAAcpE,EAAO,CAI9B,GAFE6E,IAAY,KAAK,mBAChB,KAAK,SAAW,CAAC,KAAK,oBAEvB,OAGE,KAAK,gBAAgB,SAAST,CAAU,GAItC,MAAA,IAAI,QAAe7pB,GAAY,CAC7B,MAAAuqB,EAAM,IAAI,MAChBA,EAAI,OAAS,IAAM,CACjB,KAAK,gBAAkB,CAAC,GAAG,KAAK,gBAAiBV,CAAU,EACnD7pB,GAAA,EAEVuqB,EAAI,QAAU,IAAM,CACVvqB,GAAA,EAEV,KAAK,qBAAuB,CAAC,GAAG,KAAK,qBAAsBuqB,CAAG,EAC9D,MAAM1nB,EAAM,KAAK,YAAY,KAAK,OAAOgnB,CAAU,CAAC,EAC/CA,GACK7pB,IAEVuqB,EAAI,IAAM1nB,CAAA,CACX,CACH,CACF,EACA,MAAM,OAAuB,CAC3B,OAAI,KAAK,YACP,KAAK,WAAa,GAEX,QAAQ,WAGV,IAAI,QAAe7C,GAAY,CAC9B,MAAAwV,EAAY,YAAY,MACxBtO,EAAQqiB,GAAgB,CACZA,EAAM/T,EACR,KAAK,aACZ,KAAA,YAAc,OAAO,sBAAsBtO,CAAI,EAE5ClH,GACV,EAEG,KAAA,YAAc,OAAO,sBAAsBkH,CAAI,CAAA,CACrD,CACH,EACA,aAAc,CACL,OAAA,qBAAqB,KAAK,WAAW,CAC9C,EACA,MAAM,MAAO,SACL,MAAAhgB,EAAQ,YAAY,MAC1B,GAAI,KAAK,aAAe,CAAC,KAAK,OAAQ,CAC/B,KAAA,MAAM,qBAAsB,CAAC,EAElC,MACF,CAEK,KAAA,MAAM,kBAAmB,EAAI,EAClC,KAAK,QAAU,GACf,KAAK,YAAY,EACjB,KAAK,2BAA2B,EAChC,MAAM,KAAK,YACX,MAAM,KAAK,kBACX,KAAK,gBAAgB,EACrB,MAAM,KAAK,QACP,KAAK,SACP,KAAK,KAAK,EAGN,MAAAuR,EAAM,YAAY,MACxB,KAAK,MAAM,gCAAiC,CAC1C,IAAIkM,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,UAClC,OAAOyB,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,MACrC,SAAU3N,EAAMvR,CAAA,CACjB,CACH,EACA,sBAAuB,CACrB,KAAK,MAAM,4BAA4B,EAClC,KAAA,qBAAqB,QAASqjC,GAAQ,CACzCA,EAAI,IAAM,EAAA,CACX,EACD,KAAK,qBAAuB,EAC9B,EACA,MAAM,OAAQ,CACZ,KAAK,QAAU,GACf,KAAK,YAAc,GACnB,KAAK,IAAM,KAAK,YAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAChB,KAAA,MAAM,kBAAmB,EAAK,CACrC,EAEA,QAAS,aACF,KAAA,MAAM,gBAAiB,KAAK,KAAK,EAEtC,KAAK,MAAM,mBAAoB,CAC7B,MAAM5lB,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,IACpC,WAAWyB,EAAA,KAAK,OAAO,KAAK,UAAU,IAA3B,YAAAA,EAA8B,SAAA,CAC1C,EAED,MAAMyJ,GAAe1D,GAAAD,EAAA,KAAK,SAAL,YAAAA,EAAc,KAAK,cAAnB,YAAAC,EAAgC,UACjD0D,GACG,KAAA,MAAM,mBAAoBA,CAAY,EAG7C,KAAK,YAAc,GACnB,KAAK,YAAc,KAAK,IACxB,KAAK,2BAA2B,CAClC,EACA,QAAQn2B,EAAU,CACZ,GAAA,KAAK,WAAa,EACpB,OAAO,KAAK,MAAM,qBAAsB,KAAK,WAAa,CAAC,EAE7D,KAAK,WAAa,GAClB,KAAK,IAAM,KAAK,YAChB,KAAK,2BAA2B,EAC3B,KAAA,MAAM,QAASA,CAAC,CACvB,EACA,SAASxS,EAA0B,CAC5B,KAAA,MAAM,SAAUA,CAAG,CAC1B,EACA,eAAewS,EAAU,CAClB,KAAA,MAAM,oBAAqBA,CAAC,CACnC,EACA,gBAAgBA,EAAU,CACnB,KAAA,MAAM,qBAAsBA,CAAC,CACpC,EACA,YAAa,CACN,KAAA,QAAU,CAAC,KAAK,OACvB,EACA,cAAcA,EAAkB,OAC9B,MAAM+zB,GAAU9I,EAAA,SAAS,gBAAT,YAAAA,EAAwB,QAAQ,cAC5C,GAAA,EAAA8I,IAAY,SAAW,KAAK,oBAGxB,OAAA/zB,EAAE,IAAI,YAAe,EAAA,CAC3B,IAAK,IACH,GAAI+zB,IAAY,SACd,OAEG,KAAK,mBACR,KAAK,WAAW,EAElB,MACF,IAAK,SACH/zB,EAAE,eAAe,EACjB,KAAK,oBAAoB,EACzB,KAAK,aAAe,GAEpB,KACJ,CACF,CACF,CACF,CAAC,srHClrBc8wC,GAAAjlD,EAAI,OAAO,CACxB,KAAM,UACN,WAAY,CACV,eAAgBmoC,EAClB,EACA,OAAQ,CAACqR,EAAQ,EACjB,MAAO,CACL,OAAQ,CACN,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,IACX,EACA,YAAa,CACX,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,aAAc,EACd,oBAAqB,EACrB,aAAc,CACZ,MAAO,OACP,OAAQ,MACV,EACA,UAAW,CACT,MAAO,OACP,OAAQ,MACV,EACA,WAAY,MAAA,CAEhB,EACA,SAAU,CACR,aAAkC,CACzB,MAAA,CACL,OAAQ,GAAG,KAAK,mBAAmB,IAAA,CAEvC,CACF,EACA,MAAO,CACL,YAAa,CACX,KAAK,SAAS,CAChB,EACA,OAAQ,CACN,UAAW,GACX,SAAU,CACR,KAAK,SAAS,CAChB,CACF,CACF,EACA,SAAU,CACR,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,CACvB,EACA,QAAS,CACP,UAAW,CACT,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,CAC9B,EACA,eAAerlC,EAAU,CAClB,KAAA,MAAM,gBAAiBA,CAAC,CAC/B,EACA,wBAAyB,CACjB,MAAA+wC,EAAgB,KAAK,MAAM,cAC5BA,GACH,KAAK,YAAY,IAAM,CACrB,KAAK,uBAAuB,CAE5B,CACD,EAEH,KAAK,oBAAsBA,GAAA,YAAAA,EAAe,YAC5C,EACA,iBAAkB,CACV,MAAAC,EAAS,KAAK,MAAM,OACrBA,GACH,KAAK,YAAY,IAAM,CACrB,KAAK,gBAAgB,CAErB,CACD,EAEH,KAAK,aAAeA,GAAA,YAAAA,EAAQ,aACvB,KAAK,OAAO,aAMV,KAAA,WAAa,GAAG,OAAO,MAAM,KALlC,KAAK,WAAa,GAEhB,KAAK,OAAS,KAAK,OAAO,MAAM,IAAI,EAAE,CAAC,EAAI,KAAK,aAAe,KACjE,KAIF,KAAK,UAAY,CACf,MAAO,OACP,OAAQ,KAAK,UAAA,CAEjB,CACF,CACF,CAAC,s9DCjGcC,GAAAplD,EAAI,OAAO,CACxB,KAAM,eACN,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,eAAyC,CACvC,OAAI,KAAK,SACA,GAGF,CACL,+DAAgE,GAChE,oBAAqB,CAAC,KAAK,KAC3B,oBAAqB,KAAK,IAAA,CAE9B,EACA,gBAA0C,CACjC,MAAA,CACL,6BAA8B,KAAK,KACnC,6BAA8B,CAAC,KAAK,KACpC,GAAG,KAAK,aAAA,CAEZ,CACF,CACF,CAAC,0OC/BcqlD,GAAArlD,EAAI,OAAO,CACxB,KAAM,cACN,WAAY,CAAE,QAAAslD,EAAQ,EACtB,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS,IACX,EACA,kBAAmB,CACjB,KAAM,OACN,QAAS,EACX,CACF,CACF,CAAC,wSCbcC,GAAAvlD,EAAI,OAAO,CACxB,KAAM,cACN,WAAY,CAAE,aAAAwlD,EAAa,EAC3B,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,iBACX,EACA,OAAQ,CACN,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,mBAA6C,CACpC,MAAA,CACL,gBAAiB,KAAK,KACtB,eAAgB,CAAC,KAAK,IAAA,CAE1B,EACA,eAAyC,CAChC,MAAA,CACL,WAAY,KAAK,OACjB,GAAG,KAAK,iBAAA,CAEZ,CACF,CACF,CAAC,4nBC/BcC,GAAAzlD,EAAI,OAAO,CACxB,KAAM,YACN,WAAY,CACV,eAAgBmoC,EAClB,EACA,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,WAAY,GACZ,mBAAoB,EACpB,qBAAsB,EAAA,CAE1B,EACA,SAAU,CACR,aAAuC,CAC9B,MAAA,CACL,4BAA6B,CAAC,KAAK,KACnC,2BAA4B,KAAK,IAAA,CAErC,EACA,yBAAmD,CAC1C,MAAA,CACL,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,gBAAiB,KAAK,KACtB,gBAAiB,CAAC,KAAK,IAAA,CAE3B,CACF,EACA,MAAO,CACL,WAAWud,EAAQ,CACbA,GACF,KAAK,eAAe,CAExB,CACF,EACA,SAAU,CACR,KAAK,eAAe,CACtB,EACA,QAAS,CACP,kBAAmB,CAEjB,MAAMC,EADiB,KAAK,MAAM,eACO,kBAErCA,IAAsB,KAAK,qBAC7B,KAAK,WAAa,IAGhB,KAAK,YACP,KAAK,eAAe,EAGtB,KAAK,mBAAqBA,CAC5B,EACA,gBAAiB,CACT,MAAAC,EAAS,KAAK,MAAM,OAE1B,KAAK,UAAU,IAAM,CACnBA,EAAO,eAAe,CAAE,SAAU,QAAU,CAAA,CAAA,CAC7C,CACH,EACA,mBAAoB,CAClB,KAAK,WAAa,EACpB,EACA,UAAW,CACH,MAAAC,EAAW,KAAK,MAAM,SAG1BA,EAAS,aAAeA,EAAS,WAAaA,EAAS,aAAe,IAEtE,KAAK,WAAa,IAGpB,KAAK,qBACHA,EAAS,aAAeA,EAAS,UAAYA,EAAS,aAAe,GACzE,EACA,QAAQ1xC,EAAe,CACjBA,EAAE,OAAS,GACb,KAAK,kBAAkB,CAE3B,EACA,QAAQozB,EAAsB,CACT,CACjB,UACA,YACA,SACA,WACA,OACA,KAAA,EAEa,SAASA,EAAM,GAAG,GAC/B,KAAK,kBAAkB,CAE3B,EACA,SAAU,CACR,KAAK,kBAAkB,CACzB,EACA,aAAc,CACZ,KAAK,kBAAkB,CACzB,CACF,CACF,CAAC,+lCC1Gcue,GAAA9lD,EAAI,OAAO,CACxB,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,SACX,EACA,QAAS,CACP,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,cAAuB,CACd,MAAA,GAAG,KAAK,IAAI,IACrB,EACA,gBAAyB,CAChB,MAAA,GAAG,KAAK,KAAO,CAAC,IACzB,EACA,oBAA6B,CACpB,MAAA,GAAG,KAAK,KAAO,CAAC,IACzB,EACA,wBAAiC,CAC/B,OAAO2iC,GAAO,KAAK,MAAO,CAAC,GAAK,MAClC,EACA,mBAAyC,CAChC,MAAA,CACL,OAAQ,GAAG,KAAK,cAAc,QAC9B,MAAO,KAAK,aACZ,OAAQ,KAAK,aACb,SAAU,UAAA,CAEd,EACA,aAAmC,CAC1B,MAAA,CACL,MAAO,KAAK,aACZ,OAAQ,KAAK,aACb,mBAAoBA,GAAO,KAAK,MAAO,EAAG,EAC1C,oBAAqBA,GAAO,KAAK,MAAO,EAAG,EAC3C,mBAAoB,KAAK,uBACzB,eAAgB,KAAK,kBAAA,CAEzB,EACA,mBAAyC,CAChC,MAAA,CACL,GAAG,KAAK,YACR,eAAgB,OAChB,kBAAmB,MAAA,CAEvB,EACA,UAAgC,CACvB,MAAA,CACL,MAAO,KAAK,aACZ,OAAQ,KAAK,aACb,gBAAiB,KAAK,QAAUA,GAAO,KAAK,MAAO,CAAC,EAAI,MAAA,CAE5D,CACF,EACA,QAAS,CACP,OAAAA,EACF,CACF,CAAC,+dCpEA,SAASxuB,EAAEwB,EAAE,CAAmDgE,EAAA,QAAehE,GAAoI,GAAe,OAAO,MAApB,YAAyB,KAAKowC,GAAM,KAAK,IAAI,CAAC,IAAI5xC,EAAE,CAAC,GAAG,SAASA,EAAE,EAAE,UAAU,CAAC,IAAIwB,EAAEyE,EAAErS,EAAE+gB,EAAE5gB,EAAEkE,EAAe,OAAO,aAApB,aAAwC,cAAP,MAAoB,YAAY,IAAI+H,EAAE,QAAQ,UAAU,CAAC,OAAO,YAAY,IAAG,CAAE,EAAe,OAAO,SAApB,aAAoC,UAAP,MAAgB,QAAQ,QAAQA,EAAE,QAAQ,UAAU,CAAC,OAAOwB,EAAC,EAAGzN,GAAG,GAAG,EAAEkS,EAAE,QAAQ,OAAO0O,GAAGnT,EAAE,UAAU,CAAC,IAAIxB,EAAE,MAAO,MAAKA,EAAEiG,EAAC,GAAI,CAAC,EAAEjG,EAAE,CAAC,CAAC,GAAI,EAAC/H,EAAE,IAAI,QAAQ,OAAM,EAAGlE,EAAE4gB,EAAE1c,GAAG,KAAK,KAAK+H,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,IAAK,EAACpM,CAAC,EAAEA,EAAE,KAAK,IAAK,IAAGoM,EAAE,QAAQ,UAAU,CAAC,OAAO,IAAI,OAAM,QAAS,EAACpM,CAAC,EAAEA,EAAG,IAAI,OAAM,QAAO,EAAG,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,CAACoM,EAAEwB,EAAEyE,IAAI,CAAC,QAAQrS,EAAEqS,EAAE,EAAE,EAAE0O,EAAe,OAAO,QAApB,YAA2B1O,EAAE,EAAE,OAAOlS,EAAE,CAAC,MAAM,QAAQ,EAAEkE,EAAE,iBAAiBpI,EAAE8kB,EAAE,UAAU1c,CAAC,EAAE45C,EAAEl9B,EAAE,SAAS1c,CAAC,GAAG0c,EAAE,gBAAgB1c,CAAC,EAAEwtC,EAAE,EAAE,CAAC51C,GAAG41C,EAAE1xC,EAAE,OAAO0xC,IAAI51C,EAAE8kB,EAAE5gB,EAAE0xC,CAAC,EAAE,UAAUxtC,CAAC,EAAE45C,EAAEl9B,EAAE5gB,EAAE0xC,CAAC,EAAE,SAASxtC,CAAC,GAAG0c,EAAE5gB,EAAE0xC,CAAC,EAAE,gBAAgBxtC,CAAC,EAAE,GAAG,CAACpI,GAAG,CAACgiD,EAAE,CAAC,IAAIpwC,EAAE,EAAEzM,EAAE,EAAEkjC,EAAE,GAAGroC,EAAE,SAASmQ,EAAE,CAAC,GAAOk4B,EAAE,SAAN,EAAa,CAAC,IAAI12B,EAAE5N,EAAC,EAAGqS,EAAE,KAAK,IAAI,EAAE,oBAAoBzE,EAAEC,EAAE,EAAEA,EAAEwE,EAAEzE,EAAE,WAAY,UAAU,CAAC,IAAIxB,EAAEk4B,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,EAAE,QAAQ12B,EAAE,EAAEA,EAAExB,EAAE,OAAOwB,IAAI,GAAG,CAACxB,EAAEwB,CAAC,EAAE,UAAU,GAAG,CAACxB,EAAEwB,CAAC,EAAE,SAASC,CAAC,CAAC,OAAOzB,EAAE,CAAC,WAAY,UAAU,CAAC,MAAMA,CAAC,EAAG,CAAC,CAAC,CAAC,EAAG,KAAK,MAAMiG,CAAC,CAAC,CAAC,CAAC,OAAOiyB,EAAE,KAAK,CAAC,OAAO,EAAEljC,EAAE,SAASgL,EAAE,UAAU,EAAE,CAAC,EAAEhL,CAAC,EAAE68C,EAAE,SAAS7xC,EAAE,CAAC,QAAQwB,EAAE,EAAEA,EAAE02B,EAAE,OAAO12B,IAAI02B,EAAE12B,CAAC,EAAE,SAASxB,IAAIk4B,EAAE12B,CAAC,EAAE,UAAU,GAAG,CAAC,CAACxB,EAAE,QAAQ,SAASA,EAAE,CAAC,OAAOnQ,EAAE,KAAK8kB,EAAE3U,CAAC,CAAC,EAAEA,EAAE,QAAQ,OAAO,UAAU,CAAC6xC,EAAE,MAAMl9B,EAAE,SAAS,CAAC,EAAE3U,EAAE,QAAQ,SAAS,SAASA,EAAE,CAACA,IAAIA,EAAE2U,GAAG3U,EAAE,sBAAsBnQ,EAAEmQ,EAAE,qBAAqB6xC,CAAC,CAAC,CAAC,EAAErwC,EAAE,CAAE,EAAC,SAASyE,EAAErS,EAAE,CAAC,IAAI+gB,EAAEnT,EAAE5N,CAAC,EAAE,GAAY+gB,IAAT,OAAW,OAAOA,EAAE,QAAQ,IAAI5gB,EAAEyN,EAAE5N,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAA,EAAE,OAAOoM,EAAEpM,CAAC,EAAE,KAAKG,EAAE,QAAQA,EAAEA,EAAE,QAAQkS,CAAC,EAAElS,EAAE,OAAO,CAACkS,EAAE,EAAEjG,GAAG,CAAC,IAAIwB,EAAExB,GAAGA,EAAE,WAAW,IAAIA,EAAE,QAAQ,IAAIA,EAAE,OAAOiG,EAAE,EAAEzE,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAEA,CAAC,EAAEyE,EAAE,EAAE,CAACjG,EAAEwB,IAAI,CAAC,QAAQ5N,KAAK4N,EAAEyE,EAAE,EAAEzE,EAAE5N,CAAC,GAAG,CAACqS,EAAE,EAAEjG,EAAEpM,CAAC,GAAG,OAAO,eAAeoM,EAAEpM,EAAE,CAAC,WAAW,GAAG,IAAI4N,EAAE5N,CAAC,CAAC,CAAC,CAAC,EAAEqS,EAAE,EAAE,UAAU,CAAC,GAAa,OAAO,YAAjB,SAA4B,OAAO,WAAW,GAAG,CAAC,OAAO,MAAM,IAAI,SAAS,aAAa,EAAC,CAAE,MAAS,CAAC,GAAa,OAAO,QAAjB,SAAwB,OAAO,MAAM,CAAC,EAAC,EAAGA,EAAE,EAAE,CAACjG,EAAEwB,IAAI,OAAO,UAAU,eAAe,KAAKxB,EAAEwB,CAAC,EAAE,IAAI5N,EAAE,CAAE,EAAC,OAAO,IAAI,CAAcqS,EAAE,EAAErS,EAAE,CAAC,QAAQ,IAAIk+C,CAAC,CAAC,EAAE,IAAI9xC,EAAEiG,EAAE,IAAI,EAAEzE,EAAEyE,EAAE,EAAEjG,CAAC,EAAE,MAAM2U,EAAE,SAAS3U,EAAE,CAAC,OAAO,IAAI,OAAO,iBAAiB,EAAE,KAAKA,CAAC,CAAC,EAAEjM,EAAE,SAASiM,EAAEwB,EAAE,CAAC,OAAO,KAAK,MAAM,KAAK,OAAM,GAAIA,EAAExB,EAAE,EAAE,EAAEA,CAAC,EAAE,IAAI/H,EAAE,iBAAiBpI,EAAE,mBAAmBgiD,EAAE,aAAapM,EAAE,2BAA2BhkC,EAAE,YAAYzM,EAAE,gBAAgBkjC,EAAE,uBAAuB6Z,EAAE,sBAAsBt/C,EAAE,eAAeo9B,EAAE,gBAAgBzV,EAAE,eAAewT,EAAE,WAAW,SAAS/5B,EAAEmM,EAAE,CAAC,OAAOnM,EAAc,OAAO,QAAnB,YAAqC,OAAO,OAAO,UAAxB,SAAiC,SAASmM,EAAE,CAAC,OAAO,OAAOA,CAAC,EAAE,SAASA,EAAE,CAAC,OAAOA,GAAe,OAAO,QAAnB,YAA2BA,EAAE,cAAc,QAAQA,IAAI,OAAO,UAAU,SAAS,OAAOA,CAAC,EAAEnM,EAAEmM,CAAC,CAAC,CAAC,SAASgyC,EAAEhyC,EAAEwB,EAAE,CAAC,IAAIyE,EAAE,OAAO,KAAKjG,CAAC,EAAE,GAAG,OAAO,sBAAsB,CAAC,IAAIpM,EAAE,OAAO,sBAAsBoM,CAAC,EAAEwB,IAAI5N,EAAEA,EAAE,OAAQ,SAAS4N,GAAE,CAAC,OAAO,OAAO,yBAAyBxB,EAAEwB,EAAC,EAAE,UAAU,CAAG,GAAEyE,EAAE,KAAK,MAAMA,EAAErS,CAAC,CAAC,CAAC,OAAOqS,CAAC,CAAC,SAASgsC,EAAEjyC,EAAE,CAAC,QAAQwB,EAAE,EAAEA,EAAE,UAAU,OAAOA,IAAI,CAAC,IAAIyE,EAAQ,UAAUzE,CAAC,GAAjB,KAAmB,UAAUA,CAAC,EAAE,CAAE,EAACA,EAAE,EAAEwwC,EAAE,OAAO/rC,CAAC,EAAE,EAAE,EAAE,QAAS,SAASzE,EAAE,CAAC0wC,EAAElyC,EAAEwB,EAAEyE,EAAEzE,CAAC,CAAC,CAAC,CAAG,EAAC,OAAO,0BAA0B,OAAO,iBAAiBxB,EAAE,OAAO,0BAA0BiG,CAAC,CAAC,EAAE+rC,EAAE,OAAO/rC,CAAC,CAAC,EAAE,QAAS,SAASzE,EAAE,CAAC,OAAO,eAAexB,EAAEwB,EAAE,OAAO,yBAAyByE,EAAEzE,CAAC,CAAC,CAAC,CAAG,CAAA,CAAC,OAAOxB,CAAC,CAAC,SAASlM,EAAEkM,EAAE,CAAC,OAAO,SAASA,EAAE,CAAC,GAAG,MAAM,QAAQA,CAAC,EAAE,OAAOmyC,EAAEnyC,CAAC,CAAC,EAAEA,CAAC,GAAG,SAASA,EAAE,CAAC,GAAgB,OAAO,QAApB,aAAkCA,EAAE,OAAO,QAAQ,GAAvB,MAAgCA,EAAE,YAAY,GAApB,KAAsB,OAAO,MAAM,KAAKA,CAAC,CAAC,EAAEA,CAAC,GAAG,SAASA,EAAEwB,EAAE,CAAC,GAAGxB,EAAE,CAAC,GAAa,OAAOA,GAAjB,SAAmB,OAAOmyC,EAAEnyC,EAAEwB,CAAC,EAAE,IAAIyE,EAAE,OAAO,UAAU,SAAS,KAAKjG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAiBiG,IAAX,UAAcjG,EAAE,cAAciG,EAAEjG,EAAE,YAAY,MAAciG,IAAR,OAAmBA,IAAR,MAAU,MAAM,KAAKjG,CAAC,EAAgBiG,IAAd,aAAiB,2CAA2C,KAAKA,CAAC,EAAEksC,EAAEnyC,EAAEwB,CAAC,EAAE,MAAM,CAAC,EAAExB,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU;AAAA,mFAAsI,CAAC,EAAC,CAAE,CAAC,SAASmyC,EAAEnyC,EAAEwB,EAAE,EAAQA,GAAN,MAASA,EAAExB,EAAE,UAAUwB,EAAExB,EAAE,QAAQ,QAAQiG,EAAE,EAAErS,EAAE,IAAI,MAAM4N,CAAC,EAAEyE,EAAEzE,EAAEyE,IAAIrS,EAAEqS,CAAC,EAAEjG,EAAEiG,CAAC,EAAE,OAAOrS,CAAC,CAAC,SAASw+C,EAAEpyC,EAAEwB,EAAE,CAAC,QAAQyE,EAAE,EAAEA,EAAEzE,EAAE,OAAOyE,IAAI,CAAC,IAAIrS,EAAE4N,EAAEyE,CAAC,EAAErS,EAAE,WAAWA,EAAE,YAAY,GAAGA,EAAE,aAAa,GAAG,UAAUA,IAAIA,EAAE,SAAS,IAAI,OAAO,eAAeoM,EAAEqyC,EAAEz+C,EAAE,GAAG,EAAEA,CAAC,CAAC,CAAC,CAAC,SAASs+C,EAAElyC,EAAEwB,EAAEyE,EAAE,CAAC,OAAOzE,EAAE6wC,EAAE7wC,CAAC,KAAKxB,EAAE,OAAO,eAAeA,EAAEwB,EAAE,CAAC,MAAMyE,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,EAAE,CAAC,EAAEjG,EAAEwB,CAAC,EAAEyE,EAAEjG,CAAC,CAAC,SAASqyC,EAAEryC,EAAE,CAAC,IAAIwB,EAAE,SAASxB,EAAEwB,EAAE,CAAC,GAAc3N,EAAEmM,CAAC,IAAd,UAAwBA,IAAP,KAAS,OAAOA,EAAE,IAAIiG,GAAEjG,EAAE,OAAO,WAAW,EAAE,GAAYiG,KAAT,OAAW,CAAC,IAAIrS,EAAEqS,GAAE,KAAKjG,EAAE,QAAQ,EAAE,GAAcnM,EAAED,CAAC,IAAd,SAAgB,OAAOA,EAAE,MAAM,IAAI,UAAU,8CAA8C,CAAC,CAAC,OAAO,OAAOoM,CAAC,CAAC,EAAEA,CAAC,EAAE,OAAiBnM,EAAE2N,CAAC,IAAd,SAAgBA,EAAE,OAAOA,CAAC,CAAC,CAAC,MAAMswC,EAAE,UAAU,CAAC,SAAS7rC,EAAErS,EAAEC,GAAE,CAAC,IAAIm+C,EAAE,KAAK,GAAG,SAAShyC,EAAEwB,EAAE,CAAC,GAAG,EAAExB,aAAawB,GAAG,MAAM,IAAI,UAAU,mCAAmC,CAAC,EAAE,KAAKyE,CAAC,EAAEisC,EAAE,KAAK,QAAQ,CAAC,gBAAgB,KAAK,cAAc,KAAK,WAAW,KAAK,WAAW,CAAE,EAAC,UAAU,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,aAAa,CAAA,EAAG,aAAa,CAAA,EAAG,eAAe,KAAK,SAAS,CAAC,UAAU,KAAK,QAAQ,SAAS,cAAc,MAAM,EAAE,OAAO,SAAS,cAAc,MAAM,CAAC,CAAC,CAAC,EAAEA,EAAE,KAAK,UAAU,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,UAAU,SAAS,KAAK,YAAY,UAAU,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,iBAAiB,sBAAsB,gBAAgB,qBAAqB,eAAe,KAAK,iBAAiB,KAAK,aAAa,IAAI,CAAC,EAAEA,EAAE,KAAK,sBAAuB,UAAU,CAACF,EAAE,MAAM,SAAS,YAAYA,EAAE,MAAM,SAAS,QAAQ,UAAUA,EAAE,QAAQ,iBAAiBA,EAAE,MAAM,SAAS,OAAO,UAAUA,EAAE,QAAQ,gBAAgBA,EAAE,MAAM,SAAS,OAAO,UAAUA,EAAE,QAAQ,OAAOA,EAAE,MAAM,SAAS,UAAU,UAAU,GAAGA,EAAE,MAAM,SAAS,UAAU,YAAYA,EAAE,MAAM,SAAS,OAAO,EAAEA,EAAE,MAAM,SAAS,UAAU,YAAYA,EAAE,MAAM,SAAS,MAAM,EAAE,CAAG,EAACE,EAAE,KAAK,QAAS,UAAU,CAAC,OAAOF,EAAE,MAAM,gBAAgB,GAAGA,EAAE,aAAc,EAACA,CAAC,CAAG,EAACE,EAAE,KAAK,QAAS,UAAU,CAAC,OAAOF,EAAE,MAAM,gBAAgB,GAAGA,CAAC,CAAC,EAAGE,EAAE,KAAK,OAAQ,UAAU,CAAC,OAAOF,EAAE,MAAM,eAAehyC,EAAE,QAAQgyC,EAAE,MAAM,SAAS,EAAEA,EAAE,MAAM,UAAU,MAAMA,CAAC,CAAG,EAACE,EAAE,KAAK,WAAY,SAASlyC,EAAE,CAAC,OAAOgyC,EAAE,gBAAgBvwC,EAAE,CAAC,GAAGzB,CAAC,CAAC,EAAEgyC,CAAC,GAAIE,EAAE,KAAK,oBAAqB,UAAU,CAAC,OAAgB,OAAOF,EAAE,QAAQ,SAA3B,UAAoCA,EAAE,WAAWA,EAAE,QAAQ,OAAO,EAAE,SAASA,EAAE,QAAQ,QAAQ,EAAEA,IAAIA,EAAE,QAAQ,QAAQ,QAAS,SAAShyC,EAAE,CAACgyC,EAAE,WAAWhyC,CAAC,EAAE,SAASgyC,EAAE,QAAQ,QAAQ,EAAE,UAAUA,EAAE,QAAQ,WAAW,CAAC,CAAC,EAAGA,EAAE,CAAC,EAAGE,EAAE,KAAK,aAAc,SAASlyC,EAAE,CAAC,IAAIwB,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAK,GAAGmT,EAAE3U,CAAC,EAAE,OAAOgyC,EAAE,kBAAkBhyC,EAAEwB,CAAC,EAAE,GAAGxB,EAAE,CAAC,IAAIiG,GAAG+rC,EAAE,SAAS,CAAE,GAAE,eAAep+C,EAAc,OAAOqS,GAAnB,WAAqBA,EAAEjG,CAAC,EAAEA,EAAE,MAAM,EAAE,EAAEgyC,EAAE,eAAep+C,EAAE4N,CAAC,CAAC,CAAC,OAAOwwC,CAAC,CAAG,EAACE,EAAE,KAAK,cAAe,SAASlyC,EAAE,CAAC,IAAIwB,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAK,OAAOmT,EAAE3U,CAAC,EAAEgyC,EAAE,kBAAkBhyC,EAAEwB,EAAE,EAAE,GAAGxB,GAAGgyC,EAAE,gBAAgB53B,EAAE,CAAC,UAAUpa,EAAE,KAAKwB,CAAC,CAAC,EAAEwwC,EAAE,CAAG,EAACE,EAAE,KAAK,oBAAqB,SAASlyC,EAAE,CAAC,IAAIwB,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAKyE,EAAE,UAAU,OAAO,EAAE,UAAU,CAAC,EAAE,OAAOrS,EAAE,SAASoM,GAAE,CAAC,IAAIwB,GAAE,SAAS,cAAc,KAAK,EAAE,OAAOA,GAAE,UAAUxB,GAAEwB,GAAE,UAAU,EAAExB,CAAC,EAAE,GAAGpM,EAAE,OAAO,EAAE,QAAQ+gB,EAAE,EAAEA,EAAE/gB,EAAE,OAAO+gB,IAAI,CAAC,IAAI5gB,EAAEH,EAAE+gB,CAAC,EAAE1c,GAAElE,EAAE,UAAUA,GAAOA,EAAE,WAAN,GAAgBA,EAAE,UAAU,GAAGi+C,EAAE,gBAAgB9Z,EAAE,CAAC,KAAKnkC,EAAE,WAAWyN,CAAC,CAAC,EAAEyE,EAAE+rC,EAAE,YAAY/5C,GAAElE,CAAC,EAAEi+C,EAAE,WAAW/5C,GAAElE,CAAC,GAAGA,EAAE,cAAckS,EAAE+rC,EAAE,YAAYj+C,EAAE,YAAYyN,CAAC,EAAEwwC,EAAE,WAAWj+C,EAAE,YAAYyN,CAAC,EAAE,CAAC,OAAOwwC,CAAC,CAAC,EAAGE,EAAE,KAAK,YAAa,UAAU,CAAC,IAAIlyC,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,UAAU,OAAOgyC,EAAE,gBAAgBH,EAAE,CAAC,MAAM7xC,CAAC,CAAC,EAAEgyC,CAAC,CAAG,EAACE,EAAE,KAAK,oBAAqB,SAASlyC,EAAE,CAAC,GAAG,CAACA,EAAE,MAAM,IAAI,MAAM,+BAA+B,EAAE,OAAOgyC,EAAE,gBAAgBD,EAAE,CAAC,MAAM/xC,CAAC,CAAC,EAAEgyC,CAAC,CAAG,EAACE,EAAE,KAAK,cAAe,SAASlyC,EAAE,CAAC,GAAG,CAACA,EAAE,MAAM,IAAI,MAAM,wBAAwB,EAAE,OAAOgyC,EAAE,gBAAgBv/C,EAAE,CAAC,MAAMuN,CAAC,CAAC,EAAEgyC,CAAC,GAAIE,EAAE,KAAK,eAAgB,SAASlyC,EAAE,CAAC,GAAG,CAACA,EAAE,MAAM,IAAI,MAAM,yBAAyB,EAAE,OAAOgyC,EAAE,gBAAgBniB,EAAE,CAAC,OAAO7vB,CAAC,CAAC,EAAEgyC,CAAC,CAAG,EAACE,EAAE,KAAK,cAAe,SAASlyC,EAAE,CAAC,GAAG,CAACA,EAAE,MAAM,IAAI,MAAM,6CAA6C,EAAE,QAAQwB,EAAE,EAAEA,EAAExB,EAAEwB,IAAIwwC,EAAE,gBAAgBniD,CAAC,EAAE,OAAOmiD,CAAC,CAAG,EAACE,EAAE,KAAK,eAAgB,SAASlyC,EAAEwB,EAAE,CAAC,GAAG,CAACxB,GAAe,OAAOA,GAAnB,WAAqB,MAAM,IAAI,MAAM,6BAA6B,EAAE,OAAOgyC,EAAE,gBAAgBh9C,EAAE,CAAC,GAAGgL,EAAE,QAAQwB,CAAC,CAAC,EAAEwwC,CAAC,CAAG,EAACE,EAAE,KAAK,iBAAkB,SAASlyC,EAAE,CAAC,IAAIwB,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,OAAsB,UAAU,CAAC,EAAE,KAAK,GAAG,CAACxB,GAAG,CAAC,MAAM,QAAQA,CAAC,EAAE,MAAM,IAAI,MAAM,6BAA6B,EAAE,OAAOA,EAAE,QAAS,SAASA,EAAE,CAACgyC,EAAE,gBAAgB/5C,EAAE,CAAC,UAAU+H,EAAE,KAAKwB,CAAC,CAAC,CAAC,CAAC,EAAGwwC,CAAC,CAAC,EAAGE,EAAE,KAAK,mBAAoB,SAASlyC,EAAE,CAAC,GAAG,CAACA,GAAG,CAAC,MAAM,QAAQA,CAAC,EAAE,MAAM,IAAI,MAAM,6BAA6B,EAAE,OAAOA,EAAE,QAAS,UAAU,CAACgyC,EAAE,gBAAgBniD,CAAC,CAAC,GAAImiD,CAAC,CAAC,EAAGE,EAAE,KAAK,kBAAmB,SAASlyC,EAAEwB,EAAE,CAAC,IAAIyE,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,QAAuB,UAAU,CAAC,EAAE,OAAO+rC,EAAE,wBAAwBhyC,EAAEwB,EAAEyE,EAAE,YAAY,CAAC,CAAG,EAACisC,EAAE,KAAK,wBAAyB,SAASlyC,EAAEwB,EAAE,CAAC,IAAIyE,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,QAAuB,UAAU,CAAC,EAAE,OAAO+rC,EAAE,QAAQ,KAAKA,EAAE,wBAAwBhyC,EAAEwB,EAAEyE,EAAE,qBAAqB,EAAE+rC,CAAC,CAAC,EAAGE,EAAE,KAAK,0BAA2B,SAASlyC,EAAEwB,EAAE,CAAC,IAAIyE,EAAE,UAAU,OAAO,GAAY,UAAU,CAAC,IAApB,QAAuB,UAAU,CAAC,EAAErS,EAAE,UAAU,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO+gB,EAAE,CAAC,UAAU3U,EAAE,UAAUwB,GAAG,CAAA,CAAE,EAAE,OAAOwwC,EAAE,MAAMp+C,CAAC,EAAEqS,EAAE,CAAC0O,CAAC,EAAE,OAAO7gB,EAAEk+C,EAAE,MAAMp+C,CAAC,CAAC,CAAC,EAAE,CAAA,EAAG,OAAOE,EAAEk+C,EAAE,MAAMp+C,CAAC,CAAC,EAAE,CAAC+gB,CAAC,CAAC,EAAEq9B,CAAC,CAAC,EAAGE,EAAE,KAAK,eAAgB,UAAU,CAACF,EAAE,MAAM,gBAAgBA,EAAE,MAAM,cAAc,KAAK,IAAG,GAAI,IAAIhyC,EAAE,KAAK,IAAK,EAACiG,EAAEjG,EAAEgyC,EAAE,MAAM,cAAc,GAAG,CAACA,EAAE,MAAM,WAAW,OAAO,CAAC,GAAG,CAACA,EAAE,QAAQ,KAAK,OAAOA,EAAE,MAAM,WAAWl+C,EAAEk+C,EAAE,MAAM,YAAY,EAAEA,EAAE,MAAM,aAAa,CAAE,EAACA,EAAE,QAAQC,EAAE,CAAA,EAAGD,EAAE,MAAM,cAAc,CAAC,CAAC,GAAGA,EAAE,MAAM,UAAUxwC,EAAG,EAACwwC,EAAE,YAAY,EAAE,CAACA,EAAE,MAAM,gBAAgB,CAAC,GAAGA,EAAE,MAAM,WAAW,CAAC,GAAGhyC,EAAEgyC,EAAE,MAAM,WAAW,OAAOA,EAAE,MAAM,WAAW,IAAI,CAAC,IAAIp+C,EAAE+gB,EAAE7gB,EAAEk+C,EAAE,MAAM,UAAU,EAAEn+C,EAAE8gB,EAAE,MAAK,EAAG,GAAG,EAAE1O,IAAIrS,EAAEC,EAAE,YAAY4xC,GAAG5xC,EAAE,YAAYhE,EAAcmiD,EAAE,QAAQ,cAAtB,UAAkCj+C,EAAE,GAAG,EAAE,EAAEi+C,EAAE,QAAQ,YAAwBA,EAAE,QAAQ,QAAtB,UAA4Bj+C,EAAE,IAAI,GAAG,EAAEi+C,EAAE,QAAQ,QAAQ,CAAC,IAAIG,EAAEt+C,EAAE,UAAUu+C,GAAEv+C,EAAE,UAAU,OAAOm+C,EAAE,aAAa,CAAC,aAAan+C,EAAE,MAAMm+C,EAAE,MAAM,MAAMp+C,CAAC,CAAC,EAAEu+C,EAAG,CAAA,KAAK/3B,EAAE,KAAKniB,EAAE,IAAIi6C,GAAEE,GAAE,UAAUC,GAAED,GAAE,KAAKN,GAAE,SAAS,eAAeI,EAAC,EAAEv+C,GAAEm+C,GAAEE,EAAE,QAAQ,kBAA8B,OAAOA,EAAE,QAAQ,kBAA7B,aAAgDr+C,GAAEq+C,EAAE,QAAQ,iBAAiBE,GAAEJ,EAAC,GAAGn+C,KAAI0+C,GAAEA,GAAE,YAAY1+C,EAAC,EAAEq+C,EAAE,MAAM,SAAS,QAAQ,YAAYr+C,EAAC,GAAGq+C,EAAE,MAAM,aAAa,CAAA,EAAG,OAAOl+C,EAAEk+C,EAAE,MAAM,YAAY,EAAE,CAAC,CAAC,KAAK,YAAY,UAAUE,GAAE,KAAKv+C,EAAC,CAAC,CAAC,EAAE,MAAM,KAAK9D,EAAE8kB,EAAE,QAAQ,CAAC,UAAU8wB,EAAE,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAKhkC,EAAE,IAAI6wC,GAAEz+C,EAAE,UAAU,GAAGm+C,EAAE,MAAM,WAAW,KAAK,IAAK,EAAC,SAASM,EAAC,EAAE,MAAM,KAAKt9C,EAAE,IAAIu9C,GAAE1+C,EAAE,UAAU2+C,GAAED,GAAE,GAAGE,GAAEF,GAAE,QAAQC,GAAE,KAAKC,GAAE,CAAC,SAAST,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,KAAK9Z,EAAE,IAAIrrC,GAAEgH,EAAE,UAAU6+C,GAAE7lD,GAAE,KAAKuL,GAAEvL,GAAE,WAAWuL,GAAEA,GAAE,YAAYs6C,EAAC,EAAEV,EAAE,MAAM,SAAS,QAAQ,YAAYU,EAAC,EAAEV,EAAE,MAAM,aAAa,CAAA,EAAG,OAAOl+C,EAAEk+C,EAAE,MAAM,YAAY,EAAE,CAAC,CAAC,KAAKpkB,EAAE,KAAK8kB,GAAE,WAAWt6C,IAAG45C,EAAE,MAAM,SAAS,OAAO,CAAC,CAAC,EAAE,MAAM,KAAKH,EAAE,IAAIc,GAAEX,EAAE,MAAM,aAAaxjD,GAAE4jD,GAAE,MAAMQ,GAAE,CAAA,EAAGpkD,IAAGokD,GAAE,KAAK,CAAC,UAAUb,EAAE,UAAU,CAAC,MAAMvjD,GAAE,KAAK,EAAE,CAAC,CAAC,EAAE,QAAQqkD,GAAE,EAAEC,GAAEH,GAAE,OAAOE,GAAEC,GAAED,KAAID,GAAE,KAAK,CAAC,UAAUnN,EAAE,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAEj3C,IAAGokD,GAAE,KAAK,CAAC,UAAUb,EAAE,UAAU,CAAC,MAAMC,EAAE,QAAQ,YAAY,KAAK,EAAE,CAAC,CAAC,EAAEr9B,EAAE,QAAQ,MAAMA,EAAEi+B,EAAC,EAAE,MAAM,KAAKnN,EAAE,IAAIsN,GAAEl/C,EAAE,UAAU,sBAAsB,GAAGm+C,EAAE,MAAM,aAAa,OAAO,CAAC,IAAIgB,GAAEhB,EAAE,MAAM,aAAa,IAAG,EAAG9F,GAAE8G,GAAE,KAAKC,GAAED,GAAE,KAAKE,GAAEF,GAAE,UAAUhB,EAAE,QAAQ,cAA0B,OAAOA,EAAE,QAAQ,cAA7B,YAA2CA,EAAE,QAAQ,aAAa,CAAC,KAAKiB,GAAE,UAAUC,EAAC,CAAC,EAAED,IAAGA,GAAE,WAAW,YAAYA,EAAC,EAAE/G,KAAIte,GAAGmlB,IAAGp+B,EAAE,QAAQ,CAAC,UAAU8wB,EAAE,UAAU,CAAA,CAAE,CAAC,CAAC,CAAC,MAAM,KAAKsM,EAAEC,EAAE,QAAQ,YAAYn+C,EAAE,UAAU,MAAM,MAAM,KAAKpB,EAAEu/C,EAAE,QAAQ,MAAMn+C,EAAE,UAAU,MAAM,MAAM,KAAKg8B,EAAEmiB,EAAE,QAAQ,OAAOn+C,EAAE,UAAU,OAAOm+C,EAAE,MAAM,SAAS,OAAO,UAAUn+C,EAAE,UAAU,MAAM,CAACm+C,EAAE,QAAQ,OAAOn+C,EAAE,YAAY4xC,GAAG5xC,EAAE,WAAWA,EAAE,UAAU,OAAOm+C,EAAE,MAAM,aAAa,CAAA,EAAG,OAAOl+C,EAAEk+C,EAAE,MAAM,YAAY,EAAE,CAACn+C,CAAC,CAAC,IAAIm+C,EAAE,MAAM,WAAWr9B,EAAEq9B,EAAE,MAAM,cAAchyC,CAAC,CAAC,CAAC,CAAC,EAAGpM,EAAE,GAAa,OAAOA,GAAjB,SAAmB,CAAC,IAAIu+C,EAAE,SAAS,cAAcv+C,CAAC,EAAE,GAAG,CAACu+C,EAAE,MAAM,IAAI,MAAM,kCAAkC,EAAE,KAAK,MAAM,SAAS,UAAUA,CAAC,MAAM,KAAK,MAAM,SAAS,UAAUv+C,EAAEC,KAAI,KAAK,QAAQo+C,EAAEA,EAAE,CAAE,EAAC,KAAK,OAAO,EAAEp+C,EAAC,GAAG,KAAK,MAAM,eAAeo+C,EAAE,CAAA,EAAG,KAAK,OAAO,EAAE,KAAK,KAAM,CAAA,CAAC,IAAIr+C,EAAEC,EAAE,OAAOD,EAAEqS,GAAGpS,EAAE,CAAC,CAAC,IAAI,OAAO,MAAM,UAAU,CAAC,IAAImM,EAAEwB,GAAE,KAAK,oBAAqB,EAAC,KAAK,gBAAgBquB,EAAE,CAAC,OAAO,KAAK,QAAQ,MAAM,EAAE,EAAE,EAAE,KAAK,gBAAgBgiB,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,OAAO,kCAAkC,KAAK,QAAQ,gBAAgB7xC,EAAE,wRAAwRwB,GAAE,SAAS,cAAc,OAAO,GAAG,YAAY,SAAS,eAAexB,CAAC,CAAC,EAAE,SAAS,KAAK,YAAYwB,EAAC,EAAE,OAAO,iCAAiC,IAAS,KAAK,QAAQ,YAAlB,IAA6B,KAAK,QAAQ,SAAS,KAAK,kBAAmB,EAAC,MAAK,CAAE,CAAC,EAAE,CAAC,IAAI,eAAe,MAAM,SAASxB,EAAE,CAAC,KAAK,QAAQ,SAAS,QAAQ,IAAIA,CAAC,CAAC,CAAC,CAAC,IAAIoyC,EAAEx+C,EAAE,UAAUC,CAAC,EAAE,OAAO,eAAeD,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,EAAEqS,CAAC,GAAG,GAAC,EAAIrS,EAAE,OAAO,GAAC,2CCuBj2Z,MAAMu/C,EAAkB,CAsB7B,YACE/iB,EACAjhC,EAOA,CA5BqC,KAAA,UAAA,KACjB,KAAA,YAAA,GACE,KAAA,cAAA,GACM,KAAA,oBAAA,EAE9B,KAAA,uBAA8D,GAClC,KAAA,iBAAA,GACE,KAAA,mBAAA,GACA,KAAA,oBAAA,GACE,KAAA,qBAAA,GACL,KAAA,iBAAA,GACT,KAAA,QAAA,EACF,KAAA,MAAA,EAKgB,KAAA,WAAA,KAY9B,KAAK,UAAYihC,EACjB,KAAK,oBAAsBA,EACtB,KAAA,eAAiBjhC,EAAO,gBAAkB,CAAA,EAC1C,KAAA,kBAAoB,CAAC,CAACA,EAAO,kBAClC,KAAK,cAAc,EAEd,KAAA,SAAW,CAAC,CAACA,EAAO,SACrB,KAAK,WACF,KAAA,WAAa,KAAK,kBAEpB,KAAA,iBAAmBA,EAAO,mBAAqB,IAAM,CAAA,GACrD,KAAA,eAAiBA,EAAO,iBAAmB,IAAM,CAAA,EACxD,CAEA,eAAgB,CAEd,KAAK,UAAYikD,GAAA,QAAA,EACd,IAAIC,EAAW,EACf,IAAI,KAAK,+BAA+B,KAAK,IAAI,CAAC,EAClD,IAAIC,EAAY,EAChB,IAAIA,EAAY,EAChB,IAAIC,EAAS,EACb,IAAIC,GAAc,CAAE,mBAAoB,EAAK,CAAC,EAC9C,IAAIC,GAAiB,CAAE,mBAAoB,EAAM,CAAA,CACtD,CAEA,gCAAiC,CAC/B,OAAQC,GAAoB,CAC1BC,GAAA,MAAMD,EAAM,OAAW,CAAC39B,EAAMvd,EAAOxD,IAAM,SACzC,MAAM+d,EAAS/d,EACT4+C,EAAW79B,EAAK,KAOlB,GALA69B,IAAa,QACf,KAAK,eAAe,QAAQ,CAAC,CAAE,MAAAC,EAAO,KAAAlmD,KAAW,CAC/C,KAAK,gBAAgBooB,EAAMvd,EAAQua,EAAQ8gC,EAAOlmD,CAAI,CAAA,CACvD,EAEC,EAAC,KAAK,oBAGNimD,IAAa,SAAuB,CAAC79B,EAAK,OACvCA,EAAA,KAAO,CAAE,YAAa,CAAE,GAAI,KAAK,KAAK,OAAO,EAAA,GAClD,KAAK,oBAAsB,KAAK,yBAC9BA,CAAA,EAEF,KAAK,oBAAoB,EAAI,GAG3B69B,IAAa,YAA0B,CAAC79B,EAAK,OAC1CA,EAAA,KAAO,CAAE,YAAa,CAAE,GAAI,KAAK,KAAK,OAAO,EAAK,CAAA,GAGrD69B,IAAa,YAAwB,CACvC,MAAME,EAAe/gC,EAAO,SAAS,CAAC,EAAkB,SACrD,OACGghC,EAAah+B,EAAqB,SAAS,OAC3Ci+B,EAAmB,KAAK,YAAY,OACxC/oB,EAAAlV,EAAK,WAAL,YAAAkV,EAAe,MAAM,QACrByB,EAAA3W,EAAK,WAAL,YAAA2W,EAAe,IAAI,MAAA,EAEjBqnB,EAAYD,EACd,KAAK,qBAAuB,GAClBE,EAAiB,SAAS,GAAG,GAIvC,KAAK,qBAAuB,GAC5B,KAAK,iBAAmB,KAJxB,KAAK,iBAAmBA,EACxB,KAAK,qBAAuB,GAKhC,CAAA,CACD,CAAA,CAEL,CAEA,oBAAoBvhD,EAAY,CAC1BA,GAAK,CAAC,KAAK,mBACb,KAAK,mBAAqB,IAGxB,CAACA,GAAK,KAAK,kBACb,KAAK,uBAAuB,EAG9B,KAAK,iBAAmBA,CAC1B,CAEA,wBAAyB,CACjB,MAAAwhD,EAAS,SAAS,cAAc,KAAK,EACtC,KAAA,UAAW,YAAYA,CAAM,EAClC,KAAK,oBAAsBA,EAC3B,KAAK,YAAc,GAEf,KAAK,mBACF,KAAA,UACL,KAAK,oBAAsB,GAC3B,KAAK,qBAAuB,GAC5B,KAAK,iBAAmB,GAE5B,CAEA,yBAAyBl+B,EAA2B,CAClD,MAAMm+B,EAAYn+B,EACZo+B,EAAYD,EAAU,SAAS,CAAC,EAChCE,EAAeF,EAAU,MAEzBG,EAASF,EAAU,SACtB,IAAKG,GAMG,IALWA,EAA2B,SAE1C,IAAKC,GAAcA,EAAuB,KAAK,EAC/C,KAAK,EAAE,CAES,GACpB,EACA,KAAK,GAAG,EAELr/C,EAAYk/C,EACf,IAAKI,GACAA,IAAc,OAAe,OAC7BA,IAAc,QAAgB,OAC9BA,IAAc,SAAiB,QAE5B,KACR,EACA,KAAK,GAAG,EAEX,MAAO,IAAIH,CAAM;AAAA,GAAOn/C,CAAS;AAAA,CACnC,CAEA,MAAM,gBAAgBu/C,EAAqB,CACrC,GAAA,CAAC,KAAK,UACF,MAAA,IAAI,MAAM,2BAA2B,EAG7C,MAAMC,EAAW,MAAM,KAAK,kBAAkBD,CAAW,EAKzD,GAHA,KAAK,aAAeC,EACpB,KAAK,eAAiBA,EAElB,KAAK,kBAAoB,KAAK,YAAY,OAAS,GAC9C,MAAA,GAET,MAAMtiD,EAAO,MAAM,KAAK,UAAU,QAAQ,KAAK,WAAW,EAE1D,GAAI,KAAK,qBACP,YAAK,qBAAuB,GAErB,GAGH,MAAAuiD,EAAgBviD,EAAK,WAE3B,OAAKuiD,GAIC,MAAA,KAAK,OAAOA,CAAa,EAC1B,KAAA,oBAAsB,KAAK,YAAY,OAErC,IANE,EAOX,CAEA,MAAM,kBAAkBF,EAAqB,CAE3C,GAAI,CADiBA,EAAY,SAAS;AAAA;AAAA,CAAM,EAEvC,OAAAA,EAGT,IAAIC,EAAWD,EACf,KAAM,CAACG,CAAmB,EAAIH,EAAY,MAAM;AAAA;AAAA,CAAM,EAChD,aAAA,KAAK,gBAAgBG,CAAmB,EACnCF,EAAAA,EAAS,QAAQE,EAAqB,EAAE,EAEnD,KAAK,uBAAuB,EAErBF,CACT,CAEA,MAAM,OAAOC,EAAuB,CAC9B,KAAK,qBACP,KAAK,cAAcA,CAAa,EAChC,KAAK,mBAAqB,IAGxB,KAAK,kBACP,KAAK,mBAAmBA,CAAa,EAChC,KAAA,YAAc,KAAK,oBAAsB,KAAK,kBAC1C,KAAK,SACR,MAAA,KAAK,gBAAgBA,CAAa,EAExC,KAAK,cAAcA,CAAa,CAEpC,CAEA,mBAAmBA,EAAuB,CAClC,MAAAE,EAAc,KAAK,qBAAqBF,CAAa,EAC3D,GAAI,CAACE,EACH,OAGI,MAAAzkB,EAAY,KAAK,oBAAqB,WACtC0kB,EAAmB,KAAK,kBAAkB1kB,CAAS,EACzD,KAAK,qBAAqB0kB,CAAgB,EAE1C,MAAMC,EACJF,EAAY,cAAc,OAAO,GAAK,SAAS,cAAc,OAAO,EAChEG,EAAmB,KAAK,kBAAkBF,CAAgB,EAE3D,KAAA,cAAcD,EAAaC,CAAgB,EAC3C,KAAA,kBAAkBC,EAAaC,CAAgB,CACtD,CAEA,gBACEj/B,EACAk/B,EACAliC,EACA8gC,EACAlmD,EACA,CAEM,MAAAyH,EADQ2gB,EAAuC,MAClC,MAAM89B,CAAK,EAC1B,GAAAz+C,EAAM,OAAS,EAAG,CACpB,MAAM8/C,EAAW,KAAK,oBACpB9/C,EACAy+C,EACAlmD,EACAooB,EACAk/B,CAAA,EAEFliC,EAAO,SAAS,OAAOkiC,EAAW,EAAG,GAAGC,CAAQ,CAClD,CACF,CAEA,oBACE9/C,EACAy+C,EACAlmD,EACAooB,EACAk/B,EACA,CACA,OAAO7/C,EACJ,IAAI,CAACjB,EAAMghD,IAAc,SACpB,GAAAtB,EAAM,KAAK1/C,CAAI,EAAG,CACpB,MAAMihD,EAAW,gBAAgBznD,CAAI,IAAIwnD,CAAS,IAAIF,CAAS,IAC7D,KAAK,cAAc,MACrB,KAAIvoB,GAAAzB,EAAAlV,GAAA,YAAAA,EAAM,WAAN,YAAAkV,EAAgB,QAAhB,YAAAyB,EAAuB,MAAO,GAElC,YAAK,uBAAuB0oB,CAAQ,EAAI,CAAE,MAAOjhD,EAAM,KAAAxG,GAEhD,CACL,KAAM,OACN,MAAO,aAAaynD,CAAQ,KAAKjhD,CAAI,SAAA,CAEzC,CAEA,OAAOA,EAAO,CAAE,KAAM,OAAQ,MAAOA,CAAS,EAAA,IAAA,CAC/C,EACA,OAAO,OAAO,CACnB,CAEA,kBAAkBi8B,EAA0C,CAC1D,IAAI0kB,EAAmB1kB,EAAU,cAC/B,WAAW,KAAK,OAAO,EAAA,EAGzB,OAAK0kB,IACgBA,EAAA,SAAS,cAAc,OAAO,EAChCA,EAAA,GAAK,KAAK,KAAK,OAAO,GACvC1kB,EAAU,YAAY0kB,CAAgB,GAGjCA,CACT,CAEA,kBAAkBO,EAAkD,CAC9D,IAAAL,EAAmBK,EAAM,cAAc,OAAO,EAClD,OAAKL,IACgBA,EAAA,SAAS,cAAc,OAAO,EACjDK,EAAM,YAAYL,CAAgB,GAG7BA,CACT,CAEA,cACEH,EACAC,EACA,CACM,MAAAQ,EAAcT,EAAY,cAAc,OAAO,EAEjD,CADmBC,EAAiB,cAAc,OAAO,GACpCQ,GACvBR,EAAiB,YAAYQ,CAAW,CAE5C,CAEA,kBACEP,EACAC,EACA,CACM,MAAAO,EAAOR,EAAY,iBAAiB,IAAI,EACxCS,EAAkB,MAAM,KAC5BR,EAAiB,iBAAiB,IAAI,CACtC,EAAA,IAAKS,GAAQA,EAAI,EAAE,EACjBF,GACGA,EAAA,QAASE,GAAQ,CAChB,CAACA,EAAI,UAAU,KAAA,GAAUD,EAAgB,SAASC,EAAI,EAAE,GAG5DT,EAAiB,YAAYS,EAAI,UAAU,EAAI,CAAC,CAAA,CACjD,CAEL,CAEA,qBAAqBC,EAAgC,CACtCA,EAAa,iBAAiB,IAAI,EAC1C,QAASD,GAAQ,CACd,MAAAE,EAAQF,EAAI,iBAAiB,QAAQ,EAC3C,IAAIG,EAAU,GACRD,EAAA,QAASE,GAAS,CAClBA,EAAK,YAAa,KAAK,IAAM,KACrBD,EAAA,GACZ,CACD,EAEGA,GACEH,EAAA,WAAY,YAAYA,CAAG,CACjC,CACD,CACH,CAEA,uBAAwB,CACtB,OAAO,KAAK,sBACd,CAEA,yBAA0B,CACxB,KAAK,uBAAyB,EAChC,CAEA,qBAAqBd,EAAgD,CAC7D,MAAAmB,EAAY,SAAS,cAAc,KAAK,EAC9C,OAAAA,EAAU,UAAYnB,EAEfmB,EAAU,cAAc,WAAW,KAAK,OAAO,EAAE,CAC1D,CAEA,cAAcnB,EAAuB,CAC7B,MAAAoB,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,UAAYpB,EAEXqB,GAAA,KAAK,oBAAsBD,EAAS,CAC3C,kBAAmB,CAACE,EAAQC,IACtBD,EAAO,UAAU,SAAS,qBAAqB,GACjDC,EAAK,UAAYD,EAAO,UAEjB,IAGF,EACT,CACD,CACH,CAEA,gBAAiB,CACR,OAAA,IAAIE,GAAW,KAAK,UAA0B,CACnD,KAAM,GACN,MAAO,EACP,OAAQ,EAAA,CACT,CACH,CACA,MAAM,gBAAgBxB,EAAuB,CACrC,MAAAyB,EAAa,KAAK,cAAczB,CAAa,EAC7C,MAAA,IAAI,QAAeruB,GAAY,CACnC,KAAK,iBAAiB,EACtB,KAAK,WAAY,WAAW8vB,CAAU,EACnC,aAAa,IAAM,CAClB,KAAK,eAAe,EACZ9vB,GAAA,CACT,EACA,MAAM,CAAA,CACV,CACH,CAEA,cAAcquB,EAA+B,CACrC,MAAAoB,EAAU,SAAS,cAAc,KAAK,EAC5C,OAAAA,EAAQ,UAAYpB,GACAoB,EAAQ,aAAe,IAExB,MAAM,KAAK,mBAAmB,CACnD,CACF,CCvbe,MAAAM,GAAAxqD,EAAI,OAAO,CACxB,KAAM,YACN,MAAO,CACL,WAAY,CACV,KAAM,CAAC,MAAO,MAAM,EACpB,QAAS,IAAM,CAAC,CAClB,EACA,eAAgB,CACd,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,kBAAmB,CACjB,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,aAAc,GACd,UAAW,IAAA,CAEf,EACA,MAAO,CACL,WAAWyqD,EAAqB,CAC9B,KAAK,eAAeA,EAAU,KAAK,EAAE,CAAC,CACxC,CACF,EACA,SAAU,CACR,KAAK,cAAc,EACnB,KAAK,qBAAqB,CAC5B,EACA,QAAS,CACP,eAAgB,CACR,MAAAC,EAAa,KAAK,MAAM,QACzB,KAAA,UAAY,IAAIpD,GAAkBoD,EAAa,CAClD,eAAgB,KAAK,eACrB,SAAU,KAAK,SACf,iBAAkB,IAAM,KAAK,MAAM,iBAAiB,EACpD,eAAgB,IAAM,KAAK,MAAM,eAAe,EAChD,kBAAmB,KAAK,iBAAA,CACzB,CACH,EACA,MAAM,aAAaC,EAAkB,OACxB,OAAMvrB,EAAA,KAAK,YAAL,YAAAA,EAAgB,gBAAgBurB,KAMjD,KAAK,yBAAyB,CAChC,EACA,MAAM,eAAeA,EAAkB,CAC/B,MAAA,KAAK,aAAaA,CAAQ,CAClC,EACA,MAAM,sBAAuB,CACrB,MAAAC,EAAS,MAAM,QAAQ,KAAK,UAAU,EACxC,KAAK,WACL,CAAC,KAAK,UAAU,EACpB,UAAWC,KAASD,EACZ,MAAA,KAAK,eAAeC,CAAK,CAEnC,EACA,0BAA2B,SACnB,MAAAC,GAAU1rB,EAAA,KAAK,YAAL,YAAAA,EAAgB,wBAIzB,OAAA,QAAQ0rB,CAAO,EAAE,QAAQ,CAAC,CAAC/gC,EAAI,CAAE,MAAA3hB,EAAO,KAAAtG,CAAK,CAAC,IAAM,CACpD,KAAA,iBAAiB,CAAE,GAAAioB,EAAI,KAAAjoB,EAAM,UAAW,CAAE,MAAAsG,GAAS,CAAA,CACzD,GACDy4B,EAAA,KAAK,YAAL,MAAAA,EAAgB,yBAClB,EACA,iBAAiB,CACf,GAAA9W,EACA,KAAAjoB,EACA,UAAAipD,CAAA,EAKC,CACK,MAAAC,EAAgB,SAAS,eAAejhC,CAAE,EAChD,GAAI,CAACihC,EACH,OAGF,MAAMC,EAAa,KAAK,aAAa,kBAAkBnpD,CAAI,EAAE,EAC7D,GAAI,CAACmpD,EACH,OAGI,MAAAC,EAAsBlrD,EAAI,OAAO,CACrC,WAAY,GACZ,MAAO,CAAC,aAAc,WAAW,EACjC,OAAQ,CAACgkC,EAAG7B,IAAQA,EAAI,MAAM,WAAWA,EAAI,MAAM,SAAS,CAAA,CAC7D,EAEKgpB,EAAK,IAAInrD,EAAI,CACjB,OAASgkC,GACPA,EAAEknB,EAAqB,CAAE,MAAO,CAAE,WAAAD,EAAY,UAAAF,CAAU,EAAG,CAAA,CAC9D,EAAE,OAAO,EAEV,OAAAC,EAAc,UAAY,GACZA,EAAA,YAAYG,EAAG,GAAG,EAEzBA,CACT,CACF,CACF,CAAC,wYCrHcC,GAAAprD,EAAI,OAAO,CACxB,KAAM,sBACN,WAAY,CAAE,cAAA8iD,EAAc,EAC5B,OAAQ,CAACpJ,GAAgBF,EAAQ,EACjC,MAAO,CACL,KAAM,CACJ,KAAM,CAAC,SAAU,OAAQ,MAAM,EAC/B,SAAU,EACZ,EACA,WAAY,CACV,KAAM,OACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,CAAC,OAAQ,OAAQ,KAAK,EAC5B,QAAS,IACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,MACX,EACA,SAAU,CACR,KAAM,OACN,QAAS,aACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,QAAS,GACT,YAAa,KAAK,aAAe,mBAAA,CAErC,EACA,SAAU,CACR,mBAA6C,CACpC,MAAA,CACL,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,gBAAiB,KAAK,KACtB,gBAAiB,CAAC,KAAK,KACvB,yCAA0C,EAAA,CAE9C,CACF,EACA,MAAO,CACL,YAAY7kC,EAAK,CACXA,IAAQ,KAAK,aACf,KAAK,YAAY,IAAM,CACrB,KAAK,YAAc,KAAK,aACvB,GAAI,CAEX,CACF,EACA,SAAU,CACH,KAAA,kBACH,UACA,KAAK,cACL,KAAK,MAAM,eAAA,CAEf,EACA,QAAS,CACP,cAAcR,EAAU,CACtBA,EAAE,gBAAgB,CACpB,EACA,QAAQk3C,EAAkBC,EAAe,CACvC,OAAI,OAAO,UAAU,eAAe,KAAK,KAAK,OAAQD,CAAQ,EACrD,KAAK,OAAOA,CAAQ,EAEpBC,CAEX,EAEA,qBAAsB,CAChB,GAAA,CACF,KAAK,QAAU,GACX,IAAAjZ,EACA,OAAO,KAAK,MAAS,WACvBA,EAAO,KAAK,OAEZA,EAAO,KAAK,KAER,MAAAkZ,EAAkB,KAAK,MAC1B,gBACHA,EAAgB,MAAQlZ,EACxBkZ,EAAgB,MAAM,EACtBA,EAAgB,OAAO,EAEvB,SAAS,YAAY,MAAM,EAC3B,KAAK,YAAc,UACnB,KAAK,MAAM,QAAQ,QACZ7jB,EAAO,CACN,QAAA,MAAM,mCAAoCA,CAAK,CAAA,QACvD,CACA,KAAK,QAAU,EACjB,CACF,CACF,CACF,CAAC,mcCtGc8jB,GAAAxrD,EAAI,OAAO,CACxB,KAAM,UACN,WAAY,CACV,gBAAAkjD,EACF,EACA,OAAQ,CAACxJ,EAAc,EACvB,MAAO,CACL,MAAO,CACL,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,QAAS,CACP,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,MAAO,CACL,KAAM,OACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,GACX,EACA,OAAQ,CACN,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACX,EACA,gBAAiB,CACf,KAAM,QACN,QAAS,EACX,CACF,EAEA,SAAU,CACR,QAAS,CACP,KAAe,CACb,OAAO,KAAK,KACd,EACA,IAAI/kC,EAAW,CACR,KAAA,MAAM,QAASA,CAAG,CACzB,CACF,EACA,cAAyB,CAChB,MAAA,CACL,4HACA,KAAK,KAAO,gBAAkB,YAAA,CAElC,EACA,wBAAmC,CAC1B,MAAA,CACL,mBACA,KAAK,KACD,+BACA,8BACJ,sBAAA,CAEJ,EACA,sBAAiC,CACxB,MAAA,CACL,wBACA,KAAK,KACD,+BACA,6BAAA,CAER,EACA,wBAAmC,CAC1B,MAAA,CACL,mBACA,KAAK,KAAO,gBAAkB,eAC9B,0DAAA,CAEJ,EACA,aAA6B,CACrB,MAAAqtB,EACJ,OAAO,KAAK,OAAU,SAAW,GAAG,KAAK,KAAK,KAAO,KAAK,MACtDC,EACJ,OAAO,KAAK,QAAW,SAAW,GAAG,KAAK,MAAM,KAAO,KAAK,OAEvD,MAAA,CACL,SAAUD,EACV,UAAWC,EACX,MAAAD,EACA,OAAAC,CAAA,CAEJ,CACF,EACA,MAAO,CACL,QAAQttB,EAAK,CACPA,EACF,KAAK,WAAW,EAEhB,KAAK,YAAY,CAErB,CACF,EACA,SAAU,CACJ,KAAK,SACP,KAAK,WAAW,EAEb,KAAA,kBAAkB,UAAW,KAAK,aAAa,CACtD,EACA,QAAS,CACP,YAAa,CACX,KAAK,UAAU,IAAM,CACb,MAAA82C,EAAS,KAAK,MAAM,OACtBA,GAAU,CAACA,EAAO,MACpBA,EAAO,UAAU,CACnB,CACD,CACH,EACA,aAAc,CACN,MAAAA,EAAS,KAAK,MAAM,OACtBA,GAAA,MAAAA,EAAQ,MACVA,EAAO,MAAM,CAEjB,EACA,oBAAoBlkB,EAAmB,CACjC,CAAC,KAAK,YAAcA,EAAM,SAAWA,EAAM,gBAC7C,KAAK,QAAU,GAEnB,EACA,SAAU,CACH,KAAK,aACR,KAAK,QAAU,GAEnB,EACA,iBAAiBl/B,EAA4B,CACrC,MAAAqjD,EAAiB,KAAK,KACxB,oGACA,gGACEzrD,EAAe,CACnB,CAACX,GAAU,OAAO,EAAG,0CACrB,CAACA,GAAU,KAAK,EAAG,wCACnB,CAACA,GAAU,IAAI,EAAG,uCAClB,CAACA,GAAU,OAAO,EAAG,0CACrB,CAACA,GAAU,OAAO,EAAG,0CACrB,CAACA,GAAU,KAAK,EAAG,4CACnB,CAACA,GAAU,OAAO,EAAGosD,EACrB,CAACpsD,GAAU,IAAI,EACb,gEAAA,EAGG,MAAA,CACL,qKACAW,EAAaoI,CAAK,GAAKpI,EAAaX,GAAU,OAAO,CAAA,CAEzD,EACA,cAAcqsD,EAAsB,CAC9BA,EAAO,eACT,KAAK,QAAU,IAEjB,KAAK,MAAM,iBAAkBA,EAAO,IAAMA,EAAO,KAAK,CACxD,EACA,cAAcpkB,EAAsB,CAC5BA,EAAM,MAAQ,WAGhB,KAAK,YAAc,CAAC,KAAK,gBAC3BA,EAAM,eAAe,EAErB,KAAK,QAAU,GAEnB,CACF,CACF,CAAC,y8BC3KcqkB,GAAA5rD,EAAI,OAAO,CACxB,KAAM,kBACN,WAAY,CAAE,QAAA6rD,GAAS,cAAA/I,EAAc,EACrC,OAAQ,CAACpJ,GAAgBF,EAAQ,EACjC,MAAO,CACL,WAAY,CACV,KAAM,OACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,CAAC,OAAQ,OAAQ,KAAK,EAC5B,QAAS,IACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,iBACX,EACA,SAAU,CACR,KAAM,OACN,QAAS,kBACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,MACN,QAAS,IAAM,CACb,CAAE,MAAO,SAAU,MAAO,UAAW,aAAc,EAAK,EACxD,CAAE,MAAO,SAAU,MAAO,SAAU,CACtC,CACF,EACA,YAAa,CACX,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,OACX,CACF,EACA,MAAO,CACE,MAAA,CACL,YAAa,KAAK,aAAe,kBACjC,WAAY,GACZ,aAAc,EAAA,CAElB,EACA,SAAU,CACR,gBAA0C,CACjC,MAAA,CACL,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,gBAAiB,KAAK,KACtB,gBAAiB,CAAC,KAAK,KACvB,6BAA8B,EAAA,CAElC,EACA,iBAA2C,CAClC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,KACpB,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,4BAA6B,CAAC,KAAK,KACnC,2BAA4B,KAAK,IAAA,CAErC,EACA,0BAAoD,CAC3C,MAAA,CACL,oBAAqB,KAAK,KAC1B,oBAAqB,CAAC,KAAK,IAAA,CAE/B,CACF,EACA,MAAO,CACL,YAAY7kC,EAAK,CACXA,IAAQ,KAAK,aACf,KAAK,YAAY,IAAM,CACrB,KAAK,YAAc,KAAK,aACvB,GAAI,CAEX,CACF,EACA,QAAS,CACP,QAAQnU,EAAiB,CACnB,KAAK,SACP,KAAK,WAAa,GAElB,KAAK,eAAeA,CAAK,CAE7B,EACA,eAAeA,EAAgB,CAC7B,GAAIA,IAAU,SAAU,CACtB,KAAK,WAAa,GAElB,MACF,CACA,KAAK,WAAa,GACb,KAAA,MAAM,SAAU,KAAK,YAAY,EACtC,KAAK,YAAc,YACrB,CACF,CACF,CAAC,y4CCxGcsrD,GAAA9rD,EAAI,OAAO,CACxB,KAAM,sBACN,WAAY,CACV,gBAAA+rD,GACA,oBAAAC,GACA,cAAAlJ,EACF,EACA,MAAO,CACL,QAAS,CACP,KAAM,CAAC,OAAQ,KAAK,EACpB,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,qBAAsB,CACpB,KAAM,QACN,QAAS,EACX,EACA,oBAAqB,CACnB,KAAM,QACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,IACX,CACF,EACA,MAAO,CACE,MAAA,CACL,aAAAhjD,GACA,mBAAoB,EAAA,CAExB,EACA,SAAU,CACR,aAAsB,CAGb,OAFQ,MAAM,QAAQ,KAAK,OAAO,EAAI,KAAK,QAAU,CAAC,KAAK,OAAO,GAE3D,KAAK,EAAE,CACvB,EACA,gBAA0C,CACjC,MAAA,CACL,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,gBAAiB,KAAK,KACtB,gBAAiB,CAAC,KAAK,KACvB,6BAA8B,EAAA,CAElC,CACF,EACA,QAAS,CACP,eAAegC,EAAoBuwC,EAAe,CAChD,KAAK,MAAM,WAAY,CAAE,KAAAvwC,EAAM,KAAAuwC,CAAM,CAAA,CACvC,EACA,oBAAqB,CACnB,KAAK,mBAAqB,EAC5B,CACF,CACF,CAAC,o0CCrDc4Z,GAAAjsD,EAAI,OAAO,CACxB,KAAM,eACN,WAAY,CACV,gBAAAkjD,GACA,QAAAoC,GACA,oBAAA4G,GACA,aAAA1G,GACA,cAAA2G,GACA,UAAAC,EACF,EACA,OAAQ,CAAC5S,EAAQ,EACjB,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS55C,GAAgB,IAC3B,EACA,SAAU,CACR,KAAM,OACN,QAAS,IACX,EACA,QAAS,CACP,KAAM,CAAC,OAAQ,MAAO,MAAM,EAG5B,QAAS,EACX,EACA,UAAW,CACT,KAAM,QACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,OACN,QAAS,IACX,EACA,KAAM,CACJ,KAAM,OACN,QAASC,GAAgB,IAC3B,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,qBAAsB,CACpB,KAAM,QACN,QAAS,EACX,EACA,oBAAqB,CACnB,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,CACF,EACA,MAAO,CACE,MAAA,CACL,YAAa,GACb,WAAY,CAAC,CAAA,CAEjB,EACA,SAAU,CACR,WAAqB,CACnB,OACE,KAAK,OAASD,GAAgB,SAC9B,KAAK,OAASA,GAAgB,MAElC,EACA,oBAA8C,CACrC,MAAA,CACL,gCAAiC,CAAC,KAAK,KACvC,6BAA8B,KAAK,IAAA,CAEvC,EACA,aAAuC,CAC9B,MAAA,CACL,4BAA6B,KAAK,IAAA,CAEtC,EACA,UAAmB,CACV,OAAA,KAAK,KAAO,UAAY,SACjC,EACA,qBAA2C,CACzC,OAAO,OAAO,KAAK,KAAK,YAAY,EACjC,OAAQ0B,GAASA,EAAK,WAAW,WAAW,CAAC,EAC7C,OAAO,CAACk0C,EAAOl0C,KACdk0C,EAAMl0C,CAAI,EAAI,KAAK,aAAaA,CAAI,EAE7Bk0C,GACN,CAAE,CAAA,CACT,CACF,EACA,MAAO,CACL,QAAS,CACP,UAAW,GACX,QAAQiV,EAAqB4B,EAAqB,CAC3C5B,EAAU,SAIV4B,GAAA,MAAAA,EAAW,OAGd,KAAK,WAAa5B,EAAU,MAAM4B,EAAU,MAAM,EAFlD,KAAK,WAAa5B,EAItB,CACF,CACF,EACA,QAAS,CACP,aAAc,CACZ,KAAK,YAAc,EACrB,EACA,aAAat2C,EAAe,CAExB,CAAC,KAAM,SAAS,eAAe,EAAE,SAC/BA,EAAE,aAAA,IAKN,KAAK,YAAc,GACrB,EACA,WAAWm4C,EAAoB,CACxB,KAAA,MAAM,WAAYA,CAAQ,EAC/B,KAAK,YAAY,IAAM,CACrB,KAAK,YAAc,IAClB,GAAI,CACT,CACF,CACF,CAAC,yiFCtKcC,GAAAvsD,EAAI,OAAO,CACxB,KAAM,cACN,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,mBAA6C,CAC3C,OAAI,KAAK,OACA,GAGF,CACL,gBAAiB,KAAK,KACtB,eAAgB,CAAC,KAAK,IAAA,CAE1B,EACA,eAAyC,CAChC,MAAA,CACL,GAAG,KAAK,iBAAA,CAEZ,CACF,CACF,CAAC,8OC7BcwsD,GAAAxsD,EAAI,OAAO,CACxB,KAAM,6BACN,MAAO,CACL,YAAa,CACX,KAAM,QACN,SAAU,EACZ,EACA,SAAU,CACR,KAAM,OACN,SAAU,EACZ,CACF,EACA,MAAO,CACE,MAAA,CACL,OAAQ,EACR,iBAAkB,CAAA,CAEtB,EACA,MAAO,CACL,YAAa,CACX,UAAW,GACX,QAAQ0lD,EAAQ,CACVA,EACF,KAAK,sBAAsB,EAE3B,KAAK,qBAAqB,CAE9B,CACF,CACF,EACA,eAAgB,CACd,KAAK,qBAAqB,CAC5B,EACA,QAAS,CACP,uBAAwB,CACjB,KAAK,UAIV,KAAK,aAAa,CACpB,EACA,cAAe,CACT,GAAA,CAAC,KAAK,SACR,OAEF,MAAM+G,EAAY,IAAI,WAAW,KAAK,SAAS,iBAAiB,EAC3D,KAAA,SAAU,qBAAqBA,CAAS,EAE7C,IAAIC,EAAM,EACV,UAAWC,KAAaF,EACtBC,GAAOC,GAAa,KAEtB,KAAK,OAAS,KAAK,KAAKD,EAAMD,EAAU,MAAM,EAAI,IAC7C,KAAA,iBAAmB,sBAAsB,KAAK,YAAY,CACjE,EACA,sBAAuB,CACjB,KAAK,kBACP,qBAAqB,KAAK,gBAAgB,CAE9C,CACF,CACF,CAAC,kiBChDcG,GAAA5sD,EAAI,OAAO,CACxB,KAAM,cACN,WAAY,CACV,2BAAA6sD,GACA,MAAAnU,EACF,EACA,OAAQ,CAACgB,EAAc,EACvB,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,EACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,OACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,IACX,CACF,EACA,MAAO,CACE,MAAA,CACL,YAAa,KACb,YAAa,GACb,kBAAmB,GACnB,gBAAiB,GACjB,SAAU,KACV,aAAc,KACd,YAAa,KACb,kBAAmB,KACnB,aAAc,IAAA,CAElB,EACA,SAAU,CACR,mBAA4B,CACnB,OAAA,KAAK,gBAAkB,KAAK,iBACrC,EACA,eAAyC,CAChC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,KACpB,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,eAAgB,KAAK,QAAA,CAEzB,CACF,EACA,MAAO,CACL,kBAAkBoT,EAA6B,CACxC,KAAA,MAAM,QAASA,CAAa,CACnC,CACF,EACA,SAAU,CACR,KAAK,sBAAsB,EACtB,KAAA,kBAAkB,UAAW,KAAK,aAAa,CACtD,EACA,eAAgB,CACd,KAAK,cAAc,CACrB,EACA,QAAS,CACP,uBAA8B,CACtB,MAAAC,EACH,OAAe,mBACf,OAAe,wBAClB,GAAI,CAACA,EAAmB,CACtB,QAAQ,MAAM,sDAAsD,EAEpE,MACF,CAcI,GAZC,KAAA,YAAc,IAAIA,EACvB,KAAK,YAAY,WAAa,GAC9B,KAAK,YAAY,eAAiB,GAClC,KAAK,YAAY,KAAO,QACxB,KAAK,YAAY,mBAAqB,IACjC,KAAA,YAAY,SAAW,KAAK,aAC5B,KAAA,YAAY,QAAU,KAAK,YAC3B,KAAA,YAAY,MAAQ,KAAK,UACzB,KAAA,YAAY,YAAc,KAAK,gBAEpC,KAAK,aAAe,IAAM,OAAe,cACtC,OAAe,oBACd,CAAC,KAAK,aAAc,CACtB,QAAQ,MAAM,iDAAiD,EAE/D,MACF,CACK,KAAA,SAAW,KAAK,aAAa,eAAe,EACjD,KAAK,SAAS,QAAU,GAC1B,EACA,MAAM,iBAAkB,CACjB,KAAK,cAGN,KAAK,YACP,KAAK,cAAc,EAEnB,MAAM,KAAK,cAEf,EACA,MAAM,aAAc,CACd,GAAA,CACF,KAAK,YAAc,MAAM,UAAU,aAAa,aAAa,CAC3D,MAAO,EAAA,CACR,EAEG,KAAK,aAAc,QAAU,WACzB,MAAA,KAAK,aAAc,SAGtB,KAAA,kBAAoB,KAAK,aAAc,wBAC1C,KAAK,WAAA,EAEF,KAAA,kBAAkB,QAAQ,KAAK,QAAS,EAC7C,KAAK,gBAAkB,GACvB,KAAK,kBAAoB,GACzB,KAAK,YAAY,QACjB,KAAK,YAAc,SACZrlB,EAAO,CACN,QAAA,MAAM,8BAA+BA,CAAK,CACpD,CACF,EACA,eAAgB,CACd,KAAK,YAAc,GACnB,KAAK,YAAY,OACb,KAAK,eACP,aAAa,KAAK,YAAY,EAC9B,KAAK,aAAe,MAEtB,KAAK,iBAAiB,CACxB,EACA,kBAAmB,OACb,KAAK,cACF,KAAA,YAAY,YAAY,QAASslB,GAAUA,EAAM,MAAM,GAC5D5tB,EAAA,KAAK,oBAAL,MAAAA,EAAwB,aACxB,KAAK,YAAc,KACnB,KAAK,kBAAoB,KAE7B,EACA,aAAamI,EAAqC,CAChD,KAAK,kBAAoB,GAChB,QAAAn7B,EAAIm7B,EAAM,YAAan7B,EAAIm7B,EAAM,QAAQ,OAAQ,EAAEn7B,EAAG,CACvD,MAAAjC,EAASo9B,EAAM,QAAQn7B,CAAC,EAC1BjC,EAAO,QACT,KAAK,iBAAmBA,EAAO,CAAC,EAAE,WAAa,IAE1C,KAAA,mBAAqBA,EAAO,CAAC,EAAE,UAExC,CACI,KAAK,cACP,aAAa,KAAK,YAAY,EAG3B,KAAA,aAAe,WAAW,IAAM,CACnC,KAAK,iBAAiB,CAAA,EACrB,KAAK,cAAc,CACxB,EACA,WAAY,CACV,KAAK,YAAc,EACrB,EACA,iBAAkB,CAChB,KAAK,iBAAiB,CACxB,EACA,kBAAmB,CACb,KAAK,gBAAgB,KAAK,EAAE,OAAS,IACvC,KAAK,MAAM,uBAAwB,KAAK,gBAAgB,MAAM,EAC9D,KAAK,gBAAkB,GACvB,KAAK,kBAAoB,IAE3B,KAAK,cAAc,CACrB,EACA,cAAco9B,EAA4B,CACpCA,EAAM,OAAS,SAAWA,EAAM,UAClCA,EAAM,eAAe,EACrB,KAAK,gBAAgB,EAEzB,EACA,YAAYA,EAAqC,CACvC,QAAA,MAAM,4BAA6BA,GAAA,YAAAA,EAAO,KAAK,EACvD,KAAK,YAAc,EACrB,CACF,CACF,CAAC,osBC1Mc0lB,GAAAjtD,EAAI,OAAO,CACxB,KAAM,aACN,WAAY,CACV,MAAA04C,GAAA,YACAwU,EACF,EACA,MAAO,CACL,KAAM,QACN,MAAO,gBACT,EACA,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,iBACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,IACX,CACF,EACA,MAAO,CACE,MAAA,CACL,QAAS,GACT,UAAW,IACX,eAAgB,EAChB,kBAAmB,GACnB,WAAY,EAAA,CAEhB,EACA,SAAU,CACR,0BAAoD,CAC3C,MAAA,CACL,oBAAqB,KAAK,MAAQ,CAAC,KAAK,SACxC,oBAAqB,CAAC,KAAK,MAAQ,CAAC,KAAK,SACzC,oBAAqB,KAAK,MAAQ,KAAK,SACvC,oBAAqB,CAAC,KAAK,MAAQ,KAAK,SACxC,oCAAqC,KAAK,QAAA,CAE9C,EACA,iBAA2C,CAClC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,KACpB,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,4BAA6B,CAAC,KAAK,KACnC,2BAA4B,KAAK,IAAA,CAErC,EACA,eAAyC,CAChC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,KACpB,kBAAmB,CAAC,KAAK,KACzB,kBAAmB,KAAK,KACxB,eAAgB,KAAK,QAAA,CAEzB,EACA,eAAwC,CAClC,OAAC,KAAK,eAIH,CACL,OAAQ,GAAG,KAAK,IAAI,KAAK,eAAgB,KAAK,SAAS,CAAC,KACxD,UAAW,KAAK,cAAgB,SAAW,QAAA,EALpC,EAOX,EACA,eAAyB,CACvB,MAAO,CAAC,CAAC,KAAK,gBAAkB,KAAK,eAAiB,KAAK,SAC7D,CACF,EACA,SAAU,CACR,KAAK,MAAM,CACb,EACA,QAAS,CACP,OAAQ,CACW,KAAK,MAAM,aACnB,MAAM,CACjB,EACA,eAAgB,CACT,KAAA,MAAM,SAAU,KAAK,OAAO,EACjC,KAAK,QAAU,GACV,KAAA,UAAU,KAAK,oBAAoB,CAC1C,EACA,QAAQ/4C,EAAU,CAChB,MAAM/S,EAAS+S,EAAE,OACXg5C,EAAW,KAAK,UAAY/rD,EAAO,MACzC,KAAK,QAAUA,EAAO,MAEjB+rD,IACH,KAAK,qBAAqB,EACrB,KAAA,MAAM,iBAAkB/rD,EAAO,KAAK,EAE7C,EACA,UAAU+S,EAAkB,CAC1B,GAAI,MAAK,SAIT,IAAI,CAAC,KAAK,mBAAqBA,EAAE,MAAQ,QAAS,CAChDA,EAAE,eAAe,EAEjB,MACF,CAEA,GAAIA,EAAE,MAAQ,SAAWA,EAAE,OAAS,YAAa,CAC/C,KAAK,kBAAoB,GAEzB,MACF,EACF,EACA,QAAQA,EAAkB,CACxB,GAAI,MAAK,SAIT,IAAIA,EAAE,MAAQ,SAAWA,EAAE,OAAS,YAAa,CAC/C,KAAK,kBAAoB,GAEzB,MACF,CAEIA,EAAE,MAAQ,SAAW,CAAC,KAAK,oBAC7BA,EAAE,eAAe,EACjB,KAAK,cAAc,GAEvB,EACA,sBAAuB,CACf,MAAAi5C,EAAW,KAAK,MAAM,aAC5BA,EAAS,MAAM,OAAS,OACxB,KAAK,eAAiBA,EAAS,YACjC,EACA,mBAAmBnrD,EAAiB,CAC7B,KAAA,MAAM,iBAAkBA,CAAO,EAC/B,KAAA,MAAM,SAAUA,CAAO,EAC5B,KAAK,WAAa,EACpB,CACF,CACF,CAAC,ulDCpJcorD,GAAArtD,EAAI,OAAO,CACxB,KAAM,sBACN,WAAY,CACV,MAAA04C,EACF,EACA,MAAO,CACL,KAAM,CACJ,KAAM,OACN,SAAU,EACZ,EACA,KAAM,CACJ,KAAM,OACN,QAAS,IACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,iBACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,IACX,EACA,QAAS,CACP,KAAM,OACN,QAAS,KACX,CACF,EACA,SAAU,CACR,SAAmC,CAC1B,MAAA,CACL,aAAc,KAAK,UAAY,MAC/B,aAAc,KAAK,UAAY,SAC/B,wCAAyC,CAAC,KAAK,KAC/C,sDAAuD,KAAK,IAAA,CAEhE,EACA,QAAiC,CAC3B,OAAC,KAAK,MAIH,CACL,MAAO,GAAG,KAAK,KAAK,IAAA,EAJb,EAMX,CACF,CACF,CAAC,6rBCnCc4U,GAAAttD,EAAI,OAAO,CACxB,WAAY,CACV,gBAAAkjD,GACA,aAAAqK,GACA,YAAAC,GACA,UAAAC,GACA,aAAAC,GACA,YAAAC,GACA,WAAAC,GACA,oBAAAC,EACF,EACA,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,KAAM,CACJ,KAAM,OACN,QAAS,KACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,aAAc,CACZ,KAAM,QACN,QAAS,EACX,EACA,OAAQ,CACN,KAAM,OACN,QAAS,MACX,EACA,MAAO,CACL,KAAM,OACN,QAAS,MACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,kBAAmB,CACjB,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,UAAW,CACT,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,QACN,QAAS,EACX,EACA,WAAY,CACV,KAAM,OACN,QAAS,iBACX,EACA,iBAAkB,CAChB,KAAM,OACN,QAAS,iBACX,EACA,eAAgB,CACd,KAAM,OACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,eAAgB,CACd,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,EACA,eAAgB,CACd,KAAM,OACN,QAAS,KAAO,CAAE,kBAAmB,IACvC,EACA,eAAgB,CACd,KAAM,OACN,QAAS,IACX,CACF,EACA,MAAO,CACE,MAAA,CACL,OAAQ,GACR,gBAAiB,EACjB,aAAc,EACd,WAAY,EACZ,aAAc,CAAA,CAElB,EACA,SAAU,CACR,iBAAkB,CACT,OAAAjuD,EACT,EACA,cAAuB,WAEnB,QAAA+mC,GAAA9F,GAAAzB,EAAA,KAAK,KACF,KAAA,IADH,YAAAA,EAEI,MAAM,SAFV,YAAAyB,EAGI,IAAK13B,GAAM,OAAA,QAAAi2B,EAAAj2B,GAAA,YAAAA,EAAG,OAAO,KAAV,YAAAi2B,EAAc,gBAAiB,OAH9C,YAAAuH,EAII,KAAK,MACT,KAAK,KAAK,CAAC,GACX,EAEJ,EACA,eAAyC,CACnC,OAAC,KAAK,WAIH,CACL,UAAW,GAAG,KAAK,UAAU,KAC7B,OAAQ,GAAG,KAAK,UAAU,IAAA,EALnB,EAOX,EACA,cAAwC,CAC/B,MAAA,CACL,OAAQ,KAAK,QAAU,OACvB,MAAO,KAAK,OAAS,MAAA,CAEzB,EACA,mBAA6C,CAC3C,IAAImnB,EAAY,CAAA,EACZ,KAAK,aACKA,EAAA,CACV,oCAAqC,GACrC,sBAAuB,CAAC,KAAK,KAC7B,sBAAuB,KAAK,IAAA,GAIhC,IAAIC,EAAe,CAAA,EACf,OAAC,KAAK,eACOA,EAAA,CACb,oCAAqC,GACrC,sBAAuB,CAAC,KAAK,KAC7B,sBAAuB,KAAK,IAAA,GAIzB,CACL,GAAGD,EACH,GAAGC,CAAA,CAEP,EACA,qBAAwE,CACtE,OAAO,OAAO,KAAK,KAAK,YAAY,EACjC,OAAQzsD,GAASA,EAAK,WAAW,WAAW,CAAC,EAC7C,OACC,CAACk0C,EAAyDl0C,KACxDk0C,EAAMl0C,CAAI,EAAI,KAAK,aAAaA,CAAI,EAE7Bk0C,GAET,CAAC,CAAA,CAEP,EACA,iBAA2B,CACzB,OAAO,KAAK,SAAS,SAAW,GAAK,KAAK,YAAY,OAAS,CACjE,CACF,EACA,MAAO,CACL,QAAS,CACP,KAAK,qBAAqB,CAC5B,EACA,YAAa,CACX,KAAK,qBAAqB,CAC5B,CACF,EACA,SAAU,CACR,KAAK,qBAAqB,CAC5B,EACA,QAAS,CACP,aAAc,CACR,CAAC,KAAK,YAAc,KAAK,OAAO,OAAS,IACtC,KAAA,MAAM,eAAgB,KAAK,MAAM,EACtC,KAAK,OAAS,GAElB,EACA,cAAcvzC,EAAsB,CAC3B,OAAAA,EAAQ,OAASrC,GAAgB,IAC1C,EACA,WAAWqC,EAAsB,CAC3B,OAAA,KAAK,WAAa,KAAK,WAClB,GAIPA,EAAQ,OAASrC,GAAgB,SACjCqC,EAAQ,cAAgB,EAE5B,EACA,kBAAkBA,EAAsB,CACtC,OAAOA,EAAQ,OACjB,EACA,mBAAmBA,EAAsB,CACvC,OAAO,KAAK,cAAcA,CAAO,EAAI,KAAK,aAAe,IAC3D,EACA,kBAAkBA,EAAsB0K,EAAe,CAG9C,MAAA,CACL,UAHaA,IAAU,KAAK,SAAS,OAAS,GAGzB,KAAK,WAAW1K,CAAO,CAAA,CAEhD,EACA,sBAAuB,CACrB,KAAK,UAAU,IAAM,WACb,MAAA+rD,GAAgB5uB,EAAA,KAAK,MAAM,gBAAX,YAAAA,EAA0B,IAC1C6uB,GAAaptB,EAAA,KAAK,MAAM,aAAX,YAAAA,EAAuB,IACpCqtB,GAAavnB,EAAA,KAAK,MAAM,aAAX,YAAAA,EAAuB,IAEtC,CAACqnB,GAAiB,CAACC,GAAc,CAACC,IAItC,KAAK,aAAeD,EAAW,aAC/B,KAAK,aAAeC,EAAW,aAC/B,KAAK,gBAAkBF,EAAc,aAEjC,KAAK,OACP,KAAK,WACH,SAAS,KAAK,MAAM,EAAI,KAAK,aAAe,KAAK,aAEnD,KAAK,WAAa,KAAK,IACrB,IACA,KAAK,gBAAkB,KAAK,aAAe,KAAK,YAAA,EAEpD,CACD,CACH,EACA,gBAAgB/rD,EAAsB,CAChC,OAAAA,EAAQ,OAASrC,GAAgB,KAC5B,KAAK,eACHqC,EAAQ,OAASrC,GAAgB,QACnC,KAAK,kBAEL,EAEX,EACA,kBAAkB0sD,EAAoB6B,EAAoB,CACxD,KAAK,MAAM,mBAAoB,CAC7B,GAAG7B,EACH,UAAA6B,CAAA,CACD,CACH,CACF,CACF,CAAC,ijGClRcC,GAAApuD,EAAI,OAAO,CACxB,KAAM,cACN,OAAQ,CAACs/C,EAAe,EACxB,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,gBAAiB,CACf,KAAM,QACN,QAAS,EACX,CACF,EACA,SAAU,CACR,kBAA4C,CACnC,MAAA,CACL,kDAAmD,KAAK,KACxD,+CAAgD,CAAC,KAAK,IAAA,CAE1D,EACA,qBAA8B,CACrB,MAAA,uDACT,CACF,EACA,QAAS,CACP,gBAAgB3yC,EAAe,SAC7B,OACG,KAAK,mBACJk0B,GAAAzB,EAAA,KAAK,UAAL,YAAAA,EAAezyB,KAAf,YAAAk0B,EAAuB,cACvB,KAAK,QAAQl0B,CAAK,EAAE,YAAY,OAAS,GAC3C,KAAK,WAAWA,CAAK,CAEzB,EACA,iBAAiBA,EAAe,CACvB,MAAA,CACL,KAAK,WAAWA,CAAK,EACjB,KAAK,oBACL,KAAK,iBACT,KAAK,QAAQA,CAAK,EAAE,UAAY,KAAK,SACjC,oCACA,gCAAA,CAER,CACF,CACF,CAAC,w8CC3Cc0hD,GAAAruD,EAAI,OAAO,CACxB,KAAM,QACN,OAAQ,CAACm/C,EAAS,EAClB,MAAO,CACL,KAAM,CACJ,KAAM,QACN,QAAS,EACX,EACA,SAAU,CACR,KAAM,QACN,QAAS,EACX,EACA,YAAa,CACX,KAAM,OACN,QAAS,IACX,CACF,EACA,QAAS,CACP,cAAcxyC,EAAqB,CAEjC,KAAK,aAAeA,EACf,KAAA,MAAM,eAAgBA,CAAK,CAClC,EAEA,SAASA,EAAwB,CAC/B,OAAO,KAAK,eAAiBA,CAC/B,EACA,OAAO2hD,EAAuB,CAC5B,MAAO,CAAC,CAACA,GAAQ,CAAC,KAAK,eAAeA,CAAI,CAC5C,EACA,eAAeA,EAAuB,CACpC,MAAO,CAAC,CAACA,GAAQA,EAAK,WAAW,MAAM,CACzC,EACA,qBACE3hD,EACA2hD,EAAO,GACkC,CAClC,MAAA,CACL,+DACA,CACE,CAAC,KAAK,WAAW,EAAG,KAAK,SAAS3hD,CAAK,GAAK,CAAC,CAAC,KAAK,YACnD,mDACE,KAAK,MAAQ,CAAC,KAAK,SAASA,CAAK,EACnC,0CACE,KAAK,eAAe2hD,CAAI,GAAK,KAAK,OAAOA,CAAI,EAC/C,mBAAoB,KAAK,eAAeA,CAAI,GAAK,KAAK,OAAOA,CAAI,EACjE,mCACE,CAAC,KAAK,SAAS3hD,CAAK,GAAK,CAAC,KAAK,KACjC,iCAAkC,KAAK,SAASA,CAAK,GAAK,CAAC,KAAK,KAChE,qDACE,KAAK,SAASA,CAAK,GAAK,KAAK,KAC/B,qDACE,KAAK,UAAY,KAAK,SAASA,CAAK,EACtC,qDACE,CAAC,KAAK,UAAY,KAAK,SAASA,CAAK,CACzC,CAAA,CAEJ,EACA,cAAchG,EAAsB,WAC5B,MAAAokD,GAAY3rB,EAAAz4B,EAAM,mBAAN,YAAAy4B,EAAwB,UAI1C,OAAI2rB,GAAA,MAAAA,EAAW,MACNA,EAAU,MAEfA,GAAA,MAAAA,EAAW,KACNA,EAAU,MAEfpkB,GAAA9F,EAAAl6B,EAAM,OAAN,YAAAk6B,EAAY,QAAZ,MAAA8F,EAAmB,KACdhgC,EAAM,KAAK,MAAM,KAGnB,OAAO,KAAK,aAAe,CAAC,EACrC,EAEA,UAAUq9B,EAAkBr9B,EAAcgG,EAAsB,qBAC9D,MAAM2hD,IAAOztB,GAAAzB,EAAAz4B,EAAM,OAAN,YAAAy4B,EAAY,QAAZ,YAAAyB,EAAmB,SAAQ+F,GAAAD,EAAAhgC,EAAM,OAAN,YAAAggC,EAAY,QAAZ,YAAAC,EAAmB,IACrD2nB,EAAY,KAAK,qBAAqB5hD,EAAO2hD,CAAI,EACvD,GAAIA,EACE,GAAA,CACE,OAAA,KAAK,eAAeA,CAAI,EACnBtqB,EACL,IACA,CACE,IAAKr3B,EACL,MAAO4hD,EACP,MAAO,CACL,KAAMD,EACN,OAAQ,SACR,IAAK,sBACL,IAAGtnB,EAAArgC,EAAM,OAAN,YAAAqgC,EAAY,KACjB,CACF,EACA,CAAC,KAAK,cAAcrgC,CAAK,CAAC,CAAA,EAGrBq9B,EACL,cACA,CACE,IAAKr3B,EACL,MAAO4hD,EACP,MAAO,CACL,GAAID,EACJ,IAAGE,EAAA7nD,EAAM,OAAN,YAAA6nD,EAAY,KACjB,CACF,EACA,CAAC,KAAK,cAAc7nD,CAAK,CAAC,CAAA,OAGhB,CACP,OAAAq9B,EACL,IACA,CACE,IAAKr3B,EACL,MAAO4hD,EACP,MAAO,CACL,KAAMD,EACN,IAAGG,EAAA9nD,EAAM,OAAN,YAAA8nD,EAAY,KACjB,CACF,EACA,CAAC,KAAK,cAAc9nD,CAAK,CAAC,CAAA,CAE9B,CAGK,OAAAq9B,EACL,MACA,CACE,IAAKr3B,EACL,MAAO4hD,EACP,OAAOG,EAAA/nD,EAAM,OAAN,YAAA+nD,EAAY,MACnB,GAAI,CACF,MAAO,IAAM,KAAK,cAAc/hD,CAAK,CACvC,CACF,EACA,CAAC,KAAK,cAAchG,CAAK,CAAC,CAAA,CAE9B,EAEA,cAAcq9B,EAAkBr9B,EAAcgG,EAA6B,aAKzE,OAJIk0B,GAAAzB,EAAAz4B,EAAM,OAAN,YAAAy4B,EAAY,QAAZ,MAAAyB,EAAmB,OAAQ+F,GAAAD,EAAAhgC,EAAM,OAAN,YAAAggC,EAAY,QAAZ,MAAAC,EAAmB,IAI9C,CAAC,KAAK,SAASj6B,CAAK,EACf,KAGFq3B,EACL,MACA,CACE,MAAO,6DACT,EACA,CAACr9B,CAAK,CAAA,CAEV,CACF,EAEA,OAAOq9B,EAAyB,OACxB,MAAAkW,IAAW9a,EAAA,KAAK,OAAO,UAAZ,YAAAA,EAAqB,OAAQz4B,GAAUA,EAAM,OAAQ,GAE/D,OAAAq9B,EACL,MACA,CACE,MAAO,CACL,2BACA,CACE,aAAc,CAAC,KAAK,SACpB,SAAU,KAAK,QACjB,CACF,CACF,EACA,CAEEA,EACE,MACA,CACE,MAAO,CACL,yEACA,CACE,8CAA+C,CAAC,KAAK,SACrD,gDAAiD,KAAK,SACtD,kBAAmB,CAAC,KAAK,WAC3B,CACF,CACF,EACAkW,EAAS,IAAI,CAACvzC,EAAOgG,IAAU,KAAK,UAAUq3B,EAAGr9B,EAAOgG,CAAK,CAAC,CAChE,EAGAq3B,EACE,MACA,CACE,MAAO,sBACT,EACAkW,EACG,IAAI,CAACvzC,EAAOgG,IAAU,KAAK,cAAcq3B,EAAGr9B,EAAOgG,CAAK,CAAC,EACzD,OAAO,OAAO,CACnB,CACF,CAAA,CAEJ,CACF,CAAC,oEC5McgiD,GAAA3uD,EAAI,OAAO,CACxB,KAAM,QACN,MAAO,CACL,MAAO,CACL,KAAM,CAAC,OAAQ,MAAS,EACxB,QAAS,MACX,EACA,MAAO,CACL,KAAM,CAAC,OAAQ,OAAQ,MAAS,EAChC,QAAS,MACX,EACA,OAAQ,CACN,KAAM,CAAC,OAAQ,OAAQ,MAAS,EAChC,QAAS,MACX,EACA,UAAW,CACT,KAAM,CAAC,OAAQ,OAAQ,MAAS,EAChC,QAAS,GACX,EACA,aAAc,CACZ,KAAM,OACN,QAAS,CACX,EACA,MAAO,CACL,KAAM,CAAC,OAAQ,MAAS,EACxB,QAAS,MACX,EACA,eAAgB,CACd,KAAM,QACN,QAAS,EACX,EACA,iBAAkB,CAChB,KAAM,CAAC,OAAQ,MAAS,EACxB,QAAS,MACX,EACA,KAAM,CACJ,KAAM,QACN,QAAS,EACX,CACF,EACA,MAAO,CACE,MAAA,CACL,YAAa,EAAA,CAEjB,EACA,SAAU,CACR,gBAA0C,CACjC,MAAA,CACL,gCAAiC,GACjC,oBAAqB,CAAC,KAAK,KAC3B,oBAAqB,KAAK,IAAA,CAE9B,EACA,mBAA6C,CACpC,MAAA,CACL,gBAAiB,KAAK,KACtB,aAAc,CAAC,KAAK,IAAA,CAExB,EACA,aAAuC,CAC9B,MAAA,CACL,kBAAmB,KAAK,KACxB,kBAAmB,CAAC,KAAK,IAAA,CAE7B,EACA,kBAA4C,CACnC,MAAA,CACL,GAAG,KAAK,eACR,GAAG,KAAK,kBACR,GAAG,KAAK,WAAA,CAEZ,EACA,uBAAiD,CACxC,MAAA,CACL,GAAG,KAAK,eACR,GAAG,KAAK,YACR,gBAAiB,EAAA,CAErB,EACA,gBAA0C,CACxC,IAAI4uD,EAAiC,CAAA,EACrC,OAAI,KAAK,QACCA,EAAA,CACN,GAAGA,EACH,MAAO,MAAM,KAAK,KAAK,EAAI,KAAK,MAAQ,GAAG,KAAK,KAAK,IAAA,GAIrD,KAAK,SACCA,EAAA,CACN,GAAGA,EACH,OAAQ,MAAM,KAAK,MAAM,EAAI,KAAK,OAAS,GAAG,KAAK,MAAM,IAAA,GAItDA,CACT,EACA,oBAA6B,CAKpB,OAJM,MAAM,KAAK,SAAS,EAC7B,SAAS,KAAK,SAAS,EACvB,KAAK,WAEK,EAAI,KAAK,YACzB,EACA,YAAsC,CAC7B,MAAA,CACL,OAAQ,OACR,MAAO,GAAG,KAAK,kBAAkB,KACjC,OAAQ,GAAG,KAAK,YAAY,IAAA,CAEhC,EACA,qBAA+C,CACvC,MAAAC,EAAgB,MAAM,KAAK,SAAS,EACtC,KAAK,UACL,GAAG,KAAK,SAAS,KAEd,MAAA,CACL,OAAQA,EACR,MAAOA,EACP,IAAK,GAAG,CAAC,KAAK,wBAAwB,KACtC,KAAM,GAAG,CAAC,KAAK,wBAAwB,IAAA,CAE3C,EACA,0BAAmC,CACjC,OAAO,MAAM,KAAK,gBAAgB,EAAI,IAAM,KAAK,gBACnD,EACA,YAAsC,CAChC,OAAC,KAAK,MAIH,CACL,YAAa,GAAG,KAAK,UAAY,KAAK,wBAAwB,IAAA,EAJvD,EAMX,EACA,cAAwC,CAClC,OAAC,KAAK,MAQH,CACL,WAAY,GANK,KAAK,IACtB,EACA,KAAK,UAAY,KAAK,YAAc,KAAK,wBAAA,CAIhB,IAAA,EARlB,EAUX,CACF,EACA,SAAU,CACJ,KAAK,gBAAkB,CAAC,mBAAmB,KAAK,KAAK,KAAK,GACpD,QAAA,MACN,iEAAA,CAGN,CACF,CAAC,+9BCjHYC,GAAa,CACxB,QAAAxJ,GACA,OAAAyJ,GACA,MAAArW,GACA,SAAAzS,GACA,KAAAya,GACA,KAAAC,GACA,aAAAqO,GACA,UAAAC,GACA,YAAAC,GACA,YAAA7W,GACA,cAAA8W,GACA,UAAAC,GACA,cAAAC,GACA,kBAAAxW,GACA,kBAAAyW,GACA,cAAAC,GACA,gBAAAC,GACA,UAAAtpB,GACA,cAAAupB,GACA,SAAAC,GACA,iBAAAC,GACA,aAAAC,GACA,aAAAxL,GACA,YAAAnB,GACA,cAAAH,GACA,SAAAH,GACA,QAAAkN,GACA,MAAAC,GACA,iBAAAC,GACA,oBAAA/D,GACA,SAAAvK,GACA,qBAAAuO,GACA,YAAAC,GACA,QAAAC,GACA,MAAAC,GACA,MAAAC,GACA,gBAAAC,EACF,EAEe1jD,GAAA,CACb,QAAQ3M,EAAqB,CAE3B,OAAO,KAAK8uD,EAAU,EAAE,QAASxtD,GAAS,CAExCtB,EAAI,UAAUsB,EAAMwtD,GAAWxtD,CAAI,CAAC,CAAA,CACrC,EAGD,OAAO,KAAKgvD,EAAM,EAAE,QAAShvD,GAAS,CAEpCtB,EAAI,MAAMsB,EAAMgvD,GAAOhvD,CAAI,CAAC,CAAA,CAC7B,EAGDmnC,GAAc,QAAQ,CAAC,CAAE,KAAAnnC,EAAM,WAAAivD,KAAiB,CAC1CvwD,EAAA,UAAUsB,EAAMivD,CAAU,CAAA,CAC/B,CACH,CACF","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]}