@noya-app/noya-designsystem 0.1.27 → 0.1.28
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/.turbo/turbo-build.log +8 -7
- package/CHANGELOG.md +6 -0
- package/dist/index.js +12691 -4132
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12741 -4161
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
- package/tsup.config.ts +12 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ActivityIndicator.tsx","../src/components/Avatar.tsx","../src/components/Stack.tsx","../src/utils/breakpoints.ts","../src/utils/withSeparatorElements.ts","../src/components/Button.tsx","../src/components/Tooltip.tsx","../src/components/Chip.tsx","../src/contexts/DesignSystemConfiguration.tsx","../src/components/Toast.tsx","../src/components/IconButton.tsx","../src/components/Icons.tsx","../src/theme/dark.ts","../src/theme/light.ts","../src/mediaQuery.ts","../src/contexts/DialogContext.tsx","../src/components/Dialog.tsx","../src/components/Spacer.tsx","../src/components/InputField.tsx","../../noya-react-utils/src/components/AutoSizer.tsx","../../noya-react-utils/src/hooks/useSize.ts","../../noya-react-utils/src/components/FileDropTarget.tsx","../../noya-react-utils/src/hooks/useFileDropTarget.ts","../../noya-react-utils/src/hooks/useDeepArray.ts","../../noya-react-utils/src/hooks/useDeepState.ts","../../noya-react-utils/src/hooks/useFetch.ts","../../noya-react-utils/src/hooks/useIsMounted.ts","../../noya-react-utils/src/hooks/useLateReference.ts","../../noya-react-utils/src/hooks/useLazyValue.ts","../../noya-react-utils/src/hooks/useMutableState.ts","../../noya-react-utils/src/hooks/usePersistentState.ts","../../noya-react-utils/src/hooks/usePixelRatio.ts","../../noya-react-utils/src/hooks/useShallowArray.ts","../../noya-react-utils/src/hooks/useStableCallback.ts","../../noya-react-utils/src/hooks/useSystemColorScheme.ts","../../noya-react-utils/src/hooks/useUrlHashParameters.ts","../../emitter/src/index.ts","../../noya-react-utils/src/utils/ClientStorage.ts","../../noya-react-utils/src/utils/assignRef.ts","../src/utils/handleNudge.ts","../src/components/DropdownMenu.tsx","../src/components/internal/Menu.tsx","../src/components/internal/TextInput.tsx","../src/contexts/GlobalInputBlurContext.tsx","../src/components/Popover.tsx","../src/contexts/FloatingWindowContext.tsx","../src/hooks/useHover.ts","../src/components/ContextMenu.tsx","../src/components/Divider.tsx","../src/components/DraggableMenuButton.tsx","../src/components/FillInputField.tsx","../../noya-file-format/src/types.ts","../src/components/FillPreviewBackground.tsx","../src/contexts/ImageDataContext.tsx","../src/hooks/useObjectURL.ts","../src/utils/sketchColor.ts","../src/utils/getGradientBackground.tsx","../src/components/FloatingWindow.tsx","../src/components/GradientPicker.tsx","../src/components/Grid.tsx","../src/components/GridView.tsx","../src/components/ScrollArea.tsx","../src/components/InputFieldWithCompletions.tsx","../src/utils/fuzzyScorer.ts","../src/components/ListView.tsx","../src/hooks/mergeEventHandlers.ts","../src/components/Sortable.tsx","../src/components/Text.tsx","../src/components/InspectorContainer.tsx","../src/components/Label.tsx","../src/components/LabeledElementView.tsx","../src/components/Progress.tsx","../src/components/RadioGroup.tsx","../src/components/Select.tsx","../src/components/SelectMenu.tsx","../src/components/Slider.tsx","../src/components/Switch.tsx","../src/components/TextArea.tsx","../src/components/TreeView.tsx","../src/components/WorkspaceLayout.tsx","../src/hooks/usePreservePanelSize.tsx","../src/hooks/useWindowSize.tsx","../src/hooks/usePlatform.ts","../src/utils/createSectionedMenu.ts","../src/utils/sketchPattern.ts","../src/components/ArrayController.tsx","../src/components/InspectorPrimitives.tsx","../src/components/DimensionInput.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\ninterface Props {\n size?: number;\n opacity?: number;\n color?: string;\n trackColor?: string;\n}\n\ninterface SpinnerProps {\n $opacity: number;\n}\n\ninterface SpinnerCircleProps {\n $size: number;\n $color: string;\n $trackColor: string;\n}\n\nconst spin = keyframes`\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n`;\n\nconst Spinner = styled.div<SpinnerProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: ${({ $opacity }: SpinnerProps) => $opacity};\n`;\n\n// Use css syntax to support keyframes\nconst SpinnerCircle = styled.div<SpinnerCircleProps>`\n border: 2px solid ${({ $trackColor }) => $trackColor};\n border-top: 2px solid ${({ $color }) => $color};\n border-radius: 50%;\n width: ${({ $size }) => `${$size}px`};\n height: ${({ $size }) => `${$size}px`};\n animation: ${spin} 1s linear infinite;\n`;\n\nexport const ActivityIndicator = memo(function ActivityIndicator({\n size = 16,\n opacity = 1,\n color = \"black\",\n trackColor = \"rgba(0, 0, 0, 0.1)\",\n}: Props) {\n return (\n <Spinner $opacity={opacity}>\n <SpinnerCircle $size={size} $color={color} $trackColor={trackColor} />\n </Spinner>\n );\n});\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Stack } from \"./Stack\";\n\nconst AvatarRoot = styled(AvatarPrimitive.Root)<{\n size: number;\n overflow: number;\n}>(({ theme, size, overflow }) => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"middle\",\n overflow: \"hidden\",\n userSelect: \"none\",\n width: size,\n height: size,\n borderRadius: \"100%\",\n backgroundColor: theme.colors.inputBackground,\n ...(overflow && {\n margin: `-${overflow}px`,\n }),\n\n \"&:hover\": {\n boxShadow: `0 0 0 2px ${theme.colors.sidebar.background}`,\n opacity: 0.9,\n },\n}));\n\nconst AvatarImage = styled(AvatarPrimitive.Image)({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius: \"inherit\",\n});\n\nconst AvatarFallback = styled(AvatarPrimitive.Fallback)<{\n size: number;\n}>(({ theme, size }) => ({\n fontSize: \"0.8rem\",\n fontWeight: 500,\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"white\",\n lineHeight: `${size}px`,\n}));\n\nexport const Avatar = forwardRef(function Avatar(\n {\n image,\n name,\n fallback,\n size = 19,\n overflow = 0,\n ...props\n }: {\n image?: string;\n name?: string;\n fallback?: string;\n size?: number;\n overflow?: number;\n style?: React.CSSProperties;\n className?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <AvatarRoot ref={forwardedRef} size={size} overflow={overflow} {...props}>\n <AvatarImage src={image} alt={name} />\n <AvatarFallback size={size}>{fallback}</AvatarFallback>\n </AvatarRoot>\n );\n});\n\nconst AvatarStackItemWrapper = styled.div<{\n $size: number;\n}>(({ $size, theme }) => ({\n position: \"relative\",\n width: $size,\n height: $size,\n marginLeft: \"-8px\",\n // outline: `2px solid ${theme.colors.sidebar.background}`,\n borderRadius: \"50%\",\n clipPath: `circle(50%)`,\n overflow: \"hidden\",\n}));\n\nexport function AvatarStack({\n size = 19,\n children,\n}: {\n size?: number;\n children: React.ReactNode;\n}) {\n const childrenArray = React.Children.toArray(children).map((child) => {\n return React.cloneElement(child as React.ReactElement, { size });\n });\n\n return (\n <Stack.H>\n {childrenArray.map((child, index) => {\n if (index === 0) return child;\n\n return (\n <AvatarStackItemWrapper $size={size} key={index}>\n {child}\n </AvatarStackItemWrapper>\n );\n })}\n </Stack.H>\n );\n}\n","import React, {\n Children,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n ReactHTML,\n ReactNode,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { BreakpointCollection, mergeBreakpoints } from \"../utils/breakpoints\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\n\ninterface StyleProps {\n display?: \"flex\" | \"inline-flex\" | \"none\" | \"block\";\n visibility?: CSSProperties[\"visibility\"];\n position?: CSSProperties[\"position\"];\n zIndex?: CSSProperties[\"zIndex\"];\n gap?: CSSProperties[\"gap\"];\n inset?: CSSProperties[\"inset\"];\n top?: CSSProperties[\"top\"];\n right?: CSSProperties[\"right\"];\n bottom?: CSSProperties[\"bottom\"];\n left?: CSSProperties[\"left\"];\n flexDirection?: CSSProperties[\"flexDirection\"];\n justifyContent?: CSSProperties[\"justifyContent\"];\n alignItems?: CSSProperties[\"alignItems\"];\n alignSelf?: CSSProperties[\"alignSelf\"];\n flex?: CSSProperties[\"flex\"];\n flexWrap?: CSSProperties[\"flexWrap\"];\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n maxHeight?: CSSProperties[\"maxHeight\"];\n width?: CSSProperties[\"width\"];\n minWidth?: CSSProperties[\"minWidth\"];\n maxWidth?: CSSProperties[\"maxWidth\"];\n aspectRatio?: CSSProperties[\"aspectRatio\"];\n padding?: CSSProperties[\"padding\"];\n paddingVertical?: string | number;\n paddingHorizontal?: string | number;\n margin?: CSSProperties[\"margin\"];\n background?: CSSProperties[\"background\"];\n backgroundSize?: CSSProperties[\"backgroundSize\"];\n backgroundPosition?: CSSProperties[\"backgroundPosition\"];\n borderRadius?: CSSProperties[\"borderRadius\"];\n overflowX?: CSSProperties[\"overflowX\"];\n overflowY?: CSSProperties[\"overflowY\"];\n overflow?: CSSProperties[\"overflow\"];\n textOverflow?: CSSProperties[\"textOverflow\"];\n boxShadow?: CSSProperties[\"boxShadow\"];\n outline?: CSSProperties[\"outline\"];\n border?: CSSProperties[\"border\"];\n borderTop?: CSSProperties[\"borderTop\"];\n borderRight?: CSSProperties[\"borderRight\"];\n borderBottom?: CSSProperties[\"borderBottom\"];\n borderLeft?: CSSProperties[\"borderLeft\"];\n cursor?: CSSProperties[\"cursor\"];\n userSelect?: CSSProperties[\"userSelect\"];\n transition?: CSSProperties[\"transition\"];\n opacity?: CSSProperties[\"opacity\"];\n filter?: CSSProperties[\"filter\"];\n color?: CSSProperties[\"color\"];\n order?: CSSProperties[\"order\"];\n pointerEvents?: CSSProperties[\"pointerEvents\"];\n lineHeight?: CSSProperties[\"lineHeight\"];\n isolation?: CSSProperties[\"isolation\"];\n backdropFilter?: CSSProperties[\"backdropFilter\"];\n}\n\nexport type StackBreakpointList = BreakpointCollection<StyleProps>;\n\ninterface Props extends StyleProps {\n id?: string;\n as?: keyof ReactHTML;\n className?: string;\n children?: ReactNode;\n separator?: Parameters<typeof withSeparatorElements>[1];\n breakpoints?: StackBreakpointList | null | false;\n href?: string; // Shouldn't be here, ideally\n tabIndex?: number;\n}\n\nconst Element = styled.div<{\n $styleProps: StyleProps;\n $breakpoints?: StackBreakpointList | null | false;\n}>(({ $styleProps, $breakpoints }) => ({\n ...$styleProps,\n ...mergeBreakpoints($breakpoints || []),\n}));\n\nconst StackBase = forwardRef(function StackBase(\n {\n id,\n className,\n as,\n children,\n separator,\n breakpoints,\n tabIndex,\n href,\n ...rest\n }: Props,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const elements = separator\n ? withSeparatorElements(Children.toArray(children), separator)\n : children;\n\n const styleProps: StyleProps = {\n display: \"flex\",\n position: \"relative\",\n alignItems: \"stretch\",\n ...rest,\n };\n\n return (\n <Element\n ref={forwardedRef as any}\n id={id}\n className={className}\n as={as}\n $styleProps={styleProps}\n $breakpoints={breakpoints}\n tabIndex={tabIndex}\n {...(href && { href })}\n >\n {elements}\n </Element>\n );\n});\n\ntype StackProps = Omit<Props, \"flexDirection\">;\n\nconst VerticalStack = memo(\n forwardRef(function VStack(\n props: StackProps,\n forwardedRef: ForwardedRef<HTMLElement>\n ) {\n return <StackBase {...props} flexDirection=\"column\" ref={forwardedRef} />;\n })\n);\n\nconst HorizontalStack = memo(\n forwardRef(function HStack(\n props: StackProps,\n forwardedRef: ForwardedRef<HTMLElement>\n ) {\n return <StackBase {...props} flexDirection=\"row\" ref={forwardedRef} />;\n })\n);\n\nexport const Stack = {\n V: VerticalStack,\n H: HorizontalStack,\n};\n","import { CSSObject } from \"styled-components\";\n\ntype BreakpointKey = number | string;\n\nexport type Breakpoint<T extends object> = [BreakpointKey, T];\n\nexport type BreakpointCollection<T extends object> =\n | Breakpoint<T>[]\n | Record<BreakpointKey, T>;\n\nexport type StyleMap = Record<string, CSSObject>;\n\nexport function mergeBreakpoints(\n breakpoints: BreakpointCollection<CSSObject>\n): StyleMap;\nexport function mergeBreakpoints<T extends object>(\n breakpoints: BreakpointCollection<T>,\n transform?: (value: T) => CSSObject\n): StyleMap;\nexport function mergeBreakpoints<T extends object>(\n breakpoints: BreakpointCollection<T>,\n transform?: (value: T) => CSSObject\n): StyleMap {\n const breakpointMap = Array.isArray(breakpoints)\n ? breakpoints.reduce(\n (result: Record<number, T>, item: any /* TODO Fix type */) => {\n const [key, value] = item;\n result[key] = result[key] ? { ...result[key], ...value } : value;\n return result;\n },\n {}\n )\n : breakpoints;\n\n const breakpointList = Object.entries(breakpointMap) as Breakpoint<T>[];\n\n const transformedList = breakpointList\n .sort((a, b) => Number(b[0]) - Number(a[0]))\n .map(([width, value]: Breakpoint<T>) => [\n `@media (min-width: ${width}px)`,\n transform?.(value) ?? value,\n ]);\n\n return Object.fromEntries(transformedList);\n}\n","import { Children, cloneElement, isValidElement, ReactNode } from \"react\";\n\nfunction createKey(key: string | number) {\n return `s-${key}`;\n}\n\nexport default function withSeparatorElements(\n elements: ReactNode,\n separator: ReactNode | (() => ReactNode)\n) {\n const childrenArray = Children.toArray(elements);\n\n for (let i = childrenArray.length - 1; i > 0; i--) {\n let sep =\n typeof separator === \"function\"\n ? separator()\n : isValidElement(separator)\n ? cloneElement(separator, { key: createKey(i) })\n : separator;\n\n if (isValidElement(sep) && sep.key == null) {\n sep = cloneElement(sep, { key: createKey(i) });\n }\n\n if (!sep || typeof sep === \"boolean\") continue;\n\n childrenArray.splice(i, 0, sep);\n }\n\n return childrenArray;\n}\n","import React, {\n CSSProperties,\n ForwardedRef,\n forwardRef,\n ReactNode,\n useCallback,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype ButtonVariant =\n | \"normal\"\n | \"primary\"\n | \"primaryGradient\"\n | \"secondary\"\n | \"secondaryBright\"\n | \"white\"\n | \"thin\"\n | \"floating\"\n | \"none\";\n\ntype ButtonSize = \"normal\" | \"large\";\n\n/* ----------------------------------------------------------------------------\n * Element\n * ------------------------------------------------------------------------- */\n\nexport const ButtonElement = styled.button<{\n $active: boolean;\n $variant: ButtonVariant;\n $size: ButtonSize;\n $flex?: CSSProperties[\"flex\"];\n $defaultBackground?: string;\n}>(\n ({\n theme,\n $active,\n disabled,\n $variant,\n $size,\n $flex,\n $defaultBackground = theme.colors.inputBackground,\n }) => ({\n ...($size === \"large\"\n ? theme.textStyles.heading4\n : theme.textStyles.button),\n textDecoration: \"none\",\n lineHeight: \"1\",\n flex: $flex ?? \"0 0 auto\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n WebkitAppRegion: \"no-drag\",\n userSelect: \"none\",\n minWidth: $variant === \"normal\" ? \"31px\" : undefined,\n textAlign: \"left\",\n borderRadius: \"4px\",\n paddingTop: $variant === \"none\" ? \"0px\" : \"4px\",\n paddingRight:\n $variant === \"none\" ? \"0px\" : $variant === \"thin\" ? \"1px\" : \"6px\",\n paddingBottom: $variant === \"none\" ? \"0px\" : \"4px\",\n paddingLeft:\n $variant === \"none\" ? \"0px\" : $variant === \"thin\" ? \"1px\" : \"6px\",\n ...($size === \"large\" && {\n paddingTop: \"12px\",\n paddingRight: \"16px\",\n paddingBottom: \"12px\",\n paddingLeft: \"16px\",\n }),\n background: $active\n ? theme.colors.primary\n : $variant === \"primaryGradient\"\n ? `linear-gradient(90deg, ${theme.colors.primary}, ${theme.colors.primaryLight})`\n : $variant === \"none\" || $variant === \"thin\"\n ? \"transparent\"\n : $defaultBackground,\n color: $active ? \"white\" : theme.colors.text,\n opacity: disabled ? 0.25 : 1,\n \"&:focus\": {\n outline: `2px solid ${theme.colors.primary}`,\n boxShadow: `0 0 0 1px ${theme.colors.popover.background} inset`,\n },\n \"&:hover\": {\n background:\n $variant === \"primaryGradient\" || $active\n ? theme.colors.primaryLight\n : theme.colors.inputBackgroundLight,\n },\n \"&:active\": {\n background:\n $variant === \"primaryGradient\" || $active\n ? theme.colors.primary\n : theme.colors.activeBackground,\n },\n ...($variant === \"primary\" && {\n background: theme.colors.primary,\n color: \"white\",\n \"&:hover\": {\n background: theme.colors.primaryLight,\n },\n \"&:active\": {\n background: theme.colors.primary,\n },\n }),\n ...($variant === \"secondary\" && {\n background: theme.colors.secondary,\n color: \"white\",\n \"&:hover\": {\n background: theme.colors.secondaryLight,\n },\n \"&:active\": {\n background: theme.colors.secondary,\n },\n }),\n ...($variant === \"secondaryBright\" && {\n background: \"#0ab557\",\n color: \"white\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n ...($variant === \"white\" && {\n background: \"white\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n ...($variant === \"floating\" && {\n background: \"white\",\n color: theme.colors.text,\n boxShadow: \"0 1px 2px rgba(0, 0, 0, 0.1)\",\n fontSize: \"12px\",\n padding: \"0px 4px\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \"& *\": {\n pointerEvents: \"none\",\n },\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Content\n * ------------------------------------------------------------------------- */\n\nconst ButtonContent = styled.span(({ theme }) => ({\n // Line height of small text - maybe figure out better way to ensure\n // icons don't have a smaller height\n minHeight: \"19px\",\n display: \"flex\",\n alignItems: \"center\",\n flex: \"1\",\n justifyContent: \"center\",\n\n // Helps with alignment with the default small text\n lineHeight: \"15px\",\n}));\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nexport interface ButtonRootProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n flex?: CSSProperties[\"flex\"];\n tabIndex?: number;\n children: ReactNode;\n active?: boolean;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n tooltip?: ReactNode;\n onClick?: (event: React.MouseEvent) => void;\n onPointerDown?: (event: React.PointerEvent) => void;\n contentStyle?: CSSProperties;\n defaultBackground?: string;\n as?: React.ElementType;\n htmlFor?: string;\n href?: string;\n target?: string;\n rel?: string;\n}\n\nexport const Button = forwardRef(function Button(\n {\n id,\n className,\n style,\n flex,\n tabIndex,\n tooltip,\n active = false,\n disabled = false,\n variant = \"normal\",\n size = \"normal\",\n contentStyle,\n defaultBackground,\n onClick,\n children,\n ...rest // Propagate any other props so this component works as a Slot\n }: ButtonRootProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const buttonElement = (\n <ButtonElement\n ref={forwardedRef}\n id={id}\n className={className}\n style={style}\n $flex={flex}\n tabIndex={tabIndex}\n $active={active}\n disabled={disabled}\n $variant={variant}\n $size={size}\n $defaultBackground={defaultBackground}\n onClick={onClick}\n // Prevent double clicking a button from triggering any callbacks in ancestors\n onDoubleClick={useCallback((event: React.MouseEvent) => {\n event.stopPropagation();\n }, [])}\n {...rest}\n >\n <ButtonContent style={contentStyle}>{children}</ButtonContent>\n </ButtonElement>\n );\n\n return tooltip ? (\n <Tooltip content={tooltip}>{buttonElement}</Tooltip>\n ) : (\n buttonElement\n );\n});\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport React, { memo, ReactNode } from 'react';\nimport styled from 'styled-components';\n\n// const Arrow = styled(TooltipPrimitive.Arrow)(({ theme }) => ({\n// fill: theme.colors.popover.background,\n// }));\n\nconst Content = styled(TooltipPrimitive.Content)(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.text,\n borderRadius: 3,\n padding: `${theme.sizes.spacing.small}px ${theme.sizes.spacing.medium}px`,\n backgroundColor: theme.colors.popover.background,\n boxShadow: '0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)',\n border: `1px solid ${theme.colors.dividerStrong}`,\n}));\n\ninterface Props {\n children: ReactNode;\n content: ReactNode;\n}\n\nexport const Tooltip = memo(function Tooltip({ children, content }: Props) {\n return (\n <TooltipPrimitive.Provider>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <Content\n side=\"bottom\"\n align=\"center\"\n sideOffset={2}\n collisionPadding={8}\n >\n {content}\n {/* <Arrow /> */}\n </Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n});\n","import { Cross1Icon, PlusIcon } from \"@noya-app/noya-icons\";\nimport React, { forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\nimport { useDesignSystemTheme } from \"../contexts/DesignSystemConfiguration\";\nimport { useHover } from \"../hooks/useHover\";\n\ntype ChipColorScheme = \"primary\" | \"secondary\" | \"error\";\ntype ChipSize = \"small\" | \"medium\" | \"large\";\ntype ChipVariant = \"solid\" | \"outlined\" | \"ghost\";\n\nconst ChipElement = styled.span<{\n $colorScheme?: ChipColorScheme;\n $size: ChipSize;\n $monospace: boolean;\n $variant: ChipVariant;\n $isInteractive: boolean;\n}>(({ theme, $colorScheme, $size, $variant, $monospace, $isInteractive }) => {\n const color =\n $colorScheme === \"primary\"\n ? theme.colors.primary\n : $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.text;\n\n const backgroundColor =\n $colorScheme === \"primary\"\n ? theme.colors.primaryPastel\n : $colorScheme === \"secondary\"\n ? theme.colors.secondaryPastel\n : $colorScheme === \"error\"\n ? \"rgb(255, 219, 219)\"\n : theme.colors.inputBackground;\n\n const subtleColor =\n $colorScheme === \"primary\"\n ? \"rgba(238, 229, 255, 0.2)\"\n : $colorScheme === \"secondary\"\n ? \"rgba(205, 238, 231, 0.2)\"\n : $colorScheme === \"error\"\n ? \"rgba(255, 219, 219, 0.2)\"\n : \"rgba(0, 0, 0, 0.1)\";\n\n return {\n textTransform: \"initial\",\n borderRadius: 4,\n userSelect: \"none\",\n display: \"inline-flex\",\n alignItems: \"center\",\n // lineHeight: \"1.4\",\n lineHeight: \"15px\",\n whiteSpace: \"pre\",\n ...($size === \"large\"\n ? {\n fontSize: \"11px\",\n padding: \"4px 8px\",\n }\n : $size === \"medium\"\n ? {\n fontSize: \"10px\",\n padding: \"2px 6px\",\n }\n : {\n fontSize: \"9px\",\n padding: \"0px 4px\",\n }),\n ...($monospace && {\n fontFamily: theme.fonts.monospace,\n }),\n ...($variant === \"solid\"\n ? {\n color,\n backgroundColor,\n }\n : $variant === \"outlined\"\n ? {\n color,\n backgroundColor: \"transparent\",\n boxShadow: `0 0 0 1px ${subtleColor} inset`,\n }\n : {}),\n \"&:hover\": {\n ...($variant === \"outlined\" && {\n backgroundColor: subtleColor,\n boxShadow: \"none\",\n }),\n },\n ...($isInteractive && {\n cursor: \"pointer\",\n \"&:hover\": {\n opacity: 0.85,\n },\n }),\n };\n});\n\nconst DeleteElement = styled(Cross1Icon)<{\n size: ChipSize;\n}>(({ size }) => ({\n position: \"relative\",\n marginRight: \"-2px\",\n cursor: \"pointer\",\n opacity: 0.5,\n\n ...(size === \"large\"\n ? {\n marginLeft: \"2px\",\n // top: '-1px',\n transform: \"scale(0.75)\",\n }\n : {\n transform: \"scale(0.6)\",\n }),\n\n \"&:hover\": {\n opacity: 0.85,\n },\n}));\n\nconst ignoredProps = new Set([\"size\", \"isOnlyChild\"]);\n\nconst AddElement = styled(PlusIcon).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n size: ChipSize;\n isOnlyChild: boolean;\n}>(({ size, isOnlyChild }) => ({\n position: \"relative\",\n marginLeft: \"-2px\",\n cursor: \"pointer\",\n opacity: 0.5,\n\n ...(size === \"large\"\n ? {\n marginRight: \"2px\",\n top: \"-1px\",\n transform: \"scale(0.75)\",\n }\n : {\n marginRight: \"-2px\",\n transform: \"scale(0.6)\",\n }),\n\n \"&:hover\": {\n opacity: 0.85,\n },\n}));\n\nexport interface ChipProps {\n id?: string;\n className?: string;\n colorScheme?: ChipColorScheme;\n variant?: ChipVariant;\n size?: ChipSize;\n children?: React.ReactNode;\n clickable?: boolean;\n deletable?: boolean;\n addable?: boolean;\n monospace?: boolean;\n onDelete?: () => void;\n onAdd?: () => void;\n onClick?: () => void;\n onHoverDeleteChange?: (hovering: boolean) => void;\n style?: React.CSSProperties;\n tabIndex?: number;\n}\n\nexport const Chip = memo(\n forwardRef(function Chip(\n {\n colorScheme,\n children,\n deletable,\n addable,\n clickable,\n style,\n size = \"large\",\n variant = \"solid\",\n monospace = false,\n tabIndex,\n onDelete,\n onClick,\n onAdd,\n onHoverDeleteChange,\n ...rest\n }: ChipProps,\n forwardedRef: React.ForwardedRef<HTMLSpanElement>\n ) {\n const theme = useDesignSystemTheme();\n\n const { hoverProps: hoverDeleteProps } = useHover({\n onHoverChange: onHoverDeleteChange,\n });\n\n const handleClick = !children && !deletable && addable ? onAdd : onClick;\n\n const color =\n colorScheme === \"primary\"\n ? theme.colors.primary\n : colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.text;\n\n return (\n <ChipElement\n ref={forwardedRef}\n $variant={variant}\n $colorScheme={colorScheme}\n style={style}\n onClick={handleClick}\n $size={size}\n $monospace={monospace}\n $isInteractive={!!handleClick || clickable === true}\n tabIndex={tabIndex}\n {...rest}\n >\n {addable && (\n <AddElement\n size={size}\n isOnlyChild={!children && !deletable}\n onClick={\n onAdd\n ? (event) => {\n event.stopPropagation();\n onAdd?.();\n }\n : undefined\n }\n color={color}\n />\n )}\n {children}\n {deletable && (\n <DeleteElement\n size={size}\n {...(hoverDeleteProps as any)}\n onClick={\n onDelete\n ? (event) => {\n event.stopPropagation();\n onDelete?.();\n }\n : undefined\n }\n color={color}\n />\n )}\n </ChipElement>\n );\n })\n);\n","import { getCurrentPlatform, PlatformName } from \"@noya-app/noya-keymap\";\nimport React, {\n createContext,\n memo,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { ThemeProvider, useTheme } from \"styled-components\";\nimport { ToastProvider } from \"../components/Toast\";\nimport { Theme } from \"../theme\";\nimport * as darkTheme from \"../theme/dark\";\nimport * as lightTheme from \"../theme/light\";\nimport { DialogProvider } from \"./DialogContext\";\nimport { FloatingWindowProvider } from \"./FloatingWindowContext\";\n\nexport const DesignSystemThemeProvider = memo(\n function DesignSystemThemeProvider({\n children,\n theme,\n }: {\n children: ReactNode;\n theme?: Theme;\n }) {\n let parentTheme: Theme | undefined;\n\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n parentTheme = useTheme();\n } catch (e) {\n // console.error(e);\n }\n\n if (theme) {\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n } else if (parentTheme) {\n return children;\n } else {\n return <ThemeProvider theme={lightTheme}>{children}</ThemeProvider>;\n }\n }\n);\n\nexport type DesignSystemConfigurationContextValue = {\n platform: PlatformName;\n};\n\nconst DesignSystemConfigurationContext =\n createContext<DesignSystemConfigurationContextValue>({\n platform: \"key\",\n });\n\nexport const DesignSystemConfigurationProvider = memo(\n function DesignSystemConfigurationProvider({\n children,\n theme,\n platform,\n }: {\n children: ReactNode;\n theme?: Theme | \"light\" | \"dark\";\n platform?: PlatformName;\n }) {\n const [internalPlatform, setInternalPlatform] = useState<PlatformName>(\n platform ?? \"key\"\n );\n\n useEffect(() => {\n if (platform !== undefined) return;\n\n if (typeof navigator !== \"undefined\") {\n setInternalPlatform(getCurrentPlatform(navigator));\n }\n }, [platform]);\n\n const contextValue = useMemo(\n () => ({ platform: platform ?? internalPlatform }),\n [platform, internalPlatform]\n );\n\n const resolvedTheme =\n theme === \"light\"\n ? lightTheme\n : theme === \"dark\"\n ? darkTheme\n : theme ?? lightTheme;\n\n return (\n <DesignSystemConfigurationContext.Provider value={contextValue}>\n <ThemeProvider theme={resolvedTheme}>\n <DialogProvider>\n <ToastProvider>\n <FloatingWindowProvider>{children}</FloatingWindowProvider>\n </ToastProvider>\n </DialogProvider>\n </ThemeProvider>\n </DesignSystemConfigurationContext.Provider>\n );\n }\n);\n\nexport function useDesignSystemConfiguration(): DesignSystemConfigurationContextValue {\n return useContext(DesignSystemConfigurationContext);\n}\n\nexport function useDesignSystemTheme() {\n return useTheme();\n}\n","import * as ToastPrimitive from '@radix-ui/react-toast';\nimport React, { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { IconButton } from './IconButton';\n\nconst ToastViewport = styled(ToastPrimitive.Viewport)({\n position: 'fixed',\n bottom: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n padding: 20,\n gap: 10,\n minWidth: 200,\n maxWidth: '100vw',\n margin: 0,\n listStyle: 'none',\n zIndex: 2147483647,\n outline: 'none',\n});\n\nconst ToastRoot = styled(ToastPrimitive.Root)(({ theme }) => ({\n borderRadius: 4,\n fontSize: 14,\n backgroundColor: theme.colors.popover.background,\n boxShadow: '0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)',\n color: theme.colors.textMuted,\n\n padding: '8px 10px',\n display: 'grid',\n gridTemplateAreas: '\"title action\" \"description action\"',\n gridTemplateColumns: 'auto max-content',\n columnGap: 10,\n alignItems: 'center',\n}));\n\nconst ToastTitle = styled(ToastPrimitive.Title)(({ theme }) => ({\n gridArea: 'title',\n marginBottom: 5,\n ...theme.textStyles.label,\n fontWeight: 'bold',\n color: theme.colors.text,\n}));\n\nconst ToastDescription = styled(ToastPrimitive.Description)(({ theme }) => ({\n gridArea: 'description',\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n}));\n\nconst ToastAction = styled(ToastPrimitive.Action)({\n gridArea: 'action',\n});\n\nexport const Toast = ({\n title,\n content,\n children,\n ...props\n}: {\n title?: string;\n content: ReactNode;\n children?: React.ReactNode;\n}) => {\n return (\n <ToastRoot {...props}>\n {title && <ToastTitle>{title}</ToastTitle>}\n <ToastDescription>{content}</ToastDescription>\n {children && (\n <ToastAction asChild altText=\"\">\n {children}\n </ToastAction>\n )}\n <ToastPrimitive.Close aria-label=\"Close\" asChild>\n <IconButton iconName=\"Cross1Icon\" />\n </ToastPrimitive.Close>\n </ToastRoot>\n );\n};\n\nexport const ToastProvider = ({ children }: { children: React.ReactNode }) => (\n <ToastPrimitive.Provider>\n {children}\n <ToastViewport />\n </ToastPrimitive.Provider>\n);\n","import React, {\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n useMemo,\n} from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { Button, ButtonRootProps } from \"./Button\";\nimport { IconName, Icons } from \"./Icons\";\n\ntype Props = Omit<ButtonRootProps, \"children\" | \"variant\" | \"flex\" | \"size\"> & {\n iconName: IconName;\n className?: string;\n style?: CSSProperties;\n selected?: boolean;\n color?: string;\n size?: number;\n};\n\nexport const IconButton = memo(\n forwardRef(function IconButton(\n { selected, iconName, color, size, contentStyle, ...props }: Props,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n const { icon: iconColor, iconSelected: iconSelectedColor } =\n useTheme().colors;\n\n const Icon = Icons[iconName];\n\n const style = useMemo((): CSSProperties => {\n return {\n padding: \"0 2px\",\n ...(size && { minHeight: size }),\n ...contentStyle,\n };\n }, [contentStyle, size]);\n\n return (\n <Button ref={forwardedRef} {...props} variant=\"none\" contentStyle={style}>\n <Icon\n color={color ?? (selected ? iconSelectedColor : iconColor)}\n {...(size && { width: size, height: size })}\n />\n </Button>\n );\n })\n);\n","import * as Icons from \"@noya-app/noya-icons\";\nimport React, { ReactNode } from \"react\";\n\nexport type IconName = keyof typeof Icons;\n\nexport { Icons };\n\nexport function renderIcon(\n iconName: Exclude<ReactNode, string> | IconName\n): ReactNode {\n if (typeof iconName === \"string\") {\n const Icon = Icons[iconName as IconName];\n\n return <Icon />;\n }\n\n return iconName;\n}\n","import produce from \"immer\";\nimport * as lightTheme from \"./light\";\n\nexport const name: string = \"dark\";\n\nexport const colors = produce(lightTheme.colors, (colors) => {\n colors.logo.fill = \"rgb(248,248,250)\";\n colors.logo.highlight = \"rgb(248,248,250)\";\n colors.text = \"rgb(248,248,250)\";\n colors.textMuted = \"rgb(180,179,182)\";\n colors.textDisabled = \"rgb(100,99,102)\";\n colors.inputBackground = \"rgba(181,178,255,0.08)\";\n colors.inputBackgroundLight = \"rgba(181,178,255,0.10)\";\n colors.codeBackground = \"rgb(20,19,23)\";\n colors.dividerSubtle = \"rgba(255,255,255,0.04)\";\n colors.divider = \"rgba(255,255,255,0.08)\";\n colors.dividerStrong = \"rgba(0,0,0,1)\";\n colors.primary = \"rgb(119, 66, 255)\";\n colors.primaryLight = \"rgb(134, 86, 255)\";\n colors.secondaryBright = \"#36fe91\";\n colors.canvas.background = \"rgb(20,19,23)\";\n colors.canvas.sliceOutline = \"rgb(150,150,150)\";\n colors.canvas.grid = \"rgba(0,0,0,0.1)\";\n colors.sidebar.background = \"rgb(34,33,39)\";\n colors.sidebar.backgroundTransparent = \"rgba(34,33,39,0.95)\";\n colors.popover.background = \"rgba(34,33,39,1)\";\n colors.popover.divider = colors.divider;\n colors.listView.raisedBackground = \"rgba(181,178,255,0.1)\";\n colors.listView.editingBackground = \"#000\";\n colors.slider.background = \"#BBB\";\n colors.radioGroup.background = colors.inputBackground;\n colors.mask = \"rgb(102,187,106)\";\n colors.transparentChecker = \"rgba(255,255,255,0.3)\";\n colors.scrollbar = \"rgba(199,199,199,0.2)\";\n colors.placeholderDots = \"rgba(255,255,255,0.3)\";\n colors.dragOutline = \"white\";\n colors.activeBackground = \"rgba(181,178,255,0.08)\";\n colors.thumbnailBackground = \"#1f1d33\";\n colors.thumbnailShadow = \"#1f1d3366\";\n colors.breadcrumb.text = colors.textMuted;\n colors.breadcrumb.textHover = colors.textSubtle;\n colors.breadcrumb.icon = colors.icon;\n});\n\nexport { fonts, sizes, textStyles } from \"./light\";\n","import { CSSObject } from \"styled-components\";\nimport { mediaQuery } from \"../mediaQuery\";\n\nexport const name: string = \"light\";\n\nexport const colors = {\n logo: {\n fill: \"rgb(150, 152, 172)\",\n highlight: \"rgb(150, 152, 172)\",\n },\n background: \"rgb(255,255,255)\",\n text: \"rgb(38, 48, 83)\",\n textMuted: \"rgb(107, 113, 136)\",\n textSubtle: \"rgb(117, 121, 129)\",\n textDisabled: \"rgb(150, 152, 172)\",\n textDecorativeLight: \"rgb(168, 185, 212)\",\n dividerSubtle: \"rgba(30, 50, 100, 0.04)\",\n divider: \"rgba(30, 50, 100, 0.07)\",\n dividerStrong: \"rgba(30, 50, 100, 0.09)\",\n primary: \"rgb(103, 70, 255)\",\n primaryLight: \"rgb(147, 86, 255)\",\n primaryPastel: \"rgba(234, 230, 255)\",\n secondary: \"rgb(0, 151, 117)\",\n secondaryLight: \"rgb(0, 160, 129)\",\n secondaryPastel: \"rgb(205, 238, 231)\",\n secondaryBright: \"#0ab557\",\n warning: \"rgb(251, 211, 0)\",\n neutralBackground: \"rgb(222,223,232)\",\n inputBackground: \"rgb(240, 242, 246)\",\n inputBackgroundLight: \"rgb(243, 245, 249)\",\n codeBackground: \"rgb(250, 250, 250)\",\n codeBackgroundLight: \"rgb(250, 250, 250)\",\n get codeBackgroundDark() {\n return colors.text;\n },\n codeBackgroundDecorativeDark: \"#435080\",\n selectedBackground: \"rgb(242, 245, 250)\",\n transparentChecker: \"rgba(255,255,255,0.8)\",\n activeBackground: \"rgba(0,0,0,0.1)\",\n scrollbar: \"rgba(199,199,199,0.8)\",\n placeholderDots: \"rgba(0,0,0,0.3)\",\n breadcrumb: {\n get text() {\n return colors.textMuted;\n },\n get textHover() {\n return colors.textSubtle;\n },\n get icon() {\n return colors.icon;\n },\n },\n listView: {\n raisedBackground: \"rgba(0,0,0,0.03)\",\n editingBackground: \"#fff\",\n },\n canvas: {\n // background: \"white\",\n background: \"rgb(249,249,249)\",\n get selectionStroke() {\n return colors.primary;\n },\n dragHandleStroke: \"rgba(180,180,180,0.5)\",\n measurement: \"rgb(207,92,42)\",\n sliceOutline: \"rgb(210,210,210)\",\n grid: \"rgba(0,0,0,0.05)\",\n },\n sidebar: {\n background: \"rgb(255,255,255)\",\n backgroundTransparent: \"rgba(255,255,255,0.85)\",\n },\n popover: {\n background: \"rgb(252,252,252)\",\n divider: \"transparent\",\n },\n slider: {\n background: \"white\",\n border: \"#BBB\",\n },\n radioGroup: {\n background: \"white\",\n },\n icon: \"rgb(129, 131, 165)\",\n iconSelected: \"rgb(220, 220, 220)\",\n mask: \"rgb(12,193,67)\",\n imageOverlay:\n \"linear-gradient(0deg, rgba(132, 63, 255,0.55), rgba(132, 63, 255,0.55))\",\n get dragOutline() {\n return colors.primary;\n },\n selection: \"rgb(179,215,254)\",\n thumbnailBackground: \"#f0efff\",\n thumbnailShadow: \"#D3CEED66\",\n inlineCode: {\n text: \"rgb(103, 70, 255)\",\n background: \"rgb(240, 242, 246)\",\n },\n textLink: \"rgb(103, 70, 255)\",\n textLinkFocused: \"rgb(147, 86, 255)\",\n};\n\nexport const fonts = {\n normal:\n \"'__Inter_6b0edc', '__Inter_Fallback_6b0edc', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\",\n monospace: \"Menlo, Monaco, Consolas, 'Courier New', monospace\",\n};\n\n// The last one, 0.85, I just eyeballed\nconst typeScale = [3.052, 2.441, 1.953, 1.563, 1.25, 1, 0.85]; // Major third\n\nexport const textStyles = {\n title: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[0]}rem`,\n fontWeight: \"bold\",\n lineHeight: \"1.4\",\n letterSpacing: \"-0.05em\",\n [mediaQuery.small]: {\n fontSize: \"36px\",\n },\n } as CSSObject,\n subtitle: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[3]}rem`,\n fontWeight: 500,\n lineHeight: \"1.75\",\n letterSpacing: \"-0.05em\",\n [mediaQuery.small]: {\n fontSize: \"18px\",\n },\n } as CSSObject,\n heading1: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[2]}rem`,\n fontWeight: 600,\n lineHeight: \"1.6\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading2: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[3]}rem`,\n fontWeight: 500,\n lineHeight: \"1.5\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading3: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[4]}rem`,\n fontWeight: 400,\n lineHeight: \"1.4\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading4: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[5]}rem`,\n fontWeight: 500,\n lineHeight: \"1.4\",\n } as CSSObject,\n heading5: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[6]}rem`,\n fontWeight: 500,\n lineHeight: \"1.4\",\n } as CSSObject,\n body: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[5]}rem`,\n fontWeight: 400,\n lineHeight: \"1.4\",\n } as CSSObject,\n small: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[6]}rem`,\n fontWeight: 400,\n lineHeight: \"19px\",\n // lineHeight: \"1.4\",\n } as CSSObject,\n button: {\n fontFamily: fonts.normal,\n fontSize: \"0.8rem\",\n fontWeight: 500,\n lineHeight: \"1.4\",\n letterSpacing: \"-0.2px\",\n } as CSSObject,\n code: {\n fontFamily: fonts.monospace,\n fontSize: \"90%\",\n lineHeight: \"1.5\",\n } as CSSObject,\n label: {\n fontFamily: fonts.normal,\n fontSize: \"0.62rem\",\n fontWeight: 400,\n lineHeight: \"19px\",\n // lineHeight: \"1.4\",\n textTransform: \"uppercase\",\n letterSpacing: \"-0.3px\",\n } as CSSObject,\n};\n\nexport const sizes = {\n inset: {\n top: 46,\n },\n sidebarWidth: 260,\n toolbar: {\n height: 46,\n itemSeparator: 8,\n },\n inspector: {\n horizontalSeparator: 8,\n verticalSeparator: 10,\n },\n spacing: {\n nano: 2,\n micro: 4,\n small: 8,\n medium: 16,\n large: 32,\n xlarge: 64,\n xxlarge: 128,\n },\n dialog: {\n padding: 16,\n },\n};\n","export const size = {\n medium: '800px',\n large: '1280px',\n xlarge: '1550px',\n xxlarge: '1680px',\n};\n\nexport const mediaQuery = {\n small: `@media (max-width: ${size.medium})`,\n medium: `@media (max-width: ${size.large}) and (min-width: ${size.medium})`,\n large: `@media (max-width: ${size.xlarge}) and (min-width: ${size.large})`,\n xlarge: `@media (min-width: ${size.xlarge})`,\n};\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Button } from \"../components/Button\";\nimport { Dialog, IDialog } from \"../components/Dialog\";\nimport { InputField } from \"../components/InputField\";\nimport { Spacer } from \"../components/Spacer\";\n\nexport const Row = styled.div(({ theme }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n}));\n\nfunction createDeferredPromise<T>() {\n let resolve: (value: T) => void = () => {};\n let reject: (value: any) => void = () => {};\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\nexport type DialogContextValue = {\n openInputDialog(\n title: string,\n inputValue?: string\n ): Promise<string | undefined>;\n\n containsElement(element: HTMLElement): boolean;\n};\n\nconst DialogContext = createContext<DialogContextValue | undefined>(undefined);\n\nexport const DialogProvider = function DialogProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const [contents, setContents] = useState<\n | {\n title: string;\n inputValue: string;\n resolve: (value: string | undefined) => void;\n }\n | undefined\n >();\n\n const isOpen = !!contents;\n\n const close = useCallback(() => {\n if (!contents) return;\n\n contents.resolve(undefined);\n }, [contents]);\n\n const submit = useCallback(() => {\n if (!contents || !contents.inputValue) return;\n\n contents.resolve(contents.inputValue);\n setContents(undefined);\n }, [contents]);\n\n const open: DialogContextValue[\"openInputDialog\"] = useCallback(\n (title, inputValue = \"\") => {\n const { promise, resolve } = createDeferredPromise<string | undefined>();\n\n setContents({\n title,\n inputValue,\n resolve: (value) => {\n resolve(value);\n setContents(undefined);\n },\n });\n\n return promise;\n },\n []\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== \"Enter\") return;\n\n event.stopPropagation();\n event.preventDefault();\n\n submit();\n },\n [submit]\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n const dialogRef = useRef<IDialog>(null);\n\n const containsElement = useCallback((element: HTMLElement) => {\n if (!dialogRef.current) return false;\n\n return dialogRef.current.containsElement(element);\n }, []);\n\n return (\n <>\n <DialogContext.Provider\n value={useMemo(\n () => ({ openInputDialog: open, containsElement }),\n [containsElement, open]\n )}\n >\n {children}\n </DialogContext.Provider>\n <Dialog\n ref={dialogRef}\n title={contents?.title}\n open={isOpen}\n onOpenChange={useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n close();\n }\n },\n [close]\n )}\n onOpenAutoFocus={useCallback((event: Event) => {\n event.stopPropagation();\n event.preventDefault();\n\n inputRef.current?.focus();\n\n // Select the entire input value\n inputRef.current?.setSelectionRange(0, inputRef.current.value.length);\n }, [])}\n >\n <InputField.Root>\n <InputField.Input\n ref={inputRef}\n value={contents?.inputValue ?? \"\"}\n onChange={(value) => {\n setContents((contents) =>\n contents\n ? {\n ...contents,\n inputValue: value,\n }\n : undefined\n );\n }}\n onKeyDown={handleKeyDown}\n />\n </InputField.Root>\n <Spacer.Vertical size={20} />\n <Row>\n <Spacer.Horizontal />\n <Button onClick={close}>Cancel</Button>\n <Spacer.Horizontal size={16} />\n <Button disabled={!contents?.inputValue} onClick={submit}>\n Submit\n </Button>\n </Row>\n </Dialog>\n </>\n );\n};\n\nfunction useDialog(): DialogContextValue {\n const value = useContext(DialogContext);\n\n if (!value) {\n throw new Error(\"Missing DialogProvider\");\n }\n\n return value;\n}\n\nexport function useOpenInputDialog() {\n return useDialog().openInputDialog;\n}\n\nexport function useDialogContainsElement() {\n return useDialog().containsElement;\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport React, {\n ComponentProps,\n ForwardedRef,\n forwardRef,\n ReactNode,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { IconButton } from \"./IconButton\";\nimport { Spacer } from \"./Spacer\";\n\nconst StyledOverlay = styled(DialogPrimitive.Overlay)({\n backgroundColor: \"rgba(0,0,0,0.5)\",\n position: \"fixed\",\n inset: 0,\n});\n\nconst StyledContent = styled(DialogPrimitive.Content)(({ theme }) => ({\n boxShadow:\n \"hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px\",\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90vw\",\n maxWidth: \"450px\",\n maxHeight: \"85vh\",\n padding: theme.sizes.dialog.padding,\n borderRadius: 2,\n ...theme.textStyles.small,\n backgroundColor: theme.colors.popover.background,\n overflowY: \"auto\",\n color: theme.colors.textMuted,\n \"&:focus\": { outline: \"none\" },\n pointerEvents: \"all\",\n zIndex: 1000,\n}));\n\nconst StyledTitle = styled(DialogPrimitive.Title)(({ theme }) => ({\n margin: 0,\n ...theme.textStyles.body,\n color: theme.colors.text,\n}));\n\nconst StyledDescription = styled(DialogPrimitive.Description)(({ theme }) => ({\n margin: 0,\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n}));\n\nexport const CloseButtonContainer = styled.div(({ theme }) => ({\n position: \"absolute\",\n top: theme.sizes.dialog.padding,\n right: theme.sizes.dialog.padding,\n zIndex: 1,\n backgroundColor: theme.colors.popover.background,\n padding: \"4px 6px\",\n borderRadius: \"2px\",\n // boxShadow: `0 0 2px rgba(0, 0, 0, 0.2)`,\n border: `1px solid rgba(128,128,128,0.2)`,\n}));\n\nexport interface IDialog {\n containsElement: (element: HTMLElement) => boolean;\n}\n\ninterface Props {\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n style?: ComponentProps<typeof StyledContent>[\"style\"];\n open: ComponentProps<typeof DialogPrimitive.Root>[\"open\"];\n onOpenChange?: ComponentProps<typeof DialogPrimitive.Root>[\"onOpenChange\"];\n onOpenAutoFocus?: ComponentProps<\n typeof DialogPrimitive.Content\n >[\"onOpenAutoFocus\"];\n closeOnInteractOutside?: boolean;\n}\n\nexport const Dialog = forwardRef(function Dialog(\n {\n children,\n title,\n description,\n open,\n style,\n onOpenChange,\n onOpenAutoFocus,\n closeOnInteractOutside = true,\n }: Props,\n forwardedRef: ForwardedRef<IDialog>\n) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(forwardedRef, () => ({\n containsElement(element) {\n if (!contentRef.current) return false;\n\n return contentRef.current.contains(element);\n },\n }));\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <StyledOverlay />\n <StyledContent\n ref={contentRef}\n onOpenAutoFocus={onOpenAutoFocus}\n style={style}\n {...(closeOnInteractOutside === false && {\n onPointerDownOutside: (event) => {\n event.preventDefault();\n },\n onInteractOutside: (event) => {\n event.preventDefault();\n },\n })}\n >\n <CloseButtonContainer>\n <DialogPrimitive.Close asChild>\n <IconButton iconName=\"Cross1Icon\" />\n </DialogPrimitive.Close>\n </CloseButtonContainer>\n {title && (\n <>\n <StyledTitle>{title}</StyledTitle>\n <Spacer.Vertical size={description ? 10 : 20} />\n </>\n )}\n {description && (\n <>\n <Spacer.Vertical size={10} />\n <StyledDescription>{description}</StyledDescription>\n <Spacer.Vertical size={20} />\n </>\n )}\n {children}\n </StyledContent>\n </DialogPrimitive.Root>\n );\n});\n\nexport const FullscreenDialog = forwardRef(function FullscreenDialog(\n { style, ...rest }: Props,\n forwardedRef: ForwardedRef<IDialog>\n) {\n return (\n <Dialog\n ref={forwardedRef}\n style={{\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n top: \"0\",\n left: \"0\",\n transform: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: 0,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","/* eslint-disable react/jsx-pascal-case */\nimport React, { ForwardedRef, forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n size?: number | string;\n inline?: boolean;\n}\n\ninterface Props_ {\n $size?: number | string;\n $inline?: boolean;\n}\n\n/* ----------------------------------------------------------------------------\n * Vertical\n * ------------------------------------------------------------------------- */\n\nconst SpacerVertical_ = styled.span<Props_>(({ $size, $inline }) => ({\n display: $inline ? \"inline-block\" : \"block\",\n ...($size === undefined ? { flex: 1 } : { minHeight: $size }),\n}));\n\nconst SpacerVertical = forwardRef<HTMLSpanElement, Props>(\n ({ size, inline, ...props }, ref: ForwardedRef<HTMLSpanElement>) => {\n return (\n <SpacerVertical_ $size={size} $inline={inline} {...props} ref={ref} />\n );\n }\n);\n\n/* ----------------------------------------------------------------------------\n * Horizontal\n * ------------------------------------------------------------------------- */\n\nconst SpacerHorizontal_ = styled.span<Props_>(({ $size, $inline }) => ({\n display: $inline ? \"inline-block\" : \"block\",\n ...($size === undefined ? { flex: 1 } : { minWidth: $size }),\n}));\n\nconst SpacerHorizontal = forwardRef<HTMLSpanElement, Props>(\n ({ size, inline, ...props }, ref: ForwardedRef<HTMLSpanElement>) => {\n return (\n <SpacerHorizontal_ $size={size} $inline={inline} {...props} ref={ref} />\n );\n }\n);\n\nexport namespace Spacer {\n export const Vertical = SpacerVertical;\n export const Horizontal = SpacerHorizontal;\n}\n","import { CaretDownIcon } from \"@noya-app/noya-icons\";\nimport { assignRef } from \"@noya-app/react-utils\";\nimport { Property } from \"csstype\";\nimport React, {\n Children,\n createContext,\n ForwardedRef,\n forwardRef,\n isValidElement,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport handleNudge from \"../utils/handleNudge\";\nimport { Button } from \"./Button\";\nimport { DropdownMenu } from \"./DropdownMenu\";\nimport { MenuItem } from \"./internal/Menu\";\nimport TextInput, { TextInputProps } from \"./internal/TextInput\";\nimport { Popover } from \"./Popover\";\nimport { Stack } from \"./Stack\";\n\ntype LabelPosition = \"start\" | \"end\";\n\nexport type InputFieldSize = \"small\" | \"medium\" | \"large\";\n\ntype InputFieldContextValue = {\n labelPosition: LabelPosition;\n labelSize: number;\n hasLabel: boolean;\n hasDropdown: boolean;\n size: InputFieldSize;\n isFocused: boolean;\n onFocusChange: (isFocused: boolean) => void;\n inputRef?: ForwardedRef<HTMLInputElement>;\n setInputRef?: (ref: ForwardedRef<HTMLInputElement>) => void;\n setLabelWidth?: (width: number) => void;\n};\n\nconst InputFieldContext = createContext<InputFieldContextValue>({\n labelPosition: \"end\",\n labelSize: 6,\n hasLabel: false,\n hasDropdown: false,\n size: \"medium\",\n isFocused: false,\n onFocusChange: () => {},\n});\n\n/* ----------------------------------------------------------------------------\n * Label\n * ------------------------------------------------------------------------- */\n\nconst LabelContainer = styled.label<{\n pointerEvents: Property.PointerEvents;\n $labelPosition: LabelPosition;\n $hasDropdown: boolean;\n}>(({ theme, $labelPosition, $hasDropdown, pointerEvents }) => ({\n ...theme.textStyles.label,\n fontWeight: \"bold\",\n color: theme.colors.textDisabled,\n position: \"absolute\",\n top: 0,\n right: $labelPosition === \"end\" ? 0 : undefined,\n bottom: 0,\n left: $labelPosition === \"start\" ? 0 : undefined,\n display: \"flex\",\n alignItems: \"center\",\n pointerEvents,\n userSelect: \"none\",\n ...($labelPosition === \"start\"\n ? { justifyContent: \"flex-start\", paddingLeft: \"6px\" }\n : {\n justifyContent: \"flex-end\",\n paddingRight: $hasDropdown ? \"16px\" : \"6px\",\n }),\n}));\n\ninterface InputFieldLabelProps {\n children?: ReactNode;\n pointerEvents?: Property.PointerEvents;\n style?: React.CSSProperties;\n}\n\nconst InputFieldLabel = memo(\n forwardRef(function InputFieldLabel(\n { children = false, pointerEvents = \"none\", style }: InputFieldLabelProps,\n forwardedRef: ForwardedRef<HTMLLabelElement>\n ) {\n const { labelPosition, hasDropdown, setLabelWidth } =\n useContext(InputFieldContext);\n\n const ref = useRef<HTMLLabelElement | null>(null);\n\n useLayoutEffect(() => {\n if (!setLabelWidth) return;\n\n const width = ref.current?.getBoundingClientRect().width;\n\n if (!width) return;\n\n setLabelWidth(width);\n }, [setLabelWidth]);\n\n return (\n <LabelContainer\n ref={(element) => {\n ref.current = element;\n assignRef(forwardedRef, element);\n }}\n pointerEvents={pointerEvents}\n $labelPosition={labelPosition}\n $hasDropdown={hasDropdown}\n style={style}\n >\n {children}\n </LabelContainer>\n );\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Dropdown\n * ------------------------------------------------------------------------- */\n\nconst DropdownContainer = styled.span(({ theme }) => ({\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n display: \"flex\",\n flexDirection: \"column\",\n}));\n\ninterface InputFieldDropdownProps<T extends string> {\n id?: string;\n items: MenuItem<T>[];\n onSelect: (value: T) => void;\n children?: ReactNode;\n}\n\nconst InputFieldDropdownMenu = memo(function InputFieldDropdownMenu<\n T extends string,\n>({ id, items, onSelect, children }: InputFieldDropdownProps<T>) {\n const { size } = useContext(InputFieldContext);\n\n const contentStyle = useMemo(\n () => ({\n margin: \"-4px 0\",\n minHeight: size === \"small\" ? \"15px\" : undefined,\n }),\n [size]\n );\n\n return (\n <DropdownContainer>\n <DropdownMenu<T> items={items} onSelect={onSelect}>\n {children || (\n <Button id={id} variant=\"thin\" flex=\"1\" contentStyle={contentStyle}>\n <CaretDownIcon />\n </Button>\n )}\n </DropdownMenu>\n </DropdownContainer>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Button\n * ------------------------------------------------------------------------- */\n\nconst ButtonContainer = styled.span<{ $size: InputFieldSize }>(\n ({ theme, $size }) => ({\n position: \"absolute\",\n right: $size === \"large\" ? \"9px\" : $size === \"medium\" ? \"4px\" : \"2px\",\n top: $size === \"large\" ? \"8px\" : $size === \"medium\" ? \"4px\" : \"2px\",\n })\n);\n\nconst InputFieldButton = memo(function InputFieldButton({\n children,\n onClick,\n}: {\n children?: ReactNode;\n onClick?: () => void;\n}) {\n const { size, inputRef } = useContext(InputFieldContext);\n\n const defaultHandleClick = useCallback(\n (event: React.MouseEvent) => {\n if (inputRef && typeof inputRef !== \"function\") {\n inputRef.current?.focus();\n // Select all text\n inputRef.current?.setSelectionRange(0, inputRef.current.value.length);\n }\n\n event.preventDefault();\n event.stopPropagation();\n },\n [inputRef]\n );\n\n const handlePointerDown = useCallback((event: React.PointerEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n return (\n <ButtonContainer $size={size}>\n <Button\n variant=\"floating\"\n onClick={onClick ?? defaultHandleClick}\n onPointerDown={handlePointerDown}\n tabIndex={-1}\n >\n {children}\n </Button>\n </ButtonContainer>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Input\n * ------------------------------------------------------------------------- */\n\n// const createCrossSVGString = memoize(\n// (color: string) =>\n// `<svg width='15' height='15' viewBox='0 0 15 15' fill='${color}' xmlns='http://www.w3.org/2000/svg'>\n// <path d='M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704ZM9.85358 5.14644C10.0488 5.3417 10.0488 5.65829 9.85358 5.85355L8.20713 7.49999L9.85358 9.14644C10.0488 9.3417 10.0488 9.65829 9.85358 9.85355C9.65832 10.0488 9.34173 10.0488 9.14647 9.85355L7.50002 8.2071L5.85358 9.85355C5.65832 10.0488 5.34173 10.0488 5.14647 9.85355C4.95121 9.65829 4.95121 9.3417 5.14647 9.14644L6.79292 7.49999L5.14647 5.85355C4.95121 5.65829 4.95121 5.3417 5.14647 5.14644C5.34173 4.95118 5.65832 4.95118 5.85358 5.14644L7.50002 6.79289L9.14647 5.14644C9.34173 4.95118 9.65832 4.95118 9.85358 5.14644Z' fill-rule='evenodd' clip-rule='evenodd'></path>\n// </svg>`\n// );\n\ntype InputFieldVariant = \"normal\" | \"bare\";\n\nexport const InputElement = styled(TextInput)<{\n disabled?: boolean;\n readOnly?: boolean;\n $labelPosition: LabelPosition;\n $labelSize: number;\n $hasLabel: boolean;\n $hasDropdown: boolean;\n $textAlign?: Property.TextAlign;\n $variant?: InputFieldVariant;\n $size: InputFieldSize;\n}>(({\n theme,\n $labelPosition,\n $labelSize,\n $hasDropdown,\n $textAlign,\n disabled,\n $hasLabel,\n readOnly,\n $variant = \"normal\",\n $size,\n}) => {\n return {\n // placeholder\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n ...theme.textStyles.small,\n color: readOnly\n ? theme.colors.textMuted\n : disabled\n ? theme.colors.textDisabled\n : theme.colors.text,\n ...($size === \"small\" && {\n fontSize: \"11px\",\n }),\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: $textAlign ?? \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: $size === \"large\" ? \"10px\" : $size === \"medium\" ? \"4px\" : \"1px\",\n paddingBottom:\n $size === \"large\" ? \"10px\" : $size === \"medium\" ? \"4px\" : \"1px\",\n paddingLeft:\n ($size === \"large\" ? 10 : $size === \"medium\" ? 6 : 4) +\n ($hasLabel && $labelPosition === \"start\" ? 6 + $labelSize : 0) +\n \"px\",\n paddingRight:\n ($size === \"large\" ? 10 : $size === \"medium\" ? 6 : 4) +\n ($hasLabel && $labelPosition === \"end\" ? 6 + $labelSize : 0) +\n ($hasDropdown ? 11 : 0) +\n \"px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n ...($variant === \"bare\" && {\n paddingTop: \"4px\",\n paddingRight: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"4px\",\n marginTop: \"-4px\",\n marginRight: \"-4px\",\n marginBottom: \"-4px\",\n marginLeft: \"-4px\",\n }),\n\n // '&[type=\"search\"]::-webkit-search-cancel-button': {\n // appearance: \"none\",\n // height: \"15px\",\n // width: \"15px\",\n // background: `url(\"data:image/svg+xml;utf8,${createCrossSVGString(\n // theme.colors.icon\n // )}\") no-repeat`,\n // },\n };\n});\n\nconst InputFieldInput = forwardRef(function InputFieldInput(\n // onFocusChange should only be passed from the root, never directly\n {\n textAlign,\n variant,\n ...rest\n }: TextInputProps & {\n textAlign?: Property.TextAlign;\n variant?: \"bare\";\n },\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const {\n labelPosition,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n onFocusChange,\n setInputRef,\n } = useContext(InputFieldContext);\n\n const handleFocusChange = useCallback(\n (isFocused: boolean) => {\n onFocusChange(isFocused);\n },\n [onFocusChange]\n );\n\n useLayoutEffect(() => {\n setInputRef?.(forwardedRef);\n }, [forwardedRef, setInputRef]);\n\n return (\n <InputElement\n ref={forwardedRef}\n $labelPosition={labelPosition}\n $labelSize={labelSize}\n $hasLabel={hasLabel}\n $hasDropdown={hasDropdown}\n $size={size}\n $variant={variant}\n $textAlign={textAlign}\n onFocusChange={handleFocusChange}\n {...rest}\n />\n );\n});\n\nconst InputFieldTypeahead = (props: { prefix: string; value: string }) => {\n const {\n labelPosition,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n // onFocusChange,\n } = useContext(InputFieldContext);\n\n return (\n <InputElement\n as=\"span\"\n $labelPosition={labelPosition}\n $labelSize={labelSize}\n $hasLabel={hasLabel}\n $hasDropdown={hasDropdown}\n $size={size}\n // onFocusChange={onFocusChange}\n // readOnly\n // placeholder={props.value}\n value=\"\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n background: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <span style={{ opacity: 0 }}>{props.prefix}</span>\n <span style={{ opacity: 0.5 }}>\n {props.value.slice(props.prefix.length)}\n </span>\n </InputElement>\n );\n};\n\n/* ----------------------------------------------------------------------------\n * NumberInput\n * ------------------------------------------------------------------------- */\n\ntype InputFieldNumberInputProps = Omit<\n TextInputProps,\n \"value\" | \"onChange\" | \"onKeyDown\" | \"onSubmit\"\n> & {\n value: number | undefined;\n onNudge?: (value: number) => void;\n variant?: \"bare\";\n} & (\n | {\n onChange: (value: number) => void;\n }\n | {\n onSubmit: (value: number) => void;\n }\n );\n\nfunction parseNumber(value: string) {\n return value ? Number(value) : NaN;\n}\n\nfunction InputFieldNumberInput(props: InputFieldNumberInputProps) {\n const { value, placeholder, onNudge, onBlur, ...rest } = props;\n const onSubmit = \"onSubmit\" in props ? props.onSubmit : undefined;\n const onChange = \"onChange\" in props ? props.onChange : undefined;\n\n // Internal value is used to handle empty string as a valid state,\n // e.g. when the user deletes the value before entering a new one.\n // This is only used for in the onChange case.\n const [internalValue, setInternalValue] = useState<string | undefined>();\n\n const handleSubmit = useCallback(\n (value: string) => {\n const newValue = parseNumber(value);\n\n if (!isNaN(newValue)) {\n onSubmit?.(newValue);\n }\n },\n [onSubmit]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n const amount = handleNudge(event);\n\n if (!amount) return;\n\n onNudge?.(amount);\n setInternalValue(undefined);\n\n event.preventDefault();\n event.stopPropagation();\n },\n [onNudge]\n );\n\n const handleChange = useCallback(\n (value: string) => {\n if (value === \"\" || value === \"-\" || value === \".\") {\n setInternalValue(value);\n return;\n }\n\n if (value.endsWith(\".\")) {\n setInternalValue(value);\n return;\n }\n\n setInternalValue(undefined);\n\n const newValue = parseNumber(value);\n\n if (!isNaN(newValue)) {\n onChange?.(newValue);\n }\n },\n [onChange]\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setInternalValue(undefined);\n onBlur?.(event);\n },\n [onBlur]\n );\n\n return (\n <InputFieldInput\n {...rest}\n value={\n internalValue !== undefined\n ? String(internalValue)\n : value === undefined\n ? \"\"\n : String(value)\n }\n placeholder={placeholder}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n {...(\"onChange\" in props\n ? { onChange: handleChange }\n : { onSubmit: handleSubmit })}\n />\n );\n}\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst RootContainer = styled.div<{ $width?: number; $flex?: string }>(\n ({ theme, $flex, $width }) => ({\n flex: $flex ?? \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n maxWidth: typeof $width === \"number\" ? `${$width}px` : undefined,\n })\n);\n\ninterface InputFieldRootProps {\n id?: string;\n flex?: string;\n children?: ReactNode;\n width?: number;\n labelPosition?: LabelPosition;\n labelSize?: number;\n hasDropdown?: boolean;\n size?: InputFieldSize;\n renderPopoverContent?: (options: { width: number }) => ReactNode;\n onFocusChange?: (isFocused: boolean) => void;\n style?: React.CSSProperties;\n className?: string;\n}\n\nfunction InputFieldRoot({\n id,\n flex,\n children,\n width,\n labelPosition = \"end\",\n labelSize,\n size = \"medium\",\n renderPopoverContent,\n onFocusChange,\n style,\n className,\n}: InputFieldRootProps) {\n const childrenArray = Children.toArray(children);\n\n const hasDropdown = childrenArray.some(\n (child) => isValidElement(child) && child.type === InputFieldDropdownMenu\n );\n const hasLabel = childrenArray.some(\n (child) => isValidElement(child) && child.type === InputFieldLabel\n );\n\n const [isFocused, setIsFocused] = React.useState(false);\n\n const [measuredLabelSize, setMeasuredLabelSize] = React.useState<number>();\n const [measuredWidth, setMeasuredWidth] = React.useState<number>();\n\n const handleFocusChange = useCallback(\n (isFocused: boolean) => {\n setIsFocused(isFocused);\n onFocusChange?.(isFocused);\n },\n [onFocusChange]\n );\n\n const [inputRef, setInputRef] =\n React.useState<ForwardedRef<HTMLInputElement>>();\n\n // eslint-disable-next-line @shopify/prefer-early-return\n useEffect(() => {\n if (inputRef && typeof inputRef !== \"function\") {\n setMeasuredWidth?.(\n isFocused ? inputRef?.current?.getBoundingClientRect().width : undefined\n );\n }\n }, [inputRef, isFocused]);\n\n const contextValue = useMemo(\n (): InputFieldContextValue => ({\n labelPosition,\n labelSize: measuredLabelSize ?? labelSize ?? 6,\n hasDropdown,\n hasLabel,\n size,\n isFocused,\n onFocusChange: handleFocusChange,\n inputRef,\n setInputRef,\n setLabelWidth: setMeasuredLabelSize,\n }),\n [\n labelPosition,\n measuredLabelSize,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n isFocused,\n handleFocusChange,\n inputRef,\n ]\n );\n\n const rootElement = (\n <RootContainer\n id={id}\n $width={width}\n $flex={flex}\n style={style}\n className={className}\n >\n {children}\n </RootContainer>\n );\n\n return (\n <InputFieldContext.Provider value={contextValue}>\n {renderPopoverContent ? (\n <Popover\n open={true}\n trigger={rootElement}\n sideOffset={3}\n showArrow={false}\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n {measuredWidth && (\n <Stack.V width={measuredWidth} overflow=\"hidden\">\n {renderPopoverContent({ width: measuredWidth })}\n </Stack.V>\n )}\n </Popover>\n ) : (\n rootElement\n )}\n </InputFieldContext.Provider>\n );\n}\n\nconst PrimitiveInputField = styled.input(({ theme, readOnly, disabled }) => {\n return {\n // placeholder\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n ...theme.textStyles.small,\n color: readOnly\n ? theme.colors.textMuted\n : disabled\n ? theme.colors.textDisabled\n : theme.colors.text,\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"6px\",\n paddingRight: \"6px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n userSelect: \"all\",\n pointerEvents: \"all\",\n };\n});\n\nexport namespace InputField {\n export const Root = memo(InputFieldRoot);\n export const Input = memo(InputFieldInput);\n export const Typeahead = memo(InputFieldTypeahead);\n export const NumberInput = memo(InputFieldNumberInput);\n export const DropdownMenu = InputFieldDropdownMenu;\n export const Button = InputFieldButton;\n export const Label = InputFieldLabel;\n export const PrimitiveElement = PrimitiveInputField;\n}\n","import React, { CSSProperties, ReactNode, memo, useRef } from \"react\";\nimport { useSize } from \"../hooks/useSize\";\n\ntype Size = { width: number; height: number };\n\nconst style: CSSProperties = {\n display: \"flex\",\n flex: \"1 0 0\",\n flexDirection: \"column\",\n};\n\ninterface Props {\n children: (size: Size) => ReactNode;\n className?: string;\n}\n\nexport const AutoSizer = memo(function AutoSizer({\n children,\n className,\n}: Props) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerSize = useSize(containerRef);\n\n return (\n <div ref={containerRef} style={style} className={className}>\n {containerSize &&\n containerSize.width > 0 &&\n containerSize.height > 0 &&\n children(containerSize)}\n </div>\n );\n});\n\ninterface SingleDimensionAutoSizerProps {\n children: (size: number) => ReactNode;\n dimension: \"width\" | \"height\";\n className?: string;\n}\n\nexport const SingleDimensionAutoSizer = memo(function SingleDimensionAutoSizer({\n children,\n dimension,\n className,\n}: SingleDimensionAutoSizerProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerSize = useSize(containerRef, dimension);\n\n return (\n <div ref={containerRef} style={style} className={className}>\n {containerSize &&\n containerSize[dimension] > 0 &&\n children(containerSize[dimension])}\n </div>\n );\n});\n","// MIT License\n//\n// Copyright (c) 2020 Modulz\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// https://github.com/radix-ui/primitives/blob/f3de622e944785d01eb6041249ca1645f79ce102/packages/react/utils/src/useSize.tsx\n\n/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from \"react\";\n\ntype Size = {\n width: number;\n height: number;\n};\n\nexport function useSize(\n /** A reference to the element whose size to observe */\n refToObserve: React.RefObject<HTMLElement | SVGElement>,\n dimensions: \"both\" | \"width\" | \"height\" = \"both\"\n) {\n const [size, setSize] = React.useState<Size | undefined>(undefined);\n\n React.useEffect(() => {\n if (refToObserve.current) {\n const elementToObserve = refToObserve.current;\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate a rect ourselves to get the correct border box.\n const rect = elementToObserve.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n }\n\n setSize((currentSize) => {\n if (\n currentSize &&\n (currentSize.width === width || dimensions === \"height\") &&\n (currentSize.height === height || dimensions === \"width\")\n ) {\n return currentSize;\n }\n\n return { width, height };\n });\n });\n\n resizeObserver.observe(elementToObserve, { box: \"border-box\" });\n\n return () => {\n setSize(undefined);\n resizeObserver.unobserve(elementToObserve);\n };\n }\n return;\n }, [refToObserve, dimensions]);\n\n return size;\n}\n","import React, { DragEvent, ReactNode, memo, useCallback, useRef } from \"react\";\nimport { useFileDropTarget } from \"../hooks/useFileDropTarget\";\n\nexport type OffsetPoint = {\n offsetX: number;\n offsetY: number;\n};\n\nexport type TypedFile<T> = File & { type: T };\n\nexport function isSupportedFile<T extends string>(\n file: File,\n supportedFileTypes: T[]\n): file is TypedFile<T> {\n return (\n supportedFileTypes.includes(file.type as T) ||\n (file.type === \"\" && file.name.endsWith(\".sketch\"))\n );\n}\n\ntype Props<T extends string> = {\n children: ReactNode | ((isActive: boolean) => ReactNode);\n onDropFiles: (file: TypedFile<T>[], offsetPoint: OffsetPoint) => void;\n supportedFileTypes: T[];\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nexport const FileDropTarget = memo(function FileDropTarget<T extends string>({\n children,\n onDropFiles,\n supportedFileTypes,\n ...props\n}: Props<T>) {\n const ref = useRef<HTMLDivElement>(null);\n\n const handleFile = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n\n const offsetPoint = {\n offsetX: event.nativeEvent.offsetX,\n offsetY: event.nativeEvent.offsetY,\n };\n\n const unsupportedTypes = Array.from(event.dataTransfer.files).flatMap(\n (file) => {\n if (!isSupportedFile(file, supportedFileTypes)) {\n return [file.type];\n } else {\n return [];\n }\n }\n );\n\n if (unsupportedTypes.length > 0) {\n alert(\n `Files of type ${unsupportedTypes.join(\n \", \"\n )} aren't supported. The following types are supported: ${supportedFileTypes.join(\n \", \"\n )}`\n );\n }\n\n const files = Array.from(event.dataTransfer.files).flatMap((file) =>\n isSupportedFile(file, supportedFileTypes) ? [file] : []\n );\n\n onDropFiles(files, offsetPoint);\n },\n [onDropFiles, supportedFileTypes]\n );\n\n const { dropTargetProps, isDropTargetActive } = useFileDropTarget(\n ref,\n handleFile\n );\n\n return (\n <div ref={ref} {...dropTargetProps} {...props}>\n {typeof children === \"function\" ? children(isDropTargetActive) : children}\n </div>\n );\n});\n","import { DragEvent, useCallback, useState } from \"react\";\n\nexport function useFileDropTarget(\n ref: React.RefObject<HTMLDivElement>,\n dropEvent: (event: DragEvent) => void\n) {\n const [isDropTargetActive, setIsDropTargetActive] = useState(false);\n\n const handleDragOver = useCallback((event: DragEvent) => {\n event.preventDefault();\n }, []);\n\n const handleDragEnter = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n if (!ref.current?.contains(event.relatedTarget as Node)) {\n setIsDropTargetActive(true);\n }\n },\n [ref]\n );\n\n const handleDragLeave = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n if (!ref.current?.contains(event.relatedTarget as Node)) {\n setIsDropTargetActive(false);\n }\n },\n [ref]\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n dropEvent(event);\n setIsDropTargetActive(false);\n },\n [dropEvent]\n );\n\n return {\n dropTargetProps: {\n onDragOver: handleDragOver,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n },\n isDropTargetActive,\n };\n}\n","import { isDeepEqual } from \"@noya-app/noya-utils\";\nimport { useRef } from \"react\";\n\n/**\n * Memoize an array using deep equality comparison (by converting to JSON).\n */\nexport function useDeepMemo<T>(value: T) {\n const ref = useRef(value);\n\n if (!isDeepEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { isDeepEqual } from \"@noya-app/noya-utils\";\nimport { useCallback, useMemo, useState } from \"react\";\n\nexport const useDeepState: typeof useState = (\n ...args: Parameters<typeof useState>\n) => {\n const [state, _setState] = useState(...args);\n\n const setState = useCallback(function updater(updated: typeof state) {\n _setState((current) => {\n if (isDeepEqual(current, updated)) return current;\n return updated;\n });\n }, []);\n\n return useMemo(() => [state, setState], [state, setState]);\n};\n","import { useEffect, useState } from \"react\";\nimport { PromiseState } from \"../utils/PromiseState\";\nimport { ResponseEncoding, fetchData } from \"../utils/fetchData\";\n\nexport function useFetch<T>(\n url: string,\n encoding: ResponseEncoding\n): PromiseState<T> {\n const [state, setState] = useState<PromiseState<T>>({ type: \"pending\" });\n\n useEffect(() => {\n let isStale = false;\n\n async function getInfo() {\n try {\n const data = await fetchData<T>(url, encoding as any);\n\n if (isStale) return;\n\n setState({ type: \"success\", value: data });\n } catch (error) {\n if (isStale) return;\n\n setState({ type: \"failure\", value: error as Error });\n }\n }\n\n getInfo();\n\n return () => {\n isStale = true;\n };\n }, [url, encoding]);\n\n return state;\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useIsMounted() {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n}\n","import { SetStateAction, useCallback, useLayoutEffect, useRef } from \"react\";\n\n/**\n * Returns an accessor function that returns the latest value passed to the hook.\n *\n * The value is only updated after the component has rendered, so it is safe to use in event handlers.\n * This is useful for preventing unnecessary re-renders when a value changes frequently,\n * while still providing access to the latest value in event handlers.\n */\nexport function useLateReference<T>(value: T): () => T {\n const valueRef = useRef(value);\n\n useLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return useCallback(() => valueRef.current, []);\n}\n\nexport function useLateReferenceState<T>(\n value: T,\n setValue: (value: T) => void\n): [() => T, (value: SetStateAction<T>) => void] {\n const valueRef = useRef(value);\n\n useLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const getValue = useCallback(() => valueRef.current, []);\n\n const actualSetValue = useCallback(\n (value: SetStateAction<T>) => {\n if (value instanceof Function) {\n const newValue = value(valueRef.current);\n valueRef.current = newValue;\n setValue(newValue);\n } else {\n valueRef.current = value;\n setValue(value);\n }\n },\n [setValue]\n );\n\n return [getValue, actualSetValue] as const;\n}\n","import { useRef } from 'react';\n\nexport function useLazyValue<T>(f: () => T): T {\n const didInitialize = useRef(false);\n const value = useRef<T | undefined>(undefined);\n\n if (!didInitialize.current) {\n didInitialize.current = true;\n\n value.current = f();\n }\n\n return value.current!;\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLazyValue } from './useLazyValue';\n\nexport function useMutableState<T extends object>(\n valueOrInitializer: T | (() => T),\n) {\n const mutableValue = useLazyValue(() =>\n typeof valueOrInitializer === 'function'\n ? valueOrInitializer()\n : valueOrInitializer,\n );\n\n // We create a proxy wrapper in order to re-render on changes\n const [wrappedValue, setWrappedValue] = useState(\n () => new Proxy(mutableValue, {}),\n );\n\n const updateValue = useCallback(\n (updater: (value: T) => void) => {\n updater(mutableValue);\n\n setWrappedValue(new Proxy(mutableValue, {}));\n },\n // The mutable value is a dependency to satisfy eslint,\n // but should never change identity\n [mutableValue],\n );\n\n return useMemo(\n () => [wrappedValue, updateValue] as const,\n [updateValue, wrappedValue],\n );\n}\n","import {\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { ClientStorage } from \"../utils/ClientStorage\";\n\nfunction getCurrentValue<T, K extends string = string>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue?: T\n): T | null {\n return (storage.getItem(storageKey) as T | null) ?? defaultValue ?? null;\n}\n\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(\n storage: ClientStorage<K>,\n storageKey: K\n): readonly [T | null, (newValue: SetStateAction<T | null>) => void];\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue: T\n): readonly [T, (newValue: SetStateAction<T>) => void];\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(storage: ClientStorage<K>, storageKey: K, defaultValue?: T) {\n const [state, setState] = useState<T | null>(() =>\n getCurrentValue(storage, storageKey, defaultValue)\n );\n\n useEffect(() => {\n const newValue = getCurrentValue(storage, storageKey, defaultValue);\n setState(newValue);\n }, [defaultValue, storage, storageKey]);\n\n const setValue = useCallback(\n (action: SetStateAction<T | null>) => {\n const newValue =\n typeof action === \"function\"\n ? action(getCurrentValue(storage, storageKey, defaultValue))\n : action;\n storage.setItem(storageKey, newValue);\n setState(newValue);\n },\n [defaultValue, storage, storageKey]\n );\n\n // Listen for changes to localStorage from other tabs\n useEffect(() => {\n const dispose = storage.addListener(storageKey, (newValue) => {\n setState(newValue as T | null);\n });\n\n return () => dispose();\n }, [storage, storageKey]);\n\n return useMemo(() => [state, setValue] as const, [setValue, state]);\n}\n\nexport function usePersistentStateObject<T extends object, K extends string>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue: T\n): [T, (newValue: SetStateAction<T>) => void] {\n const [state, setState] = usePersistentStateString<string, K>(\n storage,\n storageKey,\n JSON.stringify(defaultValue)\n );\n\n const parsedState = useMemo(() => {\n try {\n return JSON.parse(state);\n } catch {\n return defaultValue;\n }\n }, [state, defaultValue]);\n\n return useMemo(\n () => [\n parsedState,\n (action) => {\n setState((prev) => {\n const parsedPrev = JSON.parse(prev);\n\n const newValue =\n typeof action === \"function\" ? action(parsedPrev) : action;\n\n return JSON.stringify(newValue);\n });\n },\n ],\n [parsedState, setState]\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport function usePixelRatio() {\n const [pixelRatio, setPixelRatio] = useState(() => window.devicePixelRatio);\n\n useEffect(() => {\n const mediaQuery = matchMedia(`(resolution: ${pixelRatio}dppx)`);\n\n const handler = () => {\n setPixelRatio(window.devicePixelRatio);\n };\n\n mediaQuery.addEventListener('change', handler, { once: true });\n\n return () => {\n mediaQuery.removeEventListener('change', handler);\n };\n }, [pixelRatio]);\n\n return pixelRatio;\n}\n","import { isShallowEqual } from '@noya-app/noya-utils';\nimport { useRef } from 'react';\n\n/**\n * Memoize an array using shallow comparison.\n */\nexport function useShallowArray<T>(array: T[]) {\n const ref = useRef(array);\n\n if (!isShallowEqual(ref.current, array)) {\n ref.current = array;\n }\n\n return ref.current;\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react';\n\nconst noop = () => {};\n\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback: T,\n): T;\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback?: T,\n): T | ((...args: Parameters<T>) => void);\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback: T,\n): T {\n const callbackRef = useRef(callback || noop);\n\n useLayoutEffect(() => {\n callbackRef.current = callback || noop;\n }, [callback]);\n\n return useCallback(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current(...args),\n [callbackRef],\n ) as T;\n}\n","import { useEffect, useState } from \"react\";\nimport { useLazyValue } from \"../hooks/useLazyValue\";\n\nconst preferDarkQuery = \"(prefers-color-scheme: dark)\";\n\ntype ColorScheme = \"light\" | \"dark\";\n\nexport function useSystemColorScheme() {\n const mediaQuery = useLazyValue(\n () => globalThis.matchMedia?.(preferDarkQuery) ?? \"light\"\n );\n\n const [colorScheme, setColorScheme] = useState<ColorScheme>(\n mediaQuery.matches ? \"dark\" : \"light\"\n );\n\n useEffect(() => {\n const listener = ({ matches }: MediaQueryListEvent) => {\n setColorScheme(matches ? \"dark\" : \"light\");\n };\n\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => {\n mediaQuery.removeEventListener(\"change\", listener);\n };\n }, [mediaQuery]);\n\n return colorScheme;\n}\n","import { decodeQueryParameters } from \"@noya-app/noya-utils\";\nimport { useEffect, useState } from \"react\";\n\nexport type UrlHashParameters = Record<string, string>;\n\nexport function getUrlHashParameters(): UrlHashParameters {\n try {\n return decodeQueryParameters(window.location.hash.slice(1));\n } catch (e) {\n // console.warn(e);\n return {};\n }\n}\n\nexport function useUrlHashParameters(): UrlHashParameters {\n const [parameters, setParameters] = useState<UrlHashParameters>(() =>\n getUrlHashParameters()\n );\n\n useEffect(() => {\n const handler = () => setParameters(getUrlHashParameters());\n\n window.addEventListener(\"hashchange\", handler);\n\n return () => {\n window.removeEventListener(\"hashchange\", handler);\n };\n }, []);\n\n return parameters;\n}\n\ntype ParameterTypeMap = {\n boolean: boolean;\n number: number;\n string: string;\n};\n\nexport function castHashParameter<K extends keyof ParameterTypeMap>(\n value: string = \"\",\n type: K\n): ParameterTypeMap[K] {\n switch (type) {\n case \"boolean\":\n return (value === \"true\") as ParameterTypeMap[K];\n case \"number\": {\n const result = Number(value);\n return (isNaN(result) ? 0 : result) as ParameterTypeMap[K];\n }\n case \"string\":\n return value as ParameterTypeMap[K];\n default:\n throw new Error(\"Invalid type\");\n }\n}\n","type EmitterConfiguration = {\n bufferEventsIfNoListeners: boolean;\n};\n\nexport class Emitter<T extends any[] = []> {\n constructor(options: Partial<EmitterConfiguration> = {}) {\n this.bufferEventsIfNoListeners = options.bufferEventsIfNoListeners ?? false;\n }\n\n bufferEventsIfNoListeners: boolean;\n\n listeners: ((...args: T) => void)[] = [];\n\n addListener = (f: (...args: T) => void, options: { once?: boolean } = {}) => {\n if (options.once) {\n const handler = (...args: T) => {\n this.removeListener(handler);\n return f(...args);\n };\n this.listeners.push(handler);\n } else {\n this.listeners.push(f);\n }\n\n if (this.bufferedEvents.length > 0) {\n const eventsToEmit = this.bufferedEvents;\n\n this.bufferedEvents = [];\n\n eventsToEmit.forEach((event) => {\n this.emit(...event);\n });\n }\n\n return () => this.removeListener(f);\n };\n\n removeListener = (f: (...args: T) => void) => {\n const index = this.listeners.indexOf(f);\n\n if (index === -1) return;\n\n this.listeners.splice(index, 1);\n };\n\n emit = (...args: T) => {\n if (this.bufferEventsIfNoListeners && this.listeners.length === 0) {\n this.bufferedEvents.push(args);\n\n return;\n }\n\n this.listeners.forEach((l) => l(...args));\n };\n\n bufferedEvents: T[] = [];\n}\n","import { Emitter } from \"@noya-app/emitter\";\n\nexport class ClientStorage<K extends string = string> {\n getItem(storageKey: K): string | null {\n if (typeof localStorage === \"undefined\") {\n return null;\n }\n\n return localStorage.getItem(storageKey);\n }\n\n setItem(storageKey: K, value: string | null): void {\n if (typeof localStorage === \"undefined\") {\n return;\n }\n\n if (value === null) {\n localStorage.removeItem(storageKey);\n } else {\n localStorage.setItem(storageKey, value);\n }\n\n this.emitter.emit(storageKey, value);\n }\n\n emitter = new Emitter<[K, string | null]>();\n\n _isListening = false;\n\n addListener(\n storageKey: K,\n listener: (newValue: string | null) => void\n ): () => void {\n // Set up a single listener for all storage events\n if (!this._isListening && typeof window !== \"undefined\") {\n this._isListening = true;\n\n window.addEventListener(\"storage\", (event: StorageEvent) => {\n this.emitter.emit(event.key as any, event.newValue);\n });\n }\n\n return this.emitter.addListener((key, value) => {\n if (key === storageKey) {\n listener(value);\n }\n });\n }\n}\n\nexport const clientStorage = new ClientStorage();\n","export function assignRef<T>(\n ref: React.ForwardedRef<T> | undefined,\n value: T | null,\n): void {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n","// Given a KeyboardEvent, returns the nudge amount\nexport default function handleNudge(e: {\n key: string;\n shiftKey: boolean;\n altKey: boolean;\n}): number | undefined {\n let handled = false;\n let amount = 0;\n\n switch (e.key) {\n case 'ArrowUp':\n amount = 1;\n handled = true;\n break;\n case 'ArrowDown':\n amount = -1;\n handled = true;\n break;\n }\n\n if (!handled) return;\n\n if (e.shiftKey) {\n amount *= 10;\n } else if (e.altKey) {\n amount *= 0.1;\n }\n\n return handled ? amount : undefined;\n}\n","import { CheckIcon, ChevronRightIcon } from \"@noya-app/noya-icons\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport * as RadixDropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport React, {\n ComponentProps,\n ForwardedRef,\n SyntheticEvent,\n forwardRef,\n memo,\n useCallback,\n useMemo,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { MenuItemProps, MenuProps } from \"./ContextMenu\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport {\n CHECKBOX_RIGHT_INSET,\n CHECKBOX_WIDTH,\n KeyboardShortcut,\n SEPARATOR_ITEM,\n getKeyboardShortcutsForMenuItems,\n styles,\n} from \"./internal/Menu\";\n\n/* ----------------------------------------------------------------------------\n * Separator\n * ------------------------------------------------------------------------- */\n\nconst SeparatorElement = styled(RadixDropdownMenu.Separator)(\n styles.separatorStyle\n);\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\nconst ItemElement = styled(RadixDropdownMenu.Item)(styles.itemStyle);\n\nconst CheckboxItemElement = styled(RadixDropdownMenu.CheckboxItem)(\n styles.itemStyle\n);\n\nconst StyledItemIndicator = styled(RadixDropdownMenu.ItemIndicator)(\n styles.itemIndicatorStyle\n);\n\nconst DropdownMenuItem = memo(function ContextMenuItem<T extends string>({\n value,\n children,\n onSelect,\n checked,\n disabled,\n indented,\n icon,\n items,\n shortcut,\n}: MenuItemProps<T>) {\n const handleSelectItem = useCallback(() => {\n if (!value) return;\n\n onSelect(value);\n }, [onSelect, value]);\n\n if (checked) {\n return (\n <CheckboxItemElement\n checked={checked}\n disabled={disabled}\n onSelect={handleSelectItem}\n >\n <StyledItemIndicator>\n <CheckIcon />\n </StyledItemIndicator>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n </CheckboxItemElement>\n );\n }\n\n const element = (\n <ItemElement disabled={disabled} onSelect={handleSelectItem}>\n {indented && (\n <Spacer.Horizontal size={CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET} />\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n {shortcut && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={24} />\n <KeyboardShortcut shortcut={shortcut} />\n </>\n )}\n {items && items.length > 0 && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={16} />\n <ChevronRightIcon />\n </>\n )}\n </ItemElement>\n );\n\n if (items && items.length > 0) {\n return (\n <DropdownMenuRoot\n isNested\n items={items}\n onSelect={onSelect}\n alignOffset={-5}\n >\n {element}\n </DropdownMenuRoot>\n );\n } else {\n return element;\n }\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst Content = styled(RadixDropdownMenu.Content)(styles.contentStyle);\nconst SubContent = styled(RadixDropdownMenu.SubContent)(styles.contentStyle);\n\nconst DropdownMenuRoot = forwardRef(function DropdownMenuRoot<T extends string>(\n {\n items,\n children,\n onSelect,\n isNested,\n shouldBindKeyboardShortcuts,\n onOpenChange,\n open,\n onCloseAutoFocus,\n side,\n sideOffset = 4,\n align,\n alignOffset,\n collisionPadding = 8,\n }: MenuProps<T> & {\n open?: boolean;\n onCloseAutoFocus?: React.EventHandler<SyntheticEvent<unknown>>;\n } & Pick<\n ComponentProps<typeof RadixDropdownMenu.Content>,\n \"side\" | \"sideOffset\" | \"align\" | \"alignOffset\" | \"collisionPadding\"\n >,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const hasCheckedItem = items.some(\n (item) => item !== SEPARATOR_ITEM && item.checked\n );\n\n const keymap = useMemo(\n () =>\n isNested || shouldBindKeyboardShortcuts === false\n ? {}\n : getKeyboardShortcutsForMenuItems(items, onSelect),\n [isNested, items, onSelect, shouldBindKeyboardShortcuts]\n );\n\n useKeyboardShortcuts(keymap);\n\n const RootComponent = isNested\n ? RadixDropdownMenu.Sub\n : RadixDropdownMenu.Root;\n const TriggerComponent = isNested\n ? RadixDropdownMenu.SubTrigger\n : RadixDropdownMenu.Trigger;\n const ContentComponent = isNested ? SubContent : Content;\n\n const contentStyle = useMemo(() => ({ zIndex: 1000 }), []);\n\n return (\n <RootComponent onOpenChange={onOpenChange} open={open}>\n <TriggerComponent ref={forwardedRef as ForwardedRef<any>} asChild>\n {children}\n </TriggerComponent>\n <RadixDropdownMenu.Portal>\n <ContentComponent\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n style={contentStyle}\n collisionPadding={collisionPadding}\n {...({ onCloseAutoFocus } as any)}\n >\n {items.map((item, index) =>\n item === SEPARATOR_ITEM ? (\n <SeparatorElement key={index} />\n ) : (\n <DropdownMenuItem\n key={item.value ?? index}\n value={item.value}\n indented={hasCheckedItem}\n checked={item.checked ?? false}\n disabled={item.disabled ?? false}\n icon={item.icon}\n onSelect={onSelect}\n items={item.items}\n shortcut={item.shortcut}\n >\n {item.title}\n </DropdownMenuItem>\n )\n )}\n </ContentComponent>\n </RadixDropdownMenu.Portal>\n </RootComponent>\n );\n});\n\nexport const DropdownMenu = memo(DropdownMenuRoot);\n","import { getShortcutDisplayParts } from \"@noya-app/noya-keymap\";\nimport React, { memo, ReactNode } from \"react\";\nimport styled, { CSSObject } from \"styled-components\";\nimport { useDesignSystemConfiguration } from \"../../contexts/DesignSystemConfiguration\";\nimport { Theme } from \"../../theme\";\nimport withSeparatorElements from \"../../utils/withSeparatorElements\";\nimport { IconName } from \"../Icons\";\n\nexport const SEPARATOR_ITEM = \"separator\";\n\n// From electron\nexport type MenuItemRole =\n | \"undo\"\n | \"redo\"\n | \"cut\"\n | \"copy\"\n | \"paste\"\n | \"pasteAndMatchStyle\"\n | \"delete\"\n | \"selectAll\"\n | \"reload\"\n | \"forceReload\"\n | \"toggleDevTools\"\n | \"resetZoom\"\n | \"zoomIn\"\n | \"zoomOut\"\n | \"toggleSpellChecker\"\n | \"togglefullscreen\"\n | \"window\"\n | \"minimize\"\n | \"close\"\n | \"help\"\n | \"about\"\n | \"services\"\n | \"hide\"\n | \"hideOthers\"\n | \"unhide\"\n | \"quit\"\n | \"showSubstitutions\"\n | \"toggleSmartQuotes\"\n | \"toggleSmartDashes\"\n | \"toggleTextReplacement\"\n | \"startSpeaking\"\n | \"stopSpeaking\"\n | \"zoom\"\n | \"front\"\n | \"appMenu\"\n | \"fileMenu\"\n | \"editMenu\"\n | \"viewMenu\"\n | \"shareMenu\"\n | \"recentDocuments\"\n | \"toggleTabBar\"\n | \"selectNextTab\"\n | \"selectPreviousTab\"\n | \"mergeAllWindows\"\n | \"clearRecentDocuments\"\n | \"moveTabToNewWindow\"\n | \"windowMenu\";\n\nexport type RegularMenuItem<T extends string> = {\n value?: T;\n title: ReactNode;\n shortcut?: string;\n checked?: boolean;\n disabled?: boolean;\n icon?: Exclude<ReactNode, string> | IconName;\n items?: MenuItem<T>[];\n role?: MenuItemRole;\n};\n\nexport type MenuItem<T extends string> =\n | typeof SEPARATOR_ITEM\n | RegularMenuItem<T>;\n\n// Extract type T of RegularMenuItem<T> within MenuItem<T>\nexport type ExtractMenuItemType<T> =\n T extends RegularMenuItem<infer U> ? U : never;\n\nexport const CHECKBOX_WIDTH = 15;\nexport const CHECKBOX_RIGHT_INSET = 3;\n\nexport const styles = {\n separatorStyle: ({ theme }: { theme: Theme }): CSSObject => ({\n height: \"1px\",\n backgroundColor: theme.colors.divider,\n margin: \"4px -4px\",\n }),\n\n itemStyle: ({\n theme,\n disabled,\n }: {\n theme: Theme;\n disabled?: boolean;\n }): CSSObject => ({\n ...theme.textStyles.button,\n flex: \"0 0 auto\",\n userSelect: \"none\",\n cursor: \"pointer\",\n borderRadius: \"3px\",\n padding: \"6px 8px\",\n ...(disabled && {\n color: theme.colors.textDisabled,\n }),\n \"&:focus\": {\n outline: \"none\",\n color: \"white\",\n backgroundColor: theme.colors.primary,\n\n \"& kbd\": {\n color: \"white\",\n },\n },\n \"&:active\": {\n background: theme.colors.primaryLight,\n },\n display: \"flex\",\n alignItems: \"center\",\n }),\n\n itemIndicatorStyle: {\n display: \"flex\",\n alignItems: \"center\",\n left: `-${CHECKBOX_WIDTH / 2}px`,\n position: \"relative\",\n marginRight: `-${CHECKBOX_RIGHT_INSET}px`,\n } as CSSObject,\n\n contentStyle: ({\n theme,\n scrollable,\n }: {\n theme: Theme;\n scrollable?: boolean;\n }): CSSObject => ({\n borderRadius: 4,\n backgroundColor: theme.colors.popover.background,\n color: theme.colors.text,\n boxShadow: \"0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)\",\n padding: \"4px\",\n border: `1px solid ${theme.colors.popover.divider}`,\n zIndex: 1000,\n ...(scrollable && {\n height: \"100%\",\n maxHeight: \"calc(100vh - 80px)\",\n overflow: \"hidden auto\",\n }),\n }),\n};\n\nfunction getKeyboardShortcuts<T extends string>(\n item: MenuItem<T>\n): [string, T][] {\n if (item === SEPARATOR_ITEM) return [];\n\n if (item.items) return item.items.flatMap(getKeyboardShortcuts);\n\n if (item.disabled || !item.value || !item.shortcut) return [];\n\n return [[item.shortcut, item.value]];\n}\n\nexport function getKeyboardShortcutsForMenuItems<T extends string>(\n menuItems: MenuItem<T>[],\n onSelect: (type: T) => void\n): Record<string, () => void> {\n return Object.fromEntries(\n menuItems\n .flatMap(getKeyboardShortcuts)\n .map(([key, value]) => [key, () => onSelect(value)])\n );\n}\n\nconst ShortcutElement = styled.kbd<{\n $fixedWidth?: boolean;\n}>(\n ({ theme, $fixedWidth }): CSSObject => ({\n ...theme.textStyles.small,\n color: theme.colors.textDisabled,\n ...($fixedWidth && {\n width: \"0.9rem\",\n textAlign: \"center\",\n }),\n })\n);\n\nexport const KeyboardShortcut = memo(function KeyboardShortcut({\n shortcut,\n}: {\n shortcut: string;\n}) {\n const platform = useDesignSystemConfiguration().platform;\n\n const { keys, separator } = getShortcutDisplayParts(shortcut, platform);\n\n const keyElements = keys.map((key) => (\n <ShortcutElement\n key={key}\n $fixedWidth={platform === \"mac\" && key.length === 1}\n >\n {key}\n </ShortcutElement>\n ));\n\n return (\n <>\n {separator\n ? withSeparatorElements(\n keyElements,\n <ShortcutElement>{separator}</ShortcutElement>\n )\n : keyElements}\n </>\n );\n});\n","import { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport React, {\n AriaRole,\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n InputHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useGlobalInputBlurListener } from \"../../contexts/GlobalInputBlurContext\";\n\ntype Props = {\n id?: string;\n style?: any;\n className?: string;\n type?: \"text\" | \"search\";\n disabled?: boolean;\n value: string;\n placeholder?: string;\n role?: AriaRole;\n name?: HTMLInputElement[\"name\"];\n onKeyDown?: KeyboardEventHandler;\n onClick?: MouseEventHandler;\n onDoubleClick?: MouseEventHandler;\n onPointerDown?: PointerEventHandler;\n onFocusCapture?: FocusEventHandler;\n onFocusChange?: (isFocused: boolean) => void;\n onBlur?: FocusEventHandler;\n} & Pick<\n InputHTMLAttributes<HTMLInputElement>,\n \"autoComplete\" | \"autoCapitalize\" | \"autoCorrect\" | \"spellCheck\" | \"autoFocus\"\n>;\n\ntype ReadOnlyProps = Props & {\n readOnly: true;\n};\n\nconst ReadOnlyTextInput = forwardRef(function ReadOnlyTextInput(\n { onKeyDown, onFocusChange, value, ...rest }: ReadOnlyProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n return (\n <input\n ref={forwardedRef}\n {...rest}\n value={value}\n onKeyDown={onKeyDown}\n readOnly\n />\n );\n});\n\ntype ControlledProps = Props & {\n onChange: (value: string) => void;\n};\n\nconst ControlledTextInput = forwardRef(function ControlledTextInput(\n {\n onKeyDown,\n value,\n onChange,\n onFocusChange,\n onBlur,\n onFocusCapture,\n ...rest\n }: ControlledProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n\n onFocusChange?.(false);\n },\n [onBlur, onFocusChange]\n );\n\n const handleFocusCapture = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onFocusCapture?.(event);\n\n onFocusChange?.(true);\n },\n [onFocusCapture, onFocusChange]\n );\n\n return (\n <input\n ref={forwardedRef}\n {...rest}\n value={value}\n onKeyDown={onKeyDown}\n onChange={useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) =>\n onChange(event.target.value),\n [onChange]\n )}\n onBlur={handleBlur}\n onFocusCapture={handleFocusCapture}\n />\n );\n});\n\ntype SubmittableProps = Props & {\n onSubmit: (value: string) => void;\n allowSubmittingWithSameValue?: boolean;\n submitAutomaticallyAfterDelay?: number;\n};\n\nconst SubmittableTextInput = forwardRef(function SubmittableTextInput(\n {\n onKeyDown,\n value,\n onSubmit,\n onBlur,\n onFocusChange,\n onFocusCapture,\n allowSubmittingWithSameValue = false,\n submitAutomaticallyAfterDelay,\n ...rest\n }: SubmittableProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const ref = React.useRef<HTMLInputElement>(null);\n\n const latestValue = useRef(value);\n latestValue.current = value;\n\n // Track whether the user has edited the input since the last submission.\n // We use this to support automatically submitting the input after a delay.\n const userDidEdit = useRef(false);\n\n const isSubmitTriggeredByEscapeKey = useRef(false);\n\n const [internalValue, setInternalValue] = useState(\"\");\n\n useLayoutEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleSubmit = useCallback(() => {\n // If this submission was triggered with Escape, we attempt to submit the original value.\n // This will only actually call `onSubmit` if `allowSubmittingWithSameValue` is also true.\n const submissionValue = isSubmitTriggeredByEscapeKey.current\n ? value\n : internalValue;\n\n isSubmitTriggeredByEscapeKey.current = false;\n\n if (submissionValue === value && !allowSubmittingWithSameValue) return;\n\n onSubmit(submissionValue);\n\n userDidEdit.current = false;\n\n setInternalValue(latestValue.current);\n }, [allowSubmittingWithSameValue, value, internalValue, onSubmit]);\n\n useGlobalInputBlurListener(\n useCallback(() => {\n if (ref.current !== document.activeElement) return;\n\n handleSubmit();\n }, [handleSubmit])\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n handleSubmit();\n\n event.preventDefault();\n event.stopPropagation();\n } else if (event.key === \"Escape\") {\n isSubmitTriggeredByEscapeKey.current = true;\n\n ref.current?.blur();\n } else {\n onKeyDown?.(event);\n }\n },\n [onKeyDown, handleSubmit]\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n userDidEdit.current = true;\n\n setInternalValue(event.target.value);\n },\n []\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n\n onFocusChange?.(false);\n\n handleSubmit();\n },\n [onBlur, onFocusChange, handleSubmit]\n );\n\n const handleFocusCapture = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onFocusCapture?.(event);\n\n onFocusChange?.(true);\n },\n [onFocusCapture, onFocusChange]\n );\n\n const autoSubmitTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const latestHandleSubmit = useRef(handleSubmit);\n latestHandleSubmit.current = handleSubmit;\n\n useEffect(() => {\n if (submitAutomaticallyAfterDelay) {\n if (autoSubmitTimeoutRef.current) {\n clearTimeout(autoSubmitTimeoutRef.current);\n }\n\n autoSubmitTimeoutRef.current = setTimeout(() => {\n if (userDidEdit.current === false) return;\n\n latestHandleSubmit.current();\n }, submitAutomaticallyAfterDelay);\n }\n\n // Clear the timeout when the component is unmounted or if the value changes\n return () => {\n if (autoSubmitTimeoutRef.current) {\n clearTimeout(autoSubmitTimeoutRef.current);\n }\n };\n // Track `internalValue` to explicitly reset the timer\n }, [internalValue, submitAutomaticallyAfterDelay]);\n\n return (\n <input\n ref={composeRefs(ref, forwardedRef)}\n {...rest}\n value={internalValue}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocusCapture={handleFocusCapture}\n />\n );\n});\n\nexport type TextInputProps = ReadOnlyProps | ControlledProps | SubmittableProps;\n\n/**\n * This component shouldn't be used directly. Instead use the InputField components.\n */\nexport default forwardRef(function TextInput(\n props: TextInputProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const commonProps: TextInputProps = {\n onPointerDown: useCallback(\n (event: React.PointerEvent) => event.stopPropagation(),\n []\n ),\n onClick: useCallback(\n (event: React.MouseEvent) => event.stopPropagation(),\n []\n ),\n autoComplete: \"off\",\n autoCapitalize: \"off\",\n autoCorrect: \"off\",\n spellCheck: false,\n type: \"text\",\n disabled: false,\n ...props,\n };\n\n if (\"readOnly\" in commonProps) {\n return <ReadOnlyTextInput ref={forwardedRef} {...commonProps} readOnly />;\n } else if (\"onChange\" in commonProps) {\n return <ControlledTextInput ref={forwardedRef} {...commonProps} />;\n } else {\n return <SubmittableTextInput ref={forwardedRef} {...commonProps} />;\n }\n});\n","import { createContext, useContext, useEffect } from 'react';\n\nexport type GlobalInputBlurContextValue = {\n addListener: (f: () => void) => void;\n removeListener: (f: () => void) => void;\n trigger: () => void;\n};\n\nconst defaultValue = (() => {\n const listeners: (() => void)[] = [];\n\n const value: GlobalInputBlurContextValue = {\n addListener(f) {\n listeners.push(f);\n },\n removeListener(f) {\n const index = listeners.indexOf(f);\n if (index === -1) return;\n listeners.splice(index, 1);\n },\n trigger() {\n listeners.forEach((f) => {\n f();\n });\n },\n };\n\n return value;\n})();\n\nconst GlobalInputBlurContext =\n createContext<GlobalInputBlurContextValue>(defaultValue);\n\nexport const GlobalInputBlurProvider = GlobalInputBlurContext.Provider;\n\n/**\n * Some components store their editable state internally.\n * We trigger this event before selection changes so that they can commit their\n * edits before they unmount. This is more manual but simpler than doing so during\n * the unmount phase (e.g. the return function of `useEffect`), since handlers are\n * guaranteed to be called with the current data.\n */\nexport const useGlobalInputBlur = (): GlobalInputBlurContextValue => {\n return useContext(GlobalInputBlurContext);\n};\n\nexport function useGlobalInputBlurListener(f: () => void) {\n const context = useGlobalInputBlur();\n\n useEffect(() => {\n context.addListener(f);\n\n return () => {\n context.removeListener(f);\n };\n }, [context, f]);\n}\n\nexport function useGlobalInputBlurTrigger() {\n return useGlobalInputBlur().trigger;\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport React, { ComponentProps } from \"react\";\nimport styled from \"styled-components\";\nimport { IconButton } from \"./IconButton\";\n\ntype PopoverVariant = \"normal\" | \"large\";\n\nconst ContentElement = styled(PopoverPrimitive.Content)<{\n variant?: PopoverVariant;\n}>(({ theme, variant }) => ({\n borderRadius: 4,\n fontSize: 14,\n backgroundColor: theme.colors.popover.background,\n boxShadow: \"0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)\",\n maxHeight: \"600px\",\n overflowY: \"auto\",\n color: theme.colors.textMuted,\n ...(variant === \"large\" && { width: \"680px\" }),\n ...(variant === \"normal\" && { width: \"240px\" }),\n zIndex: 1000,\n}));\n\nconst ArrowElement = styled(PopoverPrimitive.Arrow)(({ theme }) => ({\n fill: theme.colors.popover.background,\n}));\n\nconst PopoverClose = styled(PopoverPrimitive.Close)(({ theme }) => ({\n all: \"unset\",\n fontFamily: \"inherit\",\n borderRadius: \"100%\",\n height: 25,\n width: 25,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n top: 5,\n right: 5,\n}));\n\ninterface Props\n extends Pick<\n ComponentProps<(typeof PopoverPrimitive)[\"Content\"]>,\n | \"onOpenAutoFocus\"\n | \"onCloseAutoFocus\"\n | \"onPointerDownOutside\"\n | \"onInteractOutside\"\n | \"onFocusOutside\"\n | \"side\"\n > {\n children: React.ReactNode;\n trigger: React.ReactNode;\n variant?: PopoverVariant;\n closable?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n sideOffset?: number;\n onClickClose?: () => void;\n showArrow?: boolean;\n}\n\nexport function Popover({\n children,\n trigger,\n variant,\n closable,\n open,\n side,\n sideOffset = 4,\n showArrow = true,\n onOpenChange,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n onClickClose,\n}: Props) {\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <PopoverPrimitive.Trigger asChild>{trigger}</PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <ContentElement\n variant={variant}\n side={side}\n align=\"center\"\n sideOffset={sideOffset}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n onInteractOutside={onInteractOutside}\n onFocusOutside={onFocusOutside}\n onPointerDownOutside={onPointerDownOutside}\n collisionPadding={8}\n arrowPadding={2}\n // Don't propagate pointer down events to the canvas\n // onPointerDown={(event) => {\n // event.stopPropagation();\n // }}\n // onWheel={(event) => {\n // event.stopPropagation();\n // }}\n >\n {children}\n {showArrow && <ArrowElement />}\n {closable && (\n <PopoverClose>\n <IconButton iconName=\"Cross2Icon\" onClick={onClickClose} />\n </PopoverClose>\n )}\n </ContentElement>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n","import { uuid } from \"@noya-app/noya-utils\";\nimport React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype FloatingWindowContextValue = {\n createWindow: (element: React.ReactNode) => string;\n closeWindow: (id: string) => void;\n};\n\nconst FloatingWindowContext = createContext<\n FloatingWindowContextValue | undefined\n>(undefined);\n\ntype CurrentWindowContextValue = {\n id: string;\n};\n\nconst CurrentWindowContext = createContext<\n CurrentWindowContextValue | undefined\n>(undefined);\n\nexport const FloatingWindowProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [windows, setWindows] = useState<Record<string, React.ReactNode>>({});\n\n const contextValue = useMemo(() => {\n const createWindow = (element: React.ReactNode) => {\n const id = uuid();\n\n setWindows((windows) => ({\n ...windows,\n [id]: (\n <CurrentWindowContext.Provider value={{ id }}>\n {element}\n </CurrentWindowContext.Provider>\n ),\n }));\n\n return id;\n };\n\n const closeWindow = (id: string) => {\n setWindows((windows) => {\n const { [id]: _, ...rest } = windows;\n return rest;\n });\n };\n\n return { createWindow, closeWindow };\n }, []);\n\n return (\n <FloatingWindowContext.Provider value={contextValue}>\n {children}\n {Object.entries(windows).map(([id, element]) =>\n createPortal(element, document.body, id)\n )}\n </FloatingWindowContext.Provider>\n );\n};\n\nexport const useFloatingWindowManager = () => {\n const context = useContext(FloatingWindowContext);\n\n if (!context) {\n throw new Error(\n \"useFloatingWindow must be used within a FloatingWindowProvider\"\n );\n }\n\n return context;\n};\n\nexport const useCurrentFloatingWindowInternal = () => {\n const context = useContext(CurrentWindowContext);\n\n if (!context) {\n throw new Error(\"useCurrentWindow must be used within a FloatingWindow\");\n }\n\n return context;\n};\n","// From: https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/src/useHover.ts\n// MIT License\n\n// This code is a fork of `react-aria`'s `useHover` hook. The code in this file are based on code\n// from both `react-aria` and `react-interactions`. Original licensing for each project can be found\n// in the the root directories of each respective repository.\n//\n// @see https://github.com/adobe/react-spectrum/tree/452d1cb6a49f9f493757737edaf2b64014108de6/packages/%40react-aria\n// @see https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport * as React from 'react';\n\nexport interface HoverEvent {\n /** The type of hover event being fired. */\n type: 'hoverstart' | 'hoverend';\n /** The pointer type that triggered the hover event. */\n pointerType: 'mouse' | 'pen';\n /** The target element of the hover event. */\n target: HTMLElement;\n}\n\nexport interface HoverEvents {\n /** Handler that is called when a hover interaction starts. */\n onHoverStart?(e: HoverEvent): void;\n /** Handler that is called when a hover interaction ends. */\n onHoverEnd?(e: HoverEvent): void;\n /** Handler that is called when the hover state changes. */\n onHoverChange?(isHovering: boolean): void;\n}\n\nexport interface HoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean;\n}\n\ninterface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: React.HTMLAttributes<HTMLElement>;\n isHovered: boolean;\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter with\n // pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other devices that\n // don't have this quirk, we don't want to ignore a mouse hover sometime in the distant future\n // because a user previously touched the element.\n setTimeout(function clearGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener('pointerup', handleGlobalPointerEvent);\n\n hoverCount++;\n return function teardownGlobalTouchEvents() {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n document.removeEventListener('pointerup', handleGlobalPointerEvent);\n };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps = {}): HoverResult {\n const { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;\n\n const [isHovered, setHovered] = React.useState(false);\n const state = React.useRef({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n }).current;\n\n React.useEffect(setupGlobalTouchEvents, []);\n\n const hoverProps = React.useMemo(\n function getHoverProps() {\n function triggerHoverStart(\n event: PointerEvent | React.PointerEvent | MouseEvent | React.MouseEvent,\n pointerType: 'mouse' | 'pen' | 'touch'\n ) {\n if (isDisabled || pointerType === 'touch' || state.isHovered) {\n return;\n }\n\n state.isHovered = true;\n const target = event.target as HTMLElement;\n\n if (onHoverStart) {\n onHoverStart({\n type: 'hoverstart',\n target,\n pointerType,\n });\n }\n\n if (onHoverChange) {\n onHoverChange(true);\n }\n\n setHovered(true);\n }\n\n function triggerHoverEnd(\n event: PointerEvent | React.PointerEvent | MouseEvent | React.MouseEvent,\n pointerType: 'mouse' | 'pen' | 'touch'\n ) {\n if (isDisabled || pointerType === 'touch' || !state.isHovered) {\n return;\n }\n\n state.isHovered = false;\n const target = event.target as HTMLElement;\n\n if (onHoverEnd) {\n onHoverEnd({\n type: 'hoverend',\n target,\n pointerType,\n });\n }\n\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n setHovered(false);\n }\n\n const hoverProps: React.HTMLAttributes<HTMLElement> = {\n onPointerEnter(event: React.PointerEvent<HTMLElement>) {\n if (globalIgnoreEmulatedMouseEvents && event.pointerType === 'mouse') {\n return;\n }\n triggerHoverStart(event, event.pointerType);\n },\n onPointerLeave(event: React.PointerEvent<HTMLElement>) {\n triggerHoverEnd(event, event.pointerType);\n },\n };\n\n return hoverProps;\n },\n [isDisabled, state, onHoverStart, onHoverChange, onHoverEnd]\n );\n\n return {\n hoverProps,\n isHovered,\n };\n}","import { CheckIcon, ChevronRightIcon } from \"@noya-app/noya-icons\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport * as RadixContextMenu from \"@radix-ui/react-context-menu\";\nimport React, { ReactNode, memo, useCallback, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport {\n CHECKBOX_RIGHT_INSET,\n CHECKBOX_WIDTH,\n KeyboardShortcut,\n MenuItem,\n SEPARATOR_ITEM,\n getKeyboardShortcutsForMenuItems,\n styles,\n} from \"./internal/Menu\";\n\n/* ----------------------------------------------------------------------------\n * Separator\n * ------------------------------------------------------------------------- */\n\nconst SeparatorElement = styled(RadixContextMenu.Separator)(\n styles.separatorStyle\n);\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\nconst ItemElement = styled(RadixContextMenu.Item)(styles.itemStyle);\n\nconst CheckboxItemElement = styled(RadixContextMenu.CheckboxItem)(\n styles.itemStyle\n);\n\nconst StyledItemIndicator = styled(RadixContextMenu.ItemIndicator)(\n styles.itemIndicatorStyle\n);\n\nexport interface MenuItemProps<T extends string> {\n value?: T;\n children: ReactNode;\n onSelect: (value: T) => void;\n checked: boolean;\n disabled: boolean;\n indented: boolean;\n shortcut?: string;\n icon?: ReactNode;\n items?: MenuItem<T>[];\n}\n\nconst ContextMenuItem = memo(function ContextMenuItem<T extends string>({\n value,\n children,\n onSelect,\n checked,\n disabled,\n indented,\n icon,\n items,\n shortcut,\n}: MenuItemProps<T>) {\n // The pointer event within the context menu will bubble outside of the\n // context menu unless we stop it here.\n const handlePointerDown = useCallback(\n (event: React.PointerEvent) => event.stopPropagation(),\n []\n );\n\n const handleSelectItem = useCallback(() => {\n if (!value) return;\n\n onSelect(value);\n }, [onSelect, value]);\n\n if (checked) {\n return (\n <CheckboxItemElement\n checked={checked}\n disabled={disabled}\n onSelect={handleSelectItem}\n >\n <StyledItemIndicator>\n <CheckIcon />\n </StyledItemIndicator>\n {children}\n </CheckboxItemElement>\n );\n }\n\n const element = (\n <ItemElement\n disabled={disabled}\n onSelect={handleSelectItem}\n onPointerDown={handlePointerDown}\n >\n {indented && (\n <Spacer.Horizontal size={CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET} />\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n {shortcut && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={24} />\n <KeyboardShortcut shortcut={shortcut} />\n </>\n )}\n {items && items.length > 0 && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={16} />\n <ChevronRightIcon />\n </>\n )}\n </ItemElement>\n );\n\n if (items && items.length > 0) {\n return (\n <ContextMenuRoot isNested items={items} onSelect={onSelect}>\n {element}\n </ContextMenuRoot>\n );\n } else {\n return element;\n }\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst Content = styled(RadixContextMenu.Content)(styles.contentStyle);\nconst SubContent = styled(RadixContextMenu.SubContent)(styles.contentStyle);\n\nexport interface MenuProps<T extends string> {\n children: ReactNode;\n items: MenuItem<T>[];\n onSelect: (value: T) => void;\n isNested?: boolean;\n shouldBindKeyboardShortcuts?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction ContextMenuRoot<T extends string>({\n items,\n children,\n onSelect,\n isNested,\n shouldBindKeyboardShortcuts,\n onOpenChange,\n}: MenuProps<T>) {\n const hasCheckedItem = items.some(\n (item) => item !== SEPARATOR_ITEM && item.checked\n );\n\n const keymap = useMemo(\n () =>\n isNested || shouldBindKeyboardShortcuts === false\n ? {}\n : getKeyboardShortcutsForMenuItems(items, onSelect),\n [isNested, items, onSelect, shouldBindKeyboardShortcuts]\n );\n\n useKeyboardShortcuts(keymap);\n\n // We call preventDefault both to:\n // - Disable radix-ui's long-press-to-open behavior\n // https://github.com/radix-ui/primitives/issues/748#issuecomment-869502837\n // - Mark the event as handled, so our ListView root doesn't handle it (a hack)\n const onPointerDown = useCallback((event: React.PointerEvent) => {\n event.preventDefault();\n }, []);\n\n const RootComponent = isNested ? RadixContextMenu.Sub : RadixContextMenu.Root;\n const TriggerComponent = isNested\n ? RadixContextMenu.SubTrigger\n : RadixContextMenu.Trigger;\n const ContentComponent: typeof Content = isNested ? SubContent : Content;\n\n return (\n <RootComponent onOpenChange={onOpenChange}>\n <TriggerComponent asChild onPointerDown={onPointerDown}>\n {children}\n </TriggerComponent>\n <RadixContextMenu.Portal>\n <ContentComponent>\n {items.map((item, index) =>\n item === SEPARATOR_ITEM ? (\n <SeparatorElement key={index} />\n ) : (\n <ContextMenuItem\n key={item.value ?? index}\n value={item.value}\n indented={hasCheckedItem}\n checked={item.checked ?? false}\n disabled={item.disabled ?? false}\n icon={item.icon}\n onSelect={onSelect}\n items={item.items}\n shortcut={item.shortcut}\n >\n {item.title}\n </ContextMenuItem>\n )\n )}\n </ContentComponent>\n </RadixContextMenu.Portal>\n </RootComponent>\n );\n}\n\nexport const ContextMenu = memo(ContextMenuRoot);\n","import React, { memo } from \"react\";\nimport styled from \"styled-components\";\n\n/* ----------------------------------------------------------------------------\n * Divider\n * ------------------------------------------------------------------------- */\n\ntype DividerVariant = \"normal\" | \"strong\" | \"subtle\";\n\nconst DividerContainer = styled.div<\n DividerProps_ & {\n $orientation: \"horizontal\" | \"vertical\";\n }\n>(({ theme, $variant = \"normal\", $orientation, $overflow = 0 }) => ({\n ...($orientation === \"horizontal\"\n ? { height: \"1px\", minHeight: \"1px\", margin: `0px -${$overflow}px` }\n : { width: \"1px\", minWidth: \"1px\", margin: `-${$overflow}px 0px` }),\n background:\n $variant === \"strong\"\n ? theme.colors.dividerStrong\n : $variant === \"subtle\"\n ? theme.colors.dividerSubtle\n : theme.colors.divider,\n alignSelf: \"stretch\",\n}));\n\ninterface DividerProps_ {\n $variant?: DividerVariant;\n $overflow?: number;\n}\n\ninterface DividerProps {\n variant?: DividerVariant;\n overflow?: number;\n}\n\nexport const Divider = memo(function Divider({\n variant,\n overflow,\n ...props\n}: DividerProps) {\n return (\n <DividerContainer\n $orientation=\"horizontal\"\n $variant={variant}\n $overflow={overflow}\n {...props}\n />\n );\n});\n\nexport const DividerVertical = memo(function DividerVertical({\n variant,\n overflow,\n ...props\n}: DividerProps) {\n return (\n <DividerContainer\n $orientation=\"vertical\"\n $variant={variant}\n $overflow={overflow}\n {...props}\n />\n );\n});\n","import { DragHandleDots2Icon } from \"@noya-app/noya-icons\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useDesignSystemTheme } from \"../contexts/DesignSystemConfiguration\";\nimport { DropdownMenu } from \"./DropdownMenu\";\nimport { MenuItem } from \"./internal/Menu\";\n\nconst DotButtonElement = styled.div(({ theme }) => ({\n cursor: \"pointer\",\n borderRadius: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"2px 0\",\n \"&:hover\": {\n background: theme.colors.inputBackgroundLight,\n },\n \"&:active\": {\n background: theme.colors.activeBackground,\n },\n}));\n\nconst TriggerElement = styled.div({\n pointerEvents: \"none\",\n height: \"15px\",\n});\n\n/**\n * A button that opens a menu when clicked, but also allows dragging the\n */\nexport const DraggableMenuButton = memo(function DraggableMenuButton<\n T extends string,\n>({\n items,\n onSelect,\n isVisible = true,\n}: {\n items?: MenuItem<T>[];\n onSelect?: (value: T) => void;\n isVisible?: boolean;\n}) {\n const color = useDesignSystemTheme().colors.icon;\n const [open, setOpen] = useState(false);\n const [downPosition, setDownPosition] = React.useState<{\n x: number;\n y: number;\n } | null>(null);\n\n const handlePointerDownCapture = useCallback(\n (event: React.PointerEvent) => {\n if (open) {\n setDownPosition(null);\n return;\n }\n\n setDownPosition({\n x: event.clientX,\n y: event.clientY,\n });\n },\n [open]\n );\n\n const handlePointerUp = useCallback(\n (event: React.PointerEvent) => {\n if (open || !downPosition) {\n setDownPosition(null);\n return;\n }\n\n const dx = event.clientX - downPosition.x;\n const dy = event.clientY - downPosition.y;\n\n const distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n\n if (distance < 5) {\n setOpen(true);\n }\n\n setDownPosition(null);\n },\n [downPosition, open]\n );\n\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) setOpen(false);\n },\n [setOpen]\n );\n\n return (\n <DotButtonElement\n onPointerDownCapture={handlePointerDownCapture}\n onPointerUp={handlePointerUp}\n onClick={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n {items && onSelect ? (\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n items={items}\n onSelect={onSelect}\n shouldBindKeyboardShortcuts={false}\n >\n <TriggerElement>\n <DragHandleDots2Icon\n color={isVisible || open ? color : \"transparent\"}\n />\n </TriggerElement>\n </DropdownMenu>\n ) : (\n <DragHandleDots2Icon\n color={isVisible || open ? color : \"transparent\"}\n />\n )}\n </DotButtonElement>\n );\n});\n","import { Sketch } from \"@noya-app/noya-file-format\";\nimport React, { CSSProperties, ForwardedRef, forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\nimport { SketchPattern } from \"../utils/sketchPattern\";\nimport { FillPreviewBackground } from \"./FillPreviewBackground\";\n\nconst Container = styled.button<{ $flex?: CSSProperties[\"flex\"] }>(\n ({ theme, $flex }) => ({\n outline: \"none\",\n padding: 0,\n width: \"50px\",\n height: \"27px\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n border: \"none\",\n boxShadow: `0 0 0 1px ${theme.colors.divider} inset`,\n background: \"transparent\",\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`,\n },\n position: \"relative\",\n flex: $flex,\n })\n);\n\ninterface Props {\n id?: string;\n value?: Sketch.Color | Sketch.Gradient | SketchPattern;\n flex?: CSSProperties[\"flex\"];\n}\n\nexport const FillInputField = memo(\n forwardRef(function FillInputField(\n { id, value, flex, ...rest }: Props,\n ref: ForwardedRef<HTMLButtonElement>\n ) {\n return (\n <Container ref={ref} id={id} $flex={flex} {...rest}>\n <FillPreviewBackground value={value} />\n </Container>\n );\n })\n);\n","/**\n * UUID string.\n */\nexport type Uuid = string;\n/**\n * Collection of global document objects\n */\nexport type AssetCollection = {\n _class: 'assetCollection';\n do_objectID: Uuid;\n imageCollection?: ImageCollection;\n colorAssets: ColorAsset[];\n gradientAssets: GradientAsset[];\n images: (FileRef | DataRef)[];\n colors: Color[];\n gradients: Gradient[];\n exportPresets: [];\n};\n/**\n * Legacy object only retained for migrating older documents.\n */\nexport type ImageCollection = {\n _class: 'imageCollection';\n images: any;\n};\n/**\n * Defines a reusable color asset\n */\nexport type ColorAsset = {\n _class: 'MSImmutableColorAsset';\n do_objectID: Uuid;\n name: string;\n color: Color;\n};\n/**\n * Defines a RGBA color value\n */\nexport type Color = {\n _class: 'color';\n alpha: UnitInterval;\n red: UnitInterval;\n green: UnitInterval;\n blue: UnitInterval;\n swatchID?: Uuid;\n colorSpaces?: {\n hsva?: {\n hue: number;\n saturation: number;\n value: number;\n alpha: number;\n };\n };\n};\n/**\n * The set of all real numbers that are greater than or equal to 0 and less than or equal to 1. Used within Sketch documents to encode normalised scalar values, for example RGB color components.\n */\nexport type UnitInterval = number;\n/**\n * Defines a reusable gradient asset\n */\nexport type GradientAsset = {\n _class: 'MSImmutableGradientAsset';\n do_objectID: Uuid;\n name: string;\n gradient: Gradient;\n};\n/**\n * Defines a gradient\n */\nexport type Gradient = {\n _class: 'gradient';\n gradientType: GradientType;\n elipseLength: number;\n from: PointString;\n to: PointString;\n stops: GradientStop[];\n};\n/**\n * Enumeration of the gradient types\n */\nexport enum GradientType {\n Linear = 0,\n Radial = 1,\n Angular = 2,\n}\n/**\n * A formatted string representation of a 2D point, e.g. {1, 1}.\n \n */\nexport type PointString = string;\n/**\n * Defines a position on a gradient that marks the end of a transition to a new color\n */\nexport type GradientStop = {\n _class: 'gradientStop';\n color: Color;\n position: UnitInterval;\n};\n/**\n * Defines a reference to a file within the document bundle\n */\nexport type FileRef = {\n _class: 'MSJSONFileReference';\n _ref_class: 'MSImageData' | 'MSImmutablePage' | 'MSPatch';\n _ref: string;\n};\n/**\n * Defines inline base64 data\n */\nexport type DataRef = {\n _class: 'MSJSONOriginalDataReference';\n _ref_class: 'MSImageData' | 'MSFontData';\n _ref: string;\n data: {\n _data: string;\n };\n sha1: {\n _data: string;\n };\n};\n/**\n * Enumeration of the color profiles Sketch can use to render a document\n */\nexport enum ColorSpace {\n Unmanaged = 0,\n SRGB = 1,\n P3 = 2,\n}\n/**\n * Defines a layer style that has been imported from a library\n */\nexport type ForeignLayerStyle = {\n _class: 'MSImmutableForeignLayerStyle';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteStyleID: Uuid;\n localSharedStyle: SharedStyle;\n};\n/**\n * Defines a reusable style\n */\nexport type SharedStyle = {\n _class: 'sharedStyle';\n do_objectID: Uuid;\n name: string;\n value: Style;\n};\n/**\n * Defines a layer style\n */\nexport type Style = {\n _class: 'style';\n do_objectID: Uuid;\n borders?: Border[];\n borderOptions: BorderOptions;\n blur?: Blur;\n fills?: Fill[];\n startMarkerType: MarkerType;\n endMarkerType: MarkerType;\n miterLimit: number;\n windingRule: WindingRule;\n textStyle?: TextStyle;\n shadows?: Shadow[];\n innerShadows: InnerShadow[];\n contextSettings?: GraphicsContextSettings;\n colorControls: ColorControls;\n};\n/**\n * Defines a border style\n */\nexport type Border = {\n _class: 'border';\n isEnabled: boolean;\n color: Color;\n fillType: FillType;\n position: BorderPosition;\n thickness: number;\n contextSettings: GraphicsContextSettings;\n gradient: Gradient;\n};\n/**\n * Enumeration of the fill types\n */\nexport enum FillType {\n Color = 0,\n Gradient = 1,\n Pattern = 4,\n Shader = -101,\n}\n/**\n * Enumeration of border positions\n */\nexport enum BorderPosition {\n Center = 0,\n Inside = 1,\n Outside = 2,\n}\n/**\n * Defines the opacity and blend mode of a style or shadow\n */\nexport type GraphicsContextSettings = {\n _class: 'graphicsContextSettings';\n blendMode: BlendMode;\n opacity: number;\n};\n/**\n * Enumeration of the blend modes that can be applied to fills\n */\nexport enum BlendMode {\n Normal = 0,\n Darken = 1,\n Multiply = 2,\n ColorBurn = 3,\n Lighten = 4,\n Screen = 5,\n ColorDodge = 6,\n Overlay = 7,\n SoftLight = 8,\n HardLight = 9,\n Difference = 10,\n Exclusion = 11,\n Hue = 12,\n Saturation = 13,\n Color = 14,\n Luminosity = 15,\n PlusDarker = 16,\n PlusLighter = 17,\n}\n/**\n * Defines border options\n */\nexport type BorderOptions = {\n _class: 'borderOptions';\n isEnabled: boolean;\n dashPattern: number[];\n lineCapStyle: LineCapStyle;\n lineJoinStyle: LineJoinStyle;\n};\n/**\n * Enumeration of the line cap styles\n */\nexport enum LineCapStyle {\n Butt = 0,\n Round = 1,\n Projecting = 2,\n}\n/**\n * Enumeration of the line join styles\n */\nexport enum LineJoinStyle {\n Miter = 0,\n Round = 1,\n Bevel = 2,\n}\n/**\n * Defines a blur style\n */\nexport type Blur = {\n _class: 'blur';\n isEnabled: boolean;\n center: PointString;\n motionAngle?: number;\n radius?: number;\n saturation: number;\n type: BlurType;\n};\n/**\n * Enumeration of the various blur types\n */\nexport enum BlurType {\n Gaussian = 0,\n Motion = 1,\n Zoom = 2,\n Background = 3,\n}\n/**\n * Defines a fill style\n */\nexport type Fill = {\n _class: 'fill';\n isEnabled: boolean;\n color: Color;\n fillType: FillType;\n noiseIndex: number;\n noiseIntensity: number;\n patternFillType: PatternFillType;\n patternTileScale: number;\n contextSettings: GraphicsContextSettings;\n gradient: Gradient;\n image?: FileRef | DataRef;\n shader?: Shader;\n};\n/**\n * Enumeration of pattern fill types\n */\nexport enum PatternFillType {\n Tile = 0,\n Fill = 1,\n Stretch = 2,\n Fit = 3,\n}\n/**\n * Defines a shader\n */\nexport type Shader = {\n _class: 'shader';\n shaderString: string;\n variables: ShaderVariable[];\n};\n/**\n * Defines a variable to be passed to the shader as a uniform\n */\nexport type ShaderVariable = {\n _class: 'shaderVariable';\n name: string;\n value:\n | {\n type: 'integer';\n data: number;\n }\n | {\n type: 'float';\n data: number;\n }\n | {\n type: 'float2';\n data: { x: number; y: number };\n }\n | {\n type: 'color';\n data: Color;\n };\n};\n/**\n * Enumeration of the possible types of vector line endings\n */\nexport enum MarkerType {\n OpenArrow = 0,\n FilledArrow = 1,\n Line = 2,\n OpenCircle = 3,\n FilledCircle = 4,\n OpenSquare = 5,\n FilledSquare = 6,\n}\n/**\n * Enumeration of the winding rule that controls how fills behave in shapes with complex paths\n */\nexport enum WindingRule {\n NonZero = 0,\n EvenOdd = 1,\n}\n/**\n * Defines text style\n */\nexport type TextStyle = {\n _class: 'textStyle';\n verticalAlignment: TextVerticalAlignment;\n encodedAttributes: {\n paragraphStyle?: ParagraphStyle;\n MSAttributedStringTextTransformAttribute?: TextTransform;\n underlineStyle?: UnderlineStyle;\n strikethroughStyle?: {};\n kerning?: number;\n MSAttributedStringFontAttribute: FontDescriptor;\n textStyleVerticalAlignmentKey?: TextVerticalAlignment;\n MSAttributedStringColorAttribute?: Color;\n };\n};\n/**\n * Enumeration of the text style vertical alighment options\n */\nexport enum TextVerticalAlignment {\n Top = 0,\n Middle = 1,\n Bottom = 2,\n}\n/**\n * Defines the paragraph style within a text style\n */\nexport type ParagraphStyle = {\n _class: 'paragraphStyle';\n alignment?: TextHorizontalAlignment;\n maximumLineHeight?: number;\n minimumLineHeight?: number;\n paragraphSpacing?: number;\n allowsDefaultTighteningForTruncation?: number;\n};\n/**\n * Enumeration of the horizontal alignment options for paragraphs\n */\nexport enum TextHorizontalAlignment {\n Left = 0,\n Right = 1,\n Centered = 2,\n Justified = 3,\n Natural = 4,\n}\n/**\n * Enumeration of the text style transformations options\n */\nexport enum TextTransform {\n None = 0,\n Uppercase = 1,\n Lowercase = 2,\n}\n/**\n * Enumeration of the text style underline options\n */\nexport enum UnderlineStyle {\n None = 0,\n Underlined = 1,\n}\n/**\n * Defines a font selection\n */\nexport type FontDescriptor = {\n _class: 'fontDescriptor';\n attributes: {\n name: string;\n size: number;\n variation?: {\n [key: string]: number;\n };\n };\n};\n/**\n * Defines a shadow style\n */\nexport type Shadow = {\n _class: 'shadow';\n isEnabled: boolean;\n blurRadius: number;\n color: Color;\n contextSettings: GraphicsContextSettings;\n offsetX: number;\n offsetY: number;\n spread: number;\n};\n/**\n * Defines an inner shadow style\n */\nexport type InnerShadow = {\n _class: 'innerShadow';\n isEnabled: boolean;\n blurRadius: number;\n color: Color;\n contextSettings: GraphicsContextSettings;\n offsetX: number;\n offsetY: number;\n spread: number;\n};\n/**\n * Defines color adjust styles on images\n */\nexport type ColorControls = {\n _class: 'colorControls';\n isEnabled: boolean;\n brightness: number;\n contrast: number;\n hue: number;\n saturation: number;\n};\n/**\n * Defines a symbol that has been imported from a library\n */\nexport type ForeignSymbol = {\n _class: 'MSImmutableForeignSymbol';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n originalMaster: SymbolMaster;\n symbolMaster: SymbolMaster;\n missingLibraryFontAcknowledged?: boolean;\n};\n/**\n * A symbol source layer represents a reusable group of layers\n */\nexport type SymbolMaster = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'symbolMaster';\n backgroundColor: Color;\n hasBackgroundColor: boolean;\n includeBackgroundColorInInstance: boolean;\n includeBackgroundColorInExport: boolean;\n isFlowHome: boolean;\n resizesContent: boolean;\n presetDictionary?: any;\n symbolID: Uuid;\n allowsOverrides: boolean;\n overrideProperties: OverrideProperty[];\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n blockDefinition?: BlockDefinition;\n};\n/**\n * Enumeration of the boolean operations that can be applied to combine shapes\n */\nexport enum BooleanOperation {\n None = -1,\n Union = 0,\n Subtract = 1,\n Intersection = 2,\n Difference = 3,\n}\n/**\n * Defines a layer's export options\n */\nexport type ExportOptions = {\n _class: 'exportOptions';\n exportFormats: ExportFormat[];\n includedLayerIds: Uuid[];\n layerOptions: number;\n shouldTrim: boolean;\n};\n/**\n * Defines an export format, as listed in a layer's export options\n */\nexport type ExportFormat = {\n _class: 'exportFormat';\n absoluteSize: number;\n fileFormat: ExportFileFormat;\n name: string;\n namingScheme?: ExportFormatNamingScheme;\n scale: number;\n visibleScaleType: VisibleScaleType;\n};\n/**\n * Enumeration of the file formats that can be selected in the layer export options\n */\nexport enum ExportFileFormat {\n PNG = 'png',\n JPG = 'jpg',\n TIFF = 'tiff',\n EPS = 'eps',\n PDF = 'pdf',\n WEBP = 'webp',\n SVG = 'svg',\n}\n/**\n * Enumeration of the possible types of export format naming schemes\n */\nexport enum ExportFormatNamingScheme {\n Suffix = 0,\n Prefix = 1,\n}\n/**\n * Enumeration of the possible values to control how an exported layer will be scaled\n */\nexport enum VisibleScaleType {\n Scale = 0,\n Width = 1,\n Height = 2,\n}\n/**\n * Defines an abstract rectangle\n */\nexport type Rect = {\n _class: 'rect';\n constrainProportions: boolean;\n height: number;\n width: number;\n x: number;\n y: number;\n};\n/**\n * Defines a connection between elements in a prototype\n */\nexport type FlowConnection = {\n _class: 'MSImmutableFlowConnection';\n destinationArtboardID: Uuid | 'back';\n animationType: AnimationType;\n maintainScrollPosition?: boolean;\n};\n/**\n * Enumeration of the animation transition types between prototype screens\n */\nexport enum AnimationType {\n None = 0,\n SlideFromLeft = 1,\n SlideFromRight = 2,\n SlideFromBottom = 3,\n SlideFromTop = 4,\n}\n/**\n * Enumeration of the expansion states in the layer list UI\n */\nexport enum LayerListExpanded {\n Undecided = 0,\n Collapsed = 1,\n Expanded = 2,\n}\n/**\n * Enumeration of the possible resize types\n */\nexport enum ResizeType {\n Stretch = 0,\n PinToEdge = 1,\n Resize = 2,\n Float = 3,\n}\n/**\n * Defines persisted ruler positions on artboards, pages and symbols\n */\nexport type RulerData = {\n _class: 'rulerData';\n base: number;\n guides: number[];\n};\n/**\n * Defines the layout settings for an artboard or page\n */\nexport type LayoutGrid = {\n _class: 'layoutGrid';\n isEnabled: boolean;\n columnWidth: number;\n gutterHeight: number;\n gutterWidth: number;\n horizontalOffset: number;\n numberOfColumns: number;\n rowHeightMultiplication: number;\n totalWidth: number;\n guttersOutside: boolean;\n drawHorizontal: boolean;\n drawHorizontalLines: boolean;\n drawVertical: boolean;\n};\n/**\n * Defines the grid settings for an artboard or page\n */\nexport type SimpleGrid = {\n _class: 'simpleGrid';\n isEnabled: boolean;\n gridSize: number;\n thickGridTimes: number;\n};\n/**\n * Normal group layout\n */\nexport type FreeformGroupLayout = {\n _class: 'MSImmutableFreeformGroupLayout';\n};\n/**\n * Inferred group layout defines smart layout options\n */\nexport type InferredGroupLayout = {\n _class: 'MSImmutableInferredGroupLayout';\n axis: InferredLayoutAxis;\n layoutAnchor: InferredLayoutAnchor;\n maxSize?: number;\n minSize?: number;\n};\n/**\n * Enumeration of the axis types for inferred (aka smart) layout\n */\nexport enum InferredLayoutAxis {\n Horizontal = 0,\n Vertical = 1,\n}\n/**\n * Enumeration of the anchor types for inferred (aka smart) layout\n */\nexport enum InferredLayoutAnchor {\n Min = 0,\n Middle = 1,\n Max = 2,\n}\n/**\n * Defines override properties on symbol sources\n */\nexport type OverrideProperty = {\n _class: 'MSImmutableOverrideProperty';\n overrideName: OverrideName;\n canOverride: boolean;\n};\n/**\n * Defines the valid string patterns for an override name\n */\nexport type OverrideName = string | string | string | string;\n/**\n * Group layers are a document organisation aid\n */\nexport type Group = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n _class: 'group';\n};\n\nexport type NoyaElementType = 'primitive' | 'instance';\n\nexport type NoyaElement = {\n do_objectID: Uuid;\n _class: 'noyaElement';\n name?: string;\n type: NoyaElementType;\n componentID: Uuid;\n // Can strings be children?\n children: NoyaElement[];\n classNames: string[];\n};\n\nexport type NoyaComponent = {\n do_objectID: Uuid;\n _class: 'noyaComponent';\n name: string;\n rootElement: NoyaElement;\n componentID: Uuid;\n};\n\nexport type CustomLayer<T = unknown> = Omit<\n Group,\n '_class' | 'layers' | 'hasClickThrough'\n> & {\n _class: 'customLayer';\n data: T;\n};\n\n/**\n * Oval layers are the result of adding an oval shape to the canvas\n */\nexport type Oval = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'oval';\n};\n/**\n * Enumeration of the possible values for corner rounding on shape points.\n */\nexport enum PointsRadiusBehaviour {\n Disabled = -1,\n Legacy = 0,\n Rounded = 1,\n Smooth = 2,\n}\n/**\n * Defines a shape layer curve point\n */\nexport type CurvePoint = {\n _class: 'curvePoint';\n cornerRadius: number;\n curveFrom: PointString;\n curveTo: PointString;\n hasCurveFrom: boolean;\n hasCurveTo: boolean;\n curveMode: CurveMode;\n point: PointString;\n};\n/**\n * Enumeration of the curve modes that can be applied to vector points\n */\nexport enum CurveMode {\n None = 0,\n Straight = 1,\n Mirrored = 2,\n Asymmetric = 3,\n Disconnected = 4,\n}\n/**\n * Polygon layers are the result of adding a polygon shape to the canvas\n */\nexport type Polygon = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'polygon';\n numberOfPoints: number;\n};\n/**\n * Rectangle layers are the result of adding a rectangle shape to the canvas\n */\nexport type Rectangle = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'rectangle';\n fixedRadius: number;\n hasConvertedToNewRoundCorners: boolean;\n needsConvertionToNewRoundCorners: boolean;\n};\n/**\n * Shape path layers are the result of adding a vector layer\n */\nexport type ShapePath = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'shapePath';\n};\n/**\n * Star layers are the result of adding a star shape to the canvas\n */\nexport type Star = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'star';\n numberOfPoints: number;\n radius: number;\n};\n/**\n * Triangle layers are the result of adding a triangle shape to the canvas\n */\nexport type Triangle = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'triangle';\n isEquilateral: boolean;\n};\n/**\n * Shape groups layers group together multiple shape layers\n */\nexport type ShapeGroup = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n _class: 'shapeGroup';\n windingRule: WindingRule;\n};\n/**\n * A text layer represents a discrete block or line of text\n */\nexport type Text = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'text';\n attributedString: AttributedString;\n automaticallyDrawOnUnderlyingPath: boolean;\n dontSynchroniseWithSymbol: boolean;\n lineSpacingBehaviour: LineSpacingBehaviour;\n textBehaviour: TextBehaviour;\n glyphBounds: PointListString;\n};\n/**\n * Defines character strings and associated styling applied to character ranges\n */\nexport type AttributedString = {\n _class: 'attributedString';\n string: string;\n attributes: StringAttribute[];\n};\n/**\n * Defines an attribute assigned to a range of characters in an attributed string\n */\nexport type StringAttribute = {\n _class: 'stringAttribute';\n location: number;\n length: number;\n attributes: {\n kerning?: number;\n textStyleVerticalAlignmentKey?: TextVerticalAlignment;\n MSAttributedStringFontAttribute: FontDescriptor;\n MSAttributedStringColorAttribute?: Color;\n paragraphStyle?: ParagraphStyle;\n };\n};\n/**\n * Enumeration of line spacing behaviour for fixed line height text\n */\nexport enum LineSpacingBehaviour {\n None = 0,\n Legacy = 1,\n ConsistentBaseline = 2,\n}\n/**\n * Enumeration of the behaviours for text layers\n */\nexport enum TextBehaviour {\n Flexible = 0,\n Fixed = 1,\n FixedWidthAndHeight = 2,\n}\n/**\n * A string representation of a series of 2D points, in the format {{x, y}, {x,y}}.\n */\nexport type PointListString = string;\n\nexport type BlockStylePreset = {\n name?: string;\n parameters: string[];\n};\n\nexport type BlockDefinition = {\n primitiveSymbolID?: string;\n hashtags?: string[];\n placeholderText?: string;\n placeholderParameters?: string[];\n stylePresets?: BlockStylePreset[];\n usesResolver?: boolean;\n isInsertable?: boolean;\n supportsBlockText?: boolean;\n infer?: (props: {\n frame: Omit<Rect, '_class' | 'constrainProportions'>;\n }) => number;\n render?: (props: {\n passthrough: Record<string, any>;\n Components: any;\n instance: SymbolInstance;\n children?: any;\n getSymbolMaster: (symbolId: string) => SymbolMaster;\n }) => any;\n schema?: Record<string, string[]>;\n};\n\nexport type ResolvedBlockData = {\n symbolID: string;\n originalText: string;\n resolvedText: string;\n resolvedAt?: string;\n};\n\nexport type BlockParameter = string;\n\n/**\n * Symbol instance layers represent an instance of a symbol source\n */\nexport type SymbolInstance = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'symbolInstance';\n overrideValues: OverrideValue[];\n scale: number;\n symbolID: Uuid;\n verticalSpacing: number;\n horizontalSpacing: number;\n blockText?: string;\n blockParameters?: BlockParameter[];\n resolvedBlockData?: ResolvedBlockData;\n symbolIDIsFixed?: boolean;\n};\n/**\n * Defines an individual symbol override\n */\nexport type OverrideValue = {\n _class: 'overrideValue';\n do_objectID?: Uuid;\n overrideName: OverrideName;\n value:\n | boolean\n | string\n | string[]\n | Uuid\n | FileRef\n | DataRef\n | ResolvedBlockData\n | AnyLayer[];\n};\n\n/**\n * Slice layers allow the content beneath their frame to be exported\n */\nexport type Slice = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'slice';\n hasBackgroundColor: boolean;\n backgroundColor: Color;\n};\n/**\n * Hotspot layers define clickable hotspots for use with prototypes\n */\nexport type Hotspot = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'MSImmutableHotspotLayer';\n};\n/**\n * Bitmap layers house a single image\n */\nexport type Bitmap = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'bitmap';\n fillReplacesImage: boolean;\n image: FileRef | DataRef;\n intendedDPI: number;\n clippingMask: PointListString;\n};\n/**\n * Defines a text style that has been imported from a library\n */\nexport type ForeignTextStyle = {\n _class: 'MSImmutableForeignTextStyle';\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteStyleID: Uuid;\n localSharedStyle: SharedStyle;\n missingLibraryFontAcknowledged?: boolean;\n};\n/**\n * Defines a swatch that has been imported from a library\n */\nexport type ForeignSwatch = {\n _class: 'MSImmutableForeignSwatch';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteSwatchID: Uuid;\n localSwatch: Swatch;\n};\n/**\n * Defines a swatch color variable.\n */\nexport type Swatch = {\n _class: 'swatch';\n do_objectID: Uuid;\n name: string;\n value: Color;\n};\n/**\n * Defines a document's list of reusable styles\n */\nexport type SharedStyleContainer = {\n do_objectID?: Uuid;\n _class: 'sharedStyleContainer';\n objects: SharedStyle[];\n};\n/**\n * Defines a document's list of reusable text styles\n */\nexport type SharedTextStyleContainer = {\n do_objectID?: Uuid;\n _class: 'sharedTextStyleContainer';\n objects: SharedStyle[];\n};\n/**\n * Legacy object only retained for migrating older documents.\n */\nexport type SymbolContainer = {\n do_objectID?: Uuid;\n _class: 'symbolContainer';\n objects: [];\n};\n/**\n * Defines a document's list of swatches\n */\nexport type SwatchContainer = {\n _class: 'swatchContainer';\n do_objectID?: Uuid;\n objects: Swatch[];\n};\n/**\n * Defines a reference to font data embedded in the document\n */\nexport type FontRef = {\n _class: 'fontReference';\n fontData: DataRef;\n fontFamilyName: string;\n fontFileName: string;\n options: number;\n postscriptNames: string[];\n};\n/**\n * Container for ephemeral document state. For now this is just a placeholder, and will see additions in future document versions.\n */\nexport type DocumentState = any;\n/**\n * Defines ephemeral patch information related to the Cloud collaborative editing feature. This information will only be found behind-the-scenes in Cloud documents and won't be relevant or visible to users parsing or generating their own Sketch documents.\n */\nexport type PatchInfo = {\n _class: 'MSImmutablePatchInfo';\n baseVersionID: Uuid;\n lastIntegratedPatchID: Uuid;\n localPatches: FileRef[];\n receivedPatches: FileRef[];\n};\n/**\n * Page layers are the top level organisational abstraction within a document\n */\nexport type Page = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'page';\n layers: (\n | Artboard\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolMaster\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n};\n/**\n * Artboard layers are a document organisation aid. They have a fixed frame that usually map to variations of device dimensions or viewport sizes\n */\nexport type Artboard = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'artboard';\n backgroundColor: Color;\n hasBackgroundColor: boolean;\n includeBackgroundColorInExport: boolean;\n isFlowHome: boolean;\n resizesContent: boolean;\n presetDictionary?: any;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n};\n/**\n * Contains metadata about the Sketch file - information about pages and artboards appearing in the file, fonts used, the version of Sketch used to save the file etc.\n */\nexport type Meta = {\n commit: string;\n pagesAndArtboards: {\n [key: string]: {\n name: string;\n artboards: {\n [key: string]: {\n name: string;\n };\n };\n };\n };\n version:\n | 121\n | 122\n | 123\n | 124\n | 125\n | 126\n | 127\n | 128\n | 129\n | 130\n | 131\n | 132\n | 133\n | 134\n | 135\n | 136;\n compatibilityVersion: 99;\n coeditCompatibilityVersion?: number;\n app: BundleId;\n autosaved: NumericalBool;\n variant: SketchVariant;\n created: {\n commit: string;\n appVersion: string;\n build: number;\n app: BundleId;\n compatibilityVersion: number;\n coeditCompatibilityVersion?: number;\n version: number;\n variant: SketchVariant;\n };\n saveHistory: string[];\n appVersion: string;\n build: number;\n\n // Custom\n noya?: {\n projectDescription?: string;\n };\n};\n/**\n * Enumeration of the Apple bundle ids for the various variants of Sketch\n */\nexport enum BundleId {\n PublicRelease = 'com.bohemiancoding.sketch3',\n Beta = 'com.bohemiancoding.sketch3.beta',\n Private = 'com.bohemiancoding.sketch3.private',\n FeaturePreview = 'com.bohemiancoding.sketch3.feature-preview',\n Internal = 'com.bohemiancoding.sketch3.internal',\n Experimental = 'com.bohemiancoding.sketch3.experimental',\n Testing = 'com.bohemiancoding.sketch3.testing',\n}\n/**\n * A numerical boolean where 0 is false, and 1 is true.\n */\nexport enum NumericalBool {\n True = 0,\n False = 1,\n}\n/**\n * Enumeration of the Sketch variants\n */\nexport type SketchVariant =\n | 'NONAPPSTORE'\n | 'APPSTORE'\n | 'BETA'\n | 'PRIVATE'\n | 'FEATURE_PREVIEW'\n | 'INTERNAL'\n | 'EXPERIMENTAL'\n | 'TESTING'\n | 'UNITTEST';\nexport type User = {\n document: {\n pageListHeight: number;\n pageListCollapsed: NumericalBool;\n expandedSymbolPathsInSidebar?: [];\n expandedTextStylePathsInPopover?: [];\n libraryListCollapsed?: NumericalBool;\n };\n [key: string]: any;\n};\n/**\n * The workspace is a folder in the Sketch file archive that can contain arbitrary JSON files, allowing Sketch and 3rd party products and tools to store settings that should travel with the Sketch document. To avoid clashes or settings being overridden, select a unique name for your workspace file.\n */\nexport type Workspace = any;\n/**\n * This schema describes a representation of an expanded Sketch file, that is, a Sketch file that has been unzipped, all of its entries parsed to JSON and merged into a single object. A concrete example of an expanded sketch file is the return value of the `fromFile` function in `@sketch-hq/sketch-file`\n */\nexport type Contents = {\n document: {\n _class: 'document';\n do_objectID: Uuid;\n assets: AssetCollection;\n colorSpace: ColorSpace;\n currentPageIndex: number;\n foreignLayerStyles: ForeignLayerStyle[];\n foreignSymbols: ForeignSymbol[];\n foreignTextStyles: ForeignTextStyle[];\n foreignSwatches?: ForeignSwatch[];\n layerStyles: SharedStyleContainer;\n layerTextStyles: SharedTextStyleContainer;\n layerSymbols?: SymbolContainer;\n sharedSwatches?: SwatchContainer;\n fontReferences?: FontRef[];\n documentState?: DocumentState;\n patchInfo?: PatchInfo;\n pages: Page[];\n };\n meta: Meta;\n user: User;\n workspace?: Workspace;\n};\n/**\n * The document entry in a Sketch file.\n */\nexport type Document = {\n _class: 'document';\n do_objectID: Uuid;\n assets: AssetCollection;\n colorSpace: ColorSpace;\n currentPageIndex: number;\n foreignLayerStyles: ForeignLayerStyle[];\n foreignSymbols: ForeignSymbol[];\n foreignTextStyles: ForeignTextStyle[];\n foreignSwatches?: ForeignSwatch[];\n layerStyles: SharedStyleContainer;\n layerTextStyles: SharedTextStyleContainer;\n layerSymbols?: SymbolContainer;\n sharedSwatches?: SwatchContainer;\n fontReferences?: FontRef[];\n documentState?: DocumentState;\n patchInfo?: PatchInfo;\n pages: FileRef[];\n designSystem?: DesignSystem;\n};\nexport type DesignSystem = {\n id: string;\n type: 'standard' | 'custom';\n config?: DesignSystemThemeConfig;\n};\nexport type DesignSystemThemeConfig = {\n colorScheme?: 'light' | 'dark';\n primaryColor?: string;\n neutralColor?: string;\n};\n/**\n * Union of all layers\n */\nexport type AnyLayer =\n | SymbolMaster\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | Page\n | Artboard\n | CustomLayer;\n/**\n * Union of all group layers\n */\nexport type AnyGroup = SymbolMaster | Group | ShapeGroup | Page | Artboard;\n/**\n * Union of all objects, i.e. objects with a _class property\n */\nexport type AnyObject =\n | AssetCollection\n | ImageCollection\n | ColorAsset\n | Color\n | GradientAsset\n | Gradient\n | GradientStop\n | FileRef\n | DataRef\n | ForeignLayerStyle\n | SharedStyle\n | Style\n | Border\n | GraphicsContextSettings\n | BorderOptions\n | Blur\n | Fill\n | Shader\n | ShaderVariable\n | TextStyle\n | ParagraphStyle\n | FontDescriptor\n | Shadow\n | InnerShadow\n | ColorControls\n | ForeignSymbol\n | SymbolMaster\n | ExportOptions\n | ExportFormat\n | Rect\n | FlowConnection\n | RulerData\n | LayoutGrid\n | SimpleGrid\n | FreeformGroupLayout\n | InferredGroupLayout\n | OverrideProperty\n | Group\n | Oval\n | CurvePoint\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | AttributedString\n | StringAttribute\n | SymbolInstance\n | OverrideValue\n | Slice\n | Hotspot\n | Bitmap\n | ForeignTextStyle\n | ForeignSwatch\n | Swatch\n | SharedStyleContainer\n | SharedTextStyleContainer\n | SymbolContainer\n | SwatchContainer\n | FontRef\n | PatchInfo\n | Page\n | Artboard\n | CustomLayer\n | NoyaElement;\n/**\n * Enum of all possible _class property values\n */\nexport enum ClassValue {\n MSImmutableColorAsset = 'MSImmutableColorAsset',\n MSImmutableFlowConnection = 'MSImmutableFlowConnection',\n MSImmutableForeignLayerStyle = 'MSImmutableForeignLayerStyle',\n MSImmutableForeignSwatch = 'MSImmutableForeignSwatch',\n MSImmutableForeignSymbol = 'MSImmutableForeignSymbol',\n MSImmutableForeignTextStyle = 'MSImmutableForeignTextStyle',\n MSImmutableFreeformGroupLayout = 'MSImmutableFreeformGroupLayout',\n MSImmutableGradientAsset = 'MSImmutableGradientAsset',\n MSImmutableHotspotLayer = 'MSImmutableHotspotLayer',\n MSImmutableInferredGroupLayout = 'MSImmutableInferredGroupLayout',\n MSImmutableOverrideProperty = 'MSImmutableOverrideProperty',\n MSImmutablePatchInfo = 'MSImmutablePatchInfo',\n MSJSONFileReference = 'MSJSONFileReference',\n MSJSONOriginalDataReference = 'MSJSONOriginalDataReference',\n Artboard = 'artboard',\n AssetCollection = 'assetCollection',\n AttributedString = 'attributedString',\n Bitmap = 'bitmap',\n Blur = 'blur',\n Border = 'border',\n BorderOptions = 'borderOptions',\n Color = 'color',\n ColorControls = 'colorControls',\n CurvePoint = 'curvePoint',\n ExportFormat = 'exportFormat',\n ExportOptions = 'exportOptions',\n Fill = 'fill',\n FontDescriptor = 'fontDescriptor',\n FontReference = 'fontReference',\n Gradient = 'gradient',\n GradientStop = 'gradientStop',\n GraphicsContextSettings = 'graphicsContextSettings',\n Group = 'group',\n ImageCollection = 'imageCollection',\n InnerShadow = 'innerShadow',\n LayoutGrid = 'layoutGrid',\n Oval = 'oval',\n OverrideValue = 'overrideValue',\n Page = 'page',\n ParagraphStyle = 'paragraphStyle',\n Polygon = 'polygon',\n Rect = 'rect',\n Rectangle = 'rectangle',\n RulerData = 'rulerData',\n Shader = 'shader',\n ShaderVariable = 'shaderVariable',\n Shadow = 'shadow',\n ShapeGroup = 'shapeGroup',\n ShapePath = 'shapePath',\n SharedStyle = 'sharedStyle',\n SharedStyleContainer = 'sharedStyleContainer',\n SharedTextStyleContainer = 'sharedTextStyleContainer',\n SimpleGrid = 'simpleGrid',\n Slice = 'slice',\n Star = 'star',\n StringAttribute = 'stringAttribute',\n Style = 'style',\n Swatch = 'swatch',\n SwatchContainer = 'swatchContainer',\n SymbolContainer = 'symbolContainer',\n SymbolInstance = 'symbolInstance',\n SymbolMaster = 'symbolMaster',\n Text = 'text',\n TextStyle = 'textStyle',\n Triangle = 'triangle',\n CustomLayer = 'customLayer',\n NoyaComponent = 'noyaComponent',\n NoyaElement = 'noyaElement',\n}\n/**\n * A mapping of class values to object types\n */\nexport type ClassMap = {\n triangle: Triangle;\n textStyle: TextStyle;\n text: Text;\n symbolMaster: SymbolMaster;\n symbolInstance: SymbolInstance;\n symbolContainer: SymbolContainer;\n swatchContainer: SwatchContainer;\n swatch: Swatch;\n style: Style;\n stringAttribute: StringAttribute;\n star: Star;\n slice: Slice;\n simpleGrid: SimpleGrid;\n sharedTextStyleContainer: SharedTextStyleContainer;\n sharedStyleContainer: SharedStyleContainer;\n sharedStyle: SharedStyle;\n shapePath: ShapePath;\n shapeGroup: ShapeGroup;\n shadow: Shadow;\n shaderVariable: ShaderVariable;\n shader: Shader;\n rulerData: RulerData;\n rectangle: Rectangle;\n rect: Rect;\n polygon: Polygon;\n paragraphStyle: ParagraphStyle;\n page: Page;\n overrideValue: OverrideValue;\n oval: Oval;\n layoutGrid: LayoutGrid;\n innerShadow: InnerShadow;\n imageCollection: ImageCollection;\n group: Group;\n graphicsContextSettings: GraphicsContextSettings;\n gradientStop: GradientStop;\n gradient: Gradient;\n fontReference: FontRef;\n fontDescriptor: FontDescriptor;\n fill: Fill;\n exportOptions: ExportOptions;\n exportFormat: ExportFormat;\n curvePoint: CurvePoint;\n colorControls: ColorControls;\n color: Color;\n borderOptions: BorderOptions;\n border: Border;\n blur: Blur;\n bitmap: Bitmap;\n attributedString: AttributedString;\n assetCollection: AssetCollection;\n artboard: Artboard;\n MSJSONOriginalDataReference: DataRef;\n MSJSONFileReference: FileRef;\n MSImmutablePatchInfo: PatchInfo;\n MSImmutableOverrideProperty: OverrideProperty;\n MSImmutableInferredGroupLayout: InferredGroupLayout;\n MSImmutableHotspotLayer: Hotspot;\n MSImmutableGradientAsset: GradientAsset;\n MSImmutableFreeformGroupLayout: FreeformGroupLayout;\n MSImmutableForeignTextStyle: ForeignTextStyle;\n MSImmutableForeignSymbol: ForeignSymbol;\n MSImmutableForeignSwatch: ForeignSwatch;\n MSImmutableForeignLayerStyle: ForeignLayerStyle;\n MSImmutableFlowConnection: FlowConnection;\n MSImmutableColorAsset: ColorAsset;\n customLayer: CustomLayer;\n noyaComponent: NoyaComponent;\n noyaElement: NoyaElement;\n};\n","import { Sketch } from \"@noya-app/noya-file-format\";\n// import { useSketchImage } from 'noya-renderer';\nimport React, { memo, useMemo } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport { useImageData } from \"../contexts/ImageDataContext\";\nimport { useObjectURL } from \"../hooks/useObjectURL\";\nimport { getGradientBackground } from \"../utils/getGradientBackground\";\nimport { sketchColorToRgbaString } from \"../utils/sketchColor\";\nimport { SketchPattern } from \"../utils/sketchPattern\";\n\nconst dotsHorizontalSvg = (fillColor: string) => `\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${fillColor}'>\n <path d='M3.625 7.5C3.625 8.12132 3.12132 8.625 2.5 8.625C1.87868 8.625 1.375 8.12132 1.375 7.5C1.375 6.87868 1.87868 6.375 2.5 6.375C3.12132 6.375 3.625 6.87868 3.625 7.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM12.5 8.625C13.1213 8.625 13.625 8.12132 13.625 7.5C13.625 6.87868 13.1213 6.375 12.5 6.375C11.8787 6.375 11.375 6.87868 11.375 7.5C11.375 8.12132 11.8787 8.625 12.5 8.625Z'></path>\n </svg>\n`;\n\nconst Background = styled.span<{ background: string }>(({ background }) => ({\n background,\n position: \"absolute\",\n inset: 0,\n}));\n\nconst HorizontalDotsBackground = memo(function HorizontalDotsBackground() {\n const { inputBackground, placeholderDots } = useTheme().colors;\n\n const background = useMemo(\n () =>\n [\n `center url(\"data:image/svg+xml;utf8,${dotsHorizontalSvg(\n placeholderDots\n )}\") no-repeat`,\n inputBackground,\n ].join(\",\"),\n [inputBackground, placeholderDots]\n );\n\n return <Background background={background} />;\n});\n\nfunction getPatternSizeAndPosition(\n fillType: Sketch.PatternFillType,\n tileScale: number\n) {\n switch (fillType) {\n case Sketch.PatternFillType.Fit:\n return \"center / contain\";\n case Sketch.PatternFillType.Tile:\n return `top left / ${tileScale * 100}%`;\n case Sketch.PatternFillType.Fill:\n return \"center / cover\";\n case Sketch.PatternFillType.Stretch:\n return \"center / 100% 100%\";\n }\n}\n\nexport const PatternPreviewBackground = memo(function PatternPreviewBackground({\n fillType,\n tileScale,\n imageRef,\n}: {\n fillType: Sketch.PatternFillType;\n tileScale: number;\n imageRef: string;\n}) {\n const image = useImageData(imageRef);\n\n const url = useObjectURL(image);\n\n const size = getPatternSizeAndPosition(fillType, tileScale);\n\n const background = useMemo(\n () =>\n [\n size,\n `url(${url})`,\n fillType === Sketch.PatternFillType.Tile ? \"repeat\" : \"no-repeat\",\n ].join(\" \"),\n [fillType, size, url]\n );\n\n return <Background background={background} />;\n});\n\nconst ColorPreviewBackground = memo(function ColorPreviewBackground({\n color,\n}: {\n color: Sketch.Color;\n}) {\n const background = useMemo(() => sketchColorToRgbaString(color), [color]);\n\n return <Background background={background} />;\n});\n\nconst GradientPreviewBackground = memo(function GradientPreviewBackground({\n gradient,\n}: {\n gradient: Sketch.Gradient;\n}) {\n const background = useMemo(\n () => getGradientBackground(gradient.stops, gradient.gradientType, 180),\n [gradient.gradientType, gradient.stops]\n );\n\n return <Background background={background} />;\n});\n\ninterface Props {\n value?: Sketch.Color | Sketch.Gradient | SketchPattern;\n}\n\nexport const FillPreviewBackground = memo(function FillPreviewBackground({\n value,\n}: Props) {\n if (!value) return <HorizontalDotsBackground />;\n\n switch (value._class) {\n case \"color\":\n return <ColorPreviewBackground color={value} />;\n case \"gradient\":\n return <GradientPreviewBackground gradient={value} />;\n case \"pattern\":\n if (!value.image) return null;\n\n return (\n <PatternPreviewBackground\n fillType={value.patternFillType}\n tileScale={value.patternTileScale}\n imageRef={value.image._ref}\n />\n );\n }\n});\n","import React, {\n createContext,\n memo,\n ReactNode,\n useContext,\n useMemo,\n} from \"react\";\n\nexport type ImageDataContextValue = {\n getImageData: (ref: string) => ArrayBuffer | undefined;\n};\n\nconst ImageDataContext = createContext<ImageDataContextValue | undefined>(\n undefined\n);\n\nexport const ImageDataProvider = memo(function ImageDataProvider({\n children,\n getImageData,\n}: {\n children: ReactNode;\n getImageData?: (ref: string) => ArrayBuffer | undefined;\n}) {\n const contextValue = useMemo(\n () => ({ getImageData: getImageData ?? (() => undefined) }),\n [getImageData]\n );\n\n return (\n <ImageDataContext.Provider value={contextValue}>\n {children}\n </ImageDataContext.Provider>\n );\n});\n\nexport function useImageData(ref: string): ArrayBuffer | undefined {\n const value = useContext(ImageDataContext);\n\n if (!value) {\n throw new Error(\"Missing ImageDataProvider\");\n }\n\n return value.getImageData(ref);\n}\n","import { useLayoutEffect, useMemo } from 'react';\n\nexport function useObjectURL(object?: ArrayBuffer | Uint8Array | Blob) {\n const objectURL = useMemo(() => {\n if (object instanceof Blob) return URL.createObjectURL(object);\n\n const bytes =\n object instanceof Uint8Array\n ? object\n : object !== undefined\n ? new Uint8Array(object)\n : new Uint8Array();\n\n return URL.createObjectURL(new Blob([bytes]));\n }, [object]);\n\n useLayoutEffect(() => {\n return () => URL.revokeObjectURL(objectURL);\n }, [objectURL]);\n\n return objectURL;\n}\n","import {\n hsvaToRgbaString,\n RgbaColor,\n rgbaToHex,\n rgbaToHsva,\n} from '@noya-app/noya-colorpicker';\nimport type { Sketch } from '@noya-app/noya-file-format';\n\nexport function sketchColorToRgba(value: Sketch.Color): RgbaColor {\n return {\n r: Math.floor(value.red * 255),\n g: Math.floor(value.green * 255),\n b: Math.floor(value.blue * 255),\n a: value.alpha,\n };\n}\n\nexport function sketchColorToRgbaString(value: Sketch.Color): string {\n return hsvaToRgbaString(rgbaToHsva(sketchColorToRgba(value)));\n}\n\nexport function rgbaToSketchColor(value: RgbaColor): Sketch.Color {\n return {\n _class: 'color',\n alpha: value.a,\n red: value.r / 255,\n green: value.g / 255,\n blue: value.b / 255,\n };\n}\n\nexport function sketchColorToHex(value: Sketch.Color): string {\n return rgbaToHex(sketchColorToRgba(value)).toUpperCase();\n}\n","import { Sketch } from \"@noya-app/noya-file-format\";\nimport { sketchColorToRgbaString } from \"./sketchColor\";\n\nconst getRGBAColor = (value: Sketch.GradientStop[], num: 100 | 360) =>\n [...value]\n .sort((a, b) => a.position - b.position)\n .map(\n (g) =>\n `${sketchColorToRgbaString(g.color)} ${g.position * num}${\n num === 100 ? \"%\" : \"deg\"\n }`\n )\n .join(\", \\n\");\n\nexport function getGradientBackground(\n value: Sketch.GradientStop[],\n type: Sketch.GradientType,\n direction?: number\n) {\n if (type === Sketch.GradientType.Angular) {\n return `conic-gradient(${getRGBAColor(value, 360)})`;\n }\n\n const color = getRGBAColor(value, 100);\n const position =\n type === Sketch.GradientType.Radial\n ? \"radial-gradient(circle\"\n : `linear-gradient(${direction !== undefined ? direction : 180}deg`;\n\n return `${position}, ${color})`;\n}\n","import {\n Divider,\n IconButton,\n Small,\n useCurrentFloatingWindowInternal,\n useDesignSystemTheme,\n useFloatingWindowManager,\n} from \"@noya-app/noya-designsystem\";\nimport React, { useCallback, useRef, useState } from \"react\";\n\ninterface FloatingWindowProps {\n title?: string;\n onClose?: () => void;\n children: React.ReactNode;\n initialWidth?: number;\n initialHeight?: number;\n initialX?: number;\n initialY?: number;\n minWidth?: number;\n minHeight?: number;\n toolbarContent?: React.ReactNode;\n renderToolbar?: (props: {\n title?: string;\n toolbarContent?: React.ReactNode;\n onClose?: () => void;\n }) => React.ReactNode;\n}\n\nconst styles = {\n noSelect: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n },\n windowWrapper: {\n position: \"absolute\",\n backgroundColor: \"white\",\n borderRadius: \"4px\",\n boxShadow: \"0 2px 10px rgba(0, 0, 0, 0.1)\",\n overflow: \"hidden\",\n // backdropFilter: \"blur(10px)\",\n },\n toolbar: {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 12px\",\n cursor: \"move\",\n userSelect: \"none\",\n minHeight: \"43px\",\n },\n closeButton: {\n background: \"none\",\n border: \"none\",\n fontSize: \"16px\",\n cursor: \"pointer\",\n },\n content: {\n padding: \"12px\",\n height: \"calc(100% - 44px)\", // Adjust based on toolbar height\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n resizeHandle: {\n position: \"absolute\",\n },\n} as const;\n\nconst resizeHandlePositions = {\n top: { top: \"0\", left: \"0\", right: \"0\", height: \"5px\", cursor: \"ns-resize\" },\n right: {\n top: \"0\",\n right: \"0\",\n bottom: \"0\",\n width: \"5px\",\n cursor: \"ew-resize\",\n },\n bottom: {\n bottom: \"0\",\n left: \"0\",\n right: \"0\",\n height: \"5px\",\n cursor: \"ns-resize\",\n },\n left: { top: \"0\", left: \"0\", bottom: \"0\", width: \"5px\", cursor: \"ew-resize\" },\n topLeft: {\n top: \"0\",\n left: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nwse-resize\",\n },\n topRight: {\n top: \"0\",\n right: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nesw-resize\",\n },\n bottomLeft: {\n bottom: \"0\",\n left: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nesw-resize\",\n },\n bottomRight: {\n bottom: \"0\",\n right: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nwse-resize\",\n },\n};\n\nfunction defaultRenderToolbar({\n title,\n toolbarContent,\n onClose,\n}: {\n title?: string;\n toolbarContent?: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <>\n <Small flex=\"1\" fontWeight=\"500\" color=\"text\">\n {title}\n </Small>\n {toolbarContent}\n <IconButton\n iconName=\"Cross3Icon\"\n onClick={onClose}\n style={{\n marginLeft: \"6px\",\n marginRight: \"-6px\",\n }}\n />\n </>\n );\n}\n\nexport const FloatingWindow: React.FC<FloatingWindowProps> = ({\n title,\n onClose,\n children,\n initialWidth = 300,\n initialHeight = 200,\n initialX = 100,\n initialY = 100,\n minWidth = 200,\n minHeight = 100,\n toolbarContent,\n renderToolbar = defaultRenderToolbar,\n}) => {\n const [position, setPosition] = useState({ x: initialX, y: initialY });\n const [size, setSize] = useState({\n width: initialWidth,\n height: initialHeight,\n });\n const [isDragging, setIsDragging] = useState(false);\n const [isResizing, setIsResizing] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n const [resizeDirection, setResizeDirection] = useState<string | null>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const toggleGlobalTextSelection = (disable: boolean) => {\n if (disable) {\n document.body.style.userSelect = \"none\";\n } else {\n document.body.style.userSelect = \"\";\n }\n };\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n setDragOffset({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n setIsDragging(true);\n }, []);\n\n const handleResizeStart = useCallback(\n (direction: string) => (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsResizing(true);\n setResizeDirection(direction);\n toggleGlobalTextSelection(true);\n },\n []\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n setPosition({\n x: e.clientX - dragOffset.x,\n y: e.clientY - dragOffset.y,\n });\n } else if (isResizing && resizeDirection) {\n const rect = wrapperRef.current!.getBoundingClientRect();\n\n let newWidth = size.width;\n let newHeight = size.height;\n let newX = position.x;\n let newY = position.y;\n\n if (/right/i.test(resizeDirection)) {\n newWidth = Math.max(e.clientX - rect.left, minWidth);\n }\n if (/bottom/i.test(resizeDirection)) {\n newHeight = Math.max(e.clientY - rect.top, minHeight);\n }\n if (/left/i.test(resizeDirection)) {\n const potentialWidth = rect.right - e.clientX;\n if (potentialWidth <= minWidth) {\n newWidth = minWidth;\n newX = rect.right - minWidth;\n } else {\n newWidth = potentialWidth;\n newX = e.clientX;\n }\n }\n if (/top/i.test(resizeDirection)) {\n const potentialHeight = rect.bottom - e.clientY;\n if (potentialHeight <= minHeight) {\n newHeight = minHeight;\n newY = rect.bottom - minHeight;\n } else {\n newHeight = potentialHeight;\n newY = e.clientY;\n }\n }\n\n setSize({ width: newWidth, height: newHeight });\n setPosition({ x: newX, y: newY });\n }\n },\n [\n isDragging,\n isResizing,\n dragOffset,\n resizeDirection,\n size,\n position,\n minWidth,\n minHeight,\n ]\n );\n\n const handleMouseUp = useCallback((e: MouseEvent) => {\n setIsDragging(false);\n setIsResizing(false);\n setResizeDirection(null);\n toggleGlobalTextSelection(false);\n }, []);\n\n React.useEffect(() => {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [handleMouseMove, handleMouseUp]);\n\n const theme = useDesignSystemTheme();\n\n const floatingWindowManager = useFloatingWindowManager();\n const currentFloatingWindow = useCurrentFloatingWindowInternal();\n\n const handleClose = useCallback(() => {\n if (onClose) onClose();\n floatingWindowManager.closeWindow(currentFloatingWindow.id);\n }, [currentFloatingWindow.id, floatingWindowManager, onClose]);\n\n return (\n <div\n ref={wrapperRef}\n style={{\n ...styles.windowWrapper,\n top: position.y,\n left: position.x,\n width: size.width,\n height: size.height,\n outline: `1px solid ${theme.colors.divider}`,\n backgroundColor: theme.colors.canvas.background,\n }}\n >\n <div\n style={{\n ...styles.toolbar,\n backgroundColor: theme.colors.sidebar.background,\n }}\n onMouseDown={handleMouseDown}\n >\n {renderToolbar({ title, toolbarContent, onClose: handleClose })}\n </div>\n <Divider />\n <div style={styles.content}>{children}</div>\n {Object.entries(resizeHandlePositions).map(([direction, style]) => (\n <div\n key={direction}\n style={{ ...styles.resizeHandle, ...style }}\n onMouseDown={handleResizeStart(direction)}\n />\n ))}\n </div>\n );\n};\n","import {\n Alpha,\n ColorModel,\n Gradient,\n Hue,\n ColorPicker as NoyaColorPicker,\n RgbaColor,\n Saturation,\n equalColorObjects,\n hsvaToRgba,\n rgbaToHsva,\n} from '@noya-app/noya-colorpicker';\nimport type { Sketch } from '@noya-app/noya-file-format';\nimport React, { memo, useCallback, useMemo } from 'react';\nimport { Spacer } from '../components/Spacer';\nimport { rgbaToSketchColor, sketchColorToRgba } from '../utils/sketchColor';\n\ninterface Props {\n value: Sketch.GradientStop[];\n selectedStop: number;\n onChangeColor: (color: Sketch.Color) => void;\n onChangePosition: (position: number) => void;\n onAdd: (color: Sketch.Color, position: number) => void;\n onDelete: () => void;\n onSelectStop: (index: number) => void;\n}\n\nexport const GradientPicker = memo(function GradientPicker({\n value,\n selectedStop,\n onChangeColor,\n onChangePosition,\n onAdd,\n onDelete,\n onSelectStop,\n}: Props) {\n const colorModel: ColorModel<RgbaColor> = useMemo(\n () => ({\n defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n toHsva: rgbaToHsva,\n fromHsva: hsvaToRgba,\n equal: equalColorObjects,\n }),\n [],\n );\n\n const rgbaColor = useMemo(\n () => sketchColorToRgba(value[selectedStop].color),\n [value, selectedStop],\n );\n\n const handleChangeColor = useCallback(\n (value: RgbaColor) => {\n onChangeColor(rgbaToSketchColor(value));\n },\n [onChangeColor],\n );\n\n const handleAddGradientStop = useCallback(\n (value: RgbaColor, position: number) => {\n onAdd(rgbaToSketchColor(value), position);\n },\n [onAdd],\n );\n\n return (\n <NoyaColorPicker\n onChange={handleChangeColor}\n colorModel={colorModel}\n color={rgbaColor}\n >\n <Gradient\n gradients={value}\n selectedStop={selectedStop}\n onSelectStop={onSelectStop}\n onChangePosition={onChangePosition}\n onAdd={handleAddGradientStop}\n onDelete={onDelete}\n />\n <Spacer.Vertical size={10} />\n <Saturation />\n <Spacer.Vertical size={12} />\n <Hue />\n <Spacer.Vertical size={5} />\n <Alpha />\n </NoyaColorPicker>\n );\n});\n","import styled from 'styled-components';\nimport { Colors } from '../theme';\n\nexport type GridProps = {\n columns?: string;\n rows?: string;\n alignItems?: 'start' | 'center' | 'end';\n justifyItems?: 'start' | 'center' | 'end';\n placeItems?: 'start' | 'center' | 'end';\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n height?: number | string;\n minHeight?: number | string;\n maxHeight?: number | string;\n padding?: number | string;\n paddingX?: number | string;\n paddingXStart?: number | string;\n paddingXEnd?: number | string;\n paddingY?: number | string;\n paddingYStart?: number | string;\n paddingYEnd?: number | string;\n gap?: number | string;\n gapX?: number | string;\n gapY?: number | string;\n background?: keyof Colors;\n};\n\nconst Grid = styled.div<GridProps>((props) => ({\n display: 'grid',\n gridTemplateColumns: props.columns,\n gridTemplateRows: props.rows,\n alignItems: props.alignItems,\n justifyItems: props.justifyItems,\n width: props.width,\n minWidth: props.minWidth ?? 0,\n maxWidth: props.maxWidth,\n height: props.height,\n minHeight: props.minHeight ?? 0,\n maxHeight: props.maxHeight,\n padding: props.padding,\n paddingInline: props.paddingX,\n paddingInlineStart: props.paddingXStart,\n paddingInlineEnd: props.paddingXEnd,\n paddingBlock: props.paddingY,\n paddingBlockStart: props.paddingYStart,\n paddingBlockEnd: props.paddingYEnd,\n gap: props.gap,\n gapRow: props.gapX,\n gapColumn: props.gapY,\n background: props.background,\n}));\n\nexport default Grid;\n","import { KeyModifiers } from \"@noya-app/noya-keymap\";\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { useHover } from \"../hooks/useHover\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\nimport { ActivityIndicator } from \"./ActivityIndicator\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { MenuItem } from \"./internal/Menu\";\nimport { ScrollArea } from \"./ScrollArea\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type GridViewSize = \"xxs\" | \"xs\" | \"small\" | \"medium\" | \"large\" | \"xl\";\n\nconst sizes: Record<\n GridViewSize,\n {\n itemWidth: number;\n itemHeight: number;\n gap: number;\n }\n> = {\n xxs: {\n itemWidth: 36,\n itemHeight: 36,\n gap: 5,\n },\n xs: {\n itemWidth: 87,\n itemHeight: 87,\n gap: 9,\n },\n small: {\n itemWidth: 160,\n itemHeight: 170,\n gap: 20,\n },\n medium: {\n itemWidth: 220,\n itemHeight: 220,\n gap: 16,\n },\n large: {\n itemWidth: 280,\n itemHeight: 280,\n gap: 24,\n },\n xl: {\n itemWidth: 400,\n itemHeight: 400,\n gap: 32,\n },\n};\n\nconst Grid = styled.div<{\n size: GridViewSize;\n padding: CSSProperties[\"padding\"];\n}>(({ theme, size, padding }) => {\n return {\n color: theme.colors.text,\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fill, minmax(${sizes[size].itemWidth}px, 1fr))`,\n // gridAutoRows: `${sizes[size].itemHeight}px`,\n gap: `${sizes[size].gap}px`,\n // gridTemplateColumns: `repeat(auto-fill, minmax(\n // ${size === 'large' ? '280px' : size === 'small' ? '160px' : '116px'}\n // , 1fr))`,\n // gridAutoRows:\n // size === 'large' ? '280px' : size === 'small' ? '170px' : '116px',\n // gap: size === 'large' || size === 'small' ? `20px` : `12px`,\n padding,\n };\n});\n\nconst Container = styled.div<{ scrollable: boolean }>(\n ({ theme, scrollable }) => ({\n flex: scrollable ? \"1\" : \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n })\n);\n\nconst ContentContainer = styled.div<{\n selected?: boolean;\n hovered?: boolean;\n bordered: boolean;\n disabled: boolean;\n}>(({ theme, selected, hovered, bordered, disabled }) => ({\n display: \"flex\",\n flex: \"1\",\n backgroundColor: theme.colors.sidebar.background,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"2px\",\n border: `1px solid ${\n selected\n ? theme.colors.primary\n : // : hovered\n // ? `rgb(132, 63, 255, 0.5)`\n bordered\n ? theme.colors.divider\n : \"transparent\"\n }`,\n overflow: \"hidden\",\n\n cursor: \"pointer\",\n ...(disabled\n ? { opacity: 0.5 }\n : {\n \"&:hover\": { opacity: 0.85 },\n \"&:active\": { opacity: 0.7 },\n }),\n}));\n\nconst ItemContainer = styled.div(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`,\n outline: \"none\",\n },\n}));\n\nconst ItemTitle = styled.span<{ showBackground: boolean }>(\n ({ theme, showBackground }) => ({\n ...theme.textStyles.small,\n lineHeight: \"1\",\n color: theme.colors.text,\n fontWeight: 500,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n\n ...(showBackground && {\n background: theme.colors.sidebar.background,\n // border: `1px solid ${theme.colors.dividerSubtle}`,\n padding: \"2px 4px\",\n borderRadius: \"2px\",\n backdropFilter: \"blur(4px)\",\n }),\n })\n);\n\nconst ItemDescription = styled.span<{ showBackground: boolean }>(\n ({ theme, showBackground }) => ({\n ...theme.textStyles.small,\n fontSize: \"0.7rem\",\n lineHeight: \"1\",\n color: theme.colors.textMuted,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n\n ...(showBackground && {\n background: theme.colors.sidebar.background,\n // border: `1px solid ${theme.colors.dividerSubtle}`,\n padding: \"2px 4px\",\n borderRadius: \"2px\",\n backdropFilter: \"blur(4px)\",\n }),\n })\n);\n\nconst SectionTitle = styled.span<{ last?: boolean }>(\n ({ theme, last = false }) => ({\n ...theme.textStyles.heading3,\n color: last ? theme.colors.text : theme.colors.textMuted,\n fontWeight: 500,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n lineHeight: \"1\",\n })\n);\n\nconst SectionHeaderContainer = styled.div(({ theme }) => ({\n padding: \"0 20px\",\n}));\n\nconst TextOverlay = styled.div({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"end\",\n alignItems: \"start\",\n padding: \"4px\",\n pointerEvents: \"none\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n gap: \"2px\",\n});\n\nconst shimmer = keyframes({\n \"0%\": {\n backgroundPosition: \"-200% 0\",\n },\n \"100%\": {\n backgroundPosition: \"200% 0\",\n },\n});\n\nconst Shimmer = styled.div`\n pointer-events: none;\n position: absolute;\n inset: 0;\n animation: ${shimmer} 6s infinite linear;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0),\n rgba(226, 232, 240, 0.5),\n rgba(255, 255, 255, 0)\n );\n background-size: 200% 100%;\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: end;\n padding: 4px;\n`;\n\ninterface ItemProps<MenuItemType extends string = string> {\n id: string;\n title?: ReactNode;\n subtitle?: ReactNode;\n loading?: boolean;\n selected?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n onPress?: (options: KeyModifiers) => void;\n onDoubleClick?: () => void;\n onHoverChange?: (isHovering: boolean) => void;\n children?: ReactNode;\n menuItems?: MenuItem<MenuItemType>[];\n onSelectMenuItem?: (value: MenuItemType) => void;\n onContextMenu?: () => void;\n style?: CSSProperties;\n}\n\nconst GridViewItem = forwardRef(function GridViewItem<\n MenuItemType extends string,\n>(\n {\n id,\n title,\n subtitle,\n loading,\n selected,\n onClick,\n onPress,\n onDoubleClick,\n onHoverChange,\n children,\n menuItems,\n onSelectMenuItem,\n onContextMenu,\n style,\n }: ItemProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const [hovered, setHovered] = React.useState(false);\n\n const { hoverProps } = useHover({\n onHoverChange: (isHovering) => {\n onHoverChange?.(isHovering);\n setHovered(isHovering);\n },\n });\n\n const { textPosition, bordered, disabled } = useContext(GridViewContext);\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n onClick?.(event);\n onPress?.(event);\n },\n [onClick, onPress]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.stopPropagation();\n event.preventDefault();\n\n onPress?.(event);\n } else {\n return;\n }\n },\n [onPress]\n );\n\n let element = (\n <ItemContainer\n id={id}\n ref={forwardedRef}\n {...hoverProps}\n tabIndex={disabled ? undefined : 0}\n onKeyDown={handleKeyDown}\n >\n <ContentContainer\n disabled={disabled}\n bordered={bordered}\n selected={selected}\n hovered={!disabled && hovered}\n onClick={handleClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={onContextMenu}\n style={style}\n >\n {children}\n </ContentContainer>\n {textPosition === \"below\" && (\n <>\n <Spacer.Vertical size={8} />\n <ItemTitle showBackground={false}>{title || \" \"}</ItemTitle>\n <ItemDescription showBackground={false}>\n {subtitle || \" \"}\n </ItemDescription>\n </>\n )}\n {textPosition === \"overlay\" && hovered && (title || subtitle) && (\n <TextOverlay>\n {title && <ItemTitle showBackground>{title}</ItemTitle>}\n {subtitle && (\n <ItemDescription showBackground>{subtitle}</ItemDescription>\n )}\n </TextOverlay>\n )}\n {loading && (\n <Shimmer>\n <ActivityIndicator opacity={0.5} size={13} />\n </Shimmer>\n )}\n </ItemContainer>\n );\n\n if (menuItems && onSelectMenuItem) {\n element = (\n <ContextMenu<MenuItemType> items={menuItems} onSelect={onSelectMenuItem}>\n {element}\n </ContextMenu>\n );\n }\n\n if (textPosition === \"toolip\") {\n element = (\n <Tooltip\n content={\n <Stack.V gap={2}>\n <ItemTitle showBackground={false}>{title}</ItemTitle>\n <ItemDescription showBackground={false}>{subtitle}</ItemDescription>\n </Stack.V>\n }\n >\n {element}\n </Tooltip>\n );\n }\n\n return element;\n});\n\ntype GridViewContextValue = {\n size: GridViewSize;\n textPosition: \"overlay\" | \"below\" | \"toolip\";\n bordered: boolean;\n disabled: boolean;\n};\n\nconst GridViewContext = createContext<GridViewContextValue>({\n size: \"small\",\n textPosition: \"below\",\n bordered: false,\n disabled: false,\n});\n\ninterface GridViewRootProps extends Partial<GridViewContextValue> {\n children: ReactNode;\n onClick?: () => void;\n scrollable?: boolean;\n}\n\nfunction GridViewRoot({\n size = \"small\",\n children,\n scrollable = true,\n onClick,\n textPosition = \"below\",\n bordered = false,\n disabled = false,\n}: GridViewRootProps) {\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n onClick?.();\n },\n [onClick]\n );\n\n const contextValue = useMemo(\n () => ({\n size,\n textPosition,\n bordered,\n disabled,\n }),\n [bordered, disabled, size, textPosition]\n );\n\n return (\n <GridViewContext.Provider value={contextValue}>\n <Container onClick={handleClick} scrollable={scrollable}>\n {scrollable ? <ScrollArea>{children}</ScrollArea> : children}\n </Container>\n </GridViewContext.Provider>\n );\n}\n\nfunction GridViewSection({\n children,\n padding = \"20px\",\n}: {\n children?: ReactNode;\n padding?: CSSProperties[\"padding\"];\n}) {\n const { size } = useContext(GridViewContext);\n\n return (\n <Grid size={size} padding={padding}>\n {children}\n </Grid>\n );\n}\n\nfunction GridViewSectionHeader({ title }: { title: string }) {\n const grouped = title.split(\"/\");\n\n return (\n <SectionHeaderContainer>\n <Spacer.Vertical size={24} />\n {withSeparatorElements(\n grouped.map((title, index) => (\n <SectionTitle last={index === grouped.length - 1}>\n {title}\n </SectionTitle>\n )),\n <SectionTitle> / </SectionTitle>\n )}\n </SectionHeaderContainer>\n );\n}\n\nexport namespace GridView {\n export const Root = memo(GridViewRoot);\n export const Item = memo(GridViewItem);\n export const Section = memo(GridViewSection);\n export const SectionHeader = memo(GridViewSectionHeader);\n}\n","import * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport React, { memo, ReactNode, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\n\nconst SCROLLBAR_SIZE = 10;\n\nconst StyledViewport = styled(RadixScrollArea.Viewport)({\n width: \"100%\",\n height: \"100%\",\n // Override the `display: table` in the child, since this allows\n // elements to expand beyond the width of the viewport.\n \"& > div\": {\n display: \"block !important\",\n },\n});\n\nconst StyledScrollbar = styled(RadixScrollArea.Scrollbar)({\n display: \"flex\",\n padding: \"3px\",\n '&[data-orientation=\"vertical\"]': {\n width: SCROLLBAR_SIZE,\n },\n});\n\nconst StyledThumb = styled(RadixScrollArea.Thumb)(({ theme }) => ({\n flex: 1,\n borderRadius: SCROLLBAR_SIZE,\n backgroundColor: theme.colors.scrollbar,\n}));\n\nconst Container = styled.div({\n flex: \"1 1 0px\",\n minHeight: 0,\n});\n\ninterface Props {\n children?: ReactNode | ((scrollElementRef: HTMLDivElement) => ReactNode);\n}\n\nexport const ScrollArea = memo(function ScrollArea({ children }: Props) {\n const [scrollElementRef, setScrollElementRef] =\n useState<HTMLDivElement | null>(null);\n\n return (\n <Container>\n <RadixScrollArea.Root style={{ width: \"100%\", height: \"100%\" }}>\n <StyledViewport\n ref={useCallback(\n (ref: HTMLDivElement | null) => setScrollElementRef(ref),\n []\n )}\n >\n {typeof children === \"function\"\n ? scrollElementRef\n ? children(scrollElementRef)\n : null\n : children}\n </StyledViewport>\n <StyledScrollbar orientation=\"vertical\" className=\"scroll-component\">\n <StyledThumb className=\"scroll-component\" />\n </StyledScrollbar>\n </RadixScrollArea.Root>\n </Container>\n );\n});\n","import { Size } from \"@noya-app/noya-geometry\";\nimport { chunkBy, partition } from \"@noya-app/noya-utils\";\nimport React, {\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport {\n CompletionItem,\n CompletionListItem,\n CompletionSectionHeader,\n} from \"../utils/completions\";\nimport { IToken, fuzzyFilter, fuzzyTokenize } from \"../utils/fuzzyScorer\";\nimport { ActivityIndicator } from \"./ActivityIndicator\";\nimport { InputField, InputFieldSize } from \"./InputField\";\nimport { IVirtualizedList, ListView } from \"./ListView\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\nimport { Small } from \"./Text\";\n\nfunction filterWithGroupedSections(\n items: (CompletionItem | CompletionSectionHeader)[],\n query: string\n): CompletionListItem[] {\n const sections = chunkBy(items, (a, b) => b.type !== \"sectionHeader\");\n\n return sections.flatMap((section) => {\n const [headers, regular] = partition(\n section,\n (item): item is CompletionSectionHeader => item.type === \"sectionHeader\"\n );\n const maxVisibleItems =\n headers.length > 0 ? headers[0].maxVisibleItems : undefined;\n\n const scoredItems = fuzzyFilter({\n items: regular.map((item) => item.name),\n query,\n });\n\n const usedIndexes = new Set(scoredItems.map((item) => item.index));\n const extraItems = regular.flatMap((item, index): CompletionListItem[] =>\n item.alwaysInclude && !usedIndexes.has(index)\n ? [{ ...item, index, score: 0 }]\n : []\n );\n let newItems = scoredItems\n .map((item): CompletionListItem => ({ ...item, ...regular[item.index] }))\n .concat(extraItems);\n\n if (maxVisibleItems !== undefined) {\n newItems = newItems.slice(0, maxVisibleItems);\n }\n\n if (newItems.length === 0) return [];\n\n return [...headers, ...newItems];\n });\n}\n\nexport const CompletionToken = styled.span<{ $type: IToken[\"type\"] }>(\n ({ $type }) => ({\n fontWeight: $type === \"match\" ? \"bold\" : \"normal\",\n whiteSpace: \"pre\",\n })\n);\n\ninterface CompletionMenuProps {\n items: CompletionListItem[];\n selectedIndex: number;\n onSelectItem: (item: CompletionListItem) => void;\n onHoverIndex: (index: number) => void;\n listSize: Size;\n}\n\nexport const CompletionMenu = memo(\n forwardRef(function CompletionMenu(\n {\n items,\n selectedIndex,\n onSelectItem,\n onHoverIndex,\n listSize,\n }: CompletionMenuProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n ) {\n return (\n <ListView.Root\n ref={forwardedRef}\n scrollable\n keyExtractor={(item) => item.id}\n data={items}\n virtualized={listSize}\n pressEventName=\"onPointerDown\"\n sectionHeaderVariant=\"label\"\n renderItem={(item, i) => {\n if (item.type === \"sectionHeader\") {\n return (\n <ListView.Row key={item.id} isSectionHeader>\n {item.name}\n </ListView.Row>\n );\n }\n\n const tokens = fuzzyTokenize({\n item: item.name,\n itemScore: item,\n });\n\n return (\n <ListView.Row\n key={item.id}\n selected={i === selectedIndex}\n onPress={() => onSelectItem(item)}\n onHoverChange={(hovered) => {\n if (hovered) {\n onHoverIndex(i);\n }\n }}\n >\n {tokens.map((token, j) => (\n <CompletionToken key={j} $type={token.type}>\n {token.text}\n </CompletionToken>\n ))}\n {item.icon && (\n <>\n <Spacer.Horizontal />\n {item.icon}\n </>\n )}\n </ListView.Row>\n );\n }}\n />\n );\n })\n);\n\ntype Props = {\n loading?: boolean;\n initialValue?: string;\n placeholder?: string;\n items: (CompletionItem | CompletionSectionHeader)[];\n onChange?: (value: string) => void;\n onHoverItem?: (item: CompletionItem | undefined) => void;\n onSelectItem?: (item: CompletionItem) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (didSubmit: boolean, value: string) => void;\n onDeleteWhenEmpty?: () => void;\n size?: InputFieldSize;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n hideChildrenWhenFocused?: boolean;\n hideMenuWhenEmptyValue?: boolean;\n};\n\nexport interface IInputFieldWithCompletions {\n focus(): void;\n setValue(value: string): void;\n selectAllInputText(): void;\n}\n\nexport const InputFieldWithCompletions = memo(\n forwardRef(function InputFieldWithCompletions(\n {\n loading,\n initialValue = \"\",\n placeholder,\n items,\n size,\n onChange,\n onSelectItem,\n onHoverItem,\n onFocus,\n onBlur,\n onDeleteWhenEmpty,\n style,\n className,\n children,\n hideChildrenWhenFocused = false,\n hideMenuWhenEmptyValue = false,\n }: Props,\n forwardedRef: ForwardedRef<IInputFieldWithCompletions>\n ) {\n const ref = useRef<HTMLInputElement>(null);\n\n const [isFocused, setIsFocused] = useState(false);\n const [state, _setState] = useState({\n filter: initialValue,\n selectedIndex: 0,\n });\n\n const updateState = useCallback(\n (\n newState: { filter?: string; selectedIndex?: number },\n hoverItem?: \"resetHover\"\n ) => {\n const nextState = { ...state, ...newState };\n const nextItems = filterWithGroupedSections(items, nextState.filter);\n\n // If we would be selecting a header, find the next valid index\n if (nextItems[nextState.selectedIndex]?.type === \"sectionHeader\") {\n nextState.selectedIndex = getNextIndex(\n nextItems,\n nextState.selectedIndex,\n \"next\",\n (item) => item.type === \"sectionHeader\"\n );\n }\n\n if (hoverItem === \"resetHover\") {\n onHoverItem?.(undefined);\n } else {\n const nextItem = nextItems[nextState.selectedIndex];\n\n if (nextItem && nextItem.type !== \"sectionHeader\") {\n onHoverItem?.(nextItem);\n } else {\n onHoverItem?.(undefined);\n }\n }\n\n _setState(nextState);\n if (newState.filter !== undefined) {\n onChange?.(newState.filter);\n }\n },\n [items, onChange, onHoverItem, state]\n );\n\n const initialValueRef = useRef(initialValue);\n\n useLayoutEffect(() => {\n if (initialValueRef.current === initialValue) return;\n initialValueRef.current = initialValue;\n updateState({ filter: initialValue });\n }, [initialValue, updateState]);\n\n const { filter, selectedIndex } = state;\n\n const listRef = React.useRef<ListView.VirtualizedList>(null);\n\n const filteredItems = useMemo(\n () => filterWithGroupedSections(items, filter),\n [items, filter]\n );\n\n const [normalItems, sectionHeaderItems] = partition(\n filteredItems,\n (item) => item.type !== \"sectionHeader\"\n );\n\n const height = Math.min(\n ListView.calculateHeight(\n normalItems.length,\n sectionHeaderItems.length,\n \"label\"\n ),\n ListView.rowHeight * 10.5\n );\n\n useEffect(() => {\n if (listRef.current) {\n listRef.current.scrollToIndex(selectedIndex);\n }\n }, [selectedIndex]);\n\n // Keep track of the last submitted value so we can detect whether a blur\n // event was caused by selecting an item or not\n const lastSubmittedValueRef = useRef<\n { filter: string; itemName: string } | undefined\n >(undefined);\n\n const selectItem = useCallback(\n (item: CompletionListItem) => {\n if (item.type === \"sectionHeader\") return;\n\n lastSubmittedValueRef.current = {\n filter,\n itemName: item.name,\n };\n\n onSelectItem?.(item);\n onHoverItem?.(undefined);\n\n if (ref && typeof ref === \"object\") {\n ref.current?.blur();\n }\n },\n [filter, onSelectItem, onHoverItem, ref]\n );\n\n const handleChange = useCallback(\n (value: string) => updateState({ selectedIndex: 0, filter: value }),\n [updateState]\n );\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n const didSubmit = lastSubmittedValueRef.current?.filter === filter;\n updateState({ selectedIndex: 0, filter: initialValue }, \"resetHover\");\n onBlur?.(didSubmit, filter);\n }, [filter, initialValue, onBlur, updateState]);\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n setIsFocused(true);\n updateState({ selectedIndex: 0, filter: initialValue });\n onFocus?.(event);\n },\n [initialValue, onFocus, updateState]\n );\n\n const handleIndexChange = useCallback(\n (index: number) => updateState({ selectedIndex: index }),\n [updateState]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n let handled = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n handleIndexChange(\n getNextIndex(\n filteredItems,\n selectedIndex,\n event.key === \"ArrowDown\" ? \"next\" : \"previous\",\n (item) => item.type === \"sectionHeader\"\n )\n );\n\n handled = true;\n break;\n case \"Enter\": {\n const item = filteredItems[selectedIndex];\n if (item) {\n selectItem(item);\n }\n\n handled = true;\n break;\n }\n case \"Tab\": {\n // Update the filter to the selected item\n const item = filteredItems[selectedIndex];\n if (item) {\n handleChange(item.name);\n }\n\n handled = true;\n break;\n }\n case \"Escape\":\n if (ref && typeof ref === \"object\") {\n ref.current?.blur();\n }\n\n handled = true;\n break;\n case \"Backspace\":\n case \"Delete\": {\n if (filter === \"\") {\n onDeleteWhenEmpty?.();\n }\n\n break;\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [\n handleIndexChange,\n filteredItems,\n selectedIndex,\n ref,\n selectItem,\n handleChange,\n filter,\n onDeleteWhenEmpty,\n ]\n );\n\n const display = !filter && hideMenuWhenEmptyValue ? \"none\" : \"flex\";\n\n const typeaheadValue = filteredItems[selectedIndex]?.name;\n\n useImperativeHandle(forwardedRef, () => ({\n focus: () => {\n ref.current?.focus();\n },\n setValue: (value: string) => {\n handleChange(value);\n },\n selectAllInputText: () => {\n ref.current?.setSelectionRange(0, ref.current.value.length);\n },\n }));\n\n return (\n <InputField.Root\n size={size}\n labelSize={16}\n renderPopoverContent={({ width }) => {\n const listSize = { width, height };\n\n return (\n <Stack.V flex={`0 0 ${height}px`} display={display}>\n {filteredItems.length > 0 ? (\n <CompletionMenu\n ref={listRef}\n items={filteredItems}\n selectedIndex={selectedIndex}\n onSelectItem={selectItem}\n onHoverIndex={handleIndexChange}\n listSize={listSize}\n />\n ) : (\n <Stack.V\n height=\"100px\"\n padding=\"20px\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Small color=\"textDisabled\">\n {loading ? \"Loading\" : \"No results\"}\n </Small>\n </Stack.V>\n )}\n </Stack.V>\n );\n }}\n >\n <InputField.Input\n ref={ref}\n value={filter}\n name=\"component\"\n placeholder={placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocusCapture={handleFocus}\n onKeyDown={handleKeyDown}\n style={style}\n className={className}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-owns=\"component-listbox\"\n aria-expanded={isFocused && display !== \"none\"}\n aria-controls=\"component-listbox\"\n />\n {filter &&\n typeaheadValue &&\n typeaheadValue.toLowerCase().startsWith(filter.toLowerCase()) && (\n <InputField.Typeahead value={typeaheadValue} prefix={filter} />\n )}\n {(!isFocused || !hideChildrenWhenFocused) && children}\n {loading && isFocused && (\n <InputField.Label>\n <ActivityIndicator />\n </InputField.Label>\n )}\n </InputField.Root>\n );\n })\n);\n\nfunction getNextIndex<T>(\n items: T[],\n currentIndex: number,\n direction: \"next\" | \"previous\",\n isDisabled: (item: T) => boolean\n): number {\n // Make sure the current index is within bounds\n currentIndex =\n currentIndex < 0\n ? 0\n : currentIndex >= items.length\n ? items.length - 1\n : currentIndex;\n\n // If there are no valid items in the array, return -1\n if (items.every(isDisabled)) return -1;\n\n let nextIndex = currentIndex;\n\n do {\n // Move to the next or previous index, wrapping around if necessary\n if (direction === \"next\") {\n nextIndex = (nextIndex + 1) % items.length;\n } else {\n nextIndex = (nextIndex - 1 + items.length) % items.length;\n }\n\n // If we've looped all the way around without finding a valid item, return the current index\n if (nextIndex === currentIndex) return currentIndex;\n } while (isDisabled(items[nextIndex]));\n\n return nextIndex;\n}\n","import { IItemScore, scoreFilePathFuzzy } from 'vscode-fuzzy-scorer';\n\nexport function fuzzyScore({ item, query }: { item: string; query: string }) {\n return scoreFilePathFuzzy({ path: item, query });\n}\n\nexport type IScoredItem = IItemScore & {\n index: number;\n};\n\nexport function fuzzyFilter({\n items,\n query,\n scoreThreshold = 0,\n}: {\n items: string[];\n query: string;\n scoreThreshold?: number;\n}) {\n const scoredItems = items.map(\n (text, index): IScoredItem => ({\n index,\n ...fuzzyScore({ item: text, query }),\n }),\n );\n\n if (!query) return scoredItems;\n\n return scoredItems\n .filter(({ score }) => score > scoreThreshold)\n .sort((a, b) => b.score - a.score);\n}\n\nexport type IToken =\n | { type: 'text'; text: string }\n | { type: 'match'; text: string };\n\nexport type MatchRange = { start: number; end: number };\n\nexport function fuzzyTokenize({\n item,\n itemScore,\n}: {\n item: string;\n itemScore: IItemScore;\n}): IToken[] {\n const tokens: IToken[] = [];\n\n let lastMatchIndex = 0;\n\n const matches: MatchRange[] = mergeRanges([\n ...(itemScore.labelMatch ?? []),\n ...(itemScore.descriptionMatch ?? []),\n ]);\n\n for (const match of matches) {\n if (match.start > lastMatchIndex) {\n tokens.push({\n type: 'text',\n text: item.slice(lastMatchIndex, match.start),\n });\n }\n\n tokens.push({\n type: 'match',\n text: item.slice(match.start, match.end),\n });\n\n lastMatchIndex = match.end;\n }\n\n if (lastMatchIndex < item.length) {\n tokens.push({\n type: 'text',\n text: item.slice(lastMatchIndex),\n });\n }\n\n return tokens;\n}\n\nfunction mergeRanges(ranges: MatchRange[]): MatchRange[] {\n const merged: MatchRange[] = [];\n\n const sorted = [...ranges].sort((a, b) => a.start - b.start);\n\n let current: MatchRange | undefined;\n\n for (const range of sorted) {\n if (!current) {\n current = range;\n } else if (range.start <= current.end) {\n current.end = Math.max(current.end, range.end);\n } else {\n merged.push(current);\n current = range;\n }\n }\n\n if (current) {\n merged.push(current);\n }\n\n return merged;\n}\n","import { Size } from \"@noya-app/noya-geometry\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport React, {\n Children,\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n isValidElement,\n memo,\n ReactElement,\n ReactNode,\n Ref,\n useCallback,\n useContext,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { WindowScroller, WindowScrollerChildProps } from \"react-virtualized\";\nimport { ListChildComponentProps, VariableSizeList } from \"react-window\";\nimport styled from \"styled-components\";\nimport { mergeEventHandlers } from \"../hooks/mergeEventHandlers\";\nimport { useHover } from \"../hooks/useHover\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { InputField } from \"./InputField\";\nimport { MenuItem } from \"./internal/Menu\";\nimport { ScrollArea } from \"./ScrollArea\";\nimport {\n DropValidator,\n normalizeListDestinationIndex,\n RelativeDropPosition,\n Sortable,\n} from \"./Sortable\";\nimport { Spacer } from \"./Spacer\";\n\nexport type ListRowMarginType = \"none\" | \"top\" | \"bottom\" | \"vertical\";\nexport type ListRowPosition = \"only\" | \"first\" | \"middle\" | \"last\";\n\nconst ROW_HEIGHT = 31;\nconst SECTION_HEADER_LABEL_HEIGHT = 27;\n\ntype ListColorScheme = \"primary\" | \"secondary\";\n\ntype PressEventName = \"onClick\" | \"onPointerDown\";\n\n// TODO: Some of these could be passed in a single context value that's\n// the same for all rows. But doing this seems to cause an infinite loop and\n// prevents drag and drop from working.\ntype ListRowContextValue = {\n marginType: ListRowMarginType;\n selectedPosition: ListRowPosition;\n sortable: boolean;\n expandable: boolean;\n divider: boolean;\n gap: number;\n variant: ListViewVariant;\n sectionHeaderVariant: ListViewSectionHeaderVariant;\n pressEventName: PressEventName;\n isSectionHeader: boolean;\n colorScheme: ListColorScheme;\n};\n\n// The dragged item isn't passed a context value (doing so causes an infinite loop),\n// so we pass this separately. Rows need the indentation to look correct when dragging,\n// and the dragged row doesn't have a ListRowContextValue.\ntype ListViewDraggingContextValue = {\n indentation: number;\n isDragging?: boolean;\n};\n\nconst ListViewDraggingContext = createContext<ListViewDraggingContextValue>({\n indentation: 12,\n});\n(ListViewDraggingContext as any).displayName = \"ListViewDraggingContext\";\n\nconst ListRowContext = createContext<ListRowContextValue>({\n marginType: \"none\",\n selectedPosition: \"only\",\n sortable: false,\n expandable: true,\n divider: true,\n gap: 0,\n variant: \"normal\",\n sectionHeaderVariant: \"normal\",\n pressEventName: \"onClick\",\n isSectionHeader: false,\n colorScheme: \"primary\",\n});\n(ListRowContext as any).displayName = \"ListRowContext\";\n\n/* ----------------------------------------------------------------------------\n * RowTitle\n * ------------------------------------------------------------------------- */\n\nconst ListViewRowTitle = styled.span(({ theme }) => ({\n flex: \"1 1 0\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"pre\",\n}));\n\n/* ----------------------------------------------------------------------------\n * EditableRowTitle\n * ------------------------------------------------------------------------- */\n\nconst ListViewEditableRowTitleElement = styled(InputField.Input)(\n ({ theme }) => ({\n background: theme.colors.listView.editingBackground,\n })\n) as typeof InputField.Input;\n\nexport interface EditableRowProps {\n value: string;\n onSubmitEditing: (value: string) => void;\n autoFocus: boolean;\n placeholder?: string;\n}\n\nfunction ListViewEditableRowTitle({\n value,\n onSubmitEditing,\n autoFocus,\n placeholder,\n}: EditableRowProps) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useLayoutEffect(() => {\n const element = inputRef.current;\n\n if (!element || !autoFocus) return;\n\n // Calling `focus` is necessary, in addition to `select`, to ensure\n // the `onBlur` fires correctly.\n element.focus();\n\n setTimeout(() => {\n element.select();\n }, 0);\n }, [autoFocus]);\n\n return (\n <ListViewEditableRowTitleElement\n ref={inputRef}\n variant=\"bare\"\n value={value}\n placeholder={placeholder}\n onSubmit={onSubmitEditing}\n allowSubmittingWithSameValue\n />\n );\n}\n\nfunction getPositionMargin(marginType: ListRowMarginType) {\n return {\n top: marginType === \"top\" || marginType === \"vertical\" ? 8 : 0,\n bottom: marginType === \"bottom\" || marginType === \"vertical\" ? 8 : 0,\n };\n}\n\n/* ----------------------------------------------------------------------------\n * Row\n * ------------------------------------------------------------------------- */\n\nconst RowContainer = styled.div<{\n $marginType: ListRowMarginType;\n $selected: boolean;\n $selectedPosition: ListRowPosition;\n $disabled: boolean;\n $hovered: boolean;\n $variant: ListViewVariant;\n $divider: boolean;\n $isSectionHeader: boolean;\n $showsActiveState: boolean;\n $sectionHeaderVariant: ListViewSectionHeaderVariant;\n $colorScheme: ListColorScheme;\n $gap: number;\n $backgroundColor?: CSSProperties[\"backgroundColor\"];\n}>(\n ({\n theme,\n $marginType,\n $selected,\n $selectedPosition,\n $disabled,\n $hovered,\n $variant,\n $divider,\n $isSectionHeader,\n $showsActiveState,\n $sectionHeaderVariant,\n $colorScheme,\n $gap,\n $backgroundColor,\n }) => {\n const margin = getPositionMargin($marginType);\n\n return {\n ...($isSectionHeader && $sectionHeaderVariant === \"label\"\n ? theme.textStyles.label\n : theme.textStyles.small),\n ...($isSectionHeader && { fontWeight: 500 }),\n gap: $gap,\n flex: \"0 0 auto\",\n userSelect: \"none\",\n cursor: \"default\",\n ...($variant !== \"bare\" && {\n paddingTop: \"6px\",\n paddingRight: \"12px\",\n paddingBottom: \"6px\",\n paddingLeft: \"12px\",\n ...($variant === \"padded\" && {\n borderRadius: \"2px\",\n marginLeft: \"8px\",\n marginRight: \"8px\",\n marginTop: `${margin.top}px`,\n marginBottom: `${margin.bottom}px`,\n }),\n }),\n color: theme.colors.textMuted,\n ...($isSectionHeader && {\n backgroundColor: theme.colors.listView.raisedBackground,\n ...($sectionHeaderVariant === \"label\" && {\n color: theme.colors.textDisabled,\n }),\n }),\n ...($disabled && {\n color: theme.colors.textDisabled,\n }),\n ...($selected && {\n color: \"white\",\n backgroundColor: theme.colors[$colorScheme],\n }),\n display: \"flex\",\n alignItems: \"center\",\n ...($selected &&\n !$isSectionHeader &&\n ($selectedPosition === \"middle\" || $selectedPosition === \"last\") && {\n borderTopRightRadius: \"0px\",\n borderTopLeftRadius: \"0px\",\n }),\n ...($selected &&\n !$isSectionHeader &&\n ($selectedPosition === \"middle\" || $selectedPosition === \"first\") && {\n borderBottomRightRadius: \"0px\",\n borderBottomLeftRadius: \"0px\",\n }),\n position: \"relative\",\n ...($hovered && {\n boxShadow: `0 0 0 1px ${theme.colors[$colorScheme]} inset`,\n }),\n ...($showsActiveState && {\n \"&:active\": {\n backgroundColor: $selected\n ? $colorScheme === \"secondary\"\n ? theme.colors.secondaryLight\n : theme.colors.primaryLight\n : theme.colors.activeBackground,\n },\n }),\n ...($divider && {\n borderBottom: `1px solid ${theme.colors.dividerSubtle}`,\n }),\n ...($backgroundColor && {\n backgroundColor: $backgroundColor,\n \"&:hover\": {\n backgroundColor: $backgroundColor,\n },\n \"&:active\": {\n backgroundColor: $backgroundColor,\n },\n }),\n };\n }\n);\n\nconst ListViewDragIndicatorElement = styled.div<{\n $relativeDropPosition: RelativeDropPosition;\n $gap: number;\n $offsetLeft: number;\n $colorScheme: ListColorScheme;\n}>(({ theme, $relativeDropPosition, $offsetLeft, $colorScheme, $gap }) => ({\n zIndex: 1,\n position: \"absolute\",\n borderRadius: \"3px\",\n ...($relativeDropPosition === \"inside\"\n ? {\n inset: 2,\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.dragOutline\n }`,\n }\n : {\n top: $relativeDropPosition === \"above\" ? -(3 + $gap / 2) : undefined,\n bottom: $relativeDropPosition === \"below\" ? -(3 + $gap / 2) : undefined,\n left: $offsetLeft,\n right: 0,\n height: 6,\n background: theme.colors[$colorScheme],\n border: `2px solid white`,\n boxShadow: \"0 0 2px rgba(0,0,0,0.5)\",\n }),\n}));\n\ninterface ListViewClickInfo {\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n ctrlKey: boolean;\n}\n\ninterface ListViewRowProps<MenuItemType extends string = string> {\n id?: string;\n tabIndex?: number;\n selected?: boolean;\n depth?: number;\n disabled?: boolean;\n // draggable?: boolean;\n hovered?: boolean;\n sortable?: boolean;\n gap?: number;\n backgroundColor?: CSSProperties[\"backgroundColor\"];\n onPress?: (info: ListViewClickInfo) => void;\n onDoubleClick?: () => void;\n onHoverChange?: (isHovering: boolean) => void;\n children?: ReactNode;\n isSectionHeader?: boolean;\n menuItems?: MenuItem<MenuItemType>[];\n onSelectMenuItem?: (value: MenuItemType) => void;\n onContextMenu?: () => void;\n onMenuOpenChange?: (isOpen: boolean) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n style?: CSSProperties;\n className?: string;\n dragIndicatorStyle?:\n | CSSProperties\n | ((props: {\n depth: number;\n indentation: number;\n position: RelativeDropPosition;\n }) => CSSProperties);\n}\n\nconst ListViewRow = forwardRef(function ListViewRow<\n MenuItemType extends string,\n>(\n {\n id,\n tabIndex = 0,\n gap,\n backgroundColor,\n selected = false,\n depth = 0,\n disabled = false,\n hovered = false,\n isSectionHeader = false,\n sortable: overrideSortable,\n onPress,\n onDoubleClick,\n onHoverChange,\n children,\n menuItems,\n onContextMenu,\n onSelectMenuItem,\n onMenuOpenChange,\n onKeyDown,\n style,\n dragIndicatorStyle,\n className,\n }: ListViewRowProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n depth = Math.max(0, depth);\n\n const {\n marginType,\n selectedPosition,\n sortable,\n pressEventName,\n variant,\n sectionHeaderVariant,\n divider,\n gap: listGap,\n colorScheme,\n } = useContext(ListRowContext);\n const { hoverProps } = useHover({\n onHoverChange,\n });\n const { indentation, isDragging } = useContext(ListViewDraggingContext);\n\n const handlePress = useCallback(\n (event: React.MouseEvent) => {\n // We use preventDefault as a hack to mark this event as handled. We check for\n // this in the ListView.Root. We can't stopPropagation here or existing ContextMenus\n // won't close (onPointerDownOutside won't fire).\n event.preventDefault();\n\n // We only want to handle left clicks\n if (event.button !== 0) return;\n\n onPress?.(event);\n },\n [onPress]\n );\n\n const handleDoubleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n\n onDoubleClick?.();\n },\n [onDoubleClick]\n );\n\n const mergedStyle = useMemo(() => {\n return isDragging\n ? {\n // TODO: Where do these offsets actually come from?\n transform: `translate3d(-36px, -6px, 0)`,\n width: `calc(100% + 48px)`,\n ...style,\n }\n : style;\n }, [isDragging, style]);\n\n const renderContent = (\n {\n relativeDropPosition,\n ...renderProps\n }: React.ComponentProps<typeof RowContainer> & {\n relativeDropPosition?: RelativeDropPosition;\n },\n ref: Ref<HTMLElement>\n ) => {\n const Component = RowContainer;\n\n const element = (\n <Component\n ref={ref as any}\n $colorScheme={colorScheme}\n onContextMenu={onContextMenu}\n $isSectionHeader={isSectionHeader}\n id={id}\n $gap={gap ?? 0}\n $backgroundColor={backgroundColor}\n {...hoverProps}\n onDoubleClick={handleDoubleClick}\n $marginType={marginType ?? \"none\"}\n $disabled={disabled}\n $hovered={hovered}\n $selected={selected}\n $variant={variant}\n $sectionHeaderVariant={sectionHeaderVariant}\n $selectedPosition={selectedPosition}\n $showsActiveState={pressEventName === \"onClick\"}\n aria-selected={selected}\n $divider={!isDragging && divider}\n onKeyDown={onKeyDown}\n style={mergedStyle}\n {...(renderProps as Partial<React.ComponentProps<typeof RowContainer>>)}\n {...mergeEventHandlers(\n { onPointerDown: renderProps.onPointerDown! },\n { [pressEventName]: handlePress }\n )}\n tabIndex={tabIndex}\n className={className}\n >\n {relativeDropPosition && (\n <ListViewDragIndicatorElement\n $colorScheme={colorScheme}\n $relativeDropPosition={relativeDropPosition}\n $offsetLeft={33 + depth * indentation}\n $gap={listGap + (divider ? 1 : 0)}\n style={\n typeof dragIndicatorStyle === \"function\"\n ? dragIndicatorStyle({\n depth,\n indentation,\n position: relativeDropPosition,\n })\n : dragIndicatorStyle\n }\n />\n )}\n {depth > 0 && <Spacer.Horizontal size={depth * indentation} />}\n {children}\n </Component>\n );\n\n if (menuItems && onSelectMenuItem) {\n return (\n <ContextMenu<MenuItemType>\n items={menuItems}\n onSelect={onSelectMenuItem}\n onOpenChange={onMenuOpenChange}\n >\n {element}\n </ContextMenu>\n );\n }\n\n return element;\n };\n\n if (sortable && id) {\n return (\n <Sortable.Item<HTMLElement> id={id} disabled={overrideSortable === false}>\n {({ ref: sortableRef, ...sortableProps }) =>\n renderContent(\n sortableProps as any,\n composeRefs(sortableRef, forwardedRef)\n )\n }\n </Sortable.Item>\n );\n }\n\n return renderContent({} as any, forwardedRef);\n});\n\n/* ----------------------------------------------------------------------------\n * VirtualizedListRow\n * ------------------------------------------------------------------------- */\n\nconst RenderItemContext = createContext<(index: number) => ReactNode>(\n () => null\n);\n(RenderItemContext as any).displayName = \"RenderItemContext\";\n\nconst VirtualizedListRow = memo(function VirtualizedListRow({\n index,\n style,\n}: ListChildComponentProps) {\n const renderItem = useContext(RenderItemContext);\n\n return (\n <div key={index} style={style}>\n {renderItem(index)}\n </div>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * VirtualizedList\n * ------------------------------------------------------------------------- */\n\ninterface VirtualizedListProps<T> {\n size: Size;\n scrollElement: HTMLDivElement;\n items: T[];\n getItemHeight: (index: number) => number;\n keyExtractor: (index: number) => string;\n renderItem: (index: number) => ReactNode;\n}\n\nexport interface IVirtualizedList {\n scrollToIndex(index: number): void;\n}\n\nconst VirtualizedListInner = forwardRef(function VirtualizedListInner<T>(\n {\n size,\n scrollElement,\n items,\n getItemHeight,\n keyExtractor,\n renderItem,\n }: VirtualizedListProps<T>,\n ref: ForwardedRef<IVirtualizedList>\n) {\n const listRef = useRef<VariableSizeList<T> | null>(null);\n\n useImperativeHandle(ref, () => ({\n scrollToIndex(index) {\n listRef.current?.scrollToItem(index);\n },\n }));\n\n useLayoutEffect(() => {\n listRef.current?.resetAfterIndex(0);\n }, [\n // When items change, we need to re-render the virtualized list,\n // since it doesn't currently support row height changes\n items,\n ]);\n\n // Internally, react-virtualized updates these properties. We always want\n // to use our custom scroll element, so we override them. It may update\n // overflowX/Y individually in addition to `overflow`, so we include all 3.\n const listStyle = useMemo(\n (): CSSProperties => ({\n overflowX: \"initial\",\n overflowY: \"initial\",\n overflow: \"initial\",\n }),\n []\n );\n\n return (\n <RenderItemContext.Provider value={renderItem}>\n <WindowScroller\n scrollElement={scrollElement}\n style={useMemo(() => ({ flex: \"1 1 auto\" }), [])}\n >\n {useCallback(\n ({\n registerChild,\n onChildScroll,\n scrollTop,\n }: WindowScrollerChildProps & {\n // Added when noya-designsystem moved to a separate package.\n // I think this is a hack to get around the fact that react-virtualized\n // doesn't update on scroll unless we force it to by changing ref.\n // Either we're not using this the intended way or the types are wrong.\n registerChild: (element: any) => void;\n }) => (\n <div ref={registerChild}>\n <VariableSizeList<T>\n ref={listRef}\n // The list won't update on scroll unless we force it to by changing key\n key={scrollTop}\n style={listStyle}\n itemKey={keyExtractor}\n onScroll={({ scrollOffset }: { scrollOffset: number }) => {\n onChildScroll({ scrollTop: scrollOffset });\n }}\n initialScrollOffset={scrollTop}\n width={size.width}\n height={size.height}\n itemCount={items.length}\n itemSize={getItemHeight}\n estimatedItemSize={ROW_HEIGHT}\n >\n {VirtualizedListRow}\n </VariableSizeList>\n </div>\n ),\n [\n listStyle,\n keyExtractor,\n size.width,\n size.height,\n items.length,\n getItemHeight,\n ]\n )}\n </WindowScroller>\n </RenderItemContext.Provider>\n );\n});\n\nconst VirtualizedList = memo(\n VirtualizedListInner\n) as typeof VirtualizedListInner;\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst RootContainer = styled.div<{\n $scrollable?: boolean;\n $gap?: number;\n}>(({ theme, $scrollable, $gap }) => ({\n flex: $scrollable ? \"1 0 0\" : \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"nowrap\",\n color: theme.colors.textMuted,\n gap: $gap,\n}));\n\ntype ListViewItemInfo = {\n isDragging: boolean;\n};\n\ntype ChildrenProps = {\n children: ReactNode;\n};\n\ntype RenderProps<T> = {\n data: T[];\n renderItem: (item: T, index: number, info: ListViewItemInfo) => ReactNode;\n keyExtractor: (item: T, index: number) => string;\n /**\n * Each item must have an `id` in order to be sortable.\n *\n * Additionally, the key extracted with `keyExtractor` must match the ListItem.Row `id`.\n */\n sortable?: boolean;\n virtualized?: Size;\n};\n\ntype ListViewVariant = \"normal\" | \"padded\" | \"bare\";\n\ntype ListViewSectionHeaderVariant = \"normal\" | \"label\";\n\ntype ListViewRootProps = {\n id?: string;\n className?: string;\n style?: CSSProperties;\n onPress?: () => void;\n scrollable?: boolean;\n expandable?: boolean;\n onMoveItem?: (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => void;\n indentation?: number;\n acceptsDrop?: DropValidator;\n pressEventName?: PressEventName;\n variant?: ListViewVariant;\n sectionHeaderVariant?: ListViewSectionHeaderVariant;\n divider?: boolean;\n gap?: number;\n colorScheme?: ListColorScheme;\n};\n\nconst ListViewRootInner = forwardRef(function ListViewRootInner<T>(\n {\n id,\n className,\n style,\n onPress,\n scrollable = false,\n expandable = true,\n sortable = false,\n divider = false,\n onMoveItem,\n indentation = 12,\n acceptsDrop,\n data,\n renderItem,\n keyExtractor,\n virtualized,\n variant = \"normal\",\n sectionHeaderVariant = \"normal\",\n pressEventName = \"onClick\",\n colorScheme = \"primary\",\n gap = 0,\n }: RenderProps<T> & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (\n event.target instanceof HTMLElement &&\n event.target.classList.contains(\"scroll-component\")\n )\n return;\n\n // As a hack, we call preventDefault in a row if the event was handled.\n // If the event wasn't handled already, we call onPress here.\n if (!event.isDefaultPrevented()) {\n onPress?.();\n }\n },\n [onPress]\n );\n\n const renderChild = useCallback(\n (index: number) => renderItem(data[index], index, { isDragging: false }),\n [data, renderItem]\n );\n\n // TODO: Do we still use section header properties anywhere?\n const defaultContextValue = useMemo(\n (): ListRowContextValue => ({\n colorScheme,\n marginType: \"none\",\n selectedPosition: \"only\",\n sortable,\n expandable,\n divider,\n pressEventName,\n variant,\n gap,\n sectionHeaderVariant: \"normal\",\n isSectionHeader: false,\n }),\n [colorScheme, sortable, expandable, divider, pressEventName, variant, gap]\n );\n\n const getItemContextValue = useCallback(\n (i: number): ListRowContextValue | undefined => {\n if (variant === \"bare\" || variant === \"normal\")\n return defaultContextValue;\n\n const current = renderChild(i);\n\n if (!isValidElement(current)) return;\n\n const prevChild = i - 1 >= 0 && renderChild(i - 1);\n const nextChild = i + 1 < data.length && renderChild(i + 1);\n\n const next: ReactElement | undefined = isValidElement(nextChild)\n ? nextChild\n : undefined;\n const prev: ReactElement | undefined = isValidElement(prevChild)\n ? prevChild\n : undefined;\n\n const hasMarginTop = !prev;\n const hasMarginBottom =\n !next ||\n current.props.isSectionHeader ||\n (next && next.props.isSectionHeader);\n\n let marginType: ListRowMarginType;\n\n if (hasMarginTop && hasMarginBottom) {\n marginType = \"vertical\";\n } else if (hasMarginBottom) {\n marginType = \"bottom\";\n } else if (hasMarginTop) {\n marginType = \"top\";\n } else {\n marginType = \"none\";\n }\n\n let selectedPosition: ListRowPosition = \"only\";\n\n if (current.props.selected) {\n const nextSelected =\n next && !next.props.isSectionHeader && next.props.selected;\n const prevSelected =\n prev && !prev.props.isSectionHeader && prev.props.selected;\n\n if (nextSelected && prevSelected) {\n selectedPosition = \"middle\";\n } else if (nextSelected && !prevSelected) {\n selectedPosition = \"first\";\n } else if (!nextSelected && prevSelected) {\n selectedPosition = \"last\";\n }\n }\n\n return {\n colorScheme,\n marginType,\n selectedPosition,\n sortable,\n expandable,\n divider,\n pressEventName,\n variant,\n sectionHeaderVariant,\n isSectionHeader: current.props.isSectionHeader,\n gap,\n };\n },\n [\n variant,\n defaultContextValue,\n renderChild,\n data.length,\n colorScheme,\n sortable,\n expandable,\n divider,\n pressEventName,\n sectionHeaderVariant,\n gap,\n ]\n );\n\n const draggingContextOverlayValue = useMemo(\n () => ({ indentation, isDragging: true }),\n [indentation]\n );\n\n const renderOverlay = useCallback(\n (index: number) => (\n <div style={{ opacity: 0.25 }}>\n <ListViewDraggingContext.Provider value={draggingContextOverlayValue}>\n {renderItem(data[index], index, { isDragging: true })}\n </ListViewDraggingContext.Provider>\n </div>\n ),\n [draggingContextOverlayValue, renderItem, data]\n );\n\n const renderWrappedChild = useCallback(\n (index: number) => {\n const contextValue = getItemContextValue(index);\n const current = renderChild(index);\n\n if (!contextValue || !isValidElement(current)) return null;\n\n return (\n <ListRowContext.Provider key={current.key} value={contextValue}>\n {current}\n </ListRowContext.Provider>\n );\n },\n [getItemContextValue, renderChild]\n );\n\n const ids = useMemo(() => data.map(keyExtractor), [keyExtractor, data]);\n\n const withSortable = (children: ReactNode) =>\n sortable ? (\n <Sortable.Root\n onMoveItem={onMoveItem}\n keys={ids}\n renderOverlay={renderOverlay}\n acceptsDrop={acceptsDrop}\n >\n {children}\n </Sortable.Root>\n ) : (\n children\n );\n\n const withScrollable = (\n children: (scrollElementRef: HTMLDivElement | null) => ReactNode\n ) => (scrollable ? <ScrollArea>{children}</ScrollArea> : children(null));\n\n const getItemHeight = useCallback(\n (index: number) => {\n const child = getItemContextValue(index);\n const margin = child?.marginType\n ? getPositionMargin(child.marginType)\n : { top: 0, bottom: 0 };\n const height =\n (child?.isSectionHeader && child.sectionHeaderVariant === \"label\"\n ? SECTION_HEADER_LABEL_HEIGHT\n : ROW_HEIGHT) +\n (variant === \"padded\" ? margin.top + margin.bottom : 0);\n return height;\n },\n [getItemContextValue, variant]\n );\n\n const getKey = useCallback(\n (index: number) => keyExtractor(data[index], index),\n [data, keyExtractor]\n );\n\n const draggingContextValue = useMemo(() => ({ indentation }), [indentation]);\n\n return (\n <ListViewDraggingContext.Provider value={draggingContextValue}>\n <RootContainer\n id={id}\n className={className}\n style={style}\n {...{\n [pressEventName]: handleClick,\n }}\n $gap={gap}\n $scrollable={scrollable}\n >\n {withScrollable((scrollElementRef: HTMLDivElement | null) =>\n withSortable(\n virtualized ? (\n <VirtualizedList<T>\n ref={forwardedRef}\n scrollElement={scrollElementRef!}\n items={data}\n size={virtualized}\n getItemHeight={getItemHeight}\n keyExtractor={getKey}\n renderItem={renderWrappedChild}\n />\n ) : (\n range(0, data.length).map(renderWrappedChild)\n )\n )\n )}\n </RootContainer>\n </ListViewDraggingContext.Provider>\n );\n});\n\nconst ListViewRoot = memo(ListViewRootInner) as typeof ListViewRootInner;\n\nconst ChildrenListViewInner = forwardRef(function ChildrenListViewInner(\n { children, ...rest }: ChildrenProps & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n const items: ReactElement[] = useMemo(\n () =>\n Children.toArray(children).flatMap((child) =>\n isValidElement(child) ? [child] : []\n ),\n [children]\n );\n\n return (\n <ListViewRoot\n ref={forwardedRef}\n {...rest}\n data={items}\n keyExtractor={useCallback(\n ({ key }: { key: string | number | null }, index: number) =>\n typeof key === \"string\" ? key : (key ?? index).toString(),\n []\n )}\n renderItem={useCallback((item: ReactElement) => item, [])}\n />\n );\n});\n\nconst ChildrenListView = memo(ChildrenListViewInner);\n\nconst SimpleListViewInner = forwardRef(function SimpleListViewInner<T = any>(\n props: (ChildrenProps | RenderProps<T>) & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n if (\"children\" in props) {\n return <ChildrenListView ref={forwardedRef} {...props} />;\n } else {\n return <ListViewRoot ref={forwardedRef} {...props} />;\n }\n});\n\n/**\n * A ListView can be created either with `children` or render props\n */\nconst SimpleListView = memo(SimpleListViewInner);\n\nexport namespace ListView {\n export const RowTitle = memo(ListViewRowTitle);\n export const EditableRowTitle = memo(ListViewEditableRowTitle);\n export const Row = memo(ListViewRow);\n export const Root = SimpleListView;\n export const RowContext = ListRowContext;\n export type ClickInfo = ListViewClickInfo;\n export type ItemInfo = ListViewItemInfo;\n export type RowProps<MenuItemType extends string = string> =\n ListViewRowProps<MenuItemType>;\n export type VirtualizedList = IVirtualizedList;\n export const DragIndicator = ListViewDragIndicatorElement;\n export const rowHeight = ROW_HEIGHT;\n export const sectionHeaderLabelHeight = SECTION_HEADER_LABEL_HEIGHT;\n export const calculateHeight = (\n items: number,\n headerCount: number,\n headerVariant: ListViewSectionHeaderVariant\n ) => {\n return (\n items * rowHeight +\n headerCount *\n (headerVariant === \"label\" ? sectionHeaderLabelHeight : rowHeight)\n );\n };\n export const normalizeDestinationIndex = normalizeListDestinationIndex;\n}\n","import { unique } from \"@noya-app/noya-utils\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\nfunction composeAllEventHandlers<E>(...handlers: ((e: E) => void)[]) {\n const [first, ...rest] = handlers;\n\n return rest.reduce(\n (result, handler) => composeEventHandlers(result, handler),\n first\n );\n}\n\nexport function mergeEventHandlers<\n H extends Record<string, (...args: any[]) => any>,\n>(...handlerMaps: H[]): H {\n const eventNames = unique(handlerMaps.map(Object.keys).flat() as (keyof H)[]);\n\n return Object.fromEntries(\n eventNames.map((eventName) => {\n const handlers = handlerMaps.flatMap((handlerMap) => {\n const value = handlerMap[eventName];\n return value ? [value] : [];\n });\n\n return [eventName, composeAllEventHandlers(...handlers)] as const;\n })\n ) as H;\n}\n","import {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragMoveEvent,\n DragOverlay,\n DragStartEvent,\n PointerSensor,\n Translate,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport React, {\n createContext,\n memo,\n ReactNode,\n Ref,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport type RelativeDropPosition = \"above\" | \"below\" | \"inside\";\n\nexport type DropValidator = (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n) => boolean;\n\nexport const normalizeListDestinationIndex = (\n index: number,\n position: \"above\" | \"below\"\n): number => {\n return position === \"above\" ? index : index + 1;\n};\n\nconst defaultAcceptsDrop: DropValidator = (\n sourceIndex,\n destinationIndex,\n position\n) => {\n if (position === \"inside\") return false;\n\n const normalized = normalizeListDestinationIndex(destinationIndex, position);\n\n if (sourceIndex === normalized || sourceIndex + 1 === normalized) {\n return false;\n }\n\n return true;\n};\n\nconst SortableItemContext = createContext<{\n keys: string[];\n position: Translate;\n acceptsDrop: DropValidator;\n setActivatorEvent: (event: PointerEvent) => void;\n axis: \"x\" | \"y\";\n}>({\n keys: [],\n position: { x: 0, y: 0 },\n acceptsDrop: defaultAcceptsDrop,\n setActivatorEvent: () => {},\n axis: \"y\",\n});\n\nfunction validateDropIndicator(\n acceptsDrop: DropValidator,\n keys: string[],\n activeId: string,\n overId: string,\n offsetStart: number,\n elementStart: number,\n elementSize: number\n): RelativeDropPosition | undefined {\n const activeIndex = keys.indexOf(activeId);\n const overIndex = keys.indexOf(overId);\n\n const acceptsDropInside = acceptsDrop(activeIndex, overIndex, \"inside\");\n\n // If we're in the center of the element, prefer dropping inside\n if (\n offsetStart >= elementStart + elementSize / 3 &&\n offsetStart <= elementStart + (elementSize * 2) / 3 &&\n acceptsDropInside\n )\n return \"inside\";\n\n // Are we over the top or bottom half of the element?\n const indicator =\n offsetStart < elementStart + elementSize / 2 ? \"above\" : \"below\";\n\n // Drop above or below if possible, falling back to inside\n return acceptsDrop(activeIndex, overIndex, indicator)\n ? indicator\n : acceptsDropInside\n ? \"inside\"\n : undefined;\n}\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\ntype UseSortableReturnType = ReturnType<typeof useSortable>;\n\ninterface ItemProps<T> {\n id: string;\n disabled?: boolean;\n children: (\n props: {\n ref: Ref<T>;\n relativeDropPosition?: RelativeDropPosition;\n [key: string]: any;\n } & UseSortableReturnType[\"attributes\"]\n ) => JSX.Element;\n}\n\nfunction SortableItem<T extends HTMLElement>({\n id,\n disabled,\n children,\n}: ItemProps<T>) {\n const { keys, position, acceptsDrop, setActivatorEvent, axis } =\n useContext(SortableItemContext);\n const sortable = useSortable({ id, disabled });\n\n const {\n active,\n activatorEvent,\n attributes,\n listeners,\n setNodeRef,\n isDragging,\n index,\n overIndex,\n over,\n } = sortable;\n\n if (activatorEvent) {\n setActivatorEvent(activatorEvent as PointerEvent);\n }\n\n const eventX = (activatorEvent as PointerEvent | null)?.clientX ?? 0;\n const eventY = (activatorEvent as PointerEvent | null)?.clientY ?? 0;\n const offsetLeft = eventX + position.x;\n const offsetTop = eventY + position.y;\n\n const ref = useCallback((node: T) => setNodeRef(node), [setNodeRef]);\n\n return children({\n ref,\n ...attributes,\n ...listeners,\n relativeDropPosition:\n index >= 0 && index === overIndex && !isDragging && active && over\n ? validateDropIndicator(\n acceptsDrop,\n keys,\n active.id,\n over.id,\n axis === \"x\" ? offsetLeft : offsetTop,\n axis === \"x\" ? over.rect.offsetLeft : over.rect.offsetTop,\n axis === \"x\" ? over.rect.width : over.rect.height\n )\n : undefined,\n });\n}\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\ninterface RootProps {\n keys: string[];\n children: ReactNode;\n renderOverlay?: (index: number) => ReactNode;\n onMoveItem?: (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => void;\n acceptsDrop?: DropValidator;\n axis?: \"x\" | \"y\";\n}\n\nfunction SortableRoot({\n keys,\n children,\n onMoveItem,\n renderOverlay,\n acceptsDrop = defaultAcceptsDrop,\n axis = \"y\",\n}: RootProps) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 4,\n },\n })\n );\n\n const [activeIndex, setActiveIndex] = useState<number | undefined>();\n const activatorEvent = useRef<PointerEvent | null>(null);\n\n const setActivatorEvent = useCallback((event: PointerEvent) => {\n activatorEvent.current = event;\n }, []);\n\n const [position, setPosition] = useState<Translate>({ x: 0, y: 0 });\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n setActiveIndex(keys.indexOf(event.active.id));\n },\n [keys]\n );\n\n const handleDragMove = useCallback((event: DragMoveEvent) => {\n setPosition({ ...event.delta });\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n setActiveIndex(undefined);\n\n if (over && active.id !== over.id) {\n const oldIndex = keys.indexOf(active.id);\n const newIndex = keys.indexOf(over.id);\n\n const eventX = activatorEvent.current?.clientX ?? 0;\n const eventY = activatorEvent.current?.clientY ?? 0;\n const offsetLeft = eventX + position.x;\n const offsetTop = eventY + position.y;\n\n const indicator = validateDropIndicator(\n acceptsDrop,\n keys,\n active.id,\n over.id,\n axis === \"x\" ? offsetLeft : offsetTop,\n axis === \"x\" ? over.rect.offsetLeft : over.rect.offsetTop,\n axis === \"x\" ? over.rect.width : over.rect.height\n );\n\n if (!indicator) return;\n\n onMoveItem?.(oldIndex, newIndex, indicator);\n }\n },\n [acceptsDrop, axis, keys, onMoveItem, position.x, position.y]\n );\n\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return (\n <SortableItemContext.Provider\n value={useMemo(\n () => ({\n keys,\n acceptsDrop,\n position,\n setActivatorEvent,\n axis,\n }),\n [acceptsDrop, axis, keys, position, setActivatorEvent]\n )}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={keys} strategy={verticalListSortingStrategy}>\n {children}\n </SortableContext>\n {mounted &&\n renderOverlay &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {activeIndex !== undefined &&\n activeIndex >= 0 &&\n renderOverlay(activeIndex)}\n </DragOverlay>,\n document.body\n )}\n </DndContext>\n </SortableItemContext.Provider>\n );\n}\n\nexport namespace Sortable {\n export const Item = memo(SortableItem);\n export const Root = memo(SortableRoot);\n}\n","import React, { ForwardedRef, forwardRef, ReactHTML, ReactNode } from \"react\";\nimport styled, { CSSProperties } from \"styled-components\";\nimport { Theme, ThemeColorName } from \"../theme\";\nimport { BreakpointCollection, mergeBreakpoints } from \"../utils/breakpoints\";\n\nconst elements: Record<keyof Theme[\"textStyles\"], keyof ReactHTML> = {\n title: \"h1\",\n subtitle: \"h1\",\n heading1: \"h1\",\n heading2: \"h2\",\n heading3: \"h3\",\n heading4: \"h4\",\n heading5: \"h5\",\n body: \"p\",\n small: \"span\",\n button: \"span\",\n code: \"code\",\n label: \"span\",\n};\n\ntype StyleProps = {\n flex?: CSSProperties[\"flex\"];\n padding?: CSSProperties[\"padding\"];\n background?: CSSProperties[\"background\"];\n borderRadius?: CSSProperties[\"borderRadius\"];\n textAlign?: CSSProperties[\"textAlign\"];\n fontWeight?: CSSProperties[\"fontWeight\"];\n fontStyle?: CSSProperties[\"fontStyle\"];\n fontSize?: CSSProperties[\"fontSize\"];\n lineHeight?: CSSProperties[\"lineHeight\"];\n fontFamily?: CSSProperties[\"fontFamily\"];\n wordBreak?: CSSProperties[\"wordBreak\"];\n whiteSpace?: CSSProperties[\"whiteSpace\"];\n height?: CSSProperties[\"height\"];\n width?: CSSProperties[\"width\"];\n minWidth?: CSSProperties[\"minWidth\"];\n maxWidth?: CSSProperties[\"maxWidth\"];\n opacity?: CSSProperties[\"opacity\"];\n position?: CSSProperties[\"position\"];\n overflow?: CSSProperties[\"overflow\"];\n textOverflow?: CSSProperties[\"textOverflow\"];\n textDecoration?: CSSProperties[\"textDecoration\"];\n display?: CSSProperties[\"display\"];\n top?: CSSProperties[\"top\"];\n right?: CSSProperties[\"right\"];\n bottom?: CSSProperties[\"bottom\"];\n left?: CSSProperties[\"left\"];\n userSelect?: CSSProperties[\"userSelect\"];\n cursor?: CSSProperties[\"cursor\"];\n};\n\nexport type TextBreakpointList = BreakpointCollection<StyleProps>;\n\ninterface Props extends StyleProps {\n as?: keyof ReactHTML;\n href?: string;\n className?: string;\n style?: React.CSSProperties;\n variant: keyof Theme[\"textStyles\"];\n breakpoints?: BreakpointCollection<StyleProps> | null | false;\n color?: ThemeColorName;\n children: ReactNode;\n onClick?: () => void;\n onDoubleClick?: () => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLSpanElement>) => void;\n tabIndex?: number;\n}\n\nconst StyledElement = styled.span<{\n $variant: keyof Theme[\"textStyles\"];\n $styleProps: StyleProps;\n $color: ThemeColorName;\n $breakpoints: BreakpointCollection<StyleProps> | null | false;\n}>(({ theme, $variant, $styleProps, $breakpoints, $color }) => ({\n ...(theme.textStyles as any)[$variant],\n color: $color ? theme.colors[$color] : undefined,\n ...$styleProps,\n ...mergeBreakpoints($breakpoints || []),\n}));\n\nexport const Text = forwardRef(function Text(\n {\n as,\n variant,\n breakpoints,\n children,\n className,\n color,\n href,\n tabIndex,\n onClick,\n onKeyDown,\n style,\n ...rest\n }: Props,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const element = as ?? elements[variant] ?? \"span\";\n\n return (\n <StyledElement\n ref={forwardedRef}\n as={element}\n className={className}\n style={style}\n tabIndex={tabIndex}\n $variant={variant}\n $breakpoints={breakpoints}\n $styleProps={rest}\n $color={color}\n onClick={onClick}\n onKeyDown={onKeyDown}\n {...((href && { href }) as any)}\n >\n {children}\n </StyledElement>\n );\n});\n\ntype PresetProps = Omit<Props, \"variant\">;\n\nexport const Heading1 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading1\" />\n )\n);\n\nexport const Heading2 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading2\" />\n )\n);\n\nexport const Heading3 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading3\" />\n )\n);\n\nexport const Heading4 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading4\" />\n )\n);\n\nexport const Heading5 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading5\" />\n )\n);\n\nexport const Body = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"body\" />\n )\n);\n\nexport const Small = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"small\" />\n )\n);\n\n// export const Label = forwardRef(\n// (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n// <Text ref={ref} {...props} variant=\"label\" />\n// ),\n// );\n\nexport const Italic = ({ children }: { children: ReactNode }) => (\n <span\n style={{\n fontStyle: \"italic\",\n }}\n >\n {children}\n </span>\n);\n","import {\n Divider,\n ScrollArea,\n Stack,\n useDesignSystemTheme,\n withSeparatorElements,\n} from \"@noya-app/noya-designsystem\";\nimport React, { forwardRef, memo } from \"react\";\n\nexport const InspectorContainer = memo(\n forwardRef(function InspectorContainer(\n {\n header,\n children,\n fallback,\n showDividers,\n id,\n className,\n style,\n }: {\n header?: React.ReactNode;\n children?: React.ReactNode;\n fallback?: React.ReactNode;\n showDividers?: boolean;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n ) {\n const theme = useDesignSystemTheme();\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n className={className}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n background: theme.colors.sidebar.background,\n ...style,\n }}\n >\n {header}\n {children ? (\n <ScrollArea>\n <Stack.V position=\"relative\">\n {showDividers\n ? withSeparatorElements(children, <Divider />)\n : children}\n </Stack.V>\n </ScrollArea>\n ) : fallback ? (\n <Stack.V position=\"relative\" height=\"100%\">\n {fallback}\n </Stack.V>\n ) : null}\n </div>\n );\n })\n);\n","import React, { memo, ReactNode } from \"react\";\nimport styled from \"styled-components\";\nimport { Spacer } from \"./Spacer\";\n\n/* ----------------------------------------------------------------------------\n * Label\n * ------------------------------------------------------------------------- */\n\nconst LabelLabel = styled.label<{ $selected?: boolean }>(\n ({ theme, $selected }) => ({\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n ...($selected && {\n color: theme.colors.text,\n }),\n fontSize: \"11px\",\n flex: \"0 0 auto\",\n minWidth: \"0\",\n letterSpacing: \"0.4px\",\n whiteSpace: \"pre\", // prevent breaking - may need to make this an option\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst LabelContainer = styled.span(({ theme }) => ({\n flex: \"0 0 auto\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n}));\n\ninterface LabelRootProps {\n label: ReactNode;\n children: ReactNode;\n}\n\nfunction LabelRoot({ label, children }: LabelRootProps) {\n return (\n <LabelContainer>\n {children}\n {label && (\n <>\n <Spacer.Vertical size={2} />\n <LabelLabel>{label}</LabelLabel>\n </>\n )}\n </LabelContainer>\n );\n}\n\nexport namespace Label {\n export const Label = memo(LabelLabel);\n export const Root = memo(LabelRoot);\n}\n","import * as kiwi from 'kiwi.js';\nimport React, {\n Children,\n createRef,\n Fragment,\n isValidElement,\n memo,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div(({ theme }) => ({\n display: 'flex',\n flex: '1',\n flexDirection: 'column',\n position: 'relative',\n}));\n\nconst Tools = styled.div(({ theme }) => ({\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n}));\n\nconst Labels = styled.div(({ theme }) => ({\n height: 'var(--height)',\n position: 'relative',\n overflow: 'hidden',\n userSelect: 'none',\n}));\n\ninterface ContainerProps {\n children: ReactNode;\n renderLabel: (provided: { id: string; index: number }) => ReactNode;\n}\n\nexport const LabeledElementView = memo(function LabeledElementView({\n children,\n renderLabel,\n}: ContainerProps) {\n const elementIds: string[] = Children.toArray(children)\n .flatMap((child) =>\n isValidElement(child) && child.type === Fragment\n ? (child.props.children as ReactNode[])\n : [child],\n )\n .map((child) =>\n isValidElement(child) && 'id' in child.props ? child.props.id : null,\n )\n .filter((id) => !!id);\n const serializedIds = elementIds.join(',');\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const refs = useMemo(() => {\n return Object.fromEntries(\n serializedIds.split(',').map((id) => [id, createRef<HTMLSpanElement>()]),\n );\n }, [serializedIds]);\n\n const labelElements = useMemo(() => {\n return serializedIds.split(',').map((id, index) => (\n <span\n key={id}\n ref={refs[id]}\n style={{ position: 'absolute', left: `var(--x-offset)` }}\n >\n {renderLabel({\n id,\n index,\n })}\n </span>\n ));\n }, [refs, serializedIds, renderLabel]);\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n\n const containerRect = containerRef.current.getBoundingClientRect();\n\n const solver = new kiwi.Solver();\n const variables: kiwi.Variable[] = [];\n const heights: number[] = [];\n\n Object.entries(refs).forEach(([id, ref], index, list) => {\n if (!ref.current) return;\n\n // console.log('id', id, ref, index);\n\n const targetElement = document.getElementById(id)!;\n const targetRect = targetElement.getBoundingClientRect();\n targetRect.x = targetElement.offsetLeft;\n const labelRect = ref.current.getBoundingClientRect();\n labelRect.x = ref.current.offsetLeft;\n\n // console.log(id, labelRect, ref.current.offsetLeft);\n\n heights.push(labelRect.height);\n\n const targetMidXValue = targetRect.x + targetRect.width / 2;\n\n const labelMidX = new kiwi.Variable();\n solver.addEditVariable(labelMidX, kiwi.Strength.weak);\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Eq,\n new kiwi.Expression(targetMidXValue),\n kiwi.Strength.strong,\n ),\n );\n\n if (index === 0) {\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Ge,\n new kiwi.Expression(labelRect.width / 2),\n kiwi.Strength.required,\n ),\n );\n }\n\n // if (index > 0) {\n // solver.addConstraint(\n // new kiwi.Constraint(\n // new kiwi.Expression(variables[index - 1]),\n // kiwi.Operator.Le,\n // new kiwi.Expression(labelRect.width / 2),\n // kiwi.Strength.required\n // )\n // );\n // }\n\n if (index === list.length - 1) {\n // console.log(\n // labelMidX.value(),\n // containerRect.width,\n // containerRect.width - labelRect.width / 2,\n // );\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Le,\n new kiwi.Expression(containerRect.width - labelRect.width / 2),\n kiwi.Strength.required,\n ),\n );\n }\n\n solver.suggestValue(labelMidX, labelRect.x + labelRect.width / 2);\n\n variables.push(labelMidX);\n });\n\n solver.updateVariables();\n\n Object.entries(refs).forEach(([id, ref], index) => {\n if (!ref.current) return;\n\n // console.log(id, variables[index].value());\n\n const labelRect = ref.current.getBoundingClientRect();\n\n ref.current.style.setProperty(\n '--x-offset',\n `${variables[index].value() - labelRect.width / 2}px`,\n );\n });\n\n containerRef.current.style.setProperty(\n '--height',\n `${Math.max(...heights)}px`,\n );\n }, [refs, labelElements]);\n\n return (\n <Container ref={containerRef}>\n <Tools>{children}</Tools>\n <Labels>{labelElements}</Labels>\n </Container>\n );\n});\n","import { clamp } from '@noya-app/noya-utils';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport React, { CSSProperties } from 'react';\nimport styled from 'styled-components';\n\ntype ProgressVariant = 'normal' | 'warning' | 'primary' | 'secondary';\n\nexport function Progress({\n value,\n width,\n height = 5,\n flex,\n variant = 'normal',\n}: {\n value: number;\n height?: CSSProperties['height'];\n width?: CSSProperties['width'];\n flex?: CSSProperties['flex'];\n variant?: ProgressVariant;\n}) {\n const clampedValue = clamp(value, 0, 100);\n\n return (\n <ProgressRoot value={clampedValue} style={{ width, flex, height }}>\n <ProgressIndicator\n variant={variant}\n style={{ transform: `translateX(-${100 - clampedValue}%)` }}\n />\n </ProgressRoot>\n );\n}\n\nconst ProgressRoot = styled(ProgressPrimitive.Root)(({ theme }) => ({\n position: 'relative',\n overflow: 'hidden',\n background: theme.colors.inputBackground,\n\n // Fix overflow clipping in Safari\n // https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0\n transform: 'translateZ(0)',\n}));\n\nconst ProgressIndicator = styled(ProgressPrimitive.Indicator)<{\n variant: ProgressVariant;\n}>(({ theme, variant }) => ({\n backgroundColor:\n variant === 'primary'\n ? theme.colors.primary\n : variant === 'secondary'\n ? theme.colors.secondary\n : variant === 'warning'\n ? theme.colors.warning\n : theme.colors.text,\n width: '100%',\n height: '100%',\n transition: 'transform 660ms cubic-bezier(0.65, 0, 0.35, 1)',\n}));\n","import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport React, {\n createContext,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype RadioGroupColorScheme = \"primary\" | \"secondary\";\n\nconst ignoredProps = new Set([\"colorScheme\"]);\n\nconst StyledRoot = styled(ToggleGroupPrimitive.Root).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n colorScheme?: RadioGroupColorScheme;\n}>(({ theme, colorScheme }) => ({\n appearance: \"none\",\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n theme.colors[colorScheme ?? \"primary\"]\n }`,\n },\n display: \"flex\",\n alignItems: \"stretch\",\n minHeight: \"27px\",\n padding: colorScheme === undefined ? \"2px\" : 0,\n}));\n\nconst StyledItem = styled(ToggleGroupPrimitive.Item).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n colorScheme?: RadioGroupColorScheme;\n}>(({ theme, colorScheme }) => ({\n ...theme.textStyles.small,\n position: \"relative\",\n flex: \"1 1 0\",\n appearance: \"none\",\n border: \"none\",\n background: \"none\",\n color: \"rgb(139, 139, 139)\",\n padding: 0,\n margin: 0,\n borderRadius: \"4px\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"middle\",\n '&[aria-checked=\"true\"]': {\n backgroundColor: colorScheme\n ? theme.colors[colorScheme]\n : theme.colors.radioGroup.background,\n color: colorScheme ? theme.colors.radioGroup.background : theme.colors.text,\n boxShadow: colorScheme ? undefined : `0 1px 1px rgba(0,0,0,0.1)`,\n },\n \"&:focus\": {\n outline: \"none\",\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n theme.colors[colorScheme ?? \"primary\"]\n }`,\n },\n}));\n\ninterface ItemProps {\n value: string;\n tooltip?: ReactNode;\n children: ReactNode;\n disabled?: boolean;\n}\n\nconst ToggleGroupItem = forwardRef(function ToggleGroupItem(\n { value, tooltip, children, disabled = false }: ItemProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const { colorScheme } = useContext(RadioGroupContext);\n\n const itemElement = (\n <StyledItem\n ref={forwardedRef}\n value={value}\n disabled={disabled}\n colorScheme={colorScheme}\n >\n {children}\n </StyledItem>\n );\n\n return tooltip ? (\n <Tooltip content={tooltip}>{itemElement}</Tooltip>\n ) : (\n itemElement\n );\n});\n\ntype RadioGroupContextValue = {\n colorScheme?: RadioGroupColorScheme;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue>({\n colorScheme: \"primary\",\n});\n\ninterface Props {\n id?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n colorScheme?: RadioGroupColorScheme;\n allowEmpty?: boolean;\n children: ReactNode;\n}\n\nfunction ToggleGroupRoot({\n id,\n value,\n onValueChange,\n colorScheme,\n allowEmpty,\n children,\n}: Props) {\n const contextValue = useMemo(() => ({ colorScheme }), [colorScheme]);\n\n const handleValueChange = useCallback(\n (value: string) => {\n if (!allowEmpty && !value) return;\n onValueChange?.(value);\n },\n [allowEmpty, onValueChange]\n );\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <StyledRoot\n id={id}\n type=\"single\"\n value={value}\n colorScheme={colorScheme}\n onValueChange={handleValueChange}\n >\n {children}\n </StyledRoot>\n </RadioGroupContext.Provider>\n );\n}\n\nexport namespace RadioGroup {\n export const Root = memo(ToggleGroupRoot);\n export const Item = memo(ToggleGroupItem);\n}\n","import { memoize } from \"@noya-app/noya-utils\";\nimport React, {\n createContext,\n CSSProperties,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport styled from \"styled-components\";\n\ntype SelectContextValue = {\n addListener: (value: string, listener: () => void) => void;\n removeListener: (value: string) => void;\n};\n\nconst SelectContext = createContext<SelectContextValue | undefined>(undefined);\n\ninterface SelectOptionProps<T extends string> {\n value: T;\n title?: string;\n onSelect?: () => void;\n}\n\nexport const SelectOption = memo(function SelectOption<T extends string>({\n value,\n title,\n onSelect,\n}: SelectOptionProps<T>) {\n const { addListener, removeListener } = useContext(SelectContext)!;\n\n useEffect(() => {\n if (!onSelect) return;\n\n addListener(value, onSelect);\n\n return () => removeListener(value);\n }, [addListener, onSelect, removeListener, value]);\n\n return <option value={value}>{title ?? value}</option>;\n});\n\nconst createChevronSVGString = memoize((color: string) =>\n `\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${color}'>\n <path d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'></path>\n </svg>\n`.replace(/\\n/g, \"\")\n);\n\nconst SelectContainer = styled.div<{ $flex: CSSProperties[\"flex\"] }>(\n ({ $flex }) => ({\n flex: $flex ?? \"1 1 0px\",\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n })\n);\n\nconst SelectElement = styled.select<{ $flex: CSSProperties[\"flex\"] }>(\n ({ theme, $flex }) => ({\n appearance: \"none\",\n ...theme.textStyles.small,\n color: theme.colors.text,\n lineHeight: \"19px\",\n width: \"0px\", // Reset intrinsic width\n flex: $flex ?? \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"6px\",\n paddingRight: \"23px\",\n background: [\n `calc(100% - 6px) / 15px url(\"data:image/svg+xml;utf8,${createChevronSVGString(\n theme.colors.icon\n )}\") no-repeat`,\n theme.colors.inputBackground,\n ].join(\",\"),\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n })\n);\n\nconst SelectLabel = styled.label(({ theme }) => ({\n ...theme.textStyles.label,\n color: theme.colors.textDisabled,\n lineHeight: \"19px\",\n position: \"absolute\",\n inset: \"0\",\n fontWeight: \"bold\",\n fontSize: \"60%\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"end\",\n paddingRight: \"24px\",\n}));\n\ntype ChildrenProps<T> =\n | {\n children: ReactNode;\n }\n | {\n options: readonly T[];\n getTitle?: (option: T, index: number) => string;\n onChange: (value: T) => void;\n };\n\ntype Props<T extends string> = ChildrenProps<T> & {\n id: string;\n flex?: CSSProperties[\"flex\"];\n value: T;\n label?: ReactNode;\n};\n\nexport const Select = memo(function Select<T extends string>({\n id,\n flex,\n value,\n label,\n ...rest\n}: Props<T>) {\n const options = \"options\" in rest ? rest.options : undefined;\n const getTitle = \"options\" in rest ? rest.getTitle : undefined;\n const onChange = \"options\" in rest ? rest.onChange : undefined;\n const children = \"options\" in rest ? undefined : rest.children;\n\n const optionElements = useMemo(\n () =>\n options\n ? options.map((option, index) => (\n <SelectOption\n key={option}\n value={option}\n title={getTitle?.(option, index)}\n onSelect={() => onChange?.(option)}\n />\n ))\n : children,\n [children, getTitle, onChange, options]\n );\n\n const listeners = useRef<Map<string, () => void>>(new Map());\n\n const contextValue: SelectContextValue = useMemo(\n () => ({\n addListener: (value, listener) => listeners.current.set(value, listener),\n removeListener: (value) => listeners.current.delete(value),\n }),\n []\n );\n\n return (\n <SelectContext.Provider value={contextValue}>\n <SelectContainer $flex={flex}>\n <SelectElement\n id={id}\n $flex={flex}\n value={value}\n onChange={useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n listeners.current.get(event.target.value)?.(),\n [listeners]\n )}\n onPointerDown={(event) => event.stopPropagation()}\n >\n {optionElements}\n </SelectElement>\n </SelectContainer>\n {label && <SelectLabel htmlFor={id}>{label}</SelectLabel>}\n </SelectContext.Provider>\n );\n});\n","import { DropdownChevronIcon } from \"@noya-app/noya-icons\";\nimport * as Select from \"@radix-ui/react-select\";\nimport React, { CSSProperties, memo } from \"react\";\nimport { styled } from \"styled-components\";\nimport { Button } from \"./Button\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport { MenuItem, RegularMenuItem, styles } from \"./internal/Menu\";\n\ntype Props<T extends string> = {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n menuItems: MenuItem<T>[];\n value: T;\n onSelect?: (value: T) => void;\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\nconst readOnlyStyle: CSSProperties = {\n justifyContent: \"flex-start\",\n textAlign: \"left\",\n};\n\nconst flexStyle: CSSProperties = {\n flex: 1,\n};\n\nexport const SelectMenu = memo(function SelectMenu<T extends string = string>({\n id,\n style,\n className,\n menuItems,\n value,\n onSelect,\n placeholder,\n disabled,\n readOnly,\n}: Props<T>) {\n const selectedItem = menuItems.find(\n (item): item is RegularMenuItem<T> =>\n typeof item !== \"string\" && item.value === value\n );\n const icon = selectedItem?.icon;\n\n if (readOnly) {\n return (\n <Button\n id={id}\n style={style}\n contentStyle={readOnlyStyle}\n className={className}\n disabled={disabled}\n >\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal inline size={6} />\n </>\n )}\n <span style={flexStyle}>{selectedItem?.title ?? value}</span>\n </Button>\n );\n }\n\n return (\n <Select.Root value={value} onValueChange={onSelect}>\n <Select.SelectTrigger asChild>\n <Button id={id} style={style} className={className} disabled={disabled}>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal inline size={6} />\n </>\n )}\n <span style={flexStyle}>\n <Select.Value placeholder={placeholder} />\n </span>\n <Spacer.Horizontal inline size={6} />\n <DropdownChevronIcon />\n </Button>\n </Select.SelectTrigger>\n <Select.Portal>\n <SelectContent>\n <SelectViewport>\n {menuItems.map((menuItem) => {\n if (typeof menuItem === \"string\") {\n return <StyledSeparator />;\n }\n\n const value = menuItem.value ?? \"\";\n\n return (\n <SelectItem key={value} value={value} icon={menuItem.icon}>\n {menuItem.title ?? value}\n </SelectItem>\n );\n })}\n </SelectViewport>\n </SelectContent>\n </Select.Portal>\n </Select.Root>\n );\n});\n\nconst SelectContent = styled(Select.Content)(styles.contentStyle);\n\nconst SelectViewport = styled(Select.Viewport)({});\n\nconst SelectItem = React.forwardRef(\n (\n {\n children,\n icon,\n ...props\n }: Select.SelectItemProps & { icon?: React.ReactNode },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n ) => {\n return (\n <StyledItem {...props} ref={forwardedRef}>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n <Select.ItemText>{children}</Select.ItemText>\n </StyledItem>\n );\n }\n);\n\nconst StyledItem = styled(Select.Item)(styles.itemStyle);\nconst StyledSeparator = styled(Select.Separator)(styles.separatorStyle);\n","import * as RadixSlider from '@radix-ui/react-slider';\nimport React, { useCallback, useMemo } from 'react';\nimport styled from 'styled-components';\n\nconst StyledSlider = styled(RadixSlider.Root)({\n flex: '1',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n userSelect: 'none',\n touchAction: 'none',\n height: '16px',\n});\n\nconst StyledTrack = styled(RadixSlider.Track)(({ theme }) => ({\n backgroundColor: theme.colors.divider,\n position: 'relative',\n flexGrow: 1,\n height: '2px',\n}));\n\nconst StyledRange = styled(RadixSlider.Range)(({ theme }) => ({\n position: 'absolute',\n backgroundColor: theme.colors.primary,\n borderRadius: '9999px',\n height: '100%',\n}));\n\nconst StyledThumb = styled(RadixSlider.Thumb)(({ theme }) => ({\n display: 'block',\n width: '12px',\n height: '12px',\n backgroundColor: theme.colors.slider.background,\n border: `1px solid ${theme.colors.slider.border}`,\n borderRadius: '20px',\n ':focus': {\n outline: 'none',\n },\n}));\n\ninterface Props {\n id?: string;\n value: number;\n onValueChange: (value: number) => void;\n min: number;\n max: number;\n}\n\nexport const Slider = function Slider({\n id,\n value,\n onValueChange,\n min,\n max,\n}: Props) {\n const arrayValue = useMemo(\n () => [Math.min(Math.max(value, min), max)],\n [value, min, max],\n );\n\n const handleValueChange = useCallback(\n (arrayValue: number[]) => {\n onValueChange(arrayValue[0]);\n },\n [onValueChange],\n );\n\n return (\n <StyledSlider\n min={min}\n max={max}\n id={id}\n value={arrayValue}\n onValueChange={handleValueChange}\n >\n <StyledTrack>\n <StyledRange />\n </StyledTrack>\n <StyledThumb />\n </StyledSlider>\n );\n};\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\ntype SwitchColorScheme = \"normal\" | \"primary\" | \"secondary\";\n\nconst SwitchRoot = styled(SwitchPrimitive.Root)<{\n $colorScheme: SwitchColorScheme;\n}>(({ theme, $colorScheme }) => ({\n all: \"unset\",\n width: 32,\n height: 19,\n backgroundColor: theme.colors.activeBackground,\n borderRadius: \"9999px\",\n position: \"relative\",\n WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\",\n cursor: \"pointer\",\n \"&:focus\": {\n outline: `2px solid ${theme.colors.primary}`,\n outlineOffset: \"1px\",\n },\n '&[data-state=\"checked\"]': {\n backgroundColor:\n $colorScheme === \"primary\"\n ? theme.colors.primary\n : $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : undefined,\n },\n}));\n\nconst SwitchThumb = styled(SwitchPrimitive.Thumb)({\n display: \"block\",\n width: 15,\n height: 15,\n backgroundColor: \"white\",\n borderRadius: \"9999px\",\n transition: \"transform 100ms\",\n transform: \"translateX(2px)\",\n willChange: \"transform\",\n '&[data-state=\"checked\"]': { transform: \"translateX(15px)\" },\n});\n\ninterface Props {\n value: boolean;\n onChange: (value: boolean) => void;\n colorScheme?: SwitchColorScheme;\n disabled?: boolean;\n}\n\nexport const Switch = function Switch({\n value,\n onChange,\n colorScheme = \"normal\",\n disabled,\n}: Props) {\n return (\n <SwitchRoot\n $colorScheme={colorScheme}\n checked={value}\n disabled={disabled}\n onCheckedChange={(newValue) => {\n onChange(newValue);\n }}\n >\n <SwitchThumb />\n </SwitchRoot>\n );\n};\n","import { assignRef } from \"@noya-app/react-utils\";\nimport React, { forwardRef, memo, useCallback, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nconst TextAreaElement = styled.textarea(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.text,\n background: theme.colors.inputBackground,\n width: \"0px\",\n flex: \"1 1 auto\",\n padding: \"4px 6px\",\n border: \"none\",\n outline: \"none\",\n height: 100,\n borderRadius: \"4px\",\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n // readonly\n \"&:read-only\": {\n color: theme.colors.textDisabled,\n },\n resize: \"none\",\n}));\n\nexport const useAutoResize = (value: string) => {\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n if (!textareaRef.current) return;\n\n textareaRef.current.style.height = \"auto\"; // Reset the height\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }, [value]);\n\n return textareaRef;\n};\n\nexport const AutoResizingTextArea = memo(\n forwardRef(function AutoResizingTextArea(\n {\n value,\n onChangeText,\n ...rest\n }: Omit<\n React.ComponentProps<typeof TextAreaElement>,\n \"onChange\" | \"value\"\n > & {\n onChangeText: (value: string) => void;\n value?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLTextAreaElement>\n ) {\n const ref = useAutoResize(value || rest.placeholder || \"\");\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChangeText(event.target.value),\n [onChangeText]\n );\n\n const handleRef = useCallback(\n (value: HTMLTextAreaElement | null) => {\n ref.current = value;\n assignRef(forwardedRef, value);\n },\n [ref, forwardedRef]\n );\n\n return (\n <TextAreaElement\n ref={handleRef}\n {...rest}\n onChange={handleChange}\n value={value}\n />\n );\n })\n);\n","import React, {\n ForwardedRef,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n} from \"react\";\nimport { IconButton } from \"./IconButton\";\nimport { IconName, renderIcon } from \"./Icons\";\nimport { ListView } from \"./ListView\";\nimport { Spacer } from \"./Spacer\";\n\n/* ----------------------------------------------------------------------------\n * Row\n * ------------------------------------------------------------------------- */\n\ntype TreeRowBaseProps = {\n icon?: Exclude<ReactNode, string> | IconName;\n expanded?: boolean;\n onClickChevron?: ({ altKey }: { altKey: boolean }) => void;\n};\n\ntype TreeViewRowProps<MenuItemType extends string> =\n ListView.RowProps<MenuItemType> & TreeRowBaseProps;\n\nconst TreeRow = forwardRef(function TreeRow<MenuItemType extends string>(\n {\n icon,\n expanded,\n onClickChevron,\n children,\n ...rest\n }: TreeViewRowProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLLIElement>\n) {\n const { expandable } = useContext(ListView.RowContext);\n\n const handleClickChevron = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n onClickChevron?.({ altKey: event.altKey });\n },\n [onClickChevron]\n );\n\n return (\n <ListView.Row ref={forwardedRef} {...rest}>\n {expandable && (\n <>\n {expanded === undefined ? (\n <Spacer.Horizontal size={19} />\n ) : (\n <IconButton\n iconName={expanded ? \"ChevronDownIcon2\" : \"ChevronRightIcon2\"}\n onClick={handleClickChevron}\n selected={rest.selected}\n />\n )}\n <Spacer.Horizontal size={6} />\n </>\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={10} />\n </>\n )}\n {children}\n </ListView.Row>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nexport namespace TreeView {\n export const Root = ListView.Root;\n export const RowTitle = ListView.RowTitle;\n export const EditableRowTitle = ListView.EditableRowTitle;\n export const Row = memo(TreeRow);\n export type ClickInfo = ListView.ClickInfo;\n export type RowProps<MenuItemType extends string> =\n TreeViewRowProps<MenuItemType>;\n}\n","import { useDesignSystemTheme } from \"@noya-app/noya-designsystem\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport React, { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport {\n ImperativePanelGroupHandle,\n ImperativePanelHandle,\n Panel,\n PanelGroup,\n PanelResizeHandle,\n} from \"react-resizable-panels\";\nimport {\n CONTENT_AREA_ID,\n EDITOR_PANEL_GROUP_ID,\n LEFT_SIDEBAR_ID,\n PanelLayoutState,\n RIGHT_SIDEBAR_ID,\n usePreservePanelSize,\n} from \"../hooks/usePreservePanelSize\";\nimport { useWindowSize } from \"../hooks/useWindowSize\";\n\ninterface Props {\n autoSavePrefix?: string;\n leftSidebarContent?: React.ReactNode;\n children?: React.ReactNode;\n rightSidebarContent?: React.ReactNode;\n hasRightSidebar?: boolean;\n hasLeftSidebar?: boolean;\n onChangeLayoutState?: (layoutState: PanelLayoutState) => void;\n leftSidebarCanResize?: boolean;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n\n /**\n * Accepts a number (px) or % string (e.g. \"50%\").\n * Use % to avoid flicker server-rendering.\n */\n leftSidebarInitialSize?: number | string;\n leftSidebarMinSize?: number | string;\n\n /**\n * Accepts a number (px) or % string (e.g. \"50%\").\n * Use % to avoid flicker server-rendering.\n */\n rightSidebarInitialSize?: number | string;\n rightSidebarMinSize?: number | string;\n}\n\nexport type IWorkspaceLayout = {\n setLeftSidebarExpanded: (expanded: boolean) => void;\n setRightSidebarExpanded: (expanded: boolean) => void;\n toggleAllSidebars: () => void;\n toggleLeftSidebar: () => void;\n toggleRightSidebar: () => void;\n};\n\nexport const WorkspaceLayout = forwardRef(function WorkspaceLayout(\n {\n autoSavePrefix,\n leftSidebarContent: leftPanelContent,\n children: centerPanelContent,\n rightSidebarContent: rightPanelContent,\n hasLeftSidebar = !!leftPanelContent,\n hasRightSidebar = !!rightPanelContent,\n onChangeLayoutState,\n leftSidebarInitialSize = 280,\n rightSidebarInitialSize = 400,\n leftSidebarMinSize,\n rightSidebarMinSize,\n leftSidebarCanResize = false,\n id,\n className,\n style,\n }: Props,\n forwardedRef: React.ForwardedRef<IWorkspaceLayout>\n) {\n const windowSize = useWindowSize();\n function getPercentage(size: number | string) {\n return typeof size === \"string\"\n ? parseFloat(size)\n : (size / windowSize.width) * 100;\n }\n const leftSidebarPercentage = getPercentage(leftSidebarInitialSize);\n const rightSidebarPercentage = getPercentage(rightSidebarInitialSize);\n const leftSidebarMinPercentage =\n leftSidebarMinSize !== undefined\n ? getPercentage(leftSidebarMinSize)\n : undefined;\n const rightSidebarMinPercentage =\n rightSidebarMinSize !== undefined\n ? getPercentage(rightSidebarMinSize)\n : undefined;\n\n const panelGroupRef = useRef<ImperativePanelGroupHandle>(null);\n const leftSidebarRef = useRef<ImperativePanelHandle>(null);\n const rightSidebarRef = useRef<ImperativePanelHandle>(null);\n\n usePreservePanelSize(panelGroupRef, onChangeLayoutState);\n\n const theme = useDesignSystemTheme();\n\n useImperativeHandle(forwardedRef, () => ({\n setLeftSidebarExpanded: (expanded: boolean) => {\n if (expanded) {\n leftSidebarRef.current?.expand();\n } else {\n leftSidebarRef.current?.collapse();\n }\n },\n setRightSidebarExpanded: (expanded: boolean) => {\n if (expanded) {\n rightSidebarRef.current?.expand();\n } else {\n rightSidebarRef.current?.collapse();\n }\n },\n toggleAllSidebars: () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded || isRightSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n rightSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n rightSidebarRef.current?.expand();\n }\n },\n toggleLeftSidebar: () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n }\n },\n toggleRightSidebar: () => {\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isRightSidebarExpanded) {\n rightSidebarRef.current?.collapse();\n } else {\n rightSidebarRef.current?.expand();\n }\n },\n }));\n\n useKeyboardShortcuts({\n \"Mod-.\": () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded || isRightSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n rightSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n rightSidebarRef.current?.expand();\n }\n },\n });\n\n const centerPanelPercentage =\n 100 -\n (leftPanelContent ? leftSidebarPercentage : 0) -\n (rightPanelContent ? rightSidebarPercentage : 0);\n\n return (\n <div\n id={id}\n className={className}\n style={{\n backgroundColor: theme.colors.canvas.background,\n display: \"flex\",\n flexDirection: \"row\",\n ...style,\n }}\n >\n <PanelGroup\n ref={panelGroupRef}\n id={EDITOR_PANEL_GROUP_ID}\n direction=\"horizontal\"\n autoSaveId={\n autoSavePrefix\n ? `${autoSavePrefix}--${EDITOR_PANEL_GROUP_ID}`\n : undefined\n }\n style={{ flex: \"1\" }}\n >\n {hasLeftSidebar && (\n <>\n <Panel\n id={LEFT_SIDEBAR_ID}\n order={1}\n ref={leftSidebarRef}\n defaultSize={leftSidebarPercentage}\n minSize={leftSidebarMinPercentage ?? leftSidebarPercentage}\n {...(!leftSidebarCanResize && { maxSize: leftSidebarPercentage })}\n collapsible\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {leftPanelContent}\n </Panel>\n <PanelResizeHandle\n style={{\n cursor: \"col-resize\",\n width: \"1px\",\n height: \"100%\",\n backgroundColor: theme.colors.divider,\n }}\n />\n </>\n )}\n <Panel\n id={CONTENT_AREA_ID}\n order={2}\n defaultSize={centerPanelPercentage}\n minSize={10}\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {centerPanelContent}\n </Panel>\n {hasRightSidebar && (\n <>\n <PanelResizeHandle\n style={{\n cursor: \"col-resize\",\n width: \"1px\",\n height: \"100%\",\n backgroundColor: theme.colors.divider,\n }}\n />\n <Panel\n id={RIGHT_SIDEBAR_ID}\n order={3}\n ref={rightSidebarRef}\n minSize={rightSidebarMinPercentage ?? rightSidebarPercentage}\n defaultSize={rightSidebarPercentage}\n collapsible\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {rightPanelContent}\n </Panel>\n </>\n )}\n </PanelGroup>\n </div>\n );\n});\n","import React, { useLayoutEffect, useRef } from \"react\";\nimport { ImperativePanelGroupHandle } from \"react-resizable-panels\";\nimport { useWindowSize } from \"./useWindowSize\";\n\nexport const EDITOR_PANEL_GROUP_ID = \"editor-panel-group\";\nexport const LEFT_SIDEBAR_ID = \"editor-left-sidebar\";\nexport const RIGHT_SIDEBAR_ID = \"editor-right-sidebar\";\nexport const CONTENT_AREA_ID = \"editor-content-area\";\n\nexport type PanelLayoutState = {\n leftSidebarCollapsed: boolean;\n rightSidebarCollapsed: boolean;\n};\n\nexport function usePreservePanelSize(\n panelGroupRef: React.RefObject<ImperativePanelGroupHandle | null>,\n setPanelLayoutState?: (state: PanelLayoutState) => void\n) {\n const windowSize = useWindowSize();\n const layoutRef = useRef<\n { windowWidth: number; panelPercentages: number[] } | undefined\n >();\n\n useLayoutEffect(() => {\n const panelGroup = document.querySelector(\n `[data-panel-group-id=\"${EDITOR_PANEL_GROUP_ID}\"]`\n ) as HTMLElement;\n\n function observePanels() {\n const panels = [\n ...panelGroup.querySelectorAll<HTMLElement>(\"[data-panel]\"),\n ];\n\n const panelObserver = new ResizeObserver(() => {\n const layout = {\n windowWidth: panelGroup.offsetWidth,\n panelPercentages: panelGroupRef.current?.getLayout() ?? [],\n };\n layoutRef.current = layout;\n\n const leftSidebar = panels.find(\n (panel) => panel.id === LEFT_SIDEBAR_ID\n );\n const rightSidebar = panels.find(\n (panel) => panel.id === RIGHT_SIDEBAR_ID\n );\n\n setPanelLayoutState?.({\n leftSidebarCollapsed: leftSidebar?.offsetWidth === 0,\n rightSidebarCollapsed: rightSidebar?.offsetWidth === 0,\n });\n });\n\n panels.forEach((panel) => panelObserver.observe(panel));\n\n return () => {\n panelObserver.disconnect();\n };\n }\n\n let disconnectPanelObserver = observePanels();\n\n const panelGroupObserver = new MutationObserver(() => {\n disconnectPanelObserver();\n disconnectPanelObserver = observePanels();\n });\n\n panelGroupObserver.observe(panelGroup, {\n childList: true,\n });\n\n return () => {\n disconnectPanelObserver();\n panelGroupObserver.disconnect();\n };\n }, [panelGroupRef, setPanelLayoutState]);\n\n useLayoutEffect(() => {\n if (!layoutRef.current) return;\n\n // Preserve the pixel values of the left and right sidebar when the window is resized.\n // To do this we convert the percentage values to pixel values based on the old window width,\n // then convert the pixel values to percentage values based on the new window width.\n const {\n windowWidth: oldWindowWidth,\n panelPercentages: oldPanelPercentages,\n } = layoutRef.current;\n\n // Check the types of the values in the array\n if (\n oldPanelPercentages.some(\n (value) => typeof value !== \"number\" || isNaN(value)\n ) ||\n oldWindowWidth === 0\n ) {\n return;\n }\n\n const currentLayout = panelGroupRef.current?.getLayout();\n\n // Ensure we have the same number of panels\n if (!currentLayout || currentLayout.length !== oldPanelPercentages.length) {\n return;\n }\n\n if (currentLayout.length === 3) {\n const leftSidebarWidth = (oldPanelPercentages[0] / 100) * oldWindowWidth;\n const rightSidebarWidth = (oldPanelPercentages[2] / 100) * oldWindowWidth;\n\n const newLeftSidebarPercentage =\n (leftSidebarWidth / windowSize.width) * 100;\n const newRightSidebarPercentage =\n (rightSidebarWidth / windowSize.width) * 100;\n\n const newLayout = [\n newLeftSidebarPercentage,\n 100 - newLeftSidebarPercentage - newRightSidebarPercentage,\n newRightSidebarPercentage,\n ];\n\n try {\n panelGroupRef.current?.setLayout(newLayout);\n } catch (e) {\n console.error(e);\n console.info(\"snapshot on error\", {\n oldWindowWidth,\n oldPanelPercentages,\n newLayout,\n currentLayout,\n });\n }\n } else if (currentLayout.length === 2) {\n const leftSidebarWidth = (oldPanelPercentages[0] / 100) * oldWindowWidth;\n\n const newLeftSidebarPercentage =\n (leftSidebarWidth / windowSize.width) * 100;\n\n const newLayout = [\n newLeftSidebarPercentage,\n 100 - newLeftSidebarPercentage,\n ];\n\n try {\n panelGroupRef.current?.setLayout(newLayout);\n } catch (e) {\n console.error(e);\n console.info(\"snapshot on error\", {\n oldWindowWidth,\n oldPanelPercentages,\n newLayout,\n currentLayout,\n });\n }\n }\n }, [panelGroupRef, windowSize.width]);\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useWindowSize() {\n const [size, setSize] = useState(\n typeof window === \"undefined\"\n ? { width: 0, height: 0 }\n : {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n );\n\n useEffect(() => {\n const handleResize = () =>\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return size;\n}\n","import { useDesignSystemConfiguration } from '../contexts/DesignSystemConfiguration';\n\nexport function usePlatform() {\n return useDesignSystemConfiguration().platform;\n}\n\n/**\n * Either ctrl or meta, depending on the platform\n */\nexport function usePlatformModKey(): 'ctrlKey' | 'metaKey' {\n const platform = useDesignSystemConfiguration().platform;\n return platform === 'mac' ? 'metaKey' : 'ctrlKey';\n}\n","import {\n MenuItem,\n RegularMenuItem,\n SEPARATOR_ITEM,\n} from '../components/internal/Menu';\n\nexport type Optional<T> = T | false | null | undefined;\n\nfunction withSeparators<T>(elements: T[], separator: T) {\n const result: T[] = [];\n\n for (let i = 0; i < elements.length; i++) {\n result.push(elements[i]);\n\n if (i !== elements.length - 1) {\n result.push(separator);\n }\n }\n\n return result;\n}\n\nexport type MenuConfig<T extends string> = Optional<\n Optional<RegularMenuItem<T>>[]\n>[];\n\nexport function createSectionedMenu<T extends string>(\n ...sections: MenuConfig<T>\n): MenuItem<T>[] {\n const nonEmptySections = sections\n .flatMap((section) => (section ? [section] : []))\n .map((section) => section.flatMap((item) => (item ? [item] : [])))\n .filter((section) => section.length > 0);\n\n return withSeparators<MenuItem<T>[]>(nonEmptySections, [\n SEPARATOR_ITEM,\n ]).flat();\n}\n","import { Sketch } from '@noya-app/noya-file-format';\n\nexport const SUPPORTED_IMAGE_UPLOAD_TYPES = [\n 'image/png' as const,\n 'image/jpeg' as const,\n 'image/webp' as const,\n 'application/pdf' as const,\n 'image/svg+xml' as const,\n];\n\nexport const SUPPORTED_CANVAS_UPLOAD_TYPES = [\n ...SUPPORTED_IMAGE_UPLOAD_TYPES,\n '' as const,\n];\n\nexport type SupportedImageUploadType =\n (typeof SUPPORTED_IMAGE_UPLOAD_TYPES)[number];\n\nexport type SupportedCanvasUploadType =\n (typeof SUPPORTED_CANVAS_UPLOAD_TYPES)[number];\n\nexport type SketchPattern = {\n // This _class doesn't exist in Sketch, but it's convenient in `switch`\n // statements to be able to reference _class.\n _class: 'pattern';\n image?: Sketch.FileRef | Sketch.DataRef;\n patternFillType: Sketch.PatternFillType;\n patternTileScale: number;\n};\n","import { range } from \"@noya-app/noya-utils\";\nimport React, { ReactNode, memo, useCallback, useMemo } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\nimport { Button } from \"./Button\";\nimport { IconButton } from \"./IconButton\";\nimport * as InspectorPrimitives from \"./InspectorPrimitives\";\nimport { ListView } from \"./ListView\";\nimport { RelativeDropPosition, Sortable } from \"./Sortable\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\n\nconst ElementRow = styled.div({\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n});\n\nconst ItemContainer = styled.div({\n position: \"relative\",\n});\n\nexport interface ArrayControllerProps<Item> {\n id: string;\n items: Item[];\n title: ReactNode;\n sortable?: boolean;\n reversed?: boolean;\n expanded?: boolean;\n getKey?: (item: Item) => string;\n onMoveItem?: (sourceIndex: number, destinationIndex: number) => void;\n onClickPlus?: () => void;\n onClickTrash?: () => void;\n onClickExpand?: () => void;\n renderItem: (props: { item: Item; index: number }) => ReactNode;\n renderExpandedContent?: () => ReactNode;\n padding?: number;\n}\n\nexport const ArrayController = memo(function ArrayController<Item>({\n id,\n items,\n title,\n sortable = false,\n reversed = true,\n expanded = false,\n getKey,\n onMoveItem,\n onClickPlus,\n onClickTrash,\n onClickExpand,\n renderItem,\n renderExpandedContent,\n padding = 10,\n}: ArrayControllerProps<Item>) {\n const iconColor = useTheme().colors.icon;\n const primaryLightColor = useTheme().colors.primaryLight;\n\n const keys = useMemo(\n () => items.map((item, index) => getKey?.(item) ?? index.toString()),\n [getKey, items]\n );\n\n const indexes = reversed\n ? range(0, items.length).reverse()\n : range(0, items.length);\n\n const handleMoveItem = useCallback(\n (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => {\n if (reversed) {\n if (position === \"above\") {\n position = \"below\";\n } else if (position === \"below\") {\n position = \"above\";\n }\n }\n\n onMoveItem?.(\n sourceIndex,\n position === \"below\" ? destinationIndex + 1 : destinationIndex\n );\n },\n [onMoveItem, reversed]\n );\n\n const renderRow = (index: number) => {\n return (\n <ElementRow key={keys[index]}>\n {renderItem({ item: items[index], index: index })}\n </ElementRow>\n );\n };\n\n return (\n <InspectorPrimitives.Section id={id} $padding={padding} $gap=\"2px\">\n <InspectorPrimitives.SectionHeader>\n <Button variant=\"none\" onClick={onClickPlus}>\n <InspectorPrimitives.Title>{title}</InspectorPrimitives.Title>\n </Button>\n <Spacer.Horizontal />\n {withSeparatorElements(\n [\n onClickTrash && (\n <IconButton\n id={`${id}-trash`}\n iconName=\"TrashIcon\"\n color={iconColor}\n onClick={onClickTrash}\n />\n ),\n onClickExpand && (\n <IconButton\n id={`${id}-gear`}\n iconName=\"GearIcon\"\n color={expanded ? primaryLightColor : iconColor}\n onClick={onClickExpand}\n />\n ),\n onClickPlus && (\n <IconButton\n id={`${id}-add`}\n iconName=\"PlusIcon\"\n color={iconColor}\n onClick={onClickPlus}\n />\n ),\n ],\n <Spacer.Horizontal size={8} />\n )}\n </InspectorPrimitives.SectionHeader>\n <Stack.V gap=\"4px\">\n {sortable ? (\n <Sortable.Root\n keys={keys}\n renderOverlay={renderRow}\n onMoveItem={handleMoveItem}\n >\n {indexes.map((index) => (\n <Sortable.Item<HTMLDivElement> id={keys[index]} key={keys[index]}>\n {({ relativeDropPosition, ...sortableProps }) => (\n <ItemContainer {...sortableProps}>\n {renderRow(index)}\n {relativeDropPosition && (\n <ListView.DragIndicator\n $gap={0}\n $colorScheme=\"primary\"\n $relativeDropPosition={relativeDropPosition}\n $offsetLeft={0}\n />\n )}\n </ItemContainer>\n )}\n </Sortable.Item>\n ))}\n </Sortable.Root>\n ) : (\n indexes.map(renderRow)\n )}\n </Stack.V>\n {expanded && renderExpandedContent?.()}\n </InspectorPrimitives.Section>\n );\n});\n","import React, { CSSProperties, memo, ReactNode } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport { Spacer } from \"./Spacer\";\n\nexport const Section = styled.div<{\n $padding?: CSSProperties[\"padding\"];\n $gap?: CSSProperties[\"gap\"];\n}>(({ theme, $padding = \"10px\", $gap }) => ({\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: $padding,\n gap: $gap,\n}));\n\nexport const SectionHeader = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n}));\n\nexport const Title = styled.div<{\n $textStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n}>(({ theme, $textStyle }) => ({\n display: \"flex\",\n flexDirection: \"row\",\n userSelect: \"none\",\n ...($textStyle\n ? {\n ...theme.textStyles[$textStyle],\n color: theme.colors.text,\n }\n : {\n ...theme.textStyles.label,\n color: theme.colors.textMuted,\n fontWeight: \"bold\",\n }),\n}));\n\nexport const Row = styled.div<{ $gap?: CSSProperties[\"gap\"] }>(\n ({ theme, $gap }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: $gap,\n })\n);\n\nexport const Column = styled.div(({ theme }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n}));\n\nexport const Checkbox = styled.input(({ theme }) => ({\n margin: 0,\n}));\n\nexport const Text = styled.span(({ theme }) => ({\n ...theme.textStyles.small,\n}));\n\nexport const VerticalSeparator = () => (\n <Spacer.Vertical size={useTheme().sizes.inspector.verticalSeparator} />\n);\n\nexport const HorizontalSeparator = () => (\n <Spacer.Horizontal size={useTheme().sizes.inspector.horizontalSeparator} />\n);\n\nconst SliderRowLabel = styled.span(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n marginBottom: \"-6px\",\n}));\n\nexport const RowLabel = styled.span<{\n $textStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n}>(({ theme, $textStyle }) => ({\n // marginBottom: '6px',\n display: \"flex\",\n ...($textStyle\n ? {\n ...theme.textStyles[$textStyle],\n }\n : {\n ...theme.textStyles.label,\n color: theme.colors.textSubtle,\n fontWeight: \"bold\",\n }),\n lineHeight: \"19px\", // Button height\n alignItems: \"center\",\n}));\n\nexport const LabeledRow = memo(function LabeledRow({\n id,\n children,\n label,\n labelTextStyle,\n gap,\n right,\n}: {\n id?: string;\n children: ReactNode;\n label: ReactNode;\n labelTextStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n gap?: CSSProperties[\"gap\"];\n right?: ReactNode;\n}) {\n return (\n <Row id={id}>\n <Column>\n <RowLabel $textStyle={labelTextStyle}>\n {label}\n {right && <Spacer.Horizontal />}\n {right}\n </RowLabel>\n <Row $gap={gap}>{children}</Row>\n </Column>\n </Row>\n );\n});\n\nexport const LabeledSliderRow = memo(function LabeledRow({\n children,\n label,\n}: {\n children: ReactNode;\n label: string;\n}) {\n return (\n <Row>\n <Column>\n <SliderRowLabel>{label}</SliderRowLabel>\n <Row>{children}</Row>\n </Column>\n </Row>\n );\n});\n","import { round } from \"@noya-app/noya-utils\";\nimport React, { memo, useCallback } from \"react\";\nimport { InputField } from \"./InputField\";\n\nexport type SetNumberMode = \"replace\" | \"adjust\";\n\nexport function getNewValue(\n value: number,\n mode: SetNumberMode,\n delta?: number\n) {\n return delta === undefined\n ? value\n : mode === \"replace\"\n ? delta\n : value + delta;\n}\n\nexport type DimensionValue = number | undefined;\n\ninterface Props {\n id?: string;\n value: DimensionValue;\n onSetValue: (value: number, mode: SetNumberMode) => void;\n label?: string;\n size?: number;\n placeholder?: string;\n disabled?: boolean;\n trigger?: \"change\" | \"submit\";\n}\n\nexport const DimensionInput = memo(function DimensionInput({\n id,\n value,\n onSetValue,\n label,\n size,\n placeholder = \"multi\",\n disabled,\n trigger = \"submit\",\n}: Props) {\n const handleNudgeValue = useCallback(\n (value: number) => onSetValue(value, \"adjust\"),\n [onSetValue]\n );\n\n const handleSetValue = useCallback(\n (value: number) => onSetValue(value, \"replace\"),\n [onSetValue]\n );\n\n return (\n <InputField.Root id={id} width={size}>\n <InputField.NumberInput\n value={value === undefined ? value : round(value, 2)}\n placeholder={value === undefined ? placeholder : undefined}\n onNudge={handleNudgeValue}\n disabled={disabled}\n {...(trigger === \"change\"\n ? { onChange: handleSetValue }\n : { onSubmit: handleSetValue })}\n />\n {label && <InputField.Label>{label}</InputField.Label>}\n </InputField.Root>\n );\n});\n"],"mappings":"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","names":["ActivityIndicator","size","React","forwardRef","styled","React","Children","memo","styled","elements","styled","StackBase","elements","Children","React","memo","styled","size","forwardRef","Avatar","name","React","React","forwardRef","styled","React","memo","styled","Content","Tooltip","styled","forwardRef","Button","style","size","React","React","forwardRef","memo","styled","React","createContext","memo","useContext","useEffect","useMemo","useState","useTheme","React","styled","React","forwardRef","memo","React","React","memo","forwardRef","IconButton","size","style","React","styled","React","colors","name","name","colors","React","createContext","useCallback","useContext","useMemo","useRef","useState","styled","React","forwardRef","styled","React","forwardRef","styled","size","Spacer","styled","forwardRef","Dialog","style","React","FullscreenDialog","React","memo","useRef","React","size","memo","AutoSizer","useRef","React","SingleDimensionAutoSizer","React","memo","useCallback","useRef","useCallback","useState","memo","FileDropTarget","useRef","useCallback","React","useRef","isDeepEqual","useCallback","useMemo","useState","useEffect","useState","useEffect","useRef","useCallback","useRef","useRef","useCallback","useMemo","useState","useCallback","useEffect","useMemo","useState","useEffect","useState","useRef","useCallback","useLayoutEffect","useRef","useEffect","useState","useEffect","useState","React","Children","createContext","forwardRef","isValidElement","memo","useCallback","useContext","useEffect","useLayoutEffect","useMemo","useRef","useState","styled","React","forwardRef","memo","useCallback","useMemo","styled","React","memo","styled","styled","memo","KeyboardShortcut","React","styled","memo","useCallback","React","Content","SubContent","forwardRef","DropdownMenuRoot","useMemo","React","forwardRef","useCallback","useEffect","useLayoutEffect","useRef","useState","useEffect","forwardRef","ReadOnlyTextInput","React","ControlledTextInput","useCallback","SubmittableTextInput","useRef","useState","useLayoutEffect","useEffect","React","styled","styled","React","createContext","styled","memo","forwardRef","InputFieldLabel","style","useContext","useRef","useLayoutEffect","React","InputFieldDropdownMenu","size","useMemo","InputFieldButton","useCallback","InputFieldInput","useState","value","Children","isValidElement","isFocused","useEffect","InputField","styled","createContext","DialogProvider","useState","useCallback","useRef","React","useMemo","isOpen","contents","useContext","React","createContext","useContext","useMemo","useState","windows","memo","DesignSystemThemeProvider","useTheme","React","createContext","DesignSystemConfigurationProvider","useState","useEffect","useMemo","useContext","React","hoverProps","styled","size","memo","forwardRef","Chip","style","React","CheckIcon","ChevronRightIcon","useKeyboardShortcuts","React","memo","useCallback","useMemo","styled","SeparatorElement","styled","ItemElement","CheckboxItemElement","StyledItemIndicator","ContextMenuItem","memo","useCallback","React","CheckIcon","ChevronRightIcon","Content","SubContent","useMemo","useKeyboardShortcuts","React","memo","styled","Divider","DividerVertical","React","memo","useCallback","useState","styled","styled","memo","DraggableMenuButton","useState","React","useCallback","React","forwardRef","memo","styled","GradientType","ColorSpace","FillType","BorderPosition","BlendMode","LineCapStyle","LineJoinStyle","BlurType","PatternFillType","MarkerType","WindingRule","TextVerticalAlignment","TextHorizontalAlignment","TextTransform","UnderlineStyle","BooleanOperation","ExportFileFormat","ExportFormatNamingScheme","VisibleScaleType","AnimationType","LayerListExpanded","ResizeType","InferredLayoutAxis","InferredLayoutAnchor","PointsRadiusBehaviour","CurveMode","LineSpacingBehaviour","TextBehaviour","BundleId","NumericalBool","ClassValue","React","memo","useMemo","styled","useTheme","React","createContext","memo","useContext","useMemo","ImageDataProvider","useLayoutEffect","useMemo","styled","memo","HorizontalDotsBackground","useTheme","useMemo","React","PatternPreviewBackground","size","ColorPreviewBackground","GradientPreviewBackground","FillPreviewBackground","styled","memo","forwardRef","FillInputField","React","React","useCallback","useRef","useState","styles","size","style","rgbaToHsva","React","memo","useCallback","useMemo","memo","GradientPicker","useMemo","rgbaToHsva","useCallback","value","React","styled","React","createContext","forwardRef","memo","useCallback","useContext","useMemo","styled","keyframes","React","memo","useCallback","useState","styled","Container","ScrollArea","sizes","Grid","styled","size","Container","keyframes","forwardRef","GridViewItem","style","React","useContext","useCallback","createContext","useMemo","title","GridView","memo","React","forwardRef","memo","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","styled","range","composeRefs","React","Children","createContext","forwardRef","isValidElement","memo","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useRef","styled","React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","createPortal","Sortable","createContext","styled","useRef","useLayoutEffect","React","forwardRef","ListViewRow","style","useContext","useCallback","useMemo","composeRefs","memo","VirtualizedListRow","VirtualizedListInner","size","useImperativeHandle","RootContainer","ListViewRootInner","isValidElement","ChildrenListViewInner","Children","SimpleListViewInner","ListView","React","forwardRef","styled","styled","forwardRef","Text","style","React","styled","memo","forwardRef","CompletionMenu","React","InputFieldWithCompletions","size","style","useRef","useState","useCallback","useLayoutEffect","useMemo","useEffect","useImperativeHandle","React","forwardRef","memo","InspectorContainer","style","React","memo","styled","styled","LabelContainer","React","memo","React","Children","isValidElement","memo","useLayoutEffect","useMemo","useRef","styled","Container","LabeledElementView","React","styled","React","createContext","forwardRef","memo","useCallback","useContext","useMemo","styled","ignoredProps","styled","forwardRef","ToggleGroupItem","useContext","React","createContext","useMemo","useCallback","value","RadioGroup","memo","React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","styled","SelectOption","Select","value","Select","React","memo","styled","memo","SelectMenu","style","React","value","styled","StyledItem","React","useCallback","useMemo","styled","StyledThumb","Slider","arrayValue","React","styled","Switch","React","forwardRef","memo","useCallback","useEffect","useRef","styled","AutoResizingTextArea","value","React","forwardRef","memo","useCallback","useContext","forwardRef","TreeRow","useContext","useCallback","React","TreeView","memo","useKeyboardShortcuts","React","forwardRef","useImperativeHandle","useRef","useLayoutEffect","useRef","useEffect","useState","size","useRef","useLayoutEffect","forwardRef","WorkspaceLayout","style","size","useRef","useImperativeHandle","useKeyboardShortcuts","React","elements","range","React","memo","useCallback","useMemo","styled","useTheme","Row","Text","Title","React","memo","styled","useTheme","styled","Title","Row","Text","React","useTheme","memo","LabeledRow","styled","ItemContainer","memo","ArrayController","useTheme","useMemo","range","useCallback","React","Title","React","memo","useCallback","memo","DimensionInput","size","useCallback","value","React"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/@babel/runtime/helpers/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/createClass.js","../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/inherits.js","../../../node_modules/@babel/runtime/helpers/defineProperty.js","../../../node_modules/@babel/runtime/helpers/extends.js","../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/slicedToArray.js","../src/components/ActivityIndicator.tsx","../src/components/Avatar.tsx","../src/components/Stack.tsx","../src/utils/breakpoints.ts","../src/utils/withSeparatorElements.ts","../src/components/Button.tsx","../src/components/Tooltip.tsx","../src/components/Chip.tsx","../src/contexts/DesignSystemConfiguration.tsx","../src/components/Toast.tsx","../src/components/IconButton.tsx","../src/components/Icons.tsx","../src/theme/dark.ts","../src/theme/light.ts","../src/mediaQuery.ts","../src/contexts/DialogContext.tsx","../src/components/Dialog.tsx","../src/components/Spacer.tsx","../src/components/InputField.tsx","../../noya-react-utils/src/components/AutoSizer.tsx","../../noya-react-utils/src/hooks/useSize.ts","../../noya-react-utils/src/components/FileDropTarget.tsx","../../noya-react-utils/src/hooks/useFileDropTarget.ts","../../noya-react-utils/src/hooks/useDeepArray.ts","../../noya-react-utils/src/hooks/useDeepState.ts","../../noya-react-utils/src/hooks/useFetch.ts","../../noya-react-utils/src/hooks/useIsMounted.ts","../../noya-react-utils/src/hooks/useLateReference.ts","../../noya-react-utils/src/hooks/useLazyValue.ts","../../noya-react-utils/src/hooks/useMutableState.ts","../../noya-react-utils/src/hooks/usePersistentState.ts","../../noya-react-utils/src/hooks/usePixelRatio.ts","../../noya-react-utils/src/hooks/useShallowArray.ts","../../noya-react-utils/src/hooks/useStableCallback.ts","../../noya-react-utils/src/hooks/useSystemColorScheme.ts","../../noya-react-utils/src/hooks/useUrlHashParameters.ts","../../emitter/src/index.ts","../../noya-react-utils/src/utils/ClientStorage.ts","../../noya-react-utils/src/utils/assignRef.ts","../src/utils/handleNudge.ts","../src/components/DropdownMenu.tsx","../src/components/internal/Menu.tsx","../src/components/internal/TextInput.tsx","../src/contexts/GlobalInputBlurContext.tsx","../src/components/Popover.tsx","../src/contexts/FloatingWindowContext.tsx","../src/hooks/useHover.ts","../src/components/ContextMenu.tsx","../src/components/Divider.tsx","../src/components/DraggableMenuButton.tsx","../src/components/FillInputField.tsx","../../noya-file-format/src/types.ts","../src/components/FillPreviewBackground.tsx","../src/contexts/ImageDataContext.tsx","../src/hooks/useObjectURL.ts","../src/utils/sketchColor.ts","../src/utils/getGradientBackground.tsx","../src/components/FloatingWindow.tsx","../src/components/GradientPicker.tsx","../src/components/Grid.tsx","../src/components/GridView.tsx","../src/components/ScrollArea.tsx","../src/components/InputFieldWithCompletions.tsx","../src/utils/fuzzyScorer.ts","../src/components/ListView.tsx","../../../node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","../../../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../../node_modules/react-virtualized/dist/es/Grid/Grid.js","../../../node_modules/clsx/dist/clsx.m.js","../../../node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","../../../node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","../../../node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","../../../node_modules/react-virtualized/dist/es/Grid/types.js","../../../node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","../../../node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","../../../node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","../../../node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","../../../node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","../../../node_modules/dom-helpers/esm/canUseDOM.js","../../../node_modules/dom-helpers/esm/scrollbarSize.js","../../../node_modules/react-virtualized/dist/es/utils/animationFrame.js","../../../node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","../../../node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","../../../node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","../../../node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","../../../node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","../../../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","../../../node_modules/react-virtualized/dist/es/CellMeasurer/types.js","../../../node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","../../../node_modules/react-virtualized/dist/es/Collection/Collection.js","../../../node_modules/react-virtualized/dist/es/Collection/CollectionView.js","../../../node_modules/react-virtualized/dist/es/Collection/SectionManager.js","../../../node_modules/react-virtualized/dist/es/Collection/Section.js","../../../node_modules/react-virtualized/dist/es/Collection/types.js","../../../node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","../../../node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","../../../node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","../../../node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","../../../node_modules/react-virtualized/dist/es/List/List.js","../../../node_modules/react-virtualized/dist/es/List/types.js","../../../node_modules/react-virtualized/dist/es/Masonry/Masonry.js","../../../node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","../../../node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","../../../node_modules/react-virtualized/dist/es/vendor/intervalTree.js","../../../node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","../../../node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","../../../node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","../../../node_modules/react-virtualized/dist/es/Table/types.js","../../../node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","../../../node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","../../../node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","../../../node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","../../../node_modules/react-virtualized/dist/es/Table/SortIndicator.js","../../../node_modules/react-virtualized/dist/es/Table/SortDirection.js","../../../node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","../../../node_modules/react-virtualized/dist/es/Table/Column.js","../../../node_modules/react-virtualized/dist/es/Table/Table.js","../../../node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","../../../node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","../../../node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","../src/hooks/mergeEventHandlers.ts","../src/components/Sortable.tsx","../src/components/Text.tsx","../src/components/InspectorContainer.tsx","../src/components/Label.tsx","../src/components/LabeledElementView.tsx","../src/components/Progress.tsx","../src/components/RadioGroup.tsx","../src/components/Select.tsx","../src/components/SelectMenu.tsx","../src/components/Slider.tsx","../src/components/Switch.tsx","../src/components/TextArea.tsx","../src/components/TreeView.tsx","../src/components/WorkspaceLayout.tsx","../src/hooks/usePreservePanelSize.tsx","../src/hooks/useWindowSize.tsx","../src/hooks/usePlatform.ts","../src/utils/createSectionedMenu.ts","../src/utils/sketchPattern.ts","../src/components/ArrayController.tsx","../src/components/InspectorPrimitives.tsx","../src/components/DimensionInput.tsx"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React, { memo } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\ninterface Props {\n size?: number;\n opacity?: number;\n color?: string;\n trackColor?: string;\n}\n\ninterface SpinnerProps {\n $opacity: number;\n}\n\ninterface SpinnerCircleProps {\n $size: number;\n $color: string;\n $trackColor: string;\n}\n\nconst spin = keyframes`\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n`;\n\nconst Spinner = styled.div<SpinnerProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: ${({ $opacity }: SpinnerProps) => $opacity};\n`;\n\n// Use css syntax to support keyframes\nconst SpinnerCircle = styled.div<SpinnerCircleProps>`\n border: 2px solid ${({ $trackColor }) => $trackColor};\n border-top: 2px solid ${({ $color }) => $color};\n border-radius: 50%;\n width: ${({ $size }) => `${$size}px`};\n height: ${({ $size }) => `${$size}px`};\n animation: ${spin} 1s linear infinite;\n`;\n\nexport const ActivityIndicator = memo(function ActivityIndicator({\n size = 16,\n opacity = 1,\n color = \"black\",\n trackColor = \"rgba(0, 0, 0, 0.1)\",\n}: Props) {\n return (\n <Spinner $opacity={opacity}>\n <SpinnerCircle $size={size} $color={color} $trackColor={trackColor} />\n </Spinner>\n );\n});\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Stack } from \"./Stack\";\n\nconst AvatarRoot = styled(AvatarPrimitive.Root)<{\n size: number;\n overflow: number;\n}>(({ theme, size, overflow }) => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"middle\",\n overflow: \"hidden\",\n userSelect: \"none\",\n width: size,\n height: size,\n borderRadius: \"100%\",\n backgroundColor: theme.colors.inputBackground,\n ...(overflow && {\n margin: `-${overflow}px`,\n }),\n\n \"&:hover\": {\n boxShadow: `0 0 0 2px ${theme.colors.sidebar.background}`,\n opacity: 0.9,\n },\n}));\n\nconst AvatarImage = styled(AvatarPrimitive.Image)({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius: \"inherit\",\n});\n\nconst AvatarFallback = styled(AvatarPrimitive.Fallback)<{\n size: number;\n}>(({ theme, size }) => ({\n fontSize: \"0.8rem\",\n fontWeight: 500,\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"white\",\n lineHeight: `${size}px`,\n}));\n\nexport const Avatar = forwardRef(function Avatar(\n {\n image,\n name,\n fallback,\n size = 19,\n overflow = 0,\n ...props\n }: {\n image?: string;\n name?: string;\n fallback?: string;\n size?: number;\n overflow?: number;\n style?: React.CSSProperties;\n className?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <AvatarRoot ref={forwardedRef} size={size} overflow={overflow} {...props}>\n <AvatarImage src={image} alt={name} />\n <AvatarFallback size={size}>{fallback}</AvatarFallback>\n </AvatarRoot>\n );\n});\n\nconst AvatarStackItemWrapper = styled.div<{\n $size: number;\n}>(({ $size, theme }) => ({\n position: \"relative\",\n width: $size,\n height: $size,\n marginLeft: \"-8px\",\n // outline: `2px solid ${theme.colors.sidebar.background}`,\n borderRadius: \"50%\",\n clipPath: `circle(50%)`,\n overflow: \"hidden\",\n}));\n\nexport function AvatarStack({\n size = 19,\n children,\n}: {\n size?: number;\n children: React.ReactNode;\n}) {\n const childrenArray = React.Children.toArray(children).map((child) => {\n return React.cloneElement(child as React.ReactElement, { size });\n });\n\n return (\n <Stack.H>\n {childrenArray.map((child, index) => {\n if (index === 0) return child;\n\n return (\n <AvatarStackItemWrapper $size={size} key={index}>\n {child}\n </AvatarStackItemWrapper>\n );\n })}\n </Stack.H>\n );\n}\n","import React, {\n Children,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n ReactHTML,\n ReactNode,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { BreakpointCollection, mergeBreakpoints } from \"../utils/breakpoints\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\n\ninterface StyleProps {\n display?: \"flex\" | \"inline-flex\" | \"none\" | \"block\";\n visibility?: CSSProperties[\"visibility\"];\n position?: CSSProperties[\"position\"];\n zIndex?: CSSProperties[\"zIndex\"];\n gap?: CSSProperties[\"gap\"];\n inset?: CSSProperties[\"inset\"];\n top?: CSSProperties[\"top\"];\n right?: CSSProperties[\"right\"];\n bottom?: CSSProperties[\"bottom\"];\n left?: CSSProperties[\"left\"];\n flexDirection?: CSSProperties[\"flexDirection\"];\n justifyContent?: CSSProperties[\"justifyContent\"];\n alignItems?: CSSProperties[\"alignItems\"];\n alignSelf?: CSSProperties[\"alignSelf\"];\n flex?: CSSProperties[\"flex\"];\n flexWrap?: CSSProperties[\"flexWrap\"];\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n maxHeight?: CSSProperties[\"maxHeight\"];\n width?: CSSProperties[\"width\"];\n minWidth?: CSSProperties[\"minWidth\"];\n maxWidth?: CSSProperties[\"maxWidth\"];\n aspectRatio?: CSSProperties[\"aspectRatio\"];\n padding?: CSSProperties[\"padding\"];\n paddingVertical?: string | number;\n paddingHorizontal?: string | number;\n margin?: CSSProperties[\"margin\"];\n background?: CSSProperties[\"background\"];\n backgroundSize?: CSSProperties[\"backgroundSize\"];\n backgroundPosition?: CSSProperties[\"backgroundPosition\"];\n borderRadius?: CSSProperties[\"borderRadius\"];\n overflowX?: CSSProperties[\"overflowX\"];\n overflowY?: CSSProperties[\"overflowY\"];\n overflow?: CSSProperties[\"overflow\"];\n textOverflow?: CSSProperties[\"textOverflow\"];\n boxShadow?: CSSProperties[\"boxShadow\"];\n outline?: CSSProperties[\"outline\"];\n border?: CSSProperties[\"border\"];\n borderTop?: CSSProperties[\"borderTop\"];\n borderRight?: CSSProperties[\"borderRight\"];\n borderBottom?: CSSProperties[\"borderBottom\"];\n borderLeft?: CSSProperties[\"borderLeft\"];\n cursor?: CSSProperties[\"cursor\"];\n userSelect?: CSSProperties[\"userSelect\"];\n transition?: CSSProperties[\"transition\"];\n opacity?: CSSProperties[\"opacity\"];\n filter?: CSSProperties[\"filter\"];\n color?: CSSProperties[\"color\"];\n order?: CSSProperties[\"order\"];\n pointerEvents?: CSSProperties[\"pointerEvents\"];\n lineHeight?: CSSProperties[\"lineHeight\"];\n isolation?: CSSProperties[\"isolation\"];\n backdropFilter?: CSSProperties[\"backdropFilter\"];\n}\n\nexport type StackBreakpointList = BreakpointCollection<StyleProps>;\n\ninterface Props extends StyleProps {\n id?: string;\n as?: keyof ReactHTML;\n className?: string;\n children?: ReactNode;\n separator?: Parameters<typeof withSeparatorElements>[1];\n breakpoints?: StackBreakpointList | null | false;\n href?: string; // Shouldn't be here, ideally\n tabIndex?: number;\n}\n\nconst Element = styled.div<{\n $styleProps: StyleProps;\n $breakpoints?: StackBreakpointList | null | false;\n}>(({ $styleProps, $breakpoints }) => ({\n ...$styleProps,\n ...mergeBreakpoints($breakpoints || []),\n}));\n\nconst StackBase = forwardRef(function StackBase(\n {\n id,\n className,\n as,\n children,\n separator,\n breakpoints,\n tabIndex,\n href,\n ...rest\n }: Props,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const elements = separator\n ? withSeparatorElements(Children.toArray(children), separator)\n : children;\n\n const styleProps: StyleProps = {\n display: \"flex\",\n position: \"relative\",\n alignItems: \"stretch\",\n ...rest,\n };\n\n return (\n <Element\n ref={forwardedRef as any}\n id={id}\n className={className}\n as={as}\n $styleProps={styleProps}\n $breakpoints={breakpoints}\n tabIndex={tabIndex}\n {...(href && { href })}\n >\n {elements}\n </Element>\n );\n});\n\ntype StackProps = Omit<Props, \"flexDirection\">;\n\nconst VerticalStack = memo(\n forwardRef(function VStack(\n props: StackProps,\n forwardedRef: ForwardedRef<HTMLElement>\n ) {\n return <StackBase {...props} flexDirection=\"column\" ref={forwardedRef} />;\n })\n);\n\nconst HorizontalStack = memo(\n forwardRef(function HStack(\n props: StackProps,\n forwardedRef: ForwardedRef<HTMLElement>\n ) {\n return <StackBase {...props} flexDirection=\"row\" ref={forwardedRef} />;\n })\n);\n\nexport const Stack = {\n V: VerticalStack,\n H: HorizontalStack,\n};\n","import { CSSObject } from \"styled-components\";\n\ntype BreakpointKey = number | string;\n\nexport type Breakpoint<T extends object> = [BreakpointKey, T];\n\nexport type BreakpointCollection<T extends object> =\n | Breakpoint<T>[]\n | Record<BreakpointKey, T>;\n\nexport type StyleMap = Record<string, CSSObject>;\n\nexport function mergeBreakpoints(\n breakpoints: BreakpointCollection<CSSObject>\n): StyleMap;\nexport function mergeBreakpoints<T extends object>(\n breakpoints: BreakpointCollection<T>,\n transform?: (value: T) => CSSObject\n): StyleMap;\nexport function mergeBreakpoints<T extends object>(\n breakpoints: BreakpointCollection<T>,\n transform?: (value: T) => CSSObject\n): StyleMap {\n const breakpointMap = Array.isArray(breakpoints)\n ? breakpoints.reduce(\n (result: Record<number, T>, item: any /* TODO Fix type */) => {\n const [key, value] = item;\n result[key] = result[key] ? { ...result[key], ...value } : value;\n return result;\n },\n {}\n )\n : breakpoints;\n\n const breakpointList = Object.entries(breakpointMap) as Breakpoint<T>[];\n\n const transformedList = breakpointList\n .sort((a, b) => Number(b[0]) - Number(a[0]))\n .map(([width, value]: Breakpoint<T>) => [\n `@media (min-width: ${width}px)`,\n transform?.(value) ?? value,\n ]);\n\n return Object.fromEntries(transformedList);\n}\n","import { Children, cloneElement, isValidElement, ReactNode } from \"react\";\n\nfunction createKey(key: string | number) {\n return `s-${key}`;\n}\n\nexport default function withSeparatorElements(\n elements: ReactNode,\n separator: ReactNode | (() => ReactNode)\n) {\n const childrenArray = Children.toArray(elements);\n\n for (let i = childrenArray.length - 1; i > 0; i--) {\n let sep =\n typeof separator === \"function\"\n ? separator()\n : isValidElement(separator)\n ? cloneElement(separator, { key: createKey(i) })\n : separator;\n\n if (isValidElement(sep) && sep.key == null) {\n sep = cloneElement(sep, { key: createKey(i) });\n }\n\n if (!sep || typeof sep === \"boolean\") continue;\n\n childrenArray.splice(i, 0, sep);\n }\n\n return childrenArray;\n}\n","import React, {\n CSSProperties,\n ForwardedRef,\n forwardRef,\n ReactNode,\n useCallback,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype ButtonVariant =\n | \"normal\"\n | \"primary\"\n | \"primaryGradient\"\n | \"secondary\"\n | \"secondaryBright\"\n | \"white\"\n | \"thin\"\n | \"floating\"\n | \"none\";\n\ntype ButtonSize = \"normal\" | \"large\";\n\n/* ----------------------------------------------------------------------------\n * Element\n * ------------------------------------------------------------------------- */\n\nexport const ButtonElement = styled.button<{\n $active: boolean;\n $variant: ButtonVariant;\n $size: ButtonSize;\n $flex?: CSSProperties[\"flex\"];\n $defaultBackground?: string;\n}>(\n ({\n theme,\n $active,\n disabled,\n $variant,\n $size,\n $flex,\n $defaultBackground = theme.colors.inputBackground,\n }) => ({\n ...($size === \"large\"\n ? theme.textStyles.heading4\n : theme.textStyles.button),\n textDecoration: \"none\",\n lineHeight: \"1\",\n flex: $flex ?? \"0 0 auto\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n WebkitAppRegion: \"no-drag\",\n userSelect: \"none\",\n minWidth: $variant === \"normal\" ? \"31px\" : undefined,\n textAlign: \"left\",\n borderRadius: \"4px\",\n paddingTop: $variant === \"none\" ? \"0px\" : \"4px\",\n paddingRight:\n $variant === \"none\" ? \"0px\" : $variant === \"thin\" ? \"1px\" : \"6px\",\n paddingBottom: $variant === \"none\" ? \"0px\" : \"4px\",\n paddingLeft:\n $variant === \"none\" ? \"0px\" : $variant === \"thin\" ? \"1px\" : \"6px\",\n ...($size === \"large\" && {\n paddingTop: \"12px\",\n paddingRight: \"16px\",\n paddingBottom: \"12px\",\n paddingLeft: \"16px\",\n }),\n background: $active\n ? theme.colors.primary\n : $variant === \"primaryGradient\"\n ? `linear-gradient(90deg, ${theme.colors.primary}, ${theme.colors.primaryLight})`\n : $variant === \"none\" || $variant === \"thin\"\n ? \"transparent\"\n : $defaultBackground,\n color: $active ? \"white\" : theme.colors.text,\n opacity: disabled ? 0.25 : 1,\n \"&:focus\": {\n outline: `2px solid ${theme.colors.primary}`,\n boxShadow: `0 0 0 1px ${theme.colors.popover.background} inset`,\n },\n \"&:hover\": {\n background:\n $variant === \"primaryGradient\" || $active\n ? theme.colors.primaryLight\n : theme.colors.inputBackgroundLight,\n },\n \"&:active\": {\n background:\n $variant === \"primaryGradient\" || $active\n ? theme.colors.primary\n : theme.colors.activeBackground,\n },\n ...($variant === \"primary\" && {\n background: theme.colors.primary,\n color: \"white\",\n \"&:hover\": {\n background: theme.colors.primaryLight,\n },\n \"&:active\": {\n background: theme.colors.primary,\n },\n }),\n ...($variant === \"secondary\" && {\n background: theme.colors.secondary,\n color: \"white\",\n \"&:hover\": {\n background: theme.colors.secondaryLight,\n },\n \"&:active\": {\n background: theme.colors.secondary,\n },\n }),\n ...($variant === \"secondaryBright\" && {\n background: \"#0ab557\",\n color: \"white\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n ...($variant === \"white\" && {\n background: \"white\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n ...($variant === \"floating\" && {\n background: \"white\",\n color: theme.colors.text,\n boxShadow: \"0 1px 2px rgba(0, 0, 0, 0.1)\",\n fontSize: \"12px\",\n padding: \"0px 4px\",\n \"&:hover\": {\n opacity: 0.8,\n },\n \"&:active\": {\n opacity: 0.9,\n },\n }),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \"& *\": {\n pointerEvents: \"none\",\n },\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Content\n * ------------------------------------------------------------------------- */\n\nconst ButtonContent = styled.span(({ theme }) => ({\n // Line height of small text - maybe figure out better way to ensure\n // icons don't have a smaller height\n minHeight: \"19px\",\n display: \"flex\",\n alignItems: \"center\",\n flex: \"1\",\n justifyContent: \"center\",\n\n // Helps with alignment with the default small text\n lineHeight: \"15px\",\n}));\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nexport interface ButtonRootProps {\n id?: string;\n className?: string;\n style?: CSSProperties;\n flex?: CSSProperties[\"flex\"];\n tabIndex?: number;\n children: ReactNode;\n active?: boolean;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n tooltip?: ReactNode;\n onClick?: (event: React.MouseEvent) => void;\n onPointerDown?: (event: React.PointerEvent) => void;\n contentStyle?: CSSProperties;\n defaultBackground?: string;\n as?: React.ElementType;\n htmlFor?: string;\n href?: string;\n target?: string;\n rel?: string;\n}\n\nexport const Button = forwardRef(function Button(\n {\n id,\n className,\n style,\n flex,\n tabIndex,\n tooltip,\n active = false,\n disabled = false,\n variant = \"normal\",\n size = \"normal\",\n contentStyle,\n defaultBackground,\n onClick,\n children,\n ...rest // Propagate any other props so this component works as a Slot\n }: ButtonRootProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const buttonElement = (\n <ButtonElement\n ref={forwardedRef}\n id={id}\n className={className}\n style={style}\n $flex={flex}\n tabIndex={tabIndex}\n $active={active}\n disabled={disabled}\n $variant={variant}\n $size={size}\n $defaultBackground={defaultBackground}\n onClick={onClick}\n // Prevent double clicking a button from triggering any callbacks in ancestors\n onDoubleClick={useCallback((event: React.MouseEvent) => {\n event.stopPropagation();\n }, [])}\n {...rest}\n >\n <ButtonContent style={contentStyle}>{children}</ButtonContent>\n </ButtonElement>\n );\n\n return tooltip ? (\n <Tooltip content={tooltip}>{buttonElement}</Tooltip>\n ) : (\n buttonElement\n );\n});\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport React, { memo, ReactNode } from 'react';\nimport styled from 'styled-components';\n\n// const Arrow = styled(TooltipPrimitive.Arrow)(({ theme }) => ({\n// fill: theme.colors.popover.background,\n// }));\n\nconst Content = styled(TooltipPrimitive.Content)(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.text,\n borderRadius: 3,\n padding: `${theme.sizes.spacing.small}px ${theme.sizes.spacing.medium}px`,\n backgroundColor: theme.colors.popover.background,\n boxShadow: '0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)',\n border: `1px solid ${theme.colors.dividerStrong}`,\n}));\n\ninterface Props {\n children: ReactNode;\n content: ReactNode;\n}\n\nexport const Tooltip = memo(function Tooltip({ children, content }: Props) {\n return (\n <TooltipPrimitive.Provider>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <Content\n side=\"bottom\"\n align=\"center\"\n sideOffset={2}\n collisionPadding={8}\n >\n {content}\n {/* <Arrow /> */}\n </Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n});\n","import { Cross1Icon, PlusIcon } from \"@noya-app/noya-icons\";\nimport React, { forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\nimport { useDesignSystemTheme } from \"../contexts/DesignSystemConfiguration\";\nimport { useHover } from \"../hooks/useHover\";\n\ntype ChipColorScheme = \"primary\" | \"secondary\" | \"error\";\ntype ChipSize = \"small\" | \"medium\" | \"large\";\ntype ChipVariant = \"solid\" | \"outlined\" | \"ghost\";\n\nconst ChipElement = styled.span<{\n $colorScheme?: ChipColorScheme;\n $size: ChipSize;\n $monospace: boolean;\n $variant: ChipVariant;\n $isInteractive: boolean;\n}>(({ theme, $colorScheme, $size, $variant, $monospace, $isInteractive }) => {\n const color =\n $colorScheme === \"primary\"\n ? theme.colors.primary\n : $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.text;\n\n const backgroundColor =\n $colorScheme === \"primary\"\n ? theme.colors.primaryPastel\n : $colorScheme === \"secondary\"\n ? theme.colors.secondaryPastel\n : $colorScheme === \"error\"\n ? \"rgb(255, 219, 219)\"\n : theme.colors.inputBackground;\n\n const subtleColor =\n $colorScheme === \"primary\"\n ? \"rgba(238, 229, 255, 0.2)\"\n : $colorScheme === \"secondary\"\n ? \"rgba(205, 238, 231, 0.2)\"\n : $colorScheme === \"error\"\n ? \"rgba(255, 219, 219, 0.2)\"\n : \"rgba(0, 0, 0, 0.1)\";\n\n return {\n textTransform: \"initial\",\n borderRadius: 4,\n userSelect: \"none\",\n display: \"inline-flex\",\n alignItems: \"center\",\n // lineHeight: \"1.4\",\n lineHeight: \"15px\",\n whiteSpace: \"pre\",\n ...($size === \"large\"\n ? {\n fontSize: \"11px\",\n padding: \"4px 8px\",\n }\n : $size === \"medium\"\n ? {\n fontSize: \"10px\",\n padding: \"2px 6px\",\n }\n : {\n fontSize: \"9px\",\n padding: \"0px 4px\",\n }),\n ...($monospace && {\n fontFamily: theme.fonts.monospace,\n }),\n ...($variant === \"solid\"\n ? {\n color,\n backgroundColor,\n }\n : $variant === \"outlined\"\n ? {\n color,\n backgroundColor: \"transparent\",\n boxShadow: `0 0 0 1px ${subtleColor} inset`,\n }\n : {}),\n \"&:hover\": {\n ...($variant === \"outlined\" && {\n backgroundColor: subtleColor,\n boxShadow: \"none\",\n }),\n },\n ...($isInteractive && {\n cursor: \"pointer\",\n \"&:hover\": {\n opacity: 0.85,\n },\n }),\n };\n});\n\nconst DeleteElement = styled(Cross1Icon)<{\n size: ChipSize;\n}>(({ size }) => ({\n position: \"relative\",\n marginRight: \"-2px\",\n cursor: \"pointer\",\n opacity: 0.5,\n\n ...(size === \"large\"\n ? {\n marginLeft: \"2px\",\n // top: '-1px',\n transform: \"scale(0.75)\",\n }\n : {\n transform: \"scale(0.6)\",\n }),\n\n \"&:hover\": {\n opacity: 0.85,\n },\n}));\n\nconst ignoredProps = new Set([\"size\", \"isOnlyChild\"]);\n\nconst AddElement = styled(PlusIcon).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n size: ChipSize;\n isOnlyChild: boolean;\n}>(({ size, isOnlyChild }) => ({\n position: \"relative\",\n marginLeft: \"-2px\",\n cursor: \"pointer\",\n opacity: 0.5,\n\n ...(size === \"large\"\n ? {\n marginRight: \"2px\",\n top: \"-1px\",\n transform: \"scale(0.75)\",\n }\n : {\n marginRight: \"-2px\",\n transform: \"scale(0.6)\",\n }),\n\n \"&:hover\": {\n opacity: 0.85,\n },\n}));\n\nexport interface ChipProps {\n id?: string;\n className?: string;\n colorScheme?: ChipColorScheme;\n variant?: ChipVariant;\n size?: ChipSize;\n children?: React.ReactNode;\n clickable?: boolean;\n deletable?: boolean;\n addable?: boolean;\n monospace?: boolean;\n onDelete?: () => void;\n onAdd?: () => void;\n onClick?: () => void;\n onHoverDeleteChange?: (hovering: boolean) => void;\n style?: React.CSSProperties;\n tabIndex?: number;\n}\n\nexport const Chip = memo(\n forwardRef(function Chip(\n {\n colorScheme,\n children,\n deletable,\n addable,\n clickable,\n style,\n size = \"large\",\n variant = \"solid\",\n monospace = false,\n tabIndex,\n onDelete,\n onClick,\n onAdd,\n onHoverDeleteChange,\n ...rest\n }: ChipProps,\n forwardedRef: React.ForwardedRef<HTMLSpanElement>\n ) {\n const theme = useDesignSystemTheme();\n\n const { hoverProps: hoverDeleteProps } = useHover({\n onHoverChange: onHoverDeleteChange,\n });\n\n const handleClick = !children && !deletable && addable ? onAdd : onClick;\n\n const color =\n colorScheme === \"primary\"\n ? theme.colors.primary\n : colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.text;\n\n return (\n <ChipElement\n ref={forwardedRef}\n $variant={variant}\n $colorScheme={colorScheme}\n style={style}\n onClick={handleClick}\n $size={size}\n $monospace={monospace}\n $isInteractive={!!handleClick || clickable === true}\n tabIndex={tabIndex}\n {...rest}\n >\n {addable && (\n <AddElement\n size={size}\n isOnlyChild={!children && !deletable}\n onClick={\n onAdd\n ? (event) => {\n event.stopPropagation();\n onAdd?.();\n }\n : undefined\n }\n color={color}\n />\n )}\n {children}\n {deletable && (\n <DeleteElement\n size={size}\n {...(hoverDeleteProps as any)}\n onClick={\n onDelete\n ? (event) => {\n event.stopPropagation();\n onDelete?.();\n }\n : undefined\n }\n color={color}\n />\n )}\n </ChipElement>\n );\n })\n);\n","import { getCurrentPlatform, PlatformName } from \"@noya-app/noya-keymap\";\nimport React, {\n createContext,\n memo,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { ThemeProvider, useTheme } from \"styled-components\";\nimport { ToastProvider } from \"../components/Toast\";\nimport { Theme } from \"../theme\";\nimport * as darkTheme from \"../theme/dark\";\nimport * as lightTheme from \"../theme/light\";\nimport { DialogProvider } from \"./DialogContext\";\nimport { FloatingWindowProvider } from \"./FloatingWindowContext\";\n\nexport const DesignSystemThemeProvider = memo(\n function DesignSystemThemeProvider({\n children,\n theme,\n }: {\n children: ReactNode;\n theme?: Theme;\n }) {\n let parentTheme: Theme | undefined;\n\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n parentTheme = useTheme();\n } catch (e) {\n // console.error(e);\n }\n\n if (theme) {\n return <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n } else if (parentTheme) {\n return children;\n } else {\n return <ThemeProvider theme={lightTheme}>{children}</ThemeProvider>;\n }\n }\n);\n\nexport type DesignSystemConfigurationContextValue = {\n platform: PlatformName;\n};\n\nconst DesignSystemConfigurationContext =\n createContext<DesignSystemConfigurationContextValue>({\n platform: \"key\",\n });\n\nexport const DesignSystemConfigurationProvider = memo(\n function DesignSystemConfigurationProvider({\n children,\n theme,\n platform,\n }: {\n children: ReactNode;\n theme?: Theme | \"light\" | \"dark\";\n platform?: PlatformName;\n }) {\n const [internalPlatform, setInternalPlatform] = useState<PlatformName>(\n platform ?? \"key\"\n );\n\n useEffect(() => {\n if (platform !== undefined) return;\n\n if (typeof navigator !== \"undefined\") {\n setInternalPlatform(getCurrentPlatform(navigator));\n }\n }, [platform]);\n\n const contextValue = useMemo(\n () => ({ platform: platform ?? internalPlatform }),\n [platform, internalPlatform]\n );\n\n const resolvedTheme =\n theme === \"light\"\n ? lightTheme\n : theme === \"dark\"\n ? darkTheme\n : theme ?? lightTheme;\n\n return (\n <DesignSystemConfigurationContext.Provider value={contextValue}>\n <ThemeProvider theme={resolvedTheme}>\n <DialogProvider>\n <ToastProvider>\n <FloatingWindowProvider>{children}</FloatingWindowProvider>\n </ToastProvider>\n </DialogProvider>\n </ThemeProvider>\n </DesignSystemConfigurationContext.Provider>\n );\n }\n);\n\nexport function useDesignSystemConfiguration(): DesignSystemConfigurationContextValue {\n return useContext(DesignSystemConfigurationContext);\n}\n\nexport function useDesignSystemTheme() {\n return useTheme();\n}\n","import * as ToastPrimitive from '@radix-ui/react-toast';\nimport React, { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { IconButton } from './IconButton';\n\nconst ToastViewport = styled(ToastPrimitive.Viewport)({\n position: 'fixed',\n bottom: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n padding: 20,\n gap: 10,\n minWidth: 200,\n maxWidth: '100vw',\n margin: 0,\n listStyle: 'none',\n zIndex: 2147483647,\n outline: 'none',\n});\n\nconst ToastRoot = styled(ToastPrimitive.Root)(({ theme }) => ({\n borderRadius: 4,\n fontSize: 14,\n backgroundColor: theme.colors.popover.background,\n boxShadow: '0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)',\n color: theme.colors.textMuted,\n\n padding: '8px 10px',\n display: 'grid',\n gridTemplateAreas: '\"title action\" \"description action\"',\n gridTemplateColumns: 'auto max-content',\n columnGap: 10,\n alignItems: 'center',\n}));\n\nconst ToastTitle = styled(ToastPrimitive.Title)(({ theme }) => ({\n gridArea: 'title',\n marginBottom: 5,\n ...theme.textStyles.label,\n fontWeight: 'bold',\n color: theme.colors.text,\n}));\n\nconst ToastDescription = styled(ToastPrimitive.Description)(({ theme }) => ({\n gridArea: 'description',\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n}));\n\nconst ToastAction = styled(ToastPrimitive.Action)({\n gridArea: 'action',\n});\n\nexport const Toast = ({\n title,\n content,\n children,\n ...props\n}: {\n title?: string;\n content: ReactNode;\n children?: React.ReactNode;\n}) => {\n return (\n <ToastRoot {...props}>\n {title && <ToastTitle>{title}</ToastTitle>}\n <ToastDescription>{content}</ToastDescription>\n {children && (\n <ToastAction asChild altText=\"\">\n {children}\n </ToastAction>\n )}\n <ToastPrimitive.Close aria-label=\"Close\" asChild>\n <IconButton iconName=\"Cross1Icon\" />\n </ToastPrimitive.Close>\n </ToastRoot>\n );\n};\n\nexport const ToastProvider = ({ children }: { children: React.ReactNode }) => (\n <ToastPrimitive.Provider>\n {children}\n <ToastViewport />\n </ToastPrimitive.Provider>\n);\n","import React, {\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n useMemo,\n} from \"react\";\nimport { useTheme } from \"styled-components\";\nimport { Button, ButtonRootProps } from \"./Button\";\nimport { IconName, Icons } from \"./Icons\";\n\ntype Props = Omit<ButtonRootProps, \"children\" | \"variant\" | \"flex\" | \"size\"> & {\n iconName: IconName;\n className?: string;\n style?: CSSProperties;\n selected?: boolean;\n color?: string;\n size?: number;\n};\n\nexport const IconButton = memo(\n forwardRef(function IconButton(\n { selected, iconName, color, size, contentStyle, ...props }: Props,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n const { icon: iconColor, iconSelected: iconSelectedColor } =\n useTheme().colors;\n\n const Icon = Icons[iconName];\n\n const style = useMemo((): CSSProperties => {\n return {\n padding: \"0 2px\",\n ...(size && { minHeight: size }),\n ...contentStyle,\n };\n }, [contentStyle, size]);\n\n return (\n <Button ref={forwardedRef} {...props} variant=\"none\" contentStyle={style}>\n <Icon\n color={color ?? (selected ? iconSelectedColor : iconColor)}\n {...(size && { width: size, height: size })}\n />\n </Button>\n );\n })\n);\n","import * as Icons from \"@noya-app/noya-icons\";\nimport React, { ReactNode } from \"react\";\n\nexport type IconName = keyof typeof Icons;\n\nexport { Icons };\n\nexport function renderIcon(\n iconName: Exclude<ReactNode, string> | IconName\n): ReactNode {\n if (typeof iconName === \"string\") {\n const Icon = Icons[iconName as IconName];\n\n return <Icon />;\n }\n\n return iconName;\n}\n","import produce from \"immer\";\nimport * as lightTheme from \"./light\";\n\nexport const name: string = \"dark\";\n\nexport const colors = produce(lightTheme.colors, (colors) => {\n colors.logo.fill = \"rgb(248,248,250)\";\n colors.logo.highlight = \"rgb(248,248,250)\";\n colors.text = \"rgb(248,248,250)\";\n colors.textMuted = \"rgb(180,179,182)\";\n colors.textDisabled = \"rgb(100,99,102)\";\n colors.inputBackground = \"rgba(181,178,255,0.08)\";\n colors.inputBackgroundLight = \"rgba(181,178,255,0.10)\";\n colors.codeBackground = \"rgb(20,19,23)\";\n colors.dividerSubtle = \"rgba(255,255,255,0.04)\";\n colors.divider = \"rgba(255,255,255,0.08)\";\n colors.dividerStrong = \"rgba(0,0,0,1)\";\n colors.primary = \"rgb(119, 66, 255)\";\n colors.primaryLight = \"rgb(134, 86, 255)\";\n colors.secondaryBright = \"#36fe91\";\n colors.canvas.background = \"rgb(20,19,23)\";\n colors.canvas.sliceOutline = \"rgb(150,150,150)\";\n colors.canvas.grid = \"rgba(0,0,0,0.1)\";\n colors.sidebar.background = \"rgb(34,33,39)\";\n colors.sidebar.backgroundTransparent = \"rgba(34,33,39,0.95)\";\n colors.popover.background = \"rgba(34,33,39,1)\";\n colors.popover.divider = colors.divider;\n colors.listView.raisedBackground = \"rgba(181,178,255,0.1)\";\n colors.listView.editingBackground = \"#000\";\n colors.slider.background = \"#BBB\";\n colors.radioGroup.background = colors.inputBackground;\n colors.mask = \"rgb(102,187,106)\";\n colors.transparentChecker = \"rgba(255,255,255,0.3)\";\n colors.scrollbar = \"rgba(199,199,199,0.2)\";\n colors.placeholderDots = \"rgba(255,255,255,0.3)\";\n colors.dragOutline = \"white\";\n colors.activeBackground = \"rgba(181,178,255,0.08)\";\n colors.thumbnailBackground = \"#1f1d33\";\n colors.thumbnailShadow = \"#1f1d3366\";\n colors.breadcrumb.text = colors.textMuted;\n colors.breadcrumb.textHover = colors.textSubtle;\n colors.breadcrumb.icon = colors.icon;\n});\n\nexport { fonts, sizes, textStyles } from \"./light\";\n","import { CSSObject } from \"styled-components\";\nimport { mediaQuery } from \"../mediaQuery\";\n\nexport const name: string = \"light\";\n\nexport const colors = {\n logo: {\n fill: \"rgb(150, 152, 172)\",\n highlight: \"rgb(150, 152, 172)\",\n },\n background: \"rgb(255,255,255)\",\n text: \"rgb(38, 48, 83)\",\n textMuted: \"rgb(107, 113, 136)\",\n textSubtle: \"rgb(117, 121, 129)\",\n textDisabled: \"rgb(150, 152, 172)\",\n textDecorativeLight: \"rgb(168, 185, 212)\",\n dividerSubtle: \"rgba(30, 50, 100, 0.04)\",\n divider: \"rgba(30, 50, 100, 0.07)\",\n dividerStrong: \"rgba(30, 50, 100, 0.09)\",\n primary: \"rgb(103, 70, 255)\",\n primaryLight: \"rgb(147, 86, 255)\",\n primaryPastel: \"rgba(234, 230, 255)\",\n secondary: \"rgb(0, 151, 117)\",\n secondaryLight: \"rgb(0, 160, 129)\",\n secondaryPastel: \"rgb(205, 238, 231)\",\n secondaryBright: \"#0ab557\",\n warning: \"rgb(251, 211, 0)\",\n neutralBackground: \"rgb(222,223,232)\",\n inputBackground: \"rgb(240, 242, 246)\",\n inputBackgroundLight: \"rgb(243, 245, 249)\",\n codeBackground: \"rgb(250, 250, 250)\",\n codeBackgroundLight: \"rgb(250, 250, 250)\",\n get codeBackgroundDark() {\n return colors.text;\n },\n codeBackgroundDecorativeDark: \"#435080\",\n selectedBackground: \"rgb(242, 245, 250)\",\n transparentChecker: \"rgba(255,255,255,0.8)\",\n activeBackground: \"rgba(0,0,0,0.1)\",\n scrollbar: \"rgba(199,199,199,0.8)\",\n placeholderDots: \"rgba(0,0,0,0.3)\",\n breadcrumb: {\n get text() {\n return colors.textMuted;\n },\n get textHover() {\n return colors.textSubtle;\n },\n get icon() {\n return colors.icon;\n },\n },\n listView: {\n raisedBackground: \"rgba(0,0,0,0.03)\",\n editingBackground: \"#fff\",\n },\n canvas: {\n // background: \"white\",\n background: \"rgb(249,249,249)\",\n get selectionStroke() {\n return colors.primary;\n },\n dragHandleStroke: \"rgba(180,180,180,0.5)\",\n measurement: \"rgb(207,92,42)\",\n sliceOutline: \"rgb(210,210,210)\",\n grid: \"rgba(0,0,0,0.05)\",\n },\n sidebar: {\n background: \"rgb(255,255,255)\",\n backgroundTransparent: \"rgba(255,255,255,0.85)\",\n },\n popover: {\n background: \"rgb(252,252,252)\",\n divider: \"transparent\",\n },\n slider: {\n background: \"white\",\n border: \"#BBB\",\n },\n radioGroup: {\n background: \"white\",\n },\n icon: \"rgb(129, 131, 165)\",\n iconSelected: \"rgb(220, 220, 220)\",\n mask: \"rgb(12,193,67)\",\n imageOverlay:\n \"linear-gradient(0deg, rgba(132, 63, 255,0.55), rgba(132, 63, 255,0.55))\",\n get dragOutline() {\n return colors.primary;\n },\n selection: \"rgb(179,215,254)\",\n thumbnailBackground: \"#f0efff\",\n thumbnailShadow: \"#D3CEED66\",\n inlineCode: {\n text: \"rgb(103, 70, 255)\",\n background: \"rgb(240, 242, 246)\",\n },\n textLink: \"rgb(103, 70, 255)\",\n textLinkFocused: \"rgb(147, 86, 255)\",\n};\n\nexport const fonts = {\n normal:\n \"'__Inter_6b0edc', '__Inter_Fallback_6b0edc', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\",\n monospace: \"Menlo, Monaco, Consolas, 'Courier New', monospace\",\n};\n\n// The last one, 0.85, I just eyeballed\nconst typeScale = [3.052, 2.441, 1.953, 1.563, 1.25, 1, 0.85]; // Major third\n\nexport const textStyles = {\n title: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[0]}rem`,\n fontWeight: \"bold\",\n lineHeight: \"1.4\",\n letterSpacing: \"-0.05em\",\n [mediaQuery.small]: {\n fontSize: \"36px\",\n },\n } as CSSObject,\n subtitle: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[3]}rem`,\n fontWeight: 500,\n lineHeight: \"1.75\",\n letterSpacing: \"-0.05em\",\n [mediaQuery.small]: {\n fontSize: \"18px\",\n },\n } as CSSObject,\n heading1: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[2]}rem`,\n fontWeight: 600,\n lineHeight: \"1.6\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading2: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[3]}rem`,\n fontWeight: 500,\n lineHeight: \"1.5\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading3: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[4]}rem`,\n fontWeight: 400,\n lineHeight: \"1.4\",\n letterSpacing: \"-0.025em\",\n } as CSSObject,\n heading4: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[5]}rem`,\n fontWeight: 500,\n lineHeight: \"1.4\",\n } as CSSObject,\n heading5: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[6]}rem`,\n fontWeight: 500,\n lineHeight: \"1.4\",\n } as CSSObject,\n body: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[5]}rem`,\n fontWeight: 400,\n lineHeight: \"1.4\",\n } as CSSObject,\n small: {\n fontFamily: fonts.normal,\n fontSize: `${typeScale[6]}rem`,\n fontWeight: 400,\n lineHeight: \"19px\",\n // lineHeight: \"1.4\",\n } as CSSObject,\n button: {\n fontFamily: fonts.normal,\n fontSize: \"0.8rem\",\n fontWeight: 500,\n lineHeight: \"1.4\",\n letterSpacing: \"-0.2px\",\n } as CSSObject,\n code: {\n fontFamily: fonts.monospace,\n fontSize: \"90%\",\n lineHeight: \"1.5\",\n } as CSSObject,\n label: {\n fontFamily: fonts.normal,\n fontSize: \"0.62rem\",\n fontWeight: 400,\n lineHeight: \"19px\",\n // lineHeight: \"1.4\",\n textTransform: \"uppercase\",\n letterSpacing: \"-0.3px\",\n } as CSSObject,\n};\n\nexport const sizes = {\n inset: {\n top: 46,\n },\n sidebarWidth: 260,\n toolbar: {\n height: 46,\n itemSeparator: 8,\n },\n inspector: {\n horizontalSeparator: 8,\n verticalSeparator: 10,\n },\n spacing: {\n nano: 2,\n micro: 4,\n small: 8,\n medium: 16,\n large: 32,\n xlarge: 64,\n xxlarge: 128,\n },\n dialog: {\n padding: 16,\n },\n};\n","export const size = {\n medium: '800px',\n large: '1280px',\n xlarge: '1550px',\n xxlarge: '1680px',\n};\n\nexport const mediaQuery = {\n small: `@media (max-width: ${size.medium})`,\n medium: `@media (max-width: ${size.large}) and (min-width: ${size.medium})`,\n large: `@media (max-width: ${size.xlarge}) and (min-width: ${size.large})`,\n xlarge: `@media (min-width: ${size.xlarge})`,\n};\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Button } from \"../components/Button\";\nimport { Dialog, IDialog } from \"../components/Dialog\";\nimport { InputField } from \"../components/InputField\";\nimport { Spacer } from \"../components/Spacer\";\n\nexport const Row = styled.div(({ theme }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n}));\n\nfunction createDeferredPromise<T>() {\n let resolve: (value: T) => void = () => {};\n let reject: (value: any) => void = () => {};\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\nexport type DialogContextValue = {\n openInputDialog(\n title: string,\n inputValue?: string\n ): Promise<string | undefined>;\n\n containsElement(element: HTMLElement): boolean;\n};\n\nconst DialogContext = createContext<DialogContextValue | undefined>(undefined);\n\nexport const DialogProvider = function DialogProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const [contents, setContents] = useState<\n | {\n title: string;\n inputValue: string;\n resolve: (value: string | undefined) => void;\n }\n | undefined\n >();\n\n const isOpen = !!contents;\n\n const close = useCallback(() => {\n if (!contents) return;\n\n contents.resolve(undefined);\n }, [contents]);\n\n const submit = useCallback(() => {\n if (!contents || !contents.inputValue) return;\n\n contents.resolve(contents.inputValue);\n setContents(undefined);\n }, [contents]);\n\n const open: DialogContextValue[\"openInputDialog\"] = useCallback(\n (title, inputValue = \"\") => {\n const { promise, resolve } = createDeferredPromise<string | undefined>();\n\n setContents({\n title,\n inputValue,\n resolve: (value) => {\n resolve(value);\n setContents(undefined);\n },\n });\n\n return promise;\n },\n []\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== \"Enter\") return;\n\n event.stopPropagation();\n event.preventDefault();\n\n submit();\n },\n [submit]\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n const dialogRef = useRef<IDialog>(null);\n\n const containsElement = useCallback((element: HTMLElement) => {\n if (!dialogRef.current) return false;\n\n return dialogRef.current.containsElement(element);\n }, []);\n\n return (\n <>\n <DialogContext.Provider\n value={useMemo(\n () => ({ openInputDialog: open, containsElement }),\n [containsElement, open]\n )}\n >\n {children}\n </DialogContext.Provider>\n <Dialog\n ref={dialogRef}\n title={contents?.title}\n open={isOpen}\n onOpenChange={useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n close();\n }\n },\n [close]\n )}\n onOpenAutoFocus={useCallback((event: Event) => {\n event.stopPropagation();\n event.preventDefault();\n\n inputRef.current?.focus();\n\n // Select the entire input value\n inputRef.current?.setSelectionRange(0, inputRef.current.value.length);\n }, [])}\n >\n <InputField.Root>\n <InputField.Input\n ref={inputRef}\n value={contents?.inputValue ?? \"\"}\n onChange={(value) => {\n setContents((contents) =>\n contents\n ? {\n ...contents,\n inputValue: value,\n }\n : undefined\n );\n }}\n onKeyDown={handleKeyDown}\n />\n </InputField.Root>\n <Spacer.Vertical size={20} />\n <Row>\n <Spacer.Horizontal />\n <Button onClick={close}>Cancel</Button>\n <Spacer.Horizontal size={16} />\n <Button disabled={!contents?.inputValue} onClick={submit}>\n Submit\n </Button>\n </Row>\n </Dialog>\n </>\n );\n};\n\nfunction useDialog(): DialogContextValue {\n const value = useContext(DialogContext);\n\n if (!value) {\n throw new Error(\"Missing DialogProvider\");\n }\n\n return value;\n}\n\nexport function useOpenInputDialog() {\n return useDialog().openInputDialog;\n}\n\nexport function useDialogContainsElement() {\n return useDialog().containsElement;\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport React, {\n ComponentProps,\n ForwardedRef,\n forwardRef,\n ReactNode,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { IconButton } from \"./IconButton\";\nimport { Spacer } from \"./Spacer\";\n\nconst StyledOverlay = styled(DialogPrimitive.Overlay)({\n backgroundColor: \"rgba(0,0,0,0.5)\",\n position: \"fixed\",\n inset: 0,\n});\n\nconst StyledContent = styled(DialogPrimitive.Content)(({ theme }) => ({\n boxShadow:\n \"hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px\",\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90vw\",\n maxWidth: \"450px\",\n maxHeight: \"85vh\",\n padding: theme.sizes.dialog.padding,\n borderRadius: 2,\n ...theme.textStyles.small,\n backgroundColor: theme.colors.popover.background,\n overflowY: \"auto\",\n color: theme.colors.textMuted,\n \"&:focus\": { outline: \"none\" },\n pointerEvents: \"all\",\n zIndex: 1000,\n}));\n\nconst StyledTitle = styled(DialogPrimitive.Title)(({ theme }) => ({\n margin: 0,\n ...theme.textStyles.body,\n color: theme.colors.text,\n}));\n\nconst StyledDescription = styled(DialogPrimitive.Description)(({ theme }) => ({\n margin: 0,\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n}));\n\nexport const CloseButtonContainer = styled.div(({ theme }) => ({\n position: \"absolute\",\n top: theme.sizes.dialog.padding,\n right: theme.sizes.dialog.padding,\n zIndex: 1,\n backgroundColor: theme.colors.popover.background,\n padding: \"4px 6px\",\n borderRadius: \"2px\",\n // boxShadow: `0 0 2px rgba(0, 0, 0, 0.2)`,\n border: `1px solid rgba(128,128,128,0.2)`,\n}));\n\nexport interface IDialog {\n containsElement: (element: HTMLElement) => boolean;\n}\n\ninterface Props {\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n style?: ComponentProps<typeof StyledContent>[\"style\"];\n open: ComponentProps<typeof DialogPrimitive.Root>[\"open\"];\n onOpenChange?: ComponentProps<typeof DialogPrimitive.Root>[\"onOpenChange\"];\n onOpenAutoFocus?: ComponentProps<\n typeof DialogPrimitive.Content\n >[\"onOpenAutoFocus\"];\n closeOnInteractOutside?: boolean;\n}\n\nexport const Dialog = forwardRef(function Dialog(\n {\n children,\n title,\n description,\n open,\n style,\n onOpenChange,\n onOpenAutoFocus,\n closeOnInteractOutside = true,\n }: Props,\n forwardedRef: ForwardedRef<IDialog>\n) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(forwardedRef, () => ({\n containsElement(element) {\n if (!contentRef.current) return false;\n\n return contentRef.current.contains(element);\n },\n }));\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <StyledOverlay />\n <StyledContent\n ref={contentRef}\n onOpenAutoFocus={onOpenAutoFocus}\n style={style}\n {...(closeOnInteractOutside === false && {\n onPointerDownOutside: (event) => {\n event.preventDefault();\n },\n onInteractOutside: (event) => {\n event.preventDefault();\n },\n })}\n >\n <CloseButtonContainer>\n <DialogPrimitive.Close asChild>\n <IconButton iconName=\"Cross1Icon\" />\n </DialogPrimitive.Close>\n </CloseButtonContainer>\n {title && (\n <>\n <StyledTitle>{title}</StyledTitle>\n <Spacer.Vertical size={description ? 10 : 20} />\n </>\n )}\n {description && (\n <>\n <Spacer.Vertical size={10} />\n <StyledDescription>{description}</StyledDescription>\n <Spacer.Vertical size={20} />\n </>\n )}\n {children}\n </StyledContent>\n </DialogPrimitive.Root>\n );\n});\n\nexport const FullscreenDialog = forwardRef(function FullscreenDialog(\n { style, ...rest }: Props,\n forwardedRef: ForwardedRef<IDialog>\n) {\n return (\n <Dialog\n ref={forwardedRef}\n style={{\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n top: \"0\",\n left: \"0\",\n transform: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: 0,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","/* eslint-disable react/jsx-pascal-case */\nimport React, { ForwardedRef, forwardRef } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n size?: number | string;\n inline?: boolean;\n}\n\ninterface Props_ {\n $size?: number | string;\n $inline?: boolean;\n}\n\n/* ----------------------------------------------------------------------------\n * Vertical\n * ------------------------------------------------------------------------- */\n\nconst SpacerVertical_ = styled.span<Props_>(({ $size, $inline }) => ({\n display: $inline ? \"inline-block\" : \"block\",\n ...($size === undefined ? { flex: 1 } : { minHeight: $size }),\n}));\n\nconst SpacerVertical = forwardRef<HTMLSpanElement, Props>(\n ({ size, inline, ...props }, ref: ForwardedRef<HTMLSpanElement>) => {\n return (\n <SpacerVertical_ $size={size} $inline={inline} {...props} ref={ref} />\n );\n }\n);\n\n/* ----------------------------------------------------------------------------\n * Horizontal\n * ------------------------------------------------------------------------- */\n\nconst SpacerHorizontal_ = styled.span<Props_>(({ $size, $inline }) => ({\n display: $inline ? \"inline-block\" : \"block\",\n ...($size === undefined ? { flex: 1 } : { minWidth: $size }),\n}));\n\nconst SpacerHorizontal = forwardRef<HTMLSpanElement, Props>(\n ({ size, inline, ...props }, ref: ForwardedRef<HTMLSpanElement>) => {\n return (\n <SpacerHorizontal_ $size={size} $inline={inline} {...props} ref={ref} />\n );\n }\n);\n\nexport namespace Spacer {\n export const Vertical = SpacerVertical;\n export const Horizontal = SpacerHorizontal;\n}\n","import { CaretDownIcon } from \"@noya-app/noya-icons\";\nimport { assignRef } from \"@noya-app/react-utils\";\nimport { Property } from \"csstype\";\nimport React, {\n Children,\n createContext,\n ForwardedRef,\n forwardRef,\n isValidElement,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport handleNudge from \"../utils/handleNudge\";\nimport { Button } from \"./Button\";\nimport { DropdownMenu } from \"./DropdownMenu\";\nimport { MenuItem } from \"./internal/Menu\";\nimport TextInput, { TextInputProps } from \"./internal/TextInput\";\nimport { Popover } from \"./Popover\";\nimport { Stack } from \"./Stack\";\n\ntype LabelPosition = \"start\" | \"end\";\n\nexport type InputFieldSize = \"small\" | \"medium\" | \"large\";\n\ntype InputFieldContextValue = {\n labelPosition: LabelPosition;\n labelSize: number;\n hasLabel: boolean;\n hasDropdown: boolean;\n size: InputFieldSize;\n isFocused: boolean;\n onFocusChange: (isFocused: boolean) => void;\n inputRef?: ForwardedRef<HTMLInputElement>;\n setInputRef?: (ref: ForwardedRef<HTMLInputElement>) => void;\n setLabelWidth?: (width: number) => void;\n};\n\nconst InputFieldContext = createContext<InputFieldContextValue>({\n labelPosition: \"end\",\n labelSize: 6,\n hasLabel: false,\n hasDropdown: false,\n size: \"medium\",\n isFocused: false,\n onFocusChange: () => {},\n});\n\n/* ----------------------------------------------------------------------------\n * Label\n * ------------------------------------------------------------------------- */\n\nconst LabelContainer = styled.label<{\n pointerEvents: Property.PointerEvents;\n $labelPosition: LabelPosition;\n $hasDropdown: boolean;\n}>(({ theme, $labelPosition, $hasDropdown, pointerEvents }) => ({\n ...theme.textStyles.label,\n fontWeight: \"bold\",\n color: theme.colors.textDisabled,\n position: \"absolute\",\n top: 0,\n right: $labelPosition === \"end\" ? 0 : undefined,\n bottom: 0,\n left: $labelPosition === \"start\" ? 0 : undefined,\n display: \"flex\",\n alignItems: \"center\",\n pointerEvents,\n userSelect: \"none\",\n ...($labelPosition === \"start\"\n ? { justifyContent: \"flex-start\", paddingLeft: \"6px\" }\n : {\n justifyContent: \"flex-end\",\n paddingRight: $hasDropdown ? \"16px\" : \"6px\",\n }),\n}));\n\ninterface InputFieldLabelProps {\n children?: ReactNode;\n pointerEvents?: Property.PointerEvents;\n style?: React.CSSProperties;\n}\n\nconst InputFieldLabel = memo(\n forwardRef(function InputFieldLabel(\n { children = false, pointerEvents = \"none\", style }: InputFieldLabelProps,\n forwardedRef: ForwardedRef<HTMLLabelElement>\n ) {\n const { labelPosition, hasDropdown, setLabelWidth } =\n useContext(InputFieldContext);\n\n const ref = useRef<HTMLLabelElement | null>(null);\n\n useLayoutEffect(() => {\n if (!setLabelWidth) return;\n\n const width = ref.current?.getBoundingClientRect().width;\n\n if (!width) return;\n\n setLabelWidth(width);\n }, [setLabelWidth]);\n\n return (\n <LabelContainer\n ref={(element) => {\n ref.current = element;\n assignRef(forwardedRef, element);\n }}\n pointerEvents={pointerEvents}\n $labelPosition={labelPosition}\n $hasDropdown={hasDropdown}\n style={style}\n >\n {children}\n </LabelContainer>\n );\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Dropdown\n * ------------------------------------------------------------------------- */\n\nconst DropdownContainer = styled.span(({ theme }) => ({\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n display: \"flex\",\n flexDirection: \"column\",\n}));\n\ninterface InputFieldDropdownProps<T extends string> {\n id?: string;\n items: MenuItem<T>[];\n onSelect: (value: T) => void;\n children?: ReactNode;\n}\n\nconst InputFieldDropdownMenu = memo(function InputFieldDropdownMenu<\n T extends string,\n>({ id, items, onSelect, children }: InputFieldDropdownProps<T>) {\n const { size } = useContext(InputFieldContext);\n\n const contentStyle = useMemo(\n () => ({\n margin: \"-4px 0\",\n minHeight: size === \"small\" ? \"15px\" : undefined,\n }),\n [size]\n );\n\n return (\n <DropdownContainer>\n <DropdownMenu<T> items={items} onSelect={onSelect}>\n {children || (\n <Button id={id} variant=\"thin\" flex=\"1\" contentStyle={contentStyle}>\n <CaretDownIcon />\n </Button>\n )}\n </DropdownMenu>\n </DropdownContainer>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Button\n * ------------------------------------------------------------------------- */\n\nconst ButtonContainer = styled.span<{ $size: InputFieldSize }>(\n ({ theme, $size }) => ({\n position: \"absolute\",\n right: $size === \"large\" ? \"9px\" : $size === \"medium\" ? \"4px\" : \"2px\",\n top: $size === \"large\" ? \"8px\" : $size === \"medium\" ? \"4px\" : \"2px\",\n })\n);\n\nconst InputFieldButton = memo(function InputFieldButton({\n children,\n onClick,\n}: {\n children?: ReactNode;\n onClick?: () => void;\n}) {\n const { size, inputRef } = useContext(InputFieldContext);\n\n const defaultHandleClick = useCallback(\n (event: React.MouseEvent) => {\n if (inputRef && typeof inputRef !== \"function\") {\n inputRef.current?.focus();\n // Select all text\n inputRef.current?.setSelectionRange(0, inputRef.current.value.length);\n }\n\n event.preventDefault();\n event.stopPropagation();\n },\n [inputRef]\n );\n\n const handlePointerDown = useCallback((event: React.PointerEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n return (\n <ButtonContainer $size={size}>\n <Button\n variant=\"floating\"\n onClick={onClick ?? defaultHandleClick}\n onPointerDown={handlePointerDown}\n tabIndex={-1}\n >\n {children}\n </Button>\n </ButtonContainer>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Input\n * ------------------------------------------------------------------------- */\n\n// const createCrossSVGString = memoize(\n// (color: string) =>\n// `<svg width='15' height='15' viewBox='0 0 15 15' fill='${color}' xmlns='http://www.w3.org/2000/svg'>\n// <path d='M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704ZM9.85358 5.14644C10.0488 5.3417 10.0488 5.65829 9.85358 5.85355L8.20713 7.49999L9.85358 9.14644C10.0488 9.3417 10.0488 9.65829 9.85358 9.85355C9.65832 10.0488 9.34173 10.0488 9.14647 9.85355L7.50002 8.2071L5.85358 9.85355C5.65832 10.0488 5.34173 10.0488 5.14647 9.85355C4.95121 9.65829 4.95121 9.3417 5.14647 9.14644L6.79292 7.49999L5.14647 5.85355C4.95121 5.65829 4.95121 5.3417 5.14647 5.14644C5.34173 4.95118 5.65832 4.95118 5.85358 5.14644L7.50002 6.79289L9.14647 5.14644C9.34173 4.95118 9.65832 4.95118 9.85358 5.14644Z' fill-rule='evenodd' clip-rule='evenodd'></path>\n// </svg>`\n// );\n\ntype InputFieldVariant = \"normal\" | \"bare\";\n\nexport const InputElement = styled(TextInput)<{\n disabled?: boolean;\n readOnly?: boolean;\n $labelPosition: LabelPosition;\n $labelSize: number;\n $hasLabel: boolean;\n $hasDropdown: boolean;\n $textAlign?: Property.TextAlign;\n $variant?: InputFieldVariant;\n $size: InputFieldSize;\n}>(({\n theme,\n $labelPosition,\n $labelSize,\n $hasDropdown,\n $textAlign,\n disabled,\n $hasLabel,\n readOnly,\n $variant = \"normal\",\n $size,\n}) => {\n return {\n // placeholder\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n ...theme.textStyles.small,\n color: readOnly\n ? theme.colors.textMuted\n : disabled\n ? theme.colors.textDisabled\n : theme.colors.text,\n ...($size === \"small\" && {\n fontSize: \"11px\",\n }),\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: $textAlign ?? \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: $size === \"large\" ? \"10px\" : $size === \"medium\" ? \"4px\" : \"1px\",\n paddingBottom:\n $size === \"large\" ? \"10px\" : $size === \"medium\" ? \"4px\" : \"1px\",\n paddingLeft:\n ($size === \"large\" ? 10 : $size === \"medium\" ? 6 : 4) +\n ($hasLabel && $labelPosition === \"start\" ? 6 + $labelSize : 0) +\n \"px\",\n paddingRight:\n ($size === \"large\" ? 10 : $size === \"medium\" ? 6 : 4) +\n ($hasLabel && $labelPosition === \"end\" ? 6 + $labelSize : 0) +\n ($hasDropdown ? 11 : 0) +\n \"px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n ...($variant === \"bare\" && {\n paddingTop: \"4px\",\n paddingRight: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"4px\",\n marginTop: \"-4px\",\n marginRight: \"-4px\",\n marginBottom: \"-4px\",\n marginLeft: \"-4px\",\n }),\n\n // '&[type=\"search\"]::-webkit-search-cancel-button': {\n // appearance: \"none\",\n // height: \"15px\",\n // width: \"15px\",\n // background: `url(\"data:image/svg+xml;utf8,${createCrossSVGString(\n // theme.colors.icon\n // )}\") no-repeat`,\n // },\n };\n});\n\nconst InputFieldInput = forwardRef(function InputFieldInput(\n // onFocusChange should only be passed from the root, never directly\n {\n textAlign,\n variant,\n ...rest\n }: TextInputProps & {\n textAlign?: Property.TextAlign;\n variant?: \"bare\";\n },\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const {\n labelPosition,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n onFocusChange,\n setInputRef,\n } = useContext(InputFieldContext);\n\n const handleFocusChange = useCallback(\n (isFocused: boolean) => {\n onFocusChange(isFocused);\n },\n [onFocusChange]\n );\n\n useLayoutEffect(() => {\n setInputRef?.(forwardedRef);\n }, [forwardedRef, setInputRef]);\n\n return (\n <InputElement\n ref={forwardedRef}\n $labelPosition={labelPosition}\n $labelSize={labelSize}\n $hasLabel={hasLabel}\n $hasDropdown={hasDropdown}\n $size={size}\n $variant={variant}\n $textAlign={textAlign}\n onFocusChange={handleFocusChange}\n {...rest}\n />\n );\n});\n\nconst InputFieldTypeahead = (props: { prefix: string; value: string }) => {\n const {\n labelPosition,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n // onFocusChange,\n } = useContext(InputFieldContext);\n\n return (\n <InputElement\n as=\"span\"\n $labelPosition={labelPosition}\n $labelSize={labelSize}\n $hasLabel={hasLabel}\n $hasDropdown={hasDropdown}\n $size={size}\n // onFocusChange={onFocusChange}\n // readOnly\n // placeholder={props.value}\n value=\"\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n background: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <span style={{ opacity: 0 }}>{props.prefix}</span>\n <span style={{ opacity: 0.5 }}>\n {props.value.slice(props.prefix.length)}\n </span>\n </InputElement>\n );\n};\n\n/* ----------------------------------------------------------------------------\n * NumberInput\n * ------------------------------------------------------------------------- */\n\ntype InputFieldNumberInputProps = Omit<\n TextInputProps,\n \"value\" | \"onChange\" | \"onKeyDown\" | \"onSubmit\"\n> & {\n value: number | undefined;\n onNudge?: (value: number) => void;\n variant?: \"bare\";\n} & (\n | {\n onChange: (value: number) => void;\n }\n | {\n onSubmit: (value: number) => void;\n }\n );\n\nfunction parseNumber(value: string) {\n return value ? Number(value) : NaN;\n}\n\nfunction InputFieldNumberInput(props: InputFieldNumberInputProps) {\n const { value, placeholder, onNudge, onBlur, ...rest } = props;\n const onSubmit = \"onSubmit\" in props ? props.onSubmit : undefined;\n const onChange = \"onChange\" in props ? props.onChange : undefined;\n\n // Internal value is used to handle empty string as a valid state,\n // e.g. when the user deletes the value before entering a new one.\n // This is only used for in the onChange case.\n const [internalValue, setInternalValue] = useState<string | undefined>();\n\n const handleSubmit = useCallback(\n (value: string) => {\n const newValue = parseNumber(value);\n\n if (!isNaN(newValue)) {\n onSubmit?.(newValue);\n }\n },\n [onSubmit]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n const amount = handleNudge(event);\n\n if (!amount) return;\n\n onNudge?.(amount);\n setInternalValue(undefined);\n\n event.preventDefault();\n event.stopPropagation();\n },\n [onNudge]\n );\n\n const handleChange = useCallback(\n (value: string) => {\n if (value === \"\" || value === \"-\" || value === \".\") {\n setInternalValue(value);\n return;\n }\n\n if (value.endsWith(\".\")) {\n setInternalValue(value);\n return;\n }\n\n setInternalValue(undefined);\n\n const newValue = parseNumber(value);\n\n if (!isNaN(newValue)) {\n onChange?.(newValue);\n }\n },\n [onChange]\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setInternalValue(undefined);\n onBlur?.(event);\n },\n [onBlur]\n );\n\n return (\n <InputFieldInput\n {...rest}\n value={\n internalValue !== undefined\n ? String(internalValue)\n : value === undefined\n ? \"\"\n : String(value)\n }\n placeholder={placeholder}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n {...(\"onChange\" in props\n ? { onChange: handleChange }\n : { onSubmit: handleSubmit })}\n />\n );\n}\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst RootContainer = styled.div<{ $width?: number; $flex?: string }>(\n ({ theme, $flex, $width }) => ({\n flex: $flex ?? \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n maxWidth: typeof $width === \"number\" ? `${$width}px` : undefined,\n })\n);\n\ninterface InputFieldRootProps {\n id?: string;\n flex?: string;\n children?: ReactNode;\n width?: number;\n labelPosition?: LabelPosition;\n labelSize?: number;\n hasDropdown?: boolean;\n size?: InputFieldSize;\n renderPopoverContent?: (options: { width: number }) => ReactNode;\n onFocusChange?: (isFocused: boolean) => void;\n style?: React.CSSProperties;\n className?: string;\n}\n\nfunction InputFieldRoot({\n id,\n flex,\n children,\n width,\n labelPosition = \"end\",\n labelSize,\n size = \"medium\",\n renderPopoverContent,\n onFocusChange,\n style,\n className,\n}: InputFieldRootProps) {\n const childrenArray = Children.toArray(children);\n\n const hasDropdown = childrenArray.some(\n (child) => isValidElement(child) && child.type === InputFieldDropdownMenu\n );\n const hasLabel = childrenArray.some(\n (child) => isValidElement(child) && child.type === InputFieldLabel\n );\n\n const [isFocused, setIsFocused] = React.useState(false);\n\n const [measuredLabelSize, setMeasuredLabelSize] = React.useState<number>();\n const [measuredWidth, setMeasuredWidth] = React.useState<number>();\n\n const handleFocusChange = useCallback(\n (isFocused: boolean) => {\n setIsFocused(isFocused);\n onFocusChange?.(isFocused);\n },\n [onFocusChange]\n );\n\n const [inputRef, setInputRef] =\n React.useState<ForwardedRef<HTMLInputElement>>();\n\n // eslint-disable-next-line @shopify/prefer-early-return\n useEffect(() => {\n if (inputRef && typeof inputRef !== \"function\") {\n setMeasuredWidth?.(\n isFocused ? inputRef?.current?.getBoundingClientRect().width : undefined\n );\n }\n }, [inputRef, isFocused]);\n\n const contextValue = useMemo(\n (): InputFieldContextValue => ({\n labelPosition,\n labelSize: measuredLabelSize ?? labelSize ?? 6,\n hasDropdown,\n hasLabel,\n size,\n isFocused,\n onFocusChange: handleFocusChange,\n inputRef,\n setInputRef,\n setLabelWidth: setMeasuredLabelSize,\n }),\n [\n labelPosition,\n measuredLabelSize,\n labelSize,\n hasDropdown,\n hasLabel,\n size,\n isFocused,\n handleFocusChange,\n inputRef,\n ]\n );\n\n const rootElement = (\n <RootContainer\n id={id}\n $width={width}\n $flex={flex}\n style={style}\n className={className}\n >\n {children}\n </RootContainer>\n );\n\n return (\n <InputFieldContext.Provider value={contextValue}>\n {renderPopoverContent ? (\n <Popover\n open={true}\n trigger={rootElement}\n sideOffset={3}\n showArrow={false}\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n {measuredWidth && (\n <Stack.V width={measuredWidth} overflow=\"hidden\">\n {renderPopoverContent({ width: measuredWidth })}\n </Stack.V>\n )}\n </Popover>\n ) : (\n rootElement\n )}\n </InputFieldContext.Provider>\n );\n}\n\nconst PrimitiveInputField = styled.input(({ theme, readOnly, disabled }) => {\n return {\n // placeholder\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n ...theme.textStyles.small,\n color: readOnly\n ? theme.colors.textMuted\n : disabled\n ? theme.colors.textDisabled\n : theme.colors.text,\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"6px\",\n paddingRight: \"6px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n userSelect: \"all\",\n pointerEvents: \"all\",\n };\n});\n\nexport namespace InputField {\n export const Root = memo(InputFieldRoot);\n export const Input = memo(InputFieldInput);\n export const Typeahead = memo(InputFieldTypeahead);\n export const NumberInput = memo(InputFieldNumberInput);\n export const DropdownMenu = InputFieldDropdownMenu;\n export const Button = InputFieldButton;\n export const Label = InputFieldLabel;\n export const PrimitiveElement = PrimitiveInputField;\n}\n","import React, { CSSProperties, ReactNode, memo, useRef } from \"react\";\nimport { useSize } from \"../hooks/useSize\";\n\ntype Size = { width: number; height: number };\n\nconst style: CSSProperties = {\n display: \"flex\",\n flex: \"1 0 0\",\n flexDirection: \"column\",\n};\n\ninterface Props {\n children: (size: Size) => ReactNode;\n className?: string;\n}\n\nexport const AutoSizer = memo(function AutoSizer({\n children,\n className,\n}: Props) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerSize = useSize(containerRef);\n\n return (\n <div ref={containerRef} style={style} className={className}>\n {containerSize &&\n containerSize.width > 0 &&\n containerSize.height > 0 &&\n children(containerSize)}\n </div>\n );\n});\n\ninterface SingleDimensionAutoSizerProps {\n children: (size: number) => ReactNode;\n dimension: \"width\" | \"height\";\n className?: string;\n}\n\nexport const SingleDimensionAutoSizer = memo(function SingleDimensionAutoSizer({\n children,\n dimension,\n className,\n}: SingleDimensionAutoSizerProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerSize = useSize(containerRef, dimension);\n\n return (\n <div ref={containerRef} style={style} className={className}>\n {containerSize &&\n containerSize[dimension] > 0 &&\n children(containerSize[dimension])}\n </div>\n );\n});\n","// MIT License\n//\n// Copyright (c) 2020 Modulz\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// https://github.com/radix-ui/primitives/blob/f3de622e944785d01eb6041249ca1645f79ce102/packages/react/utils/src/useSize.tsx\n\n/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from \"react\";\n\ntype Size = {\n width: number;\n height: number;\n};\n\nexport function useSize(\n /** A reference to the element whose size to observe */\n refToObserve: React.RefObject<HTMLElement | SVGElement>,\n dimensions: \"both\" | \"width\" | \"height\" = \"both\"\n) {\n const [size, setSize] = React.useState<Size | undefined>(undefined);\n\n React.useEffect(() => {\n if (refToObserve.current) {\n const elementToObserve = refToObserve.current;\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate a rect ourselves to get the correct border box.\n const rect = elementToObserve.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n }\n\n setSize((currentSize) => {\n if (\n currentSize &&\n (currentSize.width === width || dimensions === \"height\") &&\n (currentSize.height === height || dimensions === \"width\")\n ) {\n return currentSize;\n }\n\n return { width, height };\n });\n });\n\n resizeObserver.observe(elementToObserve, { box: \"border-box\" });\n\n return () => {\n setSize(undefined);\n resizeObserver.unobserve(elementToObserve);\n };\n }\n return;\n }, [refToObserve, dimensions]);\n\n return size;\n}\n","import React, { DragEvent, ReactNode, memo, useCallback, useRef } from \"react\";\nimport { useFileDropTarget } from \"../hooks/useFileDropTarget\";\n\nexport type OffsetPoint = {\n offsetX: number;\n offsetY: number;\n};\n\nexport type TypedFile<T> = File & { type: T };\n\nexport function isSupportedFile<T extends string>(\n file: File,\n supportedFileTypes: T[]\n): file is TypedFile<T> {\n return (\n supportedFileTypes.includes(file.type as T) ||\n (file.type === \"\" && file.name.endsWith(\".sketch\"))\n );\n}\n\ntype Props<T extends string> = {\n children: ReactNode | ((isActive: boolean) => ReactNode);\n onDropFiles: (file: TypedFile<T>[], offsetPoint: OffsetPoint) => void;\n supportedFileTypes: T[];\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nexport const FileDropTarget = memo(function FileDropTarget<T extends string>({\n children,\n onDropFiles,\n supportedFileTypes,\n ...props\n}: Props<T>) {\n const ref = useRef<HTMLDivElement>(null);\n\n const handleFile = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n\n const offsetPoint = {\n offsetX: event.nativeEvent.offsetX,\n offsetY: event.nativeEvent.offsetY,\n };\n\n const unsupportedTypes = Array.from(event.dataTransfer.files).flatMap(\n (file) => {\n if (!isSupportedFile(file, supportedFileTypes)) {\n return [file.type];\n } else {\n return [];\n }\n }\n );\n\n if (unsupportedTypes.length > 0) {\n alert(\n `Files of type ${unsupportedTypes.join(\n \", \"\n )} aren't supported. The following types are supported: ${supportedFileTypes.join(\n \", \"\n )}`\n );\n }\n\n const files = Array.from(event.dataTransfer.files).flatMap((file) =>\n isSupportedFile(file, supportedFileTypes) ? [file] : []\n );\n\n onDropFiles(files, offsetPoint);\n },\n [onDropFiles, supportedFileTypes]\n );\n\n const { dropTargetProps, isDropTargetActive } = useFileDropTarget(\n ref,\n handleFile\n );\n\n return (\n <div ref={ref} {...dropTargetProps} {...props}>\n {typeof children === \"function\" ? children(isDropTargetActive) : children}\n </div>\n );\n});\n","import { DragEvent, useCallback, useState } from \"react\";\n\nexport function useFileDropTarget(\n ref: React.RefObject<HTMLDivElement>,\n dropEvent: (event: DragEvent) => void\n) {\n const [isDropTargetActive, setIsDropTargetActive] = useState(false);\n\n const handleDragOver = useCallback((event: DragEvent) => {\n event.preventDefault();\n }, []);\n\n const handleDragEnter = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n if (!ref.current?.contains(event.relatedTarget as Node)) {\n setIsDropTargetActive(true);\n }\n },\n [ref]\n );\n\n const handleDragLeave = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n if (!ref.current?.contains(event.relatedTarget as Node)) {\n setIsDropTargetActive(false);\n }\n },\n [ref]\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n event.preventDefault();\n dropEvent(event);\n setIsDropTargetActive(false);\n },\n [dropEvent]\n );\n\n return {\n dropTargetProps: {\n onDragOver: handleDragOver,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n },\n isDropTargetActive,\n };\n}\n","import { isDeepEqual } from \"@noya-app/noya-utils\";\nimport { useRef } from \"react\";\n\n/**\n * Memoize an array using deep equality comparison (by converting to JSON).\n */\nexport function useDeepMemo<T>(value: T) {\n const ref = useRef(value);\n\n if (!isDeepEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { isDeepEqual } from \"@noya-app/noya-utils\";\nimport { useCallback, useMemo, useState } from \"react\";\n\nexport const useDeepState: typeof useState = (\n ...args: Parameters<typeof useState>\n) => {\n const [state, _setState] = useState(...args);\n\n const setState = useCallback(function updater(updated: typeof state) {\n _setState((current) => {\n if (isDeepEqual(current, updated)) return current;\n return updated;\n });\n }, []);\n\n return useMemo(() => [state, setState], [state, setState]);\n};\n","import { useEffect, useState } from \"react\";\nimport { PromiseState } from \"../utils/PromiseState\";\nimport { ResponseEncoding, fetchData } from \"../utils/fetchData\";\n\nexport function useFetch<T>(\n url: string,\n encoding: ResponseEncoding\n): PromiseState<T> {\n const [state, setState] = useState<PromiseState<T>>({ type: \"pending\" });\n\n useEffect(() => {\n let isStale = false;\n\n async function getInfo() {\n try {\n const data = await fetchData<T>(url, encoding as any);\n\n if (isStale) return;\n\n setState({ type: \"success\", value: data });\n } catch (error) {\n if (isStale) return;\n\n setState({ type: \"failure\", value: error as Error });\n }\n }\n\n getInfo();\n\n return () => {\n isStale = true;\n };\n }, [url, encoding]);\n\n return state;\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useIsMounted() {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n}\n","import { SetStateAction, useCallback, useLayoutEffect, useRef } from \"react\";\n\n/**\n * Returns an accessor function that returns the latest value passed to the hook.\n *\n * The value is only updated after the component has rendered, so it is safe to use in event handlers.\n * This is useful for preventing unnecessary re-renders when a value changes frequently,\n * while still providing access to the latest value in event handlers.\n */\nexport function useLateReference<T>(value: T): () => T {\n const valueRef = useRef(value);\n\n useLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return useCallback(() => valueRef.current, []);\n}\n\nexport function useLateReferenceState<T>(\n value: T,\n setValue: (value: T) => void\n): [() => T, (value: SetStateAction<T>) => void] {\n const valueRef = useRef(value);\n\n useLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const getValue = useCallback(() => valueRef.current, []);\n\n const actualSetValue = useCallback(\n (value: SetStateAction<T>) => {\n if (value instanceof Function) {\n const newValue = value(valueRef.current);\n valueRef.current = newValue;\n setValue(newValue);\n } else {\n valueRef.current = value;\n setValue(value);\n }\n },\n [setValue]\n );\n\n return [getValue, actualSetValue] as const;\n}\n","import { useRef } from 'react';\n\nexport function useLazyValue<T>(f: () => T): T {\n const didInitialize = useRef(false);\n const value = useRef<T | undefined>(undefined);\n\n if (!didInitialize.current) {\n didInitialize.current = true;\n\n value.current = f();\n }\n\n return value.current!;\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLazyValue } from './useLazyValue';\n\nexport function useMutableState<T extends object>(\n valueOrInitializer: T | (() => T),\n) {\n const mutableValue = useLazyValue(() =>\n typeof valueOrInitializer === 'function'\n ? valueOrInitializer()\n : valueOrInitializer,\n );\n\n // We create a proxy wrapper in order to re-render on changes\n const [wrappedValue, setWrappedValue] = useState(\n () => new Proxy(mutableValue, {}),\n );\n\n const updateValue = useCallback(\n (updater: (value: T) => void) => {\n updater(mutableValue);\n\n setWrappedValue(new Proxy(mutableValue, {}));\n },\n // The mutable value is a dependency to satisfy eslint,\n // but should never change identity\n [mutableValue],\n );\n\n return useMemo(\n () => [wrappedValue, updateValue] as const,\n [updateValue, wrappedValue],\n );\n}\n","import {\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { ClientStorage } from \"../utils/ClientStorage\";\n\nfunction getCurrentValue<T, K extends string = string>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue?: T\n): T | null {\n return (storage.getItem(storageKey) as T | null) ?? defaultValue ?? null;\n}\n\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(\n storage: ClientStorage<K>,\n storageKey: K\n): readonly [T | null, (newValue: SetStateAction<T | null>) => void];\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue: T\n): readonly [T, (newValue: SetStateAction<T>) => void];\nexport function usePersistentStateString<\n T extends string = string,\n K extends string = string,\n>(storage: ClientStorage<K>, storageKey: K, defaultValue?: T) {\n const [state, setState] = useState<T | null>(() =>\n getCurrentValue(storage, storageKey, defaultValue)\n );\n\n useEffect(() => {\n const newValue = getCurrentValue(storage, storageKey, defaultValue);\n setState(newValue);\n }, [defaultValue, storage, storageKey]);\n\n const setValue = useCallback(\n (action: SetStateAction<T | null>) => {\n const newValue =\n typeof action === \"function\"\n ? action(getCurrentValue(storage, storageKey, defaultValue))\n : action;\n storage.setItem(storageKey, newValue);\n setState(newValue);\n },\n [defaultValue, storage, storageKey]\n );\n\n // Listen for changes to localStorage from other tabs\n useEffect(() => {\n const dispose = storage.addListener(storageKey, (newValue) => {\n setState(newValue as T | null);\n });\n\n return () => dispose();\n }, [storage, storageKey]);\n\n return useMemo(() => [state, setValue] as const, [setValue, state]);\n}\n\nexport function usePersistentStateObject<T extends object, K extends string>(\n storage: ClientStorage<K>,\n storageKey: K,\n defaultValue: T\n): [T, (newValue: SetStateAction<T>) => void] {\n const [state, setState] = usePersistentStateString<string, K>(\n storage,\n storageKey,\n JSON.stringify(defaultValue)\n );\n\n const parsedState = useMemo(() => {\n try {\n return JSON.parse(state);\n } catch {\n return defaultValue;\n }\n }, [state, defaultValue]);\n\n return useMemo(\n () => [\n parsedState,\n (action) => {\n setState((prev) => {\n const parsedPrev = JSON.parse(prev);\n\n const newValue =\n typeof action === \"function\" ? action(parsedPrev) : action;\n\n return JSON.stringify(newValue);\n });\n },\n ],\n [parsedState, setState]\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport function usePixelRatio() {\n const [pixelRatio, setPixelRatio] = useState(() => window.devicePixelRatio);\n\n useEffect(() => {\n const mediaQuery = matchMedia(`(resolution: ${pixelRatio}dppx)`);\n\n const handler = () => {\n setPixelRatio(window.devicePixelRatio);\n };\n\n mediaQuery.addEventListener('change', handler, { once: true });\n\n return () => {\n mediaQuery.removeEventListener('change', handler);\n };\n }, [pixelRatio]);\n\n return pixelRatio;\n}\n","import { isShallowEqual } from '@noya-app/noya-utils';\nimport { useRef } from 'react';\n\n/**\n * Memoize an array using shallow comparison.\n */\nexport function useShallowArray<T>(array: T[]) {\n const ref = useRef(array);\n\n if (!isShallowEqual(ref.current, array)) {\n ref.current = array;\n }\n\n return ref.current;\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react';\n\nconst noop = () => {};\n\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback: T,\n): T;\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback?: T,\n): T | ((...args: Parameters<T>) => void);\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback: T,\n): T {\n const callbackRef = useRef(callback || noop);\n\n useLayoutEffect(() => {\n callbackRef.current = callback || noop;\n }, [callback]);\n\n return useCallback(\n (...args: Parameters<T>): ReturnType<T> => callbackRef.current(...args),\n [callbackRef],\n ) as T;\n}\n","import { useEffect, useState } from \"react\";\nimport { useLazyValue } from \"../hooks/useLazyValue\";\n\nconst preferDarkQuery = \"(prefers-color-scheme: dark)\";\n\ntype ColorScheme = \"light\" | \"dark\";\n\nexport function useSystemColorScheme() {\n const mediaQuery = useLazyValue(\n () => globalThis.matchMedia?.(preferDarkQuery) ?? \"light\"\n );\n\n const [colorScheme, setColorScheme] = useState<ColorScheme>(\n mediaQuery.matches ? \"dark\" : \"light\"\n );\n\n useEffect(() => {\n const listener = ({ matches }: MediaQueryListEvent) => {\n setColorScheme(matches ? \"dark\" : \"light\");\n };\n\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => {\n mediaQuery.removeEventListener(\"change\", listener);\n };\n }, [mediaQuery]);\n\n return colorScheme;\n}\n","import { decodeQueryParameters } from \"@noya-app/noya-utils\";\nimport { useEffect, useState } from \"react\";\n\nexport type UrlHashParameters = Record<string, string>;\n\nexport function getUrlHashParameters(): UrlHashParameters {\n try {\n return decodeQueryParameters(window.location.hash.slice(1));\n } catch (e) {\n // console.warn(e);\n return {};\n }\n}\n\nexport function useUrlHashParameters(): UrlHashParameters {\n const [parameters, setParameters] = useState<UrlHashParameters>(() =>\n getUrlHashParameters()\n );\n\n useEffect(() => {\n const handler = () => setParameters(getUrlHashParameters());\n\n window.addEventListener(\"hashchange\", handler);\n\n return () => {\n window.removeEventListener(\"hashchange\", handler);\n };\n }, []);\n\n return parameters;\n}\n\ntype ParameterTypeMap = {\n boolean: boolean;\n number: number;\n string: string;\n};\n\nexport function castHashParameter<K extends keyof ParameterTypeMap>(\n value: string = \"\",\n type: K\n): ParameterTypeMap[K] {\n switch (type) {\n case \"boolean\":\n return (value === \"true\") as ParameterTypeMap[K];\n case \"number\": {\n const result = Number(value);\n return (isNaN(result) ? 0 : result) as ParameterTypeMap[K];\n }\n case \"string\":\n return value as ParameterTypeMap[K];\n default:\n throw new Error(\"Invalid type\");\n }\n}\n","type EmitterConfiguration = {\n bufferEventsIfNoListeners: boolean;\n};\n\nexport class Emitter<T extends any[] = []> {\n constructor(options: Partial<EmitterConfiguration> = {}) {\n this.bufferEventsIfNoListeners = options.bufferEventsIfNoListeners ?? false;\n }\n\n bufferEventsIfNoListeners: boolean;\n\n listeners: ((...args: T) => void)[] = [];\n\n addListener = (f: (...args: T) => void, options: { once?: boolean } = {}) => {\n if (options.once) {\n const handler = (...args: T) => {\n this.removeListener(handler);\n return f(...args);\n };\n this.listeners.push(handler);\n } else {\n this.listeners.push(f);\n }\n\n if (this.bufferedEvents.length > 0) {\n const eventsToEmit = this.bufferedEvents;\n\n this.bufferedEvents = [];\n\n eventsToEmit.forEach((event) => {\n this.emit(...event);\n });\n }\n\n return () => this.removeListener(f);\n };\n\n removeListener = (f: (...args: T) => void) => {\n const index = this.listeners.indexOf(f);\n\n if (index === -1) return;\n\n this.listeners.splice(index, 1);\n };\n\n emit = (...args: T) => {\n if (this.bufferEventsIfNoListeners && this.listeners.length === 0) {\n this.bufferedEvents.push(args);\n\n return;\n }\n\n this.listeners.forEach((l) => l(...args));\n };\n\n bufferedEvents: T[] = [];\n}\n","import { Emitter } from \"@noya-app/emitter\";\n\nexport class ClientStorage<K extends string = string> {\n getItem(storageKey: K): string | null {\n if (typeof localStorage === \"undefined\") {\n return null;\n }\n\n return localStorage.getItem(storageKey);\n }\n\n setItem(storageKey: K, value: string | null): void {\n if (typeof localStorage === \"undefined\") {\n return;\n }\n\n if (value === null) {\n localStorage.removeItem(storageKey);\n } else {\n localStorage.setItem(storageKey, value);\n }\n\n this.emitter.emit(storageKey, value);\n }\n\n emitter = new Emitter<[K, string | null]>();\n\n _isListening = false;\n\n addListener(\n storageKey: K,\n listener: (newValue: string | null) => void\n ): () => void {\n // Set up a single listener for all storage events\n if (!this._isListening && typeof window !== \"undefined\") {\n this._isListening = true;\n\n window.addEventListener(\"storage\", (event: StorageEvent) => {\n this.emitter.emit(event.key as any, event.newValue);\n });\n }\n\n return this.emitter.addListener((key, value) => {\n if (key === storageKey) {\n listener(value);\n }\n });\n }\n}\n\nexport const clientStorage = new ClientStorage();\n","export function assignRef<T>(\n ref: React.ForwardedRef<T> | undefined,\n value: T | null,\n): void {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n","// Given a KeyboardEvent, returns the nudge amount\nexport default function handleNudge(e: {\n key: string;\n shiftKey: boolean;\n altKey: boolean;\n}): number | undefined {\n let handled = false;\n let amount = 0;\n\n switch (e.key) {\n case 'ArrowUp':\n amount = 1;\n handled = true;\n break;\n case 'ArrowDown':\n amount = -1;\n handled = true;\n break;\n }\n\n if (!handled) return;\n\n if (e.shiftKey) {\n amount *= 10;\n } else if (e.altKey) {\n amount *= 0.1;\n }\n\n return handled ? amount : undefined;\n}\n","import { CheckIcon, ChevronRightIcon } from \"@noya-app/noya-icons\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport * as RadixDropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport React, {\n ComponentProps,\n ForwardedRef,\n SyntheticEvent,\n forwardRef,\n memo,\n useCallback,\n useMemo,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { MenuItemProps, MenuProps } from \"./ContextMenu\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport {\n CHECKBOX_RIGHT_INSET,\n CHECKBOX_WIDTH,\n KeyboardShortcut,\n SEPARATOR_ITEM,\n getKeyboardShortcutsForMenuItems,\n styles,\n} from \"./internal/Menu\";\n\n/* ----------------------------------------------------------------------------\n * Separator\n * ------------------------------------------------------------------------- */\n\nconst SeparatorElement = styled(RadixDropdownMenu.Separator)(\n styles.separatorStyle\n);\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\nconst ItemElement = styled(RadixDropdownMenu.Item)(styles.itemStyle);\n\nconst CheckboxItemElement = styled(RadixDropdownMenu.CheckboxItem)(\n styles.itemStyle\n);\n\nconst StyledItemIndicator = styled(RadixDropdownMenu.ItemIndicator)(\n styles.itemIndicatorStyle\n);\n\nconst DropdownMenuItem = memo(function ContextMenuItem<T extends string>({\n value,\n children,\n onSelect,\n checked,\n disabled,\n indented,\n icon,\n items,\n shortcut,\n}: MenuItemProps<T>) {\n const handleSelectItem = useCallback(() => {\n if (!value) return;\n\n onSelect(value);\n }, [onSelect, value]);\n\n if (checked) {\n return (\n <CheckboxItemElement\n checked={checked}\n disabled={disabled}\n onSelect={handleSelectItem}\n >\n <StyledItemIndicator>\n <CheckIcon />\n </StyledItemIndicator>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n </CheckboxItemElement>\n );\n }\n\n const element = (\n <ItemElement disabled={disabled} onSelect={handleSelectItem}>\n {indented && (\n <Spacer.Horizontal size={CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET} />\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n {shortcut && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={24} />\n <KeyboardShortcut shortcut={shortcut} />\n </>\n )}\n {items && items.length > 0 && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={16} />\n <ChevronRightIcon />\n </>\n )}\n </ItemElement>\n );\n\n if (items && items.length > 0) {\n return (\n <DropdownMenuRoot\n isNested\n items={items}\n onSelect={onSelect}\n alignOffset={-5}\n >\n {element}\n </DropdownMenuRoot>\n );\n } else {\n return element;\n }\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst Content = styled(RadixDropdownMenu.Content)(styles.contentStyle);\nconst SubContent = styled(RadixDropdownMenu.SubContent)(styles.contentStyle);\n\nconst DropdownMenuRoot = forwardRef(function DropdownMenuRoot<T extends string>(\n {\n items,\n children,\n onSelect,\n isNested,\n shouldBindKeyboardShortcuts,\n onOpenChange,\n open,\n onCloseAutoFocus,\n side,\n sideOffset = 4,\n align,\n alignOffset,\n collisionPadding = 8,\n }: MenuProps<T> & {\n open?: boolean;\n onCloseAutoFocus?: React.EventHandler<SyntheticEvent<unknown>>;\n } & Pick<\n ComponentProps<typeof RadixDropdownMenu.Content>,\n \"side\" | \"sideOffset\" | \"align\" | \"alignOffset\" | \"collisionPadding\"\n >,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const hasCheckedItem = items.some(\n (item) => item !== SEPARATOR_ITEM && item.checked\n );\n\n const keymap = useMemo(\n () =>\n isNested || shouldBindKeyboardShortcuts === false\n ? {}\n : getKeyboardShortcutsForMenuItems(items, onSelect),\n [isNested, items, onSelect, shouldBindKeyboardShortcuts]\n );\n\n useKeyboardShortcuts(keymap);\n\n const RootComponent = isNested\n ? RadixDropdownMenu.Sub\n : RadixDropdownMenu.Root;\n const TriggerComponent = isNested\n ? RadixDropdownMenu.SubTrigger\n : RadixDropdownMenu.Trigger;\n const ContentComponent = isNested ? SubContent : Content;\n\n const contentStyle = useMemo(() => ({ zIndex: 1000 }), []);\n\n return (\n <RootComponent onOpenChange={onOpenChange} open={open}>\n <TriggerComponent ref={forwardedRef as ForwardedRef<any>} asChild>\n {children}\n </TriggerComponent>\n <RadixDropdownMenu.Portal>\n <ContentComponent\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n style={contentStyle}\n collisionPadding={collisionPadding}\n {...({ onCloseAutoFocus } as any)}\n >\n {items.map((item, index) =>\n item === SEPARATOR_ITEM ? (\n <SeparatorElement key={index} />\n ) : (\n <DropdownMenuItem\n key={item.value ?? index}\n value={item.value}\n indented={hasCheckedItem}\n checked={item.checked ?? false}\n disabled={item.disabled ?? false}\n icon={item.icon}\n onSelect={onSelect}\n items={item.items}\n shortcut={item.shortcut}\n >\n {item.title}\n </DropdownMenuItem>\n )\n )}\n </ContentComponent>\n </RadixDropdownMenu.Portal>\n </RootComponent>\n );\n});\n\nexport const DropdownMenu = memo(DropdownMenuRoot);\n","import { getShortcutDisplayParts } from \"@noya-app/noya-keymap\";\nimport React, { memo, ReactNode } from \"react\";\nimport styled, { CSSObject } from \"styled-components\";\nimport { useDesignSystemConfiguration } from \"../../contexts/DesignSystemConfiguration\";\nimport { Theme } from \"../../theme\";\nimport withSeparatorElements from \"../../utils/withSeparatorElements\";\nimport { IconName } from \"../Icons\";\n\nexport const SEPARATOR_ITEM = \"separator\";\n\n// From electron\nexport type MenuItemRole =\n | \"undo\"\n | \"redo\"\n | \"cut\"\n | \"copy\"\n | \"paste\"\n | \"pasteAndMatchStyle\"\n | \"delete\"\n | \"selectAll\"\n | \"reload\"\n | \"forceReload\"\n | \"toggleDevTools\"\n | \"resetZoom\"\n | \"zoomIn\"\n | \"zoomOut\"\n | \"toggleSpellChecker\"\n | \"togglefullscreen\"\n | \"window\"\n | \"minimize\"\n | \"close\"\n | \"help\"\n | \"about\"\n | \"services\"\n | \"hide\"\n | \"hideOthers\"\n | \"unhide\"\n | \"quit\"\n | \"showSubstitutions\"\n | \"toggleSmartQuotes\"\n | \"toggleSmartDashes\"\n | \"toggleTextReplacement\"\n | \"startSpeaking\"\n | \"stopSpeaking\"\n | \"zoom\"\n | \"front\"\n | \"appMenu\"\n | \"fileMenu\"\n | \"editMenu\"\n | \"viewMenu\"\n | \"shareMenu\"\n | \"recentDocuments\"\n | \"toggleTabBar\"\n | \"selectNextTab\"\n | \"selectPreviousTab\"\n | \"mergeAllWindows\"\n | \"clearRecentDocuments\"\n | \"moveTabToNewWindow\"\n | \"windowMenu\";\n\nexport type RegularMenuItem<T extends string> = {\n value?: T;\n title: ReactNode;\n shortcut?: string;\n checked?: boolean;\n disabled?: boolean;\n icon?: Exclude<ReactNode, string> | IconName;\n items?: MenuItem<T>[];\n role?: MenuItemRole;\n};\n\nexport type MenuItem<T extends string> =\n | typeof SEPARATOR_ITEM\n | RegularMenuItem<T>;\n\n// Extract type T of RegularMenuItem<T> within MenuItem<T>\nexport type ExtractMenuItemType<T> =\n T extends RegularMenuItem<infer U> ? U : never;\n\nexport const CHECKBOX_WIDTH = 15;\nexport const CHECKBOX_RIGHT_INSET = 3;\n\nexport const styles = {\n separatorStyle: ({ theme }: { theme: Theme }): CSSObject => ({\n height: \"1px\",\n backgroundColor: theme.colors.divider,\n margin: \"4px -4px\",\n }),\n\n itemStyle: ({\n theme,\n disabled,\n }: {\n theme: Theme;\n disabled?: boolean;\n }): CSSObject => ({\n ...theme.textStyles.button,\n flex: \"0 0 auto\",\n userSelect: \"none\",\n cursor: \"pointer\",\n borderRadius: \"3px\",\n padding: \"6px 8px\",\n ...(disabled && {\n color: theme.colors.textDisabled,\n }),\n \"&:focus\": {\n outline: \"none\",\n color: \"white\",\n backgroundColor: theme.colors.primary,\n\n \"& kbd\": {\n color: \"white\",\n },\n },\n \"&:active\": {\n background: theme.colors.primaryLight,\n },\n display: \"flex\",\n alignItems: \"center\",\n }),\n\n itemIndicatorStyle: {\n display: \"flex\",\n alignItems: \"center\",\n left: `-${CHECKBOX_WIDTH / 2}px`,\n position: \"relative\",\n marginRight: `-${CHECKBOX_RIGHT_INSET}px`,\n } as CSSObject,\n\n contentStyle: ({\n theme,\n scrollable,\n }: {\n theme: Theme;\n scrollable?: boolean;\n }): CSSObject => ({\n borderRadius: 4,\n backgroundColor: theme.colors.popover.background,\n color: theme.colors.text,\n boxShadow: \"0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)\",\n padding: \"4px\",\n border: `1px solid ${theme.colors.popover.divider}`,\n zIndex: 1000,\n ...(scrollable && {\n height: \"100%\",\n maxHeight: \"calc(100vh - 80px)\",\n overflow: \"hidden auto\",\n }),\n }),\n};\n\nfunction getKeyboardShortcuts<T extends string>(\n item: MenuItem<T>\n): [string, T][] {\n if (item === SEPARATOR_ITEM) return [];\n\n if (item.items) return item.items.flatMap(getKeyboardShortcuts);\n\n if (item.disabled || !item.value || !item.shortcut) return [];\n\n return [[item.shortcut, item.value]];\n}\n\nexport function getKeyboardShortcutsForMenuItems<T extends string>(\n menuItems: MenuItem<T>[],\n onSelect: (type: T) => void\n): Record<string, () => void> {\n return Object.fromEntries(\n menuItems\n .flatMap(getKeyboardShortcuts)\n .map(([key, value]) => [key, () => onSelect(value)])\n );\n}\n\nconst ShortcutElement = styled.kbd<{\n $fixedWidth?: boolean;\n}>(\n ({ theme, $fixedWidth }): CSSObject => ({\n ...theme.textStyles.small,\n color: theme.colors.textDisabled,\n ...($fixedWidth && {\n width: \"0.9rem\",\n textAlign: \"center\",\n }),\n })\n);\n\nexport const KeyboardShortcut = memo(function KeyboardShortcut({\n shortcut,\n}: {\n shortcut: string;\n}) {\n const platform = useDesignSystemConfiguration().platform;\n\n const { keys, separator } = getShortcutDisplayParts(shortcut, platform);\n\n const keyElements = keys.map((key) => (\n <ShortcutElement\n key={key}\n $fixedWidth={platform === \"mac\" && key.length === 1}\n >\n {key}\n </ShortcutElement>\n ));\n\n return (\n <>\n {separator\n ? withSeparatorElements(\n keyElements,\n <ShortcutElement>{separator}</ShortcutElement>\n )\n : keyElements}\n </>\n );\n});\n","import { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport React, {\n AriaRole,\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n InputHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useGlobalInputBlurListener } from \"../../contexts/GlobalInputBlurContext\";\n\ntype Props = {\n id?: string;\n style?: any;\n className?: string;\n type?: \"text\" | \"search\";\n disabled?: boolean;\n value: string;\n placeholder?: string;\n role?: AriaRole;\n name?: HTMLInputElement[\"name\"];\n onKeyDown?: KeyboardEventHandler;\n onClick?: MouseEventHandler;\n onDoubleClick?: MouseEventHandler;\n onPointerDown?: PointerEventHandler;\n onFocusCapture?: FocusEventHandler;\n onFocusChange?: (isFocused: boolean) => void;\n onBlur?: FocusEventHandler;\n} & Pick<\n InputHTMLAttributes<HTMLInputElement>,\n \"autoComplete\" | \"autoCapitalize\" | \"autoCorrect\" | \"spellCheck\" | \"autoFocus\"\n>;\n\ntype ReadOnlyProps = Props & {\n readOnly: true;\n};\n\nconst ReadOnlyTextInput = forwardRef(function ReadOnlyTextInput(\n { onKeyDown, onFocusChange, value, ...rest }: ReadOnlyProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n return (\n <input\n ref={forwardedRef}\n {...rest}\n value={value}\n onKeyDown={onKeyDown}\n readOnly\n />\n );\n});\n\ntype ControlledProps = Props & {\n onChange: (value: string) => void;\n};\n\nconst ControlledTextInput = forwardRef(function ControlledTextInput(\n {\n onKeyDown,\n value,\n onChange,\n onFocusChange,\n onBlur,\n onFocusCapture,\n ...rest\n }: ControlledProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n\n onFocusChange?.(false);\n },\n [onBlur, onFocusChange]\n );\n\n const handleFocusCapture = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onFocusCapture?.(event);\n\n onFocusChange?.(true);\n },\n [onFocusCapture, onFocusChange]\n );\n\n return (\n <input\n ref={forwardedRef}\n {...rest}\n value={value}\n onKeyDown={onKeyDown}\n onChange={useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) =>\n onChange(event.target.value),\n [onChange]\n )}\n onBlur={handleBlur}\n onFocusCapture={handleFocusCapture}\n />\n );\n});\n\ntype SubmittableProps = Props & {\n onSubmit: (value: string) => void;\n allowSubmittingWithSameValue?: boolean;\n submitAutomaticallyAfterDelay?: number;\n};\n\nconst SubmittableTextInput = forwardRef(function SubmittableTextInput(\n {\n onKeyDown,\n value,\n onSubmit,\n onBlur,\n onFocusChange,\n onFocusCapture,\n allowSubmittingWithSameValue = false,\n submitAutomaticallyAfterDelay,\n ...rest\n }: SubmittableProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const ref = React.useRef<HTMLInputElement>(null);\n\n const latestValue = useRef(value);\n latestValue.current = value;\n\n // Track whether the user has edited the input since the last submission.\n // We use this to support automatically submitting the input after a delay.\n const userDidEdit = useRef(false);\n\n const isSubmitTriggeredByEscapeKey = useRef(false);\n\n const [internalValue, setInternalValue] = useState(\"\");\n\n useLayoutEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleSubmit = useCallback(() => {\n // If this submission was triggered with Escape, we attempt to submit the original value.\n // This will only actually call `onSubmit` if `allowSubmittingWithSameValue` is also true.\n const submissionValue = isSubmitTriggeredByEscapeKey.current\n ? value\n : internalValue;\n\n isSubmitTriggeredByEscapeKey.current = false;\n\n if (submissionValue === value && !allowSubmittingWithSameValue) return;\n\n onSubmit(submissionValue);\n\n userDidEdit.current = false;\n\n setInternalValue(latestValue.current);\n }, [allowSubmittingWithSameValue, value, internalValue, onSubmit]);\n\n useGlobalInputBlurListener(\n useCallback(() => {\n if (ref.current !== document.activeElement) return;\n\n handleSubmit();\n }, [handleSubmit])\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n handleSubmit();\n\n event.preventDefault();\n event.stopPropagation();\n } else if (event.key === \"Escape\") {\n isSubmitTriggeredByEscapeKey.current = true;\n\n ref.current?.blur();\n } else {\n onKeyDown?.(event);\n }\n },\n [onKeyDown, handleSubmit]\n );\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n userDidEdit.current = true;\n\n setInternalValue(event.target.value);\n },\n []\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n\n onFocusChange?.(false);\n\n handleSubmit();\n },\n [onBlur, onFocusChange, handleSubmit]\n );\n\n const handleFocusCapture = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onFocusCapture?.(event);\n\n onFocusChange?.(true);\n },\n [onFocusCapture, onFocusChange]\n );\n\n const autoSubmitTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const latestHandleSubmit = useRef(handleSubmit);\n latestHandleSubmit.current = handleSubmit;\n\n useEffect(() => {\n if (submitAutomaticallyAfterDelay) {\n if (autoSubmitTimeoutRef.current) {\n clearTimeout(autoSubmitTimeoutRef.current);\n }\n\n autoSubmitTimeoutRef.current = setTimeout(() => {\n if (userDidEdit.current === false) return;\n\n latestHandleSubmit.current();\n }, submitAutomaticallyAfterDelay);\n }\n\n // Clear the timeout when the component is unmounted or if the value changes\n return () => {\n if (autoSubmitTimeoutRef.current) {\n clearTimeout(autoSubmitTimeoutRef.current);\n }\n };\n // Track `internalValue` to explicitly reset the timer\n }, [internalValue, submitAutomaticallyAfterDelay]);\n\n return (\n <input\n ref={composeRefs(ref, forwardedRef)}\n {...rest}\n value={internalValue}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocusCapture={handleFocusCapture}\n />\n );\n});\n\nexport type TextInputProps = ReadOnlyProps | ControlledProps | SubmittableProps;\n\n/**\n * This component shouldn't be used directly. Instead use the InputField components.\n */\nexport default forwardRef(function TextInput(\n props: TextInputProps,\n forwardedRef: ForwardedRef<HTMLInputElement>\n) {\n const commonProps: TextInputProps = {\n onPointerDown: useCallback(\n (event: React.PointerEvent) => event.stopPropagation(),\n []\n ),\n onClick: useCallback(\n (event: React.MouseEvent) => event.stopPropagation(),\n []\n ),\n autoComplete: \"off\",\n autoCapitalize: \"off\",\n autoCorrect: \"off\",\n spellCheck: false,\n type: \"text\",\n disabled: false,\n ...props,\n };\n\n if (\"readOnly\" in commonProps) {\n return <ReadOnlyTextInput ref={forwardedRef} {...commonProps} readOnly />;\n } else if (\"onChange\" in commonProps) {\n return <ControlledTextInput ref={forwardedRef} {...commonProps} />;\n } else {\n return <SubmittableTextInput ref={forwardedRef} {...commonProps} />;\n }\n});\n","import { createContext, useContext, useEffect } from 'react';\n\nexport type GlobalInputBlurContextValue = {\n addListener: (f: () => void) => void;\n removeListener: (f: () => void) => void;\n trigger: () => void;\n};\n\nconst defaultValue = (() => {\n const listeners: (() => void)[] = [];\n\n const value: GlobalInputBlurContextValue = {\n addListener(f) {\n listeners.push(f);\n },\n removeListener(f) {\n const index = listeners.indexOf(f);\n if (index === -1) return;\n listeners.splice(index, 1);\n },\n trigger() {\n listeners.forEach((f) => {\n f();\n });\n },\n };\n\n return value;\n})();\n\nconst GlobalInputBlurContext =\n createContext<GlobalInputBlurContextValue>(defaultValue);\n\nexport const GlobalInputBlurProvider = GlobalInputBlurContext.Provider;\n\n/**\n * Some components store their editable state internally.\n * We trigger this event before selection changes so that they can commit their\n * edits before they unmount. This is more manual but simpler than doing so during\n * the unmount phase (e.g. the return function of `useEffect`), since handlers are\n * guaranteed to be called with the current data.\n */\nexport const useGlobalInputBlur = (): GlobalInputBlurContextValue => {\n return useContext(GlobalInputBlurContext);\n};\n\nexport function useGlobalInputBlurListener(f: () => void) {\n const context = useGlobalInputBlur();\n\n useEffect(() => {\n context.addListener(f);\n\n return () => {\n context.removeListener(f);\n };\n }, [context, f]);\n}\n\nexport function useGlobalInputBlurTrigger() {\n return useGlobalInputBlur().trigger;\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport React, { ComponentProps } from \"react\";\nimport styled from \"styled-components\";\nimport { IconButton } from \"./IconButton\";\n\ntype PopoverVariant = \"normal\" | \"large\";\n\nconst ContentElement = styled(PopoverPrimitive.Content)<{\n variant?: PopoverVariant;\n}>(({ theme, variant }) => ({\n borderRadius: 4,\n fontSize: 14,\n backgroundColor: theme.colors.popover.background,\n boxShadow: \"0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)\",\n maxHeight: \"600px\",\n overflowY: \"auto\",\n color: theme.colors.textMuted,\n ...(variant === \"large\" && { width: \"680px\" }),\n ...(variant === \"normal\" && { width: \"240px\" }),\n zIndex: 1000,\n}));\n\nconst ArrowElement = styled(PopoverPrimitive.Arrow)(({ theme }) => ({\n fill: theme.colors.popover.background,\n}));\n\nconst PopoverClose = styled(PopoverPrimitive.Close)(({ theme }) => ({\n all: \"unset\",\n fontFamily: \"inherit\",\n borderRadius: \"100%\",\n height: 25,\n width: 25,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n top: 5,\n right: 5,\n}));\n\ninterface Props\n extends Pick<\n ComponentProps<(typeof PopoverPrimitive)[\"Content\"]>,\n | \"onOpenAutoFocus\"\n | \"onCloseAutoFocus\"\n | \"onPointerDownOutside\"\n | \"onInteractOutside\"\n | \"onFocusOutside\"\n | \"side\"\n > {\n children: React.ReactNode;\n trigger: React.ReactNode;\n variant?: PopoverVariant;\n closable?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n sideOffset?: number;\n onClickClose?: () => void;\n showArrow?: boolean;\n}\n\nexport function Popover({\n children,\n trigger,\n variant,\n closable,\n open,\n side,\n sideOffset = 4,\n showArrow = true,\n onOpenChange,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n onClickClose,\n}: Props) {\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <PopoverPrimitive.Trigger asChild>{trigger}</PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <ContentElement\n variant={variant}\n side={side}\n align=\"center\"\n sideOffset={sideOffset}\n onOpenAutoFocus={onOpenAutoFocus}\n onCloseAutoFocus={onCloseAutoFocus}\n onInteractOutside={onInteractOutside}\n onFocusOutside={onFocusOutside}\n onPointerDownOutside={onPointerDownOutside}\n collisionPadding={8}\n arrowPadding={2}\n // Don't propagate pointer down events to the canvas\n // onPointerDown={(event) => {\n // event.stopPropagation();\n // }}\n // onWheel={(event) => {\n // event.stopPropagation();\n // }}\n >\n {children}\n {showArrow && <ArrowElement />}\n {closable && (\n <PopoverClose>\n <IconButton iconName=\"Cross2Icon\" onClick={onClickClose} />\n </PopoverClose>\n )}\n </ContentElement>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n","import { uuid } from \"@noya-app/noya-utils\";\nimport React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype FloatingWindowContextValue = {\n createWindow: (element: React.ReactNode) => string;\n closeWindow: (id: string) => void;\n};\n\nconst FloatingWindowContext = createContext<\n FloatingWindowContextValue | undefined\n>(undefined);\n\ntype CurrentWindowContextValue = {\n id: string;\n};\n\nconst CurrentWindowContext = createContext<\n CurrentWindowContextValue | undefined\n>(undefined);\n\nexport const FloatingWindowProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [windows, setWindows] = useState<Record<string, React.ReactNode>>({});\n\n const contextValue = useMemo(() => {\n const createWindow = (element: React.ReactNode) => {\n const id = uuid();\n\n setWindows((windows) => ({\n ...windows,\n [id]: (\n <CurrentWindowContext.Provider value={{ id }}>\n {element}\n </CurrentWindowContext.Provider>\n ),\n }));\n\n return id;\n };\n\n const closeWindow = (id: string) => {\n setWindows((windows) => {\n const { [id]: _, ...rest } = windows;\n return rest;\n });\n };\n\n return { createWindow, closeWindow };\n }, []);\n\n return (\n <FloatingWindowContext.Provider value={contextValue}>\n {children}\n {Object.entries(windows).map(([id, element]) =>\n createPortal(element, document.body, id)\n )}\n </FloatingWindowContext.Provider>\n );\n};\n\nexport const useFloatingWindowManager = () => {\n const context = useContext(FloatingWindowContext);\n\n if (!context) {\n throw new Error(\n \"useFloatingWindow must be used within a FloatingWindowProvider\"\n );\n }\n\n return context;\n};\n\nexport const useCurrentFloatingWindowInternal = () => {\n const context = useContext(CurrentWindowContext);\n\n if (!context) {\n throw new Error(\"useCurrentWindow must be used within a FloatingWindow\");\n }\n\n return context;\n};\n","// From: https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/src/useHover.ts\n// MIT License\n\n// This code is a fork of `react-aria`'s `useHover` hook. The code in this file are based on code\n// from both `react-aria` and `react-interactions`. Original licensing for each project can be found\n// in the the root directories of each respective repository.\n//\n// @see https://github.com/adobe/react-spectrum/tree/452d1cb6a49f9f493757737edaf2b64014108de6/packages/%40react-aria\n// @see https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport * as React from 'react';\n\nexport interface HoverEvent {\n /** The type of hover event being fired. */\n type: 'hoverstart' | 'hoverend';\n /** The pointer type that triggered the hover event. */\n pointerType: 'mouse' | 'pen';\n /** The target element of the hover event. */\n target: HTMLElement;\n}\n\nexport interface HoverEvents {\n /** Handler that is called when a hover interaction starts. */\n onHoverStart?(e: HoverEvent): void;\n /** Handler that is called when a hover interaction ends. */\n onHoverEnd?(e: HoverEvent): void;\n /** Handler that is called when the hover state changes. */\n onHoverChange?(isHovering: boolean): void;\n}\n\nexport interface HoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean;\n}\n\ninterface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: React.HTMLAttributes<HTMLElement>;\n isHovered: boolean;\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter with\n // pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other devices that\n // don't have this quirk, we don't want to ignore a mouse hover sometime in the distant future\n // because a user previously touched the element.\n setTimeout(function clearGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener('pointerup', handleGlobalPointerEvent);\n\n hoverCount++;\n return function teardownGlobalTouchEvents() {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n document.removeEventListener('pointerup', handleGlobalPointerEvent);\n };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps = {}): HoverResult {\n const { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;\n\n const [isHovered, setHovered] = React.useState(false);\n const state = React.useRef({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n }).current;\n\n React.useEffect(setupGlobalTouchEvents, []);\n\n const hoverProps = React.useMemo(\n function getHoverProps() {\n function triggerHoverStart(\n event: PointerEvent | React.PointerEvent | MouseEvent | React.MouseEvent,\n pointerType: 'mouse' | 'pen' | 'touch'\n ) {\n if (isDisabled || pointerType === 'touch' || state.isHovered) {\n return;\n }\n\n state.isHovered = true;\n const target = event.target as HTMLElement;\n\n if (onHoverStart) {\n onHoverStart({\n type: 'hoverstart',\n target,\n pointerType,\n });\n }\n\n if (onHoverChange) {\n onHoverChange(true);\n }\n\n setHovered(true);\n }\n\n function triggerHoverEnd(\n event: PointerEvent | React.PointerEvent | MouseEvent | React.MouseEvent,\n pointerType: 'mouse' | 'pen' | 'touch'\n ) {\n if (isDisabled || pointerType === 'touch' || !state.isHovered) {\n return;\n }\n\n state.isHovered = false;\n const target = event.target as HTMLElement;\n\n if (onHoverEnd) {\n onHoverEnd({\n type: 'hoverend',\n target,\n pointerType,\n });\n }\n\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n setHovered(false);\n }\n\n const hoverProps: React.HTMLAttributes<HTMLElement> = {\n onPointerEnter(event: React.PointerEvent<HTMLElement>) {\n if (globalIgnoreEmulatedMouseEvents && event.pointerType === 'mouse') {\n return;\n }\n triggerHoverStart(event, event.pointerType);\n },\n onPointerLeave(event: React.PointerEvent<HTMLElement>) {\n triggerHoverEnd(event, event.pointerType);\n },\n };\n\n return hoverProps;\n },\n [isDisabled, state, onHoverStart, onHoverChange, onHoverEnd]\n );\n\n return {\n hoverProps,\n isHovered,\n };\n}","import { CheckIcon, ChevronRightIcon } from \"@noya-app/noya-icons\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport * as RadixContextMenu from \"@radix-ui/react-context-menu\";\nimport React, { ReactNode, memo, useCallback, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport {\n CHECKBOX_RIGHT_INSET,\n CHECKBOX_WIDTH,\n KeyboardShortcut,\n MenuItem,\n SEPARATOR_ITEM,\n getKeyboardShortcutsForMenuItems,\n styles,\n} from \"./internal/Menu\";\n\n/* ----------------------------------------------------------------------------\n * Separator\n * ------------------------------------------------------------------------- */\n\nconst SeparatorElement = styled(RadixContextMenu.Separator)(\n styles.separatorStyle\n);\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\nconst ItemElement = styled(RadixContextMenu.Item)(styles.itemStyle);\n\nconst CheckboxItemElement = styled(RadixContextMenu.CheckboxItem)(\n styles.itemStyle\n);\n\nconst StyledItemIndicator = styled(RadixContextMenu.ItemIndicator)(\n styles.itemIndicatorStyle\n);\n\nexport interface MenuItemProps<T extends string> {\n value?: T;\n children: ReactNode;\n onSelect: (value: T) => void;\n checked: boolean;\n disabled: boolean;\n indented: boolean;\n shortcut?: string;\n icon?: ReactNode;\n items?: MenuItem<T>[];\n}\n\nconst ContextMenuItem = memo(function ContextMenuItem<T extends string>({\n value,\n children,\n onSelect,\n checked,\n disabled,\n indented,\n icon,\n items,\n shortcut,\n}: MenuItemProps<T>) {\n // The pointer event within the context menu will bubble outside of the\n // context menu unless we stop it here.\n const handlePointerDown = useCallback(\n (event: React.PointerEvent) => event.stopPropagation(),\n []\n );\n\n const handleSelectItem = useCallback(() => {\n if (!value) return;\n\n onSelect(value);\n }, [onSelect, value]);\n\n if (checked) {\n return (\n <CheckboxItemElement\n checked={checked}\n disabled={disabled}\n onSelect={handleSelectItem}\n >\n <StyledItemIndicator>\n <CheckIcon />\n </StyledItemIndicator>\n {children}\n </CheckboxItemElement>\n );\n }\n\n const element = (\n <ItemElement\n disabled={disabled}\n onSelect={handleSelectItem}\n onPointerDown={handlePointerDown}\n >\n {indented && (\n <Spacer.Horizontal size={CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET} />\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n {children}\n {shortcut && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={24} />\n <KeyboardShortcut shortcut={shortcut} />\n </>\n )}\n {items && items.length > 0 && (\n <>\n <Spacer.Horizontal />\n <Spacer.Horizontal size={16} />\n <ChevronRightIcon />\n </>\n )}\n </ItemElement>\n );\n\n if (items && items.length > 0) {\n return (\n <ContextMenuRoot isNested items={items} onSelect={onSelect}>\n {element}\n </ContextMenuRoot>\n );\n } else {\n return element;\n }\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst Content = styled(RadixContextMenu.Content)(styles.contentStyle);\nconst SubContent = styled(RadixContextMenu.SubContent)(styles.contentStyle);\n\nexport interface MenuProps<T extends string> {\n children: ReactNode;\n items: MenuItem<T>[];\n onSelect: (value: T) => void;\n isNested?: boolean;\n shouldBindKeyboardShortcuts?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction ContextMenuRoot<T extends string>({\n items,\n children,\n onSelect,\n isNested,\n shouldBindKeyboardShortcuts,\n onOpenChange,\n}: MenuProps<T>) {\n const hasCheckedItem = items.some(\n (item) => item !== SEPARATOR_ITEM && item.checked\n );\n\n const keymap = useMemo(\n () =>\n isNested || shouldBindKeyboardShortcuts === false\n ? {}\n : getKeyboardShortcutsForMenuItems(items, onSelect),\n [isNested, items, onSelect, shouldBindKeyboardShortcuts]\n );\n\n useKeyboardShortcuts(keymap);\n\n // We call preventDefault both to:\n // - Disable radix-ui's long-press-to-open behavior\n // https://github.com/radix-ui/primitives/issues/748#issuecomment-869502837\n // - Mark the event as handled, so our ListView root doesn't handle it (a hack)\n const onPointerDown = useCallback((event: React.PointerEvent) => {\n event.preventDefault();\n }, []);\n\n const RootComponent = isNested ? RadixContextMenu.Sub : RadixContextMenu.Root;\n const TriggerComponent = isNested\n ? RadixContextMenu.SubTrigger\n : RadixContextMenu.Trigger;\n const ContentComponent: typeof Content = isNested ? SubContent : Content;\n\n return (\n <RootComponent onOpenChange={onOpenChange}>\n <TriggerComponent asChild onPointerDown={onPointerDown}>\n {children}\n </TriggerComponent>\n <RadixContextMenu.Portal>\n <ContentComponent>\n {items.map((item, index) =>\n item === SEPARATOR_ITEM ? (\n <SeparatorElement key={index} />\n ) : (\n <ContextMenuItem\n key={item.value ?? index}\n value={item.value}\n indented={hasCheckedItem}\n checked={item.checked ?? false}\n disabled={item.disabled ?? false}\n icon={item.icon}\n onSelect={onSelect}\n items={item.items}\n shortcut={item.shortcut}\n >\n {item.title}\n </ContextMenuItem>\n )\n )}\n </ContentComponent>\n </RadixContextMenu.Portal>\n </RootComponent>\n );\n}\n\nexport const ContextMenu = memo(ContextMenuRoot);\n","import React, { memo } from \"react\";\nimport styled from \"styled-components\";\n\n/* ----------------------------------------------------------------------------\n * Divider\n * ------------------------------------------------------------------------- */\n\ntype DividerVariant = \"normal\" | \"strong\" | \"subtle\";\n\nconst DividerContainer = styled.div<\n DividerProps_ & {\n $orientation: \"horizontal\" | \"vertical\";\n }\n>(({ theme, $variant = \"normal\", $orientation, $overflow = 0 }) => ({\n ...($orientation === \"horizontal\"\n ? { height: \"1px\", minHeight: \"1px\", margin: `0px -${$overflow}px` }\n : { width: \"1px\", minWidth: \"1px\", margin: `-${$overflow}px 0px` }),\n background:\n $variant === \"strong\"\n ? theme.colors.dividerStrong\n : $variant === \"subtle\"\n ? theme.colors.dividerSubtle\n : theme.colors.divider,\n alignSelf: \"stretch\",\n}));\n\ninterface DividerProps_ {\n $variant?: DividerVariant;\n $overflow?: number;\n}\n\ninterface DividerProps {\n variant?: DividerVariant;\n overflow?: number;\n}\n\nexport const Divider = memo(function Divider({\n variant,\n overflow,\n ...props\n}: DividerProps) {\n return (\n <DividerContainer\n $orientation=\"horizontal\"\n $variant={variant}\n $overflow={overflow}\n {...props}\n />\n );\n});\n\nexport const DividerVertical = memo(function DividerVertical({\n variant,\n overflow,\n ...props\n}: DividerProps) {\n return (\n <DividerContainer\n $orientation=\"vertical\"\n $variant={variant}\n $overflow={overflow}\n {...props}\n />\n );\n});\n","import { DragHandleDots2Icon } from \"@noya-app/noya-icons\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useDesignSystemTheme } from \"../contexts/DesignSystemConfiguration\";\nimport { DropdownMenu } from \"./DropdownMenu\";\nimport { MenuItem } from \"./internal/Menu\";\n\nconst DotButtonElement = styled.div(({ theme }) => ({\n cursor: \"pointer\",\n borderRadius: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"2px 0\",\n \"&:hover\": {\n background: theme.colors.inputBackgroundLight,\n },\n \"&:active\": {\n background: theme.colors.activeBackground,\n },\n}));\n\nconst TriggerElement = styled.div({\n pointerEvents: \"none\",\n height: \"15px\",\n});\n\n/**\n * A button that opens a menu when clicked, but also allows dragging the\n */\nexport const DraggableMenuButton = memo(function DraggableMenuButton<\n T extends string,\n>({\n items,\n onSelect,\n isVisible = true,\n}: {\n items?: MenuItem<T>[];\n onSelect?: (value: T) => void;\n isVisible?: boolean;\n}) {\n const color = useDesignSystemTheme().colors.icon;\n const [open, setOpen] = useState(false);\n const [downPosition, setDownPosition] = React.useState<{\n x: number;\n y: number;\n } | null>(null);\n\n const handlePointerDownCapture = useCallback(\n (event: React.PointerEvent) => {\n if (open) {\n setDownPosition(null);\n return;\n }\n\n setDownPosition({\n x: event.clientX,\n y: event.clientY,\n });\n },\n [open]\n );\n\n const handlePointerUp = useCallback(\n (event: React.PointerEvent) => {\n if (open || !downPosition) {\n setDownPosition(null);\n return;\n }\n\n const dx = event.clientX - downPosition.x;\n const dy = event.clientY - downPosition.y;\n\n const distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n\n if (distance < 5) {\n setOpen(true);\n }\n\n setDownPosition(null);\n },\n [downPosition, open]\n );\n\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) setOpen(false);\n },\n [setOpen]\n );\n\n return (\n <DotButtonElement\n onPointerDownCapture={handlePointerDownCapture}\n onPointerUp={handlePointerUp}\n onClick={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n {items && onSelect ? (\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n items={items}\n onSelect={onSelect}\n shouldBindKeyboardShortcuts={false}\n >\n <TriggerElement>\n <DragHandleDots2Icon\n color={isVisible || open ? color : \"transparent\"}\n />\n </TriggerElement>\n </DropdownMenu>\n ) : (\n <DragHandleDots2Icon\n color={isVisible || open ? color : \"transparent\"}\n />\n )}\n </DotButtonElement>\n );\n});\n","import { Sketch } from \"@noya-app/noya-file-format\";\nimport React, { CSSProperties, ForwardedRef, forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\nimport { SketchPattern } from \"../utils/sketchPattern\";\nimport { FillPreviewBackground } from \"./FillPreviewBackground\";\n\nconst Container = styled.button<{ $flex?: CSSProperties[\"flex\"] }>(\n ({ theme, $flex }) => ({\n outline: \"none\",\n padding: 0,\n width: \"50px\",\n height: \"27px\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n border: \"none\",\n boxShadow: `0 0 0 1px ${theme.colors.divider} inset`,\n background: \"transparent\",\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`,\n },\n position: \"relative\",\n flex: $flex,\n })\n);\n\ninterface Props {\n id?: string;\n value?: Sketch.Color | Sketch.Gradient | SketchPattern;\n flex?: CSSProperties[\"flex\"];\n}\n\nexport const FillInputField = memo(\n forwardRef(function FillInputField(\n { id, value, flex, ...rest }: Props,\n ref: ForwardedRef<HTMLButtonElement>\n ) {\n return (\n <Container ref={ref} id={id} $flex={flex} {...rest}>\n <FillPreviewBackground value={value} />\n </Container>\n );\n })\n);\n","/**\n * UUID string.\n */\nexport type Uuid = string;\n/**\n * Collection of global document objects\n */\nexport type AssetCollection = {\n _class: 'assetCollection';\n do_objectID: Uuid;\n imageCollection?: ImageCollection;\n colorAssets: ColorAsset[];\n gradientAssets: GradientAsset[];\n images: (FileRef | DataRef)[];\n colors: Color[];\n gradients: Gradient[];\n exportPresets: [];\n};\n/**\n * Legacy object only retained for migrating older documents.\n */\nexport type ImageCollection = {\n _class: 'imageCollection';\n images: any;\n};\n/**\n * Defines a reusable color asset\n */\nexport type ColorAsset = {\n _class: 'MSImmutableColorAsset';\n do_objectID: Uuid;\n name: string;\n color: Color;\n};\n/**\n * Defines a RGBA color value\n */\nexport type Color = {\n _class: 'color';\n alpha: UnitInterval;\n red: UnitInterval;\n green: UnitInterval;\n blue: UnitInterval;\n swatchID?: Uuid;\n colorSpaces?: {\n hsva?: {\n hue: number;\n saturation: number;\n value: number;\n alpha: number;\n };\n };\n};\n/**\n * The set of all real numbers that are greater than or equal to 0 and less than or equal to 1. Used within Sketch documents to encode normalised scalar values, for example RGB color components.\n */\nexport type UnitInterval = number;\n/**\n * Defines a reusable gradient asset\n */\nexport type GradientAsset = {\n _class: 'MSImmutableGradientAsset';\n do_objectID: Uuid;\n name: string;\n gradient: Gradient;\n};\n/**\n * Defines a gradient\n */\nexport type Gradient = {\n _class: 'gradient';\n gradientType: GradientType;\n elipseLength: number;\n from: PointString;\n to: PointString;\n stops: GradientStop[];\n};\n/**\n * Enumeration of the gradient types\n */\nexport enum GradientType {\n Linear = 0,\n Radial = 1,\n Angular = 2,\n}\n/**\n * A formatted string representation of a 2D point, e.g. {1, 1}.\n \n */\nexport type PointString = string;\n/**\n * Defines a position on a gradient that marks the end of a transition to a new color\n */\nexport type GradientStop = {\n _class: 'gradientStop';\n color: Color;\n position: UnitInterval;\n};\n/**\n * Defines a reference to a file within the document bundle\n */\nexport type FileRef = {\n _class: 'MSJSONFileReference';\n _ref_class: 'MSImageData' | 'MSImmutablePage' | 'MSPatch';\n _ref: string;\n};\n/**\n * Defines inline base64 data\n */\nexport type DataRef = {\n _class: 'MSJSONOriginalDataReference';\n _ref_class: 'MSImageData' | 'MSFontData';\n _ref: string;\n data: {\n _data: string;\n };\n sha1: {\n _data: string;\n };\n};\n/**\n * Enumeration of the color profiles Sketch can use to render a document\n */\nexport enum ColorSpace {\n Unmanaged = 0,\n SRGB = 1,\n P3 = 2,\n}\n/**\n * Defines a layer style that has been imported from a library\n */\nexport type ForeignLayerStyle = {\n _class: 'MSImmutableForeignLayerStyle';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteStyleID: Uuid;\n localSharedStyle: SharedStyle;\n};\n/**\n * Defines a reusable style\n */\nexport type SharedStyle = {\n _class: 'sharedStyle';\n do_objectID: Uuid;\n name: string;\n value: Style;\n};\n/**\n * Defines a layer style\n */\nexport type Style = {\n _class: 'style';\n do_objectID: Uuid;\n borders?: Border[];\n borderOptions: BorderOptions;\n blur?: Blur;\n fills?: Fill[];\n startMarkerType: MarkerType;\n endMarkerType: MarkerType;\n miterLimit: number;\n windingRule: WindingRule;\n textStyle?: TextStyle;\n shadows?: Shadow[];\n innerShadows: InnerShadow[];\n contextSettings?: GraphicsContextSettings;\n colorControls: ColorControls;\n};\n/**\n * Defines a border style\n */\nexport type Border = {\n _class: 'border';\n isEnabled: boolean;\n color: Color;\n fillType: FillType;\n position: BorderPosition;\n thickness: number;\n contextSettings: GraphicsContextSettings;\n gradient: Gradient;\n};\n/**\n * Enumeration of the fill types\n */\nexport enum FillType {\n Color = 0,\n Gradient = 1,\n Pattern = 4,\n Shader = -101,\n}\n/**\n * Enumeration of border positions\n */\nexport enum BorderPosition {\n Center = 0,\n Inside = 1,\n Outside = 2,\n}\n/**\n * Defines the opacity and blend mode of a style or shadow\n */\nexport type GraphicsContextSettings = {\n _class: 'graphicsContextSettings';\n blendMode: BlendMode;\n opacity: number;\n};\n/**\n * Enumeration of the blend modes that can be applied to fills\n */\nexport enum BlendMode {\n Normal = 0,\n Darken = 1,\n Multiply = 2,\n ColorBurn = 3,\n Lighten = 4,\n Screen = 5,\n ColorDodge = 6,\n Overlay = 7,\n SoftLight = 8,\n HardLight = 9,\n Difference = 10,\n Exclusion = 11,\n Hue = 12,\n Saturation = 13,\n Color = 14,\n Luminosity = 15,\n PlusDarker = 16,\n PlusLighter = 17,\n}\n/**\n * Defines border options\n */\nexport type BorderOptions = {\n _class: 'borderOptions';\n isEnabled: boolean;\n dashPattern: number[];\n lineCapStyle: LineCapStyle;\n lineJoinStyle: LineJoinStyle;\n};\n/**\n * Enumeration of the line cap styles\n */\nexport enum LineCapStyle {\n Butt = 0,\n Round = 1,\n Projecting = 2,\n}\n/**\n * Enumeration of the line join styles\n */\nexport enum LineJoinStyle {\n Miter = 0,\n Round = 1,\n Bevel = 2,\n}\n/**\n * Defines a blur style\n */\nexport type Blur = {\n _class: 'blur';\n isEnabled: boolean;\n center: PointString;\n motionAngle?: number;\n radius?: number;\n saturation: number;\n type: BlurType;\n};\n/**\n * Enumeration of the various blur types\n */\nexport enum BlurType {\n Gaussian = 0,\n Motion = 1,\n Zoom = 2,\n Background = 3,\n}\n/**\n * Defines a fill style\n */\nexport type Fill = {\n _class: 'fill';\n isEnabled: boolean;\n color: Color;\n fillType: FillType;\n noiseIndex: number;\n noiseIntensity: number;\n patternFillType: PatternFillType;\n patternTileScale: number;\n contextSettings: GraphicsContextSettings;\n gradient: Gradient;\n image?: FileRef | DataRef;\n shader?: Shader;\n};\n/**\n * Enumeration of pattern fill types\n */\nexport enum PatternFillType {\n Tile = 0,\n Fill = 1,\n Stretch = 2,\n Fit = 3,\n}\n/**\n * Defines a shader\n */\nexport type Shader = {\n _class: 'shader';\n shaderString: string;\n variables: ShaderVariable[];\n};\n/**\n * Defines a variable to be passed to the shader as a uniform\n */\nexport type ShaderVariable = {\n _class: 'shaderVariable';\n name: string;\n value:\n | {\n type: 'integer';\n data: number;\n }\n | {\n type: 'float';\n data: number;\n }\n | {\n type: 'float2';\n data: { x: number; y: number };\n }\n | {\n type: 'color';\n data: Color;\n };\n};\n/**\n * Enumeration of the possible types of vector line endings\n */\nexport enum MarkerType {\n OpenArrow = 0,\n FilledArrow = 1,\n Line = 2,\n OpenCircle = 3,\n FilledCircle = 4,\n OpenSquare = 5,\n FilledSquare = 6,\n}\n/**\n * Enumeration of the winding rule that controls how fills behave in shapes with complex paths\n */\nexport enum WindingRule {\n NonZero = 0,\n EvenOdd = 1,\n}\n/**\n * Defines text style\n */\nexport type TextStyle = {\n _class: 'textStyle';\n verticalAlignment: TextVerticalAlignment;\n encodedAttributes: {\n paragraphStyle?: ParagraphStyle;\n MSAttributedStringTextTransformAttribute?: TextTransform;\n underlineStyle?: UnderlineStyle;\n strikethroughStyle?: {};\n kerning?: number;\n MSAttributedStringFontAttribute: FontDescriptor;\n textStyleVerticalAlignmentKey?: TextVerticalAlignment;\n MSAttributedStringColorAttribute?: Color;\n };\n};\n/**\n * Enumeration of the text style vertical alighment options\n */\nexport enum TextVerticalAlignment {\n Top = 0,\n Middle = 1,\n Bottom = 2,\n}\n/**\n * Defines the paragraph style within a text style\n */\nexport type ParagraphStyle = {\n _class: 'paragraphStyle';\n alignment?: TextHorizontalAlignment;\n maximumLineHeight?: number;\n minimumLineHeight?: number;\n paragraphSpacing?: number;\n allowsDefaultTighteningForTruncation?: number;\n};\n/**\n * Enumeration of the horizontal alignment options for paragraphs\n */\nexport enum TextHorizontalAlignment {\n Left = 0,\n Right = 1,\n Centered = 2,\n Justified = 3,\n Natural = 4,\n}\n/**\n * Enumeration of the text style transformations options\n */\nexport enum TextTransform {\n None = 0,\n Uppercase = 1,\n Lowercase = 2,\n}\n/**\n * Enumeration of the text style underline options\n */\nexport enum UnderlineStyle {\n None = 0,\n Underlined = 1,\n}\n/**\n * Defines a font selection\n */\nexport type FontDescriptor = {\n _class: 'fontDescriptor';\n attributes: {\n name: string;\n size: number;\n variation?: {\n [key: string]: number;\n };\n };\n};\n/**\n * Defines a shadow style\n */\nexport type Shadow = {\n _class: 'shadow';\n isEnabled: boolean;\n blurRadius: number;\n color: Color;\n contextSettings: GraphicsContextSettings;\n offsetX: number;\n offsetY: number;\n spread: number;\n};\n/**\n * Defines an inner shadow style\n */\nexport type InnerShadow = {\n _class: 'innerShadow';\n isEnabled: boolean;\n blurRadius: number;\n color: Color;\n contextSettings: GraphicsContextSettings;\n offsetX: number;\n offsetY: number;\n spread: number;\n};\n/**\n * Defines color adjust styles on images\n */\nexport type ColorControls = {\n _class: 'colorControls';\n isEnabled: boolean;\n brightness: number;\n contrast: number;\n hue: number;\n saturation: number;\n};\n/**\n * Defines a symbol that has been imported from a library\n */\nexport type ForeignSymbol = {\n _class: 'MSImmutableForeignSymbol';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n originalMaster: SymbolMaster;\n symbolMaster: SymbolMaster;\n missingLibraryFontAcknowledged?: boolean;\n};\n/**\n * A symbol source layer represents a reusable group of layers\n */\nexport type SymbolMaster = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'symbolMaster';\n backgroundColor: Color;\n hasBackgroundColor: boolean;\n includeBackgroundColorInInstance: boolean;\n includeBackgroundColorInExport: boolean;\n isFlowHome: boolean;\n resizesContent: boolean;\n presetDictionary?: any;\n symbolID: Uuid;\n allowsOverrides: boolean;\n overrideProperties: OverrideProperty[];\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n blockDefinition?: BlockDefinition;\n};\n/**\n * Enumeration of the boolean operations that can be applied to combine shapes\n */\nexport enum BooleanOperation {\n None = -1,\n Union = 0,\n Subtract = 1,\n Intersection = 2,\n Difference = 3,\n}\n/**\n * Defines a layer's export options\n */\nexport type ExportOptions = {\n _class: 'exportOptions';\n exportFormats: ExportFormat[];\n includedLayerIds: Uuid[];\n layerOptions: number;\n shouldTrim: boolean;\n};\n/**\n * Defines an export format, as listed in a layer's export options\n */\nexport type ExportFormat = {\n _class: 'exportFormat';\n absoluteSize: number;\n fileFormat: ExportFileFormat;\n name: string;\n namingScheme?: ExportFormatNamingScheme;\n scale: number;\n visibleScaleType: VisibleScaleType;\n};\n/**\n * Enumeration of the file formats that can be selected in the layer export options\n */\nexport enum ExportFileFormat {\n PNG = 'png',\n JPG = 'jpg',\n TIFF = 'tiff',\n EPS = 'eps',\n PDF = 'pdf',\n WEBP = 'webp',\n SVG = 'svg',\n}\n/**\n * Enumeration of the possible types of export format naming schemes\n */\nexport enum ExportFormatNamingScheme {\n Suffix = 0,\n Prefix = 1,\n}\n/**\n * Enumeration of the possible values to control how an exported layer will be scaled\n */\nexport enum VisibleScaleType {\n Scale = 0,\n Width = 1,\n Height = 2,\n}\n/**\n * Defines an abstract rectangle\n */\nexport type Rect = {\n _class: 'rect';\n constrainProportions: boolean;\n height: number;\n width: number;\n x: number;\n y: number;\n};\n/**\n * Defines a connection between elements in a prototype\n */\nexport type FlowConnection = {\n _class: 'MSImmutableFlowConnection';\n destinationArtboardID: Uuid | 'back';\n animationType: AnimationType;\n maintainScrollPosition?: boolean;\n};\n/**\n * Enumeration of the animation transition types between prototype screens\n */\nexport enum AnimationType {\n None = 0,\n SlideFromLeft = 1,\n SlideFromRight = 2,\n SlideFromBottom = 3,\n SlideFromTop = 4,\n}\n/**\n * Enumeration of the expansion states in the layer list UI\n */\nexport enum LayerListExpanded {\n Undecided = 0,\n Collapsed = 1,\n Expanded = 2,\n}\n/**\n * Enumeration of the possible resize types\n */\nexport enum ResizeType {\n Stretch = 0,\n PinToEdge = 1,\n Resize = 2,\n Float = 3,\n}\n/**\n * Defines persisted ruler positions on artboards, pages and symbols\n */\nexport type RulerData = {\n _class: 'rulerData';\n base: number;\n guides: number[];\n};\n/**\n * Defines the layout settings for an artboard or page\n */\nexport type LayoutGrid = {\n _class: 'layoutGrid';\n isEnabled: boolean;\n columnWidth: number;\n gutterHeight: number;\n gutterWidth: number;\n horizontalOffset: number;\n numberOfColumns: number;\n rowHeightMultiplication: number;\n totalWidth: number;\n guttersOutside: boolean;\n drawHorizontal: boolean;\n drawHorizontalLines: boolean;\n drawVertical: boolean;\n};\n/**\n * Defines the grid settings for an artboard or page\n */\nexport type SimpleGrid = {\n _class: 'simpleGrid';\n isEnabled: boolean;\n gridSize: number;\n thickGridTimes: number;\n};\n/**\n * Normal group layout\n */\nexport type FreeformGroupLayout = {\n _class: 'MSImmutableFreeformGroupLayout';\n};\n/**\n * Inferred group layout defines smart layout options\n */\nexport type InferredGroupLayout = {\n _class: 'MSImmutableInferredGroupLayout';\n axis: InferredLayoutAxis;\n layoutAnchor: InferredLayoutAnchor;\n maxSize?: number;\n minSize?: number;\n};\n/**\n * Enumeration of the axis types for inferred (aka smart) layout\n */\nexport enum InferredLayoutAxis {\n Horizontal = 0,\n Vertical = 1,\n}\n/**\n * Enumeration of the anchor types for inferred (aka smart) layout\n */\nexport enum InferredLayoutAnchor {\n Min = 0,\n Middle = 1,\n Max = 2,\n}\n/**\n * Defines override properties on symbol sources\n */\nexport type OverrideProperty = {\n _class: 'MSImmutableOverrideProperty';\n overrideName: OverrideName;\n canOverride: boolean;\n};\n/**\n * Defines the valid string patterns for an override name\n */\nexport type OverrideName = string | string | string | string;\n/**\n * Group layers are a document organisation aid\n */\nexport type Group = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n _class: 'group';\n};\n\nexport type NoyaElementType = 'primitive' | 'instance';\n\nexport type NoyaElement = {\n do_objectID: Uuid;\n _class: 'noyaElement';\n name?: string;\n type: NoyaElementType;\n componentID: Uuid;\n // Can strings be children?\n children: NoyaElement[];\n classNames: string[];\n};\n\nexport type NoyaComponent = {\n do_objectID: Uuid;\n _class: 'noyaComponent';\n name: string;\n rootElement: NoyaElement;\n componentID: Uuid;\n};\n\nexport type CustomLayer<T = unknown> = Omit<\n Group,\n '_class' | 'layers' | 'hasClickThrough'\n> & {\n _class: 'customLayer';\n data: T;\n};\n\n/**\n * Oval layers are the result of adding an oval shape to the canvas\n */\nexport type Oval = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'oval';\n};\n/**\n * Enumeration of the possible values for corner rounding on shape points.\n */\nexport enum PointsRadiusBehaviour {\n Disabled = -1,\n Legacy = 0,\n Rounded = 1,\n Smooth = 2,\n}\n/**\n * Defines a shape layer curve point\n */\nexport type CurvePoint = {\n _class: 'curvePoint';\n cornerRadius: number;\n curveFrom: PointString;\n curveTo: PointString;\n hasCurveFrom: boolean;\n hasCurveTo: boolean;\n curveMode: CurveMode;\n point: PointString;\n};\n/**\n * Enumeration of the curve modes that can be applied to vector points\n */\nexport enum CurveMode {\n None = 0,\n Straight = 1,\n Mirrored = 2,\n Asymmetric = 3,\n Disconnected = 4,\n}\n/**\n * Polygon layers are the result of adding a polygon shape to the canvas\n */\nexport type Polygon = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'polygon';\n numberOfPoints: number;\n};\n/**\n * Rectangle layers are the result of adding a rectangle shape to the canvas\n */\nexport type Rectangle = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'rectangle';\n fixedRadius: number;\n hasConvertedToNewRoundCorners: boolean;\n needsConvertionToNewRoundCorners: boolean;\n};\n/**\n * Shape path layers are the result of adding a vector layer\n */\nexport type ShapePath = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'shapePath';\n};\n/**\n * Star layers are the result of adding a star shape to the canvas\n */\nexport type Star = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'star';\n numberOfPoints: number;\n radius: number;\n};\n/**\n * Triangle layers are the result of adding a triangle shape to the canvas\n */\nexport type Triangle = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n edited: boolean;\n isClosed: boolean;\n pointRadiusBehaviour: PointsRadiusBehaviour;\n points: CurvePoint[];\n _class: 'triangle';\n isEquilateral: boolean;\n};\n/**\n * Shape groups layers group together multiple shape layers\n */\nexport type ShapeGroup = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n _class: 'shapeGroup';\n windingRule: WindingRule;\n};\n/**\n * A text layer represents a discrete block or line of text\n */\nexport type Text = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'text';\n attributedString: AttributedString;\n automaticallyDrawOnUnderlyingPath: boolean;\n dontSynchroniseWithSymbol: boolean;\n lineSpacingBehaviour: LineSpacingBehaviour;\n textBehaviour: TextBehaviour;\n glyphBounds: PointListString;\n};\n/**\n * Defines character strings and associated styling applied to character ranges\n */\nexport type AttributedString = {\n _class: 'attributedString';\n string: string;\n attributes: StringAttribute[];\n};\n/**\n * Defines an attribute assigned to a range of characters in an attributed string\n */\nexport type StringAttribute = {\n _class: 'stringAttribute';\n location: number;\n length: number;\n attributes: {\n kerning?: number;\n textStyleVerticalAlignmentKey?: TextVerticalAlignment;\n MSAttributedStringFontAttribute: FontDescriptor;\n MSAttributedStringColorAttribute?: Color;\n paragraphStyle?: ParagraphStyle;\n };\n};\n/**\n * Enumeration of line spacing behaviour for fixed line height text\n */\nexport enum LineSpacingBehaviour {\n None = 0,\n Legacy = 1,\n ConsistentBaseline = 2,\n}\n/**\n * Enumeration of the behaviours for text layers\n */\nexport enum TextBehaviour {\n Flexible = 0,\n Fixed = 1,\n FixedWidthAndHeight = 2,\n}\n/**\n * A string representation of a series of 2D points, in the format {{x, y}, {x,y}}.\n */\nexport type PointListString = string;\n\nexport type BlockStylePreset = {\n name?: string;\n parameters: string[];\n};\n\nexport type BlockDefinition = {\n primitiveSymbolID?: string;\n hashtags?: string[];\n placeholderText?: string;\n placeholderParameters?: string[];\n stylePresets?: BlockStylePreset[];\n usesResolver?: boolean;\n isInsertable?: boolean;\n supportsBlockText?: boolean;\n infer?: (props: {\n frame: Omit<Rect, '_class' | 'constrainProportions'>;\n }) => number;\n render?: (props: {\n passthrough: Record<string, any>;\n Components: any;\n instance: SymbolInstance;\n children?: any;\n getSymbolMaster: (symbolId: string) => SymbolMaster;\n }) => any;\n schema?: Record<string, string[]>;\n};\n\nexport type ResolvedBlockData = {\n symbolID: string;\n originalText: string;\n resolvedText: string;\n resolvedAt?: string;\n};\n\nexport type BlockParameter = string;\n\n/**\n * Symbol instance layers represent an instance of a symbol source\n */\nexport type SymbolInstance = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'symbolInstance';\n overrideValues: OverrideValue[];\n scale: number;\n symbolID: Uuid;\n verticalSpacing: number;\n horizontalSpacing: number;\n blockText?: string;\n blockParameters?: BlockParameter[];\n resolvedBlockData?: ResolvedBlockData;\n symbolIDIsFixed?: boolean;\n};\n/**\n * Defines an individual symbol override\n */\nexport type OverrideValue = {\n _class: 'overrideValue';\n do_objectID?: Uuid;\n overrideName: OverrideName;\n value:\n | boolean\n | string\n | string[]\n | Uuid\n | FileRef\n | DataRef\n | ResolvedBlockData\n | AnyLayer[];\n};\n\n/**\n * Slice layers allow the content beneath their frame to be exported\n */\nexport type Slice = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'slice';\n hasBackgroundColor: boolean;\n backgroundColor: Color;\n};\n/**\n * Hotspot layers define clickable hotspots for use with prototypes\n */\nexport type Hotspot = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'MSImmutableHotspotLayer';\n};\n/**\n * Bitmap layers house a single image\n */\nexport type Bitmap = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n _class: 'bitmap';\n fillReplacesImage: boolean;\n image: FileRef | DataRef;\n intendedDPI: number;\n clippingMask: PointListString;\n};\n/**\n * Defines a text style that has been imported from a library\n */\nexport type ForeignTextStyle = {\n _class: 'MSImmutableForeignTextStyle';\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteStyleID: Uuid;\n localSharedStyle: SharedStyle;\n missingLibraryFontAcknowledged?: boolean;\n};\n/**\n * Defines a swatch that has been imported from a library\n */\nexport type ForeignSwatch = {\n _class: 'MSImmutableForeignSwatch';\n do_objectID: Uuid;\n libraryID: Uuid;\n sourceLibraryName: string;\n symbolPrivate: boolean;\n remoteSwatchID: Uuid;\n localSwatch: Swatch;\n};\n/**\n * Defines a swatch color variable.\n */\nexport type Swatch = {\n _class: 'swatch';\n do_objectID: Uuid;\n name: string;\n value: Color;\n};\n/**\n * Defines a document's list of reusable styles\n */\nexport type SharedStyleContainer = {\n do_objectID?: Uuid;\n _class: 'sharedStyleContainer';\n objects: SharedStyle[];\n};\n/**\n * Defines a document's list of reusable text styles\n */\nexport type SharedTextStyleContainer = {\n do_objectID?: Uuid;\n _class: 'sharedTextStyleContainer';\n objects: SharedStyle[];\n};\n/**\n * Legacy object only retained for migrating older documents.\n */\nexport type SymbolContainer = {\n do_objectID?: Uuid;\n _class: 'symbolContainer';\n objects: [];\n};\n/**\n * Defines a document's list of swatches\n */\nexport type SwatchContainer = {\n _class: 'swatchContainer';\n do_objectID?: Uuid;\n objects: Swatch[];\n};\n/**\n * Defines a reference to font data embedded in the document\n */\nexport type FontRef = {\n _class: 'fontReference';\n fontData: DataRef;\n fontFamilyName: string;\n fontFileName: string;\n options: number;\n postscriptNames: string[];\n};\n/**\n * Container for ephemeral document state. For now this is just a placeholder, and will see additions in future document versions.\n */\nexport type DocumentState = any;\n/**\n * Defines ephemeral patch information related to the Cloud collaborative editing feature. This information will only be found behind-the-scenes in Cloud documents and won't be relevant or visible to users parsing or generating their own Sketch documents.\n */\nexport type PatchInfo = {\n _class: 'MSImmutablePatchInfo';\n baseVersionID: Uuid;\n lastIntegratedPatchID: Uuid;\n localPatches: FileRef[];\n receivedPatches: FileRef[];\n};\n/**\n * Page layers are the top level organisational abstraction within a document\n */\nexport type Page = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'page';\n layers: (\n | Artboard\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolMaster\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n};\n/**\n * Artboard layers are a document organisation aid. They have a fixed frame that usually map to variations of device dimensions or viewport sizes\n */\nexport type Artboard = {\n do_objectID: Uuid;\n booleanOperation: BooleanOperation;\n exportOptions: ExportOptions;\n frame: Rect;\n flow?: FlowConnection;\n isFixedToViewport: boolean;\n isFlippedHorizontal: boolean;\n isFlippedVertical: boolean;\n isLocked: boolean;\n isVisible: boolean;\n layerListExpandedType: LayerListExpanded;\n name: string;\n nameIsFixed: boolean;\n resizingConstraint: number;\n resizingType: ResizeType;\n rotation: number;\n sharedStyleID?: Uuid;\n shouldBreakMaskChain: boolean;\n hasClippingMask?: boolean;\n clippingMaskMode?: number;\n userInfo?: any;\n style?: Style;\n maintainScrollPosition?: boolean;\n hasClickThrough: boolean;\n horizontalRulerData: RulerData;\n verticalRulerData: RulerData;\n layout?: LayoutGrid;\n grid?: SimpleGrid;\n groupLayout?: FreeformGroupLayout | InferredGroupLayout;\n _class: 'artboard';\n backgroundColor: Color;\n hasBackgroundColor: boolean;\n includeBackgroundColorInExport: boolean;\n isFlowHome: boolean;\n resizesContent: boolean;\n presetDictionary?: any;\n layers: (\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | CustomLayer\n )[];\n};\n/**\n * Contains metadata about the Sketch file - information about pages and artboards appearing in the file, fonts used, the version of Sketch used to save the file etc.\n */\nexport type Meta = {\n commit: string;\n pagesAndArtboards: {\n [key: string]: {\n name: string;\n artboards: {\n [key: string]: {\n name: string;\n };\n };\n };\n };\n version:\n | 121\n | 122\n | 123\n | 124\n | 125\n | 126\n | 127\n | 128\n | 129\n | 130\n | 131\n | 132\n | 133\n | 134\n | 135\n | 136;\n compatibilityVersion: 99;\n coeditCompatibilityVersion?: number;\n app: BundleId;\n autosaved: NumericalBool;\n variant: SketchVariant;\n created: {\n commit: string;\n appVersion: string;\n build: number;\n app: BundleId;\n compatibilityVersion: number;\n coeditCompatibilityVersion?: number;\n version: number;\n variant: SketchVariant;\n };\n saveHistory: string[];\n appVersion: string;\n build: number;\n\n // Custom\n noya?: {\n projectDescription?: string;\n };\n};\n/**\n * Enumeration of the Apple bundle ids for the various variants of Sketch\n */\nexport enum BundleId {\n PublicRelease = 'com.bohemiancoding.sketch3',\n Beta = 'com.bohemiancoding.sketch3.beta',\n Private = 'com.bohemiancoding.sketch3.private',\n FeaturePreview = 'com.bohemiancoding.sketch3.feature-preview',\n Internal = 'com.bohemiancoding.sketch3.internal',\n Experimental = 'com.bohemiancoding.sketch3.experimental',\n Testing = 'com.bohemiancoding.sketch3.testing',\n}\n/**\n * A numerical boolean where 0 is false, and 1 is true.\n */\nexport enum NumericalBool {\n True = 0,\n False = 1,\n}\n/**\n * Enumeration of the Sketch variants\n */\nexport type SketchVariant =\n | 'NONAPPSTORE'\n | 'APPSTORE'\n | 'BETA'\n | 'PRIVATE'\n | 'FEATURE_PREVIEW'\n | 'INTERNAL'\n | 'EXPERIMENTAL'\n | 'TESTING'\n | 'UNITTEST';\nexport type User = {\n document: {\n pageListHeight: number;\n pageListCollapsed: NumericalBool;\n expandedSymbolPathsInSidebar?: [];\n expandedTextStylePathsInPopover?: [];\n libraryListCollapsed?: NumericalBool;\n };\n [key: string]: any;\n};\n/**\n * The workspace is a folder in the Sketch file archive that can contain arbitrary JSON files, allowing Sketch and 3rd party products and tools to store settings that should travel with the Sketch document. To avoid clashes or settings being overridden, select a unique name for your workspace file.\n */\nexport type Workspace = any;\n/**\n * This schema describes a representation of an expanded Sketch file, that is, a Sketch file that has been unzipped, all of its entries parsed to JSON and merged into a single object. A concrete example of an expanded sketch file is the return value of the `fromFile` function in `@sketch-hq/sketch-file`\n */\nexport type Contents = {\n document: {\n _class: 'document';\n do_objectID: Uuid;\n assets: AssetCollection;\n colorSpace: ColorSpace;\n currentPageIndex: number;\n foreignLayerStyles: ForeignLayerStyle[];\n foreignSymbols: ForeignSymbol[];\n foreignTextStyles: ForeignTextStyle[];\n foreignSwatches?: ForeignSwatch[];\n layerStyles: SharedStyleContainer;\n layerTextStyles: SharedTextStyleContainer;\n layerSymbols?: SymbolContainer;\n sharedSwatches?: SwatchContainer;\n fontReferences?: FontRef[];\n documentState?: DocumentState;\n patchInfo?: PatchInfo;\n pages: Page[];\n };\n meta: Meta;\n user: User;\n workspace?: Workspace;\n};\n/**\n * The document entry in a Sketch file.\n */\nexport type Document = {\n _class: 'document';\n do_objectID: Uuid;\n assets: AssetCollection;\n colorSpace: ColorSpace;\n currentPageIndex: number;\n foreignLayerStyles: ForeignLayerStyle[];\n foreignSymbols: ForeignSymbol[];\n foreignTextStyles: ForeignTextStyle[];\n foreignSwatches?: ForeignSwatch[];\n layerStyles: SharedStyleContainer;\n layerTextStyles: SharedTextStyleContainer;\n layerSymbols?: SymbolContainer;\n sharedSwatches?: SwatchContainer;\n fontReferences?: FontRef[];\n documentState?: DocumentState;\n patchInfo?: PatchInfo;\n pages: FileRef[];\n designSystem?: DesignSystem;\n};\nexport type DesignSystem = {\n id: string;\n type: 'standard' | 'custom';\n config?: DesignSystemThemeConfig;\n};\nexport type DesignSystemThemeConfig = {\n colorScheme?: 'light' | 'dark';\n primaryColor?: string;\n neutralColor?: string;\n};\n/**\n * Union of all layers\n */\nexport type AnyLayer =\n | SymbolMaster\n | Group\n | Oval\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | SymbolInstance\n | Slice\n | Hotspot\n | Bitmap\n | Page\n | Artboard\n | CustomLayer;\n/**\n * Union of all group layers\n */\nexport type AnyGroup = SymbolMaster | Group | ShapeGroup | Page | Artboard;\n/**\n * Union of all objects, i.e. objects with a _class property\n */\nexport type AnyObject =\n | AssetCollection\n | ImageCollection\n | ColorAsset\n | Color\n | GradientAsset\n | Gradient\n | GradientStop\n | FileRef\n | DataRef\n | ForeignLayerStyle\n | SharedStyle\n | Style\n | Border\n | GraphicsContextSettings\n | BorderOptions\n | Blur\n | Fill\n | Shader\n | ShaderVariable\n | TextStyle\n | ParagraphStyle\n | FontDescriptor\n | Shadow\n | InnerShadow\n | ColorControls\n | ForeignSymbol\n | SymbolMaster\n | ExportOptions\n | ExportFormat\n | Rect\n | FlowConnection\n | RulerData\n | LayoutGrid\n | SimpleGrid\n | FreeformGroupLayout\n | InferredGroupLayout\n | OverrideProperty\n | Group\n | Oval\n | CurvePoint\n | Polygon\n | Rectangle\n | ShapePath\n | Star\n | Triangle\n | ShapeGroup\n | Text\n | AttributedString\n | StringAttribute\n | SymbolInstance\n | OverrideValue\n | Slice\n | Hotspot\n | Bitmap\n | ForeignTextStyle\n | ForeignSwatch\n | Swatch\n | SharedStyleContainer\n | SharedTextStyleContainer\n | SymbolContainer\n | SwatchContainer\n | FontRef\n | PatchInfo\n | Page\n | Artboard\n | CustomLayer\n | NoyaElement;\n/**\n * Enum of all possible _class property values\n */\nexport enum ClassValue {\n MSImmutableColorAsset = 'MSImmutableColorAsset',\n MSImmutableFlowConnection = 'MSImmutableFlowConnection',\n MSImmutableForeignLayerStyle = 'MSImmutableForeignLayerStyle',\n MSImmutableForeignSwatch = 'MSImmutableForeignSwatch',\n MSImmutableForeignSymbol = 'MSImmutableForeignSymbol',\n MSImmutableForeignTextStyle = 'MSImmutableForeignTextStyle',\n MSImmutableFreeformGroupLayout = 'MSImmutableFreeformGroupLayout',\n MSImmutableGradientAsset = 'MSImmutableGradientAsset',\n MSImmutableHotspotLayer = 'MSImmutableHotspotLayer',\n MSImmutableInferredGroupLayout = 'MSImmutableInferredGroupLayout',\n MSImmutableOverrideProperty = 'MSImmutableOverrideProperty',\n MSImmutablePatchInfo = 'MSImmutablePatchInfo',\n MSJSONFileReference = 'MSJSONFileReference',\n MSJSONOriginalDataReference = 'MSJSONOriginalDataReference',\n Artboard = 'artboard',\n AssetCollection = 'assetCollection',\n AttributedString = 'attributedString',\n Bitmap = 'bitmap',\n Blur = 'blur',\n Border = 'border',\n BorderOptions = 'borderOptions',\n Color = 'color',\n ColorControls = 'colorControls',\n CurvePoint = 'curvePoint',\n ExportFormat = 'exportFormat',\n ExportOptions = 'exportOptions',\n Fill = 'fill',\n FontDescriptor = 'fontDescriptor',\n FontReference = 'fontReference',\n Gradient = 'gradient',\n GradientStop = 'gradientStop',\n GraphicsContextSettings = 'graphicsContextSettings',\n Group = 'group',\n ImageCollection = 'imageCollection',\n InnerShadow = 'innerShadow',\n LayoutGrid = 'layoutGrid',\n Oval = 'oval',\n OverrideValue = 'overrideValue',\n Page = 'page',\n ParagraphStyle = 'paragraphStyle',\n Polygon = 'polygon',\n Rect = 'rect',\n Rectangle = 'rectangle',\n RulerData = 'rulerData',\n Shader = 'shader',\n ShaderVariable = 'shaderVariable',\n Shadow = 'shadow',\n ShapeGroup = 'shapeGroup',\n ShapePath = 'shapePath',\n SharedStyle = 'sharedStyle',\n SharedStyleContainer = 'sharedStyleContainer',\n SharedTextStyleContainer = 'sharedTextStyleContainer',\n SimpleGrid = 'simpleGrid',\n Slice = 'slice',\n Star = 'star',\n StringAttribute = 'stringAttribute',\n Style = 'style',\n Swatch = 'swatch',\n SwatchContainer = 'swatchContainer',\n SymbolContainer = 'symbolContainer',\n SymbolInstance = 'symbolInstance',\n SymbolMaster = 'symbolMaster',\n Text = 'text',\n TextStyle = 'textStyle',\n Triangle = 'triangle',\n CustomLayer = 'customLayer',\n NoyaComponent = 'noyaComponent',\n NoyaElement = 'noyaElement',\n}\n/**\n * A mapping of class values to object types\n */\nexport type ClassMap = {\n triangle: Triangle;\n textStyle: TextStyle;\n text: Text;\n symbolMaster: SymbolMaster;\n symbolInstance: SymbolInstance;\n symbolContainer: SymbolContainer;\n swatchContainer: SwatchContainer;\n swatch: Swatch;\n style: Style;\n stringAttribute: StringAttribute;\n star: Star;\n slice: Slice;\n simpleGrid: SimpleGrid;\n sharedTextStyleContainer: SharedTextStyleContainer;\n sharedStyleContainer: SharedStyleContainer;\n sharedStyle: SharedStyle;\n shapePath: ShapePath;\n shapeGroup: ShapeGroup;\n shadow: Shadow;\n shaderVariable: ShaderVariable;\n shader: Shader;\n rulerData: RulerData;\n rectangle: Rectangle;\n rect: Rect;\n polygon: Polygon;\n paragraphStyle: ParagraphStyle;\n page: Page;\n overrideValue: OverrideValue;\n oval: Oval;\n layoutGrid: LayoutGrid;\n innerShadow: InnerShadow;\n imageCollection: ImageCollection;\n group: Group;\n graphicsContextSettings: GraphicsContextSettings;\n gradientStop: GradientStop;\n gradient: Gradient;\n fontReference: FontRef;\n fontDescriptor: FontDescriptor;\n fill: Fill;\n exportOptions: ExportOptions;\n exportFormat: ExportFormat;\n curvePoint: CurvePoint;\n colorControls: ColorControls;\n color: Color;\n borderOptions: BorderOptions;\n border: Border;\n blur: Blur;\n bitmap: Bitmap;\n attributedString: AttributedString;\n assetCollection: AssetCollection;\n artboard: Artboard;\n MSJSONOriginalDataReference: DataRef;\n MSJSONFileReference: FileRef;\n MSImmutablePatchInfo: PatchInfo;\n MSImmutableOverrideProperty: OverrideProperty;\n MSImmutableInferredGroupLayout: InferredGroupLayout;\n MSImmutableHotspotLayer: Hotspot;\n MSImmutableGradientAsset: GradientAsset;\n MSImmutableFreeformGroupLayout: FreeformGroupLayout;\n MSImmutableForeignTextStyle: ForeignTextStyle;\n MSImmutableForeignSymbol: ForeignSymbol;\n MSImmutableForeignSwatch: ForeignSwatch;\n MSImmutableForeignLayerStyle: ForeignLayerStyle;\n MSImmutableFlowConnection: FlowConnection;\n MSImmutableColorAsset: ColorAsset;\n customLayer: CustomLayer;\n noyaComponent: NoyaComponent;\n noyaElement: NoyaElement;\n};\n","import { Sketch } from \"@noya-app/noya-file-format\";\n// import { useSketchImage } from 'noya-renderer';\nimport React, { memo, useMemo } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport { useImageData } from \"../contexts/ImageDataContext\";\nimport { useObjectURL } from \"../hooks/useObjectURL\";\nimport { getGradientBackground } from \"../utils/getGradientBackground\";\nimport { sketchColorToRgbaString } from \"../utils/sketchColor\";\nimport { SketchPattern } from \"../utils/sketchPattern\";\n\nconst dotsHorizontalSvg = (fillColor: string) => `\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${fillColor}'>\n <path d='M3.625 7.5C3.625 8.12132 3.12132 8.625 2.5 8.625C1.87868 8.625 1.375 8.12132 1.375 7.5C1.375 6.87868 1.87868 6.375 2.5 6.375C3.12132 6.375 3.625 6.87868 3.625 7.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM12.5 8.625C13.1213 8.625 13.625 8.12132 13.625 7.5C13.625 6.87868 13.1213 6.375 12.5 6.375C11.8787 6.375 11.375 6.87868 11.375 7.5C11.375 8.12132 11.8787 8.625 12.5 8.625Z'></path>\n </svg>\n`;\n\nconst Background = styled.span<{ background: string }>(({ background }) => ({\n background,\n position: \"absolute\",\n inset: 0,\n}));\n\nconst HorizontalDotsBackground = memo(function HorizontalDotsBackground() {\n const { inputBackground, placeholderDots } = useTheme().colors;\n\n const background = useMemo(\n () =>\n [\n `center url(\"data:image/svg+xml;utf8,${dotsHorizontalSvg(\n placeholderDots\n )}\") no-repeat`,\n inputBackground,\n ].join(\",\"),\n [inputBackground, placeholderDots]\n );\n\n return <Background background={background} />;\n});\n\nfunction getPatternSizeAndPosition(\n fillType: Sketch.PatternFillType,\n tileScale: number\n) {\n switch (fillType) {\n case Sketch.PatternFillType.Fit:\n return \"center / contain\";\n case Sketch.PatternFillType.Tile:\n return `top left / ${tileScale * 100}%`;\n case Sketch.PatternFillType.Fill:\n return \"center / cover\";\n case Sketch.PatternFillType.Stretch:\n return \"center / 100% 100%\";\n }\n}\n\nexport const PatternPreviewBackground = memo(function PatternPreviewBackground({\n fillType,\n tileScale,\n imageRef,\n}: {\n fillType: Sketch.PatternFillType;\n tileScale: number;\n imageRef: string;\n}) {\n const image = useImageData(imageRef);\n\n const url = useObjectURL(image);\n\n const size = getPatternSizeAndPosition(fillType, tileScale);\n\n const background = useMemo(\n () =>\n [\n size,\n `url(${url})`,\n fillType === Sketch.PatternFillType.Tile ? \"repeat\" : \"no-repeat\",\n ].join(\" \"),\n [fillType, size, url]\n );\n\n return <Background background={background} />;\n});\n\nconst ColorPreviewBackground = memo(function ColorPreviewBackground({\n color,\n}: {\n color: Sketch.Color;\n}) {\n const background = useMemo(() => sketchColorToRgbaString(color), [color]);\n\n return <Background background={background} />;\n});\n\nconst GradientPreviewBackground = memo(function GradientPreviewBackground({\n gradient,\n}: {\n gradient: Sketch.Gradient;\n}) {\n const background = useMemo(\n () => getGradientBackground(gradient.stops, gradient.gradientType, 180),\n [gradient.gradientType, gradient.stops]\n );\n\n return <Background background={background} />;\n});\n\ninterface Props {\n value?: Sketch.Color | Sketch.Gradient | SketchPattern;\n}\n\nexport const FillPreviewBackground = memo(function FillPreviewBackground({\n value,\n}: Props) {\n if (!value) return <HorizontalDotsBackground />;\n\n switch (value._class) {\n case \"color\":\n return <ColorPreviewBackground color={value} />;\n case \"gradient\":\n return <GradientPreviewBackground gradient={value} />;\n case \"pattern\":\n if (!value.image) return null;\n\n return (\n <PatternPreviewBackground\n fillType={value.patternFillType}\n tileScale={value.patternTileScale}\n imageRef={value.image._ref}\n />\n );\n }\n});\n","import React, {\n createContext,\n memo,\n ReactNode,\n useContext,\n useMemo,\n} from \"react\";\n\nexport type ImageDataContextValue = {\n getImageData: (ref: string) => ArrayBuffer | undefined;\n};\n\nconst ImageDataContext = createContext<ImageDataContextValue | undefined>(\n undefined\n);\n\nexport const ImageDataProvider = memo(function ImageDataProvider({\n children,\n getImageData,\n}: {\n children: ReactNode;\n getImageData?: (ref: string) => ArrayBuffer | undefined;\n}) {\n const contextValue = useMemo(\n () => ({ getImageData: getImageData ?? (() => undefined) }),\n [getImageData]\n );\n\n return (\n <ImageDataContext.Provider value={contextValue}>\n {children}\n </ImageDataContext.Provider>\n );\n});\n\nexport function useImageData(ref: string): ArrayBuffer | undefined {\n const value = useContext(ImageDataContext);\n\n if (!value) {\n throw new Error(\"Missing ImageDataProvider\");\n }\n\n return value.getImageData(ref);\n}\n","import { useLayoutEffect, useMemo } from 'react';\n\nexport function useObjectURL(object?: ArrayBuffer | Uint8Array | Blob) {\n const objectURL = useMemo(() => {\n if (object instanceof Blob) return URL.createObjectURL(object);\n\n const bytes =\n object instanceof Uint8Array\n ? object\n : object !== undefined\n ? new Uint8Array(object)\n : new Uint8Array();\n\n return URL.createObjectURL(new Blob([bytes]));\n }, [object]);\n\n useLayoutEffect(() => {\n return () => URL.revokeObjectURL(objectURL);\n }, [objectURL]);\n\n return objectURL;\n}\n","import {\n hsvaToRgbaString,\n RgbaColor,\n rgbaToHex,\n rgbaToHsva,\n} from '@noya-app/noya-colorpicker';\nimport type { Sketch } from '@noya-app/noya-file-format';\n\nexport function sketchColorToRgba(value: Sketch.Color): RgbaColor {\n return {\n r: Math.floor(value.red * 255),\n g: Math.floor(value.green * 255),\n b: Math.floor(value.blue * 255),\n a: value.alpha,\n };\n}\n\nexport function sketchColorToRgbaString(value: Sketch.Color): string {\n return hsvaToRgbaString(rgbaToHsva(sketchColorToRgba(value)));\n}\n\nexport function rgbaToSketchColor(value: RgbaColor): Sketch.Color {\n return {\n _class: 'color',\n alpha: value.a,\n red: value.r / 255,\n green: value.g / 255,\n blue: value.b / 255,\n };\n}\n\nexport function sketchColorToHex(value: Sketch.Color): string {\n return rgbaToHex(sketchColorToRgba(value)).toUpperCase();\n}\n","import { Sketch } from \"@noya-app/noya-file-format\";\nimport { sketchColorToRgbaString } from \"./sketchColor\";\n\nconst getRGBAColor = (value: Sketch.GradientStop[], num: 100 | 360) =>\n [...value]\n .sort((a, b) => a.position - b.position)\n .map(\n (g) =>\n `${sketchColorToRgbaString(g.color)} ${g.position * num}${\n num === 100 ? \"%\" : \"deg\"\n }`\n )\n .join(\", \\n\");\n\nexport function getGradientBackground(\n value: Sketch.GradientStop[],\n type: Sketch.GradientType,\n direction?: number\n) {\n if (type === Sketch.GradientType.Angular) {\n return `conic-gradient(${getRGBAColor(value, 360)})`;\n }\n\n const color = getRGBAColor(value, 100);\n const position =\n type === Sketch.GradientType.Radial\n ? \"radial-gradient(circle\"\n : `linear-gradient(${direction !== undefined ? direction : 180}deg`;\n\n return `${position}, ${color})`;\n}\n","import {\n Divider,\n IconButton,\n Small,\n useCurrentFloatingWindowInternal,\n useDesignSystemTheme,\n useFloatingWindowManager,\n} from \"@noya-app/noya-designsystem\";\nimport React, { useCallback, useRef, useState } from \"react\";\n\ninterface FloatingWindowProps {\n title?: string;\n onClose?: () => void;\n children: React.ReactNode;\n initialWidth?: number;\n initialHeight?: number;\n initialX?: number;\n initialY?: number;\n minWidth?: number;\n minHeight?: number;\n toolbarContent?: React.ReactNode;\n renderToolbar?: (props: {\n title?: string;\n toolbarContent?: React.ReactNode;\n onClose?: () => void;\n }) => React.ReactNode;\n}\n\nconst styles = {\n noSelect: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n },\n windowWrapper: {\n position: \"absolute\",\n backgroundColor: \"white\",\n borderRadius: \"4px\",\n boxShadow: \"0 2px 10px rgba(0, 0, 0, 0.1)\",\n overflow: \"hidden\",\n // backdropFilter: \"blur(10px)\",\n },\n toolbar: {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 12px\",\n cursor: \"move\",\n userSelect: \"none\",\n minHeight: \"43px\",\n },\n closeButton: {\n background: \"none\",\n border: \"none\",\n fontSize: \"16px\",\n cursor: \"pointer\",\n },\n content: {\n padding: \"12px\",\n height: \"calc(100% - 44px)\", // Adjust based on toolbar height\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n resizeHandle: {\n position: \"absolute\",\n },\n} as const;\n\nconst resizeHandlePositions = {\n top: { top: \"0\", left: \"0\", right: \"0\", height: \"5px\", cursor: \"ns-resize\" },\n right: {\n top: \"0\",\n right: \"0\",\n bottom: \"0\",\n width: \"5px\",\n cursor: \"ew-resize\",\n },\n bottom: {\n bottom: \"0\",\n left: \"0\",\n right: \"0\",\n height: \"5px\",\n cursor: \"ns-resize\",\n },\n left: { top: \"0\", left: \"0\", bottom: \"0\", width: \"5px\", cursor: \"ew-resize\" },\n topLeft: {\n top: \"0\",\n left: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nwse-resize\",\n },\n topRight: {\n top: \"0\",\n right: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nesw-resize\",\n },\n bottomLeft: {\n bottom: \"0\",\n left: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nesw-resize\",\n },\n bottomRight: {\n bottom: \"0\",\n right: \"0\",\n width: \"10px\",\n height: \"10px\",\n cursor: \"nwse-resize\",\n },\n};\n\nfunction defaultRenderToolbar({\n title,\n toolbarContent,\n onClose,\n}: {\n title?: string;\n toolbarContent?: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <>\n <Small flex=\"1\" fontWeight=\"500\" color=\"text\">\n {title}\n </Small>\n {toolbarContent}\n <IconButton\n iconName=\"Cross3Icon\"\n onClick={onClose}\n style={{\n marginLeft: \"6px\",\n marginRight: \"-6px\",\n }}\n />\n </>\n );\n}\n\nexport const FloatingWindow: React.FC<FloatingWindowProps> = ({\n title,\n onClose,\n children,\n initialWidth = 300,\n initialHeight = 200,\n initialX = 100,\n initialY = 100,\n minWidth = 200,\n minHeight = 100,\n toolbarContent,\n renderToolbar = defaultRenderToolbar,\n}) => {\n const [position, setPosition] = useState({ x: initialX, y: initialY });\n const [size, setSize] = useState({\n width: initialWidth,\n height: initialHeight,\n });\n const [isDragging, setIsDragging] = useState(false);\n const [isResizing, setIsResizing] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n const [resizeDirection, setResizeDirection] = useState<string | null>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const toggleGlobalTextSelection = (disable: boolean) => {\n if (disable) {\n document.body.style.userSelect = \"none\";\n } else {\n document.body.style.userSelect = \"\";\n }\n };\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n setDragOffset({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n setIsDragging(true);\n }, []);\n\n const handleResizeStart = useCallback(\n (direction: string) => (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsResizing(true);\n setResizeDirection(direction);\n toggleGlobalTextSelection(true);\n },\n []\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n setPosition({\n x: e.clientX - dragOffset.x,\n y: e.clientY - dragOffset.y,\n });\n } else if (isResizing && resizeDirection) {\n const rect = wrapperRef.current!.getBoundingClientRect();\n\n let newWidth = size.width;\n let newHeight = size.height;\n let newX = position.x;\n let newY = position.y;\n\n if (/right/i.test(resizeDirection)) {\n newWidth = Math.max(e.clientX - rect.left, minWidth);\n }\n if (/bottom/i.test(resizeDirection)) {\n newHeight = Math.max(e.clientY - rect.top, minHeight);\n }\n if (/left/i.test(resizeDirection)) {\n const potentialWidth = rect.right - e.clientX;\n if (potentialWidth <= minWidth) {\n newWidth = minWidth;\n newX = rect.right - minWidth;\n } else {\n newWidth = potentialWidth;\n newX = e.clientX;\n }\n }\n if (/top/i.test(resizeDirection)) {\n const potentialHeight = rect.bottom - e.clientY;\n if (potentialHeight <= minHeight) {\n newHeight = minHeight;\n newY = rect.bottom - minHeight;\n } else {\n newHeight = potentialHeight;\n newY = e.clientY;\n }\n }\n\n setSize({ width: newWidth, height: newHeight });\n setPosition({ x: newX, y: newY });\n }\n },\n [\n isDragging,\n isResizing,\n dragOffset,\n resizeDirection,\n size,\n position,\n minWidth,\n minHeight,\n ]\n );\n\n const handleMouseUp = useCallback((e: MouseEvent) => {\n setIsDragging(false);\n setIsResizing(false);\n setResizeDirection(null);\n toggleGlobalTextSelection(false);\n }, []);\n\n React.useEffect(() => {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [handleMouseMove, handleMouseUp]);\n\n const theme = useDesignSystemTheme();\n\n const floatingWindowManager = useFloatingWindowManager();\n const currentFloatingWindow = useCurrentFloatingWindowInternal();\n\n const handleClose = useCallback(() => {\n if (onClose) onClose();\n floatingWindowManager.closeWindow(currentFloatingWindow.id);\n }, [currentFloatingWindow.id, floatingWindowManager, onClose]);\n\n return (\n <div\n ref={wrapperRef}\n style={{\n ...styles.windowWrapper,\n top: position.y,\n left: position.x,\n width: size.width,\n height: size.height,\n outline: `1px solid ${theme.colors.divider}`,\n backgroundColor: theme.colors.canvas.background,\n }}\n >\n <div\n style={{\n ...styles.toolbar,\n backgroundColor: theme.colors.sidebar.background,\n }}\n onMouseDown={handleMouseDown}\n >\n {renderToolbar({ title, toolbarContent, onClose: handleClose })}\n </div>\n <Divider />\n <div style={styles.content}>{children}</div>\n {Object.entries(resizeHandlePositions).map(([direction, style]) => (\n <div\n key={direction}\n style={{ ...styles.resizeHandle, ...style }}\n onMouseDown={handleResizeStart(direction)}\n />\n ))}\n </div>\n );\n};\n","import {\n Alpha,\n ColorModel,\n Gradient,\n Hue,\n ColorPicker as NoyaColorPicker,\n RgbaColor,\n Saturation,\n equalColorObjects,\n hsvaToRgba,\n rgbaToHsva,\n} from '@noya-app/noya-colorpicker';\nimport type { Sketch } from '@noya-app/noya-file-format';\nimport React, { memo, useCallback, useMemo } from 'react';\nimport { Spacer } from '../components/Spacer';\nimport { rgbaToSketchColor, sketchColorToRgba } from '../utils/sketchColor';\n\ninterface Props {\n value: Sketch.GradientStop[];\n selectedStop: number;\n onChangeColor: (color: Sketch.Color) => void;\n onChangePosition: (position: number) => void;\n onAdd: (color: Sketch.Color, position: number) => void;\n onDelete: () => void;\n onSelectStop: (index: number) => void;\n}\n\nexport const GradientPicker = memo(function GradientPicker({\n value,\n selectedStop,\n onChangeColor,\n onChangePosition,\n onAdd,\n onDelete,\n onSelectStop,\n}: Props) {\n const colorModel: ColorModel<RgbaColor> = useMemo(\n () => ({\n defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n toHsva: rgbaToHsva,\n fromHsva: hsvaToRgba,\n equal: equalColorObjects,\n }),\n [],\n );\n\n const rgbaColor = useMemo(\n () => sketchColorToRgba(value[selectedStop].color),\n [value, selectedStop],\n );\n\n const handleChangeColor = useCallback(\n (value: RgbaColor) => {\n onChangeColor(rgbaToSketchColor(value));\n },\n [onChangeColor],\n );\n\n const handleAddGradientStop = useCallback(\n (value: RgbaColor, position: number) => {\n onAdd(rgbaToSketchColor(value), position);\n },\n [onAdd],\n );\n\n return (\n <NoyaColorPicker\n onChange={handleChangeColor}\n colorModel={colorModel}\n color={rgbaColor}\n >\n <Gradient\n gradients={value}\n selectedStop={selectedStop}\n onSelectStop={onSelectStop}\n onChangePosition={onChangePosition}\n onAdd={handleAddGradientStop}\n onDelete={onDelete}\n />\n <Spacer.Vertical size={10} />\n <Saturation />\n <Spacer.Vertical size={12} />\n <Hue />\n <Spacer.Vertical size={5} />\n <Alpha />\n </NoyaColorPicker>\n );\n});\n","import styled from 'styled-components';\nimport { Colors } from '../theme';\n\nexport type GridProps = {\n columns?: string;\n rows?: string;\n alignItems?: 'start' | 'center' | 'end';\n justifyItems?: 'start' | 'center' | 'end';\n placeItems?: 'start' | 'center' | 'end';\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n height?: number | string;\n minHeight?: number | string;\n maxHeight?: number | string;\n padding?: number | string;\n paddingX?: number | string;\n paddingXStart?: number | string;\n paddingXEnd?: number | string;\n paddingY?: number | string;\n paddingYStart?: number | string;\n paddingYEnd?: number | string;\n gap?: number | string;\n gapX?: number | string;\n gapY?: number | string;\n background?: keyof Colors;\n};\n\nconst Grid = styled.div<GridProps>((props) => ({\n display: 'grid',\n gridTemplateColumns: props.columns,\n gridTemplateRows: props.rows,\n alignItems: props.alignItems,\n justifyItems: props.justifyItems,\n width: props.width,\n minWidth: props.minWidth ?? 0,\n maxWidth: props.maxWidth,\n height: props.height,\n minHeight: props.minHeight ?? 0,\n maxHeight: props.maxHeight,\n padding: props.padding,\n paddingInline: props.paddingX,\n paddingInlineStart: props.paddingXStart,\n paddingInlineEnd: props.paddingXEnd,\n paddingBlock: props.paddingY,\n paddingBlockStart: props.paddingYStart,\n paddingBlockEnd: props.paddingYEnd,\n gap: props.gap,\n gapRow: props.gapX,\n gapColumn: props.gapY,\n background: props.background,\n}));\n\nexport default Grid;\n","import { KeyModifiers } from \"@noya-app/noya-keymap\";\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { useHover } from \"../hooks/useHover\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\nimport { ActivityIndicator } from \"./ActivityIndicator\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { MenuItem } from \"./internal/Menu\";\nimport { ScrollArea } from \"./ScrollArea\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type GridViewSize = \"xxs\" | \"xs\" | \"small\" | \"medium\" | \"large\" | \"xl\";\n\nconst sizes: Record<\n GridViewSize,\n {\n itemWidth: number;\n itemHeight: number;\n gap: number;\n }\n> = {\n xxs: {\n itemWidth: 36,\n itemHeight: 36,\n gap: 5,\n },\n xs: {\n itemWidth: 87,\n itemHeight: 87,\n gap: 9,\n },\n small: {\n itemWidth: 160,\n itemHeight: 170,\n gap: 20,\n },\n medium: {\n itemWidth: 220,\n itemHeight: 220,\n gap: 16,\n },\n large: {\n itemWidth: 280,\n itemHeight: 280,\n gap: 24,\n },\n xl: {\n itemWidth: 400,\n itemHeight: 400,\n gap: 32,\n },\n};\n\nconst Grid = styled.div<{\n size: GridViewSize;\n padding: CSSProperties[\"padding\"];\n}>(({ theme, size, padding }) => {\n return {\n color: theme.colors.text,\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fill, minmax(${sizes[size].itemWidth}px, 1fr))`,\n // gridAutoRows: `${sizes[size].itemHeight}px`,\n gap: `${sizes[size].gap}px`,\n // gridTemplateColumns: `repeat(auto-fill, minmax(\n // ${size === 'large' ? '280px' : size === 'small' ? '160px' : '116px'}\n // , 1fr))`,\n // gridAutoRows:\n // size === 'large' ? '280px' : size === 'small' ? '170px' : '116px',\n // gap: size === 'large' || size === 'small' ? `20px` : `12px`,\n padding,\n };\n});\n\nconst Container = styled.div<{ scrollable: boolean }>(\n ({ theme, scrollable }) => ({\n flex: scrollable ? \"1\" : \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n })\n);\n\nconst ContentContainer = styled.div<{\n selected?: boolean;\n hovered?: boolean;\n bordered: boolean;\n disabled: boolean;\n}>(({ theme, selected, hovered, bordered, disabled }) => ({\n display: \"flex\",\n flex: \"1\",\n backgroundColor: theme.colors.sidebar.background,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"2px\",\n border: `1px solid ${\n selected\n ? theme.colors.primary\n : // : hovered\n // ? `rgb(132, 63, 255, 0.5)`\n bordered\n ? theme.colors.divider\n : \"transparent\"\n }`,\n overflow: \"hidden\",\n\n cursor: \"pointer\",\n ...(disabled\n ? { opacity: 0.5 }\n : {\n \"&:hover\": { opacity: 0.85 },\n \"&:active\": { opacity: 0.7 },\n }),\n}));\n\nconst ItemContainer = styled.div(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors.primary}`,\n outline: \"none\",\n },\n}));\n\nconst ItemTitle = styled.span<{ showBackground: boolean }>(\n ({ theme, showBackground }) => ({\n ...theme.textStyles.small,\n lineHeight: \"1\",\n color: theme.colors.text,\n fontWeight: 500,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n\n ...(showBackground && {\n background: theme.colors.sidebar.background,\n // border: `1px solid ${theme.colors.dividerSubtle}`,\n padding: \"2px 4px\",\n borderRadius: \"2px\",\n backdropFilter: \"blur(4px)\",\n }),\n })\n);\n\nconst ItemDescription = styled.span<{ showBackground: boolean }>(\n ({ theme, showBackground }) => ({\n ...theme.textStyles.small,\n fontSize: \"0.7rem\",\n lineHeight: \"1\",\n color: theme.colors.textMuted,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n\n ...(showBackground && {\n background: theme.colors.sidebar.background,\n // border: `1px solid ${theme.colors.dividerSubtle}`,\n padding: \"2px 4px\",\n borderRadius: \"2px\",\n backdropFilter: \"blur(4px)\",\n }),\n })\n);\n\nconst SectionTitle = styled.span<{ last?: boolean }>(\n ({ theme, last = false }) => ({\n ...theme.textStyles.heading3,\n color: last ? theme.colors.text : theme.colors.textMuted,\n fontWeight: 500,\n userSelect: \"none\",\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n lineHeight: \"1\",\n })\n);\n\nconst SectionHeaderContainer = styled.div(({ theme }) => ({\n padding: \"0 20px\",\n}));\n\nconst TextOverlay = styled.div({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"end\",\n alignItems: \"start\",\n padding: \"4px\",\n pointerEvents: \"none\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n gap: \"2px\",\n});\n\nconst shimmer = keyframes({\n \"0%\": {\n backgroundPosition: \"-200% 0\",\n },\n \"100%\": {\n backgroundPosition: \"200% 0\",\n },\n});\n\nconst Shimmer = styled.div`\n pointer-events: none;\n position: absolute;\n inset: 0;\n animation: ${shimmer} 6s infinite linear;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0),\n rgba(226, 232, 240, 0.5),\n rgba(255, 255, 255, 0)\n );\n background-size: 200% 100%;\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: end;\n padding: 4px;\n`;\n\ninterface ItemProps<MenuItemType extends string = string> {\n id: string;\n title?: ReactNode;\n subtitle?: ReactNode;\n loading?: boolean;\n selected?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n onPress?: (options: KeyModifiers) => void;\n onDoubleClick?: () => void;\n onHoverChange?: (isHovering: boolean) => void;\n children?: ReactNode;\n menuItems?: MenuItem<MenuItemType>[];\n onSelectMenuItem?: (value: MenuItemType) => void;\n onContextMenu?: () => void;\n style?: CSSProperties;\n}\n\nconst GridViewItem = forwardRef(function GridViewItem<\n MenuItemType extends string,\n>(\n {\n id,\n title,\n subtitle,\n loading,\n selected,\n onClick,\n onPress,\n onDoubleClick,\n onHoverChange,\n children,\n menuItems,\n onSelectMenuItem,\n onContextMenu,\n style,\n }: ItemProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const [hovered, setHovered] = React.useState(false);\n\n const { hoverProps } = useHover({\n onHoverChange: (isHovering) => {\n onHoverChange?.(isHovering);\n setHovered(isHovering);\n },\n });\n\n const { textPosition, bordered, disabled } = useContext(GridViewContext);\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n onClick?.(event);\n onPress?.(event);\n },\n [onClick, onPress]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.stopPropagation();\n event.preventDefault();\n\n onPress?.(event);\n } else {\n return;\n }\n },\n [onPress]\n );\n\n let element = (\n <ItemContainer\n id={id}\n ref={forwardedRef}\n {...hoverProps}\n tabIndex={disabled ? undefined : 0}\n onKeyDown={handleKeyDown}\n >\n <ContentContainer\n disabled={disabled}\n bordered={bordered}\n selected={selected}\n hovered={!disabled && hovered}\n onClick={handleClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={onContextMenu}\n style={style}\n >\n {children}\n </ContentContainer>\n {textPosition === \"below\" && (\n <>\n <Spacer.Vertical size={8} />\n <ItemTitle showBackground={false}>{title || \" \"}</ItemTitle>\n <ItemDescription showBackground={false}>\n {subtitle || \" \"}\n </ItemDescription>\n </>\n )}\n {textPosition === \"overlay\" && hovered && (title || subtitle) && (\n <TextOverlay>\n {title && <ItemTitle showBackground>{title}</ItemTitle>}\n {subtitle && (\n <ItemDescription showBackground>{subtitle}</ItemDescription>\n )}\n </TextOverlay>\n )}\n {loading && (\n <Shimmer>\n <ActivityIndicator opacity={0.5} size={13} />\n </Shimmer>\n )}\n </ItemContainer>\n );\n\n if (menuItems && onSelectMenuItem) {\n element = (\n <ContextMenu<MenuItemType> items={menuItems} onSelect={onSelectMenuItem}>\n {element}\n </ContextMenu>\n );\n }\n\n if (textPosition === \"toolip\") {\n element = (\n <Tooltip\n content={\n <Stack.V gap={2}>\n <ItemTitle showBackground={false}>{title}</ItemTitle>\n <ItemDescription showBackground={false}>{subtitle}</ItemDescription>\n </Stack.V>\n }\n >\n {element}\n </Tooltip>\n );\n }\n\n return element;\n});\n\ntype GridViewContextValue = {\n size: GridViewSize;\n textPosition: \"overlay\" | \"below\" | \"toolip\";\n bordered: boolean;\n disabled: boolean;\n};\n\nconst GridViewContext = createContext<GridViewContextValue>({\n size: \"small\",\n textPosition: \"below\",\n bordered: false,\n disabled: false,\n});\n\ninterface GridViewRootProps extends Partial<GridViewContextValue> {\n children: ReactNode;\n onClick?: () => void;\n scrollable?: boolean;\n}\n\nfunction GridViewRoot({\n size = \"small\",\n children,\n scrollable = true,\n onClick,\n textPosition = \"below\",\n bordered = false,\n disabled = false,\n}: GridViewRootProps) {\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n\n onClick?.();\n },\n [onClick]\n );\n\n const contextValue = useMemo(\n () => ({\n size,\n textPosition,\n bordered,\n disabled,\n }),\n [bordered, disabled, size, textPosition]\n );\n\n return (\n <GridViewContext.Provider value={contextValue}>\n <Container onClick={handleClick} scrollable={scrollable}>\n {scrollable ? <ScrollArea>{children}</ScrollArea> : children}\n </Container>\n </GridViewContext.Provider>\n );\n}\n\nfunction GridViewSection({\n children,\n padding = \"20px\",\n}: {\n children?: ReactNode;\n padding?: CSSProperties[\"padding\"];\n}) {\n const { size } = useContext(GridViewContext);\n\n return (\n <Grid size={size} padding={padding}>\n {children}\n </Grid>\n );\n}\n\nfunction GridViewSectionHeader({ title }: { title: string }) {\n const grouped = title.split(\"/\");\n\n return (\n <SectionHeaderContainer>\n <Spacer.Vertical size={24} />\n {withSeparatorElements(\n grouped.map((title, index) => (\n <SectionTitle last={index === grouped.length - 1}>\n {title}\n </SectionTitle>\n )),\n <SectionTitle> / </SectionTitle>\n )}\n </SectionHeaderContainer>\n );\n}\n\nexport namespace GridView {\n export const Root = memo(GridViewRoot);\n export const Item = memo(GridViewItem);\n export const Section = memo(GridViewSection);\n export const SectionHeader = memo(GridViewSectionHeader);\n}\n","import * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport React, { memo, ReactNode, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\n\nconst SCROLLBAR_SIZE = 10;\n\nconst StyledViewport = styled(RadixScrollArea.Viewport)({\n width: \"100%\",\n height: \"100%\",\n // Override the `display: table` in the child, since this allows\n // elements to expand beyond the width of the viewport.\n \"& > div\": {\n display: \"block !important\",\n },\n});\n\nconst StyledScrollbar = styled(RadixScrollArea.Scrollbar)({\n display: \"flex\",\n padding: \"3px\",\n '&[data-orientation=\"vertical\"]': {\n width: SCROLLBAR_SIZE,\n },\n});\n\nconst StyledThumb = styled(RadixScrollArea.Thumb)(({ theme }) => ({\n flex: 1,\n borderRadius: SCROLLBAR_SIZE,\n backgroundColor: theme.colors.scrollbar,\n}));\n\nconst Container = styled.div({\n flex: \"1 1 0px\",\n minHeight: 0,\n});\n\ninterface Props {\n children?: ReactNode | ((scrollElementRef: HTMLDivElement) => ReactNode);\n}\n\nexport const ScrollArea = memo(function ScrollArea({ children }: Props) {\n const [scrollElementRef, setScrollElementRef] =\n useState<HTMLDivElement | null>(null);\n\n return (\n <Container>\n <RadixScrollArea.Root style={{ width: \"100%\", height: \"100%\" }}>\n <StyledViewport\n ref={useCallback(\n (ref: HTMLDivElement | null) => setScrollElementRef(ref),\n []\n )}\n >\n {typeof children === \"function\"\n ? scrollElementRef\n ? children(scrollElementRef)\n : null\n : children}\n </StyledViewport>\n <StyledScrollbar orientation=\"vertical\" className=\"scroll-component\">\n <StyledThumb className=\"scroll-component\" />\n </StyledScrollbar>\n </RadixScrollArea.Root>\n </Container>\n );\n});\n","import { Size } from \"@noya-app/noya-geometry\";\nimport { chunkBy, partition } from \"@noya-app/noya-utils\";\nimport React, {\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport {\n CompletionItem,\n CompletionListItem,\n CompletionSectionHeader,\n} from \"../utils/completions\";\nimport { IToken, fuzzyFilter, fuzzyTokenize } from \"../utils/fuzzyScorer\";\nimport { ActivityIndicator } from \"./ActivityIndicator\";\nimport { InputField, InputFieldSize } from \"./InputField\";\nimport { IVirtualizedList, ListView } from \"./ListView\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\nimport { Small } from \"./Text\";\n\nfunction filterWithGroupedSections(\n items: (CompletionItem | CompletionSectionHeader)[],\n query: string\n): CompletionListItem[] {\n const sections = chunkBy(items, (a, b) => b.type !== \"sectionHeader\");\n\n return sections.flatMap((section) => {\n const [headers, regular] = partition(\n section,\n (item): item is CompletionSectionHeader => item.type === \"sectionHeader\"\n );\n const maxVisibleItems =\n headers.length > 0 ? headers[0].maxVisibleItems : undefined;\n\n const scoredItems = fuzzyFilter({\n items: regular.map((item) => item.name),\n query,\n });\n\n const usedIndexes = new Set(scoredItems.map((item) => item.index));\n const extraItems = regular.flatMap((item, index): CompletionListItem[] =>\n item.alwaysInclude && !usedIndexes.has(index)\n ? [{ ...item, index, score: 0 }]\n : []\n );\n let newItems = scoredItems\n .map((item): CompletionListItem => ({ ...item, ...regular[item.index] }))\n .concat(extraItems);\n\n if (maxVisibleItems !== undefined) {\n newItems = newItems.slice(0, maxVisibleItems);\n }\n\n if (newItems.length === 0) return [];\n\n return [...headers, ...newItems];\n });\n}\n\nexport const CompletionToken = styled.span<{ $type: IToken[\"type\"] }>(\n ({ $type }) => ({\n fontWeight: $type === \"match\" ? \"bold\" : \"normal\",\n whiteSpace: \"pre\",\n })\n);\n\ninterface CompletionMenuProps {\n items: CompletionListItem[];\n selectedIndex: number;\n onSelectItem: (item: CompletionListItem) => void;\n onHoverIndex: (index: number) => void;\n listSize: Size;\n}\n\nexport const CompletionMenu = memo(\n forwardRef(function CompletionMenu(\n {\n items,\n selectedIndex,\n onSelectItem,\n onHoverIndex,\n listSize,\n }: CompletionMenuProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n ) {\n return (\n <ListView.Root\n ref={forwardedRef}\n scrollable\n keyExtractor={(item) => item.id}\n data={items}\n virtualized={listSize}\n pressEventName=\"onPointerDown\"\n sectionHeaderVariant=\"label\"\n renderItem={(item, i) => {\n if (item.type === \"sectionHeader\") {\n return (\n <ListView.Row key={item.id} isSectionHeader>\n {item.name}\n </ListView.Row>\n );\n }\n\n const tokens = fuzzyTokenize({\n item: item.name,\n itemScore: item,\n });\n\n return (\n <ListView.Row\n key={item.id}\n selected={i === selectedIndex}\n onPress={() => onSelectItem(item)}\n onHoverChange={(hovered) => {\n if (hovered) {\n onHoverIndex(i);\n }\n }}\n >\n {tokens.map((token, j) => (\n <CompletionToken key={j} $type={token.type}>\n {token.text}\n </CompletionToken>\n ))}\n {item.icon && (\n <>\n <Spacer.Horizontal />\n {item.icon}\n </>\n )}\n </ListView.Row>\n );\n }}\n />\n );\n })\n);\n\ntype Props = {\n loading?: boolean;\n initialValue?: string;\n placeholder?: string;\n items: (CompletionItem | CompletionSectionHeader)[];\n onChange?: (value: string) => void;\n onHoverItem?: (item: CompletionItem | undefined) => void;\n onSelectItem?: (item: CompletionItem) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (didSubmit: boolean, value: string) => void;\n onDeleteWhenEmpty?: () => void;\n size?: InputFieldSize;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n hideChildrenWhenFocused?: boolean;\n hideMenuWhenEmptyValue?: boolean;\n};\n\nexport interface IInputFieldWithCompletions {\n focus(): void;\n setValue(value: string): void;\n selectAllInputText(): void;\n}\n\nexport const InputFieldWithCompletions = memo(\n forwardRef(function InputFieldWithCompletions(\n {\n loading,\n initialValue = \"\",\n placeholder,\n items,\n size,\n onChange,\n onSelectItem,\n onHoverItem,\n onFocus,\n onBlur,\n onDeleteWhenEmpty,\n style,\n className,\n children,\n hideChildrenWhenFocused = false,\n hideMenuWhenEmptyValue = false,\n }: Props,\n forwardedRef: ForwardedRef<IInputFieldWithCompletions>\n ) {\n const ref = useRef<HTMLInputElement>(null);\n\n const [isFocused, setIsFocused] = useState(false);\n const [state, _setState] = useState({\n filter: initialValue,\n selectedIndex: 0,\n });\n\n const updateState = useCallback(\n (\n newState: { filter?: string; selectedIndex?: number },\n hoverItem?: \"resetHover\"\n ) => {\n const nextState = { ...state, ...newState };\n const nextItems = filterWithGroupedSections(items, nextState.filter);\n\n // If we would be selecting a header, find the next valid index\n if (nextItems[nextState.selectedIndex]?.type === \"sectionHeader\") {\n nextState.selectedIndex = getNextIndex(\n nextItems,\n nextState.selectedIndex,\n \"next\",\n (item) => item.type === \"sectionHeader\"\n );\n }\n\n if (hoverItem === \"resetHover\") {\n onHoverItem?.(undefined);\n } else {\n const nextItem = nextItems[nextState.selectedIndex];\n\n if (nextItem && nextItem.type !== \"sectionHeader\") {\n onHoverItem?.(nextItem);\n } else {\n onHoverItem?.(undefined);\n }\n }\n\n _setState(nextState);\n if (newState.filter !== undefined) {\n onChange?.(newState.filter);\n }\n },\n [items, onChange, onHoverItem, state]\n );\n\n const initialValueRef = useRef(initialValue);\n\n useLayoutEffect(() => {\n if (initialValueRef.current === initialValue) return;\n initialValueRef.current = initialValue;\n updateState({ filter: initialValue });\n }, [initialValue, updateState]);\n\n const { filter, selectedIndex } = state;\n\n const listRef = React.useRef<ListView.VirtualizedList>(null);\n\n const filteredItems = useMemo(\n () => filterWithGroupedSections(items, filter),\n [items, filter]\n );\n\n const [normalItems, sectionHeaderItems] = partition(\n filteredItems,\n (item) => item.type !== \"sectionHeader\"\n );\n\n const height = Math.min(\n ListView.calculateHeight(\n normalItems.length,\n sectionHeaderItems.length,\n \"label\"\n ),\n ListView.rowHeight * 10.5\n );\n\n useEffect(() => {\n if (listRef.current) {\n listRef.current.scrollToIndex(selectedIndex);\n }\n }, [selectedIndex]);\n\n // Keep track of the last submitted value so we can detect whether a blur\n // event was caused by selecting an item or not\n const lastSubmittedValueRef = useRef<\n { filter: string; itemName: string } | undefined\n >(undefined);\n\n const selectItem = useCallback(\n (item: CompletionListItem) => {\n if (item.type === \"sectionHeader\") return;\n\n lastSubmittedValueRef.current = {\n filter,\n itemName: item.name,\n };\n\n onSelectItem?.(item);\n onHoverItem?.(undefined);\n\n if (ref && typeof ref === \"object\") {\n ref.current?.blur();\n }\n },\n [filter, onSelectItem, onHoverItem, ref]\n );\n\n const handleChange = useCallback(\n (value: string) => updateState({ selectedIndex: 0, filter: value }),\n [updateState]\n );\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n const didSubmit = lastSubmittedValueRef.current?.filter === filter;\n updateState({ selectedIndex: 0, filter: initialValue }, \"resetHover\");\n onBlur?.(didSubmit, filter);\n }, [filter, initialValue, onBlur, updateState]);\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n setIsFocused(true);\n updateState({ selectedIndex: 0, filter: initialValue });\n onFocus?.(event);\n },\n [initialValue, onFocus, updateState]\n );\n\n const handleIndexChange = useCallback(\n (index: number) => updateState({ selectedIndex: index }),\n [updateState]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n let handled = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n handleIndexChange(\n getNextIndex(\n filteredItems,\n selectedIndex,\n event.key === \"ArrowDown\" ? \"next\" : \"previous\",\n (item) => item.type === \"sectionHeader\"\n )\n );\n\n handled = true;\n break;\n case \"Enter\": {\n const item = filteredItems[selectedIndex];\n if (item) {\n selectItem(item);\n }\n\n handled = true;\n break;\n }\n case \"Tab\": {\n // Update the filter to the selected item\n const item = filteredItems[selectedIndex];\n if (item) {\n handleChange(item.name);\n }\n\n handled = true;\n break;\n }\n case \"Escape\":\n if (ref && typeof ref === \"object\") {\n ref.current?.blur();\n }\n\n handled = true;\n break;\n case \"Backspace\":\n case \"Delete\": {\n if (filter === \"\") {\n onDeleteWhenEmpty?.();\n }\n\n break;\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [\n handleIndexChange,\n filteredItems,\n selectedIndex,\n ref,\n selectItem,\n handleChange,\n filter,\n onDeleteWhenEmpty,\n ]\n );\n\n const display = !filter && hideMenuWhenEmptyValue ? \"none\" : \"flex\";\n\n const typeaheadValue = filteredItems[selectedIndex]?.name;\n\n useImperativeHandle(forwardedRef, () => ({\n focus: () => {\n ref.current?.focus();\n },\n setValue: (value: string) => {\n handleChange(value);\n },\n selectAllInputText: () => {\n ref.current?.setSelectionRange(0, ref.current.value.length);\n },\n }));\n\n return (\n <InputField.Root\n size={size}\n labelSize={16}\n renderPopoverContent={({ width }) => {\n const listSize = { width, height };\n\n return (\n <Stack.V flex={`0 0 ${height}px`} display={display}>\n {filteredItems.length > 0 ? (\n <CompletionMenu\n ref={listRef}\n items={filteredItems}\n selectedIndex={selectedIndex}\n onSelectItem={selectItem}\n onHoverIndex={handleIndexChange}\n listSize={listSize}\n />\n ) : (\n <Stack.V\n height=\"100px\"\n padding=\"20px\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Small color=\"textDisabled\">\n {loading ? \"Loading\" : \"No results\"}\n </Small>\n </Stack.V>\n )}\n </Stack.V>\n );\n }}\n >\n <InputField.Input\n ref={ref}\n value={filter}\n name=\"component\"\n placeholder={placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocusCapture={handleFocus}\n onKeyDown={handleKeyDown}\n style={style}\n className={className}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-owns=\"component-listbox\"\n aria-expanded={isFocused && display !== \"none\"}\n aria-controls=\"component-listbox\"\n />\n {filter &&\n typeaheadValue &&\n typeaheadValue.toLowerCase().startsWith(filter.toLowerCase()) && (\n <InputField.Typeahead value={typeaheadValue} prefix={filter} />\n )}\n {(!isFocused || !hideChildrenWhenFocused) && children}\n {loading && isFocused && (\n <InputField.Label>\n <ActivityIndicator />\n </InputField.Label>\n )}\n </InputField.Root>\n );\n })\n);\n\nfunction getNextIndex<T>(\n items: T[],\n currentIndex: number,\n direction: \"next\" | \"previous\",\n isDisabled: (item: T) => boolean\n): number {\n // Make sure the current index is within bounds\n currentIndex =\n currentIndex < 0\n ? 0\n : currentIndex >= items.length\n ? items.length - 1\n : currentIndex;\n\n // If there are no valid items in the array, return -1\n if (items.every(isDisabled)) return -1;\n\n let nextIndex = currentIndex;\n\n do {\n // Move to the next or previous index, wrapping around if necessary\n if (direction === \"next\") {\n nextIndex = (nextIndex + 1) % items.length;\n } else {\n nextIndex = (nextIndex - 1 + items.length) % items.length;\n }\n\n // If we've looped all the way around without finding a valid item, return the current index\n if (nextIndex === currentIndex) return currentIndex;\n } while (isDisabled(items[nextIndex]));\n\n return nextIndex;\n}\n","import { IItemScore, scoreFilePathFuzzy } from 'vscode-fuzzy-scorer';\n\nexport function fuzzyScore({ item, query }: { item: string; query: string }) {\n return scoreFilePathFuzzy({ path: item, query });\n}\n\nexport type IScoredItem = IItemScore & {\n index: number;\n};\n\nexport function fuzzyFilter({\n items,\n query,\n scoreThreshold = 0,\n}: {\n items: string[];\n query: string;\n scoreThreshold?: number;\n}) {\n const scoredItems = items.map(\n (text, index): IScoredItem => ({\n index,\n ...fuzzyScore({ item: text, query }),\n }),\n );\n\n if (!query) return scoredItems;\n\n return scoredItems\n .filter(({ score }) => score > scoreThreshold)\n .sort((a, b) => b.score - a.score);\n}\n\nexport type IToken =\n | { type: 'text'; text: string }\n | { type: 'match'; text: string };\n\nexport type MatchRange = { start: number; end: number };\n\nexport function fuzzyTokenize({\n item,\n itemScore,\n}: {\n item: string;\n itemScore: IItemScore;\n}): IToken[] {\n const tokens: IToken[] = [];\n\n let lastMatchIndex = 0;\n\n const matches: MatchRange[] = mergeRanges([\n ...(itemScore.labelMatch ?? []),\n ...(itemScore.descriptionMatch ?? []),\n ]);\n\n for (const match of matches) {\n if (match.start > lastMatchIndex) {\n tokens.push({\n type: 'text',\n text: item.slice(lastMatchIndex, match.start),\n });\n }\n\n tokens.push({\n type: 'match',\n text: item.slice(match.start, match.end),\n });\n\n lastMatchIndex = match.end;\n }\n\n if (lastMatchIndex < item.length) {\n tokens.push({\n type: 'text',\n text: item.slice(lastMatchIndex),\n });\n }\n\n return tokens;\n}\n\nfunction mergeRanges(ranges: MatchRange[]): MatchRange[] {\n const merged: MatchRange[] = [];\n\n const sorted = [...ranges].sort((a, b) => a.start - b.start);\n\n let current: MatchRange | undefined;\n\n for (const range of sorted) {\n if (!current) {\n current = range;\n } else if (range.start <= current.end) {\n current.end = Math.max(current.end, range.end);\n } else {\n merged.push(current);\n current = range;\n }\n }\n\n if (current) {\n merged.push(current);\n }\n\n return merged;\n}\n","import { Size } from \"@noya-app/noya-geometry\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport React, {\n Children,\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n isValidElement,\n memo,\n ReactElement,\n ReactNode,\n Ref,\n useCallback,\n useContext,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { WindowScroller, WindowScrollerChildProps } from \"react-virtualized\";\nimport { ListChildComponentProps, VariableSizeList } from \"react-window\";\nimport styled from \"styled-components\";\nimport { mergeEventHandlers } from \"../hooks/mergeEventHandlers\";\nimport { useHover } from \"../hooks/useHover\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { InputField } from \"./InputField\";\nimport { MenuItem } from \"./internal/Menu\";\nimport { ScrollArea } from \"./ScrollArea\";\nimport {\n DropValidator,\n normalizeListDestinationIndex,\n RelativeDropPosition,\n Sortable,\n} from \"./Sortable\";\nimport { Spacer } from \"./Spacer\";\n\nexport type ListRowMarginType = \"none\" | \"top\" | \"bottom\" | \"vertical\";\nexport type ListRowPosition = \"only\" | \"first\" | \"middle\" | \"last\";\n\nconst ROW_HEIGHT = 31;\nconst SECTION_HEADER_LABEL_HEIGHT = 27;\n\ntype ListColorScheme = \"primary\" | \"secondary\";\n\ntype PressEventName = \"onClick\" | \"onPointerDown\";\n\n// TODO: Some of these could be passed in a single context value that's\n// the same for all rows. But doing this seems to cause an infinite loop and\n// prevents drag and drop from working.\ntype ListRowContextValue = {\n marginType: ListRowMarginType;\n selectedPosition: ListRowPosition;\n sortable: boolean;\n expandable: boolean;\n divider: boolean;\n gap: number;\n variant: ListViewVariant;\n sectionHeaderVariant: ListViewSectionHeaderVariant;\n pressEventName: PressEventName;\n isSectionHeader: boolean;\n colorScheme: ListColorScheme;\n};\n\n// The dragged item isn't passed a context value (doing so causes an infinite loop),\n// so we pass this separately. Rows need the indentation to look correct when dragging,\n// and the dragged row doesn't have a ListRowContextValue.\ntype ListViewDraggingContextValue = {\n indentation: number;\n isDragging?: boolean;\n};\n\nconst ListViewDraggingContext = createContext<ListViewDraggingContextValue>({\n indentation: 12,\n});\n(ListViewDraggingContext as any).displayName = \"ListViewDraggingContext\";\n\nconst ListRowContext = createContext<ListRowContextValue>({\n marginType: \"none\",\n selectedPosition: \"only\",\n sortable: false,\n expandable: true,\n divider: true,\n gap: 0,\n variant: \"normal\",\n sectionHeaderVariant: \"normal\",\n pressEventName: \"onClick\",\n isSectionHeader: false,\n colorScheme: \"primary\",\n});\n(ListRowContext as any).displayName = \"ListRowContext\";\n\n/* ----------------------------------------------------------------------------\n * RowTitle\n * ------------------------------------------------------------------------- */\n\nconst ListViewRowTitle = styled.span(({ theme }) => ({\n flex: \"1 1 0\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"pre\",\n}));\n\n/* ----------------------------------------------------------------------------\n * EditableRowTitle\n * ------------------------------------------------------------------------- */\n\nconst ListViewEditableRowTitleElement = styled(InputField.Input)(\n ({ theme }) => ({\n background: theme.colors.listView.editingBackground,\n })\n) as typeof InputField.Input;\n\nexport interface EditableRowProps {\n value: string;\n onSubmitEditing: (value: string) => void;\n autoFocus: boolean;\n placeholder?: string;\n}\n\nfunction ListViewEditableRowTitle({\n value,\n onSubmitEditing,\n autoFocus,\n placeholder,\n}: EditableRowProps) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useLayoutEffect(() => {\n const element = inputRef.current;\n\n if (!element || !autoFocus) return;\n\n // Calling `focus` is necessary, in addition to `select`, to ensure\n // the `onBlur` fires correctly.\n element.focus();\n\n setTimeout(() => {\n element.select();\n }, 0);\n }, [autoFocus]);\n\n return (\n <ListViewEditableRowTitleElement\n ref={inputRef}\n variant=\"bare\"\n value={value}\n placeholder={placeholder}\n onSubmit={onSubmitEditing}\n allowSubmittingWithSameValue\n />\n );\n}\n\nfunction getPositionMargin(marginType: ListRowMarginType) {\n return {\n top: marginType === \"top\" || marginType === \"vertical\" ? 8 : 0,\n bottom: marginType === \"bottom\" || marginType === \"vertical\" ? 8 : 0,\n };\n}\n\n/* ----------------------------------------------------------------------------\n * Row\n * ------------------------------------------------------------------------- */\n\nconst RowContainer = styled.div<{\n $marginType: ListRowMarginType;\n $selected: boolean;\n $selectedPosition: ListRowPosition;\n $disabled: boolean;\n $hovered: boolean;\n $variant: ListViewVariant;\n $divider: boolean;\n $isSectionHeader: boolean;\n $showsActiveState: boolean;\n $sectionHeaderVariant: ListViewSectionHeaderVariant;\n $colorScheme: ListColorScheme;\n $gap: number;\n $backgroundColor?: CSSProperties[\"backgroundColor\"];\n}>(\n ({\n theme,\n $marginType,\n $selected,\n $selectedPosition,\n $disabled,\n $hovered,\n $variant,\n $divider,\n $isSectionHeader,\n $showsActiveState,\n $sectionHeaderVariant,\n $colorScheme,\n $gap,\n $backgroundColor,\n }) => {\n const margin = getPositionMargin($marginType);\n\n return {\n ...($isSectionHeader && $sectionHeaderVariant === \"label\"\n ? theme.textStyles.label\n : theme.textStyles.small),\n ...($isSectionHeader && { fontWeight: 500 }),\n gap: $gap,\n flex: \"0 0 auto\",\n userSelect: \"none\",\n cursor: \"default\",\n ...($variant !== \"bare\" && {\n paddingTop: \"6px\",\n paddingRight: \"12px\",\n paddingBottom: \"6px\",\n paddingLeft: \"12px\",\n ...($variant === \"padded\" && {\n borderRadius: \"2px\",\n marginLeft: \"8px\",\n marginRight: \"8px\",\n marginTop: `${margin.top}px`,\n marginBottom: `${margin.bottom}px`,\n }),\n }),\n color: theme.colors.textMuted,\n ...($isSectionHeader && {\n backgroundColor: theme.colors.listView.raisedBackground,\n ...($sectionHeaderVariant === \"label\" && {\n color: theme.colors.textDisabled,\n }),\n }),\n ...($disabled && {\n color: theme.colors.textDisabled,\n }),\n ...($selected && {\n color: \"white\",\n backgroundColor: theme.colors[$colorScheme],\n }),\n display: \"flex\",\n alignItems: \"center\",\n ...($selected &&\n !$isSectionHeader &&\n ($selectedPosition === \"middle\" || $selectedPosition === \"last\") && {\n borderTopRightRadius: \"0px\",\n borderTopLeftRadius: \"0px\",\n }),\n ...($selected &&\n !$isSectionHeader &&\n ($selectedPosition === \"middle\" || $selectedPosition === \"first\") && {\n borderBottomRightRadius: \"0px\",\n borderBottomLeftRadius: \"0px\",\n }),\n position: \"relative\",\n ...($hovered && {\n boxShadow: `0 0 0 1px ${theme.colors[$colorScheme]} inset`,\n }),\n ...($showsActiveState && {\n \"&:active\": {\n backgroundColor: $selected\n ? $colorScheme === \"secondary\"\n ? theme.colors.secondaryLight\n : theme.colors.primaryLight\n : theme.colors.activeBackground,\n },\n }),\n ...($divider && {\n borderBottom: `1px solid ${theme.colors.dividerSubtle}`,\n }),\n ...($backgroundColor && {\n backgroundColor: $backgroundColor,\n \"&:hover\": {\n backgroundColor: $backgroundColor,\n },\n \"&:active\": {\n backgroundColor: $backgroundColor,\n },\n }),\n };\n }\n);\n\nconst ListViewDragIndicatorElement = styled.div<{\n $relativeDropPosition: RelativeDropPosition;\n $gap: number;\n $offsetLeft: number;\n $colorScheme: ListColorScheme;\n}>(({ theme, $relativeDropPosition, $offsetLeft, $colorScheme, $gap }) => ({\n zIndex: 1,\n position: \"absolute\",\n borderRadius: \"3px\",\n ...($relativeDropPosition === \"inside\"\n ? {\n inset: 2,\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : theme.colors.dragOutline\n }`,\n }\n : {\n top: $relativeDropPosition === \"above\" ? -(3 + $gap / 2) : undefined,\n bottom: $relativeDropPosition === \"below\" ? -(3 + $gap / 2) : undefined,\n left: $offsetLeft,\n right: 0,\n height: 6,\n background: theme.colors[$colorScheme],\n border: `2px solid white`,\n boxShadow: \"0 0 2px rgba(0,0,0,0.5)\",\n }),\n}));\n\ninterface ListViewClickInfo {\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n ctrlKey: boolean;\n}\n\ninterface ListViewRowProps<MenuItemType extends string = string> {\n id?: string;\n tabIndex?: number;\n selected?: boolean;\n depth?: number;\n disabled?: boolean;\n // draggable?: boolean;\n hovered?: boolean;\n sortable?: boolean;\n gap?: number;\n backgroundColor?: CSSProperties[\"backgroundColor\"];\n onPress?: (info: ListViewClickInfo) => void;\n onDoubleClick?: () => void;\n onHoverChange?: (isHovering: boolean) => void;\n children?: ReactNode;\n isSectionHeader?: boolean;\n menuItems?: MenuItem<MenuItemType>[];\n onSelectMenuItem?: (value: MenuItemType) => void;\n onContextMenu?: () => void;\n onMenuOpenChange?: (isOpen: boolean) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n style?: CSSProperties;\n className?: string;\n dragIndicatorStyle?:\n | CSSProperties\n | ((props: {\n depth: number;\n indentation: number;\n position: RelativeDropPosition;\n }) => CSSProperties);\n}\n\nconst ListViewRow = forwardRef(function ListViewRow<\n MenuItemType extends string,\n>(\n {\n id,\n tabIndex = 0,\n gap,\n backgroundColor,\n selected = false,\n depth = 0,\n disabled = false,\n hovered = false,\n isSectionHeader = false,\n sortable: overrideSortable,\n onPress,\n onDoubleClick,\n onHoverChange,\n children,\n menuItems,\n onContextMenu,\n onSelectMenuItem,\n onMenuOpenChange,\n onKeyDown,\n style,\n dragIndicatorStyle,\n className,\n }: ListViewRowProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n depth = Math.max(0, depth);\n\n const {\n marginType,\n selectedPosition,\n sortable,\n pressEventName,\n variant,\n sectionHeaderVariant,\n divider,\n gap: listGap,\n colorScheme,\n } = useContext(ListRowContext);\n const { hoverProps } = useHover({\n onHoverChange,\n });\n const { indentation, isDragging } = useContext(ListViewDraggingContext);\n\n const handlePress = useCallback(\n (event: React.MouseEvent) => {\n // We use preventDefault as a hack to mark this event as handled. We check for\n // this in the ListView.Root. We can't stopPropagation here or existing ContextMenus\n // won't close (onPointerDownOutside won't fire).\n event.preventDefault();\n\n // We only want to handle left clicks\n if (event.button !== 0) return;\n\n onPress?.(event);\n },\n [onPress]\n );\n\n const handleDoubleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n\n onDoubleClick?.();\n },\n [onDoubleClick]\n );\n\n const mergedStyle = useMemo(() => {\n return isDragging\n ? {\n // TODO: Where do these offsets actually come from?\n transform: `translate3d(-36px, -6px, 0)`,\n width: `calc(100% + 48px)`,\n ...style,\n }\n : style;\n }, [isDragging, style]);\n\n const renderContent = (\n {\n relativeDropPosition,\n ...renderProps\n }: React.ComponentProps<typeof RowContainer> & {\n relativeDropPosition?: RelativeDropPosition;\n },\n ref: Ref<HTMLElement>\n ) => {\n const Component = RowContainer;\n\n const element = (\n <Component\n ref={ref as any}\n $colorScheme={colorScheme}\n onContextMenu={onContextMenu}\n $isSectionHeader={isSectionHeader}\n id={id}\n $gap={gap ?? 0}\n $backgroundColor={backgroundColor}\n {...hoverProps}\n onDoubleClick={handleDoubleClick}\n $marginType={marginType ?? \"none\"}\n $disabled={disabled}\n $hovered={hovered}\n $selected={selected}\n $variant={variant}\n $sectionHeaderVariant={sectionHeaderVariant}\n $selectedPosition={selectedPosition}\n $showsActiveState={pressEventName === \"onClick\"}\n aria-selected={selected}\n $divider={!isDragging && divider}\n onKeyDown={onKeyDown}\n style={mergedStyle}\n {...(renderProps as Partial<React.ComponentProps<typeof RowContainer>>)}\n {...mergeEventHandlers(\n { onPointerDown: renderProps.onPointerDown! },\n { [pressEventName]: handlePress }\n )}\n tabIndex={tabIndex}\n className={className}\n >\n {relativeDropPosition && (\n <ListViewDragIndicatorElement\n $colorScheme={colorScheme}\n $relativeDropPosition={relativeDropPosition}\n $offsetLeft={33 + depth * indentation}\n $gap={listGap + (divider ? 1 : 0)}\n style={\n typeof dragIndicatorStyle === \"function\"\n ? dragIndicatorStyle({\n depth,\n indentation,\n position: relativeDropPosition,\n })\n : dragIndicatorStyle\n }\n />\n )}\n {depth > 0 && <Spacer.Horizontal size={depth * indentation} />}\n {children}\n </Component>\n );\n\n if (menuItems && onSelectMenuItem) {\n return (\n <ContextMenu<MenuItemType>\n items={menuItems}\n onSelect={onSelectMenuItem}\n onOpenChange={onMenuOpenChange}\n >\n {element}\n </ContextMenu>\n );\n }\n\n return element;\n };\n\n if (sortable && id) {\n return (\n <Sortable.Item<HTMLElement> id={id} disabled={overrideSortable === false}>\n {({ ref: sortableRef, ...sortableProps }) =>\n renderContent(\n sortableProps as any,\n composeRefs(sortableRef, forwardedRef)\n )\n }\n </Sortable.Item>\n );\n }\n\n return renderContent({} as any, forwardedRef);\n});\n\n/* ----------------------------------------------------------------------------\n * VirtualizedListRow\n * ------------------------------------------------------------------------- */\n\nconst RenderItemContext = createContext<(index: number) => ReactNode>(\n () => null\n);\n(RenderItemContext as any).displayName = \"RenderItemContext\";\n\nconst VirtualizedListRow = memo(function VirtualizedListRow({\n index,\n style,\n}: ListChildComponentProps) {\n const renderItem = useContext(RenderItemContext);\n\n return (\n <div key={index} style={style}>\n {renderItem(index)}\n </div>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * VirtualizedList\n * ------------------------------------------------------------------------- */\n\ninterface VirtualizedListProps<T> {\n size: Size;\n scrollElement: HTMLDivElement;\n items: T[];\n getItemHeight: (index: number) => number;\n keyExtractor: (index: number) => string;\n renderItem: (index: number) => ReactNode;\n}\n\nexport interface IVirtualizedList {\n scrollToIndex(index: number): void;\n}\n\nconst VirtualizedListInner = forwardRef(function VirtualizedListInner<T>(\n {\n size,\n scrollElement,\n items,\n getItemHeight,\n keyExtractor,\n renderItem,\n }: VirtualizedListProps<T>,\n ref: ForwardedRef<IVirtualizedList>\n) {\n const listRef = useRef<VariableSizeList<T> | null>(null);\n\n useImperativeHandle(ref, () => ({\n scrollToIndex(index) {\n listRef.current?.scrollToItem(index);\n },\n }));\n\n useLayoutEffect(() => {\n listRef.current?.resetAfterIndex(0);\n }, [\n // When items change, we need to re-render the virtualized list,\n // since it doesn't currently support row height changes\n items,\n ]);\n\n // Internally, react-virtualized updates these properties. We always want\n // to use our custom scroll element, so we override them. It may update\n // overflowX/Y individually in addition to `overflow`, so we include all 3.\n const listStyle = useMemo(\n (): CSSProperties => ({\n overflowX: \"initial\",\n overflowY: \"initial\",\n overflow: \"initial\",\n }),\n []\n );\n\n return (\n <RenderItemContext.Provider value={renderItem}>\n <WindowScroller\n scrollElement={scrollElement}\n style={useMemo(() => ({ flex: \"1 1 auto\" }), [])}\n >\n {useCallback(\n ({\n registerChild,\n onChildScroll,\n scrollTop,\n }: WindowScrollerChildProps & {\n // Added when noya-designsystem moved to a separate package.\n // I think this is a hack to get around the fact that react-virtualized\n // doesn't update on scroll unless we force it to by changing ref.\n // Either we're not using this the intended way or the types are wrong.\n registerChild: (element: any) => void;\n }) => (\n <div ref={registerChild}>\n <VariableSizeList<T>\n ref={listRef}\n // The list won't update on scroll unless we force it to by changing key\n key={scrollTop}\n style={listStyle}\n itemKey={keyExtractor}\n onScroll={({ scrollOffset }: { scrollOffset: number }) => {\n onChildScroll({ scrollTop: scrollOffset });\n }}\n initialScrollOffset={scrollTop}\n width={size.width}\n height={size.height}\n itemCount={items.length}\n itemSize={getItemHeight}\n estimatedItemSize={ROW_HEIGHT}\n >\n {VirtualizedListRow}\n </VariableSizeList>\n </div>\n ),\n [\n listStyle,\n keyExtractor,\n size.width,\n size.height,\n items.length,\n getItemHeight,\n ]\n )}\n </WindowScroller>\n </RenderItemContext.Provider>\n );\n});\n\nconst VirtualizedList = memo(\n VirtualizedListInner\n) as typeof VirtualizedListInner;\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst RootContainer = styled.div<{\n $scrollable?: boolean;\n $gap?: number;\n}>(({ theme, $scrollable, $gap }) => ({\n flex: $scrollable ? \"1 0 0\" : \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"nowrap\",\n color: theme.colors.textMuted,\n gap: $gap,\n}));\n\ntype ListViewItemInfo = {\n isDragging: boolean;\n};\n\ntype ChildrenProps = {\n children: ReactNode;\n};\n\ntype RenderProps<T> = {\n data: T[];\n renderItem: (item: T, index: number, info: ListViewItemInfo) => ReactNode;\n keyExtractor: (item: T, index: number) => string;\n /**\n * Each item must have an `id` in order to be sortable.\n *\n * Additionally, the key extracted with `keyExtractor` must match the ListItem.Row `id`.\n */\n sortable?: boolean;\n virtualized?: Size;\n};\n\ntype ListViewVariant = \"normal\" | \"padded\" | \"bare\";\n\ntype ListViewSectionHeaderVariant = \"normal\" | \"label\";\n\ntype ListViewRootProps = {\n id?: string;\n className?: string;\n style?: CSSProperties;\n onPress?: () => void;\n scrollable?: boolean;\n expandable?: boolean;\n onMoveItem?: (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => void;\n indentation?: number;\n acceptsDrop?: DropValidator;\n pressEventName?: PressEventName;\n variant?: ListViewVariant;\n sectionHeaderVariant?: ListViewSectionHeaderVariant;\n divider?: boolean;\n gap?: number;\n colorScheme?: ListColorScheme;\n};\n\nconst ListViewRootInner = forwardRef(function ListViewRootInner<T>(\n {\n id,\n className,\n style,\n onPress,\n scrollable = false,\n expandable = true,\n sortable = false,\n divider = false,\n onMoveItem,\n indentation = 12,\n acceptsDrop,\n data,\n renderItem,\n keyExtractor,\n virtualized,\n variant = \"normal\",\n sectionHeaderVariant = \"normal\",\n pressEventName = \"onClick\",\n colorScheme = \"primary\",\n gap = 0,\n }: RenderProps<T> & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (\n event.target instanceof HTMLElement &&\n event.target.classList.contains(\"scroll-component\")\n )\n return;\n\n // As a hack, we call preventDefault in a row if the event was handled.\n // If the event wasn't handled already, we call onPress here.\n if (!event.isDefaultPrevented()) {\n onPress?.();\n }\n },\n [onPress]\n );\n\n const renderChild = useCallback(\n (index: number) => renderItem(data[index], index, { isDragging: false }),\n [data, renderItem]\n );\n\n // TODO: Do we still use section header properties anywhere?\n const defaultContextValue = useMemo(\n (): ListRowContextValue => ({\n colorScheme,\n marginType: \"none\",\n selectedPosition: \"only\",\n sortable,\n expandable,\n divider,\n pressEventName,\n variant,\n gap,\n sectionHeaderVariant: \"normal\",\n isSectionHeader: false,\n }),\n [colorScheme, sortable, expandable, divider, pressEventName, variant, gap]\n );\n\n const getItemContextValue = useCallback(\n (i: number): ListRowContextValue | undefined => {\n if (variant === \"bare\" || variant === \"normal\")\n return defaultContextValue;\n\n const current = renderChild(i);\n\n if (!isValidElement(current)) return;\n\n const prevChild = i - 1 >= 0 && renderChild(i - 1);\n const nextChild = i + 1 < data.length && renderChild(i + 1);\n\n const next: ReactElement | undefined = isValidElement(nextChild)\n ? nextChild\n : undefined;\n const prev: ReactElement | undefined = isValidElement(prevChild)\n ? prevChild\n : undefined;\n\n const hasMarginTop = !prev;\n const hasMarginBottom =\n !next ||\n current.props.isSectionHeader ||\n (next && next.props.isSectionHeader);\n\n let marginType: ListRowMarginType;\n\n if (hasMarginTop && hasMarginBottom) {\n marginType = \"vertical\";\n } else if (hasMarginBottom) {\n marginType = \"bottom\";\n } else if (hasMarginTop) {\n marginType = \"top\";\n } else {\n marginType = \"none\";\n }\n\n let selectedPosition: ListRowPosition = \"only\";\n\n if (current.props.selected) {\n const nextSelected =\n next && !next.props.isSectionHeader && next.props.selected;\n const prevSelected =\n prev && !prev.props.isSectionHeader && prev.props.selected;\n\n if (nextSelected && prevSelected) {\n selectedPosition = \"middle\";\n } else if (nextSelected && !prevSelected) {\n selectedPosition = \"first\";\n } else if (!nextSelected && prevSelected) {\n selectedPosition = \"last\";\n }\n }\n\n return {\n colorScheme,\n marginType,\n selectedPosition,\n sortable,\n expandable,\n divider,\n pressEventName,\n variant,\n sectionHeaderVariant,\n isSectionHeader: current.props.isSectionHeader,\n gap,\n };\n },\n [\n variant,\n defaultContextValue,\n renderChild,\n data.length,\n colorScheme,\n sortable,\n expandable,\n divider,\n pressEventName,\n sectionHeaderVariant,\n gap,\n ]\n );\n\n const draggingContextOverlayValue = useMemo(\n () => ({ indentation, isDragging: true }),\n [indentation]\n );\n\n const renderOverlay = useCallback(\n (index: number) => (\n <div style={{ opacity: 0.25 }}>\n <ListViewDraggingContext.Provider value={draggingContextOverlayValue}>\n {renderItem(data[index], index, { isDragging: true })}\n </ListViewDraggingContext.Provider>\n </div>\n ),\n [draggingContextOverlayValue, renderItem, data]\n );\n\n const renderWrappedChild = useCallback(\n (index: number) => {\n const contextValue = getItemContextValue(index);\n const current = renderChild(index);\n\n if (!contextValue || !isValidElement(current)) return null;\n\n return (\n <ListRowContext.Provider key={current.key} value={contextValue}>\n {current}\n </ListRowContext.Provider>\n );\n },\n [getItemContextValue, renderChild]\n );\n\n const ids = useMemo(() => data.map(keyExtractor), [keyExtractor, data]);\n\n const withSortable = (children: ReactNode) =>\n sortable ? (\n <Sortable.Root\n onMoveItem={onMoveItem}\n keys={ids}\n renderOverlay={renderOverlay}\n acceptsDrop={acceptsDrop}\n >\n {children}\n </Sortable.Root>\n ) : (\n children\n );\n\n const withScrollable = (\n children: (scrollElementRef: HTMLDivElement | null) => ReactNode\n ) => (scrollable ? <ScrollArea>{children}</ScrollArea> : children(null));\n\n const getItemHeight = useCallback(\n (index: number) => {\n const child = getItemContextValue(index);\n const margin = child?.marginType\n ? getPositionMargin(child.marginType)\n : { top: 0, bottom: 0 };\n const height =\n (child?.isSectionHeader && child.sectionHeaderVariant === \"label\"\n ? SECTION_HEADER_LABEL_HEIGHT\n : ROW_HEIGHT) +\n (variant === \"padded\" ? margin.top + margin.bottom : 0);\n return height;\n },\n [getItemContextValue, variant]\n );\n\n const getKey = useCallback(\n (index: number) => keyExtractor(data[index], index),\n [data, keyExtractor]\n );\n\n const draggingContextValue = useMemo(() => ({ indentation }), [indentation]);\n\n return (\n <ListViewDraggingContext.Provider value={draggingContextValue}>\n <RootContainer\n id={id}\n className={className}\n style={style}\n {...{\n [pressEventName]: handleClick,\n }}\n $gap={gap}\n $scrollable={scrollable}\n >\n {withScrollable((scrollElementRef: HTMLDivElement | null) =>\n withSortable(\n virtualized ? (\n <VirtualizedList<T>\n ref={forwardedRef}\n scrollElement={scrollElementRef!}\n items={data}\n size={virtualized}\n getItemHeight={getItemHeight}\n keyExtractor={getKey}\n renderItem={renderWrappedChild}\n />\n ) : (\n range(0, data.length).map(renderWrappedChild)\n )\n )\n )}\n </RootContainer>\n </ListViewDraggingContext.Provider>\n );\n});\n\nconst ListViewRoot = memo(ListViewRootInner) as typeof ListViewRootInner;\n\nconst ChildrenListViewInner = forwardRef(function ChildrenListViewInner(\n { children, ...rest }: ChildrenProps & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n const items: ReactElement[] = useMemo(\n () =>\n Children.toArray(children).flatMap((child) =>\n isValidElement(child) ? [child] : []\n ),\n [children]\n );\n\n return (\n <ListViewRoot\n ref={forwardedRef}\n {...rest}\n data={items}\n keyExtractor={useCallback(\n ({ key }: { key: string | number | null }, index: number) =>\n typeof key === \"string\" ? key : (key ?? index).toString(),\n []\n )}\n renderItem={useCallback((item: ReactElement) => item, [])}\n />\n );\n});\n\nconst ChildrenListView = memo(ChildrenListViewInner);\n\nconst SimpleListViewInner = forwardRef(function SimpleListViewInner<T = any>(\n props: (ChildrenProps | RenderProps<T>) & ListViewRootProps,\n forwardedRef: ForwardedRef<IVirtualizedList>\n) {\n if (\"children\" in props) {\n return <ChildrenListView ref={forwardedRef} {...props} />;\n } else {\n return <ListViewRoot ref={forwardedRef} {...props} />;\n }\n});\n\n/**\n * A ListView can be created either with `children` or render props\n */\nconst SimpleListView = memo(SimpleListViewInner);\n\nexport namespace ListView {\n export const RowTitle = memo(ListViewRowTitle);\n export const EditableRowTitle = memo(ListViewEditableRowTitle);\n export const Row = memo(ListViewRow);\n export const Root = SimpleListView;\n export const RowContext = ListRowContext;\n export type ClickInfo = ListViewClickInfo;\n export type ItemInfo = ListViewItemInfo;\n export type RowProps<MenuItemType extends string = string> =\n ListViewRowProps<MenuItemType>;\n export type VirtualizedList = IVirtualizedList;\n export const DragIndicator = ListViewDragIndicatorElement;\n export const rowHeight = ROW_HEIGHT;\n export const sectionHeaderLabelHeight = SECTION_HEADER_LABEL_HEIGHT;\n export const calculateHeight = (\n items: number,\n headerCount: number,\n headerVariant: ListViewSectionHeaderVariant\n ) => {\n return (\n items * rowHeight +\n headerCount *\n (headerVariant === \"label\" ? sectionHeaderLabelHeight : rowHeight)\n );\n };\n export const normalizeDestinationIndex = normalizeListDestinationIndex;\n}\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollToColumn: 0,\n scrollToRow: 0,\n instanceProps: {\n prevScrollToColumn: 0,\n prevScrollToRow: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n var columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex;\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n });\n\n return _this;\n }\n\n _createClass(ArrowKeyStepper, [{\n key: \"setScrollIndexes\",\n value: function setScrollIndexes(_ref2) {\n var scrollToColumn = _ref2.scrollToColumn,\n scrollToRow = _ref2.scrollToRow;\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children;\n\n var _this$_getScrollState3 = this._getScrollState(),\n scrollToColumn = _this$_getScrollState3.scrollToColumn,\n scrollToRow = _this$_getScrollState3.scrollToRow;\n\n return React.createElement(\"div\", {\n className: className,\n onKeyDown: this._onKeyDown\n }, children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n }));\n }\n }, {\n key: \"_getScrollState\",\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: \"_updateScrollState\",\n value: function _updateScrollState(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n var _this$props3 = this.props,\n isControlled = _this$props3.isControlled,\n onScrollToChange = _this$props3.onScrollToChange;\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n\n if (!isControlled) {\n this.setState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return {};\n }\n\n if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n return _objectSpread({}, prevState, {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow,\n instanceProps: {\n prevScrollToColumn: nextProps.scrollToColumn,\n prevScrollToRow: nextProps.scrollToRow\n }\n });\n }\n\n return {};\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"children\": PropTypes.func.isRequired,\n \"className\": PropTypes.string,\n \"columnCount\": PropTypes.number.isRequired,\n \"disabled\": PropTypes.bool.isRequired,\n \"isControlled\": PropTypes.bool.isRequired,\n \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n \"onScrollToChange\": PropTypes.func,\n \"rowCount\": PropTypes.number.isRequired,\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent);\n\n // Invokes onSectionRendered callback only when start/stop row or column indices change\n function Grid(props) {\n var _this;\n\n _classCallCheck(this, Grid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n });\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: null,\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n\n return _this;\n }\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: \"getOffsetForCell\",\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _objectSpread({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: \"getTotalRowsHeight\",\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: \"getTotalColumnsWidth\",\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: \"handleScrollEvent\",\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop;\n\n // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n if (scrollTopParam < 0) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n this._debounceScrollEnded();\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n autoWidth = _this$props.autoWidth,\n height = _this$props.height,\n width = _this$props.width;\n var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: scrollDirectionHorizontal,\n scrollDirectionVertical: scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n rowCount = _this$props2.rowCount;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n var _this$props3 = this.props,\n scrollToColumn = _this$props3.scrollToColumn,\n scrollToRow = _this$props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n\n this._styleCache = {};\n this._cellCache = {};\n this.forceUpdate();\n }\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: \"scrollToCell\",\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n getScrollbarSize = _this$props4.getScrollbarSize,\n height = _this$props4.height,\n scrollLeft = _this$props4.scrollLeft,\n scrollToColumn = _this$props4.scrollToColumn,\n scrollTop = _this$props4.scrollTop,\n scrollToRow = _this$props4.scrollToRow,\n width = _this$props4.width;\n var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _objectSpread({}, prevState, {\n needToResetStyleCache: false\n });\n\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n } // refs don't work in `react-test-renderer`\n\n\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n } // Update onRowsRendered callback\n\n\n this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n autoHeight = _this$props5.autoHeight,\n autoWidth = _this$props5.autoWidth,\n columnCount = _this$props5.columnCount,\n height = _this$props5.height,\n rowCount = _this$props5.rowCount,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToColumn = _this$props5.scrollToColumn,\n scrollToRow = _this$props5.scrollToRow,\n width = _this$props5.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n scrollTop = _this$state.scrollTop,\n instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n\n\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n\n\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoContainerWidth = _this$props6.autoContainerWidth,\n autoHeight = _this$props6.autoHeight,\n autoWidth = _this$props6.autoWidth,\n className = _this$props6.className,\n containerProps = _this$props6.containerProps,\n containerRole = _this$props6.containerRole,\n containerStyle = _this$props6.containerStyle,\n height = _this$props6.height,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n role = _this$props6.role,\n style = _this$props6.style,\n tabIndex = _this$props6.tabIndex,\n width = _this$props6.width;\n var _this$state2 = this.state,\n instanceProps = _this$state2.instanceProps,\n needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n } // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n\n\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n } // calculate children to render here\n\n\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n } // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n var childrenToDisplay = this._childrenToDisplay;\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n return React.createElement(\"div\", _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n \"aria-label\": this.props['aria-label'],\n \"aria-readonly\": this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({}, gridStyle, {}, style),\n tabIndex: tabIndex\n }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Grid__innerScrollContainer\",\n role: containerRole,\n style: _objectSpread({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle)\n }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: \"_calculateChildrenToRender\",\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n }); // Store for _invokeOnGridRenderedHelper()\n\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n }); // Store for _invokeOnGridRenderedHelper()\n\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n } // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n\n\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n }); // update the indices\n\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_debounceScrollEnded\",\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_isScrolling\",\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: \"_maybeCallOnScrollbarPresenceChange\",\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n this._scrollbarPresenceChanged = false;\n onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: \"scrollToPosition\",\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: \"_updateScrollLeftForScrollToColumn\",\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: \"_resetStyleCache\",\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: \"_updateScrollTopForScrollToRow\",\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n newState.needToResetStyleCache = false;\n\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n Object.assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA;\n var maybeStateB;\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n }\n }, {\n key: \"_getEstimatedColumnSize\",\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: \"_getEstimatedRowSize\",\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: \"_getScrollToPositionStateUpdate\",\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n\n return {};\n }\n }, {\n key: \"_wrapSizeGetter\",\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n\n return {};\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollTopForScrollToRowStateUpdate\",\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n\n return {};\n }\n }]);\n\n return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoWidth\": PropTypes.bool.isRequired,\n\n /** Responsible for rendering a cell given an row and column index. */\n \"cellRenderer\": function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a group of cells given their index ranges. */\n \"cellRangeRenderer\": function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n /** Optional custom CSS class name to attach to root Grid element. */\n \"className\": PropTypes.string,\n\n /** Number of columns in grid. */\n \"columnCount\": PropTypes.number.isRequired,\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n \"columnWidth\": function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Unfiltered props for the Grid container. */\n \"containerProps\": PropTypes.object,\n\n /** ARIA role for the cell-container. */\n \"containerRole\": PropTypes.string.isRequired,\n\n /** Optional inline style applied to inner cell-container */\n \"containerStyle\": PropTypes.object.isRequired,\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n \"deferredMeasurementCache\": PropTypes.object,\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Exposed for testing purposes only. */\n \"getScrollbarSize\": PropTypes.func.isRequired,\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional custom id to attach to root Grid element. */\n \"id\": PropTypes.string,\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n \"isScrolling\": PropTypes.bool,\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n \"noContentRenderer\": function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n \"onSectionRendered\": PropTypes.func.isRequired,\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanColumnCount\": PropTypes.number.isRequired,\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** ARIA role for the grid element. */\n \"role\": PropTypes.string.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in grid. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Horizontal offset. */\n \"scrollLeft\": PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToColumn\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToRow\": PropTypes.number.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n _defineProperty(this, \"_maxScrollSize\", void 0);\n\n // Favor composition over inheritance to simplify IE10 support\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: \"configure\",\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: \"_getOffsetPercentage\",\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: \"_offsetToSafeOffset\",\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: \"_safeOffsetToOffset\",\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\nvar CellSizeAndPositionManager =\n/*#__PURE__*/\nfunction () {\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n // Used in deferred mode to track which cells have been queued for measurement.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n _defineProperty(this, \"_cellCount\", void 0);\n\n _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n }\n\n _createClass(CellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: \"configure\",\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment() {\n return 0;\n }\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n }\n\n if (index > this._lastMeasuredIndex) {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n var size = this._cellSizeGetter({\n index: i\n }); // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n if (size === undefined || isNaN(size)) {\n throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n } else if (size === null) {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: 0\n };\n this._lastBatchedIndex = index;\n } else {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n this._lastMeasuredIndex = index;\n }\n }\n }\n\n return this._cellSizeAndPositionData[index];\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n offset: 0,\n size: 0\n };\n }\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n }\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n\n case 'end':\n idealOffset = minOffset;\n break;\n\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(params) {\n var containerSize = params.containerSize,\n offset = params.offset;\n var totalSize = this.getTotalSize();\n\n if (totalSize === 0) {\n return {};\n }\n\n var maxOffset = offset + containerSize;\n\n var start = this._findNearestCell(offset);\n\n var datum = this.getSizeAndPositionOfCell(start);\n offset = datum.offset + datum.size;\n var stop = start;\n\n while (offset < maxOffset && stop < this._cellCount - 1) {\n stop++;\n offset += this.getSizeAndPositionOfCell(stop).size;\n }\n\n return {\n start: start,\n stop: stop\n };\n }\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n }, {\n key: \"_binarySearch\",\n value: function _binarySearch(high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n }\n }, {\n key: \"_exponentialSearch\",\n value: function _exponentialSearch(index, offset) {\n var interval = 1;\n\n while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n }\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: \"_findNearestCell\",\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n } // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n\n\n offset = Math.max(0, offset);\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n // If we've already measured cells within this range just use a binary search as it's faster.\n return this._binarySearch(lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this._exponentialSearch(lastMeasuredIndex, offset);\n }\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","import * as React from 'react';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nvar bpfrpt_proptype_CellPosition = process.env.NODE_ENV === 'production' ? null : {\n \"columnIndex\": PropTypes.number.isRequired,\n \"rowIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_CellRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"columnIndex\": PropTypes.number.isRequired,\n \"isScrolling\": PropTypes.bool.isRequired,\n \"isVisible\": PropTypes.bool.isRequired,\n \"key\": PropTypes.string.isRequired,\n \"parent\": PropTypes.object.isRequired,\n \"rowIndex\": PropTypes.number.isRequired,\n \"style\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_CellRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellCache = process.env.NODE_ENV === 'production' ? null : PropTypes.objectOf(PropTypes.node.isRequired);\nvar bpfrpt_proptype_StyleCache = process.env.NODE_ENV === 'production' ? null : PropTypes.objectOf(PropTypes.object.isRequired);\nvar bpfrpt_proptype_CellRangeRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"cellCache\": PropTypes.objectOf(PropTypes.node.isRequired).isRequired,\n \"cellRenderer\": PropTypes.func.isRequired,\n \"columnSizeAndPositionManager\": function columnSizeAndPositionManager() {\n return (typeof ScalingCellSizeAndPositionManager === \"function\" ? PropTypes.instanceOf(ScalingCellSizeAndPositionManager).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"columnStartIndex\": PropTypes.number.isRequired,\n \"columnStopIndex\": PropTypes.number.isRequired,\n \"deferredMeasurementCache\": PropTypes.object,\n \"horizontalOffsetAdjustment\": PropTypes.number.isRequired,\n \"isScrolling\": PropTypes.bool.isRequired,\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n \"parent\": PropTypes.object.isRequired,\n \"rowSizeAndPositionManager\": function rowSizeAndPositionManager() {\n return (typeof ScalingCellSizeAndPositionManager === \"function\" ? PropTypes.instanceOf(ScalingCellSizeAndPositionManager).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"rowStartIndex\": PropTypes.number.isRequired,\n \"rowStopIndex\": PropTypes.number.isRequired,\n \"scrollLeft\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired,\n \"styleCache\": PropTypes.objectOf(PropTypes.object.isRequired).isRequired,\n \"verticalOffsetAdjustment\": PropTypes.number.isRequired,\n \"visibleColumnIndices\": PropTypes.object.isRequired,\n \"visibleRowIndices\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_CellRangeRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellSizeGetter = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_CellSize = process.env.NODE_ENV === 'production' ? null : PropTypes.oneOfType([PropTypes.func, PropTypes.number]);\nvar bpfrpt_proptype_NoContentRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n \"clientHeight\": PropTypes.number.isRequired,\n \"clientWidth\": PropTypes.number.isRequired,\n \"scrollHeight\": PropTypes.number.isRequired,\n \"scrollLeft\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired,\n \"scrollWidth\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_ScrollbarPresenceChange = process.env.NODE_ENV === 'production' ? null : {\n \"horizontal\": PropTypes.bool.isRequired,\n \"vertical\": PropTypes.bool.isRequired,\n \"size\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_RenderedSection = process.env.NODE_ENV === 'production' ? null : {\n \"columnOverscanStartIndex\": PropTypes.number.isRequired,\n \"columnOverscanStopIndex\": PropTypes.number.isRequired,\n \"columnStartIndex\": PropTypes.number.isRequired,\n \"columnStopIndex\": PropTypes.number.isRequired,\n \"rowOverscanStartIndex\": PropTypes.number.isRequired,\n \"rowOverscanStopIndex\": PropTypes.number.isRequired,\n \"rowStartIndex\": PropTypes.number.isRequired,\n \"rowStopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndicesGetterParams = process.env.NODE_ENV === 'production' ? null : {\n // One of SCROLL_DIRECTION_HORIZONTAL or SCROLL_DIRECTION_VERTICAL\n \"direction\": PropTypes.oneOf([\"horizontal\", \"vertical\"]).isRequired,\n // One of SCROLL_DIRECTION_BACKWARD or SCROLL_DIRECTION_FORWARD\n \"scrollDirection\": PropTypes.oneOf([-1, 1]).isRequired,\n // Number of rows or columns in the current axis\n \"cellCount\": PropTypes.number.isRequired,\n // Maximum number of cells to over-render in either direction\n \"overscanCellsCount\": PropTypes.number.isRequired,\n // Begin of range of visible cells\n \"startIndex\": PropTypes.number.isRequired,\n // End of range of visible cells\n \"stopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndices = process.env.NODE_ENV === 'production' ? null : {\n \"overscanStartIndex\": PropTypes.number.isRequired,\n \"overscanStopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_OverscanIndicesGetter = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_Alignment = process.env.NODE_ENV === 'production' ? null : PropTypes.oneOf([\"auto\", \"end\", \"start\", \"center\"]);\nvar bpfrpt_proptype_VisibleCellRange = process.env.NODE_ENV === 'production' ? null : {\n \"start\": PropTypes.number,\n \"stop\": PropTypes.number\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellPosition };\nexport { bpfrpt_proptype_CellRendererParams };\nexport { bpfrpt_proptype_CellRenderer };\nexport { bpfrpt_proptype_CellCache };\nexport { bpfrpt_proptype_StyleCache };\nexport { bpfrpt_proptype_CellRangeRendererParams };\nexport { bpfrpt_proptype_CellRangeRenderer };\nexport { bpfrpt_proptype_CellSizeGetter };\nexport { bpfrpt_proptype_CellSize };\nexport { bpfrpt_proptype_NoContentRenderer };\nexport { bpfrpt_proptype_Scroll };\nexport { bpfrpt_proptype_ScrollbarPresenceChange };\nexport { bpfrpt_proptype_RenderedSection };\nexport { bpfrpt_proptype_OverscanIndicesGetterParams };\nexport { bpfrpt_proptype_OverscanIndices };\nexport { bpfrpt_proptype_OverscanIndicesGetter };\nexport { bpfrpt_proptype_Alignment };\nexport { bpfrpt_proptype_VisibleCellRange };","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cachedIndices = {};\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n var keys = Object.keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start; // wait for end of processing current event handler, because event handler may be long\n\n Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(AutoSizer, _React$Component);\n\n function AutoSizer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var height = _this._parentNode.offsetHeight || 0;\n var width = _this._parentNode.offsetWidth || 0;\n var win = _this._window || window;\n var style = win.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(style.paddingRight, 10) || 0;\n var paddingTop = parseInt(style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n var newHeight = height - paddingTop - paddingBottom;\n var newWidth = width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: height - paddingTop - paddingBottom,\n width: width - paddingLeft - paddingRight\n });\n\n onResize({\n height: height,\n width: width\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n _this._autoSizer = autoSizer;\n });\n\n return _this;\n }\n\n _createClass(AutoSizer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disableHeight = _this$props2.disableHeight,\n disableWidth = _this$props2.disableWidth,\n style = _this$props2.style;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n\n return React.createElement(\"div\", {\n className: className,\n ref: this._setRef,\n style: _objectSpread({}, outerStyle, {}, style)\n }, children(childParams));\n }\n }]);\n\n return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n \"children\": PropTypes.func.isRequired,\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n \"className\": PropTypes.string,\n\n /** Default height to use for initial render; useful for SSR */\n \"defaultHeight\": PropTypes.number,\n\n /** Default width to use for initial render; useful for SSR */\n \"defaultWidth\": PropTypes.number,\n\n /** Disable dynamic :height property */\n \"disableHeight\": PropTypes.bool.isRequired,\n\n /** Disable dynamic :width property */\n \"disableWidth\": PropTypes.bool.isRequired,\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n \"nonce\": PropTypes.string,\n\n /** Callback to be invoked on-resize */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof hostWindow !== 'undefined') {\n _window = hostWindow;\n } else if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = _window.document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var resizeTriggersHtml = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n\n if (window.trustedTypes) {\n var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n createHTML: function createHTML() {\n return resizeTriggersHtml;\n }\n });\n element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n } else {\n element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n }\n\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('CellMeasurer registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n if (element) {\n _this._maybeMeasureCell();\n }\n });\n\n return _this;\n }\n\n _createClass(CellMeasurer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return typeof children === 'function' ? children({\n measure: this._measure,\n registerChild: this._registerChild\n }) : children;\n }\n }, {\n key: \"_getCellMeasurements\",\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return {\n height: height,\n width: width\n };\n } else {\n return {\n height: 0,\n width: 0\n };\n }\n }\n }, {\n key: \"_maybeMeasureCell\",\n value: function _maybeMeasureCell() {\n var _this$props2 = this.props,\n cache = _this$props2.cache,\n _this$props2$columnIn = _this$props2.columnIndex,\n columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n parent = _this$props2.parent,\n _this$props2$rowIndex = _this$props2.rowIndex,\n rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _this$_getCellMeasure2 = this._getCellMeasurements(),\n height = _this$_getCellMeasure2.height,\n width = _this$_getCellMeasure2.width;\n\n cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"cache\": function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n \"columnIndex\": PropTypes.number,\n \"index\": PropTypes.number,\n \"parent\": PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","var bpfrpt_proptype_CellMeasureCache = process.env.NODE_ENV === 'production' ? null : {\n \"hasFixedWidth\": PropTypes.func.isRequired,\n \"hasFixedHeight\": PropTypes.func.isRequired,\n \"has\": PropTypes.func.isRequired,\n \"set\": PropTypes.func.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasureCache };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var DEFAULT_HEIGHT = 30;\nexport var DEFAULT_WIDTH = 100; // Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCache() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCache);\n\n _defineProperty(this, \"_cellHeightCache\", {});\n\n _defineProperty(this, \"_cellWidthCache\", {});\n\n _defineProperty(this, \"_columnWidthCache\", {});\n\n _defineProperty(this, \"_rowHeightCache\", {});\n\n _defineProperty(this, \"_defaultHeight\", void 0);\n\n _defineProperty(this, \"_defaultWidth\", void 0);\n\n _defineProperty(this, \"_minHeight\", void 0);\n\n _defineProperty(this, \"_minWidth\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n _defineProperty(this, \"_hasFixedHeight\", void 0);\n\n _defineProperty(this, \"_hasFixedWidth\", void 0);\n\n _defineProperty(this, \"_columnCount\", 0);\n\n _defineProperty(this, \"_rowCount\", 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n var key = _this._keyMapper(0, index);\n\n return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n var key = _this._keyMapper(index, 0);\n\n return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;\n });\n\n var defaultHeight = params.defaultHeight,\n defaultWidth = params.defaultWidth,\n fixedHeight = params.fixedHeight,\n fixedWidth = params.fixedWidth,\n keyMapper = params.keyMapper,\n minHeight = params.minHeight,\n minWidth = params.minWidth;\n this._hasFixedHeight = fixedHeight === true;\n this._hasFixedWidth = fixedWidth === true;\n this._minHeight = minHeight || 0;\n this._minWidth = minWidth || 0;\n this._keyMapper = keyMapper || defaultKeyMapper;\n this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n if (process.env.NODE_ENV !== 'production') {\n if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n }\n\n if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n\n if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n }\n }\n\n _createClass(CellMeasurerCache, [{\n key: \"clear\",\n value: function clear(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n delete this._cellHeightCache[key];\n delete this._cellWidthCache[key];\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellHeightCache = {};\n this._cellWidthCache = {};\n this._columnWidthCache = {};\n this._rowHeightCache = {};\n this._rowCount = 0;\n this._columnCount = 0;\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._hasFixedHeight;\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._hasFixedWidth;\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedHeight) {\n return this._defaultHeight;\n } else {\n var _key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n }\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedWidth) {\n return this._defaultWidth;\n } else {\n var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n }\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache[key] !== undefined;\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n var key = this._keyMapper(rowIndex, columnIndex);\n\n if (columnIndex >= this._columnCount) {\n this._columnCount = columnIndex + 1;\n }\n\n if (rowIndex >= this._rowCount) {\n this._rowCount = rowIndex + 1;\n } // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n\n\n this._cellHeightCache[key] = height;\n this._cellWidthCache[key] = width;\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: \"_updateCachedColumnAndRowSizes\",\n value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n // Pre-cache these derived values for faster lookup later.\n // Reads are expected to occur more frequently than writes in this case.\n // Only update non-fixed dimensions though to avoid doing unnecessary work.\n if (!this._hasFixedWidth) {\n var columnWidth = 0;\n\n for (var i = 0; i < this._rowCount; i++) {\n columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n }\n\n var columnKey = this._keyMapper(0, columnIndex);\n\n this._columnWidthCache[columnKey] = columnWidth;\n }\n\n if (!this._hasFixedHeight) {\n var rowHeight = 0;\n\n for (var _i = 0; _i < this._columnCount; _i++) {\n rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n }\n\n var rowKey = this._keyMapper(rowIndex, 0);\n\n this._rowHeightCache[rowKey] = rowHeight;\n }\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._defaultWidth;\n }\n }]);\n\n return CellMeasurerCache;\n}();\n\nexport { CellMeasurerCache as default };\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n return \"\".concat(rowIndex, \"-\").concat(columnIndex);\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n var _this;\n\n _classCallCheck(this, Collection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n _this._cellCache = [];\n _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Collection, [{\n key: \"forceUpdate\",\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n\n this._collectionView.recomputeCellSizesAndPositions();\n }\n /** React lifecycle methods */\n\n }, {\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n /** CellLayoutManager interface */\n\n }, {\n key: \"calculateSizeAndPositionData\",\n value: function calculateSizeAndPositionData() {\n var _this$props = this.props,\n cellCount = _this$props.cellCount,\n cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n sectionSize = _this$props.sectionSize;\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: \"getLastRenderedIndices\",\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: \"getScrollPositionForCell\",\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: \"cellRenderers\",\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _this$props2 = this.props,\n cellGroupRenderer = _this$props2.cellGroupRenderer,\n cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({\n index: index\n });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: \"_isScrollingChange\",\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: \"_setCollectionViewRef\",\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Number of cells in Collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a group of cells given their indices.\n * Should implement the following interface: ({\n * cellSizeAndPositionGetter:Function,\n * indices: Array<number>,\n * cellRenderer: Function\n * }): Array<PropTypes.node>\n */\n cellGroupRenderer: PropTypes.func.isRequired,\n\n /**\n * Responsible for rendering a cell given an row and column index.\n * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n */\n cellRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback responsible for returning size and offset/position information for a given cell (index).\n * ({ index: number }): { height: number, width: number, x: number, y: number }\n */\n cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n /**\n * Optionally override the size of the sections a Collection's cells are split into.\n */\n sectionSize: PropTypes.number\n} : {};\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({\n index: index\n });\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n }; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent);\n\n // Invokes callbacks only when their values have changed.\n function CollectionView() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n });\n\n _this._scrollbarSize = getScrollbarSize();\n\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n\n return _this;\n }\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n cellLayoutManager = _this$props4.cellLayoutManager,\n scrollLeft = _this$props4.scrollLeft,\n scrollToCell = _this$props4.scrollToCell,\n scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n } // Update onSectionRendered callback.\n\n\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props5 = this.props,\n height = _this$props5.height,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToCell = _this$props5.scrollToCell,\n width = _this$props5.width;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoHeight = _this$props6.autoHeight,\n cellCount = _this$props6.cellCount,\n cellLayoutManager = _this$props6.cellLayoutManager,\n className = _this$props6.className,\n height = _this$props6.height,\n horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n style = _this$props6.style,\n verticalOverscanSize = _this$props6.verticalOverscanSize,\n width = _this$props6.width;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollLeft = _this$state3.scrollLeft,\n scrollTop = _this$state3.scrollTop; // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n }; // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: \"grid\",\n style: _objectSpread({}, collectionStyle, {}, style),\n tabIndex: 0\n }, cellCount > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Collection__innerScrollContainer\",\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n }\n }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_enablePointerEventsAfterDelay\",\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n isScrollingChange(false);\n _this2._disablePointerEventsTimeoutId = null;\n\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref) {\n var _this3 = this;\n\n var scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n totalHeight = _ref.totalHeight,\n totalWidth = _ref.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref2) {\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_setScrollPosition\",\n value: function _setScrollPosition(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n});\n\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /**\n * Number of cells in collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n */\n cellLayoutManager: PropTypes.object.isRequired,\n\n /**\n * Optional custom CSS class name to attach to root Collection element.\n */\n className: PropTypes.string,\n\n /**\n * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Optional custom id to attach to root Collection element.\n */\n id: PropTypes.string,\n\n /**\n * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n horizontalOverscanSize: PropTypes.number.isRequired,\n isScrollingChange: PropTypes.func,\n\n /**\n * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n */\n noContentRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /**\n * Callback invoked with information about the section of the Collection that was just rendered.\n * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n */\n onSectionRendered: PropTypes.func.isRequired,\n\n /**\n * Horizontal offset.\n */\n scrollLeft: PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /**\n * Cell index to ensure visible (by forcefully scrolling if necessary).\n */\n scrollToCell: PropTypes.number.isRequired,\n\n /**\n * Vertical offset.\n */\n scrollTop: PropTypes.number,\n\n /**\n * Optional custom inline style to attach to root Collection element.\n */\n style: PropTypes.object,\n\n /**\n * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n verticalOverscanSize: PropTypes.number.isRequired,\n\n /**\n * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n */\n width: PropTypes.number.isRequired\n} : {};\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager =\n/*#__PURE__*/\nfunction () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n this._cellMetadata = [];\n this._sections = {};\n }\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: \"getCellIndices\",\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n var indices = {};\n this.getSections({\n height: height,\n width: width,\n x: x,\n y: y\n }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n }); // Object keys are strings; this function returns numbers\n\n return Object.keys(indices).map(function (index) {\n return indices[index];\n });\n }\n /** Get size and position information for the cell specified. */\n\n }, {\n key: \"getCellMetadata\",\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n return this._cellMetadata[index];\n }\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: \"getSections\",\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: \"getTotalSectionCount\",\n value: function getTotalSectionCount() {\n return Object.keys(this._sections).length;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: \"registerCell\",\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n this._cellMetadata[index] = cellMetadatum;\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({\n index: index\n });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section =\n/*#__PURE__*/\nfunction () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n this._indexMap = {};\n this._indices = [];\n }\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: \"addCellIndex\",\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n\n this._indices.push(index);\n }\n }\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: \"getCellIndices\",\n value: function getCellIndices() {\n return this._indices;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n }\n }]);\n\n return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","var bpfrpt_proptype_Index = process.env.NODE_ENV === 'production' ? null : {\n \"index\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_PositionInfo = process.env.NODE_ENV === 'production' ? null : {\n \"x\": PropTypes.number.isRequired,\n \"y\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_ScrollPosition = process.env.NODE_ENV === 'production' ? null : {\n \"scrollLeft\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_SizeAndPositionInfo = process.env.NODE_ENV === 'production' ? null : {\n \"height\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"x\": PropTypes.number.isRequired,\n \"y\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_SizeInfo = process.env.NODE_ENV === 'production' ? null : {\n \"height\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_Index };\nexport { bpfrpt_proptype_PositionInfo };\nexport { bpfrpt_proptype_ScrollPosition };\nexport { bpfrpt_proptype_SizeAndPositionInfo };\nexport { bpfrpt_proptype_SizeInfo };","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({\n index: index\n });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n var _this;\n\n _classCallCheck(this, ColumnSizer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n columnMaxWidth = _this$props.columnMaxWidth,\n columnMinWidth = _this$props.columnMinWidth,\n columnCount = _this$props.columnCount,\n width = _this$props.width;\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n columnMaxWidth = _this$props2.columnMaxWidth,\n columnMinWidth = _this$props2.columnMinWidth,\n columnCount = _this$props2.columnCount,\n width = _this$props2.width;\n var safeColumnMinWidth = columnMinWidth || 1;\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n var _this;\n\n _classCallCheck(this, InfiniteLoader);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: \"resetLoadMoreRowsCache\",\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_loadUnloadedRanges\",\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: \"_onRowsRendered\",\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: \"_doStuff\",\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _this$props = this.props,\n isRowLoaded = _this$props.isRowLoaded,\n minimumBatchSize = _this$props.minimumBatchSize,\n rowCount = _this$props.rowCount,\n threshold = _this$props.threshold;\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n }); // For memoize comparison\n\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: {\n squashedUnloadedRanges: squashedUnloadedRanges\n }\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n var unloadedRanges = [];\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({\n index: index\n });\n\n if (!loaded) {\n rangeStopIndex = index;\n\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n rangeStartIndex = rangeStopIndex = null;\n }\n } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n\n\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({\n index: _index\n })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n } // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({\n index: _index2\n })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n var parent = _ref.parent,\n rowIndex = _ref.rowIndex,\n style = _ref.style,\n isScrolling = _ref.isScrolling,\n isVisible = _ref.isVisible,\n key = _ref.key;\n var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n if (widthDescriptor && widthDescriptor.writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n _this.Grid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n var clientHeight = _ref2.clientHeight,\n scrollHeight = _ref2.scrollHeight,\n scrollTop = _ref2.scrollTop;\n var onScroll = _this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n rowStartIndex = _ref3.rowStartIndex,\n rowStopIndex = _ref3.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n });\n\n return _this;\n }\n\n _createClass(List, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref4) {\n var alignment = _ref4.alignment,\n index = _ref4.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$columnIndex = _ref6.columnIndex,\n columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n _ref6$rowIndex = _ref6.rowIndex,\n rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n noRowsRenderer = _this$props.noRowsRenderer,\n scrollToIndex = _this$props.scrollToIndex,\n width = _this$props.width;\n var classNames = clsx('ReactVirtualized__List', className);\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /** Optional CSS class name */\n \"className\": PropTypes.string,\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n \"noRowsRenderer\": function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n \"onRowsRendered\": PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n \"rowRenderer\": function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in list. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** See Grid#scrollToAlignment */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToIndex\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of list */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","import * as React from 'react';\nvar bpfrpt_proptype_RowRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"index\": PropTypes.number.isRequired,\n \"isScrolling\": PropTypes.bool.isRequired,\n \"isVisible\": PropTypes.bool.isRequired,\n \"key\": PropTypes.string.isRequired,\n \"parent\": PropTypes.object.isRequired,\n \"style\": PropTypes.object.isRequired\n};\nvar bpfrpt_proptype_RowRenderer = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nvar bpfrpt_proptype_RenderedRows = process.env.NODE_ENV === 'production' ? null : {\n \"overscanStartIndex\": PropTypes.number.isRequired,\n \"overscanStopIndex\": PropTypes.number.isRequired,\n \"startIndex\": PropTypes.number.isRequired,\n \"stopIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_Scroll = process.env.NODE_ENV === 'production' ? null : {\n \"clientHeight\": PropTypes.number.isRequired,\n \"scrollHeight\": PropTypes.number.isRequired,\n \"scrollTop\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_RowRendererParams };\nexport { bpfrpt_proptype_RowRenderer };\nexport { bpfrpt_proptype_RenderedRows };\nexport { bpfrpt_proptype_Scroll };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n var height = _this.props.height;\n var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n if (eventScrollTop !== scrollTop) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n });\n\n return _this;\n }\n\n _createClass(Masonry, [{\n key: \"clearCellPositions\",\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n } // HACK This method signature was intended for Grid\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref) {\n var index = _ref.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: \"recomputeCellPositions\",\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n this._positionCache = new PositionCache();\n\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n cellCount = _this$props.cellCount,\n cellMeasurerCache = _this$props.cellMeasurerCache,\n cellRenderer = _this$props.cellRenderer,\n className = _this$props.className,\n height = _this$props.height,\n id = _this$props.id,\n keyMapper = _this$props.keyMapper,\n overscanByPixels = _this$props.overscanByPixels,\n role = _this$props.role,\n style = _this$props.style,\n tabIndex = _this$props.tabIndex,\n width = _this$props.width,\n rowDirection = _this$props.rowDirection;\n var _this$state = this.state,\n isScrolling = _this$state.isScrolling,\n scrollTop = _this$state.scrollTop;\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n var startIndex = 0;\n var stopIndex;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n }));\n }); // We need to measure additional cells for this layout\n\n\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex\n }, React.createElement(\"div\", {\n className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }\n }, children));\n }\n }, {\n key: \"_checkInvalidateOnUpdate\",\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var startIndex = this._invalidateOnUpdateStartIndex;\n var stopIndex = this._invalidateOnUpdateStopIndex;\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n this._populatePositionCache(startIndex, stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: \"_debounceResetIsScrolling\",\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_getEstimatedTotalHeight\",\n value: function _getEstimatedTotalHeight() {\n var _this$props2 = this.props,\n cellCount = _this$props2.cellCount,\n cellMeasurerCache = _this$props2.cellMeasurerCache,\n width = _this$props2.width;\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: \"_invokeOnScrollCallback\",\n value: function _invokeOnScrollCallback() {\n var _this$props3 = this.props,\n height = _this$props3.height,\n onScroll = _this$props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: \"_invokeOnCellsRenderedCallback\",\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var onCellsRendered = this.props.onCellsRendered;\n onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: \"_populatePositionCache\",\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _this$props4 = this.props,\n cellMeasurerCache = _this$props4.cellMeasurerCache,\n cellPositioner = _this$props4.cellPositioner;\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n left = _cellPositioner.left,\n top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"autoHeight\": PropTypes.bool.isRequired,\n \"cellCount\": PropTypes.number.isRequired,\n \"cellMeasurerCache\": function cellMeasurerCache() {\n return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellPositioner\": function cellPositioner() {\n return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellRenderer\": function cellRenderer() {\n return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"className\": PropTypes.string,\n \"height\": PropTypes.number.isRequired,\n \"id\": PropTypes.string,\n \"keyMapper\": function keyMapper() {\n return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"onCellsRendered\": function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n \"onScroll\": function onScroll() {\n return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n \"overscanByPixels\": PropTypes.number.isRequired,\n \"role\": PropTypes.string.isRequired,\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"tabIndex\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"rowDirection\": PropTypes.string.isRequired,\n \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n \"defaultHeight\": PropTypes.number.isRequired,\n \"defaultWidth\": PropTypes.number.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache =\n/*#__PURE__*/\nfunction () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n _defineProperty(this, \"_columnSizeMap\", {});\n\n _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n _defineProperty(this, \"_leftMap\", {});\n }\n\n _createClass(PositionCache, [{\n key: \"estimateTotalHeight\",\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n } // Render all cells visible within the viewport range defined.\n\n }, {\n key: \"range\",\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n\n this._leftMap[index] = left;\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: \"count\",\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: \"shortestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: \"tallestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport { PositionCache as default };","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n\n if (idx < 0) {\n return NOT_FOUND;\n }\n\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n\n if (this.left) {\n this.left.intervals(result);\n }\n\n if (this.right) {\n this.right.intervals(result);\n }\n\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n\n var rw = this.right ? this.right.count : 0;\n\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.left.remove(interval);\n\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n\n var lw = this.left ? this.left.count : 0;\n\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.right.remove(interval);\n\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n\n while (n.right) {\n p = n;\n n = n.right;\n }\n\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n\n return SUCCESS;\n }\n\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n\n if (d) {\n return d;\n }\n\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n\n if (d) {\n return d;\n }\n\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n\n var pts = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n\n pts.sort(compareNumbers);\n var mid = pts[pts.length >> 1];\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n } //Split center intervals\n\n\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n\n if (r === EMPTY) {\n this.root = null;\n }\n\n return r !== NOT_FOUND;\n }\n\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n\n return 0;\n }\n});\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n\n return [];\n }\n});\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n\n return new IntervalTree(createIntervalTree(intervals));\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n var _this;\n\n _classCallCheck(this, MultiGrid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n _this._bottomLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n _this._bottomRightGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n var rowIndex = _ref.rowIndex,\n rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n var _this$props = _this.props,\n cellRenderer = _this$props.cellRenderer,\n fixedRowCount = _this$props.fixedRowCount,\n rowCount = _this$props.rowCount;\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex,\n rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n var _this$props2 = _this.props,\n cellRenderer = _this$props2.cellRenderer,\n fixedColumnCount = _this$props2.fixedColumnCount,\n fixedRowCount = _this$props2.fixedRowCount;\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n var columnIndex = _ref3.columnIndex,\n rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n var _this$props3 = _this.props,\n cellRenderer = _this$props3.cellRenderer,\n columnCount = _this$props3.columnCount,\n fixedColumnCount = _this$props3.fixedColumnCount;\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this)\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n var index = _ref4.index;\n var _this$props4 = _this.props,\n columnCount = _this$props4.columnCount,\n fixedColumnCount = _this$props4.fixedColumnCount,\n columnWidth = _this$props4.columnWidth;\n var _this$state = _this.state,\n scrollbarSize = _this$state.scrollbarSize,\n showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({\n index: index + fixedColumnCount\n }) : columnWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n var onScroll = _this.props.onScroll;\n\n if (onScroll) {\n onScroll(scrollInfo);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n var horizontal = _ref5.horizontal,\n size = _ref5.size,\n vertical = _ref5.vertical;\n var _this$state2 = _this.state,\n showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this.state.scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this.state.scrollLeft\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n var index = _ref6.index;\n var _this$props5 = _this.props,\n fixedRowCount = _this$props5.fixedRowCount,\n rowCount = _this$props5.rowCount,\n rowHeight = _this$props5.rowHeight;\n var _this$state3 = _this.state,\n scrollbarSize = _this$state3.scrollbarSize,\n showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({\n index: index + fixedRowCount\n }) : rowHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n _this._topLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n _this._topRightGrid = ref;\n });\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n _fixedColumnCount = props.fixedColumnCount,\n _fixedRowCount = props.fixedRowCount;\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: \"forceUpdateGrids\",\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$columnIndex = _ref8.columnIndex,\n columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n _ref8$rowIndex = _ref8.rowIndex,\n rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n var _this$props6 = this.props,\n fixedColumnCount = _this$props6.fixedColumnCount,\n fixedRowCount = _this$props6.fixedRowCount;\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n this._leftGridWidth = null;\n this._topGridHeight = null;\n\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n scrollLeft = _this$props7.scrollLeft,\n scrollTop = _this$props7.scrollTop;\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n onScroll = _this$props8.onScroll,\n onSectionRendered = _this$props8.onSectionRendered,\n onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n scrollLeftProp = _this$props8.scrollLeft,\n scrollToColumn = _this$props8.scrollToColumn,\n scrollTopProp = _this$props8.scrollTop,\n scrollToRow = _this$props8.scrollToRow,\n rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n var _this$state4 = this.state,\n scrollLeft = _this$state4.scrollLeft,\n scrollTop = _this$state4.scrollTop;\n return React.createElement(\"div\", {\n style: this._containerOuterStyle\n }, React.createElement(\"div\", {\n style: this._containerTopStyle\n }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))), React.createElement(\"div\", {\n style: this._containerBottomStyle\n }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))));\n }\n }, {\n key: \"_getBottomGridHeight\",\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: \"_getLeftGridWidth\",\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({\n index: index\n });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: \"_getRightGridWidth\",\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: \"_getTopGridHeight\",\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({\n index: index\n });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: \"_maybeCalculateCachedStyles\",\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _this$props9 = this.props,\n columnWidth = _this$props9.columnWidth,\n enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n height = _this$props9.height,\n fixedColumnCount = _this$props9.fixedColumnCount,\n fixedRowCount = _this$props9.fixedRowCount,\n rowHeight = _this$props9.rowHeight,\n style = _this$props9.style,\n styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n styleTopRightGrid = _this$props9.styleTopRightGrid,\n width = _this$props9.width;\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _objectSpread({\n height: height,\n overflow: 'visible',\n // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible',\n // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: \"_prepareForRender\",\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: \"_renderBottomLeftGrid\",\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"BottomLeftGrid_ScrollWrapper\",\n style: _objectSpread({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n })\n }, bottomLeftGrid);\n }\n\n return bottomLeftGrid;\n }\n }, {\n key: \"_renderBottomRightGrid\",\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopLeftGrid\",\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopRightGrid\",\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _this$state5 = this.state,\n showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n scrollbarSize = _this$state5.scrollbarSize;\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _objectSpread({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"TopRightGrid_ScrollWrapper\",\n style: _objectSpread({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n })\n }, topRightGrid);\n }\n\n return topRightGrid;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n});\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n classNameBottomLeftGrid: PropTypes.string.isRequired,\n classNameBottomRightGrid: PropTypes.string.isRequired,\n classNameTopLeftGrid: PropTypes.string.isRequired,\n classNameTopRightGrid: PropTypes.string.isRequired,\n enableFixedColumnScroll: PropTypes.bool.isRequired,\n enableFixedRowScroll: PropTypes.bool.isRequired,\n fixedColumnCount: PropTypes.number.isRequired,\n fixedRowCount: PropTypes.number.isRequired,\n onScrollbarPresenceChange: PropTypes.func,\n style: PropTypes.object.isRequired,\n styleBottomLeftGrid: PropTypes.object.isRequired,\n styleBottomRightGrid: PropTypes.object.isRequired,\n styleTopLeftGrid: PropTypes.object.isRequired,\n styleTopRightGrid: PropTypes.object.isRequired,\n hideTopRightGridScrollbar: PropTypes.bool,\n hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator =\n/*#__PURE__*/\nfunction () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n });\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: \"clear\",\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n var _this;\n\n _classCallCheck(this, ScrollSync);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state = this.state,\n clientHeight = _this$state.clientHeight,\n clientWidth = _this$state.clientWidth,\n scrollHeight = _this$state.scrollHeight,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop,\n scrollWidth = _this$state.scrollWidth;\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","var bpfrpt_proptype_CellDataGetterParams = process.env.NODE_ENV === 'production' ? null : {\n \"columnData\": PropTypes.any,\n \"dataKey\": PropTypes.string.isRequired,\n \"rowData\": function rowData(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n }\n};\nvar bpfrpt_proptype_CellRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"cellData\": PropTypes.any,\n \"columnData\": PropTypes.any,\n \"dataKey\": PropTypes.string.isRequired,\n \"rowData\": function rowData(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"rowIndex\": PropTypes.number.isRequired\n};\nvar bpfrpt_proptype_HeaderRowRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"className\": PropTypes.string.isRequired,\n \"columns\": PropTypes.arrayOf(function (props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n }).isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n }\n};\nvar bpfrpt_proptype_HeaderRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"columnData\": PropTypes.any,\n \"dataKey\": PropTypes.string.isRequired,\n \"disableSort\": PropTypes.bool,\n \"label\": PropTypes.any,\n \"sortBy\": PropTypes.string,\n \"sortDirection\": PropTypes.string\n};\nvar bpfrpt_proptype_RowRendererParams = process.env.NODE_ENV === 'production' ? null : {\n \"className\": PropTypes.string.isRequired,\n \"columns\": PropTypes.arrayOf(function (props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n }).isRequired,\n \"index\": PropTypes.number.isRequired,\n \"isScrolling\": PropTypes.bool.isRequired,\n \"onRowClick\": PropTypes.func,\n \"onRowDoubleClick\": PropTypes.func,\n \"onRowMouseOver\": PropTypes.func,\n \"onRowMouseOut\": PropTypes.func,\n \"rowData\": function rowData(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"key\": PropTypes.string.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellDataGetterParams };\nexport { bpfrpt_proptype_CellRendererParams };\nexport { bpfrpt_proptype_HeaderRowRendererParams };\nexport { bpfrpt_proptype_HeaderRendererParams };\nexport { bpfrpt_proptype_RowRendererParams };","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n return React.createElement(\"div\", {\n className: className,\n role: \"row\",\n style: style\n }, columns);\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\"span\", {\n className: \"ReactVirtualized__Table__headerTruncatedText\",\n key: \"label\",\n title: typeof label === 'string' ? label : null\n }, label)];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, {\n key: \"SortIndicator\",\n sortDirection: sortDirection\n }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n return React.createElement(\"svg\", {\n className: classNames,\n width: 18,\n height: 18,\n viewBox: \"0 0 24 24\"\n }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n }) : React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n }), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n}\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\nexport default SortDirection;","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n var a11yProps = {\n 'aria-rowindex': index + 1\n };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n }\n\n return React.createElement(\"div\", _extends({}, a11yProps, {\n className: className,\n key: key,\n role: \"row\",\n style: style\n }), columns);\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n var _this;\n\n _classCallCheck(this, Table);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n _this.state = {\n scrollbarWidth: 0\n };\n _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Table, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n return offsetWidth - clientWidth;\n }\n\n return 0;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n disableHeader = _this$props.disableHeader,\n gridClassName = _this$props.gridClassName,\n gridStyle = _this$props.gridStyle,\n headerHeight = _this$props.headerHeight,\n headerRowRenderer = _this$props.headerRowRenderer,\n height = _this$props.height,\n id = _this$props.id,\n noRowsRenderer = _this$props.noRowsRenderer,\n rowClassName = _this$props.rowClassName,\n rowStyle = _this$props.rowStyle,\n scrollToIndex = _this$props.scrollToIndex,\n style = _this$props.style,\n width = _this$props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: -1\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: -1\n }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _objectSpread({\n overflow: 'hidden'\n }, flexStyles);\n }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n return React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n \"aria-labelledby\": this.props['aria-labelledby'],\n \"aria-colcount\": React.Children.toArray(children).length,\n \"aria-rowcount\": this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: \"grid\",\n style: style\n }, !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _objectSpread({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }), React.createElement(Grid, _extends({}, this.props, {\n \"aria-readonly\": null,\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: \"rowgroup\",\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _objectSpread({}, gridStyle, {\n overflowX: 'hidden'\n })\n })));\n }\n }, {\n key: \"_createColumn\",\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n var cellData = cellDataGetter({\n columnData: columnData,\n dataKey: dataKey,\n rowData: rowData\n });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n return React.createElement(\"div\", {\n \"aria-colindex\": columnIndex + 1,\n \"aria-describedby\": id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: \"gridcell\",\n style: style,\n title: title\n }, renderedCell);\n }\n }, {\n key: \"_createHeader\",\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _this$props2 = this.props,\n headerClassName = _this$props2.headerClassName,\n headerStyle = _this$props2.headerStyle,\n onHeaderClick = _this$props2.onHeaderClick,\n sort = _this$props2.sort,\n sortBy = _this$props2.sortBy,\n sortDirection = _this$props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n var sortEnabled = !disableSort && sort;\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n\n var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n } // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n return React.createElement(\"div\", {\n \"aria-label\": headerAriaLabel,\n \"aria-sort\": headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: \"columnheader\",\n style: style,\n tabIndex: headerTabIndex\n }, renderedHeader);\n }\n }, {\n key: \"_createRow\",\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _this$props3 = this.props,\n children = _this$props3.children,\n onRowClick = _this$props3.onRowClick,\n onRowDoubleClick = _this$props3.onRowDoubleClick,\n onRowRightClick = _this$props3.onRowRightClick,\n onRowMouseOver = _this$props3.onRowMouseOver,\n onRowMouseOut = _this$props3.onRowMouseOut,\n rowClassName = _this$props3.rowClassName,\n rowGetter = _this$props3.rowGetter,\n rowRenderer = _this$props3.rowRenderer,\n rowStyle = _this$props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: index\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: index\n }) : rowStyle;\n var rowData = rowGetter({\n index: index\n });\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n var flattenedStyle = _objectSpread({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: \"_getFlexStyleForColumn\",\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n var style = _objectSpread({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: \"_getHeaderColumns\",\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n disableHeader = _this$props4.disableHeader;\n var items = disableHeader ? [] : React.Children.toArray(children);\n return items.map(function (column, index) {\n return _this4._createHeader({\n column: column,\n index: index\n });\n });\n }\n }, {\n key: \"_getRowHeight\",\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight({\n index: rowIndex\n }) : rowHeight;\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n }\n }, {\n key: \"_onSectionRendered\",\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: \"_setRef\",\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: \"_setScrollbarWidth\",\n value: function _setScrollbarWidth() {\n var scrollbarWidth = this.getScrollbarWidth();\n this.setState({\n scrollbarWidth: scrollbarWidth\n });\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { Table as default };\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** This is just set on the grid top element. */\n 'aria-label': PropTypes.string,\n\n /** This is just set on the grid top element. */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /** One or more Columns describing the data displayed in this row */\n children: function children(props) {\n var children = React.Children.toArray(props.children);\n\n for (var i = 0; i < children.length; i++) {\n var childType = children[i].type;\n\n if (childType !== Column && !(childType.prototype instanceof Column)) {\n return new Error('Table only accepts children of type Column');\n }\n }\n },\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n /** Disable rendering the header at all */\n disableHeader: PropTypes.bool,\n\n /**\n * Used to estimate the total height of a Table before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n /** Optional custom CSS class name to attach to inner Grid element. */\n gridClassName: PropTypes.string,\n\n /** Optional inline style to attach to inner Grid element. */\n gridStyle: PropTypes.object,\n\n /** Optional CSS class to apply to all column headers */\n headerClassName: PropTypes.string,\n\n /** Fixed height of header row */\n headerHeight: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: any[],\n * style: any\n * }): PropTypes.node\n */\n headerRowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table header columns. */\n headerStyle: PropTypes.object,\n\n /** Fixed/available height for out DOM element */\n height: PropTypes.number.isRequired,\n\n /** Optional id */\n id: PropTypes.string,\n\n /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n noRowsRenderer: PropTypes.func,\n\n /**\n * Optional callback when a column is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onColumnClick: PropTypes.func,\n\n /**\n * Optional callback when a column's header is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onHeaderClick: PropTypes.func,\n\n /**\n * Callback invoked when a user clicks on a table row.\n * ({ index: number }): void\n */\n onRowClick: PropTypes.func,\n\n /**\n * Callback invoked when a user double-clicks on a table row.\n * ({ index: number }): void\n */\n onRowDoubleClick: PropTypes.func,\n\n /**\n * Callback invoked when the mouse leaves a table row.\n * ({ index: number }): void\n */\n onRowMouseOut: PropTypes.func,\n\n /**\n * Callback invoked when a user moves the mouse over a table row.\n * ({ index: number }): void\n */\n onRowMouseOver: PropTypes.func,\n\n /**\n * Callback invoked when a user right-clicks on a table row.\n * ({ index: number }): void\n */\n onRowRightClick: PropTypes.func,\n\n /**\n * Callback invoked with information about the slice of rows that were just rendered.\n * ({ startIndex, stopIndex }): void\n */\n onRowsRendered: PropTypes.func,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, scrollHeight, scrollTop }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: PropTypes.func.isRequired,\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n /**\n * Optional CSS class to apply to all table rows (including the header row).\n * This property can be a CSS class name (string) or a function that returns a class name.\n * If a function is provided its signature should be: ({ index: number }): string\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n /**\n * Callback responsible for returning a data row given an index.\n * ({ index: number }): any\n */\n rowGetter: PropTypes.func.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * ({ index: number }): number\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n /** Number of rows in table. */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: Array,\n * index: number,\n * isScrolling: boolean,\n * onRowClick: ?Function,\n * onRowDoubleClick: ?Function,\n * onRowMouseOver: ?Function,\n * onRowMouseOut: ?Function,\n * rowData: any,\n * style: any\n * }): PropTypes.node\n */\n rowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table rows. */\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n /**\n * Sort function to be called if a sortable header is clicked.\n * Should implement the following interface: ({\n * defaultSortDirection: 'ASC' | 'DESC',\n * event: MouseEvent,\n * sortBy: string,\n * sortDirection: SortDirection\n * }): void\n */\n sort: PropTypes.func,\n\n /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n sortBy: PropTypes.string,\n\n /** Table data is currently sorted in this direction (if it is sorted at all) */\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** Optional inline style */\n style: PropTypes.object,\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n /** Width of list */\n width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n var scrollTop = _ref.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n onScroll({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n return _this;\n }\n\n _createClass(WindowScroller, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width;\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n this._detectElementResize = createDetectElementResize();\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state2 = this.state,\n isScrolling = _this$state2.isScrolling,\n scrollTop = _this$state2.scrollTop,\n scrollLeft = _this$state2.scrollLeft,\n height = _this$state2.height,\n width = _this$state2.width;\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n }]);\n\n return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n \"children\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** Element to attach scroll event listeners. Defaults to window. */\n \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Height used for server-side rendering */\n \"serverHeight\": PropTypes.number.isRequired,\n\n /** Width used for server-side rendering */\n \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n\n mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\n","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n\n var _elementRect = getBoundingBox(element);\n\n var _containerRect = getBoundingBox(container);\n\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import { unique } from \"@noya-app/noya-utils\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\nfunction composeAllEventHandlers<E>(...handlers: ((e: E) => void)[]) {\n const [first, ...rest] = handlers;\n\n return rest.reduce(\n (result, handler) => composeEventHandlers(result, handler),\n first\n );\n}\n\nexport function mergeEventHandlers<\n H extends Record<string, (...args: any[]) => any>,\n>(...handlerMaps: H[]): H {\n const eventNames = unique(handlerMaps.map(Object.keys).flat() as (keyof H)[]);\n\n return Object.fromEntries(\n eventNames.map((eventName) => {\n const handlers = handlerMaps.flatMap((handlerMap) => {\n const value = handlerMap[eventName];\n return value ? [value] : [];\n });\n\n return [eventName, composeAllEventHandlers(...handlers)] as const;\n })\n ) as H;\n}\n","import {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragMoveEvent,\n DragOverlay,\n DragStartEvent,\n PointerSensor,\n Translate,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport React, {\n createContext,\n memo,\n ReactNode,\n Ref,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport type RelativeDropPosition = \"above\" | \"below\" | \"inside\";\n\nexport type DropValidator = (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n) => boolean;\n\nexport const normalizeListDestinationIndex = (\n index: number,\n position: \"above\" | \"below\"\n): number => {\n return position === \"above\" ? index : index + 1;\n};\n\nconst defaultAcceptsDrop: DropValidator = (\n sourceIndex,\n destinationIndex,\n position\n) => {\n if (position === \"inside\") return false;\n\n const normalized = normalizeListDestinationIndex(destinationIndex, position);\n\n if (sourceIndex === normalized || sourceIndex + 1 === normalized) {\n return false;\n }\n\n return true;\n};\n\nconst SortableItemContext = createContext<{\n keys: string[];\n position: Translate;\n acceptsDrop: DropValidator;\n setActivatorEvent: (event: PointerEvent) => void;\n axis: \"x\" | \"y\";\n}>({\n keys: [],\n position: { x: 0, y: 0 },\n acceptsDrop: defaultAcceptsDrop,\n setActivatorEvent: () => {},\n axis: \"y\",\n});\n\nfunction validateDropIndicator(\n acceptsDrop: DropValidator,\n keys: string[],\n activeId: string,\n overId: string,\n offsetStart: number,\n elementStart: number,\n elementSize: number\n): RelativeDropPosition | undefined {\n const activeIndex = keys.indexOf(activeId);\n const overIndex = keys.indexOf(overId);\n\n const acceptsDropInside = acceptsDrop(activeIndex, overIndex, \"inside\");\n\n // If we're in the center of the element, prefer dropping inside\n if (\n offsetStart >= elementStart + elementSize / 3 &&\n offsetStart <= elementStart + (elementSize * 2) / 3 &&\n acceptsDropInside\n )\n return \"inside\";\n\n // Are we over the top or bottom half of the element?\n const indicator =\n offsetStart < elementStart + elementSize / 2 ? \"above\" : \"below\";\n\n // Drop above or below if possible, falling back to inside\n return acceptsDrop(activeIndex, overIndex, indicator)\n ? indicator\n : acceptsDropInside\n ? \"inside\"\n : undefined;\n}\n\n/* ----------------------------------------------------------------------------\n * Item\n * ------------------------------------------------------------------------- */\n\ntype UseSortableReturnType = ReturnType<typeof useSortable>;\n\ninterface ItemProps<T> {\n id: string;\n disabled?: boolean;\n children: (\n props: {\n ref: Ref<T>;\n relativeDropPosition?: RelativeDropPosition;\n [key: string]: any;\n } & UseSortableReturnType[\"attributes\"]\n ) => JSX.Element;\n}\n\nfunction SortableItem<T extends HTMLElement>({\n id,\n disabled,\n children,\n}: ItemProps<T>) {\n const { keys, position, acceptsDrop, setActivatorEvent, axis } =\n useContext(SortableItemContext);\n const sortable = useSortable({ id, disabled });\n\n const {\n active,\n activatorEvent,\n attributes,\n listeners,\n setNodeRef,\n isDragging,\n index,\n overIndex,\n over,\n } = sortable;\n\n if (activatorEvent) {\n setActivatorEvent(activatorEvent as PointerEvent);\n }\n\n const eventX = (activatorEvent as PointerEvent | null)?.clientX ?? 0;\n const eventY = (activatorEvent as PointerEvent | null)?.clientY ?? 0;\n const offsetLeft = eventX + position.x;\n const offsetTop = eventY + position.y;\n\n const ref = useCallback((node: T) => setNodeRef(node), [setNodeRef]);\n\n return children({\n ref,\n ...attributes,\n ...listeners,\n relativeDropPosition:\n index >= 0 && index === overIndex && !isDragging && active && over\n ? validateDropIndicator(\n acceptsDrop,\n keys,\n active.id,\n over.id,\n axis === \"x\" ? offsetLeft : offsetTop,\n axis === \"x\" ? over.rect.offsetLeft : over.rect.offsetTop,\n axis === \"x\" ? over.rect.width : over.rect.height\n )\n : undefined,\n });\n}\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\ninterface RootProps {\n keys: string[];\n children: ReactNode;\n renderOverlay?: (index: number) => ReactNode;\n onMoveItem?: (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => void;\n acceptsDrop?: DropValidator;\n axis?: \"x\" | \"y\";\n}\n\nfunction SortableRoot({\n keys,\n children,\n onMoveItem,\n renderOverlay,\n acceptsDrop = defaultAcceptsDrop,\n axis = \"y\",\n}: RootProps) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 4,\n },\n })\n );\n\n const [activeIndex, setActiveIndex] = useState<number | undefined>();\n const activatorEvent = useRef<PointerEvent | null>(null);\n\n const setActivatorEvent = useCallback((event: PointerEvent) => {\n activatorEvent.current = event;\n }, []);\n\n const [position, setPosition] = useState<Translate>({ x: 0, y: 0 });\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n setActiveIndex(keys.indexOf(event.active.id));\n },\n [keys]\n );\n\n const handleDragMove = useCallback((event: DragMoveEvent) => {\n setPosition({ ...event.delta });\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n setActiveIndex(undefined);\n\n if (over && active.id !== over.id) {\n const oldIndex = keys.indexOf(active.id);\n const newIndex = keys.indexOf(over.id);\n\n const eventX = activatorEvent.current?.clientX ?? 0;\n const eventY = activatorEvent.current?.clientY ?? 0;\n const offsetLeft = eventX + position.x;\n const offsetTop = eventY + position.y;\n\n const indicator = validateDropIndicator(\n acceptsDrop,\n keys,\n active.id,\n over.id,\n axis === \"x\" ? offsetLeft : offsetTop,\n axis === \"x\" ? over.rect.offsetLeft : over.rect.offsetTop,\n axis === \"x\" ? over.rect.width : over.rect.height\n );\n\n if (!indicator) return;\n\n onMoveItem?.(oldIndex, newIndex, indicator);\n }\n },\n [acceptsDrop, axis, keys, onMoveItem, position.x, position.y]\n );\n\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return (\n <SortableItemContext.Provider\n value={useMemo(\n () => ({\n keys,\n acceptsDrop,\n position,\n setActivatorEvent,\n axis,\n }),\n [acceptsDrop, axis, keys, position, setActivatorEvent]\n )}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={keys} strategy={verticalListSortingStrategy}>\n {children}\n </SortableContext>\n {mounted &&\n renderOverlay &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {activeIndex !== undefined &&\n activeIndex >= 0 &&\n renderOverlay(activeIndex)}\n </DragOverlay>,\n document.body\n )}\n </DndContext>\n </SortableItemContext.Provider>\n );\n}\n\nexport namespace Sortable {\n export const Item = memo(SortableItem);\n export const Root = memo(SortableRoot);\n}\n","import React, { ForwardedRef, forwardRef, ReactHTML, ReactNode } from \"react\";\nimport styled, { CSSProperties } from \"styled-components\";\nimport { Theme, ThemeColorName } from \"../theme\";\nimport { BreakpointCollection, mergeBreakpoints } from \"../utils/breakpoints\";\n\nconst elements: Record<keyof Theme[\"textStyles\"], keyof ReactHTML> = {\n title: \"h1\",\n subtitle: \"h1\",\n heading1: \"h1\",\n heading2: \"h2\",\n heading3: \"h3\",\n heading4: \"h4\",\n heading5: \"h5\",\n body: \"p\",\n small: \"span\",\n button: \"span\",\n code: \"code\",\n label: \"span\",\n};\n\ntype StyleProps = {\n flex?: CSSProperties[\"flex\"];\n padding?: CSSProperties[\"padding\"];\n background?: CSSProperties[\"background\"];\n borderRadius?: CSSProperties[\"borderRadius\"];\n textAlign?: CSSProperties[\"textAlign\"];\n fontWeight?: CSSProperties[\"fontWeight\"];\n fontStyle?: CSSProperties[\"fontStyle\"];\n fontSize?: CSSProperties[\"fontSize\"];\n lineHeight?: CSSProperties[\"lineHeight\"];\n fontFamily?: CSSProperties[\"fontFamily\"];\n wordBreak?: CSSProperties[\"wordBreak\"];\n whiteSpace?: CSSProperties[\"whiteSpace\"];\n height?: CSSProperties[\"height\"];\n width?: CSSProperties[\"width\"];\n minWidth?: CSSProperties[\"minWidth\"];\n maxWidth?: CSSProperties[\"maxWidth\"];\n opacity?: CSSProperties[\"opacity\"];\n position?: CSSProperties[\"position\"];\n overflow?: CSSProperties[\"overflow\"];\n textOverflow?: CSSProperties[\"textOverflow\"];\n textDecoration?: CSSProperties[\"textDecoration\"];\n display?: CSSProperties[\"display\"];\n top?: CSSProperties[\"top\"];\n right?: CSSProperties[\"right\"];\n bottom?: CSSProperties[\"bottom\"];\n left?: CSSProperties[\"left\"];\n userSelect?: CSSProperties[\"userSelect\"];\n cursor?: CSSProperties[\"cursor\"];\n};\n\nexport type TextBreakpointList = BreakpointCollection<StyleProps>;\n\ninterface Props extends StyleProps {\n as?: keyof ReactHTML;\n href?: string;\n className?: string;\n style?: React.CSSProperties;\n variant: keyof Theme[\"textStyles\"];\n breakpoints?: BreakpointCollection<StyleProps> | null | false;\n color?: ThemeColorName;\n children: ReactNode;\n onClick?: () => void;\n onDoubleClick?: () => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLSpanElement>) => void;\n tabIndex?: number;\n}\n\nconst StyledElement = styled.span<{\n $variant: keyof Theme[\"textStyles\"];\n $styleProps: StyleProps;\n $color: ThemeColorName;\n $breakpoints: BreakpointCollection<StyleProps> | null | false;\n}>(({ theme, $variant, $styleProps, $breakpoints, $color }) => ({\n ...(theme.textStyles as any)[$variant],\n color: $color ? theme.colors[$color] : undefined,\n ...$styleProps,\n ...mergeBreakpoints($breakpoints || []),\n}));\n\nexport const Text = forwardRef(function Text(\n {\n as,\n variant,\n breakpoints,\n children,\n className,\n color,\n href,\n tabIndex,\n onClick,\n onKeyDown,\n style,\n ...rest\n }: Props,\n forwardedRef: ForwardedRef<HTMLElement>\n) {\n const element = as ?? elements[variant] ?? \"span\";\n\n return (\n <StyledElement\n ref={forwardedRef}\n as={element}\n className={className}\n style={style}\n tabIndex={tabIndex}\n $variant={variant}\n $breakpoints={breakpoints}\n $styleProps={rest}\n $color={color}\n onClick={onClick}\n onKeyDown={onKeyDown}\n {...((href && { href }) as any)}\n >\n {children}\n </StyledElement>\n );\n});\n\ntype PresetProps = Omit<Props, \"variant\">;\n\nexport const Heading1 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading1\" />\n )\n);\n\nexport const Heading2 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading2\" />\n )\n);\n\nexport const Heading3 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading3\" />\n )\n);\n\nexport const Heading4 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading4\" />\n )\n);\n\nexport const Heading5 = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"heading5\" />\n )\n);\n\nexport const Body = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"body\" />\n )\n);\n\nexport const Small = forwardRef(\n (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n <Text ref={ref} {...props} variant=\"small\" />\n )\n);\n\n// export const Label = forwardRef(\n// (props: PresetProps, ref: ForwardedRef<HTMLElement>) => (\n// <Text ref={ref} {...props} variant=\"label\" />\n// ),\n// );\n\nexport const Italic = ({ children }: { children: ReactNode }) => (\n <span\n style={{\n fontStyle: \"italic\",\n }}\n >\n {children}\n </span>\n);\n","import {\n Divider,\n ScrollArea,\n Stack,\n useDesignSystemTheme,\n withSeparatorElements,\n} from \"@noya-app/noya-designsystem\";\nimport React, { forwardRef, memo } from \"react\";\n\nexport const InspectorContainer = memo(\n forwardRef(function InspectorContainer(\n {\n header,\n children,\n fallback,\n showDividers,\n id,\n className,\n style,\n }: {\n header?: React.ReactNode;\n children?: React.ReactNode;\n fallback?: React.ReactNode;\n showDividers?: boolean;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n ) {\n const theme = useDesignSystemTheme();\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n className={className}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n background: theme.colors.sidebar.background,\n ...style,\n }}\n >\n {header}\n {children ? (\n <ScrollArea>\n <Stack.V position=\"relative\">\n {showDividers\n ? withSeparatorElements(children, <Divider />)\n : children}\n </Stack.V>\n </ScrollArea>\n ) : fallback ? (\n <Stack.V position=\"relative\" height=\"100%\">\n {fallback}\n </Stack.V>\n ) : null}\n </div>\n );\n })\n);\n","import React, { memo, ReactNode } from \"react\";\nimport styled from \"styled-components\";\nimport { Spacer } from \"./Spacer\";\n\n/* ----------------------------------------------------------------------------\n * Label\n * ------------------------------------------------------------------------- */\n\nconst LabelLabel = styled.label<{ $selected?: boolean }>(\n ({ theme, $selected }) => ({\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n ...($selected && {\n color: theme.colors.text,\n }),\n fontSize: \"11px\",\n flex: \"0 0 auto\",\n minWidth: \"0\",\n letterSpacing: \"0.4px\",\n whiteSpace: \"pre\", // prevent breaking - may need to make this an option\n })\n);\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nconst LabelContainer = styled.span(({ theme }) => ({\n flex: \"0 0 auto\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n}));\n\ninterface LabelRootProps {\n label: ReactNode;\n children: ReactNode;\n}\n\nfunction LabelRoot({ label, children }: LabelRootProps) {\n return (\n <LabelContainer>\n {children}\n {label && (\n <>\n <Spacer.Vertical size={2} />\n <LabelLabel>{label}</LabelLabel>\n </>\n )}\n </LabelContainer>\n );\n}\n\nexport namespace Label {\n export const Label = memo(LabelLabel);\n export const Root = memo(LabelRoot);\n}\n","import * as kiwi from 'kiwi.js';\nimport React, {\n Children,\n createRef,\n Fragment,\n isValidElement,\n memo,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div(({ theme }) => ({\n display: 'flex',\n flex: '1',\n flexDirection: 'column',\n position: 'relative',\n}));\n\nconst Tools = styled.div(({ theme }) => ({\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n}));\n\nconst Labels = styled.div(({ theme }) => ({\n height: 'var(--height)',\n position: 'relative',\n overflow: 'hidden',\n userSelect: 'none',\n}));\n\ninterface ContainerProps {\n children: ReactNode;\n renderLabel: (provided: { id: string; index: number }) => ReactNode;\n}\n\nexport const LabeledElementView = memo(function LabeledElementView({\n children,\n renderLabel,\n}: ContainerProps) {\n const elementIds: string[] = Children.toArray(children)\n .flatMap((child) =>\n isValidElement(child) && child.type === Fragment\n ? (child.props.children as ReactNode[])\n : [child],\n )\n .map((child) =>\n isValidElement(child) && 'id' in child.props ? child.props.id : null,\n )\n .filter((id) => !!id);\n const serializedIds = elementIds.join(',');\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const refs = useMemo(() => {\n return Object.fromEntries(\n serializedIds.split(',').map((id) => [id, createRef<HTMLSpanElement>()]),\n );\n }, [serializedIds]);\n\n const labelElements = useMemo(() => {\n return serializedIds.split(',').map((id, index) => (\n <span\n key={id}\n ref={refs[id]}\n style={{ position: 'absolute', left: `var(--x-offset)` }}\n >\n {renderLabel({\n id,\n index,\n })}\n </span>\n ));\n }, [refs, serializedIds, renderLabel]);\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n\n const containerRect = containerRef.current.getBoundingClientRect();\n\n const solver = new kiwi.Solver();\n const variables: kiwi.Variable[] = [];\n const heights: number[] = [];\n\n Object.entries(refs).forEach(([id, ref], index, list) => {\n if (!ref.current) return;\n\n // console.log('id', id, ref, index);\n\n const targetElement = document.getElementById(id)!;\n const targetRect = targetElement.getBoundingClientRect();\n targetRect.x = targetElement.offsetLeft;\n const labelRect = ref.current.getBoundingClientRect();\n labelRect.x = ref.current.offsetLeft;\n\n // console.log(id, labelRect, ref.current.offsetLeft);\n\n heights.push(labelRect.height);\n\n const targetMidXValue = targetRect.x + targetRect.width / 2;\n\n const labelMidX = new kiwi.Variable();\n solver.addEditVariable(labelMidX, kiwi.Strength.weak);\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Eq,\n new kiwi.Expression(targetMidXValue),\n kiwi.Strength.strong,\n ),\n );\n\n if (index === 0) {\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Ge,\n new kiwi.Expression(labelRect.width / 2),\n kiwi.Strength.required,\n ),\n );\n }\n\n // if (index > 0) {\n // solver.addConstraint(\n // new kiwi.Constraint(\n // new kiwi.Expression(variables[index - 1]),\n // kiwi.Operator.Le,\n // new kiwi.Expression(labelRect.width / 2),\n // kiwi.Strength.required\n // )\n // );\n // }\n\n if (index === list.length - 1) {\n // console.log(\n // labelMidX.value(),\n // containerRect.width,\n // containerRect.width - labelRect.width / 2,\n // );\n solver.addConstraint(\n new kiwi.Constraint(\n new kiwi.Expression(labelMidX),\n kiwi.Operator.Le,\n new kiwi.Expression(containerRect.width - labelRect.width / 2),\n kiwi.Strength.required,\n ),\n );\n }\n\n solver.suggestValue(labelMidX, labelRect.x + labelRect.width / 2);\n\n variables.push(labelMidX);\n });\n\n solver.updateVariables();\n\n Object.entries(refs).forEach(([id, ref], index) => {\n if (!ref.current) return;\n\n // console.log(id, variables[index].value());\n\n const labelRect = ref.current.getBoundingClientRect();\n\n ref.current.style.setProperty(\n '--x-offset',\n `${variables[index].value() - labelRect.width / 2}px`,\n );\n });\n\n containerRef.current.style.setProperty(\n '--height',\n `${Math.max(...heights)}px`,\n );\n }, [refs, labelElements]);\n\n return (\n <Container ref={containerRef}>\n <Tools>{children}</Tools>\n <Labels>{labelElements}</Labels>\n </Container>\n );\n});\n","import { clamp } from '@noya-app/noya-utils';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport React, { CSSProperties } from 'react';\nimport styled from 'styled-components';\n\ntype ProgressVariant = 'normal' | 'warning' | 'primary' | 'secondary';\n\nexport function Progress({\n value,\n width,\n height = 5,\n flex,\n variant = 'normal',\n}: {\n value: number;\n height?: CSSProperties['height'];\n width?: CSSProperties['width'];\n flex?: CSSProperties['flex'];\n variant?: ProgressVariant;\n}) {\n const clampedValue = clamp(value, 0, 100);\n\n return (\n <ProgressRoot value={clampedValue} style={{ width, flex, height }}>\n <ProgressIndicator\n variant={variant}\n style={{ transform: `translateX(-${100 - clampedValue}%)` }}\n />\n </ProgressRoot>\n );\n}\n\nconst ProgressRoot = styled(ProgressPrimitive.Root)(({ theme }) => ({\n position: 'relative',\n overflow: 'hidden',\n background: theme.colors.inputBackground,\n\n // Fix overflow clipping in Safari\n // https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0\n transform: 'translateZ(0)',\n}));\n\nconst ProgressIndicator = styled(ProgressPrimitive.Indicator)<{\n variant: ProgressVariant;\n}>(({ theme, variant }) => ({\n backgroundColor:\n variant === 'primary'\n ? theme.colors.primary\n : variant === 'secondary'\n ? theme.colors.secondary\n : variant === 'warning'\n ? theme.colors.warning\n : theme.colors.text,\n width: '100%',\n height: '100%',\n transition: 'transform 660ms cubic-bezier(0.65, 0, 0.35, 1)',\n}));\n","import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport React, {\n createContext,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype RadioGroupColorScheme = \"primary\" | \"secondary\";\n\nconst ignoredProps = new Set([\"colorScheme\"]);\n\nconst StyledRoot = styled(ToggleGroupPrimitive.Root).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n colorScheme?: RadioGroupColorScheme;\n}>(({ theme, colorScheme }) => ({\n appearance: \"none\",\n width: \"0px\", // Reset intrinsic width\n flex: \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n background: theme.colors.inputBackground,\n \"&:focus\": {\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n theme.colors[colorScheme ?? \"primary\"]\n }`,\n },\n display: \"flex\",\n alignItems: \"stretch\",\n minHeight: \"27px\",\n padding: colorScheme === undefined ? \"2px\" : 0,\n}));\n\nconst StyledItem = styled(ToggleGroupPrimitive.Item).withConfig({\n shouldForwardProp: (prop) => !ignoredProps.has(prop),\n})<{\n colorScheme?: RadioGroupColorScheme;\n}>(({ theme, colorScheme }) => ({\n ...theme.textStyles.small,\n position: \"relative\",\n flex: \"1 1 0\",\n appearance: \"none\",\n border: \"none\",\n background: \"none\",\n color: \"rgb(139, 139, 139)\",\n padding: 0,\n margin: 0,\n borderRadius: \"4px\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"middle\",\n '&[aria-checked=\"true\"]': {\n backgroundColor: colorScheme\n ? theme.colors[colorScheme]\n : theme.colors.radioGroup.background,\n color: colorScheme ? theme.colors.radioGroup.background : theme.colors.text,\n boxShadow: colorScheme ? undefined : `0 1px 1px rgba(0,0,0,0.1)`,\n },\n \"&:focus\": {\n outline: \"none\",\n boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${\n theme.colors[colorScheme ?? \"primary\"]\n }`,\n },\n}));\n\ninterface ItemProps {\n value: string;\n tooltip?: ReactNode;\n children: ReactNode;\n disabled?: boolean;\n}\n\nconst ToggleGroupItem = forwardRef(function ToggleGroupItem(\n { value, tooltip, children, disabled = false }: ItemProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const { colorScheme } = useContext(RadioGroupContext);\n\n const itemElement = (\n <StyledItem\n ref={forwardedRef}\n value={value}\n disabled={disabled}\n colorScheme={colorScheme}\n >\n {children}\n </StyledItem>\n );\n\n return tooltip ? (\n <Tooltip content={tooltip}>{itemElement}</Tooltip>\n ) : (\n itemElement\n );\n});\n\ntype RadioGroupContextValue = {\n colorScheme?: RadioGroupColorScheme;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue>({\n colorScheme: \"primary\",\n});\n\ninterface Props {\n id?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n colorScheme?: RadioGroupColorScheme;\n allowEmpty?: boolean;\n children: ReactNode;\n}\n\nfunction ToggleGroupRoot({\n id,\n value,\n onValueChange,\n colorScheme,\n allowEmpty,\n children,\n}: Props) {\n const contextValue = useMemo(() => ({ colorScheme }), [colorScheme]);\n\n const handleValueChange = useCallback(\n (value: string) => {\n if (!allowEmpty && !value) return;\n onValueChange?.(value);\n },\n [allowEmpty, onValueChange]\n );\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <StyledRoot\n id={id}\n type=\"single\"\n value={value}\n colorScheme={colorScheme}\n onValueChange={handleValueChange}\n >\n {children}\n </StyledRoot>\n </RadioGroupContext.Provider>\n );\n}\n\nexport namespace RadioGroup {\n export const Root = memo(ToggleGroupRoot);\n export const Item = memo(ToggleGroupItem);\n}\n","import { memoize } from \"@noya-app/noya-utils\";\nimport React, {\n createContext,\n CSSProperties,\n memo,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport styled from \"styled-components\";\n\ntype SelectContextValue = {\n addListener: (value: string, listener: () => void) => void;\n removeListener: (value: string) => void;\n};\n\nconst SelectContext = createContext<SelectContextValue | undefined>(undefined);\n\ninterface SelectOptionProps<T extends string> {\n value: T;\n title?: string;\n onSelect?: () => void;\n}\n\nexport const SelectOption = memo(function SelectOption<T extends string>({\n value,\n title,\n onSelect,\n}: SelectOptionProps<T>) {\n const { addListener, removeListener } = useContext(SelectContext)!;\n\n useEffect(() => {\n if (!onSelect) return;\n\n addListener(value, onSelect);\n\n return () => removeListener(value);\n }, [addListener, onSelect, removeListener, value]);\n\n return <option value={value}>{title ?? value}</option>;\n});\n\nconst createChevronSVGString = memoize((color: string) =>\n `\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${color}'>\n <path d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'></path>\n </svg>\n`.replace(/\\n/g, \"\")\n);\n\nconst SelectContainer = styled.div<{ $flex: CSSProperties[\"flex\"] }>(\n ({ $flex }) => ({\n flex: $flex ?? \"1 1 0px\",\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n })\n);\n\nconst SelectElement = styled.select<{ $flex: CSSProperties[\"flex\"] }>(\n ({ theme, $flex }) => ({\n appearance: \"none\",\n ...theme.textStyles.small,\n color: theme.colors.text,\n lineHeight: \"19px\",\n width: \"0px\", // Reset intrinsic width\n flex: $flex ?? \"1 1 0px\",\n position: \"relative\",\n border: \"0\",\n outline: \"none\",\n minWidth: \"0\",\n textAlign: \"left\",\n alignSelf: \"stretch\",\n borderRadius: \"4px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingLeft: \"6px\",\n paddingRight: \"23px\",\n background: [\n `calc(100% - 6px) / 15px url(\"data:image/svg+xml;utf8,${createChevronSVGString(\n theme.colors.icon\n )}\") no-repeat`,\n theme.colors.inputBackground,\n ].join(\",\"),\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n })\n);\n\nconst SelectLabel = styled.label(({ theme }) => ({\n ...theme.textStyles.label,\n color: theme.colors.textDisabled,\n lineHeight: \"19px\",\n position: \"absolute\",\n inset: \"0\",\n fontWeight: \"bold\",\n fontSize: \"60%\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"end\",\n paddingRight: \"24px\",\n}));\n\ntype ChildrenProps<T> =\n | {\n children: ReactNode;\n }\n | {\n options: readonly T[];\n getTitle?: (option: T, index: number) => string;\n onChange: (value: T) => void;\n };\n\ntype Props<T extends string> = ChildrenProps<T> & {\n id: string;\n flex?: CSSProperties[\"flex\"];\n value: T;\n label?: ReactNode;\n};\n\nexport const Select = memo(function Select<T extends string>({\n id,\n flex,\n value,\n label,\n ...rest\n}: Props<T>) {\n const options = \"options\" in rest ? rest.options : undefined;\n const getTitle = \"options\" in rest ? rest.getTitle : undefined;\n const onChange = \"options\" in rest ? rest.onChange : undefined;\n const children = \"options\" in rest ? undefined : rest.children;\n\n const optionElements = useMemo(\n () =>\n options\n ? options.map((option, index) => (\n <SelectOption\n key={option}\n value={option}\n title={getTitle?.(option, index)}\n onSelect={() => onChange?.(option)}\n />\n ))\n : children,\n [children, getTitle, onChange, options]\n );\n\n const listeners = useRef<Map<string, () => void>>(new Map());\n\n const contextValue: SelectContextValue = useMemo(\n () => ({\n addListener: (value, listener) => listeners.current.set(value, listener),\n removeListener: (value) => listeners.current.delete(value),\n }),\n []\n );\n\n return (\n <SelectContext.Provider value={contextValue}>\n <SelectContainer $flex={flex}>\n <SelectElement\n id={id}\n $flex={flex}\n value={value}\n onChange={useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n listeners.current.get(event.target.value)?.(),\n [listeners]\n )}\n onPointerDown={(event) => event.stopPropagation()}\n >\n {optionElements}\n </SelectElement>\n </SelectContainer>\n {label && <SelectLabel htmlFor={id}>{label}</SelectLabel>}\n </SelectContext.Provider>\n );\n});\n","import { DropdownChevronIcon } from \"@noya-app/noya-icons\";\nimport * as Select from \"@radix-ui/react-select\";\nimport React, { CSSProperties, memo } from \"react\";\nimport { styled } from \"styled-components\";\nimport { Button } from \"./Button\";\nimport { renderIcon } from \"./Icons\";\nimport { Spacer } from \"./Spacer\";\nimport { MenuItem, RegularMenuItem, styles } from \"./internal/Menu\";\n\ntype Props<T extends string> = {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n menuItems: MenuItem<T>[];\n value: T;\n onSelect?: (value: T) => void;\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\nconst readOnlyStyle: CSSProperties = {\n justifyContent: \"flex-start\",\n textAlign: \"left\",\n};\n\nconst flexStyle: CSSProperties = {\n flex: 1,\n};\n\nexport const SelectMenu = memo(function SelectMenu<T extends string = string>({\n id,\n style,\n className,\n menuItems,\n value,\n onSelect,\n placeholder,\n disabled,\n readOnly,\n}: Props<T>) {\n const selectedItem = menuItems.find(\n (item): item is RegularMenuItem<T> =>\n typeof item !== \"string\" && item.value === value\n );\n const icon = selectedItem?.icon;\n\n if (readOnly) {\n return (\n <Button\n id={id}\n style={style}\n contentStyle={readOnlyStyle}\n className={className}\n disabled={disabled}\n >\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal inline size={6} />\n </>\n )}\n <span style={flexStyle}>{selectedItem?.title ?? value}</span>\n </Button>\n );\n }\n\n return (\n <Select.Root value={value} onValueChange={onSelect}>\n <Select.SelectTrigger asChild>\n <Button id={id} style={style} className={className} disabled={disabled}>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal inline size={6} />\n </>\n )}\n <span style={flexStyle}>\n <Select.Value placeholder={placeholder} />\n </span>\n <Spacer.Horizontal inline size={6} />\n <DropdownChevronIcon />\n </Button>\n </Select.SelectTrigger>\n <Select.Portal>\n <SelectContent>\n <SelectViewport>\n {menuItems.map((menuItem) => {\n if (typeof menuItem === \"string\") {\n return <StyledSeparator />;\n }\n\n const value = menuItem.value ?? \"\";\n\n return (\n <SelectItem key={value} value={value} icon={menuItem.icon}>\n {menuItem.title ?? value}\n </SelectItem>\n );\n })}\n </SelectViewport>\n </SelectContent>\n </Select.Portal>\n </Select.Root>\n );\n});\n\nconst SelectContent = styled(Select.Content)(styles.contentStyle);\n\nconst SelectViewport = styled(Select.Viewport)({});\n\nconst SelectItem = React.forwardRef(\n (\n {\n children,\n icon,\n ...props\n }: Select.SelectItemProps & { icon?: React.ReactNode },\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n ) => {\n return (\n <StyledItem {...props} ref={forwardedRef}>\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={8} />\n </>\n )}\n <Select.ItemText>{children}</Select.ItemText>\n </StyledItem>\n );\n }\n);\n\nconst StyledItem = styled(Select.Item)(styles.itemStyle);\nconst StyledSeparator = styled(Select.Separator)(styles.separatorStyle);\n","import * as RadixSlider from '@radix-ui/react-slider';\nimport React, { useCallback, useMemo } from 'react';\nimport styled from 'styled-components';\n\nconst StyledSlider = styled(RadixSlider.Root)({\n flex: '1',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n userSelect: 'none',\n touchAction: 'none',\n height: '16px',\n});\n\nconst StyledTrack = styled(RadixSlider.Track)(({ theme }) => ({\n backgroundColor: theme.colors.divider,\n position: 'relative',\n flexGrow: 1,\n height: '2px',\n}));\n\nconst StyledRange = styled(RadixSlider.Range)(({ theme }) => ({\n position: 'absolute',\n backgroundColor: theme.colors.primary,\n borderRadius: '9999px',\n height: '100%',\n}));\n\nconst StyledThumb = styled(RadixSlider.Thumb)(({ theme }) => ({\n display: 'block',\n width: '12px',\n height: '12px',\n backgroundColor: theme.colors.slider.background,\n border: `1px solid ${theme.colors.slider.border}`,\n borderRadius: '20px',\n ':focus': {\n outline: 'none',\n },\n}));\n\ninterface Props {\n id?: string;\n value: number;\n onValueChange: (value: number) => void;\n min: number;\n max: number;\n}\n\nexport const Slider = function Slider({\n id,\n value,\n onValueChange,\n min,\n max,\n}: Props) {\n const arrayValue = useMemo(\n () => [Math.min(Math.max(value, min), max)],\n [value, min, max],\n );\n\n const handleValueChange = useCallback(\n (arrayValue: number[]) => {\n onValueChange(arrayValue[0]);\n },\n [onValueChange],\n );\n\n return (\n <StyledSlider\n min={min}\n max={max}\n id={id}\n value={arrayValue}\n onValueChange={handleValueChange}\n >\n <StyledTrack>\n <StyledRange />\n </StyledTrack>\n <StyledThumb />\n </StyledSlider>\n );\n};\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\ntype SwitchColorScheme = \"normal\" | \"primary\" | \"secondary\";\n\nconst SwitchRoot = styled(SwitchPrimitive.Root)<{\n $colorScheme: SwitchColorScheme;\n}>(({ theme, $colorScheme }) => ({\n all: \"unset\",\n width: 32,\n height: 19,\n backgroundColor: theme.colors.activeBackground,\n borderRadius: \"9999px\",\n position: \"relative\",\n WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\",\n cursor: \"pointer\",\n \"&:focus\": {\n outline: `2px solid ${theme.colors.primary}`,\n outlineOffset: \"1px\",\n },\n '&[data-state=\"checked\"]': {\n backgroundColor:\n $colorScheme === \"primary\"\n ? theme.colors.primary\n : $colorScheme === \"secondary\"\n ? theme.colors.secondary\n : undefined,\n },\n}));\n\nconst SwitchThumb = styled(SwitchPrimitive.Thumb)({\n display: \"block\",\n width: 15,\n height: 15,\n backgroundColor: \"white\",\n borderRadius: \"9999px\",\n transition: \"transform 100ms\",\n transform: \"translateX(2px)\",\n willChange: \"transform\",\n '&[data-state=\"checked\"]': { transform: \"translateX(15px)\" },\n});\n\ninterface Props {\n value: boolean;\n onChange: (value: boolean) => void;\n colorScheme?: SwitchColorScheme;\n disabled?: boolean;\n}\n\nexport const Switch = function Switch({\n value,\n onChange,\n colorScheme = \"normal\",\n disabled,\n}: Props) {\n return (\n <SwitchRoot\n $colorScheme={colorScheme}\n checked={value}\n disabled={disabled}\n onCheckedChange={(newValue) => {\n onChange(newValue);\n }}\n >\n <SwitchThumb />\n </SwitchRoot>\n );\n};\n","import { assignRef } from \"@noya-app/react-utils\";\nimport React, { forwardRef, memo, useCallback, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nconst TextAreaElement = styled.textarea(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.text,\n background: theme.colors.inputBackground,\n width: \"0px\",\n flex: \"1 1 auto\",\n padding: \"4px 6px\",\n border: \"none\",\n outline: \"none\",\n height: 100,\n borderRadius: \"4px\",\n \"&::placeholder\": {\n color: theme.colors.textDisabled,\n },\n \"&:focus\": {\n boxShadow: `0 0 0 2px ${theme.colors.primary}`,\n },\n // readonly\n \"&:read-only\": {\n color: theme.colors.textDisabled,\n },\n resize: \"none\",\n}));\n\nexport const useAutoResize = (value: string) => {\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n if (!textareaRef.current) return;\n\n textareaRef.current.style.height = \"auto\"; // Reset the height\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }, [value]);\n\n return textareaRef;\n};\n\nexport const AutoResizingTextArea = memo(\n forwardRef(function AutoResizingTextArea(\n {\n value,\n onChangeText,\n ...rest\n }: Omit<\n React.ComponentProps<typeof TextAreaElement>,\n \"onChange\" | \"value\"\n > & {\n onChangeText: (value: string) => void;\n value?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLTextAreaElement>\n ) {\n const ref = useAutoResize(value || rest.placeholder || \"\");\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChangeText(event.target.value),\n [onChangeText]\n );\n\n const handleRef = useCallback(\n (value: HTMLTextAreaElement | null) => {\n ref.current = value;\n assignRef(forwardedRef, value);\n },\n [ref, forwardedRef]\n );\n\n return (\n <TextAreaElement\n ref={handleRef}\n {...rest}\n onChange={handleChange}\n value={value}\n />\n );\n })\n);\n","import React, {\n ForwardedRef,\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useContext,\n} from \"react\";\nimport { IconButton } from \"./IconButton\";\nimport { IconName, renderIcon } from \"./Icons\";\nimport { ListView } from \"./ListView\";\nimport { Spacer } from \"./Spacer\";\n\n/* ----------------------------------------------------------------------------\n * Row\n * ------------------------------------------------------------------------- */\n\ntype TreeRowBaseProps = {\n icon?: Exclude<ReactNode, string> | IconName;\n expanded?: boolean;\n onClickChevron?: ({ altKey }: { altKey: boolean }) => void;\n};\n\ntype TreeViewRowProps<MenuItemType extends string> =\n ListView.RowProps<MenuItemType> & TreeRowBaseProps;\n\nconst TreeRow = forwardRef(function TreeRow<MenuItemType extends string>(\n {\n icon,\n expanded,\n onClickChevron,\n children,\n ...rest\n }: TreeViewRowProps<MenuItemType>,\n forwardedRef: ForwardedRef<HTMLLIElement>\n) {\n const { expandable } = useContext(ListView.RowContext);\n\n const handleClickChevron = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n onClickChevron?.({ altKey: event.altKey });\n },\n [onClickChevron]\n );\n\n return (\n <ListView.Row ref={forwardedRef} {...rest}>\n {expandable && (\n <>\n {expanded === undefined ? (\n <Spacer.Horizontal size={19} />\n ) : (\n <IconButton\n iconName={expanded ? \"ChevronDownIcon2\" : \"ChevronRightIcon2\"}\n onClick={handleClickChevron}\n selected={rest.selected}\n />\n )}\n <Spacer.Horizontal size={6} />\n </>\n )}\n {icon && (\n <>\n {renderIcon(icon)}\n <Spacer.Horizontal size={10} />\n </>\n )}\n {children}\n </ListView.Row>\n );\n});\n\n/* ----------------------------------------------------------------------------\n * Root\n * ------------------------------------------------------------------------- */\n\nexport namespace TreeView {\n export const Root = ListView.Root;\n export const RowTitle = ListView.RowTitle;\n export const EditableRowTitle = ListView.EditableRowTitle;\n export const Row = memo(TreeRow);\n export type ClickInfo = ListView.ClickInfo;\n export type RowProps<MenuItemType extends string> =\n TreeViewRowProps<MenuItemType>;\n}\n","import { useDesignSystemTheme } from \"@noya-app/noya-designsystem\";\nimport { useKeyboardShortcuts } from \"@noya-app/noya-keymap\";\nimport React, { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport {\n ImperativePanelGroupHandle,\n ImperativePanelHandle,\n Panel,\n PanelGroup,\n PanelResizeHandle,\n} from \"react-resizable-panels\";\nimport {\n CONTENT_AREA_ID,\n EDITOR_PANEL_GROUP_ID,\n LEFT_SIDEBAR_ID,\n PanelLayoutState,\n RIGHT_SIDEBAR_ID,\n usePreservePanelSize,\n} from \"../hooks/usePreservePanelSize\";\nimport { useWindowSize } from \"../hooks/useWindowSize\";\n\ninterface Props {\n autoSavePrefix?: string;\n leftSidebarContent?: React.ReactNode;\n children?: React.ReactNode;\n rightSidebarContent?: React.ReactNode;\n hasRightSidebar?: boolean;\n hasLeftSidebar?: boolean;\n onChangeLayoutState?: (layoutState: PanelLayoutState) => void;\n leftSidebarCanResize?: boolean;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n\n /**\n * Accepts a number (px) or % string (e.g. \"50%\").\n * Use % to avoid flicker server-rendering.\n */\n leftSidebarInitialSize?: number | string;\n leftSidebarMinSize?: number | string;\n\n /**\n * Accepts a number (px) or % string (e.g. \"50%\").\n * Use % to avoid flicker server-rendering.\n */\n rightSidebarInitialSize?: number | string;\n rightSidebarMinSize?: number | string;\n}\n\nexport type IWorkspaceLayout = {\n setLeftSidebarExpanded: (expanded: boolean) => void;\n setRightSidebarExpanded: (expanded: boolean) => void;\n toggleAllSidebars: () => void;\n toggleLeftSidebar: () => void;\n toggleRightSidebar: () => void;\n};\n\nexport const WorkspaceLayout = forwardRef(function WorkspaceLayout(\n {\n autoSavePrefix,\n leftSidebarContent: leftPanelContent,\n children: centerPanelContent,\n rightSidebarContent: rightPanelContent,\n hasLeftSidebar = !!leftPanelContent,\n hasRightSidebar = !!rightPanelContent,\n onChangeLayoutState,\n leftSidebarInitialSize = 280,\n rightSidebarInitialSize = 400,\n leftSidebarMinSize,\n rightSidebarMinSize,\n leftSidebarCanResize = false,\n id,\n className,\n style,\n }: Props,\n forwardedRef: React.ForwardedRef<IWorkspaceLayout>\n) {\n const windowSize = useWindowSize();\n function getPercentage(size: number | string) {\n return typeof size === \"string\"\n ? parseFloat(size)\n : (size / windowSize.width) * 100;\n }\n const leftSidebarPercentage = getPercentage(leftSidebarInitialSize);\n const rightSidebarPercentage = getPercentage(rightSidebarInitialSize);\n const leftSidebarMinPercentage =\n leftSidebarMinSize !== undefined\n ? getPercentage(leftSidebarMinSize)\n : undefined;\n const rightSidebarMinPercentage =\n rightSidebarMinSize !== undefined\n ? getPercentage(rightSidebarMinSize)\n : undefined;\n\n const panelGroupRef = useRef<ImperativePanelGroupHandle>(null);\n const leftSidebarRef = useRef<ImperativePanelHandle>(null);\n const rightSidebarRef = useRef<ImperativePanelHandle>(null);\n\n usePreservePanelSize(panelGroupRef, onChangeLayoutState);\n\n const theme = useDesignSystemTheme();\n\n useImperativeHandle(forwardedRef, () => ({\n setLeftSidebarExpanded: (expanded: boolean) => {\n if (expanded) {\n leftSidebarRef.current?.expand();\n } else {\n leftSidebarRef.current?.collapse();\n }\n },\n setRightSidebarExpanded: (expanded: boolean) => {\n if (expanded) {\n rightSidebarRef.current?.expand();\n } else {\n rightSidebarRef.current?.collapse();\n }\n },\n toggleAllSidebars: () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded || isRightSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n rightSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n rightSidebarRef.current?.expand();\n }\n },\n toggleLeftSidebar: () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n }\n },\n toggleRightSidebar: () => {\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isRightSidebarExpanded) {\n rightSidebarRef.current?.collapse();\n } else {\n rightSidebarRef.current?.expand();\n }\n },\n }));\n\n useKeyboardShortcuts({\n \"Mod-.\": () => {\n const isLeftSidebarExpanded = leftSidebarRef.current?.isExpanded();\n const isRightSidebarExpanded = rightSidebarRef.current?.isExpanded();\n\n if (isLeftSidebarExpanded || isRightSidebarExpanded) {\n leftSidebarRef.current?.collapse();\n rightSidebarRef.current?.collapse();\n } else {\n leftSidebarRef.current?.expand();\n rightSidebarRef.current?.expand();\n }\n },\n });\n\n const centerPanelPercentage =\n 100 -\n (leftPanelContent ? leftSidebarPercentage : 0) -\n (rightPanelContent ? rightSidebarPercentage : 0);\n\n return (\n <div\n id={id}\n className={className}\n style={{\n backgroundColor: theme.colors.canvas.background,\n display: \"flex\",\n flexDirection: \"row\",\n ...style,\n }}\n >\n <PanelGroup\n ref={panelGroupRef}\n id={EDITOR_PANEL_GROUP_ID}\n direction=\"horizontal\"\n autoSaveId={\n autoSavePrefix\n ? `${autoSavePrefix}--${EDITOR_PANEL_GROUP_ID}`\n : undefined\n }\n style={{ flex: \"1\" }}\n >\n {hasLeftSidebar && (\n <>\n <Panel\n id={LEFT_SIDEBAR_ID}\n order={1}\n ref={leftSidebarRef}\n defaultSize={leftSidebarPercentage}\n minSize={leftSidebarMinPercentage ?? leftSidebarPercentage}\n {...(!leftSidebarCanResize && { maxSize: leftSidebarPercentage })}\n collapsible\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {leftPanelContent}\n </Panel>\n <PanelResizeHandle\n style={{\n cursor: \"col-resize\",\n width: \"1px\",\n height: \"100%\",\n backgroundColor: theme.colors.divider,\n }}\n />\n </>\n )}\n <Panel\n id={CONTENT_AREA_ID}\n order={2}\n defaultSize={centerPanelPercentage}\n minSize={10}\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {centerPanelContent}\n </Panel>\n {hasRightSidebar && (\n <>\n <PanelResizeHandle\n style={{\n cursor: \"col-resize\",\n width: \"1px\",\n height: \"100%\",\n backgroundColor: theme.colors.divider,\n }}\n />\n <Panel\n id={RIGHT_SIDEBAR_ID}\n order={3}\n ref={rightSidebarRef}\n minSize={rightSidebarMinPercentage ?? rightSidebarPercentage}\n defaultSize={rightSidebarPercentage}\n collapsible\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n }}\n >\n {rightPanelContent}\n </Panel>\n </>\n )}\n </PanelGroup>\n </div>\n );\n});\n","import React, { useLayoutEffect, useRef } from \"react\";\nimport { ImperativePanelGroupHandle } from \"react-resizable-panels\";\nimport { useWindowSize } from \"./useWindowSize\";\n\nexport const EDITOR_PANEL_GROUP_ID = \"editor-panel-group\";\nexport const LEFT_SIDEBAR_ID = \"editor-left-sidebar\";\nexport const RIGHT_SIDEBAR_ID = \"editor-right-sidebar\";\nexport const CONTENT_AREA_ID = \"editor-content-area\";\n\nexport type PanelLayoutState = {\n leftSidebarCollapsed: boolean;\n rightSidebarCollapsed: boolean;\n};\n\nexport function usePreservePanelSize(\n panelGroupRef: React.RefObject<ImperativePanelGroupHandle | null>,\n setPanelLayoutState?: (state: PanelLayoutState) => void\n) {\n const windowSize = useWindowSize();\n const layoutRef = useRef<\n { windowWidth: number; panelPercentages: number[] } | undefined\n >();\n\n useLayoutEffect(() => {\n const panelGroup = document.querySelector(\n `[data-panel-group-id=\"${EDITOR_PANEL_GROUP_ID}\"]`\n ) as HTMLElement;\n\n function observePanels() {\n const panels = [\n ...panelGroup.querySelectorAll<HTMLElement>(\"[data-panel]\"),\n ];\n\n const panelObserver = new ResizeObserver(() => {\n const layout = {\n windowWidth: panelGroup.offsetWidth,\n panelPercentages: panelGroupRef.current?.getLayout() ?? [],\n };\n layoutRef.current = layout;\n\n const leftSidebar = panels.find(\n (panel) => panel.id === LEFT_SIDEBAR_ID\n );\n const rightSidebar = panels.find(\n (panel) => panel.id === RIGHT_SIDEBAR_ID\n );\n\n setPanelLayoutState?.({\n leftSidebarCollapsed: leftSidebar?.offsetWidth === 0,\n rightSidebarCollapsed: rightSidebar?.offsetWidth === 0,\n });\n });\n\n panels.forEach((panel) => panelObserver.observe(panel));\n\n return () => {\n panelObserver.disconnect();\n };\n }\n\n let disconnectPanelObserver = observePanels();\n\n const panelGroupObserver = new MutationObserver(() => {\n disconnectPanelObserver();\n disconnectPanelObserver = observePanels();\n });\n\n panelGroupObserver.observe(panelGroup, {\n childList: true,\n });\n\n return () => {\n disconnectPanelObserver();\n panelGroupObserver.disconnect();\n };\n }, [panelGroupRef, setPanelLayoutState]);\n\n useLayoutEffect(() => {\n if (!layoutRef.current) return;\n\n // Preserve the pixel values of the left and right sidebar when the window is resized.\n // To do this we convert the percentage values to pixel values based on the old window width,\n // then convert the pixel values to percentage values based on the new window width.\n const {\n windowWidth: oldWindowWidth,\n panelPercentages: oldPanelPercentages,\n } = layoutRef.current;\n\n // Check the types of the values in the array\n if (\n oldPanelPercentages.some(\n (value) => typeof value !== \"number\" || isNaN(value)\n ) ||\n oldWindowWidth === 0\n ) {\n return;\n }\n\n const currentLayout = panelGroupRef.current?.getLayout();\n\n // Ensure we have the same number of panels\n if (!currentLayout || currentLayout.length !== oldPanelPercentages.length) {\n return;\n }\n\n if (currentLayout.length === 3) {\n const leftSidebarWidth = (oldPanelPercentages[0] / 100) * oldWindowWidth;\n const rightSidebarWidth = (oldPanelPercentages[2] / 100) * oldWindowWidth;\n\n const newLeftSidebarPercentage =\n (leftSidebarWidth / windowSize.width) * 100;\n const newRightSidebarPercentage =\n (rightSidebarWidth / windowSize.width) * 100;\n\n const newLayout = [\n newLeftSidebarPercentage,\n 100 - newLeftSidebarPercentage - newRightSidebarPercentage,\n newRightSidebarPercentage,\n ];\n\n try {\n panelGroupRef.current?.setLayout(newLayout);\n } catch (e) {\n console.error(e);\n console.info(\"snapshot on error\", {\n oldWindowWidth,\n oldPanelPercentages,\n newLayout,\n currentLayout,\n });\n }\n } else if (currentLayout.length === 2) {\n const leftSidebarWidth = (oldPanelPercentages[0] / 100) * oldWindowWidth;\n\n const newLeftSidebarPercentage =\n (leftSidebarWidth / windowSize.width) * 100;\n\n const newLayout = [\n newLeftSidebarPercentage,\n 100 - newLeftSidebarPercentage,\n ];\n\n try {\n panelGroupRef.current?.setLayout(newLayout);\n } catch (e) {\n console.error(e);\n console.info(\"snapshot on error\", {\n oldWindowWidth,\n oldPanelPercentages,\n newLayout,\n currentLayout,\n });\n }\n }\n }, [panelGroupRef, windowSize.width]);\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useWindowSize() {\n const [size, setSize] = useState(\n typeof window === \"undefined\"\n ? { width: 0, height: 0 }\n : {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n );\n\n useEffect(() => {\n const handleResize = () =>\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return size;\n}\n","import { useDesignSystemConfiguration } from '../contexts/DesignSystemConfiguration';\n\nexport function usePlatform() {\n return useDesignSystemConfiguration().platform;\n}\n\n/**\n * Either ctrl or meta, depending on the platform\n */\nexport function usePlatformModKey(): 'ctrlKey' | 'metaKey' {\n const platform = useDesignSystemConfiguration().platform;\n return platform === 'mac' ? 'metaKey' : 'ctrlKey';\n}\n","import {\n MenuItem,\n RegularMenuItem,\n SEPARATOR_ITEM,\n} from '../components/internal/Menu';\n\nexport type Optional<T> = T | false | null | undefined;\n\nfunction withSeparators<T>(elements: T[], separator: T) {\n const result: T[] = [];\n\n for (let i = 0; i < elements.length; i++) {\n result.push(elements[i]);\n\n if (i !== elements.length - 1) {\n result.push(separator);\n }\n }\n\n return result;\n}\n\nexport type MenuConfig<T extends string> = Optional<\n Optional<RegularMenuItem<T>>[]\n>[];\n\nexport function createSectionedMenu<T extends string>(\n ...sections: MenuConfig<T>\n): MenuItem<T>[] {\n const nonEmptySections = sections\n .flatMap((section) => (section ? [section] : []))\n .map((section) => section.flatMap((item) => (item ? [item] : [])))\n .filter((section) => section.length > 0);\n\n return withSeparators<MenuItem<T>[]>(nonEmptySections, [\n SEPARATOR_ITEM,\n ]).flat();\n}\n","import { Sketch } from '@noya-app/noya-file-format';\n\nexport const SUPPORTED_IMAGE_UPLOAD_TYPES = [\n 'image/png' as const,\n 'image/jpeg' as const,\n 'image/webp' as const,\n 'application/pdf' as const,\n 'image/svg+xml' as const,\n];\n\nexport const SUPPORTED_CANVAS_UPLOAD_TYPES = [\n ...SUPPORTED_IMAGE_UPLOAD_TYPES,\n '' as const,\n];\n\nexport type SupportedImageUploadType =\n (typeof SUPPORTED_IMAGE_UPLOAD_TYPES)[number];\n\nexport type SupportedCanvasUploadType =\n (typeof SUPPORTED_CANVAS_UPLOAD_TYPES)[number];\n\nexport type SketchPattern = {\n // This _class doesn't exist in Sketch, but it's convenient in `switch`\n // statements to be able to reference _class.\n _class: 'pattern';\n image?: Sketch.FileRef | Sketch.DataRef;\n patternFillType: Sketch.PatternFillType;\n patternTileScale: number;\n};\n","import { range } from \"@noya-app/noya-utils\";\nimport React, { ReactNode, memo, useCallback, useMemo } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport withSeparatorElements from \"../utils/withSeparatorElements\";\nimport { Button } from \"./Button\";\nimport { IconButton } from \"./IconButton\";\nimport * as InspectorPrimitives from \"./InspectorPrimitives\";\nimport { ListView } from \"./ListView\";\nimport { RelativeDropPosition, Sortable } from \"./Sortable\";\nimport { Spacer } from \"./Spacer\";\nimport { Stack } from \"./Stack\";\n\nconst ElementRow = styled.div({\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n});\n\nconst ItemContainer = styled.div({\n position: \"relative\",\n});\n\nexport interface ArrayControllerProps<Item> {\n id: string;\n items: Item[];\n title: ReactNode;\n sortable?: boolean;\n reversed?: boolean;\n expanded?: boolean;\n getKey?: (item: Item) => string;\n onMoveItem?: (sourceIndex: number, destinationIndex: number) => void;\n onClickPlus?: () => void;\n onClickTrash?: () => void;\n onClickExpand?: () => void;\n renderItem: (props: { item: Item; index: number }) => ReactNode;\n renderExpandedContent?: () => ReactNode;\n padding?: number;\n}\n\nexport const ArrayController = memo(function ArrayController<Item>({\n id,\n items,\n title,\n sortable = false,\n reversed = true,\n expanded = false,\n getKey,\n onMoveItem,\n onClickPlus,\n onClickTrash,\n onClickExpand,\n renderItem,\n renderExpandedContent,\n padding = 10,\n}: ArrayControllerProps<Item>) {\n const iconColor = useTheme().colors.icon;\n const primaryLightColor = useTheme().colors.primaryLight;\n\n const keys = useMemo(\n () => items.map((item, index) => getKey?.(item) ?? index.toString()),\n [getKey, items]\n );\n\n const indexes = reversed\n ? range(0, items.length).reverse()\n : range(0, items.length);\n\n const handleMoveItem = useCallback(\n (\n sourceIndex: number,\n destinationIndex: number,\n position: RelativeDropPosition\n ) => {\n if (reversed) {\n if (position === \"above\") {\n position = \"below\";\n } else if (position === \"below\") {\n position = \"above\";\n }\n }\n\n onMoveItem?.(\n sourceIndex,\n position === \"below\" ? destinationIndex + 1 : destinationIndex\n );\n },\n [onMoveItem, reversed]\n );\n\n const renderRow = (index: number) => {\n return (\n <ElementRow key={keys[index]}>\n {renderItem({ item: items[index], index: index })}\n </ElementRow>\n );\n };\n\n return (\n <InspectorPrimitives.Section id={id} $padding={padding} $gap=\"2px\">\n <InspectorPrimitives.SectionHeader>\n <Button variant=\"none\" onClick={onClickPlus}>\n <InspectorPrimitives.Title>{title}</InspectorPrimitives.Title>\n </Button>\n <Spacer.Horizontal />\n {withSeparatorElements(\n [\n onClickTrash && (\n <IconButton\n id={`${id}-trash`}\n iconName=\"TrashIcon\"\n color={iconColor}\n onClick={onClickTrash}\n />\n ),\n onClickExpand && (\n <IconButton\n id={`${id}-gear`}\n iconName=\"GearIcon\"\n color={expanded ? primaryLightColor : iconColor}\n onClick={onClickExpand}\n />\n ),\n onClickPlus && (\n <IconButton\n id={`${id}-add`}\n iconName=\"PlusIcon\"\n color={iconColor}\n onClick={onClickPlus}\n />\n ),\n ],\n <Spacer.Horizontal size={8} />\n )}\n </InspectorPrimitives.SectionHeader>\n <Stack.V gap=\"4px\">\n {sortable ? (\n <Sortable.Root\n keys={keys}\n renderOverlay={renderRow}\n onMoveItem={handleMoveItem}\n >\n {indexes.map((index) => (\n <Sortable.Item<HTMLDivElement> id={keys[index]} key={keys[index]}>\n {({ relativeDropPosition, ...sortableProps }) => (\n <ItemContainer {...sortableProps}>\n {renderRow(index)}\n {relativeDropPosition && (\n <ListView.DragIndicator\n $gap={0}\n $colorScheme=\"primary\"\n $relativeDropPosition={relativeDropPosition}\n $offsetLeft={0}\n />\n )}\n </ItemContainer>\n )}\n </Sortable.Item>\n ))}\n </Sortable.Root>\n ) : (\n indexes.map(renderRow)\n )}\n </Stack.V>\n {expanded && renderExpandedContent?.()}\n </InspectorPrimitives.Section>\n );\n});\n","import React, { CSSProperties, memo, ReactNode } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport { Spacer } from \"./Spacer\";\n\nexport const Section = styled.div<{\n $padding?: CSSProperties[\"padding\"];\n $gap?: CSSProperties[\"gap\"];\n}>(({ theme, $padding = \"10px\", $gap }) => ({\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: $padding,\n gap: $gap,\n}));\n\nexport const SectionHeader = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n}));\n\nexport const Title = styled.div<{\n $textStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n}>(({ theme, $textStyle }) => ({\n display: \"flex\",\n flexDirection: \"row\",\n userSelect: \"none\",\n ...($textStyle\n ? {\n ...theme.textStyles[$textStyle],\n color: theme.colors.text,\n }\n : {\n ...theme.textStyles.label,\n color: theme.colors.textMuted,\n fontWeight: \"bold\",\n }),\n}));\n\nexport const Row = styled.div<{ $gap?: CSSProperties[\"gap\"] }>(\n ({ theme, $gap }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: $gap,\n })\n);\n\nexport const Column = styled.div(({ theme }) => ({\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n}));\n\nexport const Checkbox = styled.input(({ theme }) => ({\n margin: 0,\n}));\n\nexport const Text = styled.span(({ theme }) => ({\n ...theme.textStyles.small,\n}));\n\nexport const VerticalSeparator = () => (\n <Spacer.Vertical size={useTheme().sizes.inspector.verticalSeparator} />\n);\n\nexport const HorizontalSeparator = () => (\n <Spacer.Horizontal size={useTheme().sizes.inspector.horizontalSeparator} />\n);\n\nconst SliderRowLabel = styled.span(({ theme }) => ({\n ...theme.textStyles.small,\n color: theme.colors.textMuted,\n marginBottom: \"-6px\",\n}));\n\nexport const RowLabel = styled.span<{\n $textStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n}>(({ theme, $textStyle }) => ({\n // marginBottom: '6px',\n display: \"flex\",\n ...($textStyle\n ? {\n ...theme.textStyles[$textStyle],\n }\n : {\n ...theme.textStyles.label,\n color: theme.colors.textSubtle,\n fontWeight: \"bold\",\n }),\n lineHeight: \"19px\", // Button height\n alignItems: \"center\",\n}));\n\nexport const LabeledRow = memo(function LabeledRow({\n id,\n children,\n label,\n labelTextStyle,\n gap,\n right,\n}: {\n id?: string;\n children: ReactNode;\n label: ReactNode;\n labelTextStyle?: \"small\" | \"heading5\" | \"heading4\" | \"heading3\";\n gap?: CSSProperties[\"gap\"];\n right?: ReactNode;\n}) {\n return (\n <Row id={id}>\n <Column>\n <RowLabel $textStyle={labelTextStyle}>\n {label}\n {right && <Spacer.Horizontal />}\n {right}\n </RowLabel>\n <Row $gap={gap}>{children}</Row>\n </Column>\n </Row>\n );\n});\n\nexport const LabeledSliderRow = memo(function LabeledRow({\n children,\n label,\n}: {\n children: ReactNode;\n label: string;\n}) {\n return (\n <Row>\n <Column>\n <SliderRowLabel>{label}</SliderRowLabel>\n <Row>{children}</Row>\n </Column>\n </Row>\n );\n});\n","import { round } from \"@noya-app/noya-utils\";\nimport React, { memo, useCallback } from \"react\";\nimport { InputField } from \"./InputField\";\n\nexport type SetNumberMode = \"replace\" | \"adjust\";\n\nexport function getNewValue(\n value: number,\n mode: SetNumberMode,\n delta?: number\n) {\n return delta === undefined\n ? value\n : mode === \"replace\"\n ? delta\n : value + delta;\n}\n\nexport type DimensionValue = number | undefined;\n\ninterface Props {\n id?: string;\n value: DimensionValue;\n onSetValue: (value: number, mode: SetNumberMode) => void;\n label?: string;\n size?: number;\n placeholder?: string;\n disabled?: boolean;\n trigger?: \"change\" | \"submit\";\n}\n\nexport const DimensionInput = memo(function DimensionInput({\n id,\n value,\n onSetValue,\n label,\n size,\n placeholder = \"multi\",\n disabled,\n trigger = \"submit\",\n}: Props) {\n const handleNudgeValue = useCallback(\n (value: number) => onSetValue(value, \"adjust\"),\n [onSetValue]\n );\n\n const handleSetValue = useCallback(\n (value: number) => onSetValue(value, \"replace\"),\n [onSetValue]\n );\n\n return (\n <InputField.Root id={id} width={size}>\n <InputField.NumberInput\n value={value === undefined ? value : round(value, 2)}\n placeholder={value === undefined ? placeholder : undefined}\n onNudge={handleNudgeValue}\n disabled={disabled}\n {...(trigger === \"change\"\n ? { onChange: handleSetValue }\n : { onSubmit: handleSetValue })}\n />\n {label && <InputField.Label>{label}</InputField.Label>}\n </InputField.Root>\n );\n});\n"],"mappings":"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","names":["_classCallCheck","o","r","_createClass","_assertThisInitialized","self","_possibleConstructorReturn","self","_getPrototypeOf","o","_setPrototypeOf","o","p","_inherits","_defineProperty","_extends","_objectWithoutProperties","r","Element","Fragment","Portal","isValidElement","i","checker","_toConsumableArray","r","_slicedToArray","ActivityIndicator","size","React","forwardRef","styled","React","Children","memo","styled","elements","Element","styled","StackBase","children","elements","Children","React","memo","styled","size","forwardRef","Avatar","name","React","children","React","forwardRef","styled","React","memo","styled","Content","Tooltip","children","styled","forwardRef","Button","style","size","children","React","React","forwardRef","memo","styled","React","createContext","memo","useContext","useEffect","useMemo","useState","useTheme","React","styled","React","forwardRef","memo","React","React","memo","forwardRef","IconButton","size","style","React","styled","children","React","colors","name","name","colors","React","createContext","useCallback","useContext","useMemo","useRef","useState","styled","React","forwardRef","styled","React","forwardRef","styled","size","Spacer","styled","forwardRef","Dialog","children","style","React","FullscreenDialog","React","memo","useRef","React","size","memo","AutoSizer","children","useRef","React","SingleDimensionAutoSizer","React","memo","useCallback","useRef","useCallback","useState","memo","FileDropTarget","children","useRef","useCallback","React","useRef","isDeepEqual","useCallback","useMemo","useState","useEffect","useState","useEffect","useRef","useCallback","useRef","useRef","useCallback","useMemo","useState","useCallback","useEffect","useMemo","useState","useEffect","useState","useRef","useCallback","useLayoutEffect","useRef","useEffect","useState","useEffect","useState","React","Children","createContext","forwardRef","isValidElement","memo","useCallback","useContext","useEffect","useLayoutEffect","useMemo","useRef","useState","styled","React","forwardRef","memo","useCallback","useMemo","styled","React","memo","styled","styled","memo","KeyboardShortcut","React","styled","memo","children","useCallback","React","Content","SubContent","forwardRef","DropdownMenuRoot","useMemo","React","forwardRef","useCallback","useEffect","useLayoutEffect","useRef","useState","useEffect","forwardRef","ReadOnlyTextInput","React","ControlledTextInput","useCallback","SubmittableTextInput","useRef","useState","useLayoutEffect","useEffect","React","styled","styled","children","React","createContext","styled","memo","forwardRef","InputFieldLabel","children","style","useContext","useRef","useLayoutEffect","React","InputFieldDropdownMenu","size","useMemo","InputFieldButton","useCallback","InputFieldInput","useState","value","Children","isValidElement","isFocused","useEffect","InputField","styled","createContext","DialogProvider","children","useState","useCallback","useRef","React","useMemo","isOpen","contents","useContext","React","createContext","useContext","useMemo","useState","children","windows","memo","DesignSystemThemeProvider","children","useTheme","React","createContext","DesignSystemConfigurationProvider","useState","useEffect","useMemo","useContext","React","hoverProps","styled","size","memo","forwardRef","Chip","children","style","React","CheckIcon","ChevronRightIcon","useKeyboardShortcuts","React","memo","useCallback","useMemo","styled","SeparatorElement","styled","ItemElement","CheckboxItemElement","StyledItemIndicator","ContextMenuItem","memo","children","useCallback","React","CheckIcon","ChevronRightIcon","Content","SubContent","useMemo","useKeyboardShortcuts","React","memo","styled","Divider","DividerVertical","React","memo","useCallback","useState","styled","styled","memo","DraggableMenuButton","useState","React","useCallback","React","forwardRef","memo","styled","GradientType","ColorSpace","FillType","BorderPosition","BlendMode","LineCapStyle","LineJoinStyle","BlurType","PatternFillType","MarkerType","WindingRule","TextVerticalAlignment","TextHorizontalAlignment","TextTransform","UnderlineStyle","BooleanOperation","ExportFileFormat","ExportFormatNamingScheme","VisibleScaleType","AnimationType","LayerListExpanded","ResizeType","InferredLayoutAxis","InferredLayoutAnchor","PointsRadiusBehaviour","CurveMode","LineSpacingBehaviour","TextBehaviour","BundleId","NumericalBool","ClassValue","React","memo","useMemo","styled","useTheme","React","createContext","memo","useContext","useMemo","ImageDataProvider","children","useLayoutEffect","useMemo","styled","memo","HorizontalDotsBackground","useTheme","useMemo","React","PatternPreviewBackground","size","ColorPreviewBackground","GradientPreviewBackground","FillPreviewBackground","styled","memo","forwardRef","FillInputField","React","React","useCallback","useRef","useState","styles","children","size","style","rgbaToHsva","React","memo","useCallback","useMemo","memo","GradientPicker","useMemo","rgbaToHsva","useCallback","value","React","styled","React","createContext","forwardRef","memo","useCallback","useContext","useMemo","styled","keyframes","React","memo","useCallback","useState","styled","Container","ScrollArea","children","sizes","Grid","styled","size","Container","keyframes","forwardRef","GridViewItem","children","style","React","useContext","useCallback","createContext","useMemo","title","GridView","memo","React","forwardRef","memo","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","styled","range","composeRefs","React","Children","createContext","forwardRef","isValidElement","memo","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useRef","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","Component","import_classCallCheck","import_createClass","import_defineProperty","React","import_classCallCheck","import_createClass","import_defineProperty","React","PropTypes","CellSizeAndPositionManager","_classCallCheck","_defineProperty","_createClass","size","getUpdatedOffsetForIndex","isBrowser","isChrome","getMaxElementSize","ScalingCellSizeAndPositionManager","_objectWithoutProperties","_classCallCheck","_defineProperty","_createClass","getUpdatedOffsetForIndex","scrollToAlignment","size","cellRenderer","columnSizeAndPositionManager","rowSizeAndPositionManager","style","size","import_prop_types","PropTypes","cancelAnimationTimeout","requestAnimationTimeout","timeout","import_prop_types","_defineProperty","renderNull","Grid","_inherits","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","onSectionRendered","columnSizeAndPositionManager","rowSizeAndPositionManager","_createClass","scrollbarSize","stateUpdate","scrollToAlignment","noContentRenderer","style","_extends","cellRenderer","cellRangeRenderer","overscanIndicesGetter","scrollLeft","scrollTop","onScroll","onScrollbarPresenceChange","PropTypes","SCROLL_DIRECTION_FORWARD","defaultOverscanIndicesGetter","SCROLL_DIRECTION_FORWARD","import_prop_types","PropTypes","import_prop_types","_class","_temp","ownKeys","_objectSpread","_defineProperty","_inherits","ArrowKeyStepper","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","children","PropTypes","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","raf","cancel","resetTriggers","checkTriggers","scrollListener","createStyles","style","addResizeListener","removeResizeListener","import_prop_types","_class","_temp","ownKeys","_objectSpread","_defineProperty","AutoSizer","_inherits","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","onResize","win","style","_createClass","children","PropTypes","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","import_prop_types","PropTypes","import_prop_types","_class","_temp","_inherits","CellMeasurer","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","_assertThisInitialized","cache","_createClass","children","PropTypes","import_classCallCheck","import_createClass","import_defineProperty","import_extends","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","import_prop_types","React","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","import_prop_types","React","ownKeys","_objectSpread","_defineProperty","SCROLL_POSITION_CHANGE_REASONS","_inherits","CollectionView","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","onSectionRendered","scrollToAlignment","scrollbarSize","_createClass","noContentRenderer","style","scrollLeft","scrollTop","onScroll","PropTypes","import_classCallCheck","import_createClass","import_classCallCheck","import_createClass","import_prop_types","PropTypes","Section","_classCallCheck","_createClass","SectionManager","_classCallCheck","_createClass","_inherits","Collection","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","_extends","calculateSizeAndPositionData","cellRenderer","_defineProperty","PropTypes","cellRenderer","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_prop_types","React","_inherits","ColumnSizer","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","children","columnWidth","PropTypes","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","import_prop_types","React","_inherits","InfiniteLoader","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","children","_toConsumableArray","startIndex","stopIndex","_defineProperty","PropTypes","import_extends","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","import_prop_types","React","PropTypes","bpfrpt_proptype_Scroll","import_prop_types","_class","_temp","_inherits","List","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","_assertThisInitialized","style","rowRenderer","onScroll","onRowsRendered","_createClass","noRowsRenderer","_extends","PropTypes","overscanIndicesGetter","rowHeight","scrollToAlignment","defaultOverscanIndicesGetter","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","import_classCallCheck","import_createClass","import_defineProperty","r","get","PositionCache","_classCallCheck","_defineProperty","_createClass","range","_slicedToArray","get","size","import_prop_types","_class","_temp","ownKeys","_objectSpread","_defineProperty","DEFAULT_SCROLLING_RESET_TIME_INTERVAL","_inherits","Masonry","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","cellMeasurerCache","cellRenderer","keyMapper","style","children","onScroll","onCellsRendered","cellPositioner","PropTypes","PropTypes","import_extends","import_objectWithoutProperties","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","import_prop_types","React","import_classCallCheck","import_createClass","import_defineProperty","CellMeasurerCacheDecorator","_classCallCheck","_defineProperty","cellMeasurerCache","_createClass","get","ownKeys","_objectSpread","_defineProperty","_inherits","MultiGrid","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_objectWithoutProperties","cellRenderer","columnWidth","scrollbarSize","onScroll","size","onScrollbarPresenceChange","rowHeight","_createClass","onSectionRendered","style","_extends","PropTypes","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_prop_types","React","_inherits","ScrollSync","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","children","PropTypes","import_prop_types","PropTypes","bpfrpt_proptype_CellRendererParams","rowData","style","bpfrpt_proptype_RowRendererParams","rowData","React","import_prop_types","style","PropTypes","React","import_prop_types","React","PropTypes","import_prop_types","children","PropTypes","import_extends","React","import_prop_types","rowData","style","_extends","bpfrpt_proptype_RowRendererParams","PropTypes","import_classCallCheck","import_possibleConstructorReturn","import_getPrototypeOf","import_inherits","import_defineProperty","import_prop_types","React","_inherits","Column","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","PropTypes","import_extends","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","import_prop_types","React","findDOMNode","ownKeys","_objectSpread","_defineProperty","_inherits","Table","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_createClass","findDOMNode","children","noRowsRenderer","style","_extends","rowData","cellRenderer","onClick","onKeyDown","rowRenderer","rowHeight","onScroll","onRowsRendered","defaultOverscanIndicesGetter","PropTypes","children","import_classCallCheck","import_createClass","import_possibleConstructorReturn","import_getPrototypeOf","import_assertThisInitialized","import_inherits","import_defineProperty","React","isWindow","getBoundingBox","import_prop_types","_class","_temp","ownKeys","_objectSpread","_defineProperty","IS_SCROLLING_TIMEOUT","getWindow","_inherits","WindowScroller","_getPrototypeOf2","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","onScroll","_createClass","onResize","children","PropTypes","styled","React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","createPortal","children","Sortable","createContext","styled","useRef","useLayoutEffect","React","forwardRef","ListViewRow","children","style","useContext","useCallback","useMemo","Component","composeRefs","memo","VirtualizedListRow","VirtualizedListInner","size","useImperativeHandle","RootContainer","ListViewRootInner","isValidElement","ChildrenListViewInner","Children","SimpleListViewInner","ListView","React","forwardRef","styled","styled","forwardRef","Text","children","style","React","styled","memo","forwardRef","CompletionMenu","React","InputFieldWithCompletions","size","style","children","useRef","useState","useCallback","useLayoutEffect","useMemo","useEffect","useImperativeHandle","React","forwardRef","memo","InspectorContainer","children","style","React","memo","styled","styled","LabelContainer","children","React","memo","React","Children","isValidElement","memo","useLayoutEffect","useMemo","useRef","styled","Container","LabeledElementView","children","React","styled","React","createContext","forwardRef","memo","useCallback","useContext","useMemo","styled","ignoredProps","styled","forwardRef","ToggleGroupItem","children","useContext","React","createContext","useMemo","useCallback","value","RadioGroup","memo","React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","styled","SelectOption","Select","children","value","Select","React","memo","styled","memo","SelectMenu","style","React","value","styled","children","StyledItem","React","useCallback","useMemo","styled","StyledThumb","Slider","arrayValue","React","styled","Switch","React","forwardRef","memo","useCallback","useEffect","useRef","styled","AutoResizingTextArea","value","React","forwardRef","memo","useCallback","useContext","forwardRef","TreeRow","children","useContext","useCallback","React","TreeView","memo","useKeyboardShortcuts","React","forwardRef","useImperativeHandle","useRef","useLayoutEffect","useRef","useEffect","useState","size","useRef","useLayoutEffect","forwardRef","WorkspaceLayout","style","size","useRef","useImperativeHandle","useKeyboardShortcuts","React","elements","range","React","memo","useCallback","useMemo","styled","useTheme","Column","Row","Section","Text","Title","React","memo","styled","useTheme","Section","styled","Title","Row","Column","Text","React","useTheme","memo","LabeledRow","children","styled","ItemContainer","memo","ArrayController","useTheme","useMemo","range","useCallback","React","Section","Title","React","memo","useCallback","memo","DimensionInput","size","useCallback","value","React"]}
|