@deephaven/components 0.70.0 → 0.70.1-alpha-picker-table.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ToastNotification.d.ts.map +1 -1
- package/dist/ToastNotification.js +2 -2
- package/dist/ToastNotification.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/navigation/Stack.d.ts.map +1 -1
- package/dist/navigation/Stack.js +4 -8
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/spectrum/picker/Picker.d.ts +7 -3
- package/dist/spectrum/picker/Picker.d.ts.map +1 -1
- package/dist/spectrum/picker/Picker.js +69 -24
- package/dist/spectrum/picker/Picker.js.map +1 -1
- package/dist/spectrum/picker/PickerUtils.d.ts +34 -13
- package/dist/spectrum/picker/PickerUtils.d.ts.map +1 -1
- package/dist/spectrum/picker/PickerUtils.js +52 -13
- package/dist/spectrum/picker/PickerUtils.js.map +1 -1
- package/dist/transitions/FadeTransition.d.ts +12 -0
- package/dist/transitions/FadeTransition.d.ts.map +1 -0
- package/dist/transitions/FadeTransition.js +29 -0
- package/dist/transitions/FadeTransition.js.map +1 -0
- package/dist/transitions/SlideTransition.d.ts +23 -0
- package/dist/transitions/SlideTransition.d.ts.map +1 -0
- package/dist/transitions/SlideTransition.js +35 -0
- package/dist/transitions/SlideTransition.js.map +1 -0
- package/dist/transitions/index.d.ts +3 -0
- package/dist/transitions/index.d.ts.map +1 -0
- package/dist/transitions/index.js +3 -0
- package/dist/transitions/index.js.map +1 -0
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastNotification.d.ts","sourceRoot":"","sources":["../src/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ToastNotification.d.ts","sourceRoot":"","sources":["../src/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,0BAA0B,CAAC;AAGlC,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAC1B,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CACvE,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACxD,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,OAAe,EACf,UAAU,EAAE,cAAc,EAC1B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EAAE,UAAU,GAC1B,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAyCtC;kBAlDQ,iBAAiB;;;;;AAwD1B,eAAe,iBAAiB,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { vsClose } from '@deephaven/icons';
|
|
|
5
5
|
import Button from "./Button.js";
|
|
6
6
|
import ThemeExport from "./ThemeExport.js";
|
|
7
7
|
import "./ToastNotification.css";
|
|
8
|
+
import { FadeTransition } from "./transitions/index.js";
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
function ToastNotification(_ref) {
|
|
@@ -37,10 +38,9 @@ function ToastNotification(_ref) {
|
|
|
37
38
|
className: "message",
|
|
38
39
|
children: message
|
|
39
40
|
})
|
|
40
|
-
}), /*#__PURE__*/_jsx(
|
|
41
|
+
}), /*#__PURE__*/_jsx(FadeTransition, {
|
|
41
42
|
in: hasButtons,
|
|
42
43
|
timeout: ThemeExport.transitionSlowMs,
|
|
43
|
-
classNames: "fade",
|
|
44
44
|
mountOnEnter: true,
|
|
45
45
|
unmountOnExit: true,
|
|
46
46
|
children: /*#__PURE__*/_jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastNotification.js","names":["React","classNames","CSSTransition","vsClose","Button","ThemeExport","jsx","_jsx","jsxs","_jsxs","ToastNotification","_ref","buttons","isShown","classNamesProp","message","type","onClick","onDismiss","dataTestId","hasButtons","length","in","timeout","transitionMs","mountOnEnter","unmountOnExit","children","className","role","onKeyPress","transitionSlowMs","kind","icon","tooltip","TYPE","Object","freeze","ERROR"],"sources":["../src/ToastNotification.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from './Button';\nimport ThemeExport from './ThemeExport';\nimport './ToastNotification.scss';\n\ntype ToastNotificationProps = {\n buttons?: (typeof Button)[];\n classNames?: string;\n isShown?: boolean;\n message?: string;\n type?: string;\n 'data-testid'?: string;\n\n onClick?: React.EventHandler<\n React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>\n >;\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nfunction ToastNotification({\n buttons,\n isShown = false,\n classNames: classNamesProp,\n message,\n type,\n onClick,\n onDismiss,\n 'data-testid': dataTestId,\n}: ToastNotificationProps): JSX.Element {\n const hasButtons = buttons && buttons.length !== 0;\n\n return (\n <CSSTransition\n in={isShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"toast-notification-slide-up\"\n mountOnEnter\n unmountOnExit\n >\n <div\n className={classNames('toast-notification', classNamesProp, type)}\n role=\"presentation\"\n onClick={onClick}\n onKeyPress={onClick}\n data-testid={dataTestId}\n >\n <div className=\"message-container\">\n <span className=\"message\">{message}</span>\n </div>\n <
|
|
1
|
+
{"version":3,"file":"ToastNotification.js","names":["React","classNames","CSSTransition","vsClose","Button","ThemeExport","FadeTransition","jsx","_jsx","jsxs","_jsxs","ToastNotification","_ref","buttons","isShown","classNamesProp","message","type","onClick","onDismiss","dataTestId","hasButtons","length","in","timeout","transitionMs","mountOnEnter","unmountOnExit","children","className","role","onKeyPress","transitionSlowMs","kind","icon","tooltip","TYPE","Object","freeze","ERROR"],"sources":["../src/ToastNotification.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from './Button';\nimport ThemeExport from './ThemeExport';\nimport './ToastNotification.scss';\nimport { FadeTransition } from './transitions';\n\ntype ToastNotificationProps = {\n buttons?: (typeof Button)[];\n classNames?: string;\n isShown?: boolean;\n message?: string;\n type?: string;\n 'data-testid'?: string;\n\n onClick?: React.EventHandler<\n React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>\n >;\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nfunction ToastNotification({\n buttons,\n isShown = false,\n classNames: classNamesProp,\n message,\n type,\n onClick,\n onDismiss,\n 'data-testid': dataTestId,\n}: ToastNotificationProps): JSX.Element {\n const hasButtons = buttons && buttons.length !== 0;\n\n return (\n <CSSTransition\n in={isShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"toast-notification-slide-up\"\n mountOnEnter\n unmountOnExit\n >\n <div\n className={classNames('toast-notification', classNamesProp, type)}\n role=\"presentation\"\n onClick={onClick}\n onKeyPress={onClick}\n data-testid={dataTestId}\n >\n <div className=\"message-container\">\n <span className=\"message\">{message}</span>\n </div>\n <FadeTransition\n in={hasButtons}\n timeout={ThemeExport.transitionSlowMs}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">{buttons}</div>\n </FadeTransition>\n {onDismiss && (\n <Button\n kind=\"ghost\"\n icon={vsClose}\n tooltip=\"Close notification\"\n className=\"my-2\"\n onClick={onDismiss}\n />\n )}\n </div>\n </CSSTransition>\n );\n}\n\nToastNotification.TYPE = Object.freeze({\n ERROR: 'error',\n});\n\nexport default ToastNotification;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,OAAO,QAAQ,kBAAkB;AAAC,OACpCC,MAAM;AAAA,OACNC,WAAW;AAAA;AAAA,SAETC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAgBvB,SAASC,iBAAiBA,CAAAC,IAAA,EASc;EAAA,IATb;IACzBC,OAAO;IACPC,OAAO,GAAG,KAAK;IACfb,UAAU,EAAEc,cAAc;IAC1BC,OAAO;IACPC,IAAI;IACJC,OAAO;IACPC,SAAS;IACT,aAAa,EAAEC;EACO,CAAC,GAAAR,IAAA;EACvB,IAAMS,UAAU,GAAGR,OAAO,IAAIA,OAAO,CAACS,MAAM,KAAK,CAAC;EAElD,oBACEd,IAAA,CAACN,aAAa;IACZqB,EAAE,EAAET,OAAQ;IACZU,OAAO,EAAEnB,WAAW,CAACoB,YAAa;IAClCxB,UAAU,EAAC,6BAA6B;IACxCyB,YAAY;IACZC,aAAa;IAAAC,QAAA,eAEblB,KAAA;MACEmB,SAAS,EAAE5B,UAAU,CAAC,oBAAoB,EAAEc,cAAc,EAAEE,IAAI,CAAE;MAClEa,IAAI,EAAC,cAAc;MACnBZ,OAAO,EAAEA,OAAQ;MACjBa,UAAU,EAAEb,OAAQ;MACpB,eAAaE,UAAW;MAAAQ,QAAA,gBAExBpB,IAAA;QAAKqB,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eAChCpB,IAAA;UAAMqB,SAAS,EAAC,SAAS;UAAAD,QAAA,EAAEZ;QAAO,CAAO;MAAC,CACvC,CAAC,eACNR,IAAA,CAACF,cAAc;QACbiB,EAAE,EAAEF,UAAW;QACfG,OAAO,EAAEnB,WAAW,CAAC2B,gBAAiB;QACtCN,YAAY;QACZC,aAAa;QAAAC,QAAA,eAEbpB,IAAA;UAAKqB,SAAS,EAAC,mBAAmB;UAAAD,QAAA,EAAEf;QAAO,CAAM;MAAC,CACpC,CAAC,EAChBM,SAAS,iBACRX,IAAA,CAACJ,MAAM;QACL6B,IAAI,EAAC,OAAO;QACZC,IAAI,EAAE/B,OAAQ;QACdgC,OAAO,EAAC,oBAAoB;QAC5BN,SAAS,EAAC,MAAM;QAChBX,OAAO,EAAEC;MAAU,CACpB,CACF;IAAA,CACE;EAAC,CACO,CAAC;AAEpB;AAEAR,iBAAiB,CAACyB,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCC,KAAK,EAAE;AACT,CAAC,CAAC;AAEF,eAAe5B,iBAAiB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ export * from './SpectrumUtils';
|
|
|
53
53
|
export * from './TableViewEmptyState';
|
|
54
54
|
export * from './TextWithTooltip';
|
|
55
55
|
export * from './theme';
|
|
56
|
+
export * from './transitions';
|
|
56
57
|
export { default as ThemeExport } from './ThemeExport';
|
|
57
58
|
export { default as TimeInput } from './TimeInput';
|
|
58
59
|
export { default as TimeSlider } from './TimeSlider';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -52,6 +52,7 @@ export * from "./SpectrumUtils.js";
|
|
|
52
52
|
export * from "./TableViewEmptyState.js";
|
|
53
53
|
export * from "./TextWithTooltip.js";
|
|
54
54
|
export * from "./theme/index.js";
|
|
55
|
+
export * from "./transitions/index.js";
|
|
55
56
|
export { default as ThemeExport } from "./ThemeExport.js";
|
|
56
57
|
export { default as TimeInput } from "./TimeInput.js";
|
|
57
58
|
export { default as TimeSlider } from "./TimeSlider.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CopyButton","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport * from './ErrorBoundary';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './spectrum';\nexport * from './SpectrumUtils';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport * from './theme';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,MAAM;AAAA,SACjBJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,SAAS;AAAA;AAAA,SAEpBN,OAAO,IAAIO,QAAQ;AAAA;AAAA,SAEnBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,QAAQ;AAAA,SACnBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,UAAU;AAAA,SACrBX,OAAO,IAAIY,gBAAgB;AAAA,SAC3BZ,OAAO,IAAIa,aAAa;AAAA,SACxBb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,oBAAoB;AAAA;AAAA,SAE/Bf,OAAO,IAAIgB,iBAAiB;AAAA;AAAA,SAE5BhB,OAAO,IAAIiB,SAAS;AAAA,SACpBjB,OAAO,IAAIkB,gBAAgB;AAAA;AAAA,SAE3BlB,OAAO,IAAImB,wBAAwB;AAAA;AAAA;AAAA,SAGnCnB,OAAO,IAAIoB,YAAY;AAAA,SACvBpB,OAAO,IAAIqB,cAAc;AAAA,SACzBrB,OAAO,IAAIsB,cAAc;AAAA,SACzBtB,OAAO,IAAIuB,YAAY;AAAA;AAAA,SAEvBvB,OAAO,IAAIwB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBxB,OAAO,IAAIyB,MAAM;AAAA;AAAA;AAAA,SAGjBzB,OAAO,IAAI0B,UAAU;AAAA,SACrB1B,OAAO,IAAI2B,SAAS;AAAA,SACpB3B,OAAO,IAAI4B,uBAAuB;AAAA;AAAA,SAElC5B,OAAO,IAAI6B,MAAM;AAAA,SACjB7B,OAAO,IAAI8B,WAAW;AAAA,SACtB9B,OAAO,IAAI+B,eAAe;AAAA;AAAA;AAAA,SAG1B/B,OAAO,IAAIgC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CopyButton","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport * from './ErrorBoundary';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './spectrum';\nexport * from './SpectrumUtils';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport * from './theme';\nexport * from './transitions';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,MAAM;AAAA,SACjBJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,SAAS;AAAA;AAAA,SAEpBN,OAAO,IAAIO,QAAQ;AAAA;AAAA,SAEnBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,QAAQ;AAAA,SACnBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,UAAU;AAAA,SACrBX,OAAO,IAAIY,gBAAgB;AAAA,SAC3BZ,OAAO,IAAIa,aAAa;AAAA,SACxBb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,oBAAoB;AAAA;AAAA,SAE/Bf,OAAO,IAAIgB,iBAAiB;AAAA;AAAA,SAE5BhB,OAAO,IAAIiB,SAAS;AAAA,SACpBjB,OAAO,IAAIkB,gBAAgB;AAAA;AAAA,SAE3BlB,OAAO,IAAImB,wBAAwB;AAAA;AAAA;AAAA,SAGnCnB,OAAO,IAAIoB,YAAY;AAAA,SACvBpB,OAAO,IAAIqB,cAAc;AAAA,SACzBrB,OAAO,IAAIsB,cAAc;AAAA,SACzBtB,OAAO,IAAIuB,YAAY;AAAA;AAAA,SAEvBvB,OAAO,IAAIwB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBxB,OAAO,IAAIyB,MAAM;AAAA;AAAA;AAAA,SAGjBzB,OAAO,IAAI0B,UAAU;AAAA,SACrB1B,OAAO,IAAI2B,SAAS;AAAA,SACpB3B,OAAO,IAAI4B,uBAAuB;AAAA;AAAA,SAElC5B,OAAO,IAAI6B,MAAM;AAAA,SACjB7B,OAAO,IAAI8B,WAAW;AAAA,SACtB9B,OAAO,IAAI+B,eAAe;AAAA;AAAA;AAAA,SAG1B/B,OAAO,IAAIgC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOzBhC,OAAO,IAAIiC,WAAW;AAAA,SACtBjC,OAAO,IAAIkC,SAAS;AAAA,SACpBlC,OAAO,IAAImC,UAAU;AAAA,SACrBnC,OAAO,IAAIoC,iBAAiB;AAAA,SAC5BpC,OAAO,IAAIqC,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,cAAc,CAAC;AAGtB,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CA+F1B;AAED,eAAe,KAAK,CAAC"}
|
package/dist/navigation/Stack.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React, { useState, useEffect, useMemo, useCallback } from 'react';
|
|
2
|
-
import { CSSTransition } from 'react-transition-group';
|
|
3
2
|
import { usePrevious } from '@deephaven/react-hooks';
|
|
4
|
-
import ThemeExport from "../ThemeExport.js";
|
|
5
3
|
import "./Stack.css";
|
|
4
|
+
import { SlideTransition } from "../transitions/index.js";
|
|
6
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
6
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
8
7
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -66,10 +65,9 @@ export function Stack(_ref) {
|
|
|
66
65
|
className: "main-view",
|
|
67
66
|
"data-testid": dataTestId,
|
|
68
67
|
children: mainView
|
|
69
|
-
}), /*#__PURE__*/_jsx(
|
|
68
|
+
}), /*#__PURE__*/_jsx(SlideTransition, {
|
|
69
|
+
direction: "right",
|
|
70
70
|
in: poppingView != null,
|
|
71
|
-
timeout: ThemeExport.transitionMidMs,
|
|
72
|
-
classNames: "slide-right",
|
|
73
71
|
onEntered: popComplete,
|
|
74
72
|
children: /*#__PURE__*/_jsx(_Fragment, {
|
|
75
73
|
children: poppingView != null && /*#__PURE__*/_jsx("div", {
|
|
@@ -77,10 +75,8 @@ export function Stack(_ref) {
|
|
|
77
75
|
children: poppingView
|
|
78
76
|
})
|
|
79
77
|
})
|
|
80
|
-
}), /*#__PURE__*/_jsx(
|
|
78
|
+
}), /*#__PURE__*/_jsx(SlideTransition, {
|
|
81
79
|
in: pushingView != null,
|
|
82
|
-
timeout: ThemeExport.transitionMidMs,
|
|
83
|
-
classNames: "slide-left",
|
|
84
80
|
onEntered: pushComplete,
|
|
85
81
|
children: /*#__PURE__*/_jsx(_Fragment, {
|
|
86
82
|
children: pushingView != null && /*#__PURE__*/_jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.js","names":["React","useState","useEffect","useMemo","useCallback","
|
|
1
|
+
{"version":3,"file":"Stack.js","names":["React","useState","useEffect","useMemo","useCallback","usePrevious","SlideTransition","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Stack","_ref","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","initAnimation","undefined","topChild","pushComplete","popComplete","className","direction","in","onEntered"],"sources":["../../src/navigation/Stack.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport './Stack.scss';\nimport { SlideTransition } from '../transitions';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n 'data-testid'?: string;\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport function Stack({\n children,\n 'data-testid': dataTestId,\n}: StackProps): JSX.Element {\n const childrenArray = useMemo(\n () => React.Children.toArray(children),\n [children]\n );\n const prevChildrenArray = usePrevious(childrenArray);\n const [mainView, setMainView] = useState<React.ReactNode>(\n childrenArray[childrenArray.length - 1]\n );\n\n const [pushingView, setPushingView] = useState<React.ReactNode>(null);\n const [poppingView, setPoppingView] = useState<React.ReactNode>(null);\n\n /**\n * To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.\n * `mainView` - The main view of the stack, stationary, filling the container.\n * `pushingView` - A view that's currently being pushed. Slides from off screen right to overtop of `mainView`.\n * `poppingView` - A view that's currently being popped. Slides from overtop of `mainView` to right off screen.\n *\n * When the `pushingView` or `poppingView` is set, that will kick off their animation.\n * Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.\n */\n useEffect(\n function initAnimation() {\n if (\n prevChildrenArray === undefined ||\n childrenArray === prevChildrenArray\n ) {\n return;\n }\n const topChild = childrenArray[childrenArray.length - 1];\n if (\n childrenArray.length === prevChildrenArray.length ||\n prevChildrenArray.length === 0 ||\n pushingView !== null ||\n poppingView !== null\n ) {\n // 1) Stack is the same size, we've just mounted, or we're already in an animation - just update the view\n if (pushingView !== null && topChild !== pushingView) {\n // Stack was updated mid animation\n setPushingView(topChild);\n } else if (topChild !== poppingView && topChild !== mainView) {\n // Replace the current view\n setMainView(topChild);\n }\n } else if (childrenArray.length > prevChildrenArray.length) {\n // 2) Stack has grown - start the push animation\n setPushingView(topChild);\n } else if (childrenArray.length < prevChildrenArray.length) {\n // 3) Stack has shrunk - start the pop animation\n setMainView(topChild);\n setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);\n }\n },\n [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]\n );\n\n const pushComplete = useCallback(() => {\n setMainView(pushingView);\n setPushingView(null);\n }, [pushingView]);\n\n const popComplete = useCallback(() => {\n setPoppingView(null);\n }, []);\n\n return (\n <div className=\"navigation-stack\">\n <div className=\"main-view\" data-testid={dataTestId}>\n {mainView}\n </div>\n\n <SlideTransition\n direction=\"right\"\n in={poppingView != null}\n onEntered={popComplete}\n >\n {/* Without the fragment, the transition doesn't work. Without the conditional render, the stack is blank */}\n {/* eslint-disable-next-line react/jsx-no-useless-fragment */}\n <>\n {poppingView != null && (\n <div className=\"popping-view\">{poppingView}</div>\n )}\n </>\n </SlideTransition>\n <SlideTransition in={pushingView != null} onEntered={pushComplete}>\n {/* eslint-disable-next-line react/jsx-no-useless-fragment */}\n <>\n {pushingView != null && (\n <div className=\"pushing-view\">{pushingView}</div>\n )}\n </>\n </SlideTransition>\n </div>\n );\n}\n\nexport default Stack;\n"],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { NormalizedSpectrumPickerProps,
|
|
2
|
+
import { NormalizedSpectrumPickerProps, NormalizedPickerItem, PickerItemOrSection, TooltipOptions, PickerItemKey } from './PickerUtils';
|
|
3
3
|
export type PickerProps = {
|
|
4
|
-
children: PickerItemOrSection | PickerItemOrSection[];
|
|
4
|
+
children: PickerItemOrSection | PickerItemOrSection[] | NormalizedPickerItem[];
|
|
5
5
|
/** Can be set to true or a TooltipOptions to enable item tooltips */
|
|
6
6
|
tooltip?: boolean | TooltipOptions;
|
|
7
7
|
/** The currently selected key in the collection (controlled). */
|
|
8
8
|
selectedKey?: PickerItemKey | null;
|
|
9
9
|
/** The initial selected key in the collection (uncontrolled). */
|
|
10
10
|
defaultSelectedKey?: PickerItemKey;
|
|
11
|
+
/** Function to retrieve initial scroll position when opening the picker */
|
|
12
|
+
getInitialScrollPosition?: () => Promise<number | null>;
|
|
11
13
|
/**
|
|
12
14
|
* Handler that is called when the selection change.
|
|
13
15
|
* Note that under the hood, this is just an alias for Spectrum's
|
|
@@ -15,6 +17,8 @@ export type PickerProps = {
|
|
|
15
17
|
* components.
|
|
16
18
|
*/
|
|
17
19
|
onChange?: (key: PickerItemKey) => void;
|
|
20
|
+
/** Handler that is called when the popover is scrolled. */
|
|
21
|
+
onScroll?: (event: Event) => void;
|
|
18
22
|
/**
|
|
19
23
|
* Handler that is called when the selection changes.
|
|
20
24
|
* @deprecated Use `onChange` instead
|
|
@@ -28,6 +32,6 @@ export type PickerProps = {
|
|
|
28
32
|
* pass through props for the Spectrum Picker component.
|
|
29
33
|
* See https://react-spectrum.adobe.com/react-spectrum/Picker.html
|
|
30
34
|
*/
|
|
31
|
-
export declare function Picker({ children, tooltip, defaultSelectedKey, selectedKey, onChange, onSelectionChange, UNSAFE_className, ...spectrumPickerProps }: PickerProps): JSX.Element;
|
|
35
|
+
export declare function Picker({ children, tooltip, defaultSelectedKey, selectedKey, getInitialScrollPosition, onChange, onOpenChange, onScroll, onSelectionChange, UNSAFE_className, ...spectrumPickerProps }: PickerProps): JSX.Element;
|
|
32
36
|
export default Picker;
|
|
33
37
|
//# sourceMappingURL=Picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/spectrum/picker/Picker.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/spectrum/picker/Picker.tsx"],"names":[],"mappings":";AAYA,OAAO,EAEL,6BAA6B,EAG7B,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EAEd,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EACJ,mBAAmB,GACnB,mBAAmB,EAAE,GACrB,oBAAoB,EAAE,CAAC;IAC3B,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,aAAa,CAAC;IACnC,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAExC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAElC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CAClD,GAKK,IAAI,CACR,6BAA6B,EAC3B,UAAU,GACV,OAAO,GACP,mBAAmB,GACnB,aAAa,GACb,oBAAoB,CACvB,CAAC;AA0BF;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,OAAc,EACd,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,QAAQ,EACR,YAAY,EACZ,QAAe,EACf,iBAAiB,EAEjB,gBAAgB,EAChB,GAAG,mBAAmB,EACvB,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAoI3B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["children", "tooltip", "defaultSelectedKey", "selectedKey", "onChange", "onSelectionChange", "UNSAFE_className"];
|
|
1
|
+
var _excluded = ["children", "tooltip", "defaultSelectedKey", "selectedKey", "getInitialScrollPosition", "onChange", "onOpenChange", "onScroll", "onSelectionChange", "UNSAFE_className"];
|
|
2
2
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -8,13 +8,15 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
8
8
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
9
|
import { useCallback, useMemo } from 'react';
|
|
10
10
|
import { Flex, Picker as SpectrumPicker, Text } from '@adobe/react-spectrum';
|
|
11
|
-
import { isElementOfType } from '@deephaven/react-hooks';
|
|
11
|
+
import { getPositionOfSelectedItem, findSpectrumPickerScrollArea, isElementOfType, usePopoverOnScrollRef } from '@deephaven/react-hooks';
|
|
12
|
+
import { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';
|
|
12
13
|
import cl from 'classnames';
|
|
13
14
|
import { Tooltip } from "../../popper/index.js";
|
|
14
|
-
import { normalizePickerItemList, normalizeTooltipOptions,
|
|
15
|
+
import { isNormalizedPickerSection, normalizePickerItemList, normalizeTooltipOptions, getPickerItemKey } from "./PickerUtils.js";
|
|
15
16
|
import { PickerItemContent } from "./PickerItemContent.js";
|
|
16
17
|
import { Item, Section } from "../shared.js";
|
|
17
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
18
20
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
21
|
/**
|
|
20
22
|
* Create tooltip content optionally wrapping with a Flex column for array
|
|
@@ -33,6 +35,9 @@ function createTooltipContent(content) {
|
|
|
33
35
|
}
|
|
34
36
|
return content;
|
|
35
37
|
}
|
|
38
|
+
function noOp() {
|
|
39
|
+
// No-op
|
|
40
|
+
}
|
|
36
41
|
|
|
37
42
|
/**
|
|
38
43
|
* Picker component for selecting items from a list of items. Items can be
|
|
@@ -47,7 +52,10 @@ export function Picker(_ref) {
|
|
|
47
52
|
tooltip = true,
|
|
48
53
|
defaultSelectedKey,
|
|
49
54
|
selectedKey,
|
|
55
|
+
getInitialScrollPosition,
|
|
50
56
|
onChange,
|
|
57
|
+
onOpenChange,
|
|
58
|
+
onScroll = noOp,
|
|
51
59
|
onSelectionChange,
|
|
52
60
|
// eslint-disable-next-line camelcase
|
|
53
61
|
UNSAFE_className
|
|
@@ -55,50 +63,87 @@ export function Picker(_ref) {
|
|
|
55
63
|
spectrumPickerProps = _objectWithoutProperties(_ref, _excluded);
|
|
56
64
|
var normalizedItems = useMemo(() => normalizePickerItemList(children), [children]);
|
|
57
65
|
var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip), [tooltip]);
|
|
58
|
-
var renderItem = useCallback(
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
var renderItem = useCallback(normalizedItem => {
|
|
67
|
+
var _normalizedItem$item$, _normalizedItem$item, _normalizedItem$item$2, _normalizedItem$item2;
|
|
68
|
+
var key = getPickerItemKey(normalizedItem);
|
|
69
|
+
var content = (_normalizedItem$item$ = (_normalizedItem$item = normalizedItem.item) === null || _normalizedItem$item === void 0 ? void 0 : _normalizedItem$item.content) !== null && _normalizedItem$item$ !== void 0 ? _normalizedItem$item$ : '';
|
|
70
|
+
var textValue = (_normalizedItem$item$2 = (_normalizedItem$item2 = normalizedItem.item) === null || _normalizedItem$item2 === void 0 ? void 0 : _normalizedItem$item2.textValue) !== null && _normalizedItem$item$2 !== void 0 ? _normalizedItem$item$2 : '';
|
|
71
|
+
return /*#__PURE__*/_jsx(Item
|
|
72
|
+
// Note that setting the `key` prop explicitly on `Item` elements
|
|
73
|
+
// causes the picker to expect `selectedKey` and `defaultSelectedKey`
|
|
74
|
+
// to be strings. It also passes the stringified value of the key to
|
|
75
|
+
// `onSelectionChange` handlers` regardless of the actual type of the
|
|
76
|
+
// key. We can't really get around setting in order to support Windowed
|
|
77
|
+
// data, so we'll need to do some manual conversion of keys to strings
|
|
78
|
+
// in other places of this component.
|
|
79
|
+
, {
|
|
66
80
|
// The `textValue` prop gets used to provide the content of `<option>`
|
|
67
81
|
// elements that back the Spectrum Picker. These are not visible in the UI,
|
|
68
82
|
// but are used for accessibility purposes, so we set to an arbitrary
|
|
69
83
|
// 'Empty' value so that they are not empty strings.
|
|
70
|
-
|
|
71
|
-
|
|
84
|
+
textValue: textValue === '' ? 'Empty' : textValue,
|
|
85
|
+
children: /*#__PURE__*/_jsxs(_Fragment, {
|
|
72
86
|
children: [/*#__PURE__*/_jsx(PickerItemContent, {
|
|
73
87
|
children: content
|
|
74
88
|
}), tooltipOptions == null || content === '' ? null : /*#__PURE__*/_jsx(Tooltip, {
|
|
75
89
|
options: tooltipOptions,
|
|
76
90
|
children: createTooltipContent(content)
|
|
77
91
|
})]
|
|
78
|
-
}
|
|
79
|
-
);
|
|
92
|
+
})
|
|
93
|
+
}, key);
|
|
80
94
|
}, [tooltipOptions]);
|
|
95
|
+
var getInitialScrollPositionInternal = useCallback(() => getInitialScrollPosition == null ? getPositionOfSelectedItem({
|
|
96
|
+
keyedItems: normalizedItems,
|
|
97
|
+
// TODO: #1890 & deephaven-plugins#371 add support for sections and
|
|
98
|
+
// items with descriptions since they impact the height calculations
|
|
99
|
+
itemHeight: PICKER_ITEM_HEIGHT,
|
|
100
|
+
selectedKey,
|
|
101
|
+
topOffset: PICKER_TOP_OFFSET
|
|
102
|
+
}) : getInitialScrollPosition(), [getInitialScrollPosition, normalizedItems, selectedKey]);
|
|
103
|
+
var {
|
|
104
|
+
ref: scrollRef,
|
|
105
|
+
onOpenChange: popoverOnOpenChange
|
|
106
|
+
} = usePopoverOnScrollRef(findSpectrumPickerScrollArea, onScroll, getInitialScrollPositionInternal);
|
|
107
|
+
var onOpenChangeInternal = useCallback(isOpen => {
|
|
108
|
+
// Attach scroll event handling
|
|
109
|
+
popoverOnOpenChange(isOpen);
|
|
110
|
+
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);
|
|
111
|
+
}, [onOpenChange, popoverOnOpenChange]);
|
|
112
|
+
var onSelectionChangeInternal = useCallback(key => {
|
|
113
|
+
var _getPickerItemKey, _ref2;
|
|
114
|
+
// The `key` arg will always be a string due to us setting the `Item` key
|
|
115
|
+
// prop in `renderItem`. We need to find the matching item to determine
|
|
116
|
+
// the actual key.
|
|
117
|
+
var selectedItem = normalizedItems.find(item => String(getPickerItemKey(item)) === key);
|
|
118
|
+
var actualKey = (_getPickerItemKey = getPickerItemKey(selectedItem)) !== null && _getPickerItemKey !== void 0 ? _getPickerItemKey : key;
|
|
119
|
+
(_ref2 = onChange !== null && onChange !== void 0 ? onChange : onSelectionChange) === null || _ref2 === void 0 ? void 0 : _ref2(actualKey);
|
|
120
|
+
}, [normalizedItems, onChange, onSelectionChange]);
|
|
81
121
|
return /*#__PURE__*/_jsx(SpectrumPicker
|
|
82
122
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
83
123
|
, _objectSpread(_objectSpread({}, spectrumPickerProps), {}, {
|
|
124
|
+
// The `ref` prop type defined by React Spectrum is incorrect here
|
|
125
|
+
ref: scrollRef,
|
|
126
|
+
onOpenChange: onOpenChangeInternal,
|
|
84
127
|
UNSAFE_className: cl('dh-picker', UNSAFE_className),
|
|
85
128
|
items: normalizedItems
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
// `
|
|
129
|
+
// Spectrum Picker treats keys as strings if the `key` prop is explicitly
|
|
130
|
+
// set on `Item` elements. Since we do this in `renderItem`, we need to
|
|
131
|
+
// ensure that `selectedKey` and `defaultSelectedKey` are strings in order
|
|
132
|
+
// for selection to work.
|
|
89
133
|
,
|
|
90
|
-
selectedKey: selectedKey,
|
|
91
|
-
defaultSelectedKey: defaultSelectedKey
|
|
134
|
+
selectedKey: selectedKey === null || selectedKey === void 0 ? void 0 : selectedKey.toString(),
|
|
135
|
+
defaultSelectedKey: defaultSelectedKey === null || defaultSelectedKey === void 0 ? void 0 : defaultSelectedKey.toString()
|
|
92
136
|
// `onChange` is just an alias for `onSelectionChange`
|
|
93
137
|
,
|
|
94
|
-
onSelectionChange:
|
|
138
|
+
onSelectionChange: onSelectionChangeInternal,
|
|
95
139
|
children: itemOrSection => {
|
|
96
140
|
if (isNormalizedPickerSection(itemOrSection)) {
|
|
141
|
+
var _itemOrSection$item, _itemOrSection$item2;
|
|
97
142
|
return /*#__PURE__*/_jsx(Section, {
|
|
98
|
-
title: itemOrSection.title,
|
|
99
|
-
items: itemOrSection.items,
|
|
143
|
+
title: (_itemOrSection$item = itemOrSection.item) === null || _itemOrSection$item === void 0 ? void 0 : _itemOrSection$item.title,
|
|
144
|
+
items: (_itemOrSection$item2 = itemOrSection.item) === null || _itemOrSection$item2 === void 0 ? void 0 : _itemOrSection$item2.items,
|
|
100
145
|
children: renderItem
|
|
101
|
-
}, itemOrSection
|
|
146
|
+
}, getPickerItemKey(itemOrSection));
|
|
102
147
|
}
|
|
103
148
|
return renderItem(itemOrSection);
|
|
104
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.js","names":["useCallback","useMemo","Flex","Picker","SpectrumPicker","Text","isElementOfType","cl","Tooltip","normalizePickerItemList","normalizeTooltipOptions","isNormalizedPickerSection","PickerItemContent","Item","Section","jsx","_jsx","jsxs","_jsxs","createTooltipContent","content","String","Array","isArray","direction","alignItems","children","filter","node","_ref","tooltip","defaultSelectedKey","selectedKey","onChange","onSelectionChange","UNSAFE_className","spectrumPickerProps","_objectWithoutProperties","_excluded","normalizedItems","tooltipOptions","renderItem","_ref2","key","textValue","options","_objectSpread","items","itemOrSection","title"],"sources":["../../../src/spectrum/picker/Picker.tsx"],"sourcesContent":["import { Key, ReactNode, useCallback, useMemo } from 'react';\nimport { Flex, Picker as SpectrumPicker, Text } from '@adobe/react-spectrum';\nimport { isElementOfType } from '@deephaven/react-hooks';\nimport cl from 'classnames';\nimport { Tooltip } from '../../popper';\nimport {\n NormalizedSpectrumPickerProps,\n normalizePickerItemList,\n normalizeTooltipOptions,\n PickerItemOrSection,\n PickerItemKey,\n TooltipOptions,\n NormalizedPickerItem,\n isNormalizedPickerSection,\n} from './PickerUtils';\nimport { PickerItemContent } from './PickerItemContent';\nimport { Item, Section } from '../shared';\n\nexport type PickerProps = {\n children: PickerItemOrSection | PickerItemOrSection[];\n /** Can be set to true or a TooltipOptions to enable item tooltips */\n tooltip?: boolean | TooltipOptions;\n /** The currently selected key in the collection (controlled). */\n selectedKey?: PickerItemKey | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: PickerItemKey;\n /**\n * Handler that is called when the selection change.\n * Note that under the hood, this is just an alias for Spectrum's\n * `onSelectionChange`. We are renaming for better consistency with other\n * components.\n */\n onChange?: (key: PickerItemKey) => void;\n /**\n * Handler that is called when the selection changes.\n * @deprecated Use `onChange` instead\n */\n onSelectionChange?: (key: PickerItemKey) => void;\n} /*\n * Support remaining SpectrumPickerProps.\n * Note that `selectedKey`, `defaultSelectedKey`, and `onSelectionChange` are\n * re-defined above to account for boolean types which aren't included in the\n * React `Key` type, but are actually supported by the Spectrum Picker component.\n */ & Omit<\n NormalizedSpectrumPickerProps,\n | 'children'\n | 'items'\n | 'onSelectionChange'\n | 'selectedKey'\n | 'defaultSelectedKey'\n>;\n\n/**\n * Create tooltip content optionally wrapping with a Flex column for array\n * content. This is needed for Items containing description `Text` elements.\n */\nfunction createTooltipContent(content: ReactNode) {\n if (typeof content === 'boolean') {\n return String(content);\n }\n\n if (Array.isArray(content)) {\n return (\n <Flex direction=\"column\" alignItems=\"start\">\n {content.filter(node => isElementOfType(node, Text))}\n </Flex>\n );\n }\n\n return content;\n}\n\n/**\n * Picker component for selecting items from a list of items. Items can be\n * provided via the `items` prop or as children. Each item can be a string,\n * number, boolean, or a Spectrum <Item> element. The remaining props are just\n * pass through props for the Spectrum Picker component.\n * See https://react-spectrum.adobe.com/react-spectrum/Picker.html\n */\nexport function Picker({\n children,\n tooltip = true,\n defaultSelectedKey,\n selectedKey,\n onChange,\n onSelectionChange,\n // eslint-disable-next-line camelcase\n UNSAFE_className,\n ...spectrumPickerProps\n}: PickerProps): JSX.Element {\n const normalizedItems = useMemo(\n () => normalizePickerItemList(children),\n [children]\n );\n\n const tooltipOptions = useMemo(\n () => normalizeTooltipOptions(tooltip),\n [tooltip]\n );\n\n const renderItem = useCallback(\n ({ key, content, textValue }: NormalizedPickerItem) => (\n // The `textValue` prop gets used to provide the content of `<option>`\n // elements that back the Spectrum Picker. These are not visible in the UI,\n // but are used for accessibility purposes, so we set to an arbitrary\n // 'Empty' value so that they are not empty strings.\n <Item\n key={key as Key}\n textValue={textValue === '' || textValue == null ? 'Empty' : textValue}\n >\n <PickerItemContent>{content}</PickerItemContent>\n {tooltipOptions == null || content === '' ? null : (\n <Tooltip options={tooltipOptions}>\n {createTooltipContent(content)}\n </Tooltip>\n )}\n </Item>\n ),\n [tooltipOptions]\n );\n\n return (\n <SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...spectrumPickerProps}\n UNSAFE_className={cl('dh-picker', UNSAFE_className)}\n items={normalizedItems}\n // Type assertions are necessary for `selectedKey`, `defaultSelectedKey`,\n // and `onSelectionChange` due to Spectrum types not accounting for\n // `boolean` keys\n selectedKey={selectedKey as NormalizedSpectrumPickerProps['selectedKey']}\n defaultSelectedKey={\n defaultSelectedKey as NormalizedSpectrumPickerProps['defaultSelectedKey']\n }\n // `onChange` is just an alias for `onSelectionChange`\n onSelectionChange={\n (onChange ??\n onSelectionChange) as NormalizedSpectrumPickerProps['onSelectionChange']\n }\n >\n {itemOrSection => {\n if (isNormalizedPickerSection(itemOrSection)) {\n return (\n <Section\n key={itemOrSection.key}\n title={itemOrSection.title}\n items={itemOrSection.items}\n >\n {renderItem}\n </Section>\n );\n }\n\n return renderItem(itemOrSection);\n }}\n </SpectrumPicker>\n );\n}\n\nexport default Picker;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Picker.js","names":["useCallback","useMemo","Flex","Picker","SpectrumPicker","Text","getPositionOfSelectedItem","findSpectrumPickerScrollArea","isElementOfType","usePopoverOnScrollRef","PICKER_ITEM_HEIGHT","PICKER_TOP_OFFSET","cl","Tooltip","isNormalizedPickerSection","normalizePickerItemList","normalizeTooltipOptions","getPickerItemKey","PickerItemContent","Item","Section","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","createTooltipContent","content","String","Array","isArray","direction","alignItems","children","filter","node","noOp","_ref","tooltip","defaultSelectedKey","selectedKey","getInitialScrollPosition","onChange","onOpenChange","onScroll","onSelectionChange","UNSAFE_className","spectrumPickerProps","_objectWithoutProperties","_excluded","normalizedItems","tooltipOptions","renderItem","normalizedItem","_normalizedItem$item$","_normalizedItem$item","_normalizedItem$item$2","_normalizedItem$item2","key","item","textValue","options","getInitialScrollPositionInternal","keyedItems","itemHeight","topOffset","ref","scrollRef","popoverOnOpenChange","onOpenChangeInternal","isOpen","onSelectionChangeInternal","_getPickerItemKey","_ref2","selectedItem","find","actualKey","_objectSpread","items","toString","itemOrSection","_itemOrSection$item","_itemOrSection$item2","title"],"sources":["../../../src/spectrum/picker/Picker.tsx"],"sourcesContent":["import { Key, ReactNode, useCallback, useMemo } from 'react';\nimport { DOMRef } from '@react-types/shared';\nimport { Flex, Picker as SpectrumPicker, Text } from '@adobe/react-spectrum';\nimport {\n getPositionOfSelectedItem,\n findSpectrumPickerScrollArea,\n isElementOfType,\n usePopoverOnScrollRef,\n} from '@deephaven/react-hooks';\nimport { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';\nimport cl from 'classnames';\nimport { Tooltip } from '../../popper';\nimport {\n isNormalizedPickerSection,\n NormalizedSpectrumPickerProps,\n normalizePickerItemList,\n normalizeTooltipOptions,\n NormalizedPickerItem,\n PickerItemOrSection,\n TooltipOptions,\n PickerItemKey,\n getPickerItemKey,\n} from './PickerUtils';\nimport { PickerItemContent } from './PickerItemContent';\nimport { Item, Section } from '../shared';\n\nexport type PickerProps = {\n children:\n | PickerItemOrSection\n | PickerItemOrSection[]\n | NormalizedPickerItem[];\n /** Can be set to true or a TooltipOptions to enable item tooltips */\n tooltip?: boolean | TooltipOptions;\n /** The currently selected key in the collection (controlled). */\n selectedKey?: PickerItemKey | null;\n /** The initial selected key in the collection (uncontrolled). */\n defaultSelectedKey?: PickerItemKey;\n /** Function to retrieve initial scroll position when opening the picker */\n getInitialScrollPosition?: () => Promise<number | null>;\n /**\n * Handler that is called when the selection change.\n * Note that under the hood, this is just an alias for Spectrum's\n * `onSelectionChange`. We are renaming for better consistency with other\n * components.\n */\n onChange?: (key: PickerItemKey) => void;\n\n /** Handler that is called when the popover is scrolled. */\n onScroll?: (event: Event) => void;\n\n /**\n * Handler that is called when the selection changes.\n * @deprecated Use `onChange` instead\n */\n onSelectionChange?: (key: PickerItemKey) => void;\n} /*\n * Support remaining SpectrumPickerProps.\n * Note that `selectedKey`, `defaultSelectedKey`, and `onSelectionChange` are\n * re-defined above to account for boolean types which aren't included in the\n * React `Key` type, but are actually supported by the Spectrum Picker component.\n */ & Omit<\n NormalizedSpectrumPickerProps,\n | 'children'\n | 'items'\n | 'onSelectionChange'\n | 'selectedKey'\n | 'defaultSelectedKey'\n>;\n\n/**\n * Create tooltip content optionally wrapping with a Flex column for array\n * content. This is needed for Items containing description `Text` elements.\n */\nfunction createTooltipContent(content: ReactNode) {\n if (typeof content === 'boolean') {\n return String(content);\n }\n\n if (Array.isArray(content)) {\n return (\n <Flex direction=\"column\" alignItems=\"start\">\n {content.filter(node => isElementOfType(node, Text))}\n </Flex>\n );\n }\n\n return content;\n}\n\nfunction noOp(): void {\n // No-op\n}\n\n/**\n * Picker component for selecting items from a list of items. Items can be\n * provided via the `items` prop or as children. Each item can be a string,\n * number, boolean, or a Spectrum <Item> element. The remaining props are just\n * pass through props for the Spectrum Picker component.\n * See https://react-spectrum.adobe.com/react-spectrum/Picker.html\n */\nexport function Picker({\n children,\n tooltip = true,\n defaultSelectedKey,\n selectedKey,\n getInitialScrollPosition,\n onChange,\n onOpenChange,\n onScroll = noOp,\n onSelectionChange,\n // eslint-disable-next-line camelcase\n UNSAFE_className,\n ...spectrumPickerProps\n}: PickerProps): JSX.Element {\n const normalizedItems = useMemo(\n () => normalizePickerItemList(children),\n [children]\n );\n\n const tooltipOptions = useMemo(\n () => normalizeTooltipOptions(tooltip),\n [tooltip]\n );\n\n const renderItem = useCallback(\n (normalizedItem: NormalizedPickerItem) => {\n const key = getPickerItemKey(normalizedItem);\n const content = normalizedItem.item?.content ?? '';\n const textValue = normalizedItem.item?.textValue ?? '';\n\n return (\n <Item\n // Note that setting the `key` prop explicitly on `Item` elements\n // causes the picker to expect `selectedKey` and `defaultSelectedKey`\n // to be strings. It also passes the stringified value of the key to\n // `onSelectionChange` handlers` regardless of the actual type of the\n // key. We can't really get around setting in order to support Windowed\n // data, so we'll need to do some manual conversion of keys to strings\n // in other places of this component.\n key={key as Key}\n // The `textValue` prop gets used to provide the content of `<option>`\n // elements that back the Spectrum Picker. These are not visible in the UI,\n // but are used for accessibility purposes, so we set to an arbitrary\n // 'Empty' value so that they are not empty strings.\n textValue={textValue === '' ? 'Empty' : textValue}\n >\n <>\n <PickerItemContent>{content}</PickerItemContent>\n {tooltipOptions == null || content === '' ? null : (\n <Tooltip options={tooltipOptions}>\n {createTooltipContent(content)}\n </Tooltip>\n )}\n </>\n </Item>\n );\n },\n [tooltipOptions]\n );\n\n const getInitialScrollPositionInternal = useCallback(\n () =>\n getInitialScrollPosition == null\n ? getPositionOfSelectedItem({\n keyedItems: normalizedItems,\n // TODO: #1890 & deephaven-plugins#371 add support for sections and\n // items with descriptions since they impact the height calculations\n itemHeight: PICKER_ITEM_HEIGHT,\n selectedKey,\n topOffset: PICKER_TOP_OFFSET,\n })\n : getInitialScrollPosition(),\n [getInitialScrollPosition, normalizedItems, selectedKey]\n );\n\n const { ref: scrollRef, onOpenChange: popoverOnOpenChange } =\n usePopoverOnScrollRef(\n findSpectrumPickerScrollArea,\n onScroll,\n getInitialScrollPositionInternal\n );\n\n const onOpenChangeInternal = useCallback(\n (isOpen: boolean): void => {\n // Attach scroll event handling\n popoverOnOpenChange(isOpen);\n\n onOpenChange?.(isOpen);\n },\n [onOpenChange, popoverOnOpenChange]\n );\n\n const onSelectionChangeInternal = useCallback(\n (key: PickerItemKey): void => {\n // The `key` arg will always be a string due to us setting the `Item` key\n // prop in `renderItem`. We need to find the matching item to determine\n // the actual key.\n const selectedItem = normalizedItems.find(\n item => String(getPickerItemKey(item)) === key\n );\n\n const actualKey = getPickerItemKey(selectedItem) ?? key;\n\n (onChange ?? onSelectionChange)?.(actualKey);\n },\n [normalizedItems, onChange, onSelectionChange]\n );\n\n return (\n <SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...spectrumPickerProps}\n // The `ref` prop type defined by React Spectrum is incorrect here\n ref={scrollRef as unknown as DOMRef<HTMLDivElement>}\n onOpenChange={onOpenChangeInternal}\n UNSAFE_className={cl('dh-picker', UNSAFE_className)}\n items={normalizedItems}\n // Spectrum Picker treats keys as strings if the `key` prop is explicitly\n // set on `Item` elements. Since we do this in `renderItem`, we need to\n // ensure that `selectedKey` and `defaultSelectedKey` are strings in order\n // for selection to work.\n selectedKey={selectedKey?.toString()}\n defaultSelectedKey={defaultSelectedKey?.toString()}\n // `onChange` is just an alias for `onSelectionChange`\n onSelectionChange={\n onSelectionChangeInternal as NormalizedSpectrumPickerProps['onSelectionChange']\n }\n >\n {itemOrSection => {\n if (isNormalizedPickerSection(itemOrSection)) {\n return (\n <Section\n key={getPickerItemKey(itemOrSection)}\n title={itemOrSection.item?.title}\n items={itemOrSection.item?.items}\n >\n {renderItem}\n </Section>\n );\n }\n\n return renderItem(itemOrSection);\n }}\n </SpectrumPicker>\n );\n}\n\nexport default Picker;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Key, ReactElement, ReactNode } from 'react';
|
|
2
2
|
import { SpectrumPickerProps } from '@adobe/react-spectrum';
|
|
3
3
|
import type { ItemRenderer } from '@react-types/shared';
|
|
4
|
+
import { KeyedItem } from '@deephaven/utils';
|
|
4
5
|
import { ItemProps, SectionProps } from '../shared';
|
|
5
6
|
import { PopperOptions } from '../../popper';
|
|
6
7
|
export declare const INVALID_PICKER_ITEM_ERROR_MESSAGE = "Picker items must be strings, numbers, booleans, <Item> or <Section> elements:";
|
|
@@ -29,26 +30,39 @@ export type PickerItemKey = Key | boolean;
|
|
|
29
30
|
* reflect it.
|
|
30
31
|
*/
|
|
31
32
|
export type PickerSelectionChangeHandler = (key: PickerItemKey) => void;
|
|
32
|
-
|
|
33
|
-
* The Picker supports a variety of item types, including strings, numbers,
|
|
34
|
-
* booleans, and more complex React elements. This type represents a normalized
|
|
35
|
-
* form to make rendering items simpler and keep the logic of transformation
|
|
36
|
-
* in separate util methods.
|
|
37
|
-
*/
|
|
38
|
-
export interface NormalizedPickerItem {
|
|
33
|
+
export interface NormalizedPickerItemData {
|
|
39
34
|
key?: PickerItemKey;
|
|
40
35
|
content: ReactNode;
|
|
41
36
|
textValue?: string;
|
|
42
37
|
}
|
|
43
|
-
export interface
|
|
38
|
+
export interface NormalizedPickerSectionData {
|
|
44
39
|
key?: Key;
|
|
45
40
|
title?: ReactNode;
|
|
46
41
|
items: NormalizedPickerItem[];
|
|
47
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* The Picker supports a variety of item types, including strings, numbers,
|
|
45
|
+
* booleans, and more complex React elements. This type represents a normalized
|
|
46
|
+
* form to make rendering items simpler and keep the logic of transformation
|
|
47
|
+
* in separate util methods. It also adheres to the `KeyedItem` interface to
|
|
48
|
+
* be compatible with Windowed data utils (e.g. `useViewportData`).
|
|
49
|
+
*/
|
|
50
|
+
export type NormalizedPickerItem = KeyedItem<NormalizedPickerItemData, PickerItemKey | undefined>;
|
|
51
|
+
export type NormalizedPickerSection = KeyedItem<NormalizedPickerSectionData, Key | undefined>;
|
|
48
52
|
export type NormalizedSpectrumPickerProps = SpectrumPickerProps<NormalizedPickerItem>;
|
|
49
53
|
export type TooltipOptions = {
|
|
50
54
|
placement: PopperOptions['placement'];
|
|
51
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Picker uses a normalized item that includes a `key` prop and an optional
|
|
58
|
+
* `item` prop. This is mostly to support Windowed data where items are created
|
|
59
|
+
* before their data has been loaded (data gets set in the `item` prop). If
|
|
60
|
+
* data has loaded, return its `key`. If not, return the top-level `key` on the
|
|
61
|
+
* normalized item.
|
|
62
|
+
* @param item The normalized picker item or section
|
|
63
|
+
* @returns The `key` of the item or section
|
|
64
|
+
*/
|
|
65
|
+
export declare function getPickerItemKey<TItem extends NormalizedPickerItem | NormalizedPickerSection, TKey extends TItem extends NormalizedPickerItem ? PickerItemKey | undefined : TItem extends NormalizedPickerSection ? Key | undefined : undefined>(item: TItem | null | undefined): TKey;
|
|
52
66
|
/**
|
|
53
67
|
* Determine if a node is a Section element.
|
|
54
68
|
* @param node The node to check
|
|
@@ -62,24 +76,31 @@ export declare function isSectionElement<T>(node: ReactNode): node is ReactEleme
|
|
|
62
76
|
*/
|
|
63
77
|
export declare function isItemElement<T>(node: ReactNode): node is ReactElement<ItemProps<T>>;
|
|
64
78
|
/**
|
|
65
|
-
* Determine if a node is
|
|
66
|
-
*
|
|
79
|
+
* Determine if a node is an array containing normalized items with keys.
|
|
80
|
+
* Note that this only checks the first node in the array.
|
|
67
81
|
* @param node The node to check
|
|
68
|
-
* @returns True if the node is a
|
|
82
|
+
* @returns True if the node is a normalized item with keys array
|
|
69
83
|
*/
|
|
70
|
-
export declare function
|
|
84
|
+
export declare function isNormalizedItemsWithKeysList(node: PickerItemOrSection | PickerItemOrSection[] | (NormalizedPickerItem | NormalizedPickerSection)[]): node is (NormalizedPickerItem | NormalizedPickerSection)[];
|
|
71
85
|
/**
|
|
72
86
|
* Determine if an object is a normalized Picker section.
|
|
73
87
|
* @param maybeNormalizedPickerSection The object to check
|
|
74
88
|
* @returns True if the object is a normalized Picker section
|
|
75
89
|
*/
|
|
76
90
|
export declare function isNormalizedPickerSection(maybeNormalizedPickerSection: NormalizedPickerItem | NormalizedPickerSection): maybeNormalizedPickerSection is NormalizedPickerSection;
|
|
91
|
+
/**
|
|
92
|
+
* Determine if a node is a Picker item or section. Valid types include strings,
|
|
93
|
+
* numbers, booleans, Item elements, and Section elements.
|
|
94
|
+
* @param node The node to check
|
|
95
|
+
* @returns True if the node is a Picker item or section
|
|
96
|
+
*/
|
|
97
|
+
export declare function isPickerItemOrSection(node: ReactNode): node is PickerItemOrSection;
|
|
77
98
|
/**
|
|
78
99
|
* Get normalized picker items from a picker item or array of picker items.
|
|
79
100
|
* @param itemsOrSections A picker item or array of picker items
|
|
80
101
|
* @returns An array of normalized picker items
|
|
81
102
|
*/
|
|
82
|
-
export declare function normalizePickerItemList(itemsOrSections: PickerItemOrSection | PickerItemOrSection[]): (NormalizedPickerItem | NormalizedPickerSection)[];
|
|
103
|
+
export declare function normalizePickerItemList(itemsOrSections: PickerItemOrSection | PickerItemOrSection[] | NormalizedPickerItem[]): (NormalizedPickerItem | NormalizedPickerSection)[];
|
|
83
104
|
/**
|
|
84
105
|
* Returns a TooltipOptions object or null if options is false or null.
|
|
85
106
|
* @param options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerUtils.d.ts","sourceRoot":"","sources":["../../../src/spectrum/picker/PickerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAQ,SAAS,EAAW,YAAY,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,eAAO,MAAM,iCAAiC,mFACoC,CAAC;AAEnF;;;;GAIG;AACH,KAAK,0BAA0B,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG;IACvE,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,KAAK,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,KAAK,cAAc,GAAG,YAAY,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAC3C,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,aAAa,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"PickerUtils.d.ts","sourceRoot":"","sources":["../../../src/spectrum/picker/PickerUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,24 @@ export var INVALID_PICKER_ITEM_ERROR_MESSAGE = 'Picker items must be strings, nu
|
|
|
26
26
|
* The Picker supports a variety of item types, including strings, numbers,
|
|
27
27
|
* booleans, and more complex React elements. This type represents a normalized
|
|
28
28
|
* form to make rendering items simpler and keep the logic of transformation
|
|
29
|
-
* in separate util methods.
|
|
29
|
+
* in separate util methods. It also adheres to the `KeyedItem` interface to
|
|
30
|
+
* be compatible with Windowed data utils (e.g. `useViewportData`).
|
|
30
31
|
*/
|
|
31
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Picker uses a normalized item that includes a `key` prop and an optional
|
|
35
|
+
* `item` prop. This is mostly to support Windowed data where items are created
|
|
36
|
+
* before their data has been loaded (data gets set in the `item` prop). If
|
|
37
|
+
* data has loaded, return its `key`. If not, return the top-level `key` on the
|
|
38
|
+
* normalized item.
|
|
39
|
+
* @param item The normalized picker item or section
|
|
40
|
+
* @returns The `key` of the item or section
|
|
41
|
+
*/
|
|
42
|
+
export function getPickerItemKey(item) {
|
|
43
|
+
var _item$item$key, _item$item;
|
|
44
|
+
return (_item$item$key = item === null || item === void 0 ? void 0 : (_item$item = item.item) === null || _item$item === void 0 ? void 0 : _item$item.key) !== null && _item$item$key !== void 0 ? _item$item$key : item === null || item === void 0 ? void 0 : item.key;
|
|
45
|
+
}
|
|
46
|
+
|
|
32
47
|
/**
|
|
33
48
|
* Determine if a node is a Section element.
|
|
34
49
|
* @param node The node to check
|
|
@@ -48,13 +63,19 @@ export function isItemElement(node) {
|
|
|
48
63
|
}
|
|
49
64
|
|
|
50
65
|
/**
|
|
51
|
-
* Determine if a node is
|
|
52
|
-
*
|
|
66
|
+
* Determine if a node is an array containing normalized items with keys.
|
|
67
|
+
* Note that this only checks the first node in the array.
|
|
53
68
|
* @param node The node to check
|
|
54
|
-
* @returns True if the node is a
|
|
69
|
+
* @returns True if the node is a normalized item with keys array
|
|
55
70
|
*/
|
|
56
|
-
export function
|
|
57
|
-
|
|
71
|
+
export function isNormalizedItemsWithKeysList(node) {
|
|
72
|
+
if (!Array.isArray(node)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (node.length === 0) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return !isPickerItemOrSection(node[0]) && 'key' in node[0];
|
|
58
79
|
}
|
|
59
80
|
|
|
60
81
|
/**
|
|
@@ -63,7 +84,17 @@ export function isPickerItemOrSection(node) {
|
|
|
63
84
|
* @returns True if the object is a normalized Picker section
|
|
64
85
|
*/
|
|
65
86
|
export function isNormalizedPickerSection(maybeNormalizedPickerSection) {
|
|
66
|
-
return 'items' in maybeNormalizedPickerSection;
|
|
87
|
+
return maybeNormalizedPickerSection.item != null && 'items' in maybeNormalizedPickerSection.item;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Determine if a node is a Picker item or section. Valid types include strings,
|
|
92
|
+
* numbers, booleans, Item elements, and Section elements.
|
|
93
|
+
* @param node The node to check
|
|
94
|
+
* @returns True if the node is a Picker item or section
|
|
95
|
+
*/
|
|
96
|
+
export function isPickerItemOrSection(node) {
|
|
97
|
+
return typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean' || isItemElement(node) || isSectionElement(node);
|
|
67
98
|
}
|
|
68
99
|
|
|
69
100
|
/**
|
|
@@ -130,18 +161,22 @@ function normalizePickerItem(itemOrSection) {
|
|
|
130
161
|
// We don't support nested section elements
|
|
131
162
|
childItem => !isSectionElement(childItem));
|
|
132
163
|
return {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
164
|
+
item: {
|
|
165
|
+
key: _key,
|
|
166
|
+
title,
|
|
167
|
+
items
|
|
168
|
+
}
|
|
136
169
|
};
|
|
137
170
|
}
|
|
138
171
|
var key = normalizeItemKey(itemOrSection);
|
|
139
172
|
var content = isItemElement(itemOrSection) ? itemOrSection.props.children : itemOrSection;
|
|
140
173
|
var textValue = normalizeTextValue(itemOrSection);
|
|
141
174
|
return {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
175
|
+
item: {
|
|
176
|
+
key,
|
|
177
|
+
content,
|
|
178
|
+
textValue
|
|
179
|
+
}
|
|
145
180
|
};
|
|
146
181
|
}
|
|
147
182
|
|
|
@@ -151,6 +186,10 @@ function normalizePickerItem(itemOrSection) {
|
|
|
151
186
|
* @returns An array of normalized picker items
|
|
152
187
|
*/
|
|
153
188
|
export function normalizePickerItemList(itemsOrSections) {
|
|
189
|
+
// If already normalized, just return as-is
|
|
190
|
+
if (isNormalizedItemsWithKeysList(itemsOrSections)) {
|
|
191
|
+
return itemsOrSections;
|
|
192
|
+
}
|
|
154
193
|
var itemsArray = Array.isArray(itemsOrSections) ? itemsOrSections : [itemsOrSections];
|
|
155
194
|
return itemsArray.map(normalizePickerItem);
|
|
156
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerUtils.js","names":["isValidElement","Log","Item","Section","log","module","INVALID_PICKER_ITEM_ERROR_MESSAGE","isSectionElement","node","type","isItemElement","isPickerItemOrSection","isNormalizedPickerSection","maybeNormalizedPickerSection","normalizeItemKey","itemOrSection","_itemOrSection$props$","key","props","title","undefined","textValue","children","normalizeTextValue","item","String","normalizePickerItem","debug","Error","items","normalizePickerItemList","filter","childItem","content","itemsOrSections","itemsArray","Array","isArray","map","normalizeTooltipOptions","options","placement"],"sources":["../../../src/spectrum/picker/PickerUtils.ts"],"sourcesContent":["import { isValidElement, Key, ReactElement, ReactNode } from 'react';\nimport { SpectrumPickerProps } from '@adobe/react-spectrum';\nimport type { ItemRenderer } from '@react-types/shared';\nimport Log from '@deephaven/log';\nimport { Item, ItemProps, Section, SectionProps } from '../shared';\nimport { PopperOptions } from '../../popper';\n\nconst log = Log.module('PickerUtils');\n\nexport const INVALID_PICKER_ITEM_ERROR_MESSAGE =\n 'Picker items must be strings, numbers, booleans, <Item> or <Section> elements:';\n\n/**\n * React Spectrum <Section> supports an `ItemRenderer` function as a child. The\n * DH picker makes use of this internally, but we don't want to support it as\n * an incoming prop.\n */\ntype SectionPropsNoItemRenderer<T> = Omit<SectionProps<T>, 'children'> & {\n children: Exclude<SectionProps<T>['children'], ItemRenderer<T>>;\n};\n\ntype ItemElement = ReactElement<ItemProps<unknown>>;\ntype SectionElement = ReactElement<SectionPropsNoItemRenderer<unknown>>;\n\nexport type PickerItem = number | string | boolean | ItemElement;\nexport type PickerSection = SectionElement;\nexport type PickerItemOrSection = PickerItem | PickerSection;\n\n/**\n * Augment the Spectrum selection key type to include boolean values.\n * The Spectrum Picker already supports this, but the built in types don't\n * reflect it.\n */\nexport type PickerItemKey = Key | boolean;\n\n/**\n * Augment the Spectrum selection change handler type to include boolean keys.\n * The Spectrum Picker already supports this, but the built in types don't\n * reflect it.\n */\nexport type PickerSelectionChangeHandler = (key: PickerItemKey) => void;\n\n/**\n * The Picker supports a variety of item types, including strings, numbers,\n * booleans, and more complex React elements. This type represents a normalized\n * form to make rendering items simpler and keep the logic of transformation\n * in separate util methods.\n */\nexport interface NormalizedPickerItem {\n key?: PickerItemKey;\n content: ReactNode;\n textValue?: string;\n}\n\nexport interface NormalizedPickerSection {\n key?: Key;\n title?: ReactNode;\n items: NormalizedPickerItem[];\n}\n\nexport type NormalizedSpectrumPickerProps =\n SpectrumPickerProps<NormalizedPickerItem>;\n\nexport type TooltipOptions = { placement: PopperOptions['placement'] };\n\n/**\n * Determine if a node is a Section element.\n * @param node The node to check\n * @returns True if the node is a Section element\n */\nexport function isSectionElement<T>(\n node: ReactNode\n): node is ReactElement<SectionProps<T>> {\n return isValidElement<SectionProps<T>>(node) && node.type === Section;\n}\n\n/**\n * Determine if a node is an Item element.\n * @param node The node to check\n * @returns True if the node is an Item element\n */\nexport function isItemElement<T>(\n node: ReactNode\n): node is ReactElement<ItemProps<T>> {\n return isValidElement<ItemProps<T>>(node) && node.type === Item;\n}\n\n/**\n * Determine if a node is a Picker item or section. Valid types include strings,\n * numbers, booleans, Item elements, and Section elements.\n * @param node The node to check\n * @returns True if the node is a Picker item or section\n */\nexport function isPickerItemOrSection(\n node: ReactNode\n): node is PickerItemOrSection {\n return (\n typeof node === 'string' ||\n typeof node === 'number' ||\n typeof node === 'boolean' ||\n isItemElement(node) ||\n isSectionElement(node)\n );\n}\n\n/**\n * Determine if an object is a normalized Picker section.\n * @param maybeNormalizedPickerSection The object to check\n * @returns True if the object is a normalized Picker section\n */\nexport function isNormalizedPickerSection(\n maybeNormalizedPickerSection: NormalizedPickerItem | NormalizedPickerSection\n): maybeNormalizedPickerSection is NormalizedPickerSection {\n return 'items' in maybeNormalizedPickerSection;\n}\n\n/**\n * Determine the `key` of a picker item or section.\n * @param itemOrSection The picker item or section\n * @returns A `PickerItemKey` for the picker item or undefined if a key can't be determined\n */\nfunction normalizeItemKey(item: PickerItem): PickerItemKey | undefined;\nfunction normalizeItemKey(section: PickerSection): Key | undefined;\nfunction normalizeItemKey(\n itemOrSection: PickerItem | PickerSection\n): Key | PickerItemKey | undefined {\n // string, number, or boolean\n if (typeof itemOrSection !== 'object') {\n return itemOrSection;\n }\n\n // If `key` prop is explicitly set\n if (itemOrSection.key != null) {\n return itemOrSection.key;\n }\n\n // Section element\n if (isSectionElement(itemOrSection)) {\n return typeof itemOrSection.props.title === 'string'\n ? itemOrSection.props.title\n : undefined;\n }\n\n // Item element\n return (\n itemOrSection.props.textValue ??\n (typeof itemOrSection.props.children === 'string'\n ? itemOrSection.props.children\n : undefined)\n );\n}\n\n/**\n * Get a normalized `textValue` for a picker item ensuring it is a string.\n * @param item The picker item\n * @returns A string `textValue` for the picker item\n */\nfunction normalizeTextValue(item: PickerItem): string | undefined {\n if (typeof item !== 'object') {\n return String(item);\n }\n\n if (item.props.textValue != null) {\n return item.props.textValue;\n }\n\n if (typeof item.props.children === 'string') {\n return item.props.children;\n }\n\n return undefined;\n}\n\n/**\n * Normalize a picker item to an object form.\n * @param itemOrSection item to normalize\n * @returns NormalizedPickerItem object\n */\nfunction normalizePickerItem(\n itemOrSection: PickerItemOrSection\n): NormalizedPickerItem | NormalizedPickerSection {\n if (!isPickerItemOrSection(itemOrSection)) {\n log.debug(INVALID_PICKER_ITEM_ERROR_MESSAGE, itemOrSection);\n throw new Error(INVALID_PICKER_ITEM_ERROR_MESSAGE);\n }\n\n if (isSectionElement(itemOrSection)) {\n const key = normalizeItemKey(itemOrSection);\n const { title } = itemOrSection.props;\n\n const items = normalizePickerItemList(itemOrSection.props.children).filter(\n // We don't support nested section elements\n childItem => !isSectionElement(childItem)\n ) as NormalizedPickerItem[];\n\n return {\n key,\n title,\n items,\n };\n }\n\n const key = normalizeItemKey(itemOrSection);\n const content = isItemElement(itemOrSection)\n ? itemOrSection.props.children\n : itemOrSection;\n const textValue = normalizeTextValue(itemOrSection);\n\n return {\n key,\n content,\n textValue,\n };\n}\n\n/**\n * Get normalized picker items from a picker item or array of picker items.\n * @param itemsOrSections A picker item or array of picker items\n * @returns An array of normalized picker items\n */\nexport function normalizePickerItemList(\n itemsOrSections: PickerItemOrSection | PickerItemOrSection[]\n): (NormalizedPickerItem | NormalizedPickerSection)[] {\n const itemsArray = Array.isArray(itemsOrSections)\n ? itemsOrSections\n : [itemsOrSections];\n return itemsArray.map(normalizePickerItem);\n}\n\n/**\n * Returns a TooltipOptions object or null if options is false or null.\n * @param options\n * @returns TooltipOptions or null\n */\nexport function normalizeTooltipOptions(\n options?: boolean | TooltipOptions | null\n): TooltipOptions | null {\n if (options == null || options === false) {\n return null;\n }\n\n if (options === true) {\n return { placement: 'right' };\n }\n\n return options;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerUtils.js","names":["isValidElement","Log","Item","Section","log","module","INVALID_PICKER_ITEM_ERROR_MESSAGE","getPickerItemKey","item","_item$item$key","_item$item","key","isSectionElement","node","type","isItemElement","isNormalizedItemsWithKeysList","Array","isArray","length","isPickerItemOrSection","isNormalizedPickerSection","maybeNormalizedPickerSection","normalizeItemKey","itemOrSection","_itemOrSection$props$","props","title","undefined","textValue","children","normalizeTextValue","String","normalizePickerItem","debug","Error","items","normalizePickerItemList","filter","childItem","content","itemsOrSections","itemsArray","map","normalizeTooltipOptions","options","placement"],"sources":["../../../src/spectrum/picker/PickerUtils.ts"],"sourcesContent":["import { isValidElement, Key, ReactElement, ReactNode } from 'react';\nimport { SpectrumPickerProps } from '@adobe/react-spectrum';\nimport type { ItemRenderer } from '@react-types/shared';\nimport Log from '@deephaven/log';\nimport { KeyedItem } from '@deephaven/utils';\nimport { Item, ItemProps, Section, SectionProps } from '../shared';\nimport { PopperOptions } from '../../popper';\n\nconst log = Log.module('PickerUtils');\n\nexport const INVALID_PICKER_ITEM_ERROR_MESSAGE =\n 'Picker items must be strings, numbers, booleans, <Item> or <Section> elements:';\n\n/**\n * React Spectrum <Section> supports an `ItemRenderer` function as a child. The\n * DH picker makes use of this internally, but we don't want to support it as\n * an incoming prop.\n */\ntype SectionPropsNoItemRenderer<T> = Omit<SectionProps<T>, 'children'> & {\n children: Exclude<SectionProps<T>['children'], ItemRenderer<T>>;\n};\n\ntype ItemElement = ReactElement<ItemProps<unknown>>;\ntype SectionElement = ReactElement<SectionPropsNoItemRenderer<unknown>>;\n\nexport type PickerItem = number | string | boolean | ItemElement;\nexport type PickerSection = SectionElement;\nexport type PickerItemOrSection = PickerItem | PickerSection;\n\n/**\n * Augment the Spectrum selection key type to include boolean values.\n * The Spectrum Picker already supports this, but the built in types don't\n * reflect it.\n */\nexport type PickerItemKey = Key | boolean;\n\n/**\n * Augment the Spectrum selection change handler type to include boolean keys.\n * The Spectrum Picker already supports this, but the built in types don't\n * reflect it.\n */\nexport type PickerSelectionChangeHandler = (key: PickerItemKey) => void;\n\nexport interface NormalizedPickerItemData {\n key?: PickerItemKey;\n content: ReactNode;\n textValue?: string;\n}\n\nexport interface NormalizedPickerSectionData {\n key?: Key;\n title?: ReactNode;\n items: NormalizedPickerItem[];\n}\n\n/**\n * The Picker supports a variety of item types, including strings, numbers,\n * booleans, and more complex React elements. This type represents a normalized\n * form to make rendering items simpler and keep the logic of transformation\n * in separate util methods. It also adheres to the `KeyedItem` interface to\n * be compatible with Windowed data utils (e.g. `useViewportData`).\n */\nexport type NormalizedPickerItem = KeyedItem<\n NormalizedPickerItemData,\n PickerItemKey | undefined\n>;\n\nexport type NormalizedPickerSection = KeyedItem<\n NormalizedPickerSectionData,\n Key | undefined\n>;\n\nexport type NormalizedSpectrumPickerProps =\n SpectrumPickerProps<NormalizedPickerItem>;\n\nexport type TooltipOptions = { placement: PopperOptions['placement'] };\n\n/**\n * Picker uses a normalized item that includes a `key` prop and an optional\n * `item` prop. This is mostly to support Windowed data where items are created\n * before their data has been loaded (data gets set in the `item` prop). If\n * data has loaded, return its `key`. If not, return the top-level `key` on the\n * normalized item.\n * @param item The normalized picker item or section\n * @returns The `key` of the item or section\n */\nexport function getPickerItemKey<\n TItem extends NormalizedPickerItem | NormalizedPickerSection,\n TKey extends TItem extends NormalizedPickerItem\n ? PickerItemKey | undefined\n : TItem extends NormalizedPickerSection\n ? Key | undefined\n : undefined,\n>(item: TItem | null | undefined): TKey {\n return (item?.item?.key ?? item?.key) as TKey;\n}\n\n/**\n * Determine if a node is a Section element.\n * @param node The node to check\n * @returns True if the node is a Section element\n */\nexport function isSectionElement<T>(\n node: ReactNode\n): node is ReactElement<SectionProps<T>> {\n return isValidElement<SectionProps<T>>(node) && node.type === Section;\n}\n\n/**\n * Determine if a node is an Item element.\n * @param node The node to check\n * @returns True if the node is an Item element\n */\nexport function isItemElement<T>(\n node: ReactNode\n): node is ReactElement<ItemProps<T>> {\n return isValidElement<ItemProps<T>>(node) && node.type === Item;\n}\n\n/**\n * Determine if a node is an array containing normalized items with keys.\n * Note that this only checks the first node in the array.\n * @param node The node to check\n * @returns True if the node is a normalized item with keys array\n */\nexport function isNormalizedItemsWithKeysList(\n node:\n | PickerItemOrSection\n | PickerItemOrSection[]\n | (NormalizedPickerItem | NormalizedPickerSection)[]\n): node is (NormalizedPickerItem | NormalizedPickerSection)[] {\n if (!Array.isArray(node)) {\n return false;\n }\n\n if (node.length === 0) {\n return true;\n }\n\n return !isPickerItemOrSection(node[0]) && 'key' in node[0];\n}\n\n/**\n * Determine if an object is a normalized Picker section.\n * @param maybeNormalizedPickerSection The object to check\n * @returns True if the object is a normalized Picker section\n */\nexport function isNormalizedPickerSection(\n maybeNormalizedPickerSection: NormalizedPickerItem | NormalizedPickerSection\n): maybeNormalizedPickerSection is NormalizedPickerSection {\n return (\n maybeNormalizedPickerSection.item != null &&\n 'items' in maybeNormalizedPickerSection.item\n );\n}\n\n/**\n * Determine if a node is a Picker item or section. Valid types include strings,\n * numbers, booleans, Item elements, and Section elements.\n * @param node The node to check\n * @returns True if the node is a Picker item or section\n */\nexport function isPickerItemOrSection(\n node: ReactNode\n): node is PickerItemOrSection {\n return (\n typeof node === 'string' ||\n typeof node === 'number' ||\n typeof node === 'boolean' ||\n isItemElement(node) ||\n isSectionElement(node)\n );\n}\n\n/**\n * Determine the `key` of a picker item or section.\n * @param itemOrSection The picker item or section\n * @returns A `PickerItemKey` for the picker item or undefined if a key can't be determined\n */\nfunction normalizeItemKey(item: PickerItem): PickerItemKey | undefined;\nfunction normalizeItemKey(section: PickerSection): Key | undefined;\nfunction normalizeItemKey(\n itemOrSection: PickerItem | PickerSection\n): Key | PickerItemKey | undefined {\n // string, number, or boolean\n if (typeof itemOrSection !== 'object') {\n return itemOrSection;\n }\n\n // If `key` prop is explicitly set\n if (itemOrSection.key != null) {\n return itemOrSection.key;\n }\n\n // Section element\n if (isSectionElement(itemOrSection)) {\n return typeof itemOrSection.props.title === 'string'\n ? itemOrSection.props.title\n : undefined;\n }\n\n // Item element\n return (\n itemOrSection.props.textValue ??\n (typeof itemOrSection.props.children === 'string'\n ? itemOrSection.props.children\n : undefined)\n );\n}\n\n/**\n * Get a normalized `textValue` for a picker item ensuring it is a string.\n * @param item The picker item\n * @returns A string `textValue` for the picker item\n */\nfunction normalizeTextValue(item: PickerItem): string | undefined {\n if (typeof item !== 'object') {\n return String(item);\n }\n\n if (item.props.textValue != null) {\n return item.props.textValue;\n }\n\n if (typeof item.props.children === 'string') {\n return item.props.children;\n }\n\n return undefined;\n}\n\n/**\n * Normalize a picker item to an object form.\n * @param itemOrSection item to normalize\n * @returns NormalizedPickerItem object\n */\nfunction normalizePickerItem(\n itemOrSection: PickerItemOrSection\n): NormalizedPickerItem | NormalizedPickerSection {\n if (!isPickerItemOrSection(itemOrSection)) {\n log.debug(INVALID_PICKER_ITEM_ERROR_MESSAGE, itemOrSection);\n throw new Error(INVALID_PICKER_ITEM_ERROR_MESSAGE);\n }\n\n if (isSectionElement(itemOrSection)) {\n const key = normalizeItemKey(itemOrSection);\n const { title } = itemOrSection.props;\n\n const items = normalizePickerItemList(itemOrSection.props.children).filter(\n // We don't support nested section elements\n childItem => !isSectionElement(childItem)\n ) as NormalizedPickerItem[];\n\n return {\n item: { key, title, items },\n };\n }\n\n const key = normalizeItemKey(itemOrSection);\n const content = isItemElement(itemOrSection)\n ? itemOrSection.props.children\n : itemOrSection;\n const textValue = normalizeTextValue(itemOrSection);\n\n return {\n item: { key, content, textValue },\n };\n}\n\n/**\n * Get normalized picker items from a picker item or array of picker items.\n * @param itemsOrSections A picker item or array of picker items\n * @returns An array of normalized picker items\n */\nexport function normalizePickerItemList(\n itemsOrSections:\n | PickerItemOrSection\n | PickerItemOrSection[]\n | NormalizedPickerItem[]\n): (NormalizedPickerItem | NormalizedPickerSection)[] {\n // If already normalized, just return as-is\n if (isNormalizedItemsWithKeysList(itemsOrSections)) {\n return itemsOrSections;\n }\n\n const itemsArray = Array.isArray(itemsOrSections)\n ? itemsOrSections\n : [itemsOrSections];\n\n return itemsArray.map(normalizePickerItem);\n}\n\n/**\n * Returns a TooltipOptions object or null if options is false or null.\n * @param options\n * @returns TooltipOptions or null\n */\nexport function normalizeTooltipOptions(\n options?: boolean | TooltipOptions | null\n): TooltipOptions | null {\n if (options == null || options === false) {\n return null;\n }\n\n if (options === true) {\n return { placement: 'right' };\n }\n\n return options;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CSSTransitionProps } from 'react-transition-group/CSSTransition';
|
|
3
|
+
import { EndHandler } from 'react-transition-group/Transition';
|
|
4
|
+
type FadeTransitionProps<Ref extends undefined | HTMLElement = undefined> = Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {
|
|
5
|
+
addEndHandler?: EndHandler<Ref> | undefined;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Fade between two components. Defaults to 150ms transition.
|
|
9
|
+
*/
|
|
10
|
+
declare function FadeTransition<Ref extends undefined | HTMLElement = undefined>({ className, timeout, ...props }: FadeTransitionProps<Ref>): JSX.Element;
|
|
11
|
+
export default FadeTransition;
|
|
12
|
+
//# sourceMappingURL=FadeTransition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FadeTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/FadeTransition.tsx"],"names":[],"mappings":";AAAA,OAAsB,EACpB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAI/D,KAAK,mBAAmB,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,IAItE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG;IAC/C,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEJ;;GAEG;AACH,iBAAS,cAAc,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,EAAE,EACvE,SAAS,EACT,OAAkC,EAClC,GAAG,KAAK,EACT,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CASxC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var _excluded = ["className", "timeout"];
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
8
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
|
+
import CSSTransition from 'react-transition-group/CSSTransition';
|
|
10
|
+
import classNames from 'classnames';
|
|
11
|
+
import ThemeExport from "../ThemeExport.js";
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
/**
|
|
14
|
+
* Fade between two components. Defaults to 150ms transition.
|
|
15
|
+
*/
|
|
16
|
+
function FadeTransition(_ref) {
|
|
17
|
+
var {
|
|
18
|
+
className,
|
|
19
|
+
timeout = ThemeExport.transitionMs
|
|
20
|
+
} = _ref,
|
|
21
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
22
|
+
return /*#__PURE__*/_jsx(CSSTransition, _objectSpread({
|
|
23
|
+
timeout: timeout,
|
|
24
|
+
classNames: classNames('fade', className)
|
|
25
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
26
|
+
}, props));
|
|
27
|
+
}
|
|
28
|
+
export default FadeTransition;
|
|
29
|
+
//# sourceMappingURL=FadeTransition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FadeTransition.js","names":["CSSTransition","classNames","ThemeExport","jsx","_jsx","FadeTransition","_ref","className","timeout","transitionMs","props","_objectWithoutProperties","_excluded","_objectSpread"],"sources":["../../src/transitions/FadeTransition.tsx"],"sourcesContent":["import CSSTransition, {\n CSSTransitionProps,\n} from 'react-transition-group/CSSTransition';\nimport { EndHandler } from 'react-transition-group/Transition';\nimport classNames from 'classnames';\nimport ThemeExport from '../ThemeExport';\n\ntype FadeTransitionProps<Ref extends undefined | HTMLElement = undefined> =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {\n addEndHandler?: EndHandler<Ref> | undefined;\n };\n\n/**\n * Fade between two components. Defaults to 150ms transition.\n */\nfunction FadeTransition<Ref extends undefined | HTMLElement = undefined>({\n className,\n timeout = ThemeExport.transitionMs,\n ...props\n}: FadeTransitionProps<Ref>): JSX.Element {\n return (\n <CSSTransition\n timeout={timeout}\n classNames={classNames('fade', className)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nexport default FadeTransition;\n"],"mappings":";;;;;;;;AAAA,OAAOA,aAAa,MAEb,sCAAsC;AAE7C,OAAOC,UAAU,MAAM,YAAY;AAAC,OAC7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAUlB;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAImB;EAAA,IAJ+B;MACvEC,SAAS;MACTC,OAAO,GAAGN,WAAW,CAACO;IAEE,CAAC,GAAAH,IAAA;IADtBI,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAER,oBACER,IAAA,CAACJ,aAAa,EAAAa,aAAA;IACZL,OAAO,EAAEA,OAAQ;IACjBP,UAAU,EAAEA,UAAU,CAAC,MAAM,EAAEM,SAAS;IACxC;EAAA,GACIG,KAAK,CACV,CAAC;AAEN;AAEA,eAAeL,cAAc"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CSSTransitionProps } from 'react-transition-group/CSSTransition';
|
|
3
|
+
import { EndHandler } from 'react-transition-group/Transition';
|
|
4
|
+
type SlideDirection = 'left' | 'right';
|
|
5
|
+
type SlideTransitionProps<Ref extends undefined | HTMLElement = undefined> = Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {
|
|
6
|
+
addEndHandler?: EndHandler<Ref> | undefined;
|
|
7
|
+
} & {
|
|
8
|
+
/**
|
|
9
|
+
* The direction of the slide transition. Defaults to left.
|
|
10
|
+
*/
|
|
11
|
+
direction?: SlideDirection;
|
|
12
|
+
timeout?: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Slides one component overtop of another component.
|
|
16
|
+
* Defaults to sliding left, unless `direction='right'` is provided.
|
|
17
|
+
* Timeout defaults to 200ms.
|
|
18
|
+
*/
|
|
19
|
+
declare function SlideTransition({ direction, className,
|
|
20
|
+
/** Defaults to mid */
|
|
21
|
+
timeout, ...props }: SlideTransitionProps): JSX.Element;
|
|
22
|
+
export default SlideTransition;
|
|
23
|
+
//# sourceMappingURL=SlideTransition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlideTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/SlideTransition.tsx"],"names":[],"mappings":";AAEA,OAAsB,EACpB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAK/D,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,KAAK,oBAAoB,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,IAIvE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG;IAC/C,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C,GAAG;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEJ;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EACvB,SAAkB,EAClB,SAAS;AAET,sBAAsB;AACtB,OAAqC,EACrC,GAAG,KAAK,EACT,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CASpC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var _excluded = ["direction", "className", "timeout"];
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
8
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
|
+
// SlideTransition class uses CSSTransition with slide-left and slide-right classNames, depending on the prop direction. The transition is 250ms long.
|
|
10
|
+
//
|
|
11
|
+
import CSSTransition from 'react-transition-group/CSSTransition';
|
|
12
|
+
import classNames from 'classnames';
|
|
13
|
+
import ThemeExport from "../ThemeExport.js";
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
/**
|
|
16
|
+
* Slides one component overtop of another component.
|
|
17
|
+
* Defaults to sliding left, unless `direction='right'` is provided.
|
|
18
|
+
* Timeout defaults to 200ms.
|
|
19
|
+
*/
|
|
20
|
+
function SlideTransition(_ref) {
|
|
21
|
+
var {
|
|
22
|
+
direction = 'left',
|
|
23
|
+
className,
|
|
24
|
+
/** Defaults to mid */
|
|
25
|
+
timeout = ThemeExport.transitionMidMs
|
|
26
|
+
} = _ref,
|
|
27
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
return /*#__PURE__*/_jsx(CSSTransition, _objectSpread({
|
|
29
|
+
timeout: timeout,
|
|
30
|
+
classNames: classNames("slide-".concat(direction), className)
|
|
31
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
32
|
+
}, props));
|
|
33
|
+
}
|
|
34
|
+
export default SlideTransition;
|
|
35
|
+
//# sourceMappingURL=SlideTransition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlideTransition.js","names":["CSSTransition","classNames","ThemeExport","jsx","_jsx","SlideTransition","_ref","direction","className","timeout","transitionMidMs","props","_objectWithoutProperties","_excluded","_objectSpread","concat"],"sources":["../../src/transitions/SlideTransition.tsx"],"sourcesContent":["// SlideTransition class uses CSSTransition with slide-left and slide-right classNames, depending on the prop direction. The transition is 250ms long.\n//\nimport CSSTransition, {\n CSSTransitionProps,\n} from 'react-transition-group/CSSTransition';\nimport { EndHandler } from 'react-transition-group/Transition';\n\nimport classNames from 'classnames';\nimport ThemeExport from '../ThemeExport';\n\ntype SlideDirection = 'left' | 'right';\n\ntype SlideTransitionProps<Ref extends undefined | HTMLElement = undefined> =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {\n addEndHandler?: EndHandler<Ref> | undefined;\n } & {\n /**\n * The direction of the slide transition. Defaults to left.\n */\n direction?: SlideDirection;\n\n timeout?: number;\n };\n\n/**\n * Slides one component overtop of another component.\n * Defaults to sliding left, unless `direction='right'` is provided.\n * Timeout defaults to 200ms.\n */\nfunction SlideTransition({\n direction = 'left',\n className,\n\n /** Defaults to mid */\n timeout = ThemeExport.transitionMidMs,\n ...props\n}: SlideTransitionProps): JSX.Element {\n return (\n <CSSTransition\n timeout={timeout}\n classNames={classNames(`slide-${direction}`, className)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nexport default SlideTransition;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA,OAAOA,aAAa,MAEb,sCAAsC;AAG7C,OAAOC,UAAU,MAAM,YAAY;AAAC,OAC7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAmBlB;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAAC,IAAA,EAOc;EAAA,IAPb;MACvBC,SAAS,GAAG,MAAM;MAClBC,SAAS;MAET;MACAC,OAAO,GAAGP,WAAW,CAACQ;IAEF,CAAC,GAAAJ,IAAA;IADlBK,KAAK,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA;EAER,oBACET,IAAA,CAACJ,aAAa,EAAAc,aAAA;IACZL,OAAO,EAAEA,OAAQ;IACjBR,UAAU,EAAEA,UAAU,UAAAc,MAAA,CAAUR,SAAS,GAAIC,SAAS;IACtD;EAAA,GACIG,KAAK,CACV,CAAC;AAEN;AAEA,eAAeN,eAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","FadeTransition","SlideTransition"],"sources":["../../src/transitions/index.ts"],"sourcesContent":["export { default as FadeTransition } from './FadeTransition';\nexport { default as SlideTransition } from './SlideTransition';\n"],"mappings":"SAASA,OAAO,IAAIC,cAAc;AAAA,SACzBD,OAAO,IAAIE,eAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/components",
|
|
3
|
-
"version": "0.70.
|
|
3
|
+
"version": "0.70.1-alpha-picker-table.35+79b80350",
|
|
4
4
|
"description": "Deephaven React component library",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@adobe/react-spectrum": "^3.34.1",
|
|
28
|
-
"@deephaven/icons": "^0.70.
|
|
29
|
-
"@deephaven/log": "^0.70.
|
|
30
|
-
"@deephaven/react-hooks": "^0.70.
|
|
31
|
-
"@deephaven/utils": "^0.70.
|
|
28
|
+
"@deephaven/icons": "^0.70.1-alpha-picker-table.35+79b80350",
|
|
29
|
+
"@deephaven/log": "^0.70.1-alpha-picker-table.35+79b80350",
|
|
30
|
+
"@deephaven/react-hooks": "^0.70.1-alpha-picker-table.35+79b80350",
|
|
31
|
+
"@deephaven/utils": "^0.70.1-alpha-picker-table.35+79b80350",
|
|
32
32
|
"@fortawesome/fontawesome-svg-core": "^6.2.1",
|
|
33
33
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
34
34
|
"@react-spectrum/theme-default": "^3.5.1",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"react-dom": ">=16.8.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@deephaven/mocks": "^0.70.
|
|
57
|
+
"@deephaven/mocks": "^0.70.1-alpha-picker-table.35+79b80350"
|
|
58
58
|
},
|
|
59
59
|
"files": [
|
|
60
60
|
"dist",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"publishConfig": {
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "79b8035064f6733a37186a6b11d91bb9bfaa7e3c"
|
|
72
72
|
}
|