@design.estate/dees-catalog 13.0.1 → 13.0.2

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.
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
35
+ import { DeesElement, customElement, property, state, html, css, directives } from '@design.estate/dees-element';
36
36
  import { kanbanStyles } from '../kanban.styles.js';
37
37
  import { kanbanEvent, sortKanbanTickets } from '../kanban.helpers.js';
38
38
  import '../dees-kanban-card/dees-kanban-card.js';
@@ -57,6 +57,9 @@ let DeesKanbanColumn = (() => {
57
57
  let _movable_decorators;
58
58
  let _movable_initializers = [];
59
59
  let _movable_extraInitializers = [];
60
+ let _movesDisabled_decorators;
61
+ let _movesDisabled_initializers = [];
62
+ let _movesDisabled_extraInitializers = [];
60
63
  let _canCreate_decorators;
61
64
  let _canCreate_initializers = [];
62
65
  let _canCreate_extraInitializers = [];
@@ -66,12 +69,18 @@ let DeesKanbanColumn = (() => {
66
69
  let _draggingTicketId_decorators;
67
70
  let _draggingTicketId_initializers = [];
68
71
  let _draggingTicketId_extraInitializers = [];
69
- let _dropBefore_decorators;
70
- let _dropBefore_initializers = [];
71
- let _dropBefore_extraInitializers = [];
72
- let _draggingOver_decorators;
73
- let _draggingOver_initializers = [];
74
- let _draggingOver_extraInitializers = [];
72
+ let _pointerManaged_decorators;
73
+ let _pointerManaged_initializers = [];
74
+ let _pointerManaged_extraInitializers = [];
75
+ let _nativeDropBefore_decorators;
76
+ let _nativeDropBefore_initializers = [];
77
+ let _nativeDropBefore_extraInitializers = [];
78
+ let _nativeOver_decorators;
79
+ let _nativeOver_initializers = [];
80
+ let _nativeOver_extraInitializers = [];
81
+ let _motion_decorators;
82
+ let _motion_initializers = [];
83
+ let _motion_extraInitializers = [];
75
84
  var DeesKanbanColumn = class extends _classSuper {
76
85
  static { _classThis = this; }
77
86
  static {
@@ -81,21 +90,27 @@ let DeesKanbanColumn = (() => {
81
90
  _allTickets_decorators = [property({ attribute: false })];
82
91
  _columns_decorators = [property({ attribute: false })];
83
92
  _movable_decorators = [property({ type: Boolean })];
93
+ _movesDisabled_decorators = [property({ type: Boolean })];
84
94
  _canCreate_decorators = [property({ type: Boolean })];
85
95
  _pendingTicketId_decorators = [property({ type: String })];
86
96
  _draggingTicketId_decorators = [property({ type: String })];
87
- _dropBefore_decorators = [state()];
88
- _draggingOver_decorators = [state()];
97
+ _pointerManaged_decorators = [property({ attribute: false })];
98
+ _nativeDropBefore_decorators = [state()];
99
+ _nativeOver_decorators = [state()];
100
+ _motion_decorators = [property({ attribute: false })];
89
101
  __esDecorate(this, null, _column_decorators, { kind: "accessor", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
90
102
  __esDecorate(this, null, _tickets_decorators, { kind: "accessor", name: "tickets", static: false, private: false, access: { has: obj => "tickets" in obj, get: obj => obj.tickets, set: (obj, value) => { obj.tickets = value; } }, metadata: _metadata }, _tickets_initializers, _tickets_extraInitializers);
91
103
  __esDecorate(this, null, _allTickets_decorators, { kind: "accessor", name: "allTickets", static: false, private: false, access: { has: obj => "allTickets" in obj, get: obj => obj.allTickets, set: (obj, value) => { obj.allTickets = value; } }, metadata: _metadata }, _allTickets_initializers, _allTickets_extraInitializers);
92
104
  __esDecorate(this, null, _columns_decorators, { kind: "accessor", name: "columns", static: false, private: false, access: { has: obj => "columns" in obj, get: obj => obj.columns, set: (obj, value) => { obj.columns = value; } }, metadata: _metadata }, _columns_initializers, _columns_extraInitializers);
93
105
  __esDecorate(this, null, _movable_decorators, { kind: "accessor", name: "movable", static: false, private: false, access: { has: obj => "movable" in obj, get: obj => obj.movable, set: (obj, value) => { obj.movable = value; } }, metadata: _metadata }, _movable_initializers, _movable_extraInitializers);
106
+ __esDecorate(this, null, _movesDisabled_decorators, { kind: "accessor", name: "movesDisabled", static: false, private: false, access: { has: obj => "movesDisabled" in obj, get: obj => obj.movesDisabled, set: (obj, value) => { obj.movesDisabled = value; } }, metadata: _metadata }, _movesDisabled_initializers, _movesDisabled_extraInitializers);
94
107
  __esDecorate(this, null, _canCreate_decorators, { kind: "accessor", name: "canCreate", static: false, private: false, access: { has: obj => "canCreate" in obj, get: obj => obj.canCreate, set: (obj, value) => { obj.canCreate = value; } }, metadata: _metadata }, _canCreate_initializers, _canCreate_extraInitializers);
95
108
  __esDecorate(this, null, _pendingTicketId_decorators, { kind: "accessor", name: "pendingTicketId", static: false, private: false, access: { has: obj => "pendingTicketId" in obj, get: obj => obj.pendingTicketId, set: (obj, value) => { obj.pendingTicketId = value; } }, metadata: _metadata }, _pendingTicketId_initializers, _pendingTicketId_extraInitializers);
96
109
  __esDecorate(this, null, _draggingTicketId_decorators, { kind: "accessor", name: "draggingTicketId", static: false, private: false, access: { has: obj => "draggingTicketId" in obj, get: obj => obj.draggingTicketId, set: (obj, value) => { obj.draggingTicketId = value; } }, metadata: _metadata }, _draggingTicketId_initializers, _draggingTicketId_extraInitializers);
97
- __esDecorate(this, null, _dropBefore_decorators, { kind: "accessor", name: "dropBefore", static: false, private: false, access: { has: obj => "dropBefore" in obj, get: obj => obj.dropBefore, set: (obj, value) => { obj.dropBefore = value; } }, metadata: _metadata }, _dropBefore_initializers, _dropBefore_extraInitializers);
98
- __esDecorate(this, null, _draggingOver_decorators, { kind: "accessor", name: "draggingOver", static: false, private: false, access: { has: obj => "draggingOver" in obj, get: obj => obj.draggingOver, set: (obj, value) => { obj.draggingOver = value; } }, metadata: _metadata }, _draggingOver_initializers, _draggingOver_extraInitializers);
110
+ __esDecorate(this, null, _pointerManaged_decorators, { kind: "accessor", name: "pointerManaged", static: false, private: false, access: { has: obj => "pointerManaged" in obj, get: obj => obj.pointerManaged, set: (obj, value) => { obj.pointerManaged = value; } }, metadata: _metadata }, _pointerManaged_initializers, _pointerManaged_extraInitializers);
111
+ __esDecorate(this, null, _nativeDropBefore_decorators, { kind: "accessor", name: "nativeDropBefore", static: false, private: false, access: { has: obj => "nativeDropBefore" in obj, get: obj => obj.nativeDropBefore, set: (obj, value) => { obj.nativeDropBefore = value; } }, metadata: _metadata }, _nativeDropBefore_initializers, _nativeDropBefore_extraInitializers);
112
+ __esDecorate(this, null, _nativeOver_decorators, { kind: "accessor", name: "nativeOver", static: false, private: false, access: { has: obj => "nativeOver" in obj, get: obj => obj.nativeOver, set: (obj, value) => { obj.nativeOver = value; } }, metadata: _metadata }, _nativeOver_initializers, _nativeOver_extraInitializers);
113
+ __esDecorate(this, null, _motion_decorators, { kind: "accessor", name: "motion", static: false, private: false, access: { has: obj => "motion" in obj, get: obj => obj.motion, set: (obj, value) => { obj.motion = value; } }, metadata: _metadata }, _motion_initializers, _motion_extraInitializers);
99
114
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
100
115
  DeesKanbanColumn = _classThis = _classDescriptor.value;
101
116
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -115,7 +130,10 @@ let DeesKanbanColumn = (() => {
115
130
  #movable_accessor_storage = (__runInitializers(this, _columns_extraInitializers), __runInitializers(this, _movable_initializers, false));
116
131
  get movable() { return this.#movable_accessor_storage; }
117
132
  set movable(value) { this.#movable_accessor_storage = value; }
118
- #canCreate_accessor_storage = (__runInitializers(this, _movable_extraInitializers), __runInitializers(this, _canCreate_initializers, false));
133
+ #movesDisabled_accessor_storage = (__runInitializers(this, _movable_extraInitializers), __runInitializers(this, _movesDisabled_initializers, false));
134
+ get movesDisabled() { return this.#movesDisabled_accessor_storage; }
135
+ set movesDisabled(value) { this.#movesDisabled_accessor_storage = value; }
136
+ #canCreate_accessor_storage = (__runInitializers(this, _movesDisabled_extraInitializers), __runInitializers(this, _canCreate_initializers, false));
119
137
  get canCreate() { return this.#canCreate_accessor_storage; }
120
138
  set canCreate(value) { this.#canCreate_accessor_storage = value; }
121
139
  #pendingTicketId_accessor_storage = (__runInitializers(this, _canCreate_extraInitializers), __runInitializers(this, _pendingTicketId_initializers, ''));
@@ -124,15 +142,22 @@ let DeesKanbanColumn = (() => {
124
142
  #draggingTicketId_accessor_storage = (__runInitializers(this, _pendingTicketId_extraInitializers), __runInitializers(this, _draggingTicketId_initializers, ''));
125
143
  get draggingTicketId() { return this.#draggingTicketId_accessor_storage; }
126
144
  set draggingTicketId(value) { this.#draggingTicketId_accessor_storage = value; }
127
- #dropBefore_accessor_storage = (__runInitializers(this, _draggingTicketId_extraInitializers), __runInitializers(this, _dropBefore_initializers, void 0));
128
- get dropBefore() { return this.#dropBefore_accessor_storage; }
129
- set dropBefore(value) { this.#dropBefore_accessor_storage = value; }
130
- #draggingOver_accessor_storage = (__runInitializers(this, _dropBefore_extraInitializers), __runInitializers(this, _draggingOver_initializers, false));
131
- get draggingOver() { return this.#draggingOver_accessor_storage; }
132
- set draggingOver(value) { this.#draggingOver_accessor_storage = value; }
145
+ #pointerManaged_accessor_storage = (__runInitializers(this, _draggingTicketId_extraInitializers), __runInitializers(this, _pointerManaged_initializers, false));
146
+ get pointerManaged() { return this.#pointerManaged_accessor_storage; }
147
+ set pointerManaged(value) { this.#pointerManaged_accessor_storage = value; }
148
+ #nativeDropBefore_accessor_storage = (__runInitializers(this, _pointerManaged_extraInitializers), __runInitializers(this, _nativeDropBefore_initializers, void 0));
149
+ get nativeDropBefore() { return this.#nativeDropBefore_accessor_storage; }
150
+ set nativeDropBefore(value) { this.#nativeDropBefore_accessor_storage = value; }
151
+ #nativeOver_accessor_storage = (__runInitializers(this, _nativeDropBefore_extraInitializers), __runInitializers(this, _nativeOver_initializers, false));
152
+ get nativeOver() { return this.#nativeOver_accessor_storage; }
153
+ set nativeOver(value) { this.#nativeOver_accessor_storage = value; }
154
+ #motion_accessor_storage = (__runInitializers(this, _nativeOver_extraInitializers), __runInitializers(this, _motion_initializers, void 0));
155
+ /** Internal render projection; provider-owned ticket data remains unchanged until saved. */
156
+ get motion() { return this.#motion_accessor_storage; }
157
+ set motion(value) { this.#motion_accessor_storage = value; }
133
158
  static styles = [...kanbanStyles, css `
134
159
  :host { display: flex; flex-direction: column; min-width: 272px; max-width: 360px; flex: 1 0 272px; }
135
- section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-xl); }
160
+ section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-xl); transition: background var(--dees-transition-default) var(--dees-ease-out); }
136
161
  header { display: flex; align-items: center; gap: 8px; min-height: 40px; margin-bottom: 10px; padding: 0 2px 8px; border-bottom: 1px solid var(--dees-color-border-subtle); }
137
162
  h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
138
163
  header dees-button::part(button) { width: 24px; height: 24px; min-height: 24px; }
@@ -140,51 +165,64 @@ let DeesKanbanColumn = (() => {
140
165
  .status.done { background: var(--dees-color-accent-success); border-color: var(--dees-color-accent-success); }
141
166
  .stack { display: grid; gap: 8px; min-height: 120px; align-content: start; }
142
167
  .target { position: relative; }
143
- .target.dragging { opacity: .4; }
144
- .target.before::before, .end-target.before::before { content: ''; position: absolute; top: -5px; left: 0; right: 0; height: 2px; background: var(--dees-color-accent-primary); border-radius: 2px; }
168
+ .native-before::before { content: ''; position: absolute; top: -5px; left: 0; right: 0; height: 2px; background: var(--dees-color-accent-primary); border-radius: 2px; }
169
+ .placeholder { border-radius: var(--dees-radius-xl); background: var(--dees-color-fill-tertiary); box-shadow: inset 0 0 0 1px var(--dees-color-border-default); }
145
170
  .end-target { position: relative; min-height: 32px; margin-top: 8px; }
146
171
  section.over { background: var(--dees-color-row-hover); }
172
+ @media (prefers-reduced-motion: reduce) { section { transition: none; } }
147
173
  @media (pointer: coarse) { header dees-button::part(button) { width: 32px; height: 32px; min-height: 32px; } }
148
174
  `];
149
175
  updated() { if (!this.draggingTicketId)
150
- this.draggingOver = false; }
176
+ this.nativeOver = false; }
151
177
  render() {
152
178
  if (!this.column)
153
179
  return html ``;
154
- return html `<section class=${this.draggingOver ? 'over' : ''} aria-label=${this.column.title}
155
- @dragover=${(event) => { if (this.draggingTicketId && this.movable) {
180
+ const motion = this.motion;
181
+ const tickets = sortKanbanTickets(this.tickets).filter(ticket => ticket.id !== motion?.move.ticketId);
182
+ const active = motion?.move.columnId === this.column.id;
183
+ if (motion && active) {
184
+ const index = tickets.findIndex(ticket => ticket.id === motion.move.beforeTicketId);
185
+ tickets.splice(index < 0 ? tickets.length : index, 0, motion.ticket);
186
+ }
187
+ return html `<section class=${active && motion?.placeholder || this.nativeOver ? 'over' : ''} aria-label=${this.column.title}
188
+ @dragover=${(event) => { if (!this.pointerManaged && this.draggingTicketId && this.movable && !this.movesDisabled) {
156
189
  event.preventDefault();
157
- this.draggingOver = true;
190
+ this.nativeOver = true;
158
191
  if (event.dataTransfer)
159
192
  event.dataTransfer.dropEffect = 'move';
160
193
  } }}
161
194
  @dragleave=${(event) => { if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget))
162
- this.draggingOver = false; }}
195
+ this.nativeOver = false; }}
163
196
  @drop=${(event) => {
197
+ if (this.pointerManaged)
198
+ return;
164
199
  event.preventDefault();
165
- this.draggingOver = false;
166
- if (this.movable && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
167
- kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.dropBefore });
200
+ this.nativeOver = false;
201
+ if (this.movable && !this.movesDisabled && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
202
+ kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.nativeDropBefore });
168
203
  }}>
169
- <header><span class="status ${this.column.done ? 'done' : ''}" aria-hidden="true"></span><h3>${this.column.title}</h3><span class="count">${this.tickets.length}</span><span class="spacer"></span>
204
+ <header><span class="status ${this.column.done ? 'done' : ''}" aria-hidden="true"></span><h3>${this.column.title}</h3><span class="count">${tickets.length}</span><span class="spacer"></span>
170
205
  ${this.canCreate ? html `<dees-button type="ghost" size="icon" icon="lucide:Plus" text=${`Add task to ${this.column.title}`}
171
206
  @clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: 'task', columnId: this.column.id })}></dees-button>` : ''}</header>
172
- <div class="stack">${sortKanbanTickets(this.tickets).map(ticket => html `
173
- <div class="target ${this.draggingOver && this.dropBefore === ticket.id ? 'before' : ''} ${this.draggingTicketId === ticket.id ? 'dragging' : ''}"
174
- @dragover=${() => { this.dropBefore = ticket.id; }}>
175
- <dees-kanban-card .ticket=${ticket} .columns=${this.columns}
207
+ <div class="stack">${directives.repeat(tickets, ticket => ticket.id, ticket => html `
208
+ <div class="target ${this.nativeOver && this.nativeDropBefore === ticket.id ? 'native-before' : ''}" data-ticket-id=${ticket.id}
209
+ @dragover=${() => { if (!this.pointerManaged)
210
+ this.nativeDropBefore = ticket.id; }}>
211
+ ${motion?.move.ticketId === ticket.id && motion.placeholder ? html `<div class="placeholder" style=${`height: ${motion.height}px`} aria-label="Drop ticket here"></div>` : html `<dees-kanban-card .ticket=${ticket} .columns=${this.columns}
176
212
  .epic=${this.allTickets.find(item => item.id === ticket.parentId && item.kind === 'epic')}
177
213
  .subtasks=${sortKanbanTickets(this.allTickets.filter(item => item.parentId === ticket.id && item.kind === 'subtask'))}
178
- .movable=${this.movable && ticket.permissions?.move !== false} .pending=${this.pendingTicketId === ticket.id}></dees-kanban-card>
214
+ .movable=${this.movable && ticket.permissions?.move !== false} .pending=${motion?.move.ticketId === ticket.id ? motion.dimmed : this.pendingTicketId === ticket.id}
215
+ .moveDisabled=${this.movesDisabled}
216
+ .saving=${motion?.move.ticketId === ticket.id && motion.saving} .pointerManaged=${this.pointerManaged}></dees-kanban-card>`}
179
217
  </div>`)}
180
- ${!this.tickets.length ? html `<div class="empty" @dragover=${() => { this.dropBefore = undefined; }}>No tasks</div>` : ''}
218
+ ${!tickets.length ? html `<div class="empty" @dragover=${() => { this.nativeDropBefore = undefined; }}>No tasks</div>` : ''}
181
219
  </div>
182
- <div class="end-target ${this.draggingOver && !this.dropBefore ? 'before' : ''}" @dragover=${() => { this.dropBefore = undefined; }}></div>
220
+ <div class="end-target ${this.nativeOver && !this.nativeDropBefore ? 'native-before' : ''}" @dragover=${() => { this.nativeDropBefore = undefined; }}></div>
183
221
  </section>`;
184
222
  }
185
223
  constructor() {
186
224
  super(...arguments);
187
- __runInitializers(this, _draggingOver_extraInitializers);
225
+ __runInitializers(this, _motion_extraInitializers);
188
226
  }
189
227
  static {
190
228
  __runInitializers(_classThis, _classExtraInitializers);
@@ -193,4 +231,4 @@ let DeesKanbanColumn = (() => {
193
231
  return DeesKanbanColumn = _classThis;
194
232
  })();
195
233
  export { DeesKanbanColumn };
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyx5Q0FBeUMsQ0FBQztJQUtwQyxnQkFBZ0I7NEJBRDVCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQzlDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs0Q0FDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0s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
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8seUNBQXlDLENBQUM7SUFLcEMsZ0JBQWdCOzRCQUQ1QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FBbkIsU0FBUSxXQUFXOzs7O2tDQUM5QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztzQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzt5Q0FDM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxF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
@@ -0,0 +1,67 @@
1
+ import type { DeesKanban } from './dees-kanban/dees-kanban.js';
2
+ import type { IKanbanMove, IKanbanTicket } from './interfaces.js';
3
+ export interface IKanbanMotion {
4
+ move: IKanbanMove;
5
+ ticket: IKanbanTicket;
6
+ height: number;
7
+ placeholder: boolean;
8
+ dimmed: boolean;
9
+ saving: boolean;
10
+ }
11
+ /** Owns pointer motion and a render-only placement. The board/provider still owns saved data. */
12
+ export declare class KanbanDragController {
13
+ private readonly board;
14
+ private readonly commit;
15
+ private readonly canMove;
16
+ private gesture?;
17
+ private listeners?;
18
+ private frame;
19
+ private previousFrame;
20
+ private rendering;
21
+ private scrollParents;
22
+ private scrollSnap;
23
+ private animations;
24
+ private timers;
25
+ private suppressClick?;
26
+ private clickTimer?;
27
+ private resizeObserver?;
28
+ private readonly reducedMotion;
29
+ constructor(board: DeesKanban, commit: (move: IKanbanMove) => Promise<boolean>, canMove: () => boolean);
30
+ get busy(): boolean;
31
+ private easing;
32
+ private get columns();
33
+ connect(): void;
34
+ /** Host updates can remove/filter the source or revoke its move permission during a gesture. */
35
+ sync(): void;
36
+ private down;
37
+ private move;
38
+ private lift;
39
+ private positionPreview;
40
+ private tick;
41
+ private targetAt;
42
+ private up;
43
+ private pointerCancel;
44
+ private key;
45
+ private blur;
46
+ private cancel;
47
+ private authoritativeMove;
48
+ private land;
49
+ private settle;
50
+ private targets;
51
+ private allTargets;
52
+ capture(): Map<string, DOMRect>;
53
+ animateFrom(before: Map<string, DOMRect>, duration?: number): Promise<void>;
54
+ private renderMotion;
55
+ private restoreExpansion;
56
+ private clearMotion;
57
+ private collectScrollParents;
58
+ private visibleRect;
59
+ private autoScroll;
60
+ private endPointer;
61
+ private blockClick;
62
+ private delay;
63
+ private removeOverlay;
64
+ private fadeAndClear;
65
+ private clear;
66
+ disconnect(): void;
67
+ }