@dnd-kit/react 0.0.3-beta-20240617124334 → 0.0.3

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/hooks.cjs CHANGED
@@ -4,7 +4,6 @@ var react = require('react');
4
4
  var state = require('@dnd-kit/state');
5
5
  var reactDom = require('react-dom');
6
6
 
7
- // src/hooks/useConstant.ts
8
7
  function useConstant(initializer, dependency) {
9
8
  const ref = react.useRef();
10
9
  const previousDependency = react.useRef(dependency);
package/hooks.js CHANGED
@@ -2,7 +2,6 @@ import { useRef, useLayoutEffect, useEffect, useState } from 'react';
2
2
  import { computed, Signal, signal, effect } from '@dnd-kit/state';
3
3
  import { flushSync } from 'react-dom';
4
4
 
5
- // src/hooks/useConstant.ts
6
5
  function useConstant(initializer, dependency) {
7
6
  const ref = useRef();
8
7
  const previousDependency = useRef(dependency);
package/index.cjs CHANGED
@@ -3,14 +3,29 @@
3
3
  var react = require('react');
4
4
  var dom = require('@dnd-kit/dom');
5
5
  var hooks = require('@dnd-kit/react/hooks');
6
+ var utilities$1 = require('@dnd-kit/dom/utilities');
6
7
  var jsxRuntime = require('react/jsx-runtime');
7
8
  var utilities = require('@dnd-kit/react/utilities');
8
9
  var state = require('@dnd-kit/state');
9
10
 
10
- // src/core/context/DragDropProvider.tsx
11
- var DragDropContext = react.createContext(
12
- new dom.DragDropManager()
13
- );
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __esm = (fn, res) => function __init() {
14
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ };
16
+ var __export = (target, all) => {
17
+ for (var name in all)
18
+ __defProp(target, name, { get: all[name], enumerable: true });
19
+ };
20
+ var DragDropContext;
21
+ var init_context = __esm({
22
+ "src/core/context/context.ts"() {
23
+ "use client";
24
+ DragDropContext = react.createContext(
25
+ new dom.DragDropManager()
26
+ );
27
+ }
28
+ });
14
29
  function useRenderer() {
15
30
  const [_, startTransition] = react.useTransition();
16
31
  const [transitionCount, setTransitionCount] = react.useState(0);
@@ -40,92 +55,125 @@ function useRenderer() {
40
55
  }
41
56
  };
42
57
  }
43
- var DragDropProvider = react.forwardRef(
44
- function DragDropProvider2({
45
- children,
46
- onCollision,
47
- onBeforeDragStart,
48
- onDragStart,
49
- onDragMove,
50
- onDragOver,
51
- onDragEnd,
52
- ...input
53
- }, ref) {
54
- const { renderer, trackRendering } = useRenderer();
55
- const manager = hooks.useConstant(() => {
56
- const instance = input.manager ?? new dom.DragDropManager(input);
57
- instance.renderer = renderer;
58
- return instance;
59
- });
60
- const { plugins, modifiers } = input;
61
- const handleBeforeDragStart = hooks.useLatest(onBeforeDragStart);
62
- const handleDragStart = hooks.useLatest(onDragStart);
63
- const handleDragOver = hooks.useLatest(onDragOver);
64
- const handleDragMove = hooks.useLatest(onDragMove);
65
- const handleDragEnd = hooks.useLatest(onDragEnd);
66
- const handleCollision = hooks.useLatest(onCollision);
67
- react.useEffect(() => {
68
- const listeners = [
69
- manager.monitor.addEventListener(
70
- "beforedragstart",
71
- (event, manager2) => {
72
- const callback = handleBeforeDragStart.current;
73
- if (callback) {
74
- trackRendering(() => callback(event, manager2));
75
- }
76
- }
77
- ),
78
- manager.monitor.addEventListener(
79
- "dragstart",
80
- (event, manager2) => handleDragStart.current?.(event, manager2)
81
- ),
82
- manager.monitor.addEventListener("dragover", (event, manager2) => {
83
- const callback = handleDragOver.current;
84
- if (callback) {
85
- trackRendering(() => callback(event, manager2));
86
- }
87
- }),
88
- manager.monitor.addEventListener("dragmove", (event, manager2) => {
89
- const callback = handleDragMove.current;
90
- if (callback) {
91
- trackRendering(() => callback(event, manager2));
92
- }
93
- }),
94
- manager.monitor.addEventListener("dragend", (event, manager2) => {
95
- const callback = handleDragEnd.current;
96
- if (callback) {
97
- trackRendering(() => callback(event, manager2));
98
- }
99
- }),
100
- manager.monitor.addEventListener(
101
- "collision",
102
- (event, manager2) => handleCollision.current?.(event, manager2)
103
- )
104
- ];
105
- return () => {
106
- listeners.forEach((unsubscribe) => unsubscribe());
107
- };
108
- }, [manager]);
109
- hooks.useOnValueChange(
110
- plugins,
111
- () => manager.plugins = plugins ?? dom.defaultPreset.plugins
112
- );
113
- hooks.useOnValueChange(modifiers, () => manager.modifiers = modifiers ?? []);
114
- react.useImperativeHandle(ref, () => manager, [manager]);
115
- return /* @__PURE__ */ jsxRuntime.jsxs(DragDropContext.Provider, { value: manager, children: [
116
- children,
117
- /* @__PURE__ */ jsxRuntime.jsx(Lifecycle, { manager })
118
- ] });
58
+ var init_renderer = __esm({
59
+ "src/core/context/renderer.ts"() {
119
60
  }
120
- );
121
- var Lifecycle = class extends react.Component {
122
- render() {
123
- return null;
61
+ });
62
+ var Lifecycle;
63
+ var init_lifecycle = __esm({
64
+ "src/core/context/lifecycle.ts"() {
65
+ Lifecycle = class extends react.Component {
66
+ initialized = false;
67
+ clearTimeout;
68
+ componentDidMount() {
69
+ this.clearTimeout?.();
70
+ this.clearTimeout = utilities$1.timeout(() => this.initialized = true, 25);
71
+ }
72
+ componentWillUnmount() {
73
+ if (!this.initialized)
74
+ return;
75
+ this.props.manager.destroy();
76
+ }
77
+ render() {
78
+ return null;
79
+ }
80
+ };
124
81
  }
125
- componentWillUnmount() {
126
- this.props.manager.destroy();
82
+ });
83
+
84
+ // src/core/context/DragDropProvider.tsx
85
+ var DragDropProvider_exports = {};
86
+ __export(DragDropProvider_exports, {
87
+ default: () => DragDropProvider
88
+ });
89
+ function DragDropProvider({
90
+ children,
91
+ onCollision,
92
+ onBeforeDragStart,
93
+ onDragStart,
94
+ onDragMove,
95
+ onDragOver,
96
+ onDragEnd,
97
+ ...input
98
+ }) {
99
+ const { renderer, trackRendering } = useRenderer();
100
+ const createManager = () => {
101
+ const instance = input.manager ?? new dom.DragDropManager(input);
102
+ instance.renderer = renderer;
103
+ return instance;
104
+ };
105
+ const manager = hooks.useConstant(createManager);
106
+ const { plugins, modifiers, sensors } = input;
107
+ const handleBeforeDragStart = hooks.useLatest(onBeforeDragStart);
108
+ const handleDragStart = hooks.useLatest(onDragStart);
109
+ const handleDragOver = hooks.useLatest(onDragOver);
110
+ const handleDragMove = hooks.useLatest(onDragMove);
111
+ const handleDragEnd = hooks.useLatest(onDragEnd);
112
+ const handleCollision = hooks.useLatest(onCollision);
113
+ react.useEffect(() => {
114
+ const listeners = [
115
+ manager.monitor.addEventListener("beforedragstart", (event, manager2) => {
116
+ const callback = handleBeforeDragStart.current;
117
+ if (callback) {
118
+ trackRendering(() => callback(event, manager2));
119
+ }
120
+ }),
121
+ manager.monitor.addEventListener(
122
+ "dragstart",
123
+ (event, manager2) => handleDragStart.current?.(event, manager2)
124
+ ),
125
+ manager.monitor.addEventListener("dragover", (event, manager2) => {
126
+ const callback = handleDragOver.current;
127
+ if (callback) {
128
+ trackRendering(() => callback(event, manager2));
129
+ }
130
+ }),
131
+ manager.monitor.addEventListener("dragmove", (event, manager2) => {
132
+ const callback = handleDragMove.current;
133
+ if (callback) {
134
+ trackRendering(() => callback(event, manager2));
135
+ }
136
+ }),
137
+ manager.monitor.addEventListener("dragend", (event, manager2) => {
138
+ const callback = handleDragEnd.current;
139
+ if (callback) {
140
+ trackRendering(() => callback(event, manager2));
141
+ }
142
+ }),
143
+ manager.monitor.addEventListener(
144
+ "collision",
145
+ (event, manager2) => handleCollision.current?.(event, manager2)
146
+ )
147
+ ];
148
+ return () => {
149
+ listeners.forEach((dispose) => dispose());
150
+ };
151
+ }, []);
152
+ hooks.useOnValueChange(
153
+ plugins,
154
+ () => manager.plugins = plugins ?? dom.defaultPreset.plugins
155
+ );
156
+ hooks.useOnValueChange(
157
+ sensors,
158
+ () => manager.sensors = sensors ?? dom.defaultPreset.sensors
159
+ );
160
+ hooks.useOnValueChange(modifiers, () => manager.modifiers = modifiers ?? []);
161
+ return /* @__PURE__ */ jsxRuntime.jsxs(DragDropContext.Provider, { value: manager, children: [
162
+ /* @__PURE__ */ jsxRuntime.jsx(Lifecycle, { manager }),
163
+ children
164
+ ] });
165
+ }
166
+ var init_DragDropProvider = __esm({
167
+ "src/core/context/DragDropProvider.tsx"() {
168
+ init_context();
169
+ init_renderer();
170
+ init_lifecycle();
127
171
  }
128
- };
172
+ });
173
+ var DragDropProvider2 = react.lazy(() => Promise.resolve().then(() => (init_DragDropProvider(), DragDropProvider_exports)));
174
+
175
+ // src/core/hooks/useDragDropManager.ts
176
+ init_context();
129
177
  function useDragDropManager() {
130
178
  return react.useContext(DragDropContext);
131
179
  }
@@ -135,6 +183,7 @@ function useInstance(initializer) {
135
183
  const manager = useDragDropManager();
136
184
  const instance = hooks.useConstant(() => initializer(manager));
137
185
  react.useEffect(() => {
186
+ instance.manager = manager;
138
187
  return manager.registry.register(instance);
139
188
  }, [manager]);
140
189
  return instance;
@@ -243,7 +292,7 @@ function useDragOperation() {
243
292
  };
244
293
  }
245
294
 
246
- exports.DragDropProvider = DragDropProvider;
295
+ exports.DragDropProvider = DragDropProvider2;
247
296
  exports.useDragDropManager = useDragDropManager;
248
297
  exports.useDragOperation = useDragOperation;
249
298
  exports.useDraggable = useDraggable;
package/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as react from 'react';
2
2
  import { PropsWithChildren } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
4
  import * as _dnd_kit_abstract from '@dnd-kit/abstract';
4
5
  import { DragDropEvents, Data } from '@dnd-kit/abstract';
5
6
  import * as _dnd_kit_dom from '@dnd-kit/dom';
6
- import { DragDropManager, Draggable, Droppable, DragDropManagerInput, DraggableInput, DroppableInput } from '@dnd-kit/dom';
7
+ import { DragDropManagerInput, DragDropManager, Draggable, Droppable, DraggableInput, DroppableInput } from '@dnd-kit/dom';
7
8
  import { RefOrValue } from '@dnd-kit/react/utilities';
8
9
 
9
10
  type Events = DragDropEvents<Draggable, Droppable, DragDropManager>;
@@ -16,7 +17,9 @@ interface Props extends DragDropManagerInput, PropsWithChildren {
16
17
  onDragOver?: Events['dragover'];
17
18
  onDragEnd?: Events['dragend'];
18
19
  }
19
- declare const DragDropProvider: react.ForwardRefExoticComponent<Props & react.RefAttributes<DragDropManager<Draggable<_dnd_kit_abstract.Data>, Droppable<_dnd_kit_abstract.Data>>>>;
20
+ declare function DragDropProvider$1({ children, onCollision, onBeforeDragStart, onDragStart, onDragMove, onDragOver, onDragEnd, ...input }: Props): react_jsx_runtime.JSX.Element;
21
+
22
+ declare const DragDropProvider: react.LazyExoticComponent<typeof DragDropProvider$1>;
20
23
 
21
24
  interface UseDraggableInput<T extends Data = Data> extends Omit<DraggableInput<T>, 'handle' | 'element'> {
22
25
  handle?: RefOrValue<Element>;
package/index.js CHANGED
@@ -1,129 +1,11 @@
1
- import { createContext, forwardRef, useEffect, useImperativeHandle, Component, useTransition, useState, useRef, useContext, useCallback } from 'react';
2
- import { DragDropManager, defaultPreset, Draggable, Droppable } from '@dnd-kit/dom';
3
- import { useConstant, useLatest, useOnValueChange, useComputed } from '@dnd-kit/react/hooks';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { DragDropContext } from './chunk-RDUPMLCN.js';
2
+ import { lazy, useContext, useCallback, useEffect } from 'react';
3
+ import { Draggable, Droppable } from '@dnd-kit/dom';
4
+ import { useComputed, useOnValueChange, useConstant } from '@dnd-kit/react/hooks';
5
5
  import { currentValue } from '@dnd-kit/react/utilities';
6
6
  import { deepEqual } from '@dnd-kit/state';
7
7
 
8
- // src/core/context/DragDropProvider.tsx
9
- var DragDropContext = createContext(
10
- new DragDropManager()
11
- );
12
- function useRenderer() {
13
- const [_, startTransition] = useTransition();
14
- const [transitionCount, setTransitionCount] = useState(0);
15
- const rendering = useRef();
16
- const resolver = useRef();
17
- const renderer = useConstant(() => ({
18
- get rendering() {
19
- return rendering.current ?? Promise.resolve();
20
- }
21
- }));
22
- useOnValueChange(transitionCount, () => {
23
- resolver.current?.();
24
- rendering.current = void 0;
25
- });
26
- return {
27
- renderer,
28
- trackRendering(callback) {
29
- if (!rendering.current) {
30
- rendering.current = new Promise((resolve) => {
31
- resolver.current = resolve;
32
- });
33
- }
34
- startTransition(() => {
35
- callback();
36
- setTransitionCount((count) => count + 1);
37
- });
38
- }
39
- };
40
- }
41
- var DragDropProvider = forwardRef(
42
- function DragDropProvider2({
43
- children,
44
- onCollision,
45
- onBeforeDragStart,
46
- onDragStart,
47
- onDragMove,
48
- onDragOver,
49
- onDragEnd,
50
- ...input
51
- }, ref) {
52
- const { renderer, trackRendering } = useRenderer();
53
- const manager = useConstant(() => {
54
- const instance = input.manager ?? new DragDropManager(input);
55
- instance.renderer = renderer;
56
- return instance;
57
- });
58
- const { plugins, modifiers } = input;
59
- const handleBeforeDragStart = useLatest(onBeforeDragStart);
60
- const handleDragStart = useLatest(onDragStart);
61
- const handleDragOver = useLatest(onDragOver);
62
- const handleDragMove = useLatest(onDragMove);
63
- const handleDragEnd = useLatest(onDragEnd);
64
- const handleCollision = useLatest(onCollision);
65
- useEffect(() => {
66
- const listeners = [
67
- manager.monitor.addEventListener(
68
- "beforedragstart",
69
- (event, manager2) => {
70
- const callback = handleBeforeDragStart.current;
71
- if (callback) {
72
- trackRendering(() => callback(event, manager2));
73
- }
74
- }
75
- ),
76
- manager.monitor.addEventListener(
77
- "dragstart",
78
- (event, manager2) => handleDragStart.current?.(event, manager2)
79
- ),
80
- manager.monitor.addEventListener("dragover", (event, manager2) => {
81
- const callback = handleDragOver.current;
82
- if (callback) {
83
- trackRendering(() => callback(event, manager2));
84
- }
85
- }),
86
- manager.monitor.addEventListener("dragmove", (event, manager2) => {
87
- const callback = handleDragMove.current;
88
- if (callback) {
89
- trackRendering(() => callback(event, manager2));
90
- }
91
- }),
92
- manager.monitor.addEventListener("dragend", (event, manager2) => {
93
- const callback = handleDragEnd.current;
94
- if (callback) {
95
- trackRendering(() => callback(event, manager2));
96
- }
97
- }),
98
- manager.monitor.addEventListener(
99
- "collision",
100
- (event, manager2) => handleCollision.current?.(event, manager2)
101
- )
102
- ];
103
- return () => {
104
- listeners.forEach((unsubscribe) => unsubscribe());
105
- };
106
- }, [manager]);
107
- useOnValueChange(
108
- plugins,
109
- () => manager.plugins = plugins ?? defaultPreset.plugins
110
- );
111
- useOnValueChange(modifiers, () => manager.modifiers = modifiers ?? []);
112
- useImperativeHandle(ref, () => manager, [manager]);
113
- return /* @__PURE__ */ jsxs(DragDropContext.Provider, { value: manager, children: [
114
- children,
115
- /* @__PURE__ */ jsx(Lifecycle, { manager })
116
- ] });
117
- }
118
- );
119
- var Lifecycle = class extends Component {
120
- render() {
121
- return null;
122
- }
123
- componentWillUnmount() {
124
- this.props.manager.destroy();
125
- }
126
- };
8
+ var DragDropProvider = lazy(() => import('./DragDropProvider-FMQK5X4L.js'));
127
9
  function useDragDropManager() {
128
10
  return useContext(DragDropContext);
129
11
  }
@@ -133,6 +15,7 @@ function useInstance(initializer) {
133
15
  const manager = useDragDropManager();
134
16
  const instance = useConstant(() => initializer(manager));
135
17
  useEffect(() => {
18
+ instance.manager = manager;
136
19
  return manager.registry.register(instance);
137
20
  }, [manager]);
138
21
  return instance;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/react",
3
- "version": "0.0.3-beta-20240617124334",
3
+ "version": "0.0.3",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "type": "module",
@@ -56,9 +56,9 @@
56
56
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
57
57
  },
58
58
  "dependencies": {
59
- "@dnd-kit/abstract": "0.0.3-beta-20240617124334",
60
- "@dnd-kit/dom": "0.0.3-beta-20240617124334",
61
- "@dnd-kit/state": "0.0.3-beta-20240617124334",
59
+ "@dnd-kit/abstract": "^0.0.3",
60
+ "@dnd-kit/dom": "^0.0.3",
61
+ "@dnd-kit/state": "^0.0.3",
62
62
  "tslib": "^2.6.2"
63
63
  },
64
64
  "peerDependencies": {
package/sortable.cjs CHANGED
@@ -7,7 +7,6 @@ var react = require('@dnd-kit/react');
7
7
  var hooks = require('@dnd-kit/react/hooks');
8
8
  var utilities = require('@dnd-kit/react/utilities');
9
9
 
10
- // src/sortable/useSortable.ts
11
10
  function useSortable(input) {
12
11
  const {
13
12
  accept,
package/sortable.js CHANGED
@@ -5,7 +5,6 @@ import { useDragDropManager } from '@dnd-kit/react';
5
5
  import { useConstant, useComputed, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect } from '@dnd-kit/react/hooks';
6
6
  import { currentValue } from '@dnd-kit/react/utilities';
7
7
 
8
- // src/sortable/useSortable.ts
9
8
  function useSortable(input) {
10
9
  const {
11
10
  accept,