overflowed 0.0.0-experimental-20221120013127 → 0.0.0-experimental-20260129225612

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/package.json CHANGED
@@ -1,23 +1,10 @@
1
1
  {
2
- "name": "overflowed",
3
- "version": "0.0.0-experimental-20221120013127",
4
- "main": "./index.js",
5
- "module": "./index.mjs",
6
- "types": "./index.d.ts",
7
- "peerDependencies": {
8
- "@types/react": "^17.0.0 || ^18.0.0",
9
- "react": "^17.0.0 || ^18.0.0",
10
- "svelte": "^3.0.0"
11
- },
12
- "peerDependenciesMeta": {
13
- "@types/react": {
14
- "optional": true
15
- },
16
- "react": {
17
- "optional": true
18
- },
19
- "svelte": {
20
- "optional": true
21
- }
22
- }
23
- }
2
+ "name": "overflowed",
3
+ "version": "0.0.0-experimental-20260129225612",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./dist/mod.js",
8
+ "./package.json": "./package.json"
9
+ }
10
+ }
@@ -1,29 +0,0 @@
1
- interface OverflowedOptions {
2
- axis?: "horizontal" | "vertical";
3
- onUpdate: (visibleItemCount: number, indicatorElementOffset: number) => void;
4
- disableIndicatorResizeProtection?: boolean;
5
- ResizeObserver?: typeof ResizeObserver;
6
- }
7
- type Breakpoint = [lowerBound: number, upperBound: number];
8
- declare class Overflowed {
9
- readonly axis: "horizontal" | "vertical";
10
- private onUpdate;
11
- private resizeObserver;
12
- private containerElement;
13
- private indicatorElement;
14
- private indicatorSize?;
15
- constructor({ ResizeObserver, axis, onUpdate, }: OverflowedOptions);
16
- registerContainerElement(containerElement: HTMLElement): void;
17
- registerIndicatorElement(indicatorElement: HTMLElement): void;
18
- registerItemElement(itemElement: HTMLElement): void;
19
- /** Should be called before the container element is unmounted. */
20
- onContainerElementWillUnmount(): void;
21
- private getElementSize;
22
- private getElementOffsetFromRight;
23
- private getElementOffsetFromLeft;
24
- private update;
25
- private requestedUpdate;
26
- requestUpdate(): void;
27
- }
28
-
29
- export { Breakpoint as B, OverflowedOptions as O, Overflowed as a };
@@ -1,130 +0,0 @@
1
- // modules/core/Overflowed.ts
2
- var Overflowed = class {
3
- axis;
4
- onUpdate;
5
- resizeObserver;
6
- containerElement = null;
7
- indicatorElement = null;
8
- indicatorSize;
9
- constructor({
10
- ResizeObserver = typeof window === "undefined" ? void 0 : window.ResizeObserver,
11
- axis = "horizontal",
12
- onUpdate
13
- }) {
14
- this.resizeObserver = ResizeObserver && new ResizeObserver((entries) => {
15
- for (const entry of entries) {
16
- if (entry.target === this.indicatorElement) {
17
- if (entry.target.clientWidth > 0 && entry.target.clientWidth !== this.indicatorSize) {
18
- console.warn("width doesn't match", this.indicatorSize, entry.target.clientWidth);
19
- }
20
- this.indicatorSize = entry.target.clientWidth;
21
- } else if (entry.target.parentNode === this.containerElement) {
22
- }
23
- }
24
- this.requestUpdate();
25
- });
26
- this.axis = axis;
27
- this.onUpdate = onUpdate;
28
- }
29
- registerContainerElement(containerElement) {
30
- this.containerElement = containerElement;
31
- this.resizeObserver?.observe(containerElement);
32
- this.requestUpdate();
33
- }
34
- registerIndicatorElement(indicatorElement) {
35
- this.indicatorElement = indicatorElement;
36
- this.indicatorSize = indicatorElement.clientWidth;
37
- this.resizeObserver?.observe(indicatorElement);
38
- this.requestUpdate();
39
- }
40
- registerItemElement(itemElement) {
41
- this.resizeObserver?.observe(itemElement);
42
- this.requestUpdate();
43
- }
44
- onContainerElementWillUnmount() {
45
- this.resizeObserver?.disconnect();
46
- this.containerElement = null;
47
- this.indicatorElement = null;
48
- }
49
- getElementSize(element) {
50
- if (!element) {
51
- return 0;
52
- }
53
- if (this.axis === "horizontal") {
54
- return element.offsetWidth;
55
- }
56
- return element.offsetHeight;
57
- }
58
- getElementOffsetFromRight(element) {
59
- if (!element) {
60
- return 0;
61
- }
62
- if (this.axis === "horizontal") {
63
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetLeft;
64
- }
65
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetTop;
66
- }
67
- getElementOffsetFromLeft(element) {
68
- if (!element) {
69
- return 0;
70
- }
71
- if (this.axis === "horizontal") {
72
- return element.offsetLeft;
73
- }
74
- return element.offsetTop;
75
- }
76
- update() {
77
- if (!this.containerElement) {
78
- return;
79
- }
80
- const { direction, paddingBlockStart, paddingBlockEnd, paddingInlineStart, paddingInlineEnd } = window.getComputedStyle(this.containerElement);
81
- const offsetStart = parseInt(this.axis === "horizontal" ? paddingInlineStart : paddingBlockStart, 10);
82
- const offsetEnd = parseInt(this.axis === "horizontal" ? paddingInlineEnd : paddingBlockEnd, 10);
83
- const isRtl = direction === "rtl";
84
- const containerElementSize = this.getElementSize(this.containerElement) - offsetStart - offsetEnd;
85
- const indicatorElementSize = this.getElementSize(this.indicatorElement);
86
- const childrenArray = Array.from(this.containerElement.children).filter((element) => element !== this.indicatorElement).filter(isHtmlElement);
87
- const getOffset = isRtl ? this.getElementOffsetFromRight.bind(this) : this.getElementOffsetFromLeft.bind(this);
88
- const breakpoints = [];
89
- for (const [_index, childElement] of childrenArray.entries()) {
90
- const childOffset = getOffset(childElement);
91
- const childSize = this.getElementSize(childElement);
92
- breakpoints.push([childOffset - offsetStart, childOffset + childSize + offsetEnd]);
93
- }
94
- if (breakpoints.length === 0) {
95
- return;
96
- }
97
- const containerIntersectingChildIndex = breakpoints.findIndex(([_start, end]) => end > containerElementSize);
98
- if (containerIntersectingChildIndex !== -1) {
99
- const intersectingChildIndex = breakpoints.findIndex(
100
- ([start, end]) => (this.indicatorElement ? start : end) > containerElementSize - indicatorElementSize
101
- );
102
- const newVisibleItemCount = Math.max(intersectingChildIndex - (this.indicatorElement ? 1 : 0), 0);
103
- const newIndicatorElementOffset = breakpoints[newVisibleItemCount]?.[0] + offsetStart;
104
- this.onUpdate(newVisibleItemCount, newIndicatorElementOffset);
105
- } else {
106
- this.onUpdate(breakpoints.length, 0);
107
- }
108
- }
109
- requestedUpdate = false;
110
- requestUpdate() {
111
- if (this.requestedUpdate) {
112
- return;
113
- }
114
- this.requestedUpdate = true;
115
- this.update();
116
- window.requestAnimationFrame(() => {
117
- this.requestedUpdate = false;
118
- });
119
- }
120
- };
121
- var isHtmlElement = (element) => {
122
- if (element instanceof HTMLElement) {
123
- return true;
124
- }
125
- throw new Error("Element provided is not a HTMLElement.");
126
- };
127
-
128
- export {
129
- Overflowed
130
- };
File without changes
package/core/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export { B as Breakpoint, a as Overflowed, O as OverflowedOptions } from '../Overflowed-53afb67e.js';
package/core/index.js DELETED
@@ -1,156 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // modules/core/index.ts
21
- var core_exports = {};
22
- __export(core_exports, {
23
- Overflowed: () => Overflowed
24
- });
25
- module.exports = __toCommonJS(core_exports);
26
-
27
- // modules/core/Overflowed.ts
28
- var Overflowed = class {
29
- axis;
30
- onUpdate;
31
- resizeObserver;
32
- containerElement = null;
33
- indicatorElement = null;
34
- indicatorSize;
35
- constructor({
36
- ResizeObserver = typeof window === "undefined" ? void 0 : window.ResizeObserver,
37
- axis = "horizontal",
38
- onUpdate
39
- }) {
40
- this.resizeObserver = ResizeObserver && new ResizeObserver((entries) => {
41
- for (const entry of entries) {
42
- if (entry.target === this.indicatorElement) {
43
- if (entry.target.clientWidth > 0 && entry.target.clientWidth !== this.indicatorSize) {
44
- console.warn("width doesn't match", this.indicatorSize, entry.target.clientWidth);
45
- }
46
- this.indicatorSize = entry.target.clientWidth;
47
- } else if (entry.target.parentNode === this.containerElement) {
48
- }
49
- }
50
- this.requestUpdate();
51
- });
52
- this.axis = axis;
53
- this.onUpdate = onUpdate;
54
- }
55
- registerContainerElement(containerElement) {
56
- this.containerElement = containerElement;
57
- this.resizeObserver?.observe(containerElement);
58
- this.requestUpdate();
59
- }
60
- registerIndicatorElement(indicatorElement) {
61
- this.indicatorElement = indicatorElement;
62
- this.indicatorSize = indicatorElement.clientWidth;
63
- this.resizeObserver?.observe(indicatorElement);
64
- this.requestUpdate();
65
- }
66
- registerItemElement(itemElement) {
67
- this.resizeObserver?.observe(itemElement);
68
- this.requestUpdate();
69
- }
70
- onContainerElementWillUnmount() {
71
- this.resizeObserver?.disconnect();
72
- this.containerElement = null;
73
- this.indicatorElement = null;
74
- }
75
- getElementSize(element) {
76
- if (!element) {
77
- return 0;
78
- }
79
- if (this.axis === "horizontal") {
80
- return element.offsetWidth;
81
- }
82
- return element.offsetHeight;
83
- }
84
- getElementOffsetFromRight(element) {
85
- if (!element) {
86
- return 0;
87
- }
88
- if (this.axis === "horizontal") {
89
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetLeft;
90
- }
91
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetTop;
92
- }
93
- getElementOffsetFromLeft(element) {
94
- if (!element) {
95
- return 0;
96
- }
97
- if (this.axis === "horizontal") {
98
- return element.offsetLeft;
99
- }
100
- return element.offsetTop;
101
- }
102
- update() {
103
- if (!this.containerElement) {
104
- return;
105
- }
106
- const { direction, paddingBlockStart, paddingBlockEnd, paddingInlineStart, paddingInlineEnd } = window.getComputedStyle(this.containerElement);
107
- const offsetStart = parseInt(this.axis === "horizontal" ? paddingInlineStart : paddingBlockStart, 10);
108
- const offsetEnd = parseInt(this.axis === "horizontal" ? paddingInlineEnd : paddingBlockEnd, 10);
109
- const isRtl = direction === "rtl";
110
- const containerElementSize = this.getElementSize(this.containerElement) - offsetStart - offsetEnd;
111
- const indicatorElementSize = this.getElementSize(this.indicatorElement);
112
- const childrenArray = Array.from(this.containerElement.children).filter((element) => element !== this.indicatorElement).filter(isHtmlElement);
113
- const getOffset = isRtl ? this.getElementOffsetFromRight.bind(this) : this.getElementOffsetFromLeft.bind(this);
114
- const breakpoints = [];
115
- for (const [_index, childElement] of childrenArray.entries()) {
116
- const childOffset = getOffset(childElement);
117
- const childSize = this.getElementSize(childElement);
118
- breakpoints.push([childOffset - offsetStart, childOffset + childSize + offsetEnd]);
119
- }
120
- if (breakpoints.length === 0) {
121
- return;
122
- }
123
- const containerIntersectingChildIndex = breakpoints.findIndex(([_start, end]) => end > containerElementSize);
124
- if (containerIntersectingChildIndex !== -1) {
125
- const intersectingChildIndex = breakpoints.findIndex(
126
- ([start, end]) => (this.indicatorElement ? start : end) > containerElementSize - indicatorElementSize
127
- );
128
- const newVisibleItemCount = Math.max(intersectingChildIndex - (this.indicatorElement ? 1 : 0), 0);
129
- const newIndicatorElementOffset = breakpoints[newVisibleItemCount]?.[0] + offsetStart;
130
- this.onUpdate(newVisibleItemCount, newIndicatorElementOffset);
131
- } else {
132
- this.onUpdate(breakpoints.length, 0);
133
- }
134
- }
135
- requestedUpdate = false;
136
- requestUpdate() {
137
- if (this.requestedUpdate) {
138
- return;
139
- }
140
- this.requestedUpdate = true;
141
- this.update();
142
- window.requestAnimationFrame(() => {
143
- this.requestedUpdate = false;
144
- });
145
- }
146
- };
147
- var isHtmlElement = (element) => {
148
- if (element instanceof HTMLElement) {
149
- return true;
150
- }
151
- throw new Error("Element provided is not a HTMLElement.");
152
- };
153
- // Annotate the CommonJS export names for ESM import in node:
154
- 0 && (module.exports = {
155
- Overflowed
156
- });
package/core/index.mjs DELETED
@@ -1,7 +0,0 @@
1
- import "../chunk-TXQIKLPR.mjs";
2
- import {
3
- Overflowed
4
- } from "../chunk-DATLJDI5.mjs";
5
- export {
6
- Overflowed
7
- };
package/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- /** @deprecated Don't export this. */
2
- var undefined$1 = undefined;
3
-
4
- export { undefined$1 as default };
package/index.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // modules/index.ts
21
- var modules_exports = {};
22
- __export(modules_exports, {
23
- default: () => modules_default
24
- });
25
- module.exports = __toCommonJS(modules_exports);
26
- var modules_default = void 0;
27
- // Annotate the CommonJS export names for ESM import in node:
28
- 0 && (module.exports = {});
package/index.mjs DELETED
@@ -1,5 +0,0 @@
1
- // modules/index.ts
2
- var modules_default = void 0;
3
- export {
4
- modules_default as default
5
- };
package/react/index.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { O as OverflowedOptions } from '../Overflowed-53afb67e.js';
2
-
3
- interface UseOverflowedItemsState {
4
- visibleItemCount: number;
5
- indicatorElementOffset: number | undefined;
6
- isMounted: boolean;
7
- }
8
- interface UseOverflowedItemsOptions extends Omit<OverflowedOptions, "onUpdate"> {
9
- enableEmptyOverflowedItems?: boolean;
10
- maxItemCount?: number;
11
- }
12
- declare const useOverflowedItems: <Item extends unknown>(items: Item[], { enableEmptyOverflowedItems, maxItemCount, ...options }?: UseOverflowedItemsOptions) => readonly [(readonly [Item, any])[], Item[], {
13
- getContainerProps: any;
14
- getIndicatorProps: any;
15
- }];
16
-
17
- export { UseOverflowedItemsOptions, UseOverflowedItemsState, useOverflowedItems };
package/react/index.js DELETED
@@ -1,258 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // modules/react/index.ts
21
- var react_exports = {};
22
- __export(react_exports, {
23
- useOverflowedItems: () => useOverflowedItems
24
- });
25
- module.exports = __toCommonJS(react_exports);
26
-
27
- // modules/react/useOverflowedItems.tsx
28
- var import_react = require("react");
29
-
30
- // modules/core/Overflowed.ts
31
- var Overflowed = class {
32
- axis;
33
- onUpdate;
34
- resizeObserver;
35
- containerElement = null;
36
- indicatorElement = null;
37
- indicatorSize;
38
- constructor({
39
- ResizeObserver = typeof window === "undefined" ? void 0 : window.ResizeObserver,
40
- axis = "horizontal",
41
- onUpdate
42
- }) {
43
- this.resizeObserver = ResizeObserver && new ResizeObserver((entries) => {
44
- for (const entry of entries) {
45
- if (entry.target === this.indicatorElement) {
46
- if (entry.target.clientWidth > 0 && entry.target.clientWidth !== this.indicatorSize) {
47
- console.warn("width doesn't match", this.indicatorSize, entry.target.clientWidth);
48
- }
49
- this.indicatorSize = entry.target.clientWidth;
50
- } else if (entry.target.parentNode === this.containerElement) {
51
- }
52
- }
53
- this.requestUpdate();
54
- });
55
- this.axis = axis;
56
- this.onUpdate = onUpdate;
57
- }
58
- registerContainerElement(containerElement) {
59
- this.containerElement = containerElement;
60
- this.resizeObserver?.observe(containerElement);
61
- this.requestUpdate();
62
- }
63
- registerIndicatorElement(indicatorElement) {
64
- this.indicatorElement = indicatorElement;
65
- this.indicatorSize = indicatorElement.clientWidth;
66
- this.resizeObserver?.observe(indicatorElement);
67
- this.requestUpdate();
68
- }
69
- registerItemElement(itemElement) {
70
- this.resizeObserver?.observe(itemElement);
71
- this.requestUpdate();
72
- }
73
- onContainerElementWillUnmount() {
74
- this.resizeObserver?.disconnect();
75
- this.containerElement = null;
76
- this.indicatorElement = null;
77
- }
78
- getElementSize(element) {
79
- if (!element) {
80
- return 0;
81
- }
82
- if (this.axis === "horizontal") {
83
- return element.offsetWidth;
84
- }
85
- return element.offsetHeight;
86
- }
87
- getElementOffsetFromRight(element) {
88
- if (!element) {
89
- return 0;
90
- }
91
- if (this.axis === "horizontal") {
92
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetLeft;
93
- }
94
- return this.getElementSize(element.parentElement) - this.getElementSize(element) - element.offsetTop;
95
- }
96
- getElementOffsetFromLeft(element) {
97
- if (!element) {
98
- return 0;
99
- }
100
- if (this.axis === "horizontal") {
101
- return element.offsetLeft;
102
- }
103
- return element.offsetTop;
104
- }
105
- update() {
106
- if (!this.containerElement) {
107
- return;
108
- }
109
- const { direction, paddingBlockStart, paddingBlockEnd, paddingInlineStart, paddingInlineEnd } = window.getComputedStyle(this.containerElement);
110
- const offsetStart = parseInt(this.axis === "horizontal" ? paddingInlineStart : paddingBlockStart, 10);
111
- const offsetEnd = parseInt(this.axis === "horizontal" ? paddingInlineEnd : paddingBlockEnd, 10);
112
- const isRtl = direction === "rtl";
113
- const containerElementSize = this.getElementSize(this.containerElement) - offsetStart - offsetEnd;
114
- const indicatorElementSize = this.getElementSize(this.indicatorElement);
115
- const childrenArray = Array.from(this.containerElement.children).filter((element) => element !== this.indicatorElement).filter(isHtmlElement);
116
- const getOffset = isRtl ? this.getElementOffsetFromRight.bind(this) : this.getElementOffsetFromLeft.bind(this);
117
- const breakpoints = [];
118
- for (const [_index, childElement] of childrenArray.entries()) {
119
- const childOffset = getOffset(childElement);
120
- const childSize = this.getElementSize(childElement);
121
- breakpoints.push([childOffset - offsetStart, childOffset + childSize + offsetEnd]);
122
- }
123
- if (breakpoints.length === 0) {
124
- return;
125
- }
126
- const containerIntersectingChildIndex = breakpoints.findIndex(([_start, end]) => end > containerElementSize);
127
- if (containerIntersectingChildIndex !== -1) {
128
- const intersectingChildIndex = breakpoints.findIndex(
129
- ([start, end]) => (this.indicatorElement ? start : end) > containerElementSize - indicatorElementSize
130
- );
131
- const newVisibleItemCount = Math.max(intersectingChildIndex - (this.indicatorElement ? 1 : 0), 0);
132
- const newIndicatorElementOffset = breakpoints[newVisibleItemCount]?.[0] + offsetStart;
133
- this.onUpdate(newVisibleItemCount, newIndicatorElementOffset);
134
- } else {
135
- this.onUpdate(breakpoints.length, 0);
136
- }
137
- }
138
- requestedUpdate = false;
139
- requestUpdate() {
140
- if (this.requestedUpdate) {
141
- return;
142
- }
143
- this.requestedUpdate = true;
144
- this.update();
145
- window.requestAnimationFrame(() => {
146
- this.requestedUpdate = false;
147
- });
148
- }
149
- };
150
- var isHtmlElement = (element) => {
151
- if (element instanceof HTMLElement) {
152
- return true;
153
- }
154
- throw new Error("Element provided is not a HTMLElement.");
155
- };
156
-
157
- // modules/react/defaultCreateGetContainerProps.ts
158
- var defaultCreateGetContainerProps = (overflowed, state) => ({ style } = {}) => ({
159
- ref: (containerElement) => {
160
- if (!(containerElement instanceof HTMLElement)) {
161
- return;
162
- }
163
- overflowed.registerContainerElement(containerElement);
164
- },
165
- style: {
166
- overflowX: overflowed.axis === "horizontal" ? state.isMounted ? "clip" : "auto" : void 0,
167
- overflowY: overflowed.axis === "horizontal" ? state.isMounted ? "clip" : "auto" : void 0,
168
- ...style
169
- }
170
- });
171
-
172
- // modules/react/defaultCreateGetIndicatorProps.ts
173
- var defaultCreateGetIndicatorProps = (overflowed, state, isVisible) => ({ style } = {}) => ({
174
- ref: (indicatorElement) => {
175
- if (!(indicatorElement instanceof HTMLElement)) {
176
- return;
177
- }
178
- overflowed.registerIndicatorElement(indicatorElement);
179
- },
180
- style: isVisible ? {
181
- position: isVisible ? "absolute" : void 0,
182
- insetInlineStart: isVisible ? state.indicatorElementOffset : void 0,
183
- marginInlineStart: 0,
184
- ...style
185
- } : {
186
- userSelect: "none",
187
- pointerEvents: "none",
188
- visibility: "hidden"
189
- }
190
- });
191
-
192
- // modules/react/defaultCreateGetItemProps.ts
193
- var defaultCreateGetItemProps = (overflowed, state, isHidden) => ({ style } = {}) => ({
194
- ref: (itemElement) => {
195
- if (!(itemElement instanceof HTMLElement)) {
196
- return;
197
- }
198
- overflowed.registerItemElement(itemElement);
199
- },
200
- style: {
201
- ...isHidden ? {
202
- userSelect: "none",
203
- pointerEvents: "none",
204
- visibility: "hidden"
205
- } : {},
206
- ...style
207
- },
208
- "aria-hidden": isHidden ? true : false
209
- });
210
-
211
- // modules/react/useOverflowedItems.tsx
212
- var useOverflowedItems = (items, {
213
- enableEmptyOverflowedItems,
214
- maxItemCount = items.length,
215
- ...options
216
- } = {}) => {
217
- const [state, setState] = (0, import_react.useState)({
218
- visibleItemCount: maxItemCount,
219
- indicatorElementOffset: void 0,
220
- isMounted: false
221
- });
222
- const overflowedRef = (0, import_react.useRef)(
223
- new Overflowed({
224
- ...options,
225
- onUpdate: (newVisibleItemCount, newIndicatorElementOffset) => setState(({ isMounted }) => ({
226
- isMounted,
227
- visibleItemCount: Math.min(newVisibleItemCount, maxItemCount),
228
- indicatorElementOffset: newIndicatorElementOffset
229
- }))
230
- })
231
- );
232
- (0, import_react.useEffect)(() => {
233
- setState((previousState) => ({ ...previousState, isMounted: true }));
234
- return () => overflowedRef.current.onContainerElementWillUnmount();
235
- }, []);
236
- const visibleItems = (0, import_react.useMemo)(
237
- () => items.map(
238
- (item, index) => [item, defaultCreateGetItemProps(overflowedRef.current, state, index >= state.visibleItemCount)]
239
- ),
240
- [items, state]
241
- );
242
- const overflowedItems = (0, import_react.useMemo)(
243
- () => state.visibleItemCount < items.length ? items.slice(state.visibleItemCount) : [],
244
- [state.visibleItemCount, enableEmptyOverflowedItems]
245
- );
246
- const props = (0, import_react.useMemo)(
247
- () => ({
248
- getContainerProps: defaultCreateGetContainerProps(overflowedRef.current, state),
249
- getIndicatorProps: defaultCreateGetIndicatorProps(overflowedRef.current, state, overflowedItems.length > 0)
250
- }),
251
- [state, overflowedItems]
252
- );
253
- return [visibleItems, overflowedItems, props];
254
- };
255
- // Annotate the CommonJS export names for ESM import in node:
256
- 0 && (module.exports = {
257
- useOverflowedItems
258
- });