@fc3/mmcadi 0.1.49 → 0.1.50
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/dist/.last-compile-time +1 -1
- package/dist/.last-publish-time +1 -1
- package/dist/client.js +879 -55
- package/dist/src/client/helper/drag.d.ts +29 -0
- package/dist/src/client/helper/drag.js +350 -0
- package/dist/src/client/helper/drag.js.map +1 -0
- package/dist/src/client/helper/interaction.d.ts +47 -0
- package/dist/src/client/helper/interaction.js +739 -0
- package/dist/src/client/helper/interaction.js.map +1 -0
- package/dist/src/client/page/cursor.d.ts +1 -0
- package/dist/src/client/page/cursor.js +17 -19
- package/dist/src/client/page/cursor.js.map +1 -1
- package/dist/src/client/utility/get-index-path-for-element.d.ts +2 -0
- package/dist/src/client/utility/get-index-path-for-element.js +12 -0
- package/dist/src/client/utility/get-index-path-for-element.js.map +1 -0
- package/dist/src/common/utility/role-is-public.d.ts +3 -0
- package/dist/src/common/utility/role-is-public.js +13 -0
- package/dist/src/common/utility/role-is-public.js.map +1 -0
- package/dist/src/enum/action-type.d.ts +1 -0
- package/dist/src/enum/action-type.js +1 -0
- package/dist/src/enum/action-type.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/endpoint/action/create.d.ts +1 -0
- package/dist/src/server/endpoint/action/create.js +20 -1
- package/dist/src/server/endpoint/action/create.js.map +1 -1
- package/dist/src/server/operation/reposition-block.d.ts +15 -0
- package/dist/src/server/operation/reposition-block.js +108 -0
- package/dist/src/server/operation/reposition-block.js.map +1 -0
- package/dist/src/type/action/reposition-block.d.ts +8 -0
- package/dist/src/type/action/reposition-block.js +3 -0
- package/dist/src/type/action/reposition-block.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare class DragHelper {
|
|
2
|
+
private drag_active;
|
|
3
|
+
private drag_origin_block;
|
|
4
|
+
private drag_placeholder;
|
|
5
|
+
private drag_ghost;
|
|
6
|
+
private drag_start_y;
|
|
7
|
+
private drag_pointer_offset_y;
|
|
8
|
+
private drag_press_timer;
|
|
9
|
+
constructor();
|
|
10
|
+
attach(): void;
|
|
11
|
+
isDragging(): boolean;
|
|
12
|
+
private getBlockElements;
|
|
13
|
+
private getSiblingBlocks;
|
|
14
|
+
private onPressStart;
|
|
15
|
+
private onNativeDragStart;
|
|
16
|
+
private onPointerMove;
|
|
17
|
+
private onPressEnd;
|
|
18
|
+
private beginDrag;
|
|
19
|
+
private updatePlaceholderPosition;
|
|
20
|
+
private animateWithFlip;
|
|
21
|
+
private postReposition;
|
|
22
|
+
private computeTargetIndexPath;
|
|
23
|
+
private updateTopLevelIndexPaths;
|
|
24
|
+
private cleanupDragElements;
|
|
25
|
+
private resetDragState;
|
|
26
|
+
private clearPressTimer;
|
|
27
|
+
private getEventPoint;
|
|
28
|
+
}
|
|
29
|
+
export default DragHelper;
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const action_type_1 = __importDefault(require("./../../enum/action-type.js"));
|
|
7
|
+
const get_index_path_for_element_1 = __importDefault(require("./../utility/get-index-path-for-element.js"));
|
|
8
|
+
// Uses shared utility getIndexPathForElement
|
|
9
|
+
class DragHelper {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.drag_active = false;
|
|
12
|
+
this.drag_origin_block = null;
|
|
13
|
+
this.drag_placeholder = null;
|
|
14
|
+
this.drag_ghost = null;
|
|
15
|
+
this.drag_start_y = null;
|
|
16
|
+
this.drag_pointer_offset_y = null;
|
|
17
|
+
this.drag_press_timer = null;
|
|
18
|
+
}
|
|
19
|
+
attach() {
|
|
20
|
+
document.addEventListener('mousedown', (e) => this.onPressStart(e), true);
|
|
21
|
+
document.addEventListener('touchstart', (e) => this.onPressStart(e), { capture: true, passive: false });
|
|
22
|
+
document.addEventListener('mousemove', (e) => this.onPointerMove(e), true);
|
|
23
|
+
document.addEventListener('touchmove', (e) => this.onPointerMove(e), { capture: true, passive: false });
|
|
24
|
+
document.addEventListener('mouseup', (e) => this.onPressEnd(e), true);
|
|
25
|
+
document.addEventListener('touchend', (e) => this.onPressEnd(e), true);
|
|
26
|
+
// Prevent native browser drag for anchors/images inside blocks so our
|
|
27
|
+
// custom drag logic receives mousemove events instead of dragover.
|
|
28
|
+
document.addEventListener('dragstart', (e) => this.onNativeDragStart(e), true);
|
|
29
|
+
}
|
|
30
|
+
isDragging() {
|
|
31
|
+
return this.drag_active;
|
|
32
|
+
}
|
|
33
|
+
getBlockElements() {
|
|
34
|
+
// All blocks on the page (used for selection updates). Not container-specific.
|
|
35
|
+
const elements = document.querySelectorAll('section.block');
|
|
36
|
+
return Array.from(elements);
|
|
37
|
+
}
|
|
38
|
+
getSiblingBlocks(container, exclude) {
|
|
39
|
+
const children = Array.from(container.children);
|
|
40
|
+
return children.filter((el) => el.classList?.contains('block') && el !== exclude);
|
|
41
|
+
}
|
|
42
|
+
onPressStart(event) {
|
|
43
|
+
const target = event.target;
|
|
44
|
+
if (target === null) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Allow starting drag from anchors (e.g., Folder blocks wrap content in <a>).
|
|
48
|
+
// Still block on true form controls to avoid interfering with inputs/buttons.
|
|
49
|
+
if (target.closest('button, input, textarea, select, label, form')) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const block = target.closest('section.block');
|
|
53
|
+
if (!block) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Avoid native link-drag by preventing default on mousedown for anchors
|
|
57
|
+
if (event instanceof MouseEvent) {
|
|
58
|
+
const anchor = target.closest('a[href]');
|
|
59
|
+
if (anchor) {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const is_touch = event.type === 'touchstart';
|
|
64
|
+
const point = this.getEventPoint(event);
|
|
65
|
+
if (point === null) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.drag_origin_block = block;
|
|
69
|
+
this.drag_start_y = point.clientY;
|
|
70
|
+
const threshold_ms = is_touch ? 350 : 200;
|
|
71
|
+
this.clearPressTimer();
|
|
72
|
+
this.drag_press_timer = window.setTimeout(() => {
|
|
73
|
+
this.beginDrag(point.clientY);
|
|
74
|
+
}, threshold_ms);
|
|
75
|
+
}
|
|
76
|
+
onNativeDragStart(event) {
|
|
77
|
+
const target = event.target;
|
|
78
|
+
if (!target) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (target.closest('section.block')) {
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
onPointerMove(event) {
|
|
86
|
+
const point = this.getEventPoint(event);
|
|
87
|
+
if (point === null) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!this.drag_active && this.drag_origin_block && this.drag_start_y !== null) {
|
|
91
|
+
const dy = Math.abs(point.clientY - this.drag_start_y);
|
|
92
|
+
if (dy > 8 && this.drag_press_timer !== null) {
|
|
93
|
+
this.beginDrag(point.clientY);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!this.drag_active) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
// FLIP: capture positions before DOM change (within current container)
|
|
101
|
+
const origin = this.drag_origin_block;
|
|
102
|
+
const container = (this.drag_placeholder?.parentElement) || (origin?.parentElement);
|
|
103
|
+
if (!container) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const blocks_before = this.getSiblingBlocks(container, origin);
|
|
107
|
+
const preRects = new Map();
|
|
108
|
+
blocks_before.forEach((el) => preRects.set(el, el.getBoundingClientRect()));
|
|
109
|
+
// Move placeholder to its new spot
|
|
110
|
+
this.updatePlaceholderPosition(point.clientY);
|
|
111
|
+
// Update ghost to follow pointer (glued to finger/mouse)
|
|
112
|
+
if (this.drag_ghost && this.drag_pointer_offset_y !== null) {
|
|
113
|
+
const top = point.clientY - this.drag_pointer_offset_y;
|
|
114
|
+
this.drag_ghost.style.top = `${top}px`;
|
|
115
|
+
}
|
|
116
|
+
// Capture last positions and animate
|
|
117
|
+
const blocks_after = this.getSiblingBlocks(container, origin);
|
|
118
|
+
this.animateWithFlip(preRects, blocks_after);
|
|
119
|
+
}
|
|
120
|
+
onPressEnd(event) {
|
|
121
|
+
this.clearPressTimer();
|
|
122
|
+
if (!this.drag_active) {
|
|
123
|
+
this.resetDragState();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
const origin = this.drag_origin_block;
|
|
128
|
+
const placeholder = this.drag_placeholder;
|
|
129
|
+
const source_index_path = (0, get_index_path_for_element_1.default)(origin);
|
|
130
|
+
const target_index_path = this.computeTargetIndexPath(placeholder);
|
|
131
|
+
this.cleanupDragElements();
|
|
132
|
+
if (target_index_path === null || target_index_path === source_index_path) {
|
|
133
|
+
this.resetDragState();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const editing = new URL(window.location.href).searchParams.get('editing') === 'true';
|
|
137
|
+
this.postReposition(source_index_path, target_index_path, editing)
|
|
138
|
+
.then((new_index_path) => {
|
|
139
|
+
if (new_index_path) {
|
|
140
|
+
const url = new URL(window.location.href);
|
|
141
|
+
url.searchParams.set('index_path', new_index_path);
|
|
142
|
+
history.replaceState({}, '', url.toString());
|
|
143
|
+
}
|
|
144
|
+
// Update selected styling locally
|
|
145
|
+
const blocks = this.getBlockElements();
|
|
146
|
+
blocks.forEach((el) => el.classList.remove('selected'));
|
|
147
|
+
origin.classList.add('selected');
|
|
148
|
+
// Rewrite data-index-path for all top-level blocks to reflect new order
|
|
149
|
+
this.updateTopLevelIndexPaths();
|
|
150
|
+
})
|
|
151
|
+
.catch(() => { })
|
|
152
|
+
.finally(() => this.resetDragState());
|
|
153
|
+
}
|
|
154
|
+
beginDrag(current_y) {
|
|
155
|
+
if (this.drag_active) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const block = this.drag_origin_block;
|
|
159
|
+
if (!block) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.drag_active = true;
|
|
163
|
+
// Reduce text selection and improve UX while dragging
|
|
164
|
+
document.body.style.userSelect = 'none';
|
|
165
|
+
document.body.style.cursor = 'grabbing';
|
|
166
|
+
const rect = block.getBoundingClientRect();
|
|
167
|
+
const ghost = block.cloneNode(true);
|
|
168
|
+
ghost.style.position = 'fixed';
|
|
169
|
+
ghost.style.top = `${rect.top}px`;
|
|
170
|
+
ghost.style.left = `${rect.left}px`;
|
|
171
|
+
ghost.style.width = `${rect.width}px`;
|
|
172
|
+
ghost.style.pointerEvents = 'none';
|
|
173
|
+
ghost.style.opacity = '0.9';
|
|
174
|
+
ghost.style.boxShadow = '0 8px 16px rgba(0,0,0,0.2)';
|
|
175
|
+
ghost.style.zIndex = '9999';
|
|
176
|
+
// No transition on top; keep glued to pointer
|
|
177
|
+
document.body.appendChild(ghost);
|
|
178
|
+
this.drag_ghost = ghost;
|
|
179
|
+
// Record pointer offset within the element so the ghost aligns under finger
|
|
180
|
+
this.drag_pointer_offset_y = current_y - rect.top;
|
|
181
|
+
// Replace the original block's layout with a placeholder in the same spot
|
|
182
|
+
const placeholder = document.createElement('div');
|
|
183
|
+
placeholder.style.height = `${rect.height}px`;
|
|
184
|
+
placeholder.style.margin = getComputedStyle(block).margin;
|
|
185
|
+
placeholder.style.border = '2px dashed #888';
|
|
186
|
+
placeholder.style.borderRadius = '4px';
|
|
187
|
+
placeholder.style.boxSizing = 'border-box';
|
|
188
|
+
block.parentElement?.insertBefore(placeholder, block);
|
|
189
|
+
this.drag_placeholder = placeholder;
|
|
190
|
+
// Remove original from layout so we don't keep extra blank space
|
|
191
|
+
block.style.display = 'none';
|
|
192
|
+
this.updatePlaceholderPosition(current_y);
|
|
193
|
+
}
|
|
194
|
+
updatePlaceholderPosition(cursor_y) {
|
|
195
|
+
const placeholder = this.drag_placeholder;
|
|
196
|
+
const origin = this.drag_origin_block;
|
|
197
|
+
if (!placeholder || !origin) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const container = placeholder.parentElement;
|
|
201
|
+
const blocks = this.getSiblingBlocks(container, origin);
|
|
202
|
+
let inserted = false;
|
|
203
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
204
|
+
const el = blocks[i];
|
|
205
|
+
const r = el.getBoundingClientRect();
|
|
206
|
+
const midpoint = r.top + r.height / 2;
|
|
207
|
+
if (cursor_y < midpoint) {
|
|
208
|
+
el.parentElement?.insertBefore(placeholder, el);
|
|
209
|
+
inserted = true;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (!inserted) {
|
|
214
|
+
const last = blocks[blocks.length - 1];
|
|
215
|
+
if (last && last.parentElement) {
|
|
216
|
+
last.parentElement.appendChild(placeholder);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
animateWithFlip(preRects, blocks_after) {
|
|
221
|
+
blocks_after.forEach((el) => {
|
|
222
|
+
const first = preRects.get(el);
|
|
223
|
+
if (!first) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const last = el.getBoundingClientRect();
|
|
227
|
+
const dy = first.top - last.top;
|
|
228
|
+
if (dy === 0) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// Invert
|
|
232
|
+
el.style.transition = '';
|
|
233
|
+
el.style.transform = `translateY(${dy}px)`;
|
|
234
|
+
// Play
|
|
235
|
+
void el.getBoundingClientRect();
|
|
236
|
+
el.style.transition = 'transform 120ms ease';
|
|
237
|
+
el.style.transform = 'translateY(0)';
|
|
238
|
+
const cleanup = () => {
|
|
239
|
+
el.style.transition = '';
|
|
240
|
+
el.style.transform = '';
|
|
241
|
+
el.removeEventListener('transitionend', cleanup);
|
|
242
|
+
};
|
|
243
|
+
el.addEventListener('transitionend', cleanup);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
async postReposition(source_index_path, target_index_path, editing) {
|
|
247
|
+
const form = new FormData();
|
|
248
|
+
form.set('path', window.location.pathname);
|
|
249
|
+
form.set('action_type', action_type_1.default.REPOSITION_BLOCK);
|
|
250
|
+
form.set('source_index_path', source_index_path);
|
|
251
|
+
form.set('target_index_path', target_index_path);
|
|
252
|
+
const response = await fetch(`/actions?editing=${editing}`, {
|
|
253
|
+
method: 'POST',
|
|
254
|
+
body: form,
|
|
255
|
+
credentials: 'same-origin',
|
|
256
|
+
redirect: 'follow'
|
|
257
|
+
});
|
|
258
|
+
try {
|
|
259
|
+
const url_obj = new URL(response.url, window.location.origin);
|
|
260
|
+
return url_obj.searchParams.get('index_path');
|
|
261
|
+
}
|
|
262
|
+
catch (_) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
computeTargetIndexPath(placeholder) {
|
|
267
|
+
if (!placeholder) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
const parent = placeholder.parentElement;
|
|
271
|
+
if (!parent) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
let index = 0;
|
|
275
|
+
const kids = Array.from(parent.children);
|
|
276
|
+
for (let i = 0; i < kids.length; i++) {
|
|
277
|
+
const el = kids[i];
|
|
278
|
+
if (el === placeholder) {
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
if (el.classList.contains('block')) {
|
|
282
|
+
index += 1;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return index.toString();
|
|
286
|
+
}
|
|
287
|
+
updateTopLevelIndexPaths() {
|
|
288
|
+
// Top-level blocks are rendered inside main > .section-wrapper
|
|
289
|
+
const wrapper = document.querySelector('main .section-wrapper');
|
|
290
|
+
let blocks;
|
|
291
|
+
if (wrapper) {
|
|
292
|
+
const nodeList = wrapper.querySelectorAll(':scope > section.block');
|
|
293
|
+
blocks = Array.from(nodeList);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
// Fallback: direct children of main if wrapper is not present
|
|
297
|
+
const nodeList = document.querySelectorAll('main > section.block');
|
|
298
|
+
blocks = Array.from(nodeList);
|
|
299
|
+
}
|
|
300
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
301
|
+
blocks[i].setAttribute('data-index-path', i.toString());
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
cleanupDragElements() {
|
|
305
|
+
if (this.drag_ghost && this.drag_ghost.parentElement) {
|
|
306
|
+
this.drag_ghost.parentElement.removeChild(this.drag_ghost);
|
|
307
|
+
}
|
|
308
|
+
if (this.drag_placeholder && this.drag_placeholder.parentElement) {
|
|
309
|
+
// Move the real element into the placeholder's final position
|
|
310
|
+
if (this.drag_origin_block) {
|
|
311
|
+
this.drag_placeholder.parentElement.insertBefore(this.drag_origin_block, this.drag_placeholder);
|
|
312
|
+
}
|
|
313
|
+
this.drag_placeholder.parentElement.removeChild(this.drag_placeholder);
|
|
314
|
+
}
|
|
315
|
+
if (this.drag_origin_block) {
|
|
316
|
+
this.drag_origin_block.style.display = '';
|
|
317
|
+
}
|
|
318
|
+
this.drag_ghost = null;
|
|
319
|
+
this.drag_placeholder = null;
|
|
320
|
+
// Restore global styles
|
|
321
|
+
document.body.style.userSelect = '';
|
|
322
|
+
document.body.style.cursor = '';
|
|
323
|
+
}
|
|
324
|
+
resetDragState() {
|
|
325
|
+
this.cleanupDragElements();
|
|
326
|
+
this.drag_active = false;
|
|
327
|
+
this.drag_origin_block = null;
|
|
328
|
+
this.drag_start_y = null;
|
|
329
|
+
this.drag_pointer_offset_y = null;
|
|
330
|
+
}
|
|
331
|
+
clearPressTimer() {
|
|
332
|
+
if (this.drag_press_timer !== null) {
|
|
333
|
+
window.clearTimeout(this.drag_press_timer);
|
|
334
|
+
this.drag_press_timer = null;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
getEventPoint(event) {
|
|
338
|
+
if (event.touches !== undefined) {
|
|
339
|
+
const te = event;
|
|
340
|
+
const t = te.touches[0] || te.changedTouches[0];
|
|
341
|
+
if (!t)
|
|
342
|
+
return null;
|
|
343
|
+
return { clientY: t.clientY };
|
|
344
|
+
}
|
|
345
|
+
const me = event;
|
|
346
|
+
return { clientY: me.clientY };
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
exports.default = DragHelper;
|
|
350
|
+
//# sourceMappingURL=drag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drag.js","sourceRoot":"","sources":["../../../../src/client/helper/drag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
declare class InteractionHelper {
|
|
2
|
+
private drag_active;
|
|
3
|
+
private drag_origin_block;
|
|
4
|
+
private drag_placeholder;
|
|
5
|
+
private drag_ghost;
|
|
6
|
+
private drag_start_y;
|
|
7
|
+
private drag_pointer_offset_y;
|
|
8
|
+
private drag_press_timer;
|
|
9
|
+
private swipe_active;
|
|
10
|
+
private swipe_block;
|
|
11
|
+
private swipe_start_x;
|
|
12
|
+
private swipe_start_y;
|
|
13
|
+
private swipe_content;
|
|
14
|
+
private swipe_menu_width;
|
|
15
|
+
private open_swipe_block;
|
|
16
|
+
private open_swipe_content;
|
|
17
|
+
constructor();
|
|
18
|
+
attach(): void;
|
|
19
|
+
isDragging(): boolean;
|
|
20
|
+
private getBlockElements;
|
|
21
|
+
private getSiblingBlocks;
|
|
22
|
+
private onPressStart;
|
|
23
|
+
private onNativeDragStart;
|
|
24
|
+
private onPointerMove;
|
|
25
|
+
private onPressEnd;
|
|
26
|
+
private beginSwipe;
|
|
27
|
+
private closeOpenSwipeMenu;
|
|
28
|
+
private teardownSwipe;
|
|
29
|
+
private onGlobalTouchStart;
|
|
30
|
+
private getSwipeMenuFor;
|
|
31
|
+
private resetSwipeState;
|
|
32
|
+
private ensureSwipeUI;
|
|
33
|
+
private navigateToAddAfter;
|
|
34
|
+
private enforceTimeVisibility;
|
|
35
|
+
private navigateToBlockLink;
|
|
36
|
+
private beginDrag;
|
|
37
|
+
private updatePlaceholderPosition;
|
|
38
|
+
private animateWithFlip;
|
|
39
|
+
private postReposition;
|
|
40
|
+
private computeTargetIndexPath;
|
|
41
|
+
private updateTopLevelIndexPaths;
|
|
42
|
+
private cleanupDragElements;
|
|
43
|
+
private resetDragState;
|
|
44
|
+
private clearPressTimer;
|
|
45
|
+
private getEventPoint;
|
|
46
|
+
}
|
|
47
|
+
export default InteractionHelper;
|