@deephaven/iris-grid 1.7.2-react-18-alpha.3 → 1.8.0
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/ColumnHeaderGroup.d.ts +6 -0
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js +9 -0
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/IrisGrid.d.ts +8 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -2
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +4 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +2 -2
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +30 -12
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +283 -48
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +10 -6
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -17
|
@@ -17,7 +17,6 @@ export default function VisibilityOrderingGroup(props) {
|
|
|
17
17
|
var {
|
|
18
18
|
isNew
|
|
19
19
|
} = group;
|
|
20
|
-
var groupRef = useRef(group);
|
|
21
20
|
var nameInputRef = useRef(null);
|
|
22
21
|
var colorInputRef = useRef(null);
|
|
23
22
|
var [isColorInputOpen, setIsColorInputOpen] = useState(false);
|
|
@@ -37,14 +36,6 @@ export default function VisibilityOrderingGroup(props) {
|
|
|
37
36
|
nameInputRef.current.select();
|
|
38
37
|
}
|
|
39
38
|
}, [isEditing]);
|
|
40
|
-
useEffect(function deleteNewOnUnmount() {
|
|
41
|
-
return () => {
|
|
42
|
-
if (groupRef.current.isNew) {
|
|
43
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
-
onDelete(groupRef.current);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
}, [onDelete]);
|
|
48
39
|
useEffect(function openColorInput() {
|
|
49
40
|
if (isColorInputOpen) {
|
|
50
41
|
var _colorInputRef$curren, _colorInputRef$curren2;
|
|
@@ -71,7 +62,10 @@ export default function VisibilityOrderingGroup(props) {
|
|
|
71
62
|
}, [isColorInputOpen, colorInputBlurHandler]);
|
|
72
63
|
var handleConfirm = () => {
|
|
73
64
|
if (isValid) {
|
|
74
|
-
|
|
65
|
+
// Don't trigger change if the value is the same
|
|
66
|
+
if (group.name !== name) {
|
|
67
|
+
onNameChange(group, name);
|
|
68
|
+
}
|
|
75
69
|
setIsEditing(false);
|
|
76
70
|
}
|
|
77
71
|
};
|
|
@@ -186,7 +180,6 @@ export default function VisibilityOrderingGroup(props) {
|
|
|
186
180
|
border: 0
|
|
187
181
|
},
|
|
188
182
|
onChange: e => {
|
|
189
|
-
group.color = e.target.value;
|
|
190
183
|
onColorChange(group, e.target.value);
|
|
191
184
|
}
|
|
192
185
|
}), /*#__PURE__*/_jsxs("datalist", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityOrderingGroup.js","names":["React","useEffect","useRef","useState","useCallback","classNames","FontAwesomeIcon","Button","ThemeExport","dhSquareFilled","vsCheck","vsChromeClose","vsEdit","vsPaintcan","vsTrash","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VisibilityOrderingGroup","props","_group$color","group","onDelete","onColorChange","onNameChange","validateName","isNew","groupRef","nameInputRef","colorInputRef","isColorInputOpen","setIsColorInputOpen","name","setName","isEditing","setIsEditing","shouldValidate","setShouldValidate","nameValidationError","isValid","colorInputBlurHandler","focusEditInput","current","focus","select","deleteNewOnUnmount","openColorInput","_colorInputRef$curren","_colorInputRef$curren2","click","window","addEventListener","removeEventListener","handleConfirm","handleCancel","handleEditKeyDown","e","key","stopPropagation","children","className","ref","value","placeholder","onChange","target","onKeyDown","onBlur","kind","icon","tooltip","onClick","color","undefined","white","transform","val","type","list","style","visibility","width","height","padding","border","id","primary","foreground","green","yellow","orange","red","purple","blue"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ThemeExport } from '@deephaven/components';\nimport {\n dhSquareFilled,\n vsCheck,\n vsChromeClose,\n vsEdit,\n vsPaintcan,\n vsTrash,\n} from '@deephaven/icons';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport './VisibilityOrderingGroup.scss';\n\ninterface VisibilityOrderingGroupProps {\n group: ColumnHeaderGroup;\n onDelete: (group: ColumnHeaderGroup) => void;\n onColorChange: (group: ColumnHeaderGroup, color: string | undefined) => void;\n onNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateName: (name: string) => string;\n}\n\nexport default function VisibilityOrderingGroup(\n props: VisibilityOrderingGroupProps\n): JSX.Element {\n const { group, onDelete, onColorChange, onNameChange, validateName } = props;\n const { isNew } = group;\n const groupRef = useRef(group);\n const nameInputRef = useRef<HTMLInputElement>(null);\n const colorInputRef = useRef<HTMLInputElement>(null);\n const [isColorInputOpen, setIsColorInputOpen] = useState(false);\n const [name, setName] = useState(isNew ? '' : group.name);\n const [isEditing, setIsEditing] = useState(isNew);\n const [shouldValidate, setShouldValidate] = useState(false);\n const nameValidationError = name !== group.name ? validateName(name) : '';\n const isValid = (isNew && !shouldValidate) || nameValidationError === '';\n const colorInputBlurHandler = useCallback(() => {\n setIsColorInputOpen(false);\n }, []);\n\n useEffect(\n function focusEditInput() {\n if (isEditing && nameInputRef.current) {\n // This is solely b/c RTL doesn't count select as focusing the element\n // Might be fixed in v13+ of RTL\n nameInputRef.current.focus();\n nameInputRef.current.select();\n }\n },\n [isEditing]\n );\n\n useEffect(\n function deleteNewOnUnmount() {\n return () => {\n if (groupRef.current.isNew) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n onDelete(groupRef.current);\n }\n };\n },\n [onDelete]\n );\n\n useEffect(\n function openColorInput() {\n if (isColorInputOpen) {\n colorInputRef.current?.click();\n // Mostly for testing. Chrome seems to not give the hidden input focus\n // Really would only affect screen readers\n colorInputRef.current?.focus();\n\n /**\n * Adding this event handler is for Firefox on Mac\n * There seems to be buggy behavior when multiple color inputs are on the same page\n * Clicking between the inputs without closing the previous causes a bad state\n * The user gets to a point where they can't open most of the pickers\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1618418\n * https://bugzilla.mozilla.org/show_bug.cgi?id=975468\n * Instead, we remove the color input when any focus is returned to the window\n * This causes Firefox on Mac to mostly operate correctly\n * Firefox seems to ignore the first click back into the window and emit no event\n * So opening a color picker when another is open requires 2 clicks in Firefox\n */\n window.addEventListener('click', colorInputBlurHandler, true);\n }\n\n return () =>\n window.removeEventListener('click', colorInputBlurHandler, true);\n },\n [isColorInputOpen, colorInputBlurHandler]\n );\n\n const handleConfirm = (): void => {\n if (isValid) {\n onNameChange(group, name);\n setIsEditing(false);\n }\n };\n\n const handleCancel = (): void => {\n if (isNew) {\n onDelete(group);\n return;\n }\n setName(group.name);\n setIsEditing(false);\n };\n\n const handleEditKeyDown = (e: React.KeyboardEvent): void => {\n setShouldValidate(true);\n if (e.key === 'Enter') {\n e.stopPropagation();\n handleConfirm();\n }\n\n if (e.key === ' ') {\n e.stopPropagation();\n }\n\n if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n if (isEditing) {\n return (\n <>\n <div className=\"editing-container\">\n <input\n ref={nameInputRef}\n className={classNames('form-control', {\n 'is-invalid': !isValid,\n })}\n value={name}\n placeholder=\"Group Name\"\n onChange={e => setName(e.target.value)}\n onKeyDown={handleEditKeyDown}\n onBlur={() => setShouldValidate(true)}\n />\n <Button\n kind=\"ghost\"\n icon={vsCheck}\n tooltip=\"Confirm\"\n onClick={handleConfirm}\n />\n <Button\n kind=\"ghost\"\n icon={vsChromeClose}\n tooltip=\"Cancel\"\n onClick={handleCancel}\n />\n </div>\n {!isValid && (\n <p className=\"mb-0 validate-label-error text-danger\">\n {nameValidationError}\n </p>\n )}\n </>\n );\n }\n\n return (\n <div className=\"group-name-wrapper\">\n <span className=\"column-name\">{name}</span>\n <Button\n className=\"p-1 mx-1\"\n kind=\"ghost\"\n icon={vsEdit}\n tooltip=\"Edit\"\n onClick={() => {\n setIsEditing(true);\n }}\n />\n\n <span className=\"right-buttons\">\n <Button\n kind=\"ghost\"\n icon={vsTrash}\n tooltip=\"Delete group\"\n onClick={() => onDelete(group)}\n />\n <Button\n kind=\"ghost\"\n className=\"color-swatch mr-1\"\n icon={\n group.color !== undefined ? (\n <span className=\"fa-layers\">\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={ThemeExport.white}\n transform=\"down-1\"\n />\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={group.color}\n transform=\"shrink-2 down-1\"\n />\n </span>\n ) : (\n vsPaintcan\n )\n }\n tooltip=\"Set color\"\n /**\n * Toggle to close the picker on Chrome\n * Prevents Firefox on Mac from getting into a stuck state\n * Does not close on Firefox b/c the picker stays open when the element is removed\n */\n onClick={() => setIsColorInputOpen(val => !val)}\n />\n {isColorInputOpen && (\n <>\n <input\n aria-label=\"Color input\"\n ref={colorInputRef}\n type=\"color\"\n list=\"presetColors\"\n value={group.color ?? ThemeExport['content-bg']}\n style={{\n visibility: 'hidden',\n width: 0,\n height: 0,\n padding: 0,\n border: 0,\n }}\n onChange={e => {\n group.color = e.target.value;\n onColorChange(group, e.target.value);\n }}\n />\n <datalist id=\"presetColors\">\n <option>{ThemeExport['content-bg']}</option>\n <option>{ThemeExport.primary}</option>\n <option>{ThemeExport.foreground}</option>\n <option>{ThemeExport.green}</option>\n <option>{ThemeExport.yellow}</option>\n <option>{ThemeExport.orange}</option>\n <option>{ThemeExport.red}</option>\n <option>{ThemeExport.purple}</option>\n <option>{ThemeExport.blue}</option>\n <option>{ThemeExport['gray-400']}</option>\n </datalist>\n </>\n )}\n </span>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VisibilityOrderingGroup.js","names":["React","useEffect","useRef","useState","useCallback","classNames","FontAwesomeIcon","Button","ThemeExport","dhSquareFilled","vsCheck","vsChromeClose","vsEdit","vsPaintcan","vsTrash","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VisibilityOrderingGroup","props","_group$color","group","onDelete","onColorChange","onNameChange","validateName","isNew","nameInputRef","colorInputRef","isColorInputOpen","setIsColorInputOpen","name","setName","isEditing","setIsEditing","shouldValidate","setShouldValidate","nameValidationError","isValid","colorInputBlurHandler","focusEditInput","current","focus","select","openColorInput","_colorInputRef$curren","_colorInputRef$curren2","click","window","addEventListener","removeEventListener","handleConfirm","handleCancel","handleEditKeyDown","e","key","stopPropagation","children","className","ref","value","placeholder","onChange","target","onKeyDown","onBlur","kind","icon","tooltip","onClick","color","undefined","white","transform","val","type","list","style","visibility","width","height","padding","border","id","primary","foreground","green","yellow","orange","red","purple","blue"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ThemeExport } from '@deephaven/components';\nimport {\n dhSquareFilled,\n vsCheck,\n vsChromeClose,\n vsEdit,\n vsPaintcan,\n vsTrash,\n} from '@deephaven/icons';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport './VisibilityOrderingGroup.scss';\n\ninterface VisibilityOrderingGroupProps {\n group: ColumnHeaderGroup;\n onDelete: (group: ColumnHeaderGroup) => void;\n onColorChange: (group: ColumnHeaderGroup, color: string | undefined) => void;\n onNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateName: (name: string) => string;\n}\n\nexport default function VisibilityOrderingGroup(\n props: VisibilityOrderingGroupProps\n): JSX.Element {\n const { group, onDelete, onColorChange, onNameChange, validateName } = props;\n const { isNew } = group;\n const nameInputRef = useRef<HTMLInputElement>(null);\n const colorInputRef = useRef<HTMLInputElement>(null);\n const [isColorInputOpen, setIsColorInputOpen] = useState(false);\n const [name, setName] = useState(isNew ? '' : group.name);\n const [isEditing, setIsEditing] = useState(isNew);\n const [shouldValidate, setShouldValidate] = useState(false);\n const nameValidationError = name !== group.name ? validateName(name) : '';\n const isValid = (isNew && !shouldValidate) || nameValidationError === '';\n const colorInputBlurHandler = useCallback(() => {\n setIsColorInputOpen(false);\n }, []);\n\n useEffect(\n function focusEditInput() {\n if (isEditing && nameInputRef.current) {\n // This is solely b/c RTL doesn't count select as focusing the element\n // Might be fixed in v13+ of RTL\n nameInputRef.current.focus();\n nameInputRef.current.select();\n }\n },\n [isEditing]\n );\n\n useEffect(\n function openColorInput() {\n if (isColorInputOpen) {\n colorInputRef.current?.click();\n // Mostly for testing. Chrome seems to not give the hidden input focus\n // Really would only affect screen readers\n colorInputRef.current?.focus();\n\n /**\n * Adding this event handler is for Firefox on Mac\n * There seems to be buggy behavior when multiple color inputs are on the same page\n * Clicking between the inputs without closing the previous causes a bad state\n * The user gets to a point where they can't open most of the pickers\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1618418\n * https://bugzilla.mozilla.org/show_bug.cgi?id=975468\n * Instead, we remove the color input when any focus is returned to the window\n * This causes Firefox on Mac to mostly operate correctly\n * Firefox seems to ignore the first click back into the window and emit no event\n * So opening a color picker when another is open requires 2 clicks in Firefox\n */\n window.addEventListener('click', colorInputBlurHandler, true);\n }\n\n return () =>\n window.removeEventListener('click', colorInputBlurHandler, true);\n },\n [isColorInputOpen, colorInputBlurHandler]\n );\n\n const handleConfirm = (): void => {\n if (isValid) {\n // Don't trigger change if the value is the same\n if (group.name !== name) {\n onNameChange(group, name);\n }\n setIsEditing(false);\n }\n };\n\n const handleCancel = (): void => {\n if (isNew) {\n onDelete(group);\n return;\n }\n setName(group.name);\n setIsEditing(false);\n };\n\n const handleEditKeyDown = (e: React.KeyboardEvent): void => {\n setShouldValidate(true);\n if (e.key === 'Enter') {\n e.stopPropagation();\n handleConfirm();\n }\n\n if (e.key === ' ') {\n e.stopPropagation();\n }\n\n if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n if (isEditing) {\n return (\n <>\n <div className=\"editing-container\">\n <input\n ref={nameInputRef}\n className={classNames('form-control', {\n 'is-invalid': !isValid,\n })}\n value={name}\n placeholder=\"Group Name\"\n onChange={e => setName(e.target.value)}\n onKeyDown={handleEditKeyDown}\n onBlur={() => setShouldValidate(true)}\n />\n <Button\n kind=\"ghost\"\n icon={vsCheck}\n tooltip=\"Confirm\"\n onClick={handleConfirm}\n />\n <Button\n kind=\"ghost\"\n icon={vsChromeClose}\n tooltip=\"Cancel\"\n onClick={handleCancel}\n />\n </div>\n {!isValid && (\n <p className=\"mb-0 validate-label-error text-danger\">\n {nameValidationError}\n </p>\n )}\n </>\n );\n }\n\n return (\n <div className=\"group-name-wrapper\">\n <span className=\"column-name\">{name}</span>\n <Button\n className=\"p-1 mx-1\"\n kind=\"ghost\"\n icon={vsEdit}\n tooltip=\"Edit\"\n onClick={() => {\n setIsEditing(true);\n }}\n />\n\n <span className=\"right-buttons\">\n <Button\n kind=\"ghost\"\n icon={vsTrash}\n tooltip=\"Delete group\"\n onClick={() => onDelete(group)}\n />\n <Button\n kind=\"ghost\"\n className=\"color-swatch mr-1\"\n icon={\n group.color !== undefined ? (\n <span className=\"fa-layers\">\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={ThemeExport.white}\n transform=\"down-1\"\n />\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={group.color}\n transform=\"shrink-2 down-1\"\n />\n </span>\n ) : (\n vsPaintcan\n )\n }\n tooltip=\"Set color\"\n /**\n * Toggle to close the picker on Chrome\n * Prevents Firefox on Mac from getting into a stuck state\n * Does not close on Firefox b/c the picker stays open when the element is removed\n */\n onClick={() => setIsColorInputOpen(val => !val)}\n />\n {isColorInputOpen && (\n <>\n <input\n aria-label=\"Color input\"\n ref={colorInputRef}\n type=\"color\"\n list=\"presetColors\"\n value={group.color ?? ThemeExport['content-bg']}\n style={{\n visibility: 'hidden',\n width: 0,\n height: 0,\n padding: 0,\n border: 0,\n }}\n onChange={e => {\n onColorChange(group, e.target.value);\n }}\n />\n <datalist id=\"presetColors\">\n <option>{ThemeExport['content-bg']}</option>\n <option>{ThemeExport.primary}</option>\n <option>{ThemeExport.foreground}</option>\n <option>{ThemeExport.green}</option>\n <option>{ThemeExport.yellow}</option>\n <option>{ThemeExport.orange}</option>\n <option>{ThemeExport.red}</option>\n <option>{ThemeExport.purple}</option>\n <option>{ThemeExport.blue}</option>\n <option>{ThemeExport['gray-400']}</option>\n </datalist>\n </>\n )}\n </span>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityOrderingItem.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,yBAAyB,CAAC;IAChC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,kBAAkB,EAAE,CAClB,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,KACtB,IAAI,CAAC;IACV,iBAAiB,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AAMF,QAAA,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"VisibilityOrderingItem.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,yBAAyB,CAAC;IAChC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,kBAAkB,EAAE,CAClB,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,KACtB,IAAI,CAAC;IACV,iBAAiB,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AAMF,QAAA,MAAM,sBAAsB,oGAqF1B,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
|
|
@@ -53,7 +53,8 @@ var VisibilityOrderingItem = /*#__PURE__*/forwardRef(function VisibilityOrdering
|
|
|
53
53
|
'two-dragged': childCount === 2,
|
|
54
54
|
'multiple-dragged': childCount > 2
|
|
55
55
|
}),
|
|
56
|
-
onClick: handleClick
|
|
56
|
+
onClick: handleClick,
|
|
57
|
+
"data-index": item.index
|
|
57
58
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
58
59
|
}, handleProps), {}, {
|
|
59
60
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityOrderingItem.js","names":["React","forwardRef","useCallback","useRef","classNames","FontAwesomeIcon","dhEye","dhEyeSlash","vsGripper","Button","Tooltip","VisibilityOrderingGroup","jsx","_jsx","jsxs","_jsxs","emptyOnClick","VisibilityOrderingItem","props","ref","value","clone","childCount","item","onVisibilityChange","onClick","onGroupDelete","onGroupColorChange","onGroupNameChange","validateGroupName","handleProps","group","modelIndex","isVisible","data","buttonRef","handleVisibilityChange","e","buttons","_buttonRef$current","flat","current","focus","handleClick","event","_objectSpread","className","isSelected","selected","children","kind","onMouseDown","onMouseEnter","icon","tooltip","onDelete","onColorChange","onNameChange","validateName"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useRef } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhEye, dhEyeSlash, vsGripper } from '@deephaven/icons';\nimport { Button, Tooltip } from '@deephaven/components';\nimport VisibilityOrderingGroup from './VisibilityOrderingGroup';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\n\ntype VisibilityOrderingItemProps = {\n value: string;\n clone: boolean;\n childCount: number;\n item: FlattenedIrisGridTreeItem;\n onVisibilityChange: (modelIndexes: number[], isVisible: boolean) => void;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onGroupDelete: (group: ColumnHeaderGroup) => void;\n onGroupColorChange: (\n group: ColumnHeaderGroup,\n color: string | undefined\n ) => void;\n onGroupNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateGroupName: (name: string) => string;\n handleProps?: Record<string, unknown>;\n};\n\nfunction emptyOnClick(): void {\n // no-op\n}\n\nconst VisibilityOrderingItem = forwardRef<\n HTMLDivElement,\n VisibilityOrderingItemProps\n>(function VisibilityOrderingItem(props, ref) {\n const {\n value,\n clone,\n childCount,\n item,\n onVisibilityChange,\n onClick,\n onGroupDelete,\n onGroupColorChange,\n onGroupNameChange,\n validateGroupName,\n handleProps,\n } = props;\n const { group, modelIndex, isVisible } = item.data;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleVisibilityChange = useCallback(\n (e: React.MouseEvent) => {\n if (e.buttons === 1) {\n onVisibilityChange([modelIndex].flat(), !isVisible);\n buttonRef.current?.focus();\n }\n },\n [onVisibilityChange, modelIndex, isVisible]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n 'two-dragged': childCount === 2,\n 'multiple-dragged': childCount > 2,\n })}\n onClick={handleClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n <Button\n ref={buttonRef}\n kind=\"ghost\"\n className=\"px-1\"\n // We PropType validate onClick for Button\n onClick={emptyOnClick}\n onMouseDown={handleVisibilityChange}\n onMouseEnter={handleVisibilityChange}\n icon={isVisible ? dhEye : dhEyeSlash}\n tooltip=\"Toggle visibility\"\n />\n <span className={classNames('column-name', group && 'column-group')}>\n {/* Display a normal item if this is the drag overlay clone, even if it's a group */}\n {group && !clone ? (\n <VisibilityOrderingGroup\n group={group}\n onDelete={onGroupDelete}\n onColorChange={onGroupColorChange}\n onNameChange={onGroupNameChange}\n validateName={validateGroupName}\n />\n ) : (\n value\n )}\n </span>\n <div>\n {clone && childCount > 1 && (\n <span className=\"item-count\">{childCount}</span>\n )}\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n );\n});\n\nexport default VisibilityOrderingItem;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAC9D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,KAAK,EAAEC,UAAU,EAAEC,SAAS,QAAQ,kBAAkB;AAC/D,SAASC,MAAM,EAAEC,OAAO,QAAQ,uBAAuB;AAAC,OACjDC,uBAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAqB9B,SAASC,YAAYA,CAAA,EAAS;EAC5B;AAAA;AAGF,IAAMC,sBAAsB,gBAAGhB,UAAU,CAGvC,SAASgB,sBAAsBA,CAACC,KAAK,EAAEC,GAAG,EAAE;EAC5C,IAAM;IACJC,KAAK;IACLC,KAAK;IACLC,UAAU;IACVC,IAAI;IACJC,kBAAkB;IAClBC,OAAO;IACPC,aAAa;IACbC,kBAAkB;IAClBC,iBAAiB;IACjBC,iBAAiB;IACjBC;EACF,CAAC,GAAGZ,KAAK;EACT,IAAM;IAAEa,KAAK;IAAEC,UAAU;IAAEC;EAAU,CAAC,GAAGV,IAAI,CAACW,IAAI;EAClD,IAAMC,SAAS,GAAGhC,MAAM,CAAoB,IAAI,CAAC;EAEjD,IAAMiC,sBAAsB,GAAGlC,WAAW,CACvCmC,CAAmB,IAAK;IACvB,IAAIA,CAAC,CAACC,OAAO,KAAK,CAAC,EAAE;MAAA,IAAAC,kBAAA;MACnBf,kBAAkB,CAAC,CAACQ,UAAU,CAAC,CAACQ,IAAI,CAAC,CAAC,EAAE,CAACP,SAAS,CAAC;MACnD,CAAAM,kBAAA,GAAAJ,SAAS,CAACM,OAAO,cAAAF,kBAAA,eAAjBA,kBAAA,CAAmBG,KAAK,CAAC,CAAC;IAC5B;EACF,CAAC,EACD,CAAClB,kBAAkB,EAAEQ,UAAU,EAAEC,SAAS,CAC5C,CAAC;EAED,IAAMU,WAAW,GAAGzC,WAAW,CAC5B0C,KAAoC,IAAK;IACxCnB,OAAO,CAACL,KAAK,EAAEwB,KAAK,CAAC;EACvB,CAAC,EACD,CAACnB,OAAO,EAAEL,KAAK,CACjB,CAAC;EAED;IAAA;IACE;IACAL,KAAA,QAAA8B,aAAA,CAAAA,aAAA;MACE1B,GAAG,EAAEA,GAAI;MACT2B,SAAS,EAAE1C,UAAU,CAAC,WAAW,EAAE;QACjC2C,UAAU,EAAExB,IAAI,CAACyB,QAAQ;QACzB,aAAa,EAAE1B,UAAU,KAAK,CAAC;QAC/B,kBAAkB,EAAEA,UAAU,GAAG;MACnC,CAAC,CAAE;MACHG,OAAO,EAAEkB;
|
|
1
|
+
{"version":3,"file":"VisibilityOrderingItem.js","names":["React","forwardRef","useCallback","useRef","classNames","FontAwesomeIcon","dhEye","dhEyeSlash","vsGripper","Button","Tooltip","VisibilityOrderingGroup","jsx","_jsx","jsxs","_jsxs","emptyOnClick","VisibilityOrderingItem","props","ref","value","clone","childCount","item","onVisibilityChange","onClick","onGroupDelete","onGroupColorChange","onGroupNameChange","validateGroupName","handleProps","group","modelIndex","isVisible","data","buttonRef","handleVisibilityChange","e","buttons","_buttonRef$current","flat","current","focus","handleClick","event","_objectSpread","className","isSelected","selected","index","children","kind","onMouseDown","onMouseEnter","icon","tooltip","onDelete","onColorChange","onNameChange","validateName"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useRef } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhEye, dhEyeSlash, vsGripper } from '@deephaven/icons';\nimport { Button, Tooltip } from '@deephaven/components';\nimport VisibilityOrderingGroup from './VisibilityOrderingGroup';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\n\ntype VisibilityOrderingItemProps = {\n value: string;\n clone: boolean;\n childCount: number;\n item: FlattenedIrisGridTreeItem;\n onVisibilityChange: (modelIndexes: number[], isVisible: boolean) => void;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onGroupDelete: (group: ColumnHeaderGroup) => void;\n onGroupColorChange: (\n group: ColumnHeaderGroup,\n color: string | undefined\n ) => void;\n onGroupNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateGroupName: (name: string) => string;\n handleProps?: Record<string, unknown>;\n};\n\nfunction emptyOnClick(): void {\n // no-op\n}\n\nconst VisibilityOrderingItem = forwardRef<\n HTMLDivElement,\n VisibilityOrderingItemProps\n>(function VisibilityOrderingItem(props, ref) {\n const {\n value,\n clone,\n childCount,\n item,\n onVisibilityChange,\n onClick,\n onGroupDelete,\n onGroupColorChange,\n onGroupNameChange,\n validateGroupName,\n handleProps,\n } = props;\n const { group, modelIndex, isVisible } = item.data;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleVisibilityChange = useCallback(\n (e: React.MouseEvent) => {\n if (e.buttons === 1) {\n onVisibilityChange([modelIndex].flat(), !isVisible);\n buttonRef.current?.focus();\n }\n },\n [onVisibilityChange, modelIndex, isVisible]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n 'two-dragged': childCount === 2,\n 'multiple-dragged': childCount > 2,\n })}\n onClick={handleClick}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n <Button\n ref={buttonRef}\n kind=\"ghost\"\n className=\"px-1\"\n // We PropType validate onClick for Button\n onClick={emptyOnClick}\n onMouseDown={handleVisibilityChange}\n onMouseEnter={handleVisibilityChange}\n icon={isVisible ? dhEye : dhEyeSlash}\n tooltip=\"Toggle visibility\"\n />\n <span className={classNames('column-name', group && 'column-group')}>\n {/* Display a normal item if this is the drag overlay clone, even if it's a group */}\n {group && !clone ? (\n <VisibilityOrderingGroup\n group={group}\n onDelete={onGroupDelete}\n onColorChange={onGroupColorChange}\n onNameChange={onGroupNameChange}\n validateName={validateGroupName}\n />\n ) : (\n value\n )}\n </span>\n <div>\n {clone && childCount > 1 && (\n <span className=\"item-count\">{childCount}</span>\n )}\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n );\n});\n\nexport default VisibilityOrderingItem;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ interface IrisGridTreeItemData {
|
|
|
10
10
|
}
|
|
11
11
|
export type IrisGridTreeItem = TreeItem<IrisGridTreeItemData>;
|
|
12
12
|
export type FlattenedIrisGridTreeItem = FlattenedItem<IrisGridTreeItemData>;
|
|
13
|
-
export declare function getTreeItems(columns: readonly dh.Column[], movedColumns: readonly MoveOperation[], columnHeaderGroups: readonly ColumnHeaderGroup[], hiddenColumns: readonly ModelIndex[], selectedItems: readonly string[]): IrisGridTreeItem[];
|
|
13
|
+
export declare function getTreeItems(columns: readonly dh.Column[], movedColumns: readonly MoveOperation[], columnHeaderGroups: readonly ColumnHeaderGroup[], hiddenColumns: readonly ModelIndex[], selectedItems: readonly string[], showHiddenColumns: boolean): IrisGridTreeItem[];
|
|
14
14
|
/**
|
|
15
15
|
* Gets the projected drop position and depth of the dragged item
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAajB,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAajB,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAsE5E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAC7B,YAAY,EAAE,SAAS,aAAa,EAAE,EACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,EAChD,aAAa,EAAE,SAAS,UAAU,EAAE,EACpC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,iBAAiB,EAAE,OAAO,GACzB,gBAAgB,EAAE,CAwCpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GACvB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CA4CA;AAiDD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,CAAC,EAAE,CAMpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,SAAS,CAmBtB;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EACzB,GAAG,EAAE,MAAM,EAAE,GACZ,aAAa,CAAC,CAAC,CAAC,EAAE,CAapB"}
|
|
@@ -16,7 +16,7 @@ import { isFlattenedTreeItem } from "./types.js";
|
|
|
16
16
|
function getDragDepth(offset, indentationWidth) {
|
|
17
17
|
return Math.round(offset / indentationWidth);
|
|
18
18
|
}
|
|
19
|
-
function getTreeItem(columns, movedColumns, columnHeaderGroupMap, name, hiddenColumnSet, selectedItems) {
|
|
19
|
+
function getTreeItem(columns, movedColumns, columnHeaderGroupMap, name, hiddenColumnSet, selectedItems, showHiddenColumns) {
|
|
20
20
|
var modelIndex = columns.findIndex(col => col.name === name);
|
|
21
21
|
if (modelIndex === -1) {
|
|
22
22
|
var group = columnHeaderGroupMap.get(name);
|
|
@@ -27,7 +27,7 @@ function getTreeItem(columns, movedColumns, columnHeaderGroupMap, name, hiddenCo
|
|
|
27
27
|
return {
|
|
28
28
|
id: name,
|
|
29
29
|
selected: selectedItems.has(name),
|
|
30
|
-
children: group.children.map(childName => getTreeItem(columns, movedColumns, columnHeaderGroupMap, childName, hiddenColumnSet, selectedItems)).sort((a, b) => {
|
|
30
|
+
children: group.children.filter((_, i) => showHiddenColumns || !hiddenColumnSet.has(group.childIndexes[i])).map(childName => getTreeItem(columns, movedColumns, columnHeaderGroupMap, childName, hiddenColumnSet, selectedItems, showHiddenColumns)).sort((a, b) => {
|
|
31
31
|
var aVal = Array.isArray(a.data.visibleIndex) ? a.data.visibleIndex[0] : a.data.visibleIndex;
|
|
32
32
|
var bVal = Array.isArray(b.data.visibleIndex) ? b.data.visibleIndex[0] : b.data.visibleIndex;
|
|
33
33
|
return aVal - bVal;
|
|
@@ -51,7 +51,7 @@ function getTreeItem(columns, movedColumns, columnHeaderGroupMap, name, hiddenCo
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
export function getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedItems) {
|
|
54
|
+
export function getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedItems, showHiddenColumns) {
|
|
55
55
|
var items = [];
|
|
56
56
|
var selectedItemsSet = new Set(selectedItems);
|
|
57
57
|
var groupMap = new Map(columnHeaderGroups.map(group => [group.name, group]));
|
|
@@ -69,7 +69,7 @@ export function getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenCo
|
|
|
69
69
|
while (group !== undefined && group.parent !== undefined) {
|
|
70
70
|
group = groupMap.get(group.parent);
|
|
71
71
|
}
|
|
72
|
-
var item = getTreeItem(columns, movedColumns, groupMap, group ? group.name : columnName, hiddenColumnSet, selectedItemsSet);
|
|
72
|
+
var item = getTreeItem(columns, movedColumns, groupMap, group ? group.name : columnName, hiddenColumnSet, selectedItemsSet, showHiddenColumns);
|
|
73
73
|
items.push(item);
|
|
74
74
|
if (Array.isArray(item.data.visibleIndex)) {
|
|
75
75
|
visibleIndex += item.data.visibleIndex[1] - item.data.visibleIndex[0] + 1;
|
|
@@ -175,11 +175,15 @@ function getMinDepth(_ref5) {
|
|
|
175
175
|
function flatten(items) {
|
|
176
176
|
var parentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
177
177
|
var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
178
|
-
return items.reduce((acc, item
|
|
178
|
+
return items.reduce((acc, item) => [...acc, _objectSpread(_objectSpread({}, item), {}, {
|
|
179
179
|
parentId,
|
|
180
180
|
depth,
|
|
181
|
+
index: 0
|
|
182
|
+
}),
|
|
183
|
+
// Index will be recalculated after
|
|
184
|
+
...flatten(item.children, item.id, depth + 1)], []).map((item, index) => _objectSpread(_objectSpread({}, item), {}, {
|
|
181
185
|
index
|
|
182
|
-
})
|
|
186
|
+
})); // Recalculate indexes to be sequential
|
|
183
187
|
}
|
|
184
188
|
|
|
185
189
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["arrayMove","GridUtils","isFlattenedTreeItem","getDragDepth","offset","indentationWidth","Math","round","getTreeItem","columns","movedColumns","columnHeaderGroupMap","name","hiddenColumnSet","selectedItems","modelIndex","findIndex","col","group","get","Error","concat","modelIndexes","childIndexes","flat","id","selected","has","children","map","childName","sort","a","b","aVal","Array","isArray","data","visibleIndex","bVal","getVisibleRange","isVisible","some","index","getVisibleIndex","getTreeItems","columnHeaderGroups","hiddenColumns","items","selectedItemsSet","Set","groupMap","Map","_loop","getModelIndex","columnName","find","_ref","includes","undefined","parent","item","push","length","getProjection","activeId","overId","dragOffset","overItemIndex","_ref2","activeItemIndex","_ref3","activeItem","newItems","previousItem","nextItem","dragDepth","projectedDepth","depth","maxDepth","getMaxDepth","minDepth","getMinDepth","parentId","getParentId","_newItems$slice$rever","newParent","slice","reverse","_ref4","_previousItem$depth","_nextItem$depth","max","_ref5","flatten","arguments","reduce","acc","_objectSpread","flattenTree","every","findItemDeep","itemId","i","child","countChildren","count","_ref6","getChildCount","removeChildrenOf","ids","excludeParentIds","filter","add"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"sourcesContent":["import { arrayMove } from '@dnd-kit/sortable';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridUtils,\n type ModelIndex,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type ColumnHeaderGroup from '../../../ColumnHeaderGroup';\nimport {\n isFlattenedTreeItem,\n type ReadonlyTreeItems,\n type FlattenedItem,\n type TreeItem,\n} from './types';\n\n/**\n * Gets the depth of an item dragged with a given x-axis offset\n *\n * @param offset x-axis offset of the dragging item\n * @param indentationWidth Width of indentation for each depth\n * @returns The drag depth for the given offset\n */\nfunction getDragDepth(offset: number, indentationWidth: number): number {\n return Math.round(offset / indentationWidth);\n}\n\ninterface IrisGridTreeItemData {\n modelIndex: number | number[];\n visibleIndex: number | [number, number];\n isVisible: boolean;\n group?: ColumnHeaderGroup;\n}\n\nexport type IrisGridTreeItem = TreeItem<IrisGridTreeItemData>;\n\nexport type FlattenedIrisGridTreeItem = FlattenedItem<IrisGridTreeItemData>;\n\nfunction getTreeItem(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroupMap: Map<string, ColumnHeaderGroup>,\n name: string,\n hiddenColumnSet: Set<ModelIndex>,\n selectedItems: Set<string>\n): IrisGridTreeItem {\n const modelIndex = columns.findIndex(col => col.name === name);\n if (modelIndex === -1) {\n const group = columnHeaderGroupMap.get(name);\n\n if (group == null) {\n throw new Error(`Column or header group not found: ${name}`);\n }\n\n const modelIndexes = group.childIndexes.flat();\n\n return {\n id: name,\n selected: selectedItems.has(name),\n children: group.children\n .map(childName =>\n getTreeItem(\n columns,\n movedColumns,\n columnHeaderGroupMap,\n childName,\n hiddenColumnSet,\n selectedItems\n )\n )\n .sort((a, b) => {\n const aVal = Array.isArray(a.data.visibleIndex)\n ? a.data.visibleIndex[0]\n : a.data.visibleIndex;\n const bVal = Array.isArray(b.data.visibleIndex)\n ? b.data.visibleIndex[0]\n : b.data.visibleIndex;\n return aVal - bVal;\n }),\n data: {\n modelIndex: modelIndexes,\n visibleIndex: group.getVisibleRange(movedColumns),\n group,\n isVisible: modelIndexes.some(index => !hiddenColumnSet.has(index)),\n },\n };\n }\n\n return {\n id: name,\n children: [],\n selected: selectedItems.has(name),\n data: {\n modelIndex,\n visibleIndex: GridUtils.getVisibleIndex(modelIndex, movedColumns),\n isVisible: !hiddenColumnSet.has(modelIndex),\n },\n };\n}\n\nexport function getTreeItems(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n hiddenColumns: readonly ModelIndex[],\n selectedItems: readonly string[]\n): IrisGridTreeItem[] {\n const items: IrisGridTreeItem[] = [];\n const selectedItemsSet = new Set(selectedItems);\n const groupMap = new Map(\n columnHeaderGroups.map(group => [group.name, group])\n );\n const hiddenColumnSet = new Set(hiddenColumns);\n\n let visibleIndex = 0;\n while (visibleIndex < columns.length) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const columnName = columns[modelIndex].name;\n\n let group = columnHeaderGroups.find(({ children }) =>\n children.includes(columnName)\n );\n while (group !== undefined && group.parent !== undefined) {\n group = groupMap.get(group.parent);\n }\n\n const item = getTreeItem(\n columns,\n movedColumns,\n groupMap,\n group ? group.name : columnName,\n hiddenColumnSet,\n selectedItemsSet\n );\n\n items.push(item);\n\n if (Array.isArray(item.data.visibleIndex)) {\n visibleIndex += item.data.visibleIndex[1] - item.data.visibleIndex[0] + 1;\n } else {\n visibleIndex += 1;\n }\n }\n\n return items;\n}\n\n/**\n * Gets the projected drop position and depth of the dragged item\n *\n * @param items List of flattened items\n * @param activeId ID of the actively dragged item\n * @param overId ID of the item currently being dragged over\n * @param dragOffset The x-axis offset of the dragged item\n * @param indentationWidth The width for each level of the tree\n * @returns The projected position and depth if the item were to be dropped\n */\nexport function getProjection(\n items: FlattenedItem[],\n activeId: string,\n overId: string,\n dragOffset: number,\n indentationWidth: number\n): {\n depth: number;\n maxDepth: number;\n minDepth: number;\n parentId: string | null;\n} {\n const overItemIndex = items.findIndex(({ id }) => id === overId);\n const activeItemIndex = items.findIndex(({ id }) => id === activeId);\n const activeItem = items[activeItemIndex];\n const newItems = arrayMove(items, activeItemIndex, overItemIndex);\n const previousItem: FlattenedItem | undefined = newItems[overItemIndex - 1];\n const nextItem = newItems[overItemIndex + 1];\n const dragDepth = getDragDepth(dragOffset, indentationWidth);\n const projectedDepth = activeItem.depth + dragDepth;\n const maxDepth = getMaxDepth({\n previousItem,\n nextItem,\n });\n const minDepth = getMinDepth({ nextItem });\n let depth = projectedDepth;\n\n if (projectedDepth >= maxDepth) {\n depth = maxDepth;\n } else if (projectedDepth < minDepth) {\n depth = minDepth;\n }\n\n return { depth, maxDepth, minDepth, parentId: getParentId() };\n\n function getParentId(): string | null {\n if (depth === 0 || !previousItem) {\n return null;\n }\n\n if (depth === previousItem.depth) {\n return previousItem.parentId;\n }\n\n if (depth > previousItem.depth) {\n return previousItem.id;\n }\n\n const newParent = newItems\n .slice(0, overItemIndex)\n .reverse()\n .find(item => item.depth === depth)?.parentId;\n\n return newParent ?? null;\n }\n}\n\nfunction getMaxDepth({\n previousItem,\n nextItem,\n}: {\n previousItem?: FlattenedItem;\n nextItem?: FlattenedItem;\n}): number {\n return Math.max(previousItem?.depth ?? 0, nextItem?.depth ?? 0);\n}\n\nfunction getMinDepth({\n nextItem,\n}: {\n nextItem: FlattenedItem | undefined;\n}): number {\n if (nextItem) {\n return nextItem.depth;\n }\n\n return 0;\n}\n\n/**\n * Helper function to recursively flatten a tree\n *\n * @param items Items to flatten\n * @param parentId The current parentId of the items\n * @param depth The current depth of the items\n * @returns Flattened items\n */\nfunction flatten<T>(\n items: ReadonlyTreeItems<T>,\n parentId: string | null = null,\n depth = 0\n): FlattenedItem<T>[] {\n return items.reduce<FlattenedItem<T>[]>(\n (acc, item, index) => [\n ...acc,\n { ...item, parentId, depth, index },\n ...flatten(item.children, item.id, depth + 1),\n ],\n []\n );\n}\n\n/**\n * Flattens a tree into a 1D array given the items\n * @param items The tree items to flatten\n * @returns The flattened tree items list\n */\nexport function flattenTree<T>(\n items: ReadonlyTreeItems<T>\n): FlattenedItem<T>[] {\n // Should help prevent double flattening since FlattenedItems are valid TreeItems\n if (items.every(isFlattenedTreeItem)) {\n return [...items];\n }\n return flatten(items);\n}\n\n/**\n * Recursively checks for the item in a list of items.\n * The list does not have to be flattened prior to searching.\n *\n * @param items Items to search\n * @param itemId Item to find\n * @returns The item if found\n */\nexport function findItemDeep(\n items: ReadonlyTreeItems,\n itemId: string\n): TreeItem | undefined {\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { id, children } = item;\n\n if (id === itemId) {\n return item;\n }\n\n if (children.length) {\n const child = findItemDeep(children, itemId);\n\n if (child) {\n return child;\n }\n }\n }\n\n return undefined;\n}\n\nfunction countChildren(items: TreeItem[], count = 0): number {\n return items.reduce((acc, { children }) => {\n if (children.length) {\n return countChildren(children, acc + 1);\n }\n\n return acc + 1;\n }, count);\n}\n\nexport function getChildCount(items: ReadonlyTreeItems, id: string): number {\n const item = findItemDeep(items, id);\n\n return item ? countChildren(item.children) : 0;\n}\n\n/**\n * Removes the children of the list of parents from the list of flattened items\n *\n * @param items The flattened items to remove from\n * @param ids The parents we want to remove the children of\n * @returns The flattened items without the children of the parents\n */\nexport function removeChildrenOf<T>(\n items: FlattenedItem<T>[],\n ids: string[]\n): FlattenedItem<T>[] {\n const excludeParentIds = new Set(ids);\n\n return items.filter(item => {\n if (item.parentId != null && excludeParentIds.has(item.parentId)) {\n if (item.children.length) {\n excludeParentIds.add(item.id);\n }\n return false;\n }\n\n return true;\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utilities.js","names":["arrayMove","GridUtils","isFlattenedTreeItem","getDragDepth","offset","indentationWidth","Math","round","getTreeItem","columns","movedColumns","columnHeaderGroupMap","name","hiddenColumnSet","selectedItems","showHiddenColumns","modelIndex","findIndex","col","group","get","Error","concat","modelIndexes","childIndexes","flat","id","selected","has","children","filter","_","i","map","childName","sort","a","b","aVal","Array","isArray","data","visibleIndex","bVal","getVisibleRange","isVisible","some","index","getVisibleIndex","getTreeItems","columnHeaderGroups","hiddenColumns","items","selectedItemsSet","Set","groupMap","Map","_loop","getModelIndex","columnName","find","_ref","includes","undefined","parent","item","push","length","getProjection","activeId","overId","dragOffset","overItemIndex","_ref2","activeItemIndex","_ref3","activeItem","newItems","previousItem","nextItem","dragDepth","projectedDepth","depth","maxDepth","getMaxDepth","minDepth","getMinDepth","parentId","getParentId","_newItems$slice$rever","newParent","slice","reverse","_ref4","_previousItem$depth","_nextItem$depth","max","_ref5","flatten","arguments","reduce","acc","_objectSpread","flattenTree","every","findItemDeep","itemId","child","countChildren","count","_ref6","getChildCount","removeChildrenOf","ids","excludeParentIds","add"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"sourcesContent":["import { arrayMove } from '@dnd-kit/sortable';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridUtils,\n type ModelIndex,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type ColumnHeaderGroup from '../../../ColumnHeaderGroup';\nimport {\n isFlattenedTreeItem,\n type ReadonlyTreeItems,\n type FlattenedItem,\n type TreeItem,\n} from './types';\n\n/**\n * Gets the depth of an item dragged with a given x-axis offset\n *\n * @param offset x-axis offset of the dragging item\n * @param indentationWidth Width of indentation for each depth\n * @returns The drag depth for the given offset\n */\nfunction getDragDepth(offset: number, indentationWidth: number): number {\n return Math.round(offset / indentationWidth);\n}\n\ninterface IrisGridTreeItemData {\n modelIndex: number | number[];\n visibleIndex: number | [number, number];\n isVisible: boolean;\n group?: ColumnHeaderGroup;\n}\n\nexport type IrisGridTreeItem = TreeItem<IrisGridTreeItemData>;\n\nexport type FlattenedIrisGridTreeItem = FlattenedItem<IrisGridTreeItemData>;\n\nfunction getTreeItem(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroupMap: Map<string, ColumnHeaderGroup>,\n name: string,\n hiddenColumnSet: Set<ModelIndex>,\n selectedItems: Set<string>,\n showHiddenColumns: boolean\n): IrisGridTreeItem {\n const modelIndex = columns.findIndex(col => col.name === name);\n if (modelIndex === -1) {\n const group = columnHeaderGroupMap.get(name);\n\n if (group == null) {\n throw new Error(`Column or header group not found: ${name}`);\n }\n\n const modelIndexes = group.childIndexes.flat();\n\n return {\n id: name,\n selected: selectedItems.has(name),\n children: group.children\n .filter(\n (_, i) =>\n showHiddenColumns || !hiddenColumnSet.has(group.childIndexes[i])\n )\n .map(childName =>\n getTreeItem(\n columns,\n movedColumns,\n columnHeaderGroupMap,\n childName,\n hiddenColumnSet,\n selectedItems,\n showHiddenColumns\n )\n )\n .sort((a, b) => {\n const aVal = Array.isArray(a.data.visibleIndex)\n ? a.data.visibleIndex[0]\n : a.data.visibleIndex;\n const bVal = Array.isArray(b.data.visibleIndex)\n ? b.data.visibleIndex[0]\n : b.data.visibleIndex;\n return aVal - bVal;\n }),\n data: {\n modelIndex: modelIndexes,\n visibleIndex: group.getVisibleRange(movedColumns),\n group,\n isVisible: modelIndexes.some(index => !hiddenColumnSet.has(index)),\n },\n };\n }\n\n return {\n id: name,\n children: [],\n selected: selectedItems.has(name),\n data: {\n modelIndex,\n visibleIndex: GridUtils.getVisibleIndex(modelIndex, movedColumns),\n isVisible: !hiddenColumnSet.has(modelIndex),\n },\n };\n}\n\nexport function getTreeItems(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n hiddenColumns: readonly ModelIndex[],\n selectedItems: readonly string[],\n showHiddenColumns: boolean\n): IrisGridTreeItem[] {\n const items: IrisGridTreeItem[] = [];\n const selectedItemsSet = new Set(selectedItems);\n const groupMap = new Map(\n columnHeaderGroups.map(group => [group.name, group])\n );\n const hiddenColumnSet = new Set(hiddenColumns);\n\n let visibleIndex = 0;\n while (visibleIndex < columns.length) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const columnName = columns[modelIndex].name;\n\n let group = columnHeaderGroups.find(({ children }) =>\n children.includes(columnName)\n );\n while (group !== undefined && group.parent !== undefined) {\n group = groupMap.get(group.parent);\n }\n\n const item = getTreeItem(\n columns,\n movedColumns,\n groupMap,\n group ? group.name : columnName,\n hiddenColumnSet,\n selectedItemsSet,\n showHiddenColumns\n );\n\n items.push(item);\n\n if (Array.isArray(item.data.visibleIndex)) {\n visibleIndex += item.data.visibleIndex[1] - item.data.visibleIndex[0] + 1;\n } else {\n visibleIndex += 1;\n }\n }\n\n return items;\n}\n\n/**\n * Gets the projected drop position and depth of the dragged item\n *\n * @param items List of flattened items\n * @param activeId ID of the actively dragged item\n * @param overId ID of the item currently being dragged over\n * @param dragOffset The x-axis offset of the dragged item\n * @param indentationWidth The width for each level of the tree\n * @returns The projected position and depth if the item were to be dropped\n */\nexport function getProjection(\n items: FlattenedItem[],\n activeId: string,\n overId: string,\n dragOffset: number,\n indentationWidth: number\n): {\n depth: number;\n maxDepth: number;\n minDepth: number;\n parentId: string | null;\n} {\n const overItemIndex = items.findIndex(({ id }) => id === overId);\n const activeItemIndex = items.findIndex(({ id }) => id === activeId);\n const activeItem = items[activeItemIndex];\n const newItems = arrayMove(items, activeItemIndex, overItemIndex);\n const previousItem: FlattenedItem | undefined = newItems[overItemIndex - 1];\n const nextItem = newItems[overItemIndex + 1];\n const dragDepth = getDragDepth(dragOffset, indentationWidth);\n const projectedDepth = activeItem.depth + dragDepth;\n const maxDepth = getMaxDepth({\n previousItem,\n nextItem,\n });\n const minDepth = getMinDepth({ nextItem });\n let depth = projectedDepth;\n\n if (projectedDepth >= maxDepth) {\n depth = maxDepth;\n } else if (projectedDepth < minDepth) {\n depth = minDepth;\n }\n\n return { depth, maxDepth, minDepth, parentId: getParentId() };\n\n function getParentId(): string | null {\n if (depth === 0 || !previousItem) {\n return null;\n }\n\n if (depth === previousItem.depth) {\n return previousItem.parentId;\n }\n\n if (depth > previousItem.depth) {\n return previousItem.id;\n }\n\n const newParent = newItems\n .slice(0, overItemIndex)\n .reverse()\n .find(item => item.depth === depth)?.parentId;\n\n return newParent ?? null;\n }\n}\n\nfunction getMaxDepth({\n previousItem,\n nextItem,\n}: {\n previousItem?: FlattenedItem;\n nextItem?: FlattenedItem;\n}): number {\n return Math.max(previousItem?.depth ?? 0, nextItem?.depth ?? 0);\n}\n\nfunction getMinDepth({\n nextItem,\n}: {\n nextItem: FlattenedItem | undefined;\n}): number {\n if (nextItem) {\n return nextItem.depth;\n }\n\n return 0;\n}\n\n/**\n * Helper function to recursively flatten a tree\n *\n * @param items Items to flatten\n * @param parentId The current parentId of the items\n * @param depth The current depth of the items\n * @returns Flattened items\n */\nfunction flatten<T>(\n items: ReadonlyTreeItems<T>,\n parentId: string | null = null,\n depth = 0\n): FlattenedItem<T>[] {\n return items\n .reduce<FlattenedItem<T>[]>(\n (acc, item) => [\n ...acc,\n { ...item, parentId, depth, index: 0 }, // Index will be recalculated after\n ...flatten(item.children, item.id, depth + 1),\n ],\n []\n )\n .map((item, index) => ({ ...item, index })); // Recalculate indexes to be sequential\n}\n\n/**\n * Flattens a tree into a 1D array given the items\n * @param items The tree items to flatten\n * @returns The flattened tree items list\n */\nexport function flattenTree<T>(\n items: ReadonlyTreeItems<T>\n): FlattenedItem<T>[] {\n // Should help prevent double flattening since FlattenedItems are valid TreeItems\n if (items.every(isFlattenedTreeItem)) {\n return [...items];\n }\n return flatten(items);\n}\n\n/**\n * Recursively checks for the item in a list of items.\n * The list does not have to be flattened prior to searching.\n *\n * @param items Items to search\n * @param itemId Item to find\n * @returns The item if found\n */\nexport function findItemDeep(\n items: ReadonlyTreeItems,\n itemId: string\n): TreeItem | undefined {\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { id, children } = item;\n\n if (id === itemId) {\n return item;\n }\n\n if (children.length) {\n const child = findItemDeep(children, itemId);\n\n if (child) {\n return child;\n }\n }\n }\n\n return undefined;\n}\n\nfunction countChildren(items: TreeItem[], count = 0): number {\n return items.reduce((acc, { children }) => {\n if (children.length) {\n return countChildren(children, acc + 1);\n }\n\n return acc + 1;\n }, count);\n}\n\nexport function getChildCount(items: ReadonlyTreeItems, id: string): number {\n const item = findItemDeep(items, id);\n\n return item ? countChildren(item.children) : 0;\n}\n\n/**\n * Removes the children of the list of parents from the list of flattened items\n *\n * @param items The flattened items to remove from\n * @param ids The parents we want to remove the children of\n * @returns The flattened items without the children of the parents\n */\nexport function removeChildrenOf<T>(\n items: FlattenedItem<T>[],\n ids: string[]\n): FlattenedItem<T>[] {\n const excludeParentIds = new Set(ids);\n\n return items.filter(item => {\n if (item.parentId != null && excludeParentIds.has(item.parentId)) {\n if (item.children.length) {\n excludeParentIds.add(item.id);\n }\n return false;\n }\n\n return true;\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,22 +31,23 @@
|
|
|
31
31
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@deephaven/components": "^1.
|
|
35
|
-
"@deephaven/console": "^1.
|
|
36
|
-
"@deephaven/filters": "^1.
|
|
37
|
-
"@deephaven/grid": "^1.
|
|
38
|
-
"@deephaven/icons": "^1.
|
|
39
|
-
"@deephaven/jsapi-components": "^1.
|
|
34
|
+
"@deephaven/components": "^1.8.0",
|
|
35
|
+
"@deephaven/console": "^1.8.0",
|
|
36
|
+
"@deephaven/filters": "^1.1.0",
|
|
37
|
+
"@deephaven/grid": "^1.8.0",
|
|
38
|
+
"@deephaven/icons": "^1.2.0",
|
|
39
|
+
"@deephaven/jsapi-components": "^1.8.0",
|
|
40
40
|
"@deephaven/jsapi-types": "^1.0.0-dev0.39.4",
|
|
41
|
-
"@deephaven/jsapi-utils": "^1.
|
|
42
|
-
"@deephaven/log": "^1.
|
|
43
|
-
"@deephaven/react-hooks": "^1.
|
|
44
|
-
"@deephaven/storage": "^1.
|
|
45
|
-
"@deephaven/utils": "^1.
|
|
41
|
+
"@deephaven/jsapi-utils": "^1.8.0",
|
|
42
|
+
"@deephaven/log": "^1.8.0",
|
|
43
|
+
"@deephaven/react-hooks": "^1.8.0",
|
|
44
|
+
"@deephaven/storage": "^1.8.0",
|
|
45
|
+
"@deephaven/utils": "^1.8.0",
|
|
46
46
|
"@dnd-kit/core": "^6.1.0",
|
|
47
47
|
"@dnd-kit/sortable": "^7.0.2",
|
|
48
48
|
"@dnd-kit/utilities": "^3.2.2",
|
|
49
49
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
50
|
+
"@hello-pangea/dnd": "^18.0.1",
|
|
50
51
|
"classnames": "^2.3.1",
|
|
51
52
|
"fast-deep-equal": "^3.1.3",
|
|
52
53
|
"lodash.clamp": "^4.0.3",
|
|
@@ -56,7 +57,6 @@
|
|
|
56
57
|
"memoizee": "^0.4.15",
|
|
57
58
|
"monaco-editor": "^0.43.0",
|
|
58
59
|
"nanoid": "^5.0.7",
|
|
59
|
-
"react-beautiful-dnd": "^13.1.1",
|
|
60
60
|
"react-transition-group": "^4.4.2"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"react-dom": ">=16.8.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^1.
|
|
68
|
-
"@deephaven/mocks": "^1.
|
|
69
|
-
"@deephaven/test-utils": "^1.
|
|
67
|
+
"@deephaven/jsapi-shim": "^1.1.0",
|
|
68
|
+
"@deephaven/mocks": "^1.1.0",
|
|
69
|
+
"@deephaven/test-utils": "^1.8.0",
|
|
70
70
|
"deep-equal": "2.2.3"
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "84c5dcaed2803b85b80eb763b550f432eabe0d53"
|
|
83
83
|
}
|