@fluentui/priority-overflow 0.0.0-nightly-20230317-1454.1 → 0.0.0-nightly-20230322-0439.1

Sign up to get free protection for your applications and to get access to all the features.
package/.swcrc CHANGED
@@ -1,15 +1,5 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/swcrc",
3
- "env": {
4
- "targets": {
5
- "chrome": "84",
6
- "edge": "84",
7
- "firefox": "75",
8
- "opera": "73",
9
- "safari": "14.1"
10
- },
11
- "bugfixes": true
12
- },
13
3
  "exclude": [
14
4
  "/testing",
15
5
  "/**/*.cy.ts",
@@ -32,7 +22,8 @@
32
22
  "runtime": "classic",
33
23
  "useSpread": true
34
24
  }
35
- }
25
+ },
26
+ "target": "es2019"
36
27
  },
37
28
  "minify": false,
38
29
  "sourceMaps": true
package/CHANGELOG.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "name": "@fluentui/priority-overflow",
3
3
  "entries": [
4
4
  {
5
- "date": "Fri, 17 Mar 2023 15:00:10 GMT",
6
- "tag": "@fluentui/priority-overflow_v0.0.0-nightly-20230317-1454.1",
7
- "version": "0.0.0-nightly-20230317-1454.1",
5
+ "date": "Wed, 22 Mar 2023 04:46:56 GMT",
6
+ "tag": "@fluentui/priority-overflow_v0.0.0-nightly-20230322-0439.1",
7
+ "version": "0.0.0-nightly-20230322-0439.1",
8
8
  "comments": {
9
9
  "prerelease": [
10
10
  {
@@ -16,6 +16,27 @@
16
16
  ]
17
17
  }
18
18
  },
19
+ {
20
+ "date": "Tue, 21 Mar 2023 21:23:19 GMT",
21
+ "tag": "@fluentui/priority-overflow_v9.0.2",
22
+ "version": "9.0.2",
23
+ "comments": {
24
+ "patch": [
25
+ {
26
+ "author": "tristan.watanabe@gmail.com",
27
+ "package": "@fluentui/priority-overflow",
28
+ "commit": "ead1c6d4c2ac3f3596b62b8cbc07b0a03041f11f",
29
+ "comment": "fix: add node field to package.json exports map."
30
+ },
31
+ {
32
+ "author": "tristan.watanabe@gmail.com",
33
+ "package": "@fluentui/priority-overflow",
34
+ "commit": "2fac1a139149bd13b76b1306207bc988dca9c72c",
35
+ "comment": "chore: migrate to swc transpilation approach."
36
+ }
37
+ ]
38
+ }
39
+ },
19
40
  {
20
41
  "date": "Tue, 07 Feb 2023 14:13:08 GMT",
21
42
  "tag": "@fluentui/priority-overflow_v9.0.1",
package/CHANGELOG.md CHANGED
@@ -1,18 +1,28 @@
1
1
  # Change Log - @fluentui/priority-overflow
2
2
 
3
- This log was last generated on Fri, 17 Mar 2023 15:00:10 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 22 Mar 2023 04:46:56 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.0.0-nightly-20230317-1454.1](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v0.0.0-nightly-20230317-1454.1)
7
+ ## [0.0.0-nightly-20230322-0439.1](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v0.0.0-nightly-20230322-0439.1)
8
8
 
9
- Fri, 17 Mar 2023 15:00:10 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.0.1..@fluentui/priority-overflow_v0.0.0-nightly-20230317-1454.1)
9
+ Wed, 22 Mar 2023 04:46:56 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.0.2..@fluentui/priority-overflow_v0.0.0-nightly-20230322-0439.1)
11
11
 
12
12
  ### Changes
13
13
 
14
14
  - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/not available) by fluentui-internal@service.microsoft.com)
15
15
 
16
+ ## [9.0.2](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v9.0.2)
17
+
18
+ Tue, 21 Mar 2023 21:23:19 GMT
19
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.0.1..@fluentui/priority-overflow_v9.0.2)
20
+
21
+ ### Patches
22
+
23
+ - fix: add node field to package.json exports map. ([PR #27154](https://github.com/microsoft/fluentui/pull/27154) by tristan.watanabe@gmail.com)
24
+ - chore: migrate to swc transpilation approach. ([PR #27250](https://github.com/microsoft/fluentui/pull/27250) by tristan.watanabe@gmail.com)
25
+
16
26
  ## [9.0.1](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v9.0.1)
17
27
 
18
28
  Tue, 07 Feb 2023 14:13:08 GMT
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { createOverflowManager } from "./overflowManager";
1
+ export { createOverflowManager } from './overflowManager';
2
2
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- import { debounce } from "./debounce";
2
- import { createPriorityQueue } from "./priorityQueue";
1
+ import { debounce } from './debounce';
2
+ import { createPriorityQueue } from './priorityQueue';
3
3
  /**
4
4
  * @internal
5
5
  * @returns overflow manager instance
@@ -13,8 +13,8 @@ export function createOverflowManager() {
13
13
  let forceDispatch = false;
14
14
  const options = {
15
15
  padding: 10,
16
- overflowAxis: "horizontal",
17
- overflowDirection: "end",
16
+ overflowAxis: 'horizontal',
17
+ overflowDirection: 'end',
18
18
  minimumVisible: 0,
19
19
  onUpdateItemVisibility: () => undefined,
20
20
  onUpdateOverflow: () => undefined
@@ -35,7 +35,7 @@ export function createOverflowManager() {
35
35
  if (priority !== 0) {
36
36
  return priority;
37
37
  }
38
- const positionStatusBit = options.overflowDirection === "end" ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;
38
+ const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;
39
39
  // equal priority, use DOM order
40
40
  // eslint-disable-next-line no-bitwise
41
41
  return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;
@@ -48,13 +48,13 @@ export function createOverflowManager() {
48
48
  if (priority !== 0) {
49
49
  return priority;
50
50
  }
51
- const positionStatusBit = options.overflowDirection === "end" ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
51
+ const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
52
52
  // equal priority, use DOM order
53
53
  // eslint-disable-next-line no-bitwise
54
54
  return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;
55
55
  });
56
56
  const getOffsetSize = el => {
57
- return options.overflowAxis === "horizontal" ? el.offsetWidth : el.offsetHeight;
57
+ return options.overflowAxis === 'horizontal' ? el.offsetWidth : el.offsetHeight;
58
58
  };
59
59
  const makeItemVisible = () => {
60
60
  const nextVisible = invisibleItemQueue.dequeue();
@@ -93,11 +93,11 @@ export function createOverflowManager() {
93
93
  const groupVisibility = {};
94
94
  Object.entries(overflowGroups).forEach(([groupId, groupState]) => {
95
95
  if (groupState.invisibleItemIds.size && groupState.visibleItemIds.size) {
96
- groupVisibility[groupId] = "overflow";
96
+ groupVisibility[groupId] = 'overflow';
97
97
  } else if (groupState.visibleItemIds.size === 0) {
98
- groupVisibility[groupId] = "hidden";
98
+ groupVisibility[groupId] = 'hidden';
99
99
  } else {
100
- groupVisibility[groupId] = "visible";
100
+ groupVisibility[groupId] = 'visible';
101
101
  }
102
102
  });
103
103
  options.onUpdateOverflow({
@@ -35,7 +35,7 @@
35
35
  };
36
36
  const dequeue = () => {
37
37
  if (size === 0) {
38
- throw new Error("Priority queue empty");
38
+ throw new Error('Priority queue empty');
39
39
  }
40
40
  const res = arr[0];
41
41
  arr[0] = arr[--size];
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/index.js"],"sourcesContent":["export { createOverflowManager } from \"./overflowManager\";\n//# sourceMappingURL=index.js.map"],"names":["createOverflowManager"],"mappings":";;;;+BAASA;;aAAAA,sCAAqB;;iCAAQ;CACtC,iCAAiC"}
1
+ {"version":3,"sources":["../lib/index.js"],"sourcesContent":["export { createOverflowManager } from './overflowManager';\n//# sourceMappingURL=index.js.map"],"names":["createOverflowManager"],"mappings":";;;;+BAASA;;aAAAA,sCAAqB;;iCAAQ;CACtC,iCAAiC"}
@@ -17,8 +17,8 @@ function createOverflowManager() {
17
17
  let forceDispatch = false;
18
18
  const options = {
19
19
  padding: 10,
20
- overflowAxis: "horizontal",
21
- overflowDirection: "end",
20
+ overflowAxis: 'horizontal',
21
+ overflowDirection: 'end',
22
22
  minimumVisible: 0,
23
23
  onUpdateItemVisibility: ()=>undefined,
24
24
  onUpdateOverflow: ()=>undefined
@@ -39,7 +39,7 @@ function createOverflowManager() {
39
39
  if (priority !== 0) {
40
40
  return priority;
41
41
  }
42
- const positionStatusBit = options.overflowDirection === "end" ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;
42
+ const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;
43
43
  // equal priority, use DOM order
44
44
  // eslint-disable-next-line no-bitwise
45
45
  return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;
@@ -52,13 +52,13 @@ function createOverflowManager() {
52
52
  if (priority !== 0) {
53
53
  return priority;
54
54
  }
55
- const positionStatusBit = options.overflowDirection === "end" ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
55
+ const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
56
56
  // equal priority, use DOM order
57
57
  // eslint-disable-next-line no-bitwise
58
58
  return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;
59
59
  });
60
60
  const getOffsetSize = (el)=>{
61
- return options.overflowAxis === "horizontal" ? el.offsetWidth : el.offsetHeight;
61
+ return options.overflowAxis === 'horizontal' ? el.offsetWidth : el.offsetHeight;
62
62
  };
63
63
  const makeItemVisible = ()=>{
64
64
  const nextVisible = invisibleItemQueue.dequeue();
@@ -97,11 +97,11 @@ function createOverflowManager() {
97
97
  const groupVisibility = {};
98
98
  Object.entries(overflowGroups).forEach(([groupId, groupState])=>{
99
99
  if (groupState.invisibleItemIds.size && groupState.visibleItemIds.size) {
100
- groupVisibility[groupId] = "overflow";
100
+ groupVisibility[groupId] = 'overflow';
101
101
  } else if (groupState.visibleItemIds.size === 0) {
102
- groupVisibility[groupId] = "hidden";
102
+ groupVisibility[groupId] = 'hidden';
103
103
  } else {
104
- groupVisibility[groupId] = "visible";
104
+ groupVisibility[groupId] = 'visible';
105
105
  }
106
106
  });
107
107
  options.onUpdateOverflow({
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/overflowManager.js"],"sourcesContent":["import { debounce } from \"./debounce\";\nimport { createPriorityQueue } from \"./priorityQueue\";\n/**\n * @internal\n * @returns overflow manager instance\n */\nexport function createOverflowManager() {\n let container;\n let overflowMenu;\n // Set as true when resize observer is observing\n let observing = false;\n // If true, next update will dispatch to onUpdateOverflow even if queue top states don't change\n let forceDispatch = false;\n const options = {\n padding: 10,\n overflowAxis: \"horizontal\",\n overflowDirection: \"end\",\n minimumVisible: 0,\n onUpdateItemVisibility: () => undefined,\n onUpdateOverflow: () => undefined\n };\n const overflowItems = {};\n const overflowGroups = {};\n const resizeObserver = new ResizeObserver(entries => {\n if (!entries[0] || !container) {\n return;\n }\n update();\n });\n const invisibleItemQueue = createPriorityQueue((a, b) => {\n const itemA = overflowItems[a];\n const itemB = overflowItems[b];\n // Higher priority at the top of the queue\n const priority = itemB.priority - itemA.priority;\n if (priority !== 0) {\n return priority;\n }\n const positionStatusBit = options.overflowDirection === \"end\" ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n // equal priority, use DOM order\n // eslint-disable-next-line no-bitwise\n return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;\n });\n const visibleItemQueue = createPriorityQueue((a, b) => {\n const itemA = overflowItems[a];\n const itemB = overflowItems[b];\n // Lower priority at the top of the queue\n const priority = itemA.priority - itemB.priority;\n if (priority !== 0) {\n return priority;\n }\n const positionStatusBit = options.overflowDirection === \"end\" ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;\n // equal priority, use DOM order\n // eslint-disable-next-line no-bitwise\n return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;\n });\n const getOffsetSize = el => {\n return options.overflowAxis === \"horizontal\" ? el.offsetWidth : el.offsetHeight;\n };\n const makeItemVisible = () => {\n const nextVisible = invisibleItemQueue.dequeue();\n visibleItemQueue.enqueue(nextVisible);\n const item = overflowItems[nextVisible];\n options.onUpdateItemVisibility({\n item,\n visible: true\n });\n if (item.groupId) {\n overflowGroups[item.groupId].invisibleItemIds.delete(item.id);\n overflowGroups[item.groupId].visibleItemIds.add(item.id);\n }\n return getOffsetSize(item.element);\n };\n const makeItemInvisible = () => {\n const nextInvisible = visibleItemQueue.dequeue();\n invisibleItemQueue.enqueue(nextInvisible);\n const item = overflowItems[nextInvisible];\n const width = getOffsetSize(item.element);\n options.onUpdateItemVisibility({\n item,\n visible: false\n });\n if (item.groupId) {\n overflowGroups[item.groupId].visibleItemIds.delete(item.id);\n overflowGroups[item.groupId].invisibleItemIds.add(item.id);\n }\n return width;\n };\n const dispatchOverflowUpdate = () => {\n const visibleItemIds = visibleItemQueue.all();\n const invisibleItemIds = invisibleItemQueue.all();\n const visibleItems = visibleItemIds.map(itemId => overflowItems[itemId]);\n const invisibleItems = invisibleItemIds.map(itemId => overflowItems[itemId]);\n const groupVisibility = {};\n Object.entries(overflowGroups).forEach(([groupId, groupState]) => {\n if (groupState.invisibleItemIds.size && groupState.visibleItemIds.size) {\n groupVisibility[groupId] = \"overflow\";\n } else if (groupState.visibleItemIds.size === 0) {\n groupVisibility[groupId] = \"hidden\";\n } else {\n groupVisibility[groupId] = \"visible\";\n }\n });\n options.onUpdateOverflow({\n visibleItems,\n invisibleItems,\n groupVisibility\n });\n };\n const processOverflowItems = () => {\n if (!container) {\n return false;\n }\n const availableSize = getOffsetSize(container) - options.padding;\n const overflowMenuOffset = overflowMenu ? getOffsetSize(overflowMenu) : 0;\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n const visibleItemIds = visibleItemQueue.all();\n let currentWidth = visibleItemIds.reduce((sum, visibleItemId) => {\n const child = overflowItems[visibleItemId].element;\n return sum + getOffsetSize(child);\n }, 0);\n // Add items until available width is filled - can result in overflow\n while (currentWidth < availableSize && invisibleItemQueue.size() > 0) {\n currentWidth += makeItemVisible();\n }\n // Remove items until there's no more overflow\n while (currentWidth > availableSize && visibleItemQueue.size() > 0) {\n if (visibleItemQueue.size() <= options.minimumVisible) {\n break;\n }\n currentWidth -= makeItemInvisible();\n }\n // make sure the overflow menu can fit\n if (visibleItemQueue.size() > options.minimumVisible && invisibleItemQueue.size() > 0 && currentWidth + overflowMenuOffset > availableSize) {\n makeItemInvisible();\n }\n // only update when the state of visible/invisible items has changed\n if (visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop) {\n return true;\n }\n return false;\n };\n const forceUpdate = () => {\n if (processOverflowItems() || forceDispatch) {\n forceDispatch = false;\n dispatchOverflowUpdate();\n }\n };\n const update = debounce(forceUpdate);\n const observe = (observedContainer, userOptions) => {\n Object.assign(options, userOptions);\n observing = true;\n Object.values(overflowItems).forEach(item => visibleItemQueue.enqueue(item.id));\n container = observedContainer;\n resizeObserver.observe(container);\n };\n const disconnect = () => {\n observing = false;\n resizeObserver.disconnect();\n };\n const addItem = item => {\n if (overflowItems[item.id]) {\n return;\n }\n overflowItems[item.id] = item;\n // some options can affect priority which are only set on `observe`\n if (observing) {\n // Updates to elements might not change the queue tops\n // i.e. new element is enqueued but the top of the queue stays the same\n // force a dispatch on the next batched update\n forceDispatch = true;\n visibleItemQueue.enqueue(item.id);\n }\n if (item.groupId) {\n if (!overflowGroups[item.groupId]) {\n overflowGroups[item.groupId] = {\n visibleItemIds: new Set(),\n invisibleItemIds: new Set()\n };\n }\n overflowGroups[item.groupId].visibleItemIds.add(item.id);\n }\n update();\n };\n const addOverflowMenu = el => {\n overflowMenu = el;\n };\n const removeOverflowMenu = () => {\n overflowMenu = undefined;\n };\n const removeItem = itemId => {\n if (!overflowItems[itemId]) {\n return;\n }\n const item = overflowItems[itemId];\n visibleItemQueue.remove(itemId);\n invisibleItemQueue.remove(itemId);\n if (item.groupId) {\n overflowGroups[item.groupId].visibleItemIds.delete(item.id);\n overflowGroups[item.groupId].invisibleItemIds.delete(item.id);\n }\n delete overflowItems[itemId];\n update();\n };\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu\n };\n}\n//# sourceMappingURL=overflowManager.js.map"],"names":["createOverflowManager","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowGroups","resizeObserver","ResizeObserver","entries","update","invisibleItemQueue","createPriorityQueue","a","b","itemA","itemB","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","visibleItemQueue","getOffsetSize","el","offsetWidth","offsetHeight","makeItemVisible","nextVisible","dequeue","enqueue","item","visible","groupId","invisibleItemIds","delete","id","visibleItemIds","add","makeItemInvisible","nextInvisible","width","dispatchOverflowUpdate","all","visibleItems","map","itemId","invisibleItems","groupVisibility","Object","forEach","groupState","size","processOverflowItems","availableSize","overflowMenuOffset","visibleTop","peek","invisibleTop","currentWidth","reduce","sum","visibleItemId","child","forceUpdate","debounce","observe","observedContainer","userOptions","assign","values","disconnect","addItem","Set","addOverflowMenu","removeOverflowMenu","removeItem","remove"],"mappings":"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"}
1
+ {"version":3,"sources":["../lib/overflowManager.js"],"sourcesContent":["import { debounce } from './debounce';\nimport { createPriorityQueue } from './priorityQueue';\n/**\n * @internal\n * @returns overflow manager instance\n */\nexport function createOverflowManager() {\n let container;\n let overflowMenu;\n // Set as true when resize observer is observing\n let observing = false;\n // If true, next update will dispatch to onUpdateOverflow even if queue top states don't change\n let forceDispatch = false;\n const options = {\n padding: 10,\n overflowAxis: 'horizontal',\n overflowDirection: 'end',\n minimumVisible: 0,\n onUpdateItemVisibility: () => undefined,\n onUpdateOverflow: () => undefined\n };\n const overflowItems = {};\n const overflowGroups = {};\n const resizeObserver = new ResizeObserver(entries => {\n if (!entries[0] || !container) {\n return;\n }\n update();\n });\n const invisibleItemQueue = createPriorityQueue((a, b) => {\n const itemA = overflowItems[a];\n const itemB = overflowItems[b];\n // Higher priority at the top of the queue\n const priority = itemB.priority - itemA.priority;\n if (priority !== 0) {\n return priority;\n }\n const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n // equal priority, use DOM order\n // eslint-disable-next-line no-bitwise\n return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;\n });\n const visibleItemQueue = createPriorityQueue((a, b) => {\n const itemA = overflowItems[a];\n const itemB = overflowItems[b];\n // Lower priority at the top of the queue\n const priority = itemA.priority - itemB.priority;\n if (priority !== 0) {\n return priority;\n }\n const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;\n // equal priority, use DOM order\n // eslint-disable-next-line no-bitwise\n return itemA.element.compareDocumentPosition(itemB.element) & positionStatusBit ? -1 : 1;\n });\n const getOffsetSize = el => {\n return options.overflowAxis === 'horizontal' ? el.offsetWidth : el.offsetHeight;\n };\n const makeItemVisible = () => {\n const nextVisible = invisibleItemQueue.dequeue();\n visibleItemQueue.enqueue(nextVisible);\n const item = overflowItems[nextVisible];\n options.onUpdateItemVisibility({\n item,\n visible: true\n });\n if (item.groupId) {\n overflowGroups[item.groupId].invisibleItemIds.delete(item.id);\n overflowGroups[item.groupId].visibleItemIds.add(item.id);\n }\n return getOffsetSize(item.element);\n };\n const makeItemInvisible = () => {\n const nextInvisible = visibleItemQueue.dequeue();\n invisibleItemQueue.enqueue(nextInvisible);\n const item = overflowItems[nextInvisible];\n const width = getOffsetSize(item.element);\n options.onUpdateItemVisibility({\n item,\n visible: false\n });\n if (item.groupId) {\n overflowGroups[item.groupId].visibleItemIds.delete(item.id);\n overflowGroups[item.groupId].invisibleItemIds.add(item.id);\n }\n return width;\n };\n const dispatchOverflowUpdate = () => {\n const visibleItemIds = visibleItemQueue.all();\n const invisibleItemIds = invisibleItemQueue.all();\n const visibleItems = visibleItemIds.map(itemId => overflowItems[itemId]);\n const invisibleItems = invisibleItemIds.map(itemId => overflowItems[itemId]);\n const groupVisibility = {};\n Object.entries(overflowGroups).forEach(([groupId, groupState]) => {\n if (groupState.invisibleItemIds.size && groupState.visibleItemIds.size) {\n groupVisibility[groupId] = 'overflow';\n } else if (groupState.visibleItemIds.size === 0) {\n groupVisibility[groupId] = 'hidden';\n } else {\n groupVisibility[groupId] = 'visible';\n }\n });\n options.onUpdateOverflow({\n visibleItems,\n invisibleItems,\n groupVisibility\n });\n };\n const processOverflowItems = () => {\n if (!container) {\n return false;\n }\n const availableSize = getOffsetSize(container) - options.padding;\n const overflowMenuOffset = overflowMenu ? getOffsetSize(overflowMenu) : 0;\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n const visibleItemIds = visibleItemQueue.all();\n let currentWidth = visibleItemIds.reduce((sum, visibleItemId) => {\n const child = overflowItems[visibleItemId].element;\n return sum + getOffsetSize(child);\n }, 0);\n // Add items until available width is filled - can result in overflow\n while (currentWidth < availableSize && invisibleItemQueue.size() > 0) {\n currentWidth += makeItemVisible();\n }\n // Remove items until there's no more overflow\n while (currentWidth > availableSize && visibleItemQueue.size() > 0) {\n if (visibleItemQueue.size() <= options.minimumVisible) {\n break;\n }\n currentWidth -= makeItemInvisible();\n }\n // make sure the overflow menu can fit\n if (visibleItemQueue.size() > options.minimumVisible && invisibleItemQueue.size() > 0 && currentWidth + overflowMenuOffset > availableSize) {\n makeItemInvisible();\n }\n // only update when the state of visible/invisible items has changed\n if (visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop) {\n return true;\n }\n return false;\n };\n const forceUpdate = () => {\n if (processOverflowItems() || forceDispatch) {\n forceDispatch = false;\n dispatchOverflowUpdate();\n }\n };\n const update = debounce(forceUpdate);\n const observe = (observedContainer, userOptions) => {\n Object.assign(options, userOptions);\n observing = true;\n Object.values(overflowItems).forEach(item => visibleItemQueue.enqueue(item.id));\n container = observedContainer;\n resizeObserver.observe(container);\n };\n const disconnect = () => {\n observing = false;\n resizeObserver.disconnect();\n };\n const addItem = item => {\n if (overflowItems[item.id]) {\n return;\n }\n overflowItems[item.id] = item;\n // some options can affect priority which are only set on `observe`\n if (observing) {\n // Updates to elements might not change the queue tops\n // i.e. new element is enqueued but the top of the queue stays the same\n // force a dispatch on the next batched update\n forceDispatch = true;\n visibleItemQueue.enqueue(item.id);\n }\n if (item.groupId) {\n if (!overflowGroups[item.groupId]) {\n overflowGroups[item.groupId] = {\n visibleItemIds: new Set(),\n invisibleItemIds: new Set()\n };\n }\n overflowGroups[item.groupId].visibleItemIds.add(item.id);\n }\n update();\n };\n const addOverflowMenu = el => {\n overflowMenu = el;\n };\n const removeOverflowMenu = () => {\n overflowMenu = undefined;\n };\n const removeItem = itemId => {\n if (!overflowItems[itemId]) {\n return;\n }\n const item = overflowItems[itemId];\n visibleItemQueue.remove(itemId);\n invisibleItemQueue.remove(itemId);\n if (item.groupId) {\n overflowGroups[item.groupId].visibleItemIds.delete(item.id);\n overflowGroups[item.groupId].invisibleItemIds.delete(item.id);\n }\n delete overflowItems[itemId];\n update();\n };\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu\n };\n}\n//# sourceMappingURL=overflowManager.js.map"],"names":["createOverflowManager","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowGroups","resizeObserver","ResizeObserver","entries","update","invisibleItemQueue","createPriorityQueue","a","b","itemA","itemB","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","visibleItemQueue","getOffsetSize","el","offsetWidth","offsetHeight","makeItemVisible","nextVisible","dequeue","enqueue","item","visible","groupId","invisibleItemIds","delete","id","visibleItemIds","add","makeItemInvisible","nextInvisible","width","dispatchOverflowUpdate","all","visibleItems","map","itemId","invisibleItems","groupVisibility","Object","forEach","groupState","size","processOverflowItems","availableSize","overflowMenuOffset","visibleTop","peek","invisibleTop","currentWidth","reduce","sum","visibleItemId","child","forceUpdate","debounce","observe","observedContainer","userOptions","assign","values","disconnect","addItem","Set","addOverflowMenu","removeOverflowMenu","removeItem","remove"],"mappings":"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"}
@@ -43,7 +43,7 @@ function createPriorityQueue(compare) {
43
43
  };
44
44
  const dequeue = ()=>{
45
45
  if (size === 0) {
46
- throw new Error("Priority queue empty");
46
+ throw new Error('Priority queue empty');
47
47
  }
48
48
  const res = arr[0];
49
49
  arr[0] = arr[--size];
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/priorityQueue.js"],"sourcesContent":["/**\n * @param compare - comparison function for items\n * @returns Priority queue implemented with a min heap\n */export function createPriorityQueue(compare) {\n const arr = [];\n let size = 0;\n const left = i => {\n return 2 * i + 1;\n };\n const right = i => {\n return 2 * i + 2;\n };\n const parent = i => {\n return Math.floor((i - 1) / 2);\n };\n const swap = (a, b) => {\n const tmp = arr[a];\n arr[a] = arr[b];\n arr[b] = tmp;\n };\n const heapify = i => {\n let smallest = i;\n const l = left(i);\n const r = right(i);\n if (l < size && compare(arr[l], arr[smallest]) < 0) {\n smallest = l;\n }\n if (r < size && compare(arr[r], arr[smallest]) < 0) {\n smallest = r;\n }\n if (smallest !== i) {\n swap(smallest, i);\n heapify(smallest);\n }\n };\n const dequeue = () => {\n if (size === 0) {\n throw new Error(\"Priority queue empty\");\n }\n const res = arr[0];\n arr[0] = arr[--size];\n heapify(0);\n return res;\n };\n const peek = () => {\n if (size === 0) {\n return null;\n }\n return arr[0];\n };\n const enqueue = item => {\n arr[size++] = item;\n let i = size - 1;\n let p = parent(i);\n while (i > 0 && compare(arr[p], arr[i]) > 0) {\n swap(p, i);\n i = p;\n p = parent(i);\n }\n };\n const contains = item => {\n const index = arr.indexOf(item);\n return index >= 0 && index < size;\n };\n const remove = item => {\n const i = arr.indexOf(item);\n if (i === -1 || i >= size) {\n return;\n }\n arr[i] = arr[--size];\n heapify(i);\n };\n const clear = () => {\n size = 0;\n };\n const all = () => {\n return arr.slice(0, size);\n };\n return {\n all,\n clear,\n contains,\n dequeue,\n enqueue,\n peek,\n remove,\n size: () => size\n };\n}\n//# sourceMappingURL=priorityQueue.js.map"],"names":["createPriorityQueue","compare","arr","size","left","i","right","parent","Math","floor","swap","a","b","tmp","heapify","smallest","l","r","dequeue","Error","res","peek","enqueue","item","p","contains","index","indexOf","remove","clear","all","slice"],"mappings":"AAAA;;;CAGC;;;;+BAAkBA;;aAAAA;;AAAT,SAASA,oBAAoBC,OAAO,EAAE;IAC9C,MAAMC,MAAM,EAAE;IACd,IAAIC,OAAO;IACX,MAAMC,OAAOC,CAAAA,IAAK;QAChB,OAAO,IAAIA,IAAI;IACjB;IACA,MAAMC,QAAQD,CAAAA,IAAK;QACjB,OAAO,IAAIA,IAAI;IACjB;IACA,MAAME,SAASF,CAAAA,IAAK;QAClB,OAAOG,KAAKC,KAAK,CAAC,AAACJ,CAAAA,IAAI,CAAA,IAAK;IAC9B;IACA,MAAMK,OAAO,CAACC,GAAGC,IAAM;QACrB,MAAMC,MAAMX,GAAG,CAACS,EAAE;QAClBT,GAAG,CAACS,EAAE,GAAGT,GAAG,CAACU,EAAE;QACfV,GAAG,CAACU,EAAE,GAAGC;IACX;IACA,MAAMC,UAAUT,CAAAA,IAAK;QACnB,IAAIU,WAAWV;QACf,MAAMW,IAAIZ,KAAKC;QACf,MAAMY,IAAIX,MAAMD;QAChB,IAAIW,IAAIb,QAAQF,QAAQC,GAAG,CAACc,EAAE,EAAEd,GAAG,CAACa,SAAS,IAAI,GAAG;YAClDA,WAAWC;QACb,CAAC;QACD,IAAIC,IAAId,QAAQF,QAAQC,GAAG,CAACe,EAAE,EAAEf,GAAG,CAACa,SAAS,IAAI,GAAG;YAClDA,WAAWE;QACb,CAAC;QACD,IAAIF,aAAaV,GAAG;YAClBK,KAAKK,UAAUV;YACfS,QAAQC;QACV,CAAC;IACH;IACA,MAAMG,UAAU,IAAM;QACpB,IAAIf,SAAS,GAAG;YACd,MAAM,IAAIgB,MAAM,wBAAwB;QAC1C,CAAC;QACD,MAAMC,MAAMlB,GAAG,CAAC,EAAE;QAClBA,GAAG,CAAC,EAAE,GAAGA,GAAG,CAAC,EAAEC,KAAK;QACpBW,QAAQ;QACR,OAAOM;IACT;IACA,MAAMC,OAAO,IAAM;QACjB,IAAIlB,SAAS,GAAG;YACd,OAAO,IAAI;QACb,CAAC;QACD,OAAOD,GAAG,CAAC,EAAE;IACf;IACA,MAAMoB,UAAUC,CAAAA,OAAQ;QACtBrB,GAAG,CAACC,OAAO,GAAGoB;QACd,IAAIlB,IAAIF,OAAO;QACf,IAAIqB,IAAIjB,OAAOF;QACf,MAAOA,IAAI,KAAKJ,QAAQC,GAAG,CAACsB,EAAE,EAAEtB,GAAG,CAACG,EAAE,IAAI,EAAG;YAC3CK,KAAKc,GAAGnB;YACRA,IAAImB;YACJA,IAAIjB,OAAOF;QACb;IACF;IACA,MAAMoB,WAAWF,CAAAA,OAAQ;QACvB,MAAMG,QAAQxB,IAAIyB,OAAO,CAACJ;QAC1B,OAAOG,SAAS,KAAKA,QAAQvB;IAC/B;IACA,MAAMyB,SAASL,CAAAA,OAAQ;QACrB,MAAMlB,IAAIH,IAAIyB,OAAO,CAACJ;QACtB,IAAIlB,MAAM,CAAC,KAAKA,KAAKF,MAAM;YACzB;QACF,CAAC;QACDD,GAAG,CAACG,EAAE,GAAGH,GAAG,CAAC,EAAEC,KAAK;QACpBW,QAAQT;IACV;IACA,MAAMwB,QAAQ,IAAM;QAClB1B,OAAO;IACT;IACA,MAAM2B,MAAM,IAAM;QAChB,OAAO5B,IAAI6B,KAAK,CAAC,GAAG5B;IACtB;IACA,OAAO;QACL2B;QACAD;QACAJ;QACAP;QACAI;QACAD;QACAO;QACAzB,MAAM,IAAMA;IACd;AACF,EACA,yCAAyC"}
1
+ {"version":3,"sources":["../lib/priorityQueue.js"],"sourcesContent":["/**\n * @param compare - comparison function for items\n * @returns Priority queue implemented with a min heap\n */export function createPriorityQueue(compare) {\n const arr = [];\n let size = 0;\n const left = i => {\n return 2 * i + 1;\n };\n const right = i => {\n return 2 * i + 2;\n };\n const parent = i => {\n return Math.floor((i - 1) / 2);\n };\n const swap = (a, b) => {\n const tmp = arr[a];\n arr[a] = arr[b];\n arr[b] = tmp;\n };\n const heapify = i => {\n let smallest = i;\n const l = left(i);\n const r = right(i);\n if (l < size && compare(arr[l], arr[smallest]) < 0) {\n smallest = l;\n }\n if (r < size && compare(arr[r], arr[smallest]) < 0) {\n smallest = r;\n }\n if (smallest !== i) {\n swap(smallest, i);\n heapify(smallest);\n }\n };\n const dequeue = () => {\n if (size === 0) {\n throw new Error('Priority queue empty');\n }\n const res = arr[0];\n arr[0] = arr[--size];\n heapify(0);\n return res;\n };\n const peek = () => {\n if (size === 0) {\n return null;\n }\n return arr[0];\n };\n const enqueue = item => {\n arr[size++] = item;\n let i = size - 1;\n let p = parent(i);\n while (i > 0 && compare(arr[p], arr[i]) > 0) {\n swap(p, i);\n i = p;\n p = parent(i);\n }\n };\n const contains = item => {\n const index = arr.indexOf(item);\n return index >= 0 && index < size;\n };\n const remove = item => {\n const i = arr.indexOf(item);\n if (i === -1 || i >= size) {\n return;\n }\n arr[i] = arr[--size];\n heapify(i);\n };\n const clear = () => {\n size = 0;\n };\n const all = () => {\n return arr.slice(0, size);\n };\n return {\n all,\n clear,\n contains,\n dequeue,\n enqueue,\n peek,\n remove,\n size: () => size\n };\n}\n//# sourceMappingURL=priorityQueue.js.map"],"names":["createPriorityQueue","compare","arr","size","left","i","right","parent","Math","floor","swap","a","b","tmp","heapify","smallest","l","r","dequeue","Error","res","peek","enqueue","item","p","contains","index","indexOf","remove","clear","all","slice"],"mappings":"AAAA;;;CAGC;;;;+BAAkBA;;aAAAA;;AAAT,SAASA,oBAAoBC,OAAO,EAAE;IAC9C,MAAMC,MAAM,EAAE;IACd,IAAIC,OAAO;IACX,MAAMC,OAAOC,CAAAA,IAAK;QAChB,OAAO,IAAIA,IAAI;IACjB;IACA,MAAMC,QAAQD,CAAAA,IAAK;QACjB,OAAO,IAAIA,IAAI;IACjB;IACA,MAAME,SAASF,CAAAA,IAAK;QAClB,OAAOG,KAAKC,KAAK,CAAC,AAACJ,CAAAA,IAAI,CAAA,IAAK;IAC9B;IACA,MAAMK,OAAO,CAACC,GAAGC,IAAM;QACrB,MAAMC,MAAMX,GAAG,CAACS,EAAE;QAClBT,GAAG,CAACS,EAAE,GAAGT,GAAG,CAACU,EAAE;QACfV,GAAG,CAACU,EAAE,GAAGC;IACX;IACA,MAAMC,UAAUT,CAAAA,IAAK;QACnB,IAAIU,WAAWV;QACf,MAAMW,IAAIZ,KAAKC;QACf,MAAMY,IAAIX,MAAMD;QAChB,IAAIW,IAAIb,QAAQF,QAAQC,GAAG,CAACc,EAAE,EAAEd,GAAG,CAACa,SAAS,IAAI,GAAG;YAClDA,WAAWC;QACb,CAAC;QACD,IAAIC,IAAId,QAAQF,QAAQC,GAAG,CAACe,EAAE,EAAEf,GAAG,CAACa,SAAS,IAAI,GAAG;YAClDA,WAAWE;QACb,CAAC;QACD,IAAIF,aAAaV,GAAG;YAClBK,KAAKK,UAAUV;YACfS,QAAQC;QACV,CAAC;IACH;IACA,MAAMG,UAAU,IAAM;QACpB,IAAIf,SAAS,GAAG;YACd,MAAM,IAAIgB,MAAM,wBAAwB;QAC1C,CAAC;QACD,MAAMC,MAAMlB,GAAG,CAAC,EAAE;QAClBA,GAAG,CAAC,EAAE,GAAGA,GAAG,CAAC,EAAEC,KAAK;QACpBW,QAAQ;QACR,OAAOM;IACT;IACA,MAAMC,OAAO,IAAM;QACjB,IAAIlB,SAAS,GAAG;YACd,OAAO,IAAI;QACb,CAAC;QACD,OAAOD,GAAG,CAAC,EAAE;IACf;IACA,MAAMoB,UAAUC,CAAAA,OAAQ;QACtBrB,GAAG,CAACC,OAAO,GAAGoB;QACd,IAAIlB,IAAIF,OAAO;QACf,IAAIqB,IAAIjB,OAAOF;QACf,MAAOA,IAAI,KAAKJ,QAAQC,GAAG,CAACsB,EAAE,EAAEtB,GAAG,CAACG,EAAE,IAAI,EAAG;YAC3CK,KAAKc,GAAGnB;YACRA,IAAImB;YACJA,IAAIjB,OAAOF;QACb;IACF;IACA,MAAMoB,WAAWF,CAAAA,OAAQ;QACvB,MAAMG,QAAQxB,IAAIyB,OAAO,CAACJ;QAC1B,OAAOG,SAAS,KAAKA,QAAQvB;IAC/B;IACA,MAAMyB,SAASL,CAAAA,OAAQ;QACrB,MAAMlB,IAAIH,IAAIyB,OAAO,CAACJ;QACtB,IAAIlB,MAAM,CAAC,KAAKA,KAAKF,MAAM;YACzB;QACF,CAAC;QACDD,GAAG,CAACG,EAAE,GAAGH,GAAG,CAAC,EAAEC,KAAK;QACpBW,QAAQT;IACV;IACA,MAAMwB,QAAQ,IAAM;QAClB1B,OAAO;IACT;IACA,MAAM2B,MAAM,IAAM;QAChB,OAAO5B,IAAI6B,KAAK,CAAC,GAAG5B;IACtB;IACA,OAAO;QACL2B;QACAD;QACAJ;QACAP;QACAI;QACAD;QACAO;QACAzB,MAAM,IAAMA;IACd;AACF,EACA,yCAAyC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/priority-overflow",
3
- "version": "0.0.0-nightly-20230317-1454.1",
3
+ "version": "0.0.0-nightly-20230322-0439.1",
4
4
  "description": "Vanilla JS utilities to implement overflow menus",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -34,6 +34,7 @@
34
34
  "exports": {
35
35
  ".": {
36
36
  "types": "./dist/index.d.ts",
37
+ "node": "./lib-commonjs/index.js",
37
38
  "import": "./lib/index.js",
38
39
  "require": "./lib-commonjs/index.js"
39
40
  },