@grafana/components 0.0.40 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +401 -5
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +105 -4
- package/dist/esm/components/ComparisonBadge/ComparisonBadge.js +35 -0
- package/dist/esm/components/ComparisonBadge/ComparisonBadge.js.map +1 -1
- package/dist/esm/components/ComparisonTooltip/ComparisonTooltip.js +35 -0
- package/dist/esm/components/ComparisonTooltip/ComparisonTooltip.js.map +1 -1
- package/dist/esm/components/Icons/AlignLayoutLeft.js +10 -0
- package/dist/esm/components/Icons/AlignLayoutLeft.js.map +1 -0
- package/dist/esm/components/Icons/AlignLayoutRight.js +10 -0
- package/dist/esm/components/Icons/AlignLayoutRight.js.map +1 -0
- package/dist/esm/components/Icons/AppWindows.js +11 -0
- package/dist/esm/components/Icons/AppWindows.js.map +1 -0
- package/dist/esm/components/Icons/ApplicationObservability.js +13 -0
- package/dist/esm/components/Icons/ApplicationObservability.js.map +1 -0
- package/dist/esm/components/Icons/ArrowsDiagonalCrossingRight.js +13 -0
- package/dist/esm/components/Icons/ArrowsDiagonalCrossingRight.js.map +1 -0
- package/dist/esm/components/Icons/Channel.js +10 -0
- package/dist/esm/components/Icons/Channel.js.map +1 -0
- package/dist/esm/components/Icons/ChannelPlus.js +10 -0
- package/dist/esm/components/Icons/ChannelPlus.js.map +1 -0
- package/dist/esm/components/Icons/ChartLinePlus.js +11 -0
- package/dist/esm/components/Icons/ChartLinePlus.js.map +1 -0
- package/dist/esm/components/Icons/ChartPanel.js +11 -0
- package/dist/esm/components/Icons/ChartPanel.js.map +1 -0
- package/dist/esm/components/Icons/ChevronsLeftRightLine.js +13 -0
- package/dist/esm/components/Icons/ChevronsLeftRightLine.js.map +1 -0
- package/dist/esm/components/Icons/ChevronsUpDownLine.js +10 -0
- package/dist/esm/components/Icons/ChevronsUpDownLine.js.map +1 -0
- package/dist/esm/components/Icons/CircleFilled.js +10 -0
- package/dist/esm/components/Icons/CircleFilled.js.map +1 -0
- package/dist/esm/components/Icons/CirclesIntersect.js +12 -0
- package/dist/esm/components/Icons/CirclesIntersect.js.map +1 -0
- package/dist/esm/components/Icons/CloudDatabase.js +13 -0
- package/dist/esm/components/Icons/CloudDatabase.js.map +1 -0
- package/dist/esm/components/Icons/CloudInfo.js +10 -0
- package/dist/esm/components/Icons/CloudInfo.js.map +1 -0
- package/dist/esm/components/Icons/CoolS.js +10 -0
- package/dist/esm/components/Icons/CoolS.js.map +1 -0
- package/dist/esm/components/Icons/Drilldown.js +11 -0
- package/dist/esm/components/Icons/Drilldown.js.map +1 -0
- package/dist/esm/components/Icons/FileInfo.js +11 -0
- package/dist/esm/components/Icons/FileInfo.js.map +1 -0
- package/dist/esm/components/Icons/FileLog.js +13 -0
- package/dist/esm/components/Icons/FileLog.js.map +1 -0
- package/dist/esm/components/Icons/LaptopCloud.js +11 -0
- package/dist/esm/components/Icons/LaptopCloud.js.map +1 -0
- package/dist/esm/components/Icons/LayersOff.js +10 -0
- package/dist/esm/components/Icons/LayersOff.js.map +1 -0
- package/dist/esm/components/Icons/LayoutGridPlus.js +10 -0
- package/dist/esm/components/Icons/LayoutGridPlus.js.map +1 -0
- package/dist/esm/components/Icons/LoopedArrowsBoxes.js +13 -0
- package/dist/esm/components/Icons/LoopedArrowsBoxes.js.map +1 -0
- package/dist/esm/components/Icons/MultiStep.js +11 -0
- package/dist/esm/components/Icons/MultiStep.js.map +1 -0
- package/dist/esm/components/Icons/OrientationLandscape.js +15 -0
- package/dist/esm/components/Icons/OrientationLandscape.js.map +1 -0
- package/dist/esm/components/Icons/OrientationPortrait.js +12 -0
- package/dist/esm/components/Icons/OrientationPortrait.js.map +1 -0
- package/dist/esm/components/Icons/PanelLeftToggle.js +11 -0
- package/dist/esm/components/Icons/PanelLeftToggle.js.map +1 -0
- package/dist/esm/components/Icons/PanelRightToggle.js +11 -0
- package/dist/esm/components/Icons/PanelRightToggle.js.map +1 -0
- package/dist/esm/components/Icons/PlugDiagonal.js +10 -0
- package/dist/esm/components/Icons/PlugDiagonal.js.map +1 -0
- package/dist/esm/components/Icons/RefreshX4Ccw.js +14 -0
- package/dist/esm/components/Icons/RefreshX4Ccw.js.map +1 -0
- package/dist/esm/components/Icons/RefreshX4Cw.js +14 -0
- package/dist/esm/components/Icons/RefreshX4Cw.js.map +1 -0
- package/dist/esm/components/Icons/SquareDashedArrowSmallSquare.js +13 -0
- package/dist/esm/components/Icons/SquareDashedArrowSmallSquare.js.map +1 -0
- package/dist/esm/components/Icons/SquareList.js +10 -0
- package/dist/esm/components/Icons/SquareList.js.map +1 -0
- package/dist/esm/components/Icons/SquarePartialList.js +10 -0
- package/dist/esm/components/Icons/SquarePartialList.js.map +1 -0
- package/dist/esm/components/Icons/UserKey.js +11 -0
- package/dist/esm/components/Icons/UserKey.js.map +1 -0
- package/dist/esm/components/Icons/allIcons.js +70 -0
- package/dist/esm/components/Icons/allIcons.js.map +1 -1
- package/dist/esm/components/Icons/iconMetaData.js +49 -1
- package/dist/esm/components/Icons/iconMetaData.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +24 -4
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/StackedChartNoData/StackedChartNoData.js +35 -0
- package/dist/esm/components/StackedChartNoData/StackedChartNoData.js.map +1 -1
- package/dist/esm/index.d.ts +105 -4
- package/dist/esm/index.js +35 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +2 -4
|
@@ -43,8 +43,8 @@ const Popover = forwardRef(
|
|
|
43
43
|
const arrowRef = useRef(null);
|
|
44
44
|
const closeTimer = useRef(void 0);
|
|
45
45
|
const popoverId = useId();
|
|
46
|
-
const [isOpenState, setOpen] = useState(isOpenControlled);
|
|
47
|
-
const [isDelayedOpen, setDelayedOpen] = useState(isOpenControlled);
|
|
46
|
+
const [isOpenState, setOpen] = useState(isOpenControlled != null ? isOpenControlled : false);
|
|
47
|
+
const [isDelayedOpen, setDelayedOpen] = useState(isOpenControlled != null ? isOpenControlled : false);
|
|
48
48
|
const isOpen = isOpenControlled != null ? isOpenControlled : isOpenState;
|
|
49
49
|
const middleware = getMiddleware({ placement, arrowRef });
|
|
50
50
|
const styles = getStyles();
|
|
@@ -128,9 +128,29 @@ const Popover = forwardRef(
|
|
|
128
128
|
},
|
|
129
129
|
[forwardedRef, refs]
|
|
130
130
|
);
|
|
131
|
-
const [trigger, content] =
|
|
131
|
+
const [trigger, content] = (() => {
|
|
132
|
+
switch (true) {
|
|
133
|
+
/**
|
|
134
|
+
* If the popover is controlled, the trigger isn’t used at all
|
|
135
|
+
*/
|
|
136
|
+
case typeof isOpenControlled !== "undefined":
|
|
137
|
+
return [void 0, children];
|
|
138
|
+
/**
|
|
139
|
+
* If a trigger prop was passed, use it as the trigger, and the children
|
|
140
|
+
* as the popover content
|
|
141
|
+
*/
|
|
142
|
+
case typeof _trigger !== "undefined":
|
|
143
|
+
return [_trigger, children];
|
|
144
|
+
/**
|
|
145
|
+
* Otherwise, use the children as the trigger element, and the content
|
|
146
|
+
* prop as the popover content
|
|
147
|
+
*/
|
|
148
|
+
default:
|
|
149
|
+
return [children, _content];
|
|
150
|
+
}
|
|
151
|
+
})();
|
|
132
152
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
133
|
-
cloneElement(trigger, {
|
|
153
|
+
typeof trigger !== "undefined" && cloneElement(trigger, {
|
|
134
154
|
ref: handleRef,
|
|
135
155
|
tabIndex: 0,
|
|
136
156
|
"aria-describedby": isOpen ? popoverId : void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import {\n forwardRef,\n cloneElement,\n useCallback,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n JSX,\n} from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n offset,\n Placement,\n safePolygon,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useRole,\n useInteractions,\n useTransitionStyles,\n FloatingPortal,\n FloatingPortalProps,\n} from '@floating-ui/react';\nimport { usePortal } from '../PortalProvider';\nimport { getStyles } from './Popover.styles';\n\nexport interface SharedPopoverProps {\n /**\n * Should the popover be open? Implicitly means the popover visibility is\n * controlled; if omitted, the popover target will control visibility\n */\n isOpen?: boolean;\n\n /**\n * Set to true if you want the tooltip to stay long enough so the user can\n * move mouse over content to select text or click a link\n */\n isInteractive?: boolean;\n\n /**\n * Placement of the Popover relative to the trigger content\n */\n placement?: Placement;\n\n /**\n * Transition duration for hide/show effects, in milliseconds\n */\n transitionDuration?: number;\n\n /**\n * Additional delay before hiding the popover after mouseout, in milliseconds\n */\n hideDelay?: number;\n\n /**\n * Virtual element to anchor the popover to instead of the trigger\n */\n virtualElement?: React.RefObject<Element>;\n\n /**\n * DOM element or ID to render the portal into, falls back to document.body\n */\n portalContainer?: FloatingPortalProps['root'];\n}\n\nexport interface PopoverWithTriggerProps extends SharedPopoverProps {\n /**\n * Content used to trigger the Popover being displayed\n */\n trigger: JSX.Element;\n\n /**\n * Content to render within the Popover\n */\n children: JSX.Element;\n\n /**\n * When using a Trigger prop, there shouldn’t be a content prop\n */\n content?: never;\n}\n\nexport interface PopoverWithContentProps extends SharedPopoverProps {\n /**\n * Content to render within the Popover\n */\n content: JSX.Element | string;\n\n /**\n * Children to use as the trigger for the Popover\n */\n children: JSX.Element;\n\n /**\n * When using a Content prop, there shouldn’t be a trigger prop\n */\n trigger?: never;\n}\n\nexport type PopoverProps = PopoverWithTriggerProps | PopoverWithContentProps;\n\nconst POPOVER_OFFSET = 8;\n\nconst getMiddleware = ({\n placement,\n arrowRef,\n}: {\n placement?: Placement;\n arrowRef: React.RefObject<null>;\n}) => {\n const BOUNDARY_ELEMENT_ID = 'floating-boundary';\n const _flip = flip({\n // Ensure we flip to the perpendicular axis if it doesn't fit\n // on narrow viewports.\n crossAxis: 'alignment',\n fallbackAxisSideDirection: 'end',\n boundary: document.getElementById(BOUNDARY_ELEMENT_ID) ?? undefined,\n });\n\n const middleware = placement?.includes('-') ? [_flip, shift()] : [shift(), _flip];\n\n // the order of middleware is important!\n // `arrow` should almost always be at the end\n // see https://floating-ui.com/docs/arrow#order\n return [\n offset(POPOVER_OFFSET),\n ...middleware,\n arrow({\n element: arrowRef,\n }),\n ];\n};\n\nexport const Popover = forwardRef<HTMLElement, PopoverProps>(\n (\n {\n trigger: _trigger,\n content: _content,\n children,\n isOpen: isOpenControlled,\n isInteractive = false,\n placement = 'bottom',\n transitionDuration = 200,\n hideDelay = 500,\n virtualElement,\n portalContainer,\n },\n forwardedRef,\n ) => {\n const arrowRef = useRef(null);\n const closeTimer = useRef<number | undefined>(undefined);\n const popoverId = useId();\n const [isOpenState, setOpen] = useState(isOpenControlled);\n const [isDelayedOpen, setDelayedOpen] = useState(isOpenControlled);\n const isOpen = isOpenControlled ?? isOpenState;\n const middleware = getMiddleware({ placement, arrowRef });\n const styles = getStyles();\n const { root } = usePortal();\n\n const portalRoot = (() => {\n switch (true) {\n case portalContainer instanceof HTMLElement:\n return portalContainer;\n case typeof portalContainer === 'string':\n return document.getElementById(portalContainer);\n default:\n return root;\n }\n })();\n\n const { context, refs, floatingStyles } = useFloating({\n open: isOpen,\n placement,\n onOpenChange: (open) => {\n setOpen(open);\n clearTimeout(closeTimer.current);\n\n if (!open) {\n closeTimer.current = window.setTimeout(() => {\n setDelayedOpen(open);\n }, transitionDuration + hideDelay);\n } else {\n setDelayedOpen(open);\n }\n },\n middleware,\n whileElementsMounted: autoUpdate,\n });\n\n useLayoutEffect(() => {\n if (virtualElement && virtualElement.current !== null) {\n const domRect = virtualElement.current.getBoundingClientRect();\n\n refs.setPositionReference({\n getBoundingClientRect: () => {\n if (virtualElement.current !== null)\n return virtualElement.current.getBoundingClientRect();\n return domRect;\n },\n contextElement: virtualElement.current,\n });\n }\n }, [refs, virtualElement]);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useHover(context, {\n handleClose: isInteractive ? safePolygon() : undefined,\n move: false,\n delay: {\n open: 0,\n close: hideDelay,\n },\n }),\n useFocus(context),\n useRole(context),\n ]);\n\n const { styles: transitionStyles } = useTransitionStyles(context, {\n duration: transitionDuration,\n initial: ({ side }) => ({\n opacity: 0,\n transform:\n side === 'top' || side === 'bottom'\n ? `translateY(${POPOVER_OFFSET}px)`\n : `translateX(${POPOVER_OFFSET}px)`,\n }),\n open: ({ side }) => ({\n opacity: 1,\n transform: side === 'top' || side === 'bottom' ? `translateY(0)` : `translateX(0)`,\n }),\n close: ({ side }) => ({\n opacity: 0,\n transform:\n side === 'top' || side === 'bottom'\n ? `translateY(${POPOVER_OFFSET}px)`\n : `translateX(${POPOVER_OFFSET}px)`,\n }),\n });\n\n const handleRef = useCallback(\n (ref: HTMLElement | null) => {\n refs.setReference(ref);\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(ref);\n } else if (forwardedRef) {\n forwardedRef.current = ref;\n }\n },\n [forwardedRef, refs],\n );\n\n /**\n * The interface of Popover supports two methods of usage where the children can\n * either represent the content of the popover, or the element to trigger\n * rendering the popover. Dependent on whether the trigger or content prop is\n * provided, the children prop will handle the other scenario.\n */\n const [trigger, content] =\n typeof _trigger !== 'undefined' ? [_trigger, children] : [children, _content];\n\n return (\n <>\n {/* element to trigger displaying the popover */}\n {cloneElement(trigger, {\n ref: handleRef,\n tabIndex: 0,\n 'aria-describedby': isOpen ? popoverId : undefined,\n ...getReferenceProps(),\n })}\n {/* content to render inside the popover when open */}\n {(isDelayedOpen || isOpen) && (\n <FloatingPortal root={portalRoot}>\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={transitionStyles} className={styles.shadow}>\n <FloatingArrow className={styles.arrow} ref={arrowRef} context={context} />\n <div id={popoverId} role=\"tooltip\" className={styles.container}>\n {content}\n </div>\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n },\n);\n\nPopover.displayName = 'Popover';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import {\n forwardRef,\n cloneElement,\n useCallback,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n JSX,\n} from 'react';\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useRole,\n useInteractions,\n useTransitionStyles,\n FloatingPortal,\n FloatingPortalProps,\n Placement,\n} from '@floating-ui/react';\nimport { usePortal } from '../PortalProvider';\nimport { getStyles } from './Popover.styles';\n\nexport type { Placement };\n\nexport interface SharedPopoverProps {\n /**\n * Should the popover be open? Implicitly means the popover visibility is\n * controlled; if omitted, the popover target will control visibility\n */\n isOpen?: boolean;\n\n /**\n * Set to true if you want the tooltip to stay long enough so the user can\n * move mouse over content to select text or click a link\n */\n isInteractive?: boolean;\n\n /**\n * Placement of the Popover relative to the trigger content\n */\n placement?: Placement;\n\n /**\n * Transition duration for hide/show effects, in milliseconds\n */\n transitionDuration?: number;\n\n /**\n * Additional delay before hiding the popover after mouseout, in milliseconds\n */\n hideDelay?: number;\n\n /**\n * Virtual element to anchor the popover to instead of the trigger\n */\n virtualElement?: React.RefObject<Element>;\n\n /**\n * DOM element or ID to render the portal into, falls back to document.body\n */\n portalContainer?: FloatingPortalProps['root'];\n}\n\nexport interface PopoverWithTriggerProps extends SharedPopoverProps {\n /**\n * Content used to trigger the Popover being displayed\n */\n trigger: JSX.Element;\n\n /**\n * Content to render within the Popover\n */\n children: JSX.Element;\n\n /**\n * When using a Trigger prop, there shouldn’t be a content prop\n */\n content?: never;\n\n /**\n * When using a Trigger prop, the prop is uncontrolled, so no isOpen prop should be provided.\n */\n isOpen?: never;\n}\n\nexport interface PopoverWithContentProps extends SharedPopoverProps {\n /**\n * Content to render within the Popover\n */\n content: JSX.Element | string;\n\n /**\n * Children to use as the trigger for the Popover\n */\n children: JSX.Element;\n\n /**\n * When using a Content prop, there shouldn’t be a trigger prop\n */\n trigger?: never;\n\n /**\n * When using a Trigger prop, the prop is uncontrolled, so no isOpen prop should be provided.\n */\n isOpen?: never;\n}\n\nexport interface ControlledPopoverProps extends SharedPopoverProps {\n /**\n * When controlled, there is no trigger prop\n */\n trigger?: never;\n\n /**\n * Equally, when controlled there is no content prop since we can just use children\n */\n content?: never;\n\n /**\n * Virtual element to anchor the popover to instead of the trigger is required in this case\n */\n virtualElement: React.RefObject<Element>;\n\n /**\n * Children to use as the trigger for the Popover\n */\n children: JSX.Element;\n\n /**\n * Controlled popover requires the isOpen prop to be provided\n */\n isOpen: boolean;\n}\n\nexport type PopoverProps =\n | PopoverWithTriggerProps\n | PopoverWithContentProps\n | ControlledPopoverProps;\n\nconst POPOVER_OFFSET = 8;\n\nconst getMiddleware = ({\n placement,\n arrowRef,\n}: {\n placement?: Placement;\n arrowRef: React.RefObject<null>;\n}) => {\n const BOUNDARY_ELEMENT_ID = 'floating-boundary';\n const _flip = flip({\n // Ensure we flip to the perpendicular axis if it doesn't fit\n // on narrow viewports.\n crossAxis: 'alignment',\n fallbackAxisSideDirection: 'end',\n boundary: document.getElementById(BOUNDARY_ELEMENT_ID) ?? undefined,\n });\n\n const middleware = placement?.includes('-') ? [_flip, shift()] : [shift(), _flip];\n\n // the order of middleware is important!\n // `arrow` should almost always be at the end\n // see https://floating-ui.com/docs/arrow#order\n return [\n offset(POPOVER_OFFSET),\n ...middleware,\n arrow({\n element: arrowRef,\n }),\n ];\n};\n\nexport const Popover = forwardRef<HTMLElement, PopoverProps>(\n (\n {\n trigger: _trigger,\n content: _content,\n children,\n isOpen: isOpenControlled,\n isInteractive = false,\n placement = 'bottom',\n transitionDuration = 200,\n hideDelay = 500,\n virtualElement,\n portalContainer,\n },\n forwardedRef,\n ) => {\n const arrowRef = useRef(null);\n const closeTimer = useRef<number | undefined>(undefined);\n const popoverId = useId();\n const [isOpenState, setOpen] = useState(isOpenControlled ?? false);\n const [isDelayedOpen, setDelayedOpen] = useState(isOpenControlled ?? false);\n const isOpen = isOpenControlled ?? isOpenState;\n const middleware = getMiddleware({ placement, arrowRef });\n const styles = getStyles();\n const { root } = usePortal();\n\n const portalRoot = (() => {\n switch (true) {\n case portalContainer instanceof HTMLElement:\n return portalContainer;\n case typeof portalContainer === 'string':\n return document.getElementById(portalContainer);\n default:\n return root;\n }\n })();\n\n const { context, refs, floatingStyles } = useFloating({\n open: isOpen,\n placement,\n onOpenChange: (open) => {\n setOpen(open);\n clearTimeout(closeTimer.current);\n\n if (!open) {\n closeTimer.current = window.setTimeout(() => {\n setDelayedOpen(open);\n }, transitionDuration + hideDelay);\n } else {\n setDelayedOpen(open);\n }\n },\n middleware,\n whileElementsMounted: autoUpdate,\n });\n\n useLayoutEffect(() => {\n if (virtualElement && virtualElement.current !== null) {\n const domRect = virtualElement.current.getBoundingClientRect();\n\n refs.setPositionReference({\n getBoundingClientRect: () => {\n if (virtualElement.current !== null)\n return virtualElement.current.getBoundingClientRect();\n return domRect;\n },\n contextElement: virtualElement.current,\n });\n }\n }, [refs, virtualElement]);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useHover(context, {\n handleClose: isInteractive ? safePolygon() : undefined,\n move: false,\n delay: {\n open: 0,\n close: hideDelay,\n },\n }),\n useFocus(context),\n useRole(context),\n ]);\n\n const { styles: transitionStyles } = useTransitionStyles(context, {\n duration: transitionDuration,\n initial: ({ side }) => ({\n opacity: 0,\n transform:\n side === 'top' || side === 'bottom'\n ? `translateY(${POPOVER_OFFSET}px)`\n : `translateX(${POPOVER_OFFSET}px)`,\n }),\n open: ({ side }) => ({\n opacity: 1,\n transform: side === 'top' || side === 'bottom' ? `translateY(0)` : `translateX(0)`,\n }),\n close: ({ side }) => ({\n opacity: 0,\n transform:\n side === 'top' || side === 'bottom'\n ? `translateY(${POPOVER_OFFSET}px)`\n : `translateX(${POPOVER_OFFSET}px)`,\n }),\n });\n\n const handleRef = useCallback(\n (ref: HTMLElement | null) => {\n refs.setReference(ref);\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(ref);\n } else if (forwardedRef) {\n forwardedRef.current = ref;\n }\n },\n [forwardedRef, refs],\n );\n\n /**\n * The interface of Popover supports two methods of usage where the children\n * can either represent the content of the popover, or the element to\n * trigger rendering the popover. Dependent on whether the trigger or\n * content prop is provided, the children prop will handle the other\n * scenario.\n *\n * Additionally, it also supports the use of a virtualElement prop to\n * control the position of the popover, and the isOpen prop for controlled\n * open/closed state. In the latter case, no trigger element is passed and\n * the children prop is used as the content of the popover (with the\n * virtualElement controlling the popover position)\n */\n const [trigger, content] = (() => {\n switch (true) {\n /**\n * If the popover is controlled, the trigger isn’t used at all\n */\n case typeof isOpenControlled !== 'undefined':\n return [undefined, children];\n\n /**\n * If a trigger prop was passed, use it as the trigger, and the children\n * as the popover content\n */\n case typeof _trigger !== 'undefined':\n return [_trigger, children];\n\n /**\n * Otherwise, use the children as the trigger element, and the content\n * prop as the popover content\n */\n default:\n return [children, _content];\n }\n })();\n\n return (\n <>\n {/* element to trigger displaying the popover */}\n {typeof trigger !== 'undefined' &&\n cloneElement(trigger, {\n ref: handleRef,\n tabIndex: 0,\n 'aria-describedby': isOpen ? popoverId : undefined,\n ...getReferenceProps(),\n })}\n {/* content to render inside the popover when open */}\n {(isDelayedOpen || isOpen) && (\n <FloatingPortal root={portalRoot}>\n <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n <div style={transitionStyles} className={styles.shadow}>\n <FloatingArrow className={styles.arrow} ref={arrowRef} context={context} />\n <div id={popoverId} role=\"tooltip\" className={styles.container}>\n {content}\n </div>\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n },\n);\n\nPopover.displayName = 'Popover';\n"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ import '../Icons/AlignHorizontalJustifyStart.js';
|
|
|
36
36
|
import '../Icons/AlignHorizontalSpaceAround.js';
|
|
37
37
|
import '../Icons/AlignHorizontalSpaceBetween.js';
|
|
38
38
|
import '../Icons/AlignJustify.js';
|
|
39
|
+
import '../Icons/AlignLayoutLeft.js';
|
|
40
|
+
import '../Icons/AlignLayoutRight.js';
|
|
39
41
|
import '../Icons/AlignLeft.js';
|
|
40
42
|
import '../Icons/AlignRight.js';
|
|
41
43
|
import '../Icons/AlignStartHorizontal.js';
|
|
@@ -61,7 +63,9 @@ import '../Icons/Anvil.js';
|
|
|
61
63
|
import '../Icons/Aperture.js';
|
|
62
64
|
import '../Icons/AppWindowMac.js';
|
|
63
65
|
import '../Icons/AppWindow.js';
|
|
66
|
+
import '../Icons/AppWindows.js';
|
|
64
67
|
import '../Icons/Apple.js';
|
|
68
|
+
import '../Icons/ApplicationObservability.js';
|
|
65
69
|
import '../Icons/ArchiveRestore.js';
|
|
66
70
|
import '../Icons/ArchiveX.js';
|
|
67
71
|
import '../Icons/Archive.js';
|
|
@@ -129,6 +133,7 @@ import '../Icons/ArrowUpToLine.js';
|
|
|
129
133
|
import '../Icons/ArrowUpWideNarrow.js';
|
|
130
134
|
import '../Icons/ArrowUpZA.js';
|
|
131
135
|
import '../Icons/ArrowUp.js';
|
|
136
|
+
import '../Icons/ArrowsDiagonalCrossingRight.js';
|
|
132
137
|
import '../Icons/ArrowsUpFromLine.js';
|
|
133
138
|
import '../Icons/Asserts.js';
|
|
134
139
|
import '../Icons/AsteriskSquare.js';
|
|
@@ -349,6 +354,8 @@ import '../Icons/Cast.js';
|
|
|
349
354
|
import '../Icons/Castle.js';
|
|
350
355
|
import '../Icons/Cat.js';
|
|
351
356
|
import '../Icons/Cctv.js';
|
|
357
|
+
import '../Icons/ChannelPlus.js';
|
|
358
|
+
import '../Icons/Channel.js';
|
|
352
359
|
import '../Icons/ChartArea.js';
|
|
353
360
|
import '../Icons/ChartBarBig.js';
|
|
354
361
|
import '../Icons/ChartBarDecreasing.js';
|
|
@@ -362,6 +369,7 @@ import '../Icons/ChartColumnIncreasing.js';
|
|
|
362
369
|
import '../Icons/ChartColumnStacked.js';
|
|
363
370
|
import '../Icons/ChartColumn.js';
|
|
364
371
|
import '../Icons/ChartGantt.js';
|
|
372
|
+
import '../Icons/ChartLinePlus.js';
|
|
365
373
|
import '../Icons/ChartLine.js';
|
|
366
374
|
import '../Icons/ChartNetwork.js';
|
|
367
375
|
import '../Icons/ChartNoAxesColumnDecreasing.js';
|
|
@@ -369,6 +377,7 @@ import '../Icons/ChartNoAxesColumnIncreasing.js';
|
|
|
369
377
|
import '../Icons/ChartNoAxesColumn.js';
|
|
370
378
|
import '../Icons/ChartNoAxesCombined.js';
|
|
371
379
|
import '../Icons/ChartNoAxesGantt.js';
|
|
380
|
+
import '../Icons/ChartPanel.js';
|
|
372
381
|
import '../Icons/ChartPie.js';
|
|
373
382
|
import '../Icons/ChartScatter.js';
|
|
374
383
|
import '../Icons/ChartSpline.js';
|
|
@@ -404,10 +413,12 @@ import '../Icons/ChevronUp.js';
|
|
|
404
413
|
import '../Icons/ChevronsDownUp.js';
|
|
405
414
|
import '../Icons/ChevronsDown.js';
|
|
406
415
|
import '../Icons/ChevronsLeftRightEllipsis.js';
|
|
416
|
+
import '../Icons/ChevronsLeftRightLine.js';
|
|
407
417
|
import '../Icons/ChevronsLeftRight.js';
|
|
408
418
|
import '../Icons/ChevronsLeft.js';
|
|
409
419
|
import '../Icons/ChevronsRightLeft.js';
|
|
410
420
|
import '../Icons/ChevronsRight.js';
|
|
421
|
+
import '../Icons/ChevronsUpDownLine.js';
|
|
411
422
|
import '../Icons/ChevronsUpDown.js';
|
|
412
423
|
import '../Icons/ChevronsUp.js';
|
|
413
424
|
import '../Icons/Chrome.js';
|
|
@@ -438,6 +449,7 @@ import '../Icons/CircleEllipsis.js';
|
|
|
438
449
|
import '../Icons/CircleEqual.js';
|
|
439
450
|
import '../Icons/CircleFadingArrowUp.js';
|
|
440
451
|
import '../Icons/CircleFadingPlus.js';
|
|
452
|
+
import '../Icons/CircleFilled.js';
|
|
441
453
|
import '../Icons/CircleGauge.js';
|
|
442
454
|
import '../Icons/CircleHelp.js';
|
|
443
455
|
import '../Icons/CircleMinus.js';
|
|
@@ -462,6 +474,7 @@ import '../Icons/CircleUserRound.js';
|
|
|
462
474
|
import '../Icons/CircleUser.js';
|
|
463
475
|
import '../Icons/CircleX.js';
|
|
464
476
|
import '../Icons/Circle.js';
|
|
477
|
+
import '../Icons/CirclesIntersect.js';
|
|
465
478
|
import '../Icons/CircuitBoard.js';
|
|
466
479
|
import '../Icons/Citrus.js';
|
|
467
480
|
import '../Icons/Clapperboard.js';
|
|
@@ -503,10 +516,12 @@ import '../Icons/CloudAlert.js';
|
|
|
503
516
|
import '../Icons/CloudBackup.js';
|
|
504
517
|
import '../Icons/CloudCheck.js';
|
|
505
518
|
import '../Icons/CloudCog.js';
|
|
519
|
+
import '../Icons/CloudDatabase.js';
|
|
506
520
|
import '../Icons/CloudDownload.js';
|
|
507
521
|
import '../Icons/CloudDrizzle.js';
|
|
508
522
|
import '../Icons/CloudFog.js';
|
|
509
523
|
import '../Icons/CloudHail.js';
|
|
524
|
+
import '../Icons/CloudInfo.js';
|
|
510
525
|
import '../Icons/CloudLightning.js';
|
|
511
526
|
import '../Icons/CloudMoonRain.js';
|
|
512
527
|
import '../Icons/CloudMoon.js';
|
|
@@ -553,6 +568,7 @@ import '../Icons/Container.js';
|
|
|
553
568
|
import '../Icons/Contrast.js';
|
|
554
569
|
import '../Icons/Cookie.js';
|
|
555
570
|
import '../Icons/CookingPot.js';
|
|
571
|
+
import '../Icons/CoolS.js';
|
|
556
572
|
import '../Icons/CopyCheck.js';
|
|
557
573
|
import '../Icons/CopyMinus.js';
|
|
558
574
|
import '../Icons/CopyPlus.js';
|
|
@@ -630,6 +646,7 @@ import '../Icons/DraftingCompass.js';
|
|
|
630
646
|
import '../Icons/Drama.js';
|
|
631
647
|
import '../Icons/Dribbble.js';
|
|
632
648
|
import '../Icons/Drill.js';
|
|
649
|
+
import '../Icons/Drilldown.js';
|
|
633
650
|
import '../Icons/Drone.js';
|
|
634
651
|
import '../Icons/DropletOff.js';
|
|
635
652
|
import '../Icons/Droplet.js';
|
|
@@ -703,6 +720,7 @@ import '../Icons/FileExclamationPoint.js';
|
|
|
703
720
|
import '../Icons/FileHeadphone.js';
|
|
704
721
|
import '../Icons/FileHeart.js';
|
|
705
722
|
import '../Icons/FileImage.js';
|
|
723
|
+
import '../Icons/FileInfo.js';
|
|
706
724
|
import '../Icons/FileInput.js';
|
|
707
725
|
import '../Icons/FileJson_2.js';
|
|
708
726
|
import '../Icons/FileJson.js';
|
|
@@ -711,6 +729,7 @@ import '../Icons/FileKey.js';
|
|
|
711
729
|
import '../Icons/FileLineChart.js';
|
|
712
730
|
import '../Icons/FileLock_2.js';
|
|
713
731
|
import '../Icons/FileLock.js';
|
|
732
|
+
import '../Icons/FileLog.js';
|
|
714
733
|
import '../Icons/FileMinus_2.js';
|
|
715
734
|
import '../Icons/FileMinusCorner.js';
|
|
716
735
|
import '../Icons/FileMinus.js';
|
|
@@ -1012,6 +1031,7 @@ import '../Icons/LandPlot.js';
|
|
|
1012
1031
|
import '../Icons/Landmark.js';
|
|
1013
1032
|
import '../Icons/Languages.js';
|
|
1014
1033
|
import '../Icons/Laptop_2.js';
|
|
1034
|
+
import '../Icons/LaptopCloud.js';
|
|
1015
1035
|
import '../Icons/LaptopMinimalCheck.js';
|
|
1016
1036
|
import '../Icons/LaptopMinimal.js';
|
|
1017
1037
|
import '../Icons/Laptop.js';
|
|
@@ -1020,9 +1040,11 @@ import '../Icons/Lasso.js';
|
|
|
1020
1040
|
import '../Icons/Laugh.js';
|
|
1021
1041
|
import '../Icons/Layers_2.js';
|
|
1022
1042
|
import '../Icons/Layers_3.js';
|
|
1043
|
+
import '../Icons/LayersOff.js';
|
|
1023
1044
|
import '../Icons/LayersPlus.js';
|
|
1024
1045
|
import '../Icons/Layers.js';
|
|
1025
1046
|
import '../Icons/LayoutDashboard.js';
|
|
1047
|
+
import '../Icons/LayoutGridPlus.js';
|
|
1026
1048
|
import '../Icons/LayoutGrid.js';
|
|
1027
1049
|
import '../Icons/LayoutList.js';
|
|
1028
1050
|
import '../Icons/LayoutPanelLeft.js';
|
|
@@ -1084,6 +1106,7 @@ import '../Icons/LogIn.js';
|
|
|
1084
1106
|
import '../Icons/LogOut.js';
|
|
1085
1107
|
import '../Icons/Logs.js';
|
|
1086
1108
|
import '../Icons/Lollipop.js';
|
|
1109
|
+
import '../Icons/LoopedArrowsBoxes.js';
|
|
1087
1110
|
import '../Icons/Luggage.js';
|
|
1088
1111
|
import '../Icons/MSquare.js';
|
|
1089
1112
|
import '../Icons/Magnet.js';
|
|
@@ -1216,6 +1239,7 @@ import '../Icons/MoveUpRight.js';
|
|
|
1216
1239
|
import '../Icons/MoveUp.js';
|
|
1217
1240
|
import '../Icons/MoveVertical.js';
|
|
1218
1241
|
import '../Icons/Move.js';
|
|
1242
|
+
import '../Icons/MultiStep.js';
|
|
1219
1243
|
import '../Icons/Music_2.js';
|
|
1220
1244
|
import '../Icons/Music_3.js';
|
|
1221
1245
|
import '../Icons/Music_4.js';
|
|
@@ -1245,6 +1269,8 @@ import '../Icons/Okta.js';
|
|
|
1245
1269
|
import '../Icons/Omega.js';
|
|
1246
1270
|
import '../Icons/Option.js';
|
|
1247
1271
|
import '../Icons/Orbit.js';
|
|
1272
|
+
import '../Icons/OrientationLandscape.js';
|
|
1273
|
+
import '../Icons/OrientationPortrait.js';
|
|
1248
1274
|
import '../Icons/Origami.js';
|
|
1249
1275
|
import '../Icons/Outdent.js';
|
|
1250
1276
|
import '../Icons/Package_2.js';
|
|
@@ -1274,11 +1300,13 @@ import '../Icons/PanelLeftDashed.js';
|
|
|
1274
1300
|
import '../Icons/PanelLeftInactive.js';
|
|
1275
1301
|
import '../Icons/PanelLeftOpen.js';
|
|
1276
1302
|
import '../Icons/PanelLeftRightDashed.js';
|
|
1303
|
+
import '../Icons/PanelLeftToggle.js';
|
|
1277
1304
|
import '../Icons/PanelLeft.js';
|
|
1278
1305
|
import '../Icons/PanelRightClose.js';
|
|
1279
1306
|
import '../Icons/PanelRightDashed.js';
|
|
1280
1307
|
import '../Icons/PanelRightInactive.js';
|
|
1281
1308
|
import '../Icons/PanelRightOpen.js';
|
|
1309
|
+
import '../Icons/PanelRightToggle.js';
|
|
1282
1310
|
import '../Icons/PanelRight.js';
|
|
1283
1311
|
import '../Icons/PanelTopBottomDashed.js';
|
|
1284
1312
|
import '../Icons/PanelTopClose.js';
|
|
@@ -1353,6 +1381,7 @@ import '../Icons/PlayCircle.js';
|
|
|
1353
1381
|
import '../Icons/PlaySquare.js';
|
|
1354
1382
|
import '../Icons/Play.js';
|
|
1355
1383
|
import '../Icons/Plug_2.js';
|
|
1384
|
+
import '../Icons/PlugDiagonal.js';
|
|
1356
1385
|
import '../Icons/PlugZap_2.js';
|
|
1357
1386
|
import '../Icons/PlugZap.js';
|
|
1358
1387
|
import '../Icons/Plug.js';
|
|
@@ -1416,6 +1445,8 @@ import '../Icons/RefreshCcwDot.js';
|
|
|
1416
1445
|
import '../Icons/RefreshCcw.js';
|
|
1417
1446
|
import '../Icons/RefreshCwOff.js';
|
|
1418
1447
|
import '../Icons/RefreshCw.js';
|
|
1448
|
+
import '../Icons/RefreshX4Ccw.js';
|
|
1449
|
+
import '../Icons/RefreshX4Cw.js';
|
|
1419
1450
|
import '../Icons/Refrigerator.js';
|
|
1420
1451
|
import '../Icons/Regex.js';
|
|
1421
1452
|
import '../Icons/RemoveFormatting.js';
|
|
@@ -1611,6 +1642,7 @@ import '../Icons/SquareChevronLeft.js';
|
|
|
1611
1642
|
import '../Icons/SquareChevronRight.js';
|
|
1612
1643
|
import '../Icons/SquareChevronUp.js';
|
|
1613
1644
|
import '../Icons/SquareCode.js';
|
|
1645
|
+
import '../Icons/SquareDashedArrowSmallSquare.js';
|
|
1614
1646
|
import '../Icons/SquareDashedBottomCode.js';
|
|
1615
1647
|
import '../Icons/SquareDashedBottom.js';
|
|
1616
1648
|
import '../Icons/SquareDashedKanban.js';
|
|
@@ -1624,12 +1656,14 @@ import '../Icons/SquareFunction.js';
|
|
|
1624
1656
|
import '../Icons/SquareGanttChart.js';
|
|
1625
1657
|
import '../Icons/SquareKanban.js';
|
|
1626
1658
|
import '../Icons/SquareLibrary.js';
|
|
1659
|
+
import '../Icons/SquareList.js';
|
|
1627
1660
|
import '../Icons/SquareM.js';
|
|
1628
1661
|
import '../Icons/SquareMenu.js';
|
|
1629
1662
|
import '../Icons/SquareMinus.js';
|
|
1630
1663
|
import '../Icons/SquareMousePointer.js';
|
|
1631
1664
|
import '../Icons/SquareParkingOff.js';
|
|
1632
1665
|
import '../Icons/SquareParking.js';
|
|
1666
|
+
import '../Icons/SquarePartialList.js';
|
|
1633
1667
|
import '../Icons/SquarePause.js';
|
|
1634
1668
|
import '../Icons/SquarePen.js';
|
|
1635
1669
|
import '../Icons/SquarePercent.js';
|
|
@@ -1827,6 +1861,7 @@ import '../Icons/UserCircle_2.js';
|
|
|
1827
1861
|
import '../Icons/UserCircle.js';
|
|
1828
1862
|
import '../Icons/UserCog_2.js';
|
|
1829
1863
|
import '../Icons/UserCog.js';
|
|
1864
|
+
import '../Icons/UserKey.js';
|
|
1830
1865
|
import '../Icons/UserLock.js';
|
|
1831
1866
|
import '../Icons/UserMinus_2.js';
|
|
1832
1867
|
import '../Icons/UserMinus.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedChartNoData.js","sources":["../../../../src/components/StackedChartNoData/StackedChartNoData.tsx"],"sourcesContent":["import { GlobalCSSVariables } from '@grafana/design-tokens';\nimport { Icon } from '../Icon';\nimport { AlertTriangle } from '../Icons';\nimport { cssVariables, getStyles } from './StackedChartNoData.styles';\nimport { STACKED_CHART_DEFAULT_HEIGHT } from '../StackedChart/common';\n\nexport type StackedChartNoDataMessageFormatter = (args: {\n period: string;\n className: string;\n}) => React.ReactElement;\n\nexport interface StackedChartNoDataProps {\n /**\n * Height to render the stacked chart skeleton, in pixels\n */\n height?: number;\n\n /**\n * Period for which this chart has no data, as a preformatted string\n */\n period?: string;\n\n /**\n * Optional formatter for content message\n */\n formatMessage?: StackedChartNoDataMessageFormatter;\n}\n\n/**\n * The default content formatter assumes a percentage value, but you can create\n * your own formatter using the provided arguments of total and index. The\n * colorClassName allows you to set the colour of some text or an icon to the\n * same colour as the equivalent chart segment.\n */\nconst defaultContentFormatter: StackedChartNoDataMessageFormatter = ({ period, className }) => (\n <>\n No data for <span className={className}>{period}</span>\n </>\n);\n\nexport const StackedChartNoData = ({\n height = STACKED_CHART_DEFAULT_HEIGHT,\n period = 'current',\n formatMessage = defaultContentFormatter,\n}: StackedChartNoDataProps) => {\n const styles = getStyles(height);\n\n return (\n <>\n <GlobalCSSVariables variables={cssVariables()} defaultColorMode={null} />\n <div className={styles.container}>\n <Icon component={AlertTriangle} size=\"sm\" />\n <span>{formatMessage({ period, className: styles.label })}</span>\n </div>\n </>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StackedChartNoData.js","sources":["../../../../src/components/StackedChartNoData/StackedChartNoData.tsx"],"sourcesContent":["import { GlobalCSSVariables } from '@grafana/design-tokens';\nimport { Icon } from '../Icon';\nimport { AlertTriangle } from '../Icons';\nimport { cssVariables, getStyles } from './StackedChartNoData.styles';\nimport { STACKED_CHART_DEFAULT_HEIGHT } from '../StackedChart/common';\n\nexport type StackedChartNoDataMessageFormatter = (args: {\n period: string;\n className: string;\n}) => React.ReactElement;\n\nexport interface StackedChartNoDataProps {\n /**\n * Height to render the stacked chart skeleton, in pixels\n */\n height?: number;\n\n /**\n * Period for which this chart has no data, as a preformatted string\n */\n period?: string;\n\n /**\n * Optional formatter for content message\n */\n formatMessage?: StackedChartNoDataMessageFormatter;\n}\n\n/**\n * The default content formatter assumes a percentage value, but you can create\n * your own formatter using the provided arguments of total and index. The\n * colorClassName allows you to set the colour of some text or an icon to the\n * same colour as the equivalent chart segment.\n */\nconst defaultContentFormatter: StackedChartNoDataMessageFormatter = ({ period, className }) => (\n <>\n No data for <span className={className}>{period}</span>\n </>\n);\n\nexport const StackedChartNoData = ({\n height = STACKED_CHART_DEFAULT_HEIGHT,\n period = 'current',\n formatMessage = defaultContentFormatter,\n}: StackedChartNoDataProps) => {\n const styles = getStyles(height);\n\n return (\n <>\n <GlobalCSSVariables variables={cssVariables()} defaultColorMode={null} />\n <div className={styles.container}>\n <Icon component={AlertTriangle} size=\"sm\" />\n <span>{formatMessage({ period, className: styles.label })}</span>\n </div>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,0BAA8D,CAAC,EAAE,MAAA,EAAQ,SAAA,uBAC7E,IAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA;AAAA,EAAA,cAAA;AAAA,kBACY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAuB,QAAA,EAAA,MAAA,EAAO;AAAA,CAAA,EAClD,CAAA;AAGK,MAAM,qBAAqB,CAAC;AAAA,EACjC,MAAA,GAAS,4BAAA;AAAA,EACT,MAAA,GAAS,SAAA;AAAA,EACT,aAAA,GAAgB;AAClB,CAAA,KAA+B;AAC7B,EAAA,MAAM,MAAA,GAAS,UAAU,MAAM,CAAA;AAE/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,YAAA,EAAa,EAAG,kBAAkB,IAAA,EAAM,CAAA;AAAA,oBACvE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,SAAA,EACrB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,aAAA,EAAe,IAAA,EAAK,IAAA,EAAK,CAAA;AAAA,sBAC1C,GAAA,CAAC,UAAM,QAAA,EAAA,aAAA,CAAc,EAAE,QAAQ,SAAA,EAAW,MAAA,CAAO,KAAA,EAAO,CAAA,EAAE;AAAA,KAAA,EAC5D;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|