@fluentui/react-tree 9.0.0-beta.24 → 9.0.0-beta.26
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/CHANGELOG.json +118 -1
- package/CHANGELOG.md +32 -2
- package/dist/index.d.ts +192 -52
- package/lib/components/Tree/Tree.types.js +1 -1
- package/lib/components/Tree/Tree.types.js.map +1 -1
- package/lib/components/Tree/useRootTree.js +71 -73
- package/lib/components/Tree/useRootTree.js.map +1 -1
- package/lib/components/Tree/useSubtree.js +4 -0
- package/lib/components/Tree/useSubtree.js.map +1 -1
- package/lib/components/Tree/useTreeContextValues.js +4 -2
- package/lib/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib/components/TreeItem/renderTreeItem.js +4 -2
- package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItem.js +104 -18
- package/lib/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItemContextValues.js +15 -6
- package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayout.js +14 -30
- package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +15 -8
- package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
- package/lib/contexts/index.js +1 -0
- package/lib/contexts/index.js.map +1 -1
- package/lib/contexts/treeContext.js +5 -2
- package/lib/contexts/treeContext.js.map +1 -1
- package/lib/contexts/treeItemContext.js +0 -4
- package/lib/contexts/treeItemContext.js.map +1 -1
- package/lib/contexts/treeItemSlotsContext.js +9 -0
- package/lib/contexts/treeItemSlotsContext.js.map +1 -0
- package/lib/hooks/index.js +3 -1
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useControllableOpenItems.js +25 -0
- package/lib/hooks/useControllableOpenItems.js.map +1 -0
- package/lib/hooks/useFlatControllableCheckedItems.js +76 -0
- package/lib/hooks/useFlatControllableCheckedItems.js.map +1 -0
- package/lib/hooks/useFlatTree.js +17 -6
- package/lib/hooks/useFlatTree.js.map +1 -1
- package/lib/hooks/useNestedControllableCheckedItems.js +107 -0
- package/lib/hooks/useNestedControllableCheckedItems.js.map +1 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/ImmutableMap.js +37 -0
- package/lib/utils/ImmutableMap.js.map +1 -0
- package/lib/utils/ImmutableSet.js +17 -9
- package/lib/utils/ImmutableSet.js.map +1 -1
- package/lib/utils/createFlatTreeItems.js +60 -8
- package/lib/utils/createFlatTreeItems.js.map +1 -1
- package/lib/utils/flattenTree.js +0 -5
- package/lib/utils/flattenTree.js.map +1 -1
- package/lib/utils/tokens.js +2 -1
- package/lib/utils/tokens.js.map +1 -1
- package/lib-commonjs/components/Tree/Tree.types.js +0 -2
- package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
- package/lib-commonjs/components/Tree/useRootTree.js +70 -72
- package/lib-commonjs/components/Tree/useRootTree.js.map +1 -1
- package/lib-commonjs/components/Tree/useSubtree.js +4 -0
- package/lib-commonjs/components/Tree/useSubtree.js.map +1 -1
- package/lib-commonjs/components/Tree/useTreeContextValues.js +4 -2
- package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItem/renderTreeItem.js +3 -1
- package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItem.js +103 -17
- package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +16 -6
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +14 -29
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +12 -8
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
- package/lib-commonjs/contexts/index.js +1 -0
- package/lib-commonjs/contexts/index.js.map +1 -1
- package/lib-commonjs/contexts/treeContext.js +4 -1
- package/lib-commonjs/contexts/treeContext.js.map +1 -1
- package/lib-commonjs/contexts/treeItemContext.js +0 -4
- package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
- package/lib-commonjs/contexts/treeItemSlotsContext.js +25 -0
- package/lib-commonjs/contexts/treeItemSlotsContext.js.map +1 -0
- package/lib-commonjs/hooks/index.js +3 -1
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/{useOpenItemsState.js → useControllableOpenItems.js} +15 -14
- package/lib-commonjs/hooks/useControllableOpenItems.js.map +1 -0
- package/lib-commonjs/hooks/useFlatControllableCheckedItems.js +91 -0
- package/lib-commonjs/hooks/useFlatControllableCheckedItems.js.map +1 -0
- package/lib-commonjs/hooks/useFlatTree.js +16 -5
- package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
- package/lib-commonjs/hooks/useNestedControllableCheckedItems.js +116 -0
- package/lib-commonjs/hooks/useNestedControllableCheckedItems.js.map +1 -0
- package/lib-commonjs/utils/ImmutableMap.js +45 -0
- package/lib-commonjs/utils/ImmutableMap.js.map +1 -0
- package/lib-commonjs/utils/ImmutableSet.js +22 -16
- package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
- package/lib-commonjs/utils/createFlatTreeItems.js +60 -8
- package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -1
- package/lib-commonjs/utils/flattenTree.js +0 -5
- package/lib-commonjs/utils/flattenTree.js.map +1 -1
- package/lib-commonjs/utils/tokens.js +2 -1
- package/lib-commonjs/utils/tokens.js.map +1 -1
- package/package.json +9 -7
- package/lib/hooks/useOpenItemsState.js +0 -28
- package/lib/hooks/useOpenItemsState.js.map +0 -1
- package/lib-commonjs/hooks/useOpenItemsState.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport {
|
|
1
|
+
{"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nconst defaultContextValue = {\n level: 0,\n selectionMode: 'none',\n openItems: ImmutableSet.empty,\n checkedItems: ImmutableMap.empty,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","level","selectionMode","openItems","ImmutableSet","empty","checkedItems","ImmutableMap","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAcaA,WAAW,MAAXA;IACYC,YAAY,MAAZA;IACZC,uBAAuB,MAAvBA;;sCAhBqC;8BACrB;8BACA;AAC7B,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,eAAe;IACfC,WAAWC,0BAAY,CAACC,KAAK;IAC7BC,cAAcC,0BAAY,CAACF,KAAK;IAChCG,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF,OAAO;AAChB,QAAQ,GAAG;AACJ,MAAMZ,cAAce,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUhB,aAAY,EAAG,GAAGD;AACpC,MAAME,0BAA0B,CAACgB,WAAWC,IAAAA,wCAAkB,EAACnB,aAAa,CAACoB,MAAMjB,mBAAmB,GAAGe,SAASE"}
|
|
@@ -18,10 +18,6 @@ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
|
18
18
|
const _reactContextSelector = require("@fluentui/react-context-selector");
|
|
19
19
|
const defaultContextValue = {
|
|
20
20
|
value: '',
|
|
21
|
-
isActionsVisible: false,
|
|
22
|
-
isAsideVisible: true,
|
|
23
|
-
actionsRef: /*#__PURE__*/ _react.createRef(),
|
|
24
|
-
expandIconRef: /*#__PURE__*/ _react.createRef(),
|
|
25
21
|
layoutRef: /*#__PURE__*/ _react.createRef(),
|
|
26
22
|
subtreeRef: /*#__PURE__*/ _react.createRef(),
|
|
27
23
|
itemType: 'leaf',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["treeItemContext.js"],"sourcesContent":["import * as React from 'react';\nimport { createContext, useContextSelector } from '@fluentui/react-context-selector';\nconst defaultContextValue = {\n value: '',\n
|
|
1
|
+
{"version":3,"sources":["treeItemContext.js"],"sourcesContent":["import * as React from 'react';\nimport { createContext, useContextSelector } from '@fluentui/react-context-selector';\nconst defaultContextValue = {\n value: '',\n layoutRef: React.createRef(),\n subtreeRef: React.createRef(),\n itemType: 'leaf',\n open: false\n};\nexport const TreeItemContext = createContext(undefined);\nexport const { Provider: TreeItemProvider } = TreeItemContext;\nexport const useTreeItemContext_unstable = (selector)=>useContextSelector(TreeItemContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeItemContext","TreeItemProvider","useTreeItemContext_unstable","defaultContextValue","value","layoutRef","React","createRef","subtreeRef","itemType","open","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IASaA,eAAe,MAAfA;IACYC,gBAAgB,MAAhBA;IACZC,2BAA2B,MAA3BA;;;6DAXU;sCAC2B;AAClD,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,yBAAWC,OAAMC,SAAS;IAC1BC,0BAAYF,OAAMC,SAAS;IAC3BE,UAAU;IACVC,MAAM,KAAK;AACf;AACO,MAAMV,kBAAkBW,IAAAA,mCAAa,EAACC;AACtC,MAAM,EAAEC,UAAUZ,iBAAgB,EAAG,GAAGD;AACxC,MAAME,8BAA8B,CAACY,WAAWC,IAAAA,wCAAkB,EAACf,iBAAiB,CAACgB,MAAMb,mBAAmB,GAAGW,SAASE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
TreeItemSlotsContext: ()=>TreeItemSlotsContext,
|
|
13
|
+
TreeItemSlotsProvider: ()=>TreeItemSlotsProvider,
|
|
14
|
+
useTreeItemSlotsContext_unstable: ()=>useTreeItemSlotsContext_unstable
|
|
15
|
+
});
|
|
16
|
+
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
17
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
18
|
+
const defaultContextValue = {
|
|
19
|
+
actions: undefined,
|
|
20
|
+
aside: undefined,
|
|
21
|
+
expandIcon: undefined
|
|
22
|
+
};
|
|
23
|
+
const TreeItemSlotsContext = /*#__PURE__*/ _react.createContext(undefined);
|
|
24
|
+
const { Provider: TreeItemSlotsProvider } = TreeItemSlotsContext;
|
|
25
|
+
const useTreeItemSlotsContext_unstable = ()=>_react.useContext(TreeItemSlotsContext) || defaultContextValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["treeItemSlotsContext.js"],"sourcesContent":["import * as React from 'react';\nconst defaultContextValue = {\n actions: undefined,\n aside: undefined,\n expandIcon: undefined\n};\nexport const TreeItemSlotsContext = React.createContext(undefined);\nexport const { Provider: TreeItemSlotsProvider } = TreeItemSlotsContext;\nexport const useTreeItemSlotsContext_unstable = ()=>React.useContext(TreeItemSlotsContext) || defaultContextValue;\n"],"names":["TreeItemSlotsContext","TreeItemSlotsProvider","useTreeItemSlotsContext_unstable","defaultContextValue","actions","undefined","aside","expandIcon","React","createContext","Provider","useContext"],"mappings":";;;;;;;;;;;IAMaA,oBAAoB,MAApBA;IACYC,qBAAqB,MAArBA;IACZC,gCAAgC,MAAhCA;;;6DARU;AACvB,MAAMC,sBAAsB;IACxBC,SAASC;IACTC,OAAOD;IACPE,YAAYF;AAChB;AACO,MAAML,qCAAuBQ,OAAMC,aAAa,CAACJ;AACjD,MAAM,EAAEK,UAAUT,sBAAqB,EAAG,GAAGD;AAC7C,MAAME,mCAAmC,IAAIM,OAAMG,UAAU,CAACX,yBAAyBG"}
|
|
@@ -5,4 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
6
|
_exportStar(require("./useFlatTree"), exports);
|
|
7
7
|
_exportStar(require("./useNestedTreeNavigation"), exports);
|
|
8
|
-
_exportStar(require("./
|
|
8
|
+
_exportStar(require("./useControllableOpenItems"), exports);
|
|
9
|
+
_exportStar(require("./useNestedControllableCheckedItems"), exports);
|
|
10
|
+
_exportStar(require("./useFlatControllableCheckedItems"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './
|
|
1
|
+
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './useControllableOpenItems';\nexport * from './useNestedControllableCheckedItems';\nexport * from './useFlatControllableCheckedItems';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA"}
|
|
@@ -2,27 +2,28 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
useControllableOpenItems: ()=>useControllableOpenItems,
|
|
13
|
+
createNextOpenItems: ()=>createNextOpenItems
|
|
8
14
|
});
|
|
9
15
|
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
10
16
|
const _reactUtilities = require("@fluentui/react-utilities");
|
|
11
17
|
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
12
18
|
const _immutableSet = require("../utils/ImmutableSet");
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
state: _react.useMemo(()=>props.openItems &&
|
|
19
|
+
function useControllableOpenItems(props) {
|
|
20
|
+
return (0, _reactUtilities.useControllableState)({
|
|
21
|
+
state: _react.useMemo(()=>props.openItems && _immutableSet.ImmutableSet.create(props.openItems), [
|
|
16
22
|
props.openItems
|
|
17
23
|
]),
|
|
18
|
-
defaultState: props.defaultOpenItems && (()=>
|
|
19
|
-
initialState: _immutableSet.
|
|
24
|
+
defaultState: props.defaultOpenItems && (()=>_immutableSet.ImmutableSet.create(props.defaultOpenItems)),
|
|
25
|
+
initialState: _immutableSet.ImmutableSet.empty
|
|
20
26
|
});
|
|
21
|
-
const updateOpenItems = (0, _reactUtilities.useEventCallback)((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));
|
|
22
|
-
return [
|
|
23
|
-
openItems,
|
|
24
|
-
updateOpenItems
|
|
25
|
-
];
|
|
26
27
|
}
|
|
27
28
|
function createNextOpenItems(data, previousOpenItems) {
|
|
28
29
|
if (data.value === null) {
|
|
@@ -32,6 +33,6 @@ function createNextOpenItems(data, previousOpenItems) {
|
|
|
32
33
|
if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
|
|
33
34
|
return previousOpenItems;
|
|
34
35
|
}
|
|
35
|
-
const nextOpenItems =
|
|
36
|
+
const nextOpenItems = _immutableSet.ImmutableSet.create(previousOpenItems);
|
|
36
37
|
return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);
|
|
37
38
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useControllableOpenItems.js"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { ImmutableSet } from '../utils/ImmutableSet';\n/**\n * @internal\n */ export function useControllableOpenItems(props) {\n return useControllableState({\n state: React.useMemo(()=>props.openItems && ImmutableSet.create(props.openItems), [\n props.openItems\n ]),\n defaultState: props.defaultOpenItems && (()=>ImmutableSet.create(props.defaultOpenItems)),\n initialState: ImmutableSet.empty\n });\n}\nexport function createNextOpenItems(data, previousOpenItems) {\n if (data.value === null) {\n return previousOpenItems;\n }\n const previousOpenItemsHasId = previousOpenItems.has(data.value);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = ImmutableSet.create(previousOpenItems);\n return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);\n}\n"],"names":["useControllableOpenItems","createNextOpenItems","props","useControllableState","state","React","useMemo","openItems","ImmutableSet","create","defaultState","defaultOpenItems","initialState","empty","data","previousOpenItems","value","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"mappings":";;;;;;;;;;;IAKoBA,wBAAwB,MAAxBA;IASJC,mBAAmB,MAAnBA;;;gCAdqB;6DACd;8BACM;AAGlB,SAASD,yBAAyBE,KAAK,EAAE;IAChD,OAAOC,IAAAA,oCAAoB,EAAC;QACxBC,OAAOC,OAAMC,OAAO,CAAC,IAAIJ,MAAMK,SAAS,IAAIC,0BAAY,CAACC,MAAM,CAACP,MAAMK,SAAS,GAAG;YAC9EL,MAAMK,SAAS;SAClB;QACDG,cAAcR,MAAMS,gBAAgB,IAAK,CAAA,IAAIH,0BAAY,CAACC,MAAM,CAACP,MAAMS,gBAAgB,CAAA;QACvFC,cAAcJ,0BAAY,CAACK,KAAK;IACpC;AACJ;AACO,SAASZ,oBAAoBa,IAAI,EAAEC,iBAAiB,EAAE;IACzD,IAAID,KAAKE,KAAK,KAAK,IAAI,EAAE;QACrB,OAAOD;IACX,CAAC;IACD,MAAME,yBAAyBF,kBAAkBG,GAAG,CAACJ,KAAKE,KAAK;IAC/D,IAAIF,KAAKK,IAAI,GAAGF,yBAAyB,CAACA,sBAAsB,EAAE;QAC9D,OAAOF;IACX,CAAC;IACD,MAAMK,gBAAgBZ,0BAAY,CAACC,MAAM,CAACM;IAC1C,OAAOD,KAAKK,IAAI,GAAGC,cAAcC,GAAG,CAACP,KAAKE,KAAK,IAAII,cAAcE,MAAM,CAACR,KAAKE,KAAK,CAAC;AACvF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
useFlatControllableCheckedItems: ()=>useFlatControllableCheckedItems,
|
|
13
|
+
createNextFlatCheckedItems: ()=>createNextFlatCheckedItems
|
|
14
|
+
});
|
|
15
|
+
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
16
|
+
const _reactUtilities = require("@fluentui/react-utilities");
|
|
17
|
+
const _immutableMap = require("../utils/ImmutableMap");
|
|
18
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
19
|
+
function initializeMap(iterable) {
|
|
20
|
+
const map = new Map();
|
|
21
|
+
if (iterable === undefined) {
|
|
22
|
+
return _immutableMap.ImmutableMap.empty;
|
|
23
|
+
}
|
|
24
|
+
for (const item of iterable){
|
|
25
|
+
if (Array.isArray(item)) {
|
|
26
|
+
map.set(item[0], item[1]);
|
|
27
|
+
} else {
|
|
28
|
+
map.set(item, true);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(map);
|
|
32
|
+
}
|
|
33
|
+
function useFlatControllableCheckedItems(props) {
|
|
34
|
+
const [checkedItems, setCheckedItems] = (0, _reactUtilities.useControllableState)({
|
|
35
|
+
initialState: _immutableMap.ImmutableMap.empty,
|
|
36
|
+
state: _react.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [
|
|
37
|
+
props.checkedItems
|
|
38
|
+
]),
|
|
39
|
+
defaultState: ()=>initializeMap(props.defaultCheckedItems)
|
|
40
|
+
});
|
|
41
|
+
return [
|
|
42
|
+
checkedItems,
|
|
43
|
+
setCheckedItems
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
function createNextFlatCheckedItems(data, previousCheckedItems, flatTreeItems) {
|
|
47
|
+
if (data.selectionMode === 'single') {
|
|
48
|
+
return _immutableMap.ImmutableMap.create([
|
|
49
|
+
[
|
|
50
|
+
data.value,
|
|
51
|
+
data.checked
|
|
52
|
+
]
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
const treeItem = flatTreeItems.get(data.value);
|
|
56
|
+
if (!treeItem) {
|
|
57
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.error(`useFlatTree: tree item ${data.value} not found`);
|
|
60
|
+
}
|
|
61
|
+
return previousCheckedItems;
|
|
62
|
+
}
|
|
63
|
+
const nextCheckedItems = new Map(previousCheckedItems);
|
|
64
|
+
for (const children of flatTreeItems.subtree(data.value)){
|
|
65
|
+
nextCheckedItems.set(children.value, data.checked);
|
|
66
|
+
}
|
|
67
|
+
nextCheckedItems.set(data.value, data.checked);
|
|
68
|
+
let isAncestorsMixed = false;
|
|
69
|
+
for (const parent of flatTreeItems.ancestors(treeItem.value)){
|
|
70
|
+
// if one parent is mixed, all ancestors are mixed
|
|
71
|
+
if (isAncestorsMixed) {
|
|
72
|
+
nextCheckedItems.set(parent.value, 'mixed');
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const checkedChildren = [];
|
|
76
|
+
for (const child of flatTreeItems.children(parent.value)){
|
|
77
|
+
var _nextCheckedItems_get;
|
|
78
|
+
if (((_nextCheckedItems_get = nextCheckedItems.get(child.value)) !== null && _nextCheckedItems_get !== void 0 ? _nextCheckedItems_get : false) === data.checked) {
|
|
79
|
+
checkedChildren.push(child);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (checkedChildren.length === parent.childrenValues.length) {
|
|
83
|
+
nextCheckedItems.set(parent.value, data.checked);
|
|
84
|
+
} else {
|
|
85
|
+
// if one parent is mixed, all ancestors are mixed
|
|
86
|
+
isAncestorsMixed = true;
|
|
87
|
+
nextCheckedItems.set(parent.value, 'mixed');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(nextCheckedItems);
|
|
91
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useFlatControllableCheckedItems.js"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nimport * as React from 'react';\nfunction initializeMap(iterable) {\n const map = new Map();\n if (iterable === undefined) {\n return ImmutableMap.empty;\n }\n for (const item of iterable){\n if (Array.isArray(item)) {\n map.set(item[0], item[1]);\n } else {\n map.set(item, true);\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(map);\n}\nexport function useFlatControllableCheckedItems(props) {\n const [checkedItems, setCheckedItems] = useControllableState({\n initialState: ImmutableMap.empty,\n state: React.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [\n props.checkedItems\n ]),\n defaultState: ()=>initializeMap(props.defaultCheckedItems)\n });\n return [\n checkedItems,\n setCheckedItems\n ];\n}\nexport function createNextFlatCheckedItems(data, previousCheckedItems, flatTreeItems) {\n if (data.selectionMode === 'single') {\n return ImmutableMap.create([\n [\n data.value,\n data.checked\n ]\n ]);\n }\n const treeItem = flatTreeItems.get(data.value);\n if (!treeItem) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(`useFlatTree: tree item ${data.value} not found`);\n }\n return previousCheckedItems;\n }\n const nextCheckedItems = new Map(previousCheckedItems);\n for (const children of flatTreeItems.subtree(data.value)){\n nextCheckedItems.set(children.value, data.checked);\n }\n nextCheckedItems.set(data.value, data.checked);\n let isAncestorsMixed = false;\n for (const parent of flatTreeItems.ancestors(treeItem.value)){\n // if one parent is mixed, all ancestors are mixed\n if (isAncestorsMixed) {\n nextCheckedItems.set(parent.value, 'mixed');\n continue;\n }\n const checkedChildren = [];\n for (const child of flatTreeItems.children(parent.value)){\n var _nextCheckedItems_get;\n if (((_nextCheckedItems_get = nextCheckedItems.get(child.value)) !== null && _nextCheckedItems_get !== void 0 ? _nextCheckedItems_get : false) === data.checked) {\n checkedChildren.push(child);\n }\n }\n if (checkedChildren.length === parent.childrenValues.length) {\n nextCheckedItems.set(parent.value, data.checked);\n } else {\n // if one parent is mixed, all ancestors are mixed\n isAncestorsMixed = true;\n nextCheckedItems.set(parent.value, 'mixed');\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(nextCheckedItems);\n}\n"],"names":["useFlatControllableCheckedItems","createNextFlatCheckedItems","initializeMap","iterable","map","Map","undefined","ImmutableMap","empty","item","Array","isArray","set","dangerouslyCreate_unstable","props","checkedItems","setCheckedItems","useControllableState","initialState","state","React","useMemo","defaultState","defaultCheckedItems","data","previousCheckedItems","flatTreeItems","selectionMode","create","value","checked","treeItem","get","process","env","NODE_ENV","console","error","nextCheckedItems","children","subtree","isAncestorsMixed","parent","ancestors","checkedChildren","child","_nextCheckedItems_get","push","length","childrenValues"],"mappings":";;;;;;;;;;;IAiBgBA,+BAA+B,MAA/BA;IAaAC,0BAA0B,MAA1BA;;;gCA9BqB;8BACR;6DACN;AACvB,SAASC,cAAcC,QAAQ,EAAE;IAC7B,MAAMC,MAAM,IAAIC;IAChB,IAAIF,aAAaG,WAAW;QACxB,OAAOC,0BAAY,CAACC,KAAK;IAC7B,CAAC;IACD,KAAK,MAAMC,QAAQN,SAAS;QACxB,IAAIO,MAAMC,OAAO,CAACF,OAAO;YACrBL,IAAIQ,GAAG,CAACH,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE;QAC5B,OAAO;YACHL,IAAIQ,GAAG,CAACH,MAAM,IAAI;QACtB,CAAC;IACL;IACA,OAAOF,0BAAY,CAACM,0BAA0B,CAACT;AACnD;AACO,SAASJ,gCAAgCc,KAAK,EAAE;IACnD,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,IAAAA,oCAAoB,EAAC;QACzDC,cAAcX,0BAAY,CAACC,KAAK;QAChCW,OAAOC,OAAMC,OAAO,CAAC,IAAIP,MAAMC,YAAY,IAAIb,cAAcY,MAAMC,YAAY,GAAG;YAC9ED,MAAMC,YAAY;SACrB;QACDO,cAAc,IAAIpB,cAAcY,MAAMS,mBAAmB;IAC7D;IACA,OAAO;QACHR;QACAC;KACH;AACL;AACO,SAASf,2BAA2BuB,IAAI,EAAEC,oBAAoB,EAAEC,aAAa,EAAE;IAClF,IAAIF,KAAKG,aAAa,KAAK,UAAU;QACjC,OAAOpB,0BAAY,CAACqB,MAAM,CAAC;YACvB;gBACIJ,KAAKK,KAAK;gBACVL,KAAKM,OAAO;aACf;SACJ;IACL,CAAC;IACD,MAAMC,WAAWL,cAAcM,GAAG,CAACR,KAAKK,KAAK;IAC7C,IAAI,CAACE,UAAU;QACX,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;YACvC,sCAAsC;YACtCC,QAAQC,KAAK,CAAC,CAAC,uBAAuB,EAAEb,KAAKK,KAAK,CAAC,UAAU,CAAC;QAClE,CAAC;QACD,OAAOJ;IACX,CAAC;IACD,MAAMa,mBAAmB,IAAIjC,IAAIoB;IACjC,KAAK,MAAMc,YAAYb,cAAcc,OAAO,CAAChB,KAAKK,KAAK,EAAE;QACrDS,iBAAiB1B,GAAG,CAAC2B,SAASV,KAAK,EAAEL,KAAKM,OAAO;IACrD;IACAQ,iBAAiB1B,GAAG,CAACY,KAAKK,KAAK,EAAEL,KAAKM,OAAO;IAC7C,IAAIW,mBAAmB,KAAK;IAC5B,KAAK,MAAMC,UAAUhB,cAAciB,SAAS,CAACZ,SAASF,KAAK,EAAE;QACzD,kDAAkD;QAClD,IAAIY,kBAAkB;YAClBH,iBAAiB1B,GAAG,CAAC8B,OAAOb,KAAK,EAAE;YACnC,QAAS;QACb,CAAC;QACD,MAAMe,kBAAkB,EAAE;QAC1B,KAAK,MAAMC,SAASnB,cAAca,QAAQ,CAACG,OAAOb,KAAK,EAAE;YACrD,IAAIiB;YACJ,IAAI,AAAC,CAAA,AAACA,CAAAA,wBAAwBR,iBAAiBN,GAAG,CAACa,MAAMhB,KAAK,CAAA,MAAO,IAAI,IAAIiB,0BAA0B,KAAK,IAAIA,wBAAwB,KAAK,AAAD,MAAOtB,KAAKM,OAAO,EAAE;gBAC7Jc,gBAAgBG,IAAI,CAACF;YACzB,CAAC;QACL;QACA,IAAID,gBAAgBI,MAAM,KAAKN,OAAOO,cAAc,CAACD,MAAM,EAAE;YACzDV,iBAAiB1B,GAAG,CAAC8B,OAAOb,KAAK,EAAEL,KAAKM,OAAO;QACnD,OAAO;YACH,kDAAkD;YAClDW,mBAAmB,IAAI;YACvBH,iBAAiB1B,GAAG,CAAC8B,OAAOb,KAAK,EAAE;QACvC,CAAC;IACL;IACA,OAAOtB,0BAAY,CAACM,0BAA0B,CAACyB;AACnD"}
|
|
@@ -12,23 +12,30 @@ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
|
12
12
|
const _createFlatTreeItems = require("../utils/createFlatTreeItems");
|
|
13
13
|
const _tokens = require("../utils/tokens");
|
|
14
14
|
const _useFlatTreeNavigation = require("./useFlatTreeNavigation");
|
|
15
|
-
const
|
|
15
|
+
const _useControllableOpenItems = require("./useControllableOpenItems");
|
|
16
16
|
const _getTreeItemValueFromElement = require("../utils/getTreeItemValueFromElement");
|
|
17
|
+
const _useFlatControllableCheckedItems = require("./useFlatControllableCheckedItems");
|
|
17
18
|
function useFlatTree_unstable(flatTreeItemProps, options = {}) {
|
|
18
|
-
const [openItems, updateOpenItems] = (0, _useOpenItemsState.useOpenItemsState)(options);
|
|
19
19
|
const flatTreeItems = _react.useMemo(()=>(0, _createFlatTreeItems.createFlatTreeItems)(flatTreeItemProps), [
|
|
20
20
|
flatTreeItemProps
|
|
21
21
|
]);
|
|
22
|
+
const [openItems, setOpenItems] = (0, _useControllableOpenItems.useControllableOpenItems)(options);
|
|
23
|
+
const [checkedItems, setCheckedItems] = (0, _useFlatControllableCheckedItems.useFlatControllableCheckedItems)(options);
|
|
22
24
|
const [navigate, navigationRef] = (0, _useFlatTreeNavigation.useFlatTreeNavigation)(flatTreeItems);
|
|
23
25
|
const treeRef = _react.useRef(null);
|
|
24
26
|
const handleOpenChange = (0, _reactUtilities.useEventCallback)((event, data)=>{
|
|
25
27
|
var _options_onOpenChange;
|
|
26
28
|
(_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);
|
|
27
29
|
if (!event.isDefaultPrevented()) {
|
|
28
|
-
|
|
30
|
+
setOpenItems((0, _useControllableOpenItems.createNextOpenItems)(data, openItems));
|
|
29
31
|
}
|
|
30
32
|
event.preventDefault();
|
|
31
33
|
});
|
|
34
|
+
const handleCheckedChange = (0, _reactUtilities.useEventCallback)((event, data)=>{
|
|
35
|
+
var _options_onCheckedChange;
|
|
36
|
+
(_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, data);
|
|
37
|
+
setCheckedItems((0, _useFlatControllableCheckedItems.createNextFlatCheckedItems)(data, checkedItems, flatTreeItems));
|
|
38
|
+
});
|
|
32
39
|
const handleNavigation = (0, _reactUtilities.useEventCallback)((event, data)=>{
|
|
33
40
|
var _options_onNavigation_unstable;
|
|
34
41
|
(_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);
|
|
@@ -66,13 +73,17 @@ function useFlatTree_unstable(flatTreeItemProps, options = {}) {
|
|
|
66
73
|
const getTreeProps = _react.useCallback(()=>({
|
|
67
74
|
ref,
|
|
68
75
|
openItems,
|
|
76
|
+
selectionMode: options.selectionMode,
|
|
77
|
+
checkedItems,
|
|
69
78
|
onOpenChange: handleOpenChange,
|
|
79
|
+
onCheckedChange: handleCheckedChange,
|
|
70
80
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
71
81
|
onNavigation_unstable: handleNavigation
|
|
72
82
|
}), [
|
|
73
|
-
openItems
|
|
83
|
+
openItems,
|
|
84
|
+
checkedItems
|
|
74
85
|
]);
|
|
75
|
-
const items = _react.useCallback(()=>
|
|
86
|
+
const items = _react.useCallback(()=>flatTreeItems.visibleItems(openItems), [
|
|
76
87
|
openItems,
|
|
77
88
|
flatTreeItems
|
|
78
89
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createFlatTreeItems
|
|
1
|
+
{"version":3,"sources":["useFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createFlatTreeItems } from '../utils/createFlatTreeItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { createNextOpenItems, useControllableOpenItems } from './useControllableOpenItems';\nimport { dataTreeItemValueAttrName } from '../utils/getTreeItemValueFromElement';\nimport { createNextFlatCheckedItems, useFlatControllableCheckedItems } from './useFlatControllableCheckedItems';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param flatTreeItemProps - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useFlatTree_unstable(flatTreeItemProps, options = {}) {\n const flatTreeItems = React.useMemo(()=>createFlatTreeItems(flatTreeItemProps), [\n flatTreeItemProps\n ]);\n const [openItems, setOpenItems] = useControllableOpenItems(options);\n const [checkedItems, setCheckedItems] = useFlatControllableCheckedItems(options);\n const [navigate, navigationRef] = useFlatTreeNavigation(flatTreeItems);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange;\n (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n setOpenItems(createNextOpenItems(data, openItems));\n }\n event.preventDefault();\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n var _options_onCheckedChange;\n (_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, data);\n setCheckedItems(createNextFlatCheckedItems(data, checkedItems, flatTreeItems));\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _options_onNavigation_unstable;\n (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n navigate(data);\n }\n event.preventDefault();\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = flatTreeItems.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return flatTreeItems.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\n case treeDataTypes.End:\n return visibleItems[visibleItems.length - 1];\n case treeDataTypes.Home:\n return visibleItems[0];\n case treeDataTypes.ArrowDown:\n return visibleItems[item.index + 1];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, navigationRef);\n const getTreeProps = React.useCallback(()=>({\n ref,\n openItems,\n selectionMode: options.selectionMode,\n checkedItems,\n onOpenChange: handleOpenChange,\n onCheckedChange: handleCheckedChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems,\n checkedItems\n ]);\n const items = React.useCallback(()=>flatTreeItems.visibleItems(openItems), [\n openItems,\n flatTreeItems\n ]);\n return React.useMemo(()=>({\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\n"],"names":["useFlatTree_unstable","flatTreeItemProps","options","flatTreeItems","React","useMemo","createFlatTreeItems","openItems","setOpenItems","useControllableOpenItems","checkedItems","setCheckedItems","useFlatControllableCheckedItems","navigate","navigationRef","useFlatTreeNavigation","treeRef","useRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","onOpenChange","call","isDefaultPrevented","createNextOpenItems","preventDefault","handleCheckedChange","_options_onCheckedChange","onCheckedChange","createNextFlatCheckedItems","handleNavigation","_options_onNavigation_unstable","onNavigation_unstable","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","useCallback","_treeRef_current","current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","selectionMode","items"],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "useNestedControllableCheckedItems", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>useNestedControllableCheckedItems
|
|
8
|
+
});
|
|
9
|
+
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
10
|
+
const _reactUtilities = require("@fluentui/react-utilities");
|
|
11
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
12
|
+
const _immutableMap = require("../utils/ImmutableMap");
|
|
13
|
+
function initializeMap(iterable) {
|
|
14
|
+
const map = new Map();
|
|
15
|
+
if (iterable === undefined) {
|
|
16
|
+
return _immutableMap.ImmutableMap.empty;
|
|
17
|
+
}
|
|
18
|
+
for (const item of iterable){
|
|
19
|
+
if (Array.isArray(item)) {
|
|
20
|
+
map.set(item[0], item[1]);
|
|
21
|
+
} else {
|
|
22
|
+
map.set(item, true);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(map);
|
|
26
|
+
}
|
|
27
|
+
function useNestedControllableCheckedItems(props) {
|
|
28
|
+
return (0, _reactUtilities.useControllableState)({
|
|
29
|
+
initialState: _immutableMap.ImmutableMap.empty,
|
|
30
|
+
state: _react.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [
|
|
31
|
+
props.checkedItems
|
|
32
|
+
]),
|
|
33
|
+
defaultState: ()=>initializeMap(props.defaultCheckedItems)
|
|
34
|
+
});
|
|
35
|
+
} // export function useCheckedItemsState(props: Pick<TreeProps, 'checkedItems' | 'defaultCheckedItems' | 'selectionMode'>) {
|
|
36
|
+
// const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);
|
|
37
|
+
// const selections = React.useMemo(() => initializeSelection(props.checkedItems ?? []), [props.checkedItems]);
|
|
38
|
+
// const defaultSelections = React.useMemo(
|
|
39
|
+
// () => initializeSelection(props.defaultCheckedItems ?? []),
|
|
40
|
+
// [props.defaultCheckedItems],
|
|
41
|
+
// );
|
|
42
|
+
// const [checkedSelection, checkedSelectionManager] = useSelection<TreeItemValue>({
|
|
43
|
+
// selectionMode: props.selectionMode ?? 'single',
|
|
44
|
+
// selectedItems: selections.checkedSelection,
|
|
45
|
+
// defaultSelectedItems: defaultSelections.checkedSelection,
|
|
46
|
+
// });
|
|
47
|
+
// const [mixedSelection, setMixedSelection] = useControllableState({
|
|
48
|
+
// initialState: ImmutableSet.empty,
|
|
49
|
+
// defaultState: React.useMemo(
|
|
50
|
+
// () => ImmutableSet.create(defaultSelections.mixedSelection),
|
|
51
|
+
// [defaultSelections.mixedSelection],
|
|
52
|
+
// ),
|
|
53
|
+
// state: React.useMemo(() => ImmutableSet.create(selections.mixedSelection), [selections.mixedSelection]),
|
|
54
|
+
// });
|
|
55
|
+
// const updateCheckedItems = useEventCallback((data: TreeCheckedChangeData) => {
|
|
56
|
+
// if (props.selectionMode === 'single') {
|
|
57
|
+
// checkedSelectionManager.selectItem(data.value);
|
|
58
|
+
// return;
|
|
59
|
+
// }
|
|
60
|
+
// if (walkerRef.current === null) {
|
|
61
|
+
// return;
|
|
62
|
+
// }
|
|
63
|
+
// const nextSelectedState = !checkedSelectionManager.isSelected(data.value);
|
|
64
|
+
// let treeItemValues = getAllSubTreeItemValues(data).add(data.value);
|
|
65
|
+
// let mixedValues: ImmutableSet<TreeItemValue> = ImmutableSet.empty;
|
|
66
|
+
// walkerRef.current.currentElement = data.event.currentTarget;
|
|
67
|
+
// while (walkerRef.current.parentElement() !== null) {
|
|
68
|
+
// const descendants = Array.from(
|
|
69
|
+
// walkerRef.current.currentElement.querySelectorAll<HTMLElement>('[role="treeitem"]'),
|
|
70
|
+
// ).filter(item => item.getAttribute(dataTreeItemValueAttrName) !== data.value);
|
|
71
|
+
// const isAllSiblingsEqualSelectionState = descendants.every(item => {
|
|
72
|
+
// return (
|
|
73
|
+
// (item.getAttribute('aria-selected') === 'true') === nextSelectedState ||
|
|
74
|
+
// treeItemValues.has(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)
|
|
75
|
+
// );
|
|
76
|
+
// });
|
|
77
|
+
// if (isAllSiblingsEqualSelectionState) {
|
|
78
|
+
// treeItemValues = treeItemValues.add(
|
|
79
|
+
// walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
|
|
80
|
+
// );
|
|
81
|
+
// mixedValues = mixedValues.delete(
|
|
82
|
+
// walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
|
|
83
|
+
// );
|
|
84
|
+
// } else {
|
|
85
|
+
// treeItemValues = treeItemValues
|
|
86
|
+
// .delete(walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)
|
|
87
|
+
// .add(data.value);
|
|
88
|
+
// mixedValues = mixedValues.add(
|
|
89
|
+
// walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
|
|
90
|
+
// );
|
|
91
|
+
// }
|
|
92
|
+
// }
|
|
93
|
+
// unstable_batchedUpdates(() => {
|
|
94
|
+
// nextSelectedState
|
|
95
|
+
// ? checkedSelectionManager.selectItems(treeItemValues)
|
|
96
|
+
// : checkedSelectionManager.deselectItems(treeItemValues);
|
|
97
|
+
// let nextMixedSelection = ImmutableSet.create(mixedSelection);
|
|
98
|
+
// for (const value of mixedValues) {
|
|
99
|
+
// nextMixedSelection = nextMixedSelection.add(value);
|
|
100
|
+
// }
|
|
101
|
+
// for (const value of treeItemValues) {
|
|
102
|
+
// nextMixedSelection = nextMixedSelection.delete(value);
|
|
103
|
+
// }
|
|
104
|
+
// setMixedSelection(nextMixedSelection);
|
|
105
|
+
// });
|
|
106
|
+
// });
|
|
107
|
+
// return [checkedSelection, mixedSelection, updateCheckedItems, rootRef] as const;
|
|
108
|
+
// }
|
|
109
|
+
// function getAllSubTreeItemValues(data: TreeCheckedChangeData) {
|
|
110
|
+
// const subTreeItems = Array.from(data.event.currentTarget.querySelectorAll('[role="treeitem"]'));
|
|
111
|
+
// const values = new Set<TreeItemValue>();
|
|
112
|
+
// for (const item of subTreeItems) {
|
|
113
|
+
// values.add(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue);
|
|
114
|
+
// }
|
|
115
|
+
// return ImmutableSet.dangerouslyCreate(values);
|
|
116
|
+
// }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useNestedControllableCheckedItems.js"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nfunction initializeMap(iterable) {\n const map = new Map();\n if (iterable === undefined) {\n return ImmutableMap.empty;\n }\n for (const item of iterable){\n if (Array.isArray(item)) {\n map.set(item[0], item[1]);\n } else {\n map.set(item, true);\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(map);\n}\nexport function useNestedControllableCheckedItems(props) {\n return useControllableState({\n initialState: ImmutableMap.empty,\n state: React.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [\n props.checkedItems\n ]),\n defaultState: ()=>initializeMap(props.defaultCheckedItems)\n });\n} // export function useCheckedItemsState(props: Pick<TreeProps, 'checkedItems' | 'defaultCheckedItems' | 'selectionMode'>) {\n // const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n // const selections = React.useMemo(() => initializeSelection(props.checkedItems ?? []), [props.checkedItems]);\n // const defaultSelections = React.useMemo(\n // () => initializeSelection(props.defaultCheckedItems ?? []),\n // [props.defaultCheckedItems],\n // );\n // const [checkedSelection, checkedSelectionManager] = useSelection<TreeItemValue>({\n // selectionMode: props.selectionMode ?? 'single',\n // selectedItems: selections.checkedSelection,\n // defaultSelectedItems: defaultSelections.checkedSelection,\n // });\n // const [mixedSelection, setMixedSelection] = useControllableState({\n // initialState: ImmutableSet.empty,\n // defaultState: React.useMemo(\n // () => ImmutableSet.create(defaultSelections.mixedSelection),\n // [defaultSelections.mixedSelection],\n // ),\n // state: React.useMemo(() => ImmutableSet.create(selections.mixedSelection), [selections.mixedSelection]),\n // });\n // const updateCheckedItems = useEventCallback((data: TreeCheckedChangeData) => {\n // if (props.selectionMode === 'single') {\n // checkedSelectionManager.selectItem(data.value);\n // return;\n // }\n // if (walkerRef.current === null) {\n // return;\n // }\n // const nextSelectedState = !checkedSelectionManager.isSelected(data.value);\n // let treeItemValues = getAllSubTreeItemValues(data).add(data.value);\n // let mixedValues: ImmutableSet<TreeItemValue> = ImmutableSet.empty;\n // walkerRef.current.currentElement = data.event.currentTarget;\n // while (walkerRef.current.parentElement() !== null) {\n // const descendants = Array.from(\n // walkerRef.current.currentElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]'),\n // ).filter(item => item.getAttribute(dataTreeItemValueAttrName) !== data.value);\n // const isAllSiblingsEqualSelectionState = descendants.every(item => {\n // return (\n // (item.getAttribute('aria-selected') === 'true') === nextSelectedState ||\n // treeItemValues.has(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)\n // );\n // });\n // if (isAllSiblingsEqualSelectionState) {\n // treeItemValues = treeItemValues.add(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // mixedValues = mixedValues.delete(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // } else {\n // treeItemValues = treeItemValues\n // .delete(walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)\n // .add(data.value);\n // mixedValues = mixedValues.add(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // }\n // }\n // unstable_batchedUpdates(() => {\n // nextSelectedState\n // ? checkedSelectionManager.selectItems(treeItemValues)\n // : checkedSelectionManager.deselectItems(treeItemValues);\n // let nextMixedSelection = ImmutableSet.create(mixedSelection);\n // for (const value of mixedValues) {\n // nextMixedSelection = nextMixedSelection.add(value);\n // }\n // for (const value of treeItemValues) {\n // nextMixedSelection = nextMixedSelection.delete(value);\n // }\n // setMixedSelection(nextMixedSelection);\n // });\n // });\n // return [checkedSelection, mixedSelection, updateCheckedItems, rootRef] as const;\n // }\n // function getAllSubTreeItemValues(data: TreeCheckedChangeData) {\n // const subTreeItems = Array.from(data.event.currentTarget.querySelectorAll('[role=\"treeitem\"]'));\n // const values = new Set<TreeItemValue>();\n // for (const item of subTreeItems) {\n // values.add(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue);\n // }\n // return ImmutableSet.dangerouslyCreate(values);\n // }\n"],"names":["useNestedControllableCheckedItems","initializeMap","iterable","map","Map","undefined","ImmutableMap","empty","item","Array","isArray","set","dangerouslyCreate_unstable","props","useControllableState","initialState","state","React","useMemo","checkedItems","defaultState","defaultCheckedItems"],"mappings":";;;;+BAiBgBA;;aAAAA;;;gCAjBqB;6DACd;8BACM;AAC7B,SAASC,cAAcC,QAAQ,EAAE;IAC7B,MAAMC,MAAM,IAAIC;IAChB,IAAIF,aAAaG,WAAW;QACxB,OAAOC,0BAAY,CAACC,KAAK;IAC7B,CAAC;IACD,KAAK,MAAMC,QAAQN,SAAS;QACxB,IAAIO,MAAMC,OAAO,CAACF,OAAO;YACrBL,IAAIQ,GAAG,CAACH,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE;QAC5B,OAAO;YACHL,IAAIQ,GAAG,CAACH,MAAM,IAAI;QACtB,CAAC;IACL;IACA,OAAOF,0BAAY,CAACM,0BAA0B,CAACT;AACnD;AACO,SAASH,kCAAkCa,KAAK,EAAE;IACrD,OAAOC,IAAAA,oCAAoB,EAAC;QACxBC,cAAcT,0BAAY,CAACC,KAAK;QAChCS,OAAOC,OAAMC,OAAO,CAAC,IAAIL,MAAMM,YAAY,IAAIlB,cAAcY,MAAMM,YAAY,GAAG;YAC9EN,MAAMM,YAAY;SACrB;QACDC,cAAc,IAAInB,cAAcY,MAAMQ,mBAAmB;IAC7D;AACJ,EAAE,2HAA2H;CAC5H,0EAA0E;CAC1E,iHAAiH;CACjH,6CAA6C;CAC7C,kEAAkE;CAClE,mCAAmC;CACnC,OAAO;CACP,sFAAsF;CACtF,sDAAsD;CACtD,kDAAkD;CAClD,gEAAgE;CAChE,QAAQ;CACR,uEAAuE;CACvE,wCAAwC;CACxC,mCAAmC;CACnC,qEAAqE;CACrE,4CAA4C;CAC5C,SAAS;CACT,+GAA+G;CAC/G,QAAQ;CACR,mFAAmF;CACnF,8CAA8C;CAC9C,wDAAwD;CACxD,gBAAgB;CAChB,QAAQ;CACR,wCAAwC;CACxC,gBAAgB;CAChB,QAAQ;CACR,iFAAiF;CACjF,0EAA0E;CAC1E,yEAAyE;CACzE,mEAAmE;CACnE,2DAA2D;CAC3D,wCAAwC;CACxC,+FAA+F;CAC/F,uFAAuF;CACvF,6EAA6E;CAC7E,mBAAmB;CACnB,qFAAqF;CACrF,8FAA8F;CAC9F,aAAa;CACb,YAAY;CACZ,gDAAgD;CAChD,+CAA+C;CAC/C,uGAAuG;CACvG,aAAa;CACb,4CAA4C;CAC5C,uGAAuG;CACvG,aAAa;CACb,iBAAiB;CACjB,0CAA0C;CAC1C,+GAA+G;CAC/G,8BAA8B;CAC9B,yCAAyC;CACzC,uGAAuG;CACvG,aAAa;CACb,UAAU;CACV,QAAQ;CACR,sCAAsC;CACtC,0BAA0B;CAC1B,gEAAgE;CAChE,mEAAmE;CACnE,sEAAsE;CACtE,2CAA2C;CAC3C,8DAA8D;CAC9D,UAAU;CACV,8CAA8C;CAC9C,iEAAiE;CACjE,UAAU;CACV,+CAA+C;CAC/C,UAAU;CACV,QAAQ;CACR,qFAAqF;CACrF,IAAI;CACJ,kEAAkE;CAClE,qGAAqG;CACrG,6CAA6C;CAC7C,uCAAuC;CACvC,iFAAiF;CACjF,MAAM;CACN,mDAAmD;CACnD,IAAI"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ImmutableMap", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>ImmutableMap
|
|
8
|
+
});
|
|
9
|
+
const emptyImmutableMap = createImmutableMap();
|
|
10
|
+
/**
|
|
11
|
+
* properly creates an ImmutableMap instance from an iterable
|
|
12
|
+
*/ function createImmutableMap(iterable) {
|
|
13
|
+
const internalMap = new Map(iterable);
|
|
14
|
+
return dangerouslyCreateImmutableMap(internalMap);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Avoid using *dangerouslyCreateImmutableMap*, since this method will expose internally used set, use createImmutableMap instead,
|
|
18
|
+
* @param internalMap - a set that is used internally to store values.
|
|
19
|
+
*/ function dangerouslyCreateImmutableMap(internalMap) {
|
|
20
|
+
return {
|
|
21
|
+
size: internalMap.size,
|
|
22
|
+
set: (key, value)=>{
|
|
23
|
+
const nextSet = new Map(internalMap);
|
|
24
|
+
nextSet.set(key, value);
|
|
25
|
+
return dangerouslyCreateImmutableMap(nextSet);
|
|
26
|
+
},
|
|
27
|
+
get: (key)=>internalMap.get(key),
|
|
28
|
+
clear: ()=>emptyImmutableMap,
|
|
29
|
+
delete (value) {
|
|
30
|
+
const nextSet = new Map(internalMap);
|
|
31
|
+
nextSet.delete(value);
|
|
32
|
+
return dangerouslyCreateImmutableMap(nextSet);
|
|
33
|
+
},
|
|
34
|
+
has: (value)=>internalMap.has(value),
|
|
35
|
+
[Symbol.iterator]: ()=>internalMap[Symbol.iterator](),
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
37
|
+
dangerouslyGetInternalMap_unstable: ()=>internalMap
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const ImmutableMap = {
|
|
41
|
+
empty: emptyImmutableMap,
|
|
42
|
+
create: createImmutableMap,
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
44
|
+
dangerouslyCreate_unstable: dangerouslyCreateImmutableMap
|
|
45
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ImmutableMap.js"],"sourcesContent":["const emptyImmutableMap = createImmutableMap();\n/**\n * properly creates an ImmutableMap instance from an iterable\n */ function createImmutableMap(iterable) {\n const internalMap = new Map(iterable);\n return dangerouslyCreateImmutableMap(internalMap);\n}\n/**\n * Avoid using *dangerouslyCreateImmutableMap*, since this method will expose internally used set, use createImmutableMap instead,\n * @param internalMap - a set that is used internally to store values.\n */ function dangerouslyCreateImmutableMap(internalMap) {\n return {\n size: internalMap.size,\n set: (key, value)=>{\n const nextSet = new Map(internalMap);\n nextSet.set(key, value);\n return dangerouslyCreateImmutableMap(nextSet);\n },\n get: (key)=>internalMap.get(key),\n clear: ()=>emptyImmutableMap,\n delete (value) {\n const nextSet = new Map(internalMap);\n nextSet.delete(value);\n return dangerouslyCreateImmutableMap(nextSet);\n },\n has: (value)=>internalMap.has(value),\n [Symbol.iterator]: ()=>internalMap[Symbol.iterator](),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyGetInternalMap_unstable: ()=>internalMap\n };\n}\nexport const ImmutableMap = {\n empty: emptyImmutableMap,\n create: createImmutableMap,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyCreate_unstable: dangerouslyCreateImmutableMap\n};\n"],"names":["ImmutableMap","emptyImmutableMap","createImmutableMap","iterable","internalMap","Map","dangerouslyCreateImmutableMap","size","set","key","value","nextSet","get","clear","delete","has","Symbol","iterator","dangerouslyGetInternalMap_unstable","empty","create","dangerouslyCreate_unstable"],"mappings":";;;;+BA+BaA;;aAAAA;;AA/Bb,MAAMC,oBAAoBC;AAC1B;;CAEC,GAAG,SAASA,mBAAmBC,QAAQ,EAAE;IACtC,MAAMC,cAAc,IAAIC,IAAIF;IAC5B,OAAOG,8BAA8BF;AACzC;AACA;;;CAGC,GAAG,SAASE,8BAA8BF,WAAW,EAAE;IACpD,OAAO;QACHG,MAAMH,YAAYG,IAAI;QACtBC,KAAK,CAACC,KAAKC,QAAQ;YACf,MAAMC,UAAU,IAAIN,IAAID;YACxBO,QAAQH,GAAG,CAACC,KAAKC;YACjB,OAAOJ,8BAA8BK;QACzC;QACAC,KAAK,CAACH,MAAML,YAAYQ,GAAG,CAACH;QAC5BI,OAAO,IAAIZ;QACXa,QAAQJ,KAAK,EAAE;YACX,MAAMC,UAAU,IAAIN,IAAID;YACxBO,QAAQG,MAAM,CAACJ;YACf,OAAOJ,8BAA8BK;QACzC;QACAI,KAAK,CAACL,QAAQN,YAAYW,GAAG,CAACL;QAC9B,CAACM,OAAOC,QAAQ,CAAC,EAAE,IAAIb,WAAW,CAACY,OAAOC,QAAQ,CAAC;QACnD,gEAAgE;QAChEC,oCAAoC,IAAId;IAC5C;AACJ;AACO,MAAMJ,eAAe;IACxBmB,OAAOlB;IACPmB,QAAQlB;IACR,gEAAgE;IAChEmB,4BAA4Bf;AAChC"}
|
|
@@ -2,23 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
emptyImmutableSet: ()=>emptyImmutableSet,
|
|
13
|
-
createImmutableSet: ()=>createImmutableSet,
|
|
14
|
-
dangerouslyCreateImmutableSet: ()=>dangerouslyCreateImmutableSet
|
|
5
|
+
Object.defineProperty(exports, "ImmutableSet", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>ImmutableSet
|
|
15
8
|
});
|
|
16
9
|
const emptyImmutableSet = createImmutableSet();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function dangerouslyCreateImmutableSet(internalSet) {
|
|
10
|
+
/**
|
|
11
|
+
* Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,
|
|
12
|
+
* @param internalSet - a set that is used internally to store values.
|
|
13
|
+
*/ function dangerouslyCreateImmutableSet(internalSet) {
|
|
22
14
|
return {
|
|
23
15
|
size: internalSet.size,
|
|
24
16
|
add (value) {
|
|
@@ -39,6 +31,20 @@ function dangerouslyCreateImmutableSet(internalSet) {
|
|
|
39
31
|
},
|
|
40
32
|
[Symbol.iterator] () {
|
|
41
33
|
return internalSet[Symbol.iterator]();
|
|
42
|
-
}
|
|
34
|
+
},
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
36
|
+
dangerouslyGetInternalSet_unstable: ()=>internalSet
|
|
43
37
|
};
|
|
44
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* properly creates an ImmutableSet instance from an iterable
|
|
41
|
+
*/ function createImmutableSet(iterable) {
|
|
42
|
+
const internalSet = new Set(iterable);
|
|
43
|
+
return dangerouslyCreateImmutableSet(internalSet);
|
|
44
|
+
}
|
|
45
|
+
const ImmutableSet = {
|
|
46
|
+
empty: emptyImmutableSet,
|
|
47
|
+
create: createImmutableSet,
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
49
|
+
dangerouslyCreate_unstable: dangerouslyCreateImmutableSet
|
|
50
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImmutableSet.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["ImmutableSet.js"],"sourcesContent":["const emptyImmutableSet = createImmutableSet();\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */ function dangerouslyCreateImmutableSet(internalSet) {\n return {\n size: internalSet.size,\n add (value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear () {\n return emptyImmutableSet;\n },\n delete (value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has (value) {\n return internalSet.has(value);\n },\n [Symbol.iterator] () {\n return internalSet[Symbol.iterator]();\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyGetInternalSet_unstable: ()=>internalSet\n };\n}\n/**\n * properly creates an ImmutableSet instance from an iterable\n */ function createImmutableSet(iterable) {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\nexport const ImmutableSet = {\n empty: emptyImmutableSet,\n create: createImmutableSet,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyCreate_unstable: dangerouslyCreateImmutableSet\n};\n"],"names":["ImmutableSet","emptyImmutableSet","createImmutableSet","dangerouslyCreateImmutableSet","internalSet","size","add","value","nextSet","Set","clear","delete","has","Symbol","iterator","dangerouslyGetInternalSet_unstable","iterable","empty","create","dangerouslyCreate_unstable"],"mappings":";;;;+BAoCaA;;aAAAA;;AApCb,MAAMC,oBAAoBC;AAC1B;;;CAGC,GAAG,SAASC,8BAA8BC,WAAW,EAAE;IACpD,OAAO;QACHC,MAAMD,YAAYC,IAAI;QACtBC,KAAKC,KAAK,EAAE;YACR,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQF,GAAG,CAACC;YACZ,OAAOJ,8BAA8BK;QACzC;QACAE,SAAS;YACL,OAAOT;QACX;QACAU,QAAQJ,KAAK,EAAE;YACX,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQG,MAAM,CAACJ;YACf,OAAOJ,8BAA8BK;QACzC;QACAI,KAAKL,KAAK,EAAE;YACR,OAAOH,YAAYQ,GAAG,CAACL;QAC3B;QACA,CAACM,OAAOC,QAAQ,CAAC,IAAI;YACjB,OAAOV,WAAW,CAACS,OAAOC,QAAQ,CAAC;QACvC;QACA,gEAAgE;QAChEC,oCAAoC,IAAIX;IAC5C;AACJ;AACA;;CAEC,GAAG,SAASF,mBAAmBc,QAAQ,EAAE;IACtC,MAAMZ,cAAc,IAAIK,IAAIO;IAC5B,OAAOb,8BAA8BC;AACzC;AACO,MAAMJ,eAAe;IACxBiB,OAAOhB;IACPiB,QAAQhB;IACR,gEAAgE;IAChEiB,4BAA4BhB;AAChC"}
|