@fluentui/priority-overflow 9.1.11 → 9.1.13

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.md CHANGED
@@ -1,12 +1,30 @@
1
1
  # Change Log - @fluentui/priority-overflow
2
2
 
3
- This log was last generated on Thu, 14 Dec 2023 09:51:32 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 06 Jun 2024 15:22:10 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.1.13](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v9.1.13)
8
+
9
+ Thu, 06 Jun 2024 15:22:10 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.1.12..@fluentui/priority-overflow_v9.1.13)
11
+
12
+ ### Patches
13
+
14
+ - chore: disable eslint rule ([PR #30967](https://github.com/microsoft/fluentui/pull/30967) by seanmonahan@microsoft.com)
15
+
16
+ ## [9.1.12](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v9.1.12)
17
+
18
+ Thu, 16 May 2024 09:25:11 GMT
19
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.1.11..@fluentui/priority-overflow_v9.1.12)
20
+
21
+ ### Patches
22
+
23
+ - force update the overflow when item is removed ([PR #31340](https://github.com/microsoft/fluentui/pull/31340) by miroslav.stastny@microsoft.com)
24
+
7
25
  ## [9.1.11](https://github.com/microsoft/fluentui/tree/@fluentui/priority-overflow_v9.1.11)
8
26
 
9
- Thu, 14 Dec 2023 09:51:32 GMT
27
+ Thu, 14 Dec 2023 09:58:42 GMT
10
28
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/priority-overflow_v9.1.10..@fluentui/priority-overflow_v9.1.11)
11
29
 
12
30
  ### Patches
@@ -5,15 +5,15 @@
5
5
  * @returns function to cleanup the resize observer
6
6
  */ export function observeResize(elementToObserve, callback) {
7
7
  var _elementToObserve_ownerDocument_defaultView;
8
- const GlobalResizeObsever = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;
9
- if (!GlobalResizeObsever) {
8
+ const GlobalResizeObserver = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;
9
+ if (!GlobalResizeObserver) {
10
10
  if (process.env.NODE_ENV !== 'production') {
11
11
  // eslint-disable-next-line no-console
12
12
  console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');
13
13
  }
14
14
  return ()=>null;
15
15
  }
16
- let resizeObserver = new GlobalResizeObsever(callback);
16
+ let resizeObserver = new GlobalResizeObserver(callback);
17
17
  resizeObserver.observe(elementToObserve);
18
18
  return ()=>{
19
19
  resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
@@ -1 +1 @@
1
- {"version":3,"sources":["createResizeObserver.ts"],"sourcesContent":["/**\n * Helper function that creates a resize observer in the element's own window global\n * @param elementToObserve - Uses the element's window global to create the resize observer\n * @param callback\n * @returns function to cleanup the resize observer\n */\nexport function observeResize(elementToObserve: HTMLElement, callback: ResizeObserverCallback) {\n const GlobalResizeObsever = elementToObserve.ownerDocument.defaultView?.ResizeObserver;\n\n if (!GlobalResizeObsever) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');\n }\n return () => null;\n }\n\n let resizeObserver: ResizeObserver | undefined = new GlobalResizeObsever(callback);\n resizeObserver.observe(elementToObserve);\n\n return () => {\n resizeObserver?.disconnect();\n resizeObserver = undefined;\n };\n}\n"],"names":["observeResize","elementToObserve","callback","GlobalResizeObsever","ownerDocument","defaultView","ResizeObserver","process","env","NODE_ENV","console","error","resizeObserver","observe","disconnect","undefined"],"mappings":"AAAA;;;;;CAKC,GACD,OAAO,SAASA,cAAcC,gBAA6B,EAAEC,QAAgC;QAC/DD;IAA5B,MAAME,uBAAsBF,8CAAAA,iBAAiBG,aAAa,CAACC,WAAW,cAA1CJ,kEAAAA,4CAA4CK,cAAc;IAEtF,IAAI,CAACH,qBAAqB;QACxB,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;YACzC,sCAAsC;YACtCC,QAAQC,KAAK,CAAC,+BAA+B;QAC/C;QACA,OAAO,IAAM;IACf;IAEA,IAAIC,iBAA6C,IAAIT,oBAAoBD;IACzEU,eAAeC,OAAO,CAACZ;IAEvB,OAAO;QACLW,2BAAAA,qCAAAA,eAAgBE,UAAU;QAC1BF,iBAAiBG;IACnB;AACF"}
1
+ {"version":3,"sources":["createResizeObserver.ts"],"sourcesContent":["/**\n * Helper function that creates a resize observer in the element's own window global\n * @param elementToObserve - Uses the element's window global to create the resize observer\n * @param callback\n * @returns function to cleanup the resize observer\n */\nexport function observeResize(elementToObserve: HTMLElement, callback: ResizeObserverCallback) {\n const GlobalResizeObserver = elementToObserve.ownerDocument.defaultView?.ResizeObserver;\n\n if (!GlobalResizeObserver) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');\n }\n return () => null;\n }\n\n let resizeObserver: InstanceType<typeof GlobalResizeObserver> | undefined = new GlobalResizeObserver(callback);\n resizeObserver.observe(elementToObserve);\n\n return () => {\n resizeObserver?.disconnect();\n resizeObserver = undefined;\n };\n}\n"],"names":["observeResize","elementToObserve","callback","GlobalResizeObserver","ownerDocument","defaultView","ResizeObserver","process","env","NODE_ENV","console","error","resizeObserver","observe","disconnect","undefined"],"mappings":"AAAA;;;;;CAKC,GACD,OAAO,SAASA,cAAcC,gBAA6B,EAAEC,QAAgC;QAC9DD;IAA7B,MAAME,wBAAuBF,8CAAAA,iBAAiBG,aAAa,CAACC,WAAW,cAA1CJ,kEAAAA,4CAA4CK,cAAc;IAEvF,IAAI,CAACH,sBAAsB;QACzB,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;YACzC,sCAAsC;YACtCC,QAAQC,KAAK,CAAC,+BAA+B;QAC/C;QACA,OAAO,IAAM;IACf;IAEA,IAAIC,iBAAwE,IAAIT,qBAAqBD;IACrGU,eAAeC,OAAO,CAACZ;IAEvB,OAAO;QACLW,2BAAAA,qCAAAA,eAAgBE,UAAU;QAC1BF,iBAAiBG;IACnB;AACF"}
@@ -194,6 +194,11 @@ import { createPriorityQueue } from './priorityQueue';
194
194
  if (!overflowItems[itemId]) {
195
195
  return;
196
196
  }
197
+ if (observing) {
198
+ // We might be removing an item in an overflow which would not affect the tops,
199
+ // but we need to update anyway to update the overflow menu state
200
+ forceDispatch = true;
201
+ }
197
202
  const item = overflowItems[itemId];
198
203
  visibleItemQueue.remove(itemId);
199
204
  invisibleItemQueue.remove(itemId);
@@ -1 +1 @@
1
- {"version":3,"sources":["overflowManager.ts"],"sourcesContent":["import { DATA_OVERFLOWING, DATA_OVERFLOW_GROUP } from './consts';\nimport { observeResize } from './createResizeObserver';\nimport { debounce } from './debounce';\nimport { createPriorityQueue, PriorityQueue } from './priorityQueue';\nimport type {\n OverflowGroupState,\n OverflowItemEntry,\n OverflowManager,\n ObserveOptions,\n OverflowDividerEntry,\n} from './types';\n\n/**\n * @internal\n * @returns overflow manager instance\n */\nexport function createOverflowManager(): OverflowManager {\n // calls to `offsetWidth or offsetHeight` can happen multiple times in an update\n // Use a cache to avoid causing too many recalcs and avoid scripting time to meausure sizes\n const sizeCache = new Map<HTMLElement, number>();\n let container: HTMLElement | undefined;\n let overflowMenu: HTMLElement | undefined;\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 // Initially true to force dispatch on first mount\n let forceDispatch = true;\n const options: Required<ObserveOptions> = {\n padding: 10,\n overflowAxis: 'horizontal',\n overflowDirection: 'end',\n minimumVisible: 0,\n onUpdateItemVisibility: () => undefined,\n onUpdateOverflow: () => undefined,\n };\n\n const overflowItems: Record<string, OverflowItemEntry> = {};\n const overflowDividers: Record<string, OverflowDividerEntry> = {};\n let disposeResizeObserver: () => void = () => null;\n\n const getNextItem = (queueToDequeue: PriorityQueue<string>, queueToEnqueue: PriorityQueue<string>) => {\n const nextItem = queueToDequeue.dequeue();\n queueToEnqueue.enqueue(nextItem);\n return overflowItems[nextItem];\n };\n\n const groupManager = createGroupManager();\n\n function compareItems(lt: string | null, rt: string | null): number {\n if (!lt || !rt) {\n return 0;\n }\n\n const lte = overflowItems[lt];\n const rte = overflowItems[rt];\n\n if (lte.priority !== rte.priority) {\n return lte.priority > rte.priority ? 1 : -1;\n }\n\n const positionStatusBit =\n options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n\n // eslint-disable-next-line no-bitwise\n return lte.element.compareDocumentPosition(rte.element) & positionStatusBit ? 1 : -1;\n }\n\n function getElementAxisSize(\n horizontal: 'clientWidth' | 'offsetWidth',\n vertical: 'clientHeight' | 'offsetHeight',\n el: HTMLElement,\n ): number {\n if (!sizeCache.has(el)) {\n sizeCache.set(el, options.overflowAxis === 'horizontal' ? el[horizontal] : el[vertical]);\n }\n\n return sizeCache.get(el)!;\n }\n\n const getOffsetSize = getElementAxisSize.bind(null, 'offsetWidth', 'offsetHeight');\n const getClientSize = getElementAxisSize.bind(null, 'clientWidth', 'clientHeight');\n\n const invisibleItemQueue = createPriorityQueue<string>((a, b) => -1 * compareItems(a, b));\n\n const visibleItemQueue = createPriorityQueue<string>(compareItems);\n\n function occupiedSize(): number {\n const totalItemSize = visibleItemQueue\n .all()\n .map(id => overflowItems[id].element)\n .map(getOffsetSize)\n .reduce((prev, current) => prev + current, 0);\n\n const totalDividerSize = Object.entries(groupManager.groupVisibility()).reduce(\n (acc, [id, state]) =>\n acc + (state !== 'hidden' && overflowDividers[id] ? getOffsetSize(overflowDividers[id].element) : 0),\n 0,\n );\n\n const overflowMenuSize = invisibleItemQueue.size() > 0 && overflowMenu ? getOffsetSize(overflowMenu) : 0;\n\n return totalItemSize + totalDividerSize + overflowMenuSize;\n }\n\n const showItem = () => {\n const item = getNextItem(invisibleItemQueue, visibleItemQueue);\n options.onUpdateItemVisibility({ item, visible: true });\n\n if (item.groupId) {\n groupManager.showItem(item.id, item.groupId);\n\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n overflowDividers[item.groupId]?.element.removeAttribute(DATA_OVERFLOWING);\n }\n }\n };\n\n const hideItem = () => {\n const item = getNextItem(visibleItemQueue, invisibleItemQueue);\n options.onUpdateItemVisibility({ item, visible: false });\n\n if (item.groupId) {\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n overflowDividers[item.groupId]?.element.setAttribute(DATA_OVERFLOWING, '');\n }\n\n groupManager.hideItem(item.id, item.groupId);\n }\n };\n\n const dispatchOverflowUpdate = () => {\n const visibleItemIds = visibleItemQueue.all();\n const invisibleItemIds = invisibleItemQueue.all();\n\n const visibleItems = visibleItemIds.map(itemId => overflowItems[itemId]);\n const invisibleItems = invisibleItemIds.map(itemId => overflowItems[itemId]);\n\n options.onUpdateOverflow({ visibleItems, invisibleItems, groupVisibility: groupManager.groupVisibility() });\n };\n\n const processOverflowItems = (): boolean => {\n if (!container) {\n return false;\n }\n sizeCache.clear();\n\n const availableSize = getClientSize(container) - options.padding;\n\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n\n while (compareItems(invisibleItemQueue.peek(), visibleItemQueue.peek()) > 0) {\n hideItem(); // hide elements whose priority become smaller than the highest priority of the hidden one\n }\n\n // Run the show/hide step twice - the first step might not be correct if\n // it was triggered by a new item being added - new items are always visible by default.\n for (let i = 0; i < 2; i++) {\n // Add items until available width is filled - can result in overflow\n while (\n (occupiedSize() < availableSize && invisibleItemQueue.size() > 0) ||\n invisibleItemQueue.size() === 1 // attempt to show the last invisible item hoping it's size does not exceed overflow menu size\n ) {\n showItem();\n }\n\n // Remove items until there's no more overflow\n while (occupiedSize() > availableSize && visibleItemQueue.size() > options.minimumVisible) {\n hideItem();\n }\n }\n\n // only update when the state of visible/invisible items has changed\n return visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop;\n };\n\n const forceUpdate: OverflowManager['forceUpdate'] = () => {\n if (processOverflowItems() || forceDispatch) {\n forceDispatch = false;\n dispatchOverflowUpdate();\n }\n };\n\n const update: OverflowManager['update'] = debounce(forceUpdate);\n\n const observe: OverflowManager['observe'] = (observedContainer, userOptions) => {\n Object.assign(options, userOptions);\n observing = true;\n Object.values(overflowItems).forEach(item => visibleItemQueue.enqueue(item.id));\n\n container = observedContainer;\n disposeResizeObserver = observeResize(container, entries => {\n if (!entries[0] || !container) {\n return;\n }\n\n update();\n });\n };\n\n const addItem: OverflowManager['addItem'] = item => {\n if (overflowItems[item.id]) {\n return;\n }\n\n overflowItems[item.id] = item;\n\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\n if (item.groupId) {\n groupManager.addItem(item.id, item.groupId);\n item.element.setAttribute(DATA_OVERFLOW_GROUP, item.groupId);\n }\n\n update();\n };\n\n const addOverflowMenu: OverflowManager['addOverflowMenu'] = el => {\n overflowMenu = el;\n };\n\n const addDivider: OverflowManager['addDivider'] = divider => {\n if (!divider.groupId || overflowDividers[divider.groupId]) {\n return;\n }\n\n divider.element.setAttribute(DATA_OVERFLOW_GROUP, divider.groupId);\n overflowDividers[divider.groupId] = divider;\n };\n\n const removeOverflowMenu: OverflowManager['removeOverflowMenu'] = () => {\n overflowMenu = undefined;\n };\n\n const removeDivider: OverflowManager['removeDivider'] = groupId => {\n if (!overflowDividers[groupId]) {\n return;\n }\n const divider = overflowDividers[groupId];\n if (divider.groupId) {\n delete overflowDividers[groupId];\n divider.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n };\n\n const removeItem: OverflowManager['removeItem'] = itemId => {\n if (!overflowItems[itemId]) {\n return;\n }\n\n const item = overflowItems[itemId];\n visibleItemQueue.remove(itemId);\n invisibleItemQueue.remove(itemId);\n\n if (item.groupId) {\n groupManager.removeItem(item.id, item.groupId);\n item.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n\n sizeCache.delete(item.element);\n delete overflowItems[itemId];\n update();\n };\n\n const disconnect: OverflowManager['disconnect'] = () => {\n disposeResizeObserver();\n\n // reset flags\n container = undefined;\n observing = false;\n forceDispatch = true;\n\n // clear all entries\n Object.keys(overflowItems).forEach(itemId => removeItem(itemId));\n Object.keys(overflowDividers).forEach(dividerId => removeDivider(dividerId));\n removeOverflowMenu();\n sizeCache.clear();\n };\n\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu,\n addDivider,\n removeDivider,\n };\n}\n\nconst createGroupManager = () => {\n const groupVisibility: Record<string, OverflowGroupState> = {};\n const groups: Record<string, { visibleItemIds: Set<string>; invisibleItemIds: Set<string> }> = {};\n function updateGroupVisibility(groupId: string) {\n const group = groups[groupId];\n if (group.invisibleItemIds.size && group.visibleItemIds.size) {\n groupVisibility[groupId] = 'overflow';\n } else if (group.visibleItemIds.size === 0) {\n groupVisibility[groupId] = 'hidden';\n } else {\n groupVisibility[groupId] = 'visible';\n }\n }\n function isGroupVisible(groupId: string) {\n return groupVisibility[groupId] === 'visible' || groupVisibility[groupId] === 'overflow';\n }\n return {\n groupVisibility: () => groupVisibility,\n isSingleItemVisible(itemId: string, groupId: string) {\n return (\n isGroupVisible(groupId) &&\n groups[groupId].visibleItemIds.has(itemId) &&\n groups[groupId].visibleItemIds.size === 1\n );\n },\n addItem(itemId: string, groupId: string) {\n groups[groupId] ??= {\n visibleItemIds: new Set<string>(),\n invisibleItemIds: new Set<string>(),\n };\n\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n removeItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n showItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n hideItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.add(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n };\n};\n"],"names":["DATA_OVERFLOWING","DATA_OVERFLOW_GROUP","observeResize","debounce","createPriorityQueue","createOverflowManager","sizeCache","Map","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowDividers","disposeResizeObserver","getNextItem","queueToDequeue","queueToEnqueue","nextItem","dequeue","enqueue","groupManager","createGroupManager","compareItems","lt","rt","lte","rte","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","getElementAxisSize","horizontal","vertical","el","has","set","get","getOffsetSize","bind","getClientSize","invisibleItemQueue","a","b","visibleItemQueue","occupiedSize","totalItemSize","all","map","id","reduce","prev","current","totalDividerSize","Object","entries","groupVisibility","acc","state","overflowMenuSize","size","showItem","item","visible","groupId","isSingleItemVisible","removeAttribute","hideItem","setAttribute","dispatchOverflowUpdate","visibleItemIds","invisibleItemIds","visibleItems","itemId","invisibleItems","processOverflowItems","clear","availableSize","visibleTop","peek","invisibleTop","i","forceUpdate","update","observe","observedContainer","userOptions","assign","values","forEach","addItem","addOverflowMenu","addDivider","divider","removeOverflowMenu","removeDivider","removeItem","remove","delete","disconnect","keys","dividerId","groups","updateGroupVisibility","group","isGroupVisible","Set","add"],"mappings":"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"}
1
+ {"version":3,"sources":["overflowManager.ts"],"sourcesContent":["import { DATA_OVERFLOWING, DATA_OVERFLOW_GROUP } from './consts';\nimport { observeResize } from './createResizeObserver';\nimport { debounce } from './debounce';\nimport { createPriorityQueue, PriorityQueue } from './priorityQueue';\nimport type {\n OverflowGroupState,\n OverflowItemEntry,\n OverflowManager,\n ObserveOptions,\n OverflowDividerEntry,\n} from './types';\n\n/**\n * @internal\n * @returns overflow manager instance\n */\nexport function createOverflowManager(): OverflowManager {\n // calls to `offsetWidth or offsetHeight` can happen multiple times in an update\n // Use a cache to avoid causing too many recalcs and avoid scripting time to meausure sizes\n const sizeCache = new Map<HTMLElement, number>();\n let container: HTMLElement | undefined;\n let overflowMenu: HTMLElement | undefined;\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 // Initially true to force dispatch on first mount\n let forceDispatch = true;\n const options: Required<ObserveOptions> = {\n padding: 10,\n overflowAxis: 'horizontal',\n overflowDirection: 'end',\n minimumVisible: 0,\n onUpdateItemVisibility: () => undefined,\n onUpdateOverflow: () => undefined,\n };\n\n const overflowItems: Record<string, OverflowItemEntry> = {};\n const overflowDividers: Record<string, OverflowDividerEntry> = {};\n let disposeResizeObserver: () => void = () => null;\n\n const getNextItem = (queueToDequeue: PriorityQueue<string>, queueToEnqueue: PriorityQueue<string>) => {\n const nextItem = queueToDequeue.dequeue();\n queueToEnqueue.enqueue(nextItem);\n return overflowItems[nextItem];\n };\n\n const groupManager = createGroupManager();\n\n function compareItems(lt: string | null, rt: string | null): number {\n if (!lt || !rt) {\n return 0;\n }\n\n const lte = overflowItems[lt];\n const rte = overflowItems[rt];\n\n if (lte.priority !== rte.priority) {\n return lte.priority > rte.priority ? 1 : -1;\n }\n\n const positionStatusBit =\n options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n\n // eslint-disable-next-line no-bitwise\n return lte.element.compareDocumentPosition(rte.element) & positionStatusBit ? 1 : -1;\n }\n\n function getElementAxisSize(\n horizontal: 'clientWidth' | 'offsetWidth',\n vertical: 'clientHeight' | 'offsetHeight',\n el: HTMLElement,\n ): number {\n if (!sizeCache.has(el)) {\n sizeCache.set(el, options.overflowAxis === 'horizontal' ? el[horizontal] : el[vertical]);\n }\n\n return sizeCache.get(el)!;\n }\n\n const getOffsetSize = getElementAxisSize.bind(null, 'offsetWidth', 'offsetHeight');\n const getClientSize = getElementAxisSize.bind(null, 'clientWidth', 'clientHeight');\n\n const invisibleItemQueue = createPriorityQueue<string>((a, b) => -1 * compareItems(a, b));\n\n const visibleItemQueue = createPriorityQueue<string>(compareItems);\n\n function occupiedSize(): number {\n const totalItemSize = visibleItemQueue\n .all()\n .map(id => overflowItems[id].element)\n .map(getOffsetSize)\n .reduce((prev, current) => prev + current, 0);\n\n const totalDividerSize = Object.entries(groupManager.groupVisibility()).reduce(\n (acc, [id, state]) =>\n acc + (state !== 'hidden' && overflowDividers[id] ? getOffsetSize(overflowDividers[id].element) : 0),\n 0,\n );\n\n const overflowMenuSize = invisibleItemQueue.size() > 0 && overflowMenu ? getOffsetSize(overflowMenu) : 0;\n\n return totalItemSize + totalDividerSize + overflowMenuSize;\n }\n\n const showItem = () => {\n const item = getNextItem(invisibleItemQueue, visibleItemQueue);\n options.onUpdateItemVisibility({ item, visible: true });\n\n if (item.groupId) {\n groupManager.showItem(item.id, item.groupId);\n\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n overflowDividers[item.groupId]?.element.removeAttribute(DATA_OVERFLOWING);\n }\n }\n };\n\n const hideItem = () => {\n const item = getNextItem(visibleItemQueue, invisibleItemQueue);\n options.onUpdateItemVisibility({ item, visible: false });\n\n if (item.groupId) {\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n overflowDividers[item.groupId]?.element.setAttribute(DATA_OVERFLOWING, '');\n }\n\n groupManager.hideItem(item.id, item.groupId);\n }\n };\n\n const dispatchOverflowUpdate = () => {\n const visibleItemIds = visibleItemQueue.all();\n const invisibleItemIds = invisibleItemQueue.all();\n\n const visibleItems = visibleItemIds.map(itemId => overflowItems[itemId]);\n const invisibleItems = invisibleItemIds.map(itemId => overflowItems[itemId]);\n\n options.onUpdateOverflow({ visibleItems, invisibleItems, groupVisibility: groupManager.groupVisibility() });\n };\n\n const processOverflowItems = (): boolean => {\n if (!container) {\n return false;\n }\n sizeCache.clear();\n\n const availableSize = getClientSize(container) - options.padding;\n\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n\n while (compareItems(invisibleItemQueue.peek(), visibleItemQueue.peek()) > 0) {\n hideItem(); // hide elements whose priority become smaller than the highest priority of the hidden one\n }\n\n // Run the show/hide step twice - the first step might not be correct if\n // it was triggered by a new item being added - new items are always visible by default.\n for (let i = 0; i < 2; i++) {\n // Add items until available width is filled - can result in overflow\n while (\n (occupiedSize() < availableSize && invisibleItemQueue.size() > 0) ||\n invisibleItemQueue.size() === 1 // attempt to show the last invisible item hoping it's size does not exceed overflow menu size\n ) {\n showItem();\n }\n\n // Remove items until there's no more overflow\n while (occupiedSize() > availableSize && visibleItemQueue.size() > options.minimumVisible) {\n hideItem();\n }\n }\n\n // only update when the state of visible/invisible items has changed\n return visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop;\n };\n\n const forceUpdate: OverflowManager['forceUpdate'] = () => {\n if (processOverflowItems() || forceDispatch) {\n forceDispatch = false;\n dispatchOverflowUpdate();\n }\n };\n\n const update: OverflowManager['update'] = debounce(forceUpdate);\n\n const observe: OverflowManager['observe'] = (observedContainer, userOptions) => {\n Object.assign(options, userOptions);\n observing = true;\n Object.values(overflowItems).forEach(item => visibleItemQueue.enqueue(item.id));\n\n container = observedContainer;\n disposeResizeObserver = observeResize(container, entries => {\n if (!entries[0] || !container) {\n return;\n }\n\n update();\n });\n };\n\n const addItem: OverflowManager['addItem'] = item => {\n if (overflowItems[item.id]) {\n return;\n }\n\n overflowItems[item.id] = item;\n\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\n if (item.groupId) {\n groupManager.addItem(item.id, item.groupId);\n item.element.setAttribute(DATA_OVERFLOW_GROUP, item.groupId);\n }\n\n update();\n };\n\n const addOverflowMenu: OverflowManager['addOverflowMenu'] = el => {\n overflowMenu = el;\n };\n\n const addDivider: OverflowManager['addDivider'] = divider => {\n if (!divider.groupId || overflowDividers[divider.groupId]) {\n return;\n }\n\n divider.element.setAttribute(DATA_OVERFLOW_GROUP, divider.groupId);\n overflowDividers[divider.groupId] = divider;\n };\n\n const removeOverflowMenu: OverflowManager['removeOverflowMenu'] = () => {\n overflowMenu = undefined;\n };\n\n const removeDivider: OverflowManager['removeDivider'] = groupId => {\n if (!overflowDividers[groupId]) {\n return;\n }\n const divider = overflowDividers[groupId];\n if (divider.groupId) {\n delete overflowDividers[groupId];\n divider.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n };\n\n const removeItem: OverflowManager['removeItem'] = itemId => {\n if (!overflowItems[itemId]) {\n return;\n }\n\n if (observing) {\n // We might be removing an item in an overflow which would not affect the tops,\n // but we need to update anyway to update the overflow menu state\n forceDispatch = true;\n }\n\n const item = overflowItems[itemId];\n visibleItemQueue.remove(itemId);\n invisibleItemQueue.remove(itemId);\n\n if (item.groupId) {\n groupManager.removeItem(item.id, item.groupId);\n item.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n\n sizeCache.delete(item.element);\n delete overflowItems[itemId];\n update();\n };\n\n const disconnect: OverflowManager['disconnect'] = () => {\n disposeResizeObserver();\n\n // reset flags\n container = undefined;\n observing = false;\n forceDispatch = true;\n\n // clear all entries\n Object.keys(overflowItems).forEach(itemId => removeItem(itemId));\n Object.keys(overflowDividers).forEach(dividerId => removeDivider(dividerId));\n removeOverflowMenu();\n sizeCache.clear();\n };\n\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu,\n addDivider,\n removeDivider,\n };\n}\n\nconst createGroupManager = () => {\n const groupVisibility: Record<string, OverflowGroupState> = {};\n const groups: Record<string, { visibleItemIds: Set<string>; invisibleItemIds: Set<string> }> = {};\n function updateGroupVisibility(groupId: string) {\n const group = groups[groupId];\n if (group.invisibleItemIds.size && group.visibleItemIds.size) {\n groupVisibility[groupId] = 'overflow';\n } else if (group.visibleItemIds.size === 0) {\n groupVisibility[groupId] = 'hidden';\n } else {\n groupVisibility[groupId] = 'visible';\n }\n }\n function isGroupVisible(groupId: string) {\n return groupVisibility[groupId] === 'visible' || groupVisibility[groupId] === 'overflow';\n }\n return {\n groupVisibility: () => groupVisibility,\n isSingleItemVisible(itemId: string, groupId: string) {\n return (\n isGroupVisible(groupId) &&\n groups[groupId].visibleItemIds.has(itemId) &&\n groups[groupId].visibleItemIds.size === 1\n );\n },\n addItem(itemId: string, groupId: string) {\n groups[groupId] ??= {\n visibleItemIds: new Set<string>(),\n invisibleItemIds: new Set<string>(),\n };\n\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n removeItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n showItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n hideItem(itemId: string, groupId: string) {\n groups[groupId].invisibleItemIds.add(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n };\n};\n"],"names":["DATA_OVERFLOWING","DATA_OVERFLOW_GROUP","observeResize","debounce","createPriorityQueue","createOverflowManager","sizeCache","Map","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowDividers","disposeResizeObserver","getNextItem","queueToDequeue","queueToEnqueue","nextItem","dequeue","enqueue","groupManager","createGroupManager","compareItems","lt","rt","lte","rte","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","getElementAxisSize","horizontal","vertical","el","has","set","get","getOffsetSize","bind","getClientSize","invisibleItemQueue","a","b","visibleItemQueue","occupiedSize","totalItemSize","all","map","id","reduce","prev","current","totalDividerSize","Object","entries","groupVisibility","acc","state","overflowMenuSize","size","showItem","item","visible","groupId","isSingleItemVisible","removeAttribute","hideItem","setAttribute","dispatchOverflowUpdate","visibleItemIds","invisibleItemIds","visibleItems","itemId","invisibleItems","processOverflowItems","clear","availableSize","visibleTop","peek","invisibleTop","i","forceUpdate","update","observe","observedContainer","userOptions","assign","values","forEach","addItem","addOverflowMenu","addDivider","divider","removeOverflowMenu","removeDivider","removeItem","remove","delete","disconnect","keys","dividerId","groups","updateGroupVisibility","group","isGroupVisible","Set","add"],"mappings":"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"}
@@ -15,15 +15,15 @@ Object.defineProperty(exports, "observeResize", {
15
15
  });
16
16
  function observeResize(elementToObserve, callback) {
17
17
  var _elementToObserve_ownerDocument_defaultView;
18
- const GlobalResizeObsever = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;
19
- if (!GlobalResizeObsever) {
18
+ const GlobalResizeObserver = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;
19
+ if (!GlobalResizeObserver) {
20
20
  if (process.env.NODE_ENV !== 'production') {
21
21
  // eslint-disable-next-line no-console
22
22
  console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');
23
23
  }
24
24
  return ()=>null;
25
25
  }
26
- let resizeObserver = new GlobalResizeObsever(callback);
26
+ let resizeObserver = new GlobalResizeObserver(callback);
27
27
  resizeObserver.observe(elementToObserve);
28
28
  return ()=>{
29
29
  resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
@@ -1 +1 @@
1
- {"version":3,"sources":["createResizeObserver.js"],"sourcesContent":["/**\n * Helper function that creates a resize observer in the element's own window global\n * @param elementToObserve - Uses the element's window global to create the resize observer\n * @param callback\n * @returns function to cleanup the resize observer\n */ export function observeResize(elementToObserve, callback) {\n var _elementToObserve_ownerDocument_defaultView;\n const GlobalResizeObsever = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;\n if (!GlobalResizeObsever) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');\n }\n return ()=>null;\n }\n let resizeObserver = new GlobalResizeObsever(callback);\n resizeObserver.observe(elementToObserve);\n return ()=>{\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n resizeObserver = undefined;\n };\n}\n"],"names":["observeResize","elementToObserve","callback","_elementToObserve_ownerDocument_defaultView","GlobalResizeObsever","ownerDocument","defaultView","ResizeObserver","process","env","NODE_ENV","console","error","resizeObserver","observe","disconnect","undefined"],"mappings":"AAAA;;;;;CAKC;;;;+BAAmBA;;;eAAAA;;;AAAT,SAASA,cAAcC,gBAAgB,EAAEC,QAAQ;IACxD,IAAIC;IACJ,MAAMC,sBAAsB,AAACD,CAAAA,8CAA8CF,iBAAiBI,aAAa,CAACC,WAAW,AAAD,MAAO,QAAQH,gDAAgD,KAAK,IAAI,KAAK,IAAIA,4CAA4CI,cAAc;IAC/P,IAAI,CAACH,qBAAqB;QACtB,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;YACvC,sCAAsC;YACtCC,QAAQC,KAAK,CAAC,+BAA+B;QACjD;QACA,OAAO,IAAI;IACf;IACA,IAAIC,iBAAiB,IAAIT,oBAAoBF;IAC7CW,eAAeC,OAAO,CAACb;IACvB,OAAO;QACHY,mBAAmB,QAAQA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAeE,UAAU;QACzFF,iBAAiBG;IACrB;AACJ"}
1
+ {"version":3,"sources":["createResizeObserver.js"],"sourcesContent":["/**\n * Helper function that creates a resize observer in the element's own window global\n * @param elementToObserve - Uses the element's window global to create the resize observer\n * @param callback\n * @returns function to cleanup the resize observer\n */ export function observeResize(elementToObserve, callback) {\n var _elementToObserve_ownerDocument_defaultView;\n const GlobalResizeObserver = (_elementToObserve_ownerDocument_defaultView = elementToObserve.ownerDocument.defaultView) === null || _elementToObserve_ownerDocument_defaultView === void 0 ? void 0 : _elementToObserve_ownerDocument_defaultView.ResizeObserver;\n if (!GlobalResizeObserver) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('@fluentui/priority-overflow', 'ResizeObserver does not exist on container window');\n }\n return ()=>null;\n }\n let resizeObserver = new GlobalResizeObserver(callback);\n resizeObserver.observe(elementToObserve);\n return ()=>{\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n resizeObserver = undefined;\n };\n}\n"],"names":["observeResize","elementToObserve","callback","_elementToObserve_ownerDocument_defaultView","GlobalResizeObserver","ownerDocument","defaultView","ResizeObserver","process","env","NODE_ENV","console","error","resizeObserver","observe","disconnect","undefined"],"mappings":"AAAA;;;;;CAKC;;;;+BAAmBA;;;eAAAA;;;AAAT,SAASA,cAAcC,gBAAgB,EAAEC,QAAQ;IACxD,IAAIC;IACJ,MAAMC,uBAAuB,AAACD,CAAAA,8CAA8CF,iBAAiBI,aAAa,CAACC,WAAW,AAAD,MAAO,QAAQH,gDAAgD,KAAK,IAAI,KAAK,IAAIA,4CAA4CI,cAAc;IAChQ,IAAI,CAACH,sBAAsB;QACvB,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;YACvC,sCAAsC;YACtCC,QAAQC,KAAK,CAAC,+BAA+B;QACjD;QACA,OAAO,IAAI;IACf;IACA,IAAIC,iBAAiB,IAAIT,qBAAqBF;IAC9CW,eAAeC,OAAO,CAACb;IACvB,OAAO;QACHY,mBAAmB,QAAQA,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAeE,UAAU;QACzFF,iBAAiBG;IACrB;AACJ"}
@@ -201,6 +201,11 @@ function createOverflowManager() {
201
201
  if (!overflowItems[itemId]) {
202
202
  return;
203
203
  }
204
+ if (observing) {
205
+ // We might be removing an item in an overflow which would not affect the tops,
206
+ // but we need to update anyway to update the overflow menu state
207
+ forceDispatch = true;
208
+ }
204
209
  const item = overflowItems[itemId];
205
210
  visibleItemQueue.remove(itemId);
206
211
  invisibleItemQueue.remove(itemId);
@@ -1 +1 @@
1
- {"version":3,"sources":["overflowManager.js"],"sourcesContent":["import { DATA_OVERFLOWING, DATA_OVERFLOW_GROUP } from './consts';\nimport { observeResize } from './createResizeObserver';\nimport { debounce } from './debounce';\nimport { createPriorityQueue } from './priorityQueue';\n/**\n * @internal\n * @returns overflow manager instance\n */ export function createOverflowManager() {\n // calls to `offsetWidth or offsetHeight` can happen multiple times in an update\n // Use a cache to avoid causing too many recalcs and avoid scripting time to meausure sizes\n const sizeCache = new Map();\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 // Initially true to force dispatch on first mount\n let forceDispatch = true;\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 overflowDividers = {};\n let disposeResizeObserver = ()=>null;\n const getNextItem = (queueToDequeue, queueToEnqueue)=>{\n const nextItem = queueToDequeue.dequeue();\n queueToEnqueue.enqueue(nextItem);\n return overflowItems[nextItem];\n };\n const groupManager = createGroupManager();\n function compareItems(lt, rt) {\n if (!lt || !rt) {\n return 0;\n }\n const lte = overflowItems[lt];\n const rte = overflowItems[rt];\n if (lte.priority !== rte.priority) {\n return lte.priority > rte.priority ? 1 : -1;\n }\n const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n // eslint-disable-next-line no-bitwise\n return lte.element.compareDocumentPosition(rte.element) & positionStatusBit ? 1 : -1;\n }\n function getElementAxisSize(horizontal, vertical, el) {\n if (!sizeCache.has(el)) {\n sizeCache.set(el, options.overflowAxis === 'horizontal' ? el[horizontal] : el[vertical]);\n }\n return sizeCache.get(el);\n }\n const getOffsetSize = getElementAxisSize.bind(null, 'offsetWidth', 'offsetHeight');\n const getClientSize = getElementAxisSize.bind(null, 'clientWidth', 'clientHeight');\n const invisibleItemQueue = createPriorityQueue((a, b)=>-1 * compareItems(a, b));\n const visibleItemQueue = createPriorityQueue(compareItems);\n function occupiedSize() {\n const totalItemSize = visibleItemQueue.all().map((id)=>overflowItems[id].element).map(getOffsetSize).reduce((prev, current)=>prev + current, 0);\n const totalDividerSize = Object.entries(groupManager.groupVisibility()).reduce((acc, [id, state])=>acc + (state !== 'hidden' && overflowDividers[id] ? getOffsetSize(overflowDividers[id].element) : 0), 0);\n const overflowMenuSize = invisibleItemQueue.size() > 0 && overflowMenu ? getOffsetSize(overflowMenu) : 0;\n return totalItemSize + totalDividerSize + overflowMenuSize;\n }\n const showItem = ()=>{\n const item = getNextItem(invisibleItemQueue, visibleItemQueue);\n options.onUpdateItemVisibility({\n item,\n visible: true\n });\n if (item.groupId) {\n groupManager.showItem(item.id, item.groupId);\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n var _overflowDividers_item_groupId;\n (_overflowDividers_item_groupId = overflowDividers[item.groupId]) === null || _overflowDividers_item_groupId === void 0 ? void 0 : _overflowDividers_item_groupId.element.removeAttribute(DATA_OVERFLOWING);\n }\n }\n };\n const hideItem = ()=>{\n const item = getNextItem(visibleItemQueue, invisibleItemQueue);\n options.onUpdateItemVisibility({\n item,\n visible: false\n });\n if (item.groupId) {\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n var _overflowDividers_item_groupId;\n (_overflowDividers_item_groupId = overflowDividers[item.groupId]) === null || _overflowDividers_item_groupId === void 0 ? void 0 : _overflowDividers_item_groupId.element.setAttribute(DATA_OVERFLOWING, '');\n }\n groupManager.hideItem(item.id, item.groupId);\n }\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 options.onUpdateOverflow({\n visibleItems,\n invisibleItems,\n groupVisibility: groupManager.groupVisibility()\n });\n };\n const processOverflowItems = ()=>{\n if (!container) {\n return false;\n }\n sizeCache.clear();\n const availableSize = getClientSize(container) - options.padding;\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n while(compareItems(invisibleItemQueue.peek(), visibleItemQueue.peek()) > 0){\n hideItem(); // hide elements whose priority become smaller than the highest priority of the hidden one\n }\n // Run the show/hide step twice - the first step might not be correct if\n // it was triggered by a new item being added - new items are always visible by default.\n for(let i = 0; i < 2; i++){\n // Add items until available width is filled - can result in overflow\n while(occupiedSize() < availableSize && invisibleItemQueue.size() > 0 || invisibleItemQueue.size() === 1 // attempt to show the last invisible item hoping it's size does not exceed overflow menu size\n ){\n showItem();\n }\n // Remove items until there's no more overflow\n while(occupiedSize() > availableSize && visibleItemQueue.size() > options.minimumVisible){\n hideItem();\n }\n }\n // only update when the state of visible/invisible items has changed\n return visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop;\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 disposeResizeObserver = observeResize(container, (entries)=>{\n if (!entries[0] || !container) {\n return;\n }\n update();\n });\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 groupManager.addItem(item.id, item.groupId);\n item.element.setAttribute(DATA_OVERFLOW_GROUP, item.groupId);\n }\n update();\n };\n const addOverflowMenu = (el)=>{\n overflowMenu = el;\n };\n const addDivider = (divider)=>{\n if (!divider.groupId || overflowDividers[divider.groupId]) {\n return;\n }\n divider.element.setAttribute(DATA_OVERFLOW_GROUP, divider.groupId);\n overflowDividers[divider.groupId] = divider;\n };\n const removeOverflowMenu = ()=>{\n overflowMenu = undefined;\n };\n const removeDivider = (groupId)=>{\n if (!overflowDividers[groupId]) {\n return;\n }\n const divider = overflowDividers[groupId];\n if (divider.groupId) {\n delete overflowDividers[groupId];\n divider.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\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 groupManager.removeItem(item.id, item.groupId);\n item.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n sizeCache.delete(item.element);\n delete overflowItems[itemId];\n update();\n };\n const disconnect = ()=>{\n disposeResizeObserver();\n // reset flags\n container = undefined;\n observing = false;\n forceDispatch = true;\n // clear all entries\n Object.keys(overflowItems).forEach((itemId)=>removeItem(itemId));\n Object.keys(overflowDividers).forEach((dividerId)=>removeDivider(dividerId));\n removeOverflowMenu();\n sizeCache.clear();\n };\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu,\n addDivider,\n removeDivider\n };\n}\nconst createGroupManager = ()=>{\n const groupVisibility = {};\n const groups = {};\n function updateGroupVisibility(groupId) {\n const group = groups[groupId];\n if (group.invisibleItemIds.size && group.visibleItemIds.size) {\n groupVisibility[groupId] = 'overflow';\n } else if (group.visibleItemIds.size === 0) {\n groupVisibility[groupId] = 'hidden';\n } else {\n groupVisibility[groupId] = 'visible';\n }\n }\n function isGroupVisible(groupId) {\n return groupVisibility[groupId] === 'visible' || groupVisibility[groupId] === 'overflow';\n }\n return {\n groupVisibility: ()=>groupVisibility,\n isSingleItemVisible (itemId, groupId) {\n return isGroupVisible(groupId) && groups[groupId].visibleItemIds.has(itemId) && groups[groupId].visibleItemIds.size === 1;\n },\n addItem (itemId, groupId) {\n var _groups, _groupId;\n var _;\n (_ = (_groups = groups)[_groupId = groupId]) !== null && _ !== void 0 ? _ : _groups[_groupId] = {\n visibleItemIds: new Set(),\n invisibleItemIds: new Set()\n };\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n removeItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n showItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n hideItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.add(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n }\n };\n};\n"],"names":["createOverflowManager","sizeCache","Map","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowDividers","disposeResizeObserver","getNextItem","queueToDequeue","queueToEnqueue","nextItem","dequeue","enqueue","groupManager","createGroupManager","compareItems","lt","rt","lte","rte","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","getElementAxisSize","horizontal","vertical","el","has","set","get","getOffsetSize","bind","getClientSize","invisibleItemQueue","createPriorityQueue","a","b","visibleItemQueue","occupiedSize","totalItemSize","all","map","id","reduce","prev","current","totalDividerSize","Object","entries","groupVisibility","acc","state","overflowMenuSize","size","showItem","item","visible","groupId","isSingleItemVisible","_overflowDividers_item_groupId","removeAttribute","DATA_OVERFLOWING","hideItem","setAttribute","dispatchOverflowUpdate","visibleItemIds","invisibleItemIds","visibleItems","itemId","invisibleItems","processOverflowItems","clear","availableSize","visibleTop","peek","invisibleTop","i","forceUpdate","update","debounce","observe","observedContainer","userOptions","assign","values","forEach","observeResize","addItem","DATA_OVERFLOW_GROUP","addOverflowMenu","addDivider","divider","removeOverflowMenu","removeDivider","removeItem","remove","delete","disconnect","keys","dividerId","groups","updateGroupVisibility","group","isGroupVisible","_groups","_groupId","_","Set","add"],"mappings":"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"}
1
+ {"version":3,"sources":["overflowManager.js"],"sourcesContent":["import { DATA_OVERFLOWING, DATA_OVERFLOW_GROUP } from './consts';\nimport { observeResize } from './createResizeObserver';\nimport { debounce } from './debounce';\nimport { createPriorityQueue } from './priorityQueue';\n/**\n * @internal\n * @returns overflow manager instance\n */ export function createOverflowManager() {\n // calls to `offsetWidth or offsetHeight` can happen multiple times in an update\n // Use a cache to avoid causing too many recalcs and avoid scripting time to meausure sizes\n const sizeCache = new Map();\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 // Initially true to force dispatch on first mount\n let forceDispatch = true;\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 overflowDividers = {};\n let disposeResizeObserver = ()=>null;\n const getNextItem = (queueToDequeue, queueToEnqueue)=>{\n const nextItem = queueToDequeue.dequeue();\n queueToEnqueue.enqueue(nextItem);\n return overflowItems[nextItem];\n };\n const groupManager = createGroupManager();\n function compareItems(lt, rt) {\n if (!lt || !rt) {\n return 0;\n }\n const lte = overflowItems[lt];\n const rte = overflowItems[rt];\n if (lte.priority !== rte.priority) {\n return lte.priority > rte.priority ? 1 : -1;\n }\n const positionStatusBit = options.overflowDirection === 'end' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING;\n // eslint-disable-next-line no-bitwise\n return lte.element.compareDocumentPosition(rte.element) & positionStatusBit ? 1 : -1;\n }\n function getElementAxisSize(horizontal, vertical, el) {\n if (!sizeCache.has(el)) {\n sizeCache.set(el, options.overflowAxis === 'horizontal' ? el[horizontal] : el[vertical]);\n }\n return sizeCache.get(el);\n }\n const getOffsetSize = getElementAxisSize.bind(null, 'offsetWidth', 'offsetHeight');\n const getClientSize = getElementAxisSize.bind(null, 'clientWidth', 'clientHeight');\n const invisibleItemQueue = createPriorityQueue((a, b)=>-1 * compareItems(a, b));\n const visibleItemQueue = createPriorityQueue(compareItems);\n function occupiedSize() {\n const totalItemSize = visibleItemQueue.all().map((id)=>overflowItems[id].element).map(getOffsetSize).reduce((prev, current)=>prev + current, 0);\n const totalDividerSize = Object.entries(groupManager.groupVisibility()).reduce((acc, [id, state])=>acc + (state !== 'hidden' && overflowDividers[id] ? getOffsetSize(overflowDividers[id].element) : 0), 0);\n const overflowMenuSize = invisibleItemQueue.size() > 0 && overflowMenu ? getOffsetSize(overflowMenu) : 0;\n return totalItemSize + totalDividerSize + overflowMenuSize;\n }\n const showItem = ()=>{\n const item = getNextItem(invisibleItemQueue, visibleItemQueue);\n options.onUpdateItemVisibility({\n item,\n visible: true\n });\n if (item.groupId) {\n groupManager.showItem(item.id, item.groupId);\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n var _overflowDividers_item_groupId;\n (_overflowDividers_item_groupId = overflowDividers[item.groupId]) === null || _overflowDividers_item_groupId === void 0 ? void 0 : _overflowDividers_item_groupId.element.removeAttribute(DATA_OVERFLOWING);\n }\n }\n };\n const hideItem = ()=>{\n const item = getNextItem(visibleItemQueue, invisibleItemQueue);\n options.onUpdateItemVisibility({\n item,\n visible: false\n });\n if (item.groupId) {\n if (groupManager.isSingleItemVisible(item.id, item.groupId)) {\n var _overflowDividers_item_groupId;\n (_overflowDividers_item_groupId = overflowDividers[item.groupId]) === null || _overflowDividers_item_groupId === void 0 ? void 0 : _overflowDividers_item_groupId.element.setAttribute(DATA_OVERFLOWING, '');\n }\n groupManager.hideItem(item.id, item.groupId);\n }\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 options.onUpdateOverflow({\n visibleItems,\n invisibleItems,\n groupVisibility: groupManager.groupVisibility()\n });\n };\n const processOverflowItems = ()=>{\n if (!container) {\n return false;\n }\n sizeCache.clear();\n const availableSize = getClientSize(container) - options.padding;\n // Snapshot of the visible/invisible state to compare for updates\n const visibleTop = visibleItemQueue.peek();\n const invisibleTop = invisibleItemQueue.peek();\n while(compareItems(invisibleItemQueue.peek(), visibleItemQueue.peek()) > 0){\n hideItem(); // hide elements whose priority become smaller than the highest priority of the hidden one\n }\n // Run the show/hide step twice - the first step might not be correct if\n // it was triggered by a new item being added - new items are always visible by default.\n for(let i = 0; i < 2; i++){\n // Add items until available width is filled - can result in overflow\n while(occupiedSize() < availableSize && invisibleItemQueue.size() > 0 || invisibleItemQueue.size() === 1 // attempt to show the last invisible item hoping it's size does not exceed overflow menu size\n ){\n showItem();\n }\n // Remove items until there's no more overflow\n while(occupiedSize() > availableSize && visibleItemQueue.size() > options.minimumVisible){\n hideItem();\n }\n }\n // only update when the state of visible/invisible items has changed\n return visibleItemQueue.peek() !== visibleTop || invisibleItemQueue.peek() !== invisibleTop;\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 disposeResizeObserver = observeResize(container, (entries)=>{\n if (!entries[0] || !container) {\n return;\n }\n update();\n });\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 groupManager.addItem(item.id, item.groupId);\n item.element.setAttribute(DATA_OVERFLOW_GROUP, item.groupId);\n }\n update();\n };\n const addOverflowMenu = (el)=>{\n overflowMenu = el;\n };\n const addDivider = (divider)=>{\n if (!divider.groupId || overflowDividers[divider.groupId]) {\n return;\n }\n divider.element.setAttribute(DATA_OVERFLOW_GROUP, divider.groupId);\n overflowDividers[divider.groupId] = divider;\n };\n const removeOverflowMenu = ()=>{\n overflowMenu = undefined;\n };\n const removeDivider = (groupId)=>{\n if (!overflowDividers[groupId]) {\n return;\n }\n const divider = overflowDividers[groupId];\n if (divider.groupId) {\n delete overflowDividers[groupId];\n divider.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n };\n const removeItem = (itemId)=>{\n if (!overflowItems[itemId]) {\n return;\n }\n if (observing) {\n // We might be removing an item in an overflow which would not affect the tops,\n // but we need to update anyway to update the overflow menu state\n forceDispatch = true;\n }\n const item = overflowItems[itemId];\n visibleItemQueue.remove(itemId);\n invisibleItemQueue.remove(itemId);\n if (item.groupId) {\n groupManager.removeItem(item.id, item.groupId);\n item.element.removeAttribute(DATA_OVERFLOW_GROUP);\n }\n sizeCache.delete(item.element);\n delete overflowItems[itemId];\n update();\n };\n const disconnect = ()=>{\n disposeResizeObserver();\n // reset flags\n container = undefined;\n observing = false;\n forceDispatch = true;\n // clear all entries\n Object.keys(overflowItems).forEach((itemId)=>removeItem(itemId));\n Object.keys(overflowDividers).forEach((dividerId)=>removeDivider(dividerId));\n removeOverflowMenu();\n sizeCache.clear();\n };\n return {\n addItem,\n disconnect,\n forceUpdate,\n observe,\n removeItem,\n update,\n addOverflowMenu,\n removeOverflowMenu,\n addDivider,\n removeDivider\n };\n}\nconst createGroupManager = ()=>{\n const groupVisibility = {};\n const groups = {};\n function updateGroupVisibility(groupId) {\n const group = groups[groupId];\n if (group.invisibleItemIds.size && group.visibleItemIds.size) {\n groupVisibility[groupId] = 'overflow';\n } else if (group.visibleItemIds.size === 0) {\n groupVisibility[groupId] = 'hidden';\n } else {\n groupVisibility[groupId] = 'visible';\n }\n }\n function isGroupVisible(groupId) {\n return groupVisibility[groupId] === 'visible' || groupVisibility[groupId] === 'overflow';\n }\n return {\n groupVisibility: ()=>groupVisibility,\n isSingleItemVisible (itemId, groupId) {\n return isGroupVisible(groupId) && groups[groupId].visibleItemIds.has(itemId) && groups[groupId].visibleItemIds.size === 1;\n },\n addItem (itemId, groupId) {\n var _groups, _groupId;\n var _;\n (_ = (_groups = groups)[_groupId = groupId]) !== null && _ !== void 0 ? _ : _groups[_groupId] = {\n visibleItemIds: new Set(),\n invisibleItemIds: new Set()\n };\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n removeItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n },\n showItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.delete(itemId);\n groups[groupId].visibleItemIds.add(itemId);\n updateGroupVisibility(groupId);\n },\n hideItem (itemId, groupId) {\n groups[groupId].invisibleItemIds.add(itemId);\n groups[groupId].visibleItemIds.delete(itemId);\n updateGroupVisibility(groupId);\n }\n };\n};\n"],"names":["createOverflowManager","sizeCache","Map","container","overflowMenu","observing","forceDispatch","options","padding","overflowAxis","overflowDirection","minimumVisible","onUpdateItemVisibility","undefined","onUpdateOverflow","overflowItems","overflowDividers","disposeResizeObserver","getNextItem","queueToDequeue","queueToEnqueue","nextItem","dequeue","enqueue","groupManager","createGroupManager","compareItems","lt","rt","lte","rte","priority","positionStatusBit","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","element","compareDocumentPosition","getElementAxisSize","horizontal","vertical","el","has","set","get","getOffsetSize","bind","getClientSize","invisibleItemQueue","createPriorityQueue","a","b","visibleItemQueue","occupiedSize","totalItemSize","all","map","id","reduce","prev","current","totalDividerSize","Object","entries","groupVisibility","acc","state","overflowMenuSize","size","showItem","item","visible","groupId","isSingleItemVisible","_overflowDividers_item_groupId","removeAttribute","DATA_OVERFLOWING","hideItem","setAttribute","dispatchOverflowUpdate","visibleItemIds","invisibleItemIds","visibleItems","itemId","invisibleItems","processOverflowItems","clear","availableSize","visibleTop","peek","invisibleTop","i","forceUpdate","update","debounce","observe","observedContainer","userOptions","assign","values","forEach","observeResize","addItem","DATA_OVERFLOW_GROUP","addOverflowMenu","addDivider","divider","removeOverflowMenu","removeDivider","removeItem","remove","delete","disconnect","keys","dividerId","groups","updateGroupVisibility","group","isGroupVisible","_groups","_groupId","_","Set","add"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/priority-overflow",
3
- "version": "9.1.11",
3
+ "version": "9.1.13",
4
4
  "description": "Vanilla JS utilities to implement overflow menus",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -19,7 +19,7 @@
19
19
  "just": "just-scripts",
20
20
  "lint": "just-scripts lint",
21
21
  "test": "jest --passWithNoTests",
22
- "type-check": "tsc -b tsconfig.json",
22
+ "type-check": "just-scripts type-check",
23
23
  "generate-api": "just-scripts generate-api",
24
24
  "test-ssr": "test-ssr \"./stories/**/*.stories.tsx\""
25
25
  },