@expcat/tigercat-core 0.3.69 → 0.4.0
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/index.cjs +516 -3
- package/dist/index.d.cts +657 -5
- package/dist/index.d.ts +657 -5
- package/dist/index.js +448 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -673,7 +673,8 @@ function mergeTigerLocale(base, override) {
|
|
|
673
673
|
drawer: { ...base?.drawer, ...override?.drawer },
|
|
674
674
|
upload: { ...base?.upload, ...override?.upload },
|
|
675
675
|
pagination: { ...base?.pagination, ...override?.pagination },
|
|
676
|
-
formWizard: { ...base?.formWizard, ...override?.formWizard }
|
|
676
|
+
formWizard: { ...base?.formWizard, ...override?.formWizard },
|
|
677
|
+
taskBoard: { ...base?.taskBoard, ...override?.taskBoard }
|
|
677
678
|
};
|
|
678
679
|
}
|
|
679
680
|
var DEFAULT_PAGINATION_LABELS = {
|
|
@@ -728,6 +729,29 @@ function formatPaginationTotal(template, total, range) {
|
|
|
728
729
|
function formatPageAriaLabel(template, page) {
|
|
729
730
|
return template.replace("{page}", String(page));
|
|
730
731
|
}
|
|
732
|
+
var DEFAULT_TASK_BOARD_LABELS = {
|
|
733
|
+
emptyColumnText: "No tasks",
|
|
734
|
+
addCardText: "Add task",
|
|
735
|
+
wipLimitText: "WIP limit: {limit}",
|
|
736
|
+
dragHintText: "Drag to move",
|
|
737
|
+
boardAriaLabel: "Task Board"
|
|
738
|
+
};
|
|
739
|
+
var ZH_CN_TASK_BOARD_LABELS = {
|
|
740
|
+
emptyColumnText: "\u6682\u65E0\u4EFB\u52A1",
|
|
741
|
+
addCardText: "\u6DFB\u52A0\u4EFB\u52A1",
|
|
742
|
+
wipLimitText: "WIP \u9650\u5236: {limit}",
|
|
743
|
+
dragHintText: "\u62D6\u62FD\u4EE5\u79FB\u52A8",
|
|
744
|
+
boardAriaLabel: "\u4EFB\u52A1\u770B\u677F"
|
|
745
|
+
};
|
|
746
|
+
function getTaskBoardLabels(locale) {
|
|
747
|
+
return {
|
|
748
|
+
emptyColumnText: locale?.taskBoard?.emptyColumnText ?? DEFAULT_TASK_BOARD_LABELS.emptyColumnText,
|
|
749
|
+
addCardText: locale?.taskBoard?.addCardText ?? DEFAULT_TASK_BOARD_LABELS.addCardText,
|
|
750
|
+
wipLimitText: locale?.taskBoard?.wipLimitText ?? DEFAULT_TASK_BOARD_LABELS.wipLimitText,
|
|
751
|
+
dragHintText: locale?.taskBoard?.dragHintText ?? DEFAULT_TASK_BOARD_LABELS.dragHintText,
|
|
752
|
+
boardAriaLabel: locale?.taskBoard?.boardAriaLabel ?? DEFAULT_TASK_BOARD_LABELS.boardAriaLabel
|
|
753
|
+
};
|
|
754
|
+
}
|
|
731
755
|
|
|
732
756
|
// src/utils/datepicker-i18n.ts
|
|
733
757
|
function getDatePickerLabels(locale, overrides) {
|
|
@@ -5150,6 +5174,203 @@ function getTextClasses(props) {
|
|
|
5150
5174
|
);
|
|
5151
5175
|
}
|
|
5152
5176
|
|
|
5177
|
+
// src/utils/image-utils.ts
|
|
5178
|
+
var imageBaseClasses = "relative inline-block overflow-hidden";
|
|
5179
|
+
function getImageImgClasses(fit) {
|
|
5180
|
+
const fitMap = {
|
|
5181
|
+
contain: "object-contain",
|
|
5182
|
+
cover: "object-cover",
|
|
5183
|
+
fill: "object-fill",
|
|
5184
|
+
none: "object-none",
|
|
5185
|
+
"scale-down": "object-scale-down"
|
|
5186
|
+
};
|
|
5187
|
+
return classNames("block w-full h-full", fitMap[fit]);
|
|
5188
|
+
}
|
|
5189
|
+
var imageErrorClasses = "flex items-center justify-center w-full h-full bg-[var(--tiger-image-error-bg,#f3f4f6)] text-[var(--tiger-image-error-text,#9ca3af)]";
|
|
5190
|
+
var imageLoadingClasses = "flex items-center justify-center w-full h-full bg-[var(--tiger-image-error-bg,#f3f4f6)] text-[var(--tiger-image-error-text,#9ca3af)] animate-pulse";
|
|
5191
|
+
var imagePreviewCursorClass = "cursor-pointer";
|
|
5192
|
+
var imageErrorIconPath = "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z";
|
|
5193
|
+
var zoomInIconPath = "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v6m3-3H7";
|
|
5194
|
+
var zoomOutIconPath = "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM13 10H7";
|
|
5195
|
+
var resetIconPath = "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15";
|
|
5196
|
+
var prevIconPath = "M15 19l-7-7 7-7";
|
|
5197
|
+
var nextIconPath = "M9 5l7 7-7 7";
|
|
5198
|
+
var previewCloseIconPath = "M6 18L18 6M6 6l12 12";
|
|
5199
|
+
var imagePreviewMaskClasses = "fixed inset-0 bg-[var(--tiger-image-mask,rgba(0,0,0,0.85))] transition-opacity";
|
|
5200
|
+
var imagePreviewWrapperClasses = "fixed inset-0 flex items-center justify-center select-none";
|
|
5201
|
+
var imagePreviewImgClasses = "max-w-none transition-transform duration-150 ease-out cursor-grab active:cursor-grabbing";
|
|
5202
|
+
var imagePreviewToolbarClasses = "absolute bottom-6 left-1/2 -translate-x-1/2 flex items-center gap-2 px-4 py-2 rounded-full bg-[var(--tiger-image-toolbar-bg,rgba(0,0,0,0.6))] text-white";
|
|
5203
|
+
var imagePreviewToolbarBtnClasses = "flex items-center justify-center w-8 h-8 rounded-full hover:bg-white/20 transition-colors focus:outline-none focus:ring-2 focus:ring-white/50 disabled:opacity-40 disabled:cursor-not-allowed";
|
|
5204
|
+
var imagePreviewNavBtnClasses = "absolute top-1/2 -translate-y-1/2 flex items-center justify-center w-10 h-10 rounded-full bg-[var(--tiger-image-toolbar-bg,rgba(0,0,0,0.6))] text-white hover:bg-white/20 transition-colors focus:outline-none focus:ring-2 focus:ring-white/50 disabled:opacity-40 disabled:cursor-not-allowed";
|
|
5205
|
+
var imagePreviewCloseBtnClasses = "absolute top-4 right-4 flex items-center justify-center w-10 h-10 rounded-full bg-[var(--tiger-image-toolbar-bg,rgba(0,0,0,0.6))] text-white hover:bg-white/20 transition-colors focus:outline-none focus:ring-2 focus:ring-white/50";
|
|
5206
|
+
var imagePreviewCounterClasses = "text-sm text-white/80 mx-2 tabular-nums";
|
|
5207
|
+
var imageCropperContainerClasses = "relative overflow-hidden bg-[var(--tiger-image-cropper-bg,#1a1a2e)] select-none touch-none";
|
|
5208
|
+
var imageCropperImgClasses = "absolute top-0 left-0 max-w-none pointer-events-none";
|
|
5209
|
+
var imageCropperMaskClasses = "absolute inset-0 pointer-events-none";
|
|
5210
|
+
var imageCropperSelectionClasses = "absolute border-2 border-[var(--tiger-image-cropper-border,#ffffff)] pointer-events-none";
|
|
5211
|
+
var imageCropperGuideClasses = "absolute border-[var(--tiger-image-cropper-border,rgba(255,255,255,0.4))] pointer-events-none";
|
|
5212
|
+
var imageCropperDragAreaClasses = "absolute cursor-move";
|
|
5213
|
+
function getCropperHandleClasses(handle) {
|
|
5214
|
+
const base = "absolute w-3 h-3 bg-[var(--tiger-image-cropper-border,#ffffff)] border border-[var(--tiger-image-cropper-handle-border,rgba(0,0,0,0.3))]";
|
|
5215
|
+
const positionMap = {
|
|
5216
|
+
nw: "-top-1.5 -left-1.5 cursor-nw-resize",
|
|
5217
|
+
n: "-top-1.5 left-1/2 -translate-x-1/2 cursor-n-resize",
|
|
5218
|
+
ne: "-top-1.5 -right-1.5 cursor-ne-resize",
|
|
5219
|
+
e: "top-1/2 -right-1.5 -translate-y-1/2 cursor-e-resize",
|
|
5220
|
+
se: "-bottom-1.5 -right-1.5 cursor-se-resize",
|
|
5221
|
+
s: "-bottom-1.5 left-1/2 -translate-x-1/2 cursor-s-resize",
|
|
5222
|
+
sw: "-bottom-1.5 -left-1.5 cursor-sw-resize",
|
|
5223
|
+
w: "top-1/2 -left-1.5 -translate-y-1/2 cursor-w-resize"
|
|
5224
|
+
};
|
|
5225
|
+
return classNames(base, positionMap[handle]);
|
|
5226
|
+
}
|
|
5227
|
+
var CROP_HANDLES = ["nw", "n", "ne", "e", "se", "s", "sw", "w"];
|
|
5228
|
+
var cropUploadTriggerClasses = "inline-flex items-center justify-center gap-2 px-4 py-2 border-2 border-dashed border-[var(--tiger-border,#d1d5db)] rounded-lg text-[var(--tiger-text-muted,#6b7280)] hover:border-[var(--tiger-primary,#2563eb)] hover:text-[var(--tiger-primary,#2563eb)] transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--tiger-primary,#2563eb)] focus:ring-offset-2";
|
|
5229
|
+
var cropUploadTriggerDisabledClasses = "inline-flex items-center justify-center gap-2 px-4 py-2 border-2 border-dashed border-[var(--tiger-border,#d1d5db)] rounded-lg text-[var(--tiger-text-muted,#9ca3af)] cursor-not-allowed opacity-50";
|
|
5230
|
+
var uploadPlusIconPath = "M12 4v16m8-8H4";
|
|
5231
|
+
function clampScale(scale, min, max) {
|
|
5232
|
+
return Math.min(Math.max(scale, min), max);
|
|
5233
|
+
}
|
|
5234
|
+
function calculateTransform(scale, offsetX, offsetY) {
|
|
5235
|
+
return `translate(${offsetX}px, ${offsetY}px) scale(${scale})`;
|
|
5236
|
+
}
|
|
5237
|
+
function getPreviewNavState(currentIndex, total) {
|
|
5238
|
+
return {
|
|
5239
|
+
hasPrev: currentIndex > 0,
|
|
5240
|
+
hasNext: currentIndex < total - 1,
|
|
5241
|
+
counter: total > 1 ? `${currentIndex + 1} / ${total}` : ""
|
|
5242
|
+
};
|
|
5243
|
+
}
|
|
5244
|
+
function constrainCropRect(rect, imageWidth, imageHeight, aspectRatio) {
|
|
5245
|
+
let { x, y, width, height } = rect;
|
|
5246
|
+
if (aspectRatio && aspectRatio > 0) {
|
|
5247
|
+
const currentRatio = width / height;
|
|
5248
|
+
if (currentRatio > aspectRatio) {
|
|
5249
|
+
width = height * aspectRatio;
|
|
5250
|
+
} else {
|
|
5251
|
+
height = width / aspectRatio;
|
|
5252
|
+
}
|
|
5253
|
+
}
|
|
5254
|
+
width = Math.min(width, imageWidth);
|
|
5255
|
+
height = Math.min(height, imageHeight);
|
|
5256
|
+
x = Math.max(0, Math.min(x, imageWidth - width));
|
|
5257
|
+
y = Math.max(0, Math.min(y, imageHeight - height));
|
|
5258
|
+
return { x, y, width, height };
|
|
5259
|
+
}
|
|
5260
|
+
function resizeCropRect(rect, handle, dx, dy, imageWidth, imageHeight, aspectRatio, minW = 20, minH = 20) {
|
|
5261
|
+
let { x, y, width, height } = rect;
|
|
5262
|
+
switch (handle) {
|
|
5263
|
+
case "nw":
|
|
5264
|
+
x += dx;
|
|
5265
|
+
y += dy;
|
|
5266
|
+
width -= dx;
|
|
5267
|
+
height -= dy;
|
|
5268
|
+
break;
|
|
5269
|
+
case "n":
|
|
5270
|
+
y += dy;
|
|
5271
|
+
height -= dy;
|
|
5272
|
+
break;
|
|
5273
|
+
case "ne":
|
|
5274
|
+
width += dx;
|
|
5275
|
+
y += dy;
|
|
5276
|
+
height -= dy;
|
|
5277
|
+
break;
|
|
5278
|
+
case "e":
|
|
5279
|
+
width += dx;
|
|
5280
|
+
break;
|
|
5281
|
+
case "se":
|
|
5282
|
+
width += dx;
|
|
5283
|
+
height += dy;
|
|
5284
|
+
break;
|
|
5285
|
+
case "s":
|
|
5286
|
+
height += dy;
|
|
5287
|
+
break;
|
|
5288
|
+
case "sw":
|
|
5289
|
+
x += dx;
|
|
5290
|
+
width -= dx;
|
|
5291
|
+
height += dy;
|
|
5292
|
+
break;
|
|
5293
|
+
case "w":
|
|
5294
|
+
x += dx;
|
|
5295
|
+
width -= dx;
|
|
5296
|
+
break;
|
|
5297
|
+
}
|
|
5298
|
+
if (width < minW) {
|
|
5299
|
+
if (handle.includes("w")) {
|
|
5300
|
+
x = rect.x + rect.width - minW;
|
|
5301
|
+
}
|
|
5302
|
+
width = minW;
|
|
5303
|
+
}
|
|
5304
|
+
if (height < minH) {
|
|
5305
|
+
if (handle.includes("n")) {
|
|
5306
|
+
y = rect.y + rect.height - minH;
|
|
5307
|
+
}
|
|
5308
|
+
height = minH;
|
|
5309
|
+
}
|
|
5310
|
+
if (aspectRatio && aspectRatio > 0) {
|
|
5311
|
+
const newRatio = width / height;
|
|
5312
|
+
if (handle === "n" || handle === "s" || handle === "nw" || handle === "sw" || handle === "ne" || handle === "se") {
|
|
5313
|
+
width = height * aspectRatio;
|
|
5314
|
+
}
|
|
5315
|
+
if (handle === "e" || handle === "w") {
|
|
5316
|
+
height = width / aspectRatio;
|
|
5317
|
+
}
|
|
5318
|
+
if (newRatio !== aspectRatio && (handle === "nw" || handle === "ne" || handle === "sw" || handle === "se")) {
|
|
5319
|
+
width = height * aspectRatio;
|
|
5320
|
+
}
|
|
5321
|
+
}
|
|
5322
|
+
return constrainCropRect({ x, y, width, height }, imageWidth, imageHeight, aspectRatio);
|
|
5323
|
+
}
|
|
5324
|
+
function moveCropRect(rect, dx, dy, boundW, boundH) {
|
|
5325
|
+
const x = Math.max(0, Math.min(rect.x + dx, boundW - rect.width));
|
|
5326
|
+
const y = Math.max(0, Math.min(rect.y + dy, boundH - rect.height));
|
|
5327
|
+
return { x, y, width: rect.width, height: rect.height };
|
|
5328
|
+
}
|
|
5329
|
+
function getInitialCropRect(imageWidth, imageHeight, aspectRatio) {
|
|
5330
|
+
const padding = 0.1;
|
|
5331
|
+
let cropW = imageWidth * (1 - padding * 2);
|
|
5332
|
+
let cropH = imageHeight * (1 - padding * 2);
|
|
5333
|
+
if (aspectRatio && aspectRatio > 0) {
|
|
5334
|
+
if (cropW / cropH > aspectRatio) {
|
|
5335
|
+
cropW = cropH * aspectRatio;
|
|
5336
|
+
} else {
|
|
5337
|
+
cropH = cropW / aspectRatio;
|
|
5338
|
+
}
|
|
5339
|
+
}
|
|
5340
|
+
return {
|
|
5341
|
+
x: (imageWidth - cropW) / 2,
|
|
5342
|
+
y: (imageHeight - cropH) / 2,
|
|
5343
|
+
width: cropW,
|
|
5344
|
+
height: cropH
|
|
5345
|
+
};
|
|
5346
|
+
}
|
|
5347
|
+
function cropCanvas(image, cropRect, displayWidth, displayHeight, outputType = "image/png", quality = 0.92) {
|
|
5348
|
+
const scaleX = image.naturalWidth / displayWidth;
|
|
5349
|
+
const scaleY = image.naturalHeight / displayHeight;
|
|
5350
|
+
const sx = cropRect.x * scaleX;
|
|
5351
|
+
const sy = cropRect.y * scaleY;
|
|
5352
|
+
const sw = cropRect.width * scaleX;
|
|
5353
|
+
const sh = cropRect.height * scaleY;
|
|
5354
|
+
const canvas = document.createElement("canvas");
|
|
5355
|
+
canvas.width = Math.round(sw);
|
|
5356
|
+
canvas.height = Math.round(sh);
|
|
5357
|
+
const ctx = canvas.getContext("2d");
|
|
5358
|
+
if (ctx) {
|
|
5359
|
+
ctx.drawImage(image, sx, sy, sw, sh, 0, 0, canvas.width, canvas.height);
|
|
5360
|
+
}
|
|
5361
|
+
const dataUrl = canvas.toDataURL(outputType, quality);
|
|
5362
|
+
return { canvas, dataUrl };
|
|
5363
|
+
}
|
|
5364
|
+
function getTouchDistance(touch1, touch2) {
|
|
5365
|
+
const dx = touch1.clientX - touch2.clientX;
|
|
5366
|
+
const dy = touch1.clientY - touch2.clientY;
|
|
5367
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
5368
|
+
}
|
|
5369
|
+
function toCSSSize(value) {
|
|
5370
|
+
if (value === void 0) return void 0;
|
|
5371
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
5372
|
+
}
|
|
5373
|
+
|
|
5153
5374
|
// src/utils/carousel-utils.ts
|
|
5154
5375
|
var carouselBaseClasses = "relative overflow-hidden w-full";
|
|
5155
5376
|
var carouselTrackScrollClasses = "flex transition-transform ease-in-out";
|
|
@@ -6269,6 +6490,164 @@ var formatCommentTime = (value) => {
|
|
|
6269
6490
|
return value;
|
|
6270
6491
|
};
|
|
6271
6492
|
|
|
6493
|
+
// src/utils/task-board-utils.ts
|
|
6494
|
+
var taskBoardBaseClasses = "tiger-task-board flex gap-4 overflow-x-auto p-4 min-h-[400px]";
|
|
6495
|
+
var taskBoardColumnClasses = "tiger-task-board-column flex flex-col shrink-0 w-72 rounded-lg border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm transition-shadow";
|
|
6496
|
+
var taskBoardColumnHeaderClasses = "flex items-center justify-between px-3 py-2 border-b border-[var(--tiger-border,#e5e7eb)] text-sm font-semibold text-[var(--tiger-text,#1f2937)] select-none";
|
|
6497
|
+
var taskBoardColumnBodyClasses = "flex-1 overflow-y-auto p-2 space-y-2 min-h-[80px]";
|
|
6498
|
+
var taskBoardCardClasses = "tiger-task-board-card rounded-md border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] p-3 shadow-sm cursor-grab select-none transition-opacity";
|
|
6499
|
+
var taskBoardCardDraggingClasses = "opacity-50 shadow-lg";
|
|
6500
|
+
var taskBoardDropIndicatorClasses = "h-1 rounded-full bg-[var(--tiger-primary,#2563eb)] my-1 transition-all";
|
|
6501
|
+
var taskBoardColumnDropTargetClasses = "ring-2 ring-[var(--tiger-primary,#2563eb)] ring-opacity-50";
|
|
6502
|
+
var taskBoardColumnDraggingClasses = "opacity-50";
|
|
6503
|
+
var taskBoardEmptyClasses = "flex items-center justify-center text-[var(--tiger-text-muted,#6b7280)] text-sm py-8";
|
|
6504
|
+
var taskBoardWipExceededClasses = "text-[var(--tiger-error,#ef4444)]";
|
|
6505
|
+
var taskBoardAddCardClasses = "flex items-center justify-center gap-1 w-full py-1.5 text-sm text-[var(--tiger-text-muted,#6b7280)] hover:text-[var(--tiger-primary,#2563eb)] hover:bg-[var(--tiger-surface-muted,#f9fafb)] rounded transition-colors cursor-pointer";
|
|
6506
|
+
var MIME = "text/plain";
|
|
6507
|
+
function createCardDragData(cardId, columnId, index) {
|
|
6508
|
+
const data = { type: "card", cardId, columnId, index };
|
|
6509
|
+
return JSON.stringify(data);
|
|
6510
|
+
}
|
|
6511
|
+
function createColumnDragData(columnId, index) {
|
|
6512
|
+
const data = { type: "column", columnId, index };
|
|
6513
|
+
return JSON.stringify(data);
|
|
6514
|
+
}
|
|
6515
|
+
function parseDragData(dataTransfer) {
|
|
6516
|
+
try {
|
|
6517
|
+
const raw = dataTransfer.getData(MIME);
|
|
6518
|
+
if (!raw) return null;
|
|
6519
|
+
const data = JSON.parse(raw);
|
|
6520
|
+
if (data.type === "card" || data.type === "column") return data;
|
|
6521
|
+
return null;
|
|
6522
|
+
} catch {
|
|
6523
|
+
return null;
|
|
6524
|
+
}
|
|
6525
|
+
}
|
|
6526
|
+
function setDragData(dataTransfer, json) {
|
|
6527
|
+
dataTransfer.setData(MIME, json);
|
|
6528
|
+
dataTransfer.effectAllowed = "move";
|
|
6529
|
+
}
|
|
6530
|
+
function moveCard(columns, cardId, fromColumnId, toColumnId, toIndex, options) {
|
|
6531
|
+
const srcColIdx = columns.findIndex((c) => c.id === fromColumnId);
|
|
6532
|
+
const dstColIdx = columns.findIndex((c) => c.id === toColumnId);
|
|
6533
|
+
if (srcColIdx === -1 || dstColIdx === -1) return null;
|
|
6534
|
+
const srcCol = columns[srcColIdx];
|
|
6535
|
+
const cardIdx = srcCol.cards.findIndex((c) => c.id === cardId);
|
|
6536
|
+
if (cardIdx === -1) return null;
|
|
6537
|
+
const card = srcCol.cards[cardIdx];
|
|
6538
|
+
const clampedTo = Math.max(
|
|
6539
|
+
0,
|
|
6540
|
+
Math.min(
|
|
6541
|
+
toIndex,
|
|
6542
|
+
srcColIdx === dstColIdx ? srcCol.cards.length - 1 : columns[dstColIdx].cards.length
|
|
6543
|
+
)
|
|
6544
|
+
);
|
|
6545
|
+
if (srcColIdx === dstColIdx) {
|
|
6546
|
+
if (cardIdx === clampedTo) return null;
|
|
6547
|
+
const newCards = [...srcCol.cards];
|
|
6548
|
+
newCards.splice(cardIdx, 1);
|
|
6549
|
+
newCards.splice(clampedTo, 0, card);
|
|
6550
|
+
const newCols2 = columns.map((c, i) => i === srcColIdx ? { ...c, cards: newCards } : c);
|
|
6551
|
+
return {
|
|
6552
|
+
columns: newCols2,
|
|
6553
|
+
event: { cardId, fromColumnId, toColumnId, fromIndex: cardIdx, toIndex: clampedTo }
|
|
6554
|
+
};
|
|
6555
|
+
}
|
|
6556
|
+
const dstCol = columns[dstColIdx];
|
|
6557
|
+
if (options?.enforceWipLimit && dstCol.wipLimit != null && dstCol.wipLimit > 0 && dstCol.cards.length >= dstCol.wipLimit) {
|
|
6558
|
+
return null;
|
|
6559
|
+
}
|
|
6560
|
+
const newSrcCards = srcCol.cards.filter((c) => c.id !== cardId);
|
|
6561
|
+
const newDstCards = [...dstCol.cards];
|
|
6562
|
+
newDstCards.splice(clampedTo, 0, card);
|
|
6563
|
+
const newCols = columns.map((c, i) => {
|
|
6564
|
+
if (i === srcColIdx) return { ...c, cards: newSrcCards };
|
|
6565
|
+
if (i === dstColIdx) return { ...c, cards: newDstCards };
|
|
6566
|
+
return c;
|
|
6567
|
+
});
|
|
6568
|
+
return {
|
|
6569
|
+
columns: newCols,
|
|
6570
|
+
event: { cardId, fromColumnId, toColumnId, fromIndex: cardIdx, toIndex: clampedTo }
|
|
6571
|
+
};
|
|
6572
|
+
}
|
|
6573
|
+
function reorderColumns(columns, fromIndex, toIndex) {
|
|
6574
|
+
if (fromIndex === toIndex || fromIndex < 0 || fromIndex >= columns.length || toIndex < 0 || toIndex >= columns.length) {
|
|
6575
|
+
return null;
|
|
6576
|
+
}
|
|
6577
|
+
const col = columns[fromIndex];
|
|
6578
|
+
const next = [...columns];
|
|
6579
|
+
next.splice(fromIndex, 1);
|
|
6580
|
+
next.splice(toIndex, 0, col);
|
|
6581
|
+
return {
|
|
6582
|
+
columns: next,
|
|
6583
|
+
event: { columnId: col.id, fromIndex, toIndex }
|
|
6584
|
+
};
|
|
6585
|
+
}
|
|
6586
|
+
function isWipExceeded(column) {
|
|
6587
|
+
if (column.wipLimit == null || column.wipLimit <= 0) return false;
|
|
6588
|
+
return column.cards.length > column.wipLimit;
|
|
6589
|
+
}
|
|
6590
|
+
function getDropIndex(pointerY, cardRects) {
|
|
6591
|
+
for (let i = 0; i < cardRects.length; i++) {
|
|
6592
|
+
const mid = cardRects[i].top + cardRects[i].height / 2;
|
|
6593
|
+
if (pointerY < mid) return i;
|
|
6594
|
+
}
|
|
6595
|
+
return cardRects.length;
|
|
6596
|
+
}
|
|
6597
|
+
function getColumnDropIndex(pointerX, columnRects) {
|
|
6598
|
+
for (let i = 0; i < columnRects.length; i++) {
|
|
6599
|
+
const mid = columnRects[i].left + columnRects[i].width / 2;
|
|
6600
|
+
if (pointerX < mid) return i;
|
|
6601
|
+
}
|
|
6602
|
+
return columnRects.length;
|
|
6603
|
+
}
|
|
6604
|
+
function createTouchDragTracker() {
|
|
6605
|
+
let state = {
|
|
6606
|
+
startX: 0,
|
|
6607
|
+
startY: 0,
|
|
6608
|
+
currentX: 0,
|
|
6609
|
+
currentY: 0,
|
|
6610
|
+
active: false,
|
|
6611
|
+
sourceElement: null
|
|
6612
|
+
};
|
|
6613
|
+
return {
|
|
6614
|
+
onTouchStart(e, source) {
|
|
6615
|
+
const touch = e.touches[0];
|
|
6616
|
+
state = {
|
|
6617
|
+
startX: touch.clientX,
|
|
6618
|
+
startY: touch.clientY,
|
|
6619
|
+
currentX: touch.clientX,
|
|
6620
|
+
currentY: touch.clientY,
|
|
6621
|
+
active: true,
|
|
6622
|
+
sourceElement: source
|
|
6623
|
+
};
|
|
6624
|
+
},
|
|
6625
|
+
onTouchMove(e) {
|
|
6626
|
+
if (!state.active) return;
|
|
6627
|
+
const touch = e.touches[0];
|
|
6628
|
+
state.currentX = touch.clientX;
|
|
6629
|
+
state.currentY = touch.clientY;
|
|
6630
|
+
e.preventDefault();
|
|
6631
|
+
},
|
|
6632
|
+
onTouchEnd() {
|
|
6633
|
+
state = { ...state, active: false, sourceElement: null };
|
|
6634
|
+
return { ...state };
|
|
6635
|
+
},
|
|
6636
|
+
getState() {
|
|
6637
|
+
return state;
|
|
6638
|
+
},
|
|
6639
|
+
cancel() {
|
|
6640
|
+
state = { ...state, active: false, sourceElement: null };
|
|
6641
|
+
}
|
|
6642
|
+
};
|
|
6643
|
+
}
|
|
6644
|
+
function findColumnFromPoint(x, y, boardEl) {
|
|
6645
|
+
if (!boardEl) return null;
|
|
6646
|
+
const el = document.elementFromPoint(x, y);
|
|
6647
|
+
if (!el) return null;
|
|
6648
|
+
return el.closest("[data-tiger-taskboard-column]");
|
|
6649
|
+
}
|
|
6650
|
+
|
|
6272
6651
|
// src/theme/checkbox.ts
|
|
6273
6652
|
var checkboxSizeClasses = {
|
|
6274
6653
|
sm: "w-4 h-4",
|
|
@@ -6453,6 +6832,7 @@ export {
|
|
|
6453
6832
|
ANIMATION_DURATION_FAST_MS,
|
|
6454
6833
|
ANIMATION_DURATION_MS,
|
|
6455
6834
|
ANIMATION_DURATION_SLOW_MS,
|
|
6835
|
+
CROP_HANDLES,
|
|
6456
6836
|
CalendarIconPath,
|
|
6457
6837
|
ChevronLeftIconPath,
|
|
6458
6838
|
ChevronRightIconPath,
|
|
@@ -6461,6 +6841,7 @@ export {
|
|
|
6461
6841
|
DEFAULT_CHART_COLORS,
|
|
6462
6842
|
DEFAULT_FORM_WIZARD_LABELS,
|
|
6463
6843
|
DEFAULT_PAGINATION_LABELS,
|
|
6844
|
+
DEFAULT_TASK_BOARD_LABELS,
|
|
6464
6845
|
DONUT_BASE_SHADOW,
|
|
6465
6846
|
DONUT_EMPHASIS_SHADOW,
|
|
6466
6847
|
DROPDOWN_CHEVRON_PATH,
|
|
@@ -6494,6 +6875,7 @@ export {
|
|
|
6494
6875
|
TimePickerCloseIconPath,
|
|
6495
6876
|
ZH_CN_FORM_WIZARD_LABELS,
|
|
6496
6877
|
ZH_CN_PAGINATION_LABELS,
|
|
6878
|
+
ZH_CN_TASK_BOARD_LABELS,
|
|
6497
6879
|
activeOpacityClasses,
|
|
6498
6880
|
activePressClasses,
|
|
6499
6881
|
alertBaseClasses,
|
|
@@ -6557,6 +6939,7 @@ export {
|
|
|
6557
6939
|
calculateCirclePath,
|
|
6558
6940
|
calculatePagination,
|
|
6559
6941
|
calculateStepStatus,
|
|
6942
|
+
calculateTransform,
|
|
6560
6943
|
calendarSolidIcon20PathD,
|
|
6561
6944
|
captureActiveElement,
|
|
6562
6945
|
cardActionsClasses,
|
|
@@ -6598,6 +6981,7 @@ export {
|
|
|
6598
6981
|
chevronRightSolidIcon20PathD,
|
|
6599
6982
|
clampBarWidth,
|
|
6600
6983
|
clampPercentage,
|
|
6984
|
+
clampScale,
|
|
6601
6985
|
clampSlideIndex,
|
|
6602
6986
|
classNames,
|
|
6603
6987
|
clearFieldErrors,
|
|
@@ -6631,6 +7015,7 @@ export {
|
|
|
6631
7015
|
computeFloatingPosition,
|
|
6632
7016
|
computePieHoverOffset,
|
|
6633
7017
|
computePieLabelLine,
|
|
7018
|
+
constrainCropRect,
|
|
6634
7019
|
containerBaseClasses,
|
|
6635
7020
|
containerCenteredClasses,
|
|
6636
7021
|
containerMaxWidthClasses,
|
|
@@ -6639,13 +7024,19 @@ export {
|
|
|
6639
7024
|
createAreaPath,
|
|
6640
7025
|
createAriaId,
|
|
6641
7026
|
createBandScale,
|
|
7027
|
+
createCardDragData,
|
|
6642
7028
|
createChartInteractionHandlers,
|
|
7029
|
+
createColumnDragData,
|
|
6643
7030
|
createFloatingIdFactory,
|
|
6644
7031
|
createLinePath,
|
|
6645
7032
|
createLinearScale,
|
|
6646
7033
|
createPieArcPath,
|
|
6647
7034
|
createPointScale,
|
|
6648
7035
|
createPolygonPath,
|
|
7036
|
+
createTouchDragTracker,
|
|
7037
|
+
cropCanvas,
|
|
7038
|
+
cropUploadTriggerClasses,
|
|
7039
|
+
cropUploadTriggerDisabledClasses,
|
|
6649
7040
|
datePickerBaseClasses,
|
|
6650
7041
|
datePickerCalendarClasses,
|
|
6651
7042
|
datePickerCalendarGridClasses,
|
|
@@ -6699,6 +7090,7 @@ export {
|
|
|
6699
7090
|
filterOptions,
|
|
6700
7091
|
filterTreeNodes,
|
|
6701
7092
|
findActiveAnchor,
|
|
7093
|
+
findColumnFromPoint,
|
|
6702
7094
|
findNode,
|
|
6703
7095
|
flattenSelectOptions,
|
|
6704
7096
|
focusElement,
|
|
@@ -6773,9 +7165,11 @@ export {
|
|
|
6773
7165
|
getCollapseIconClasses,
|
|
6774
7166
|
getCollapsePanelClasses,
|
|
6775
7167
|
getCollapsePanelHeaderClasses,
|
|
7168
|
+
getColumnDropIndex,
|
|
6776
7169
|
getContainerClasses,
|
|
6777
7170
|
getContainerHeight,
|
|
6778
7171
|
getContainerScrollTop,
|
|
7172
|
+
getCropperHandleClasses,
|
|
6779
7173
|
getCurrentTime,
|
|
6780
7174
|
getDatePickerDayCellClasses,
|
|
6781
7175
|
getDatePickerIconButtonClasses,
|
|
@@ -6800,6 +7194,7 @@ export {
|
|
|
6800
7194
|
getDrawerMaskClasses,
|
|
6801
7195
|
getDrawerPanelClasses,
|
|
6802
7196
|
getDrawerTitleClasses,
|
|
7197
|
+
getDropIndex,
|
|
6803
7198
|
getDropdownChevronClasses,
|
|
6804
7199
|
getDropdownContainerClasses,
|
|
6805
7200
|
getDropdownItemClasses,
|
|
@@ -6823,6 +7218,8 @@ export {
|
|
|
6823
7218
|
getFormWizardLabels,
|
|
6824
7219
|
getGridColumnClasses,
|
|
6825
7220
|
getGutterStyles,
|
|
7221
|
+
getImageImgClasses,
|
|
7222
|
+
getInitialCropRect,
|
|
6826
7223
|
getInitials,
|
|
6827
7224
|
getInputAffixClasses,
|
|
6828
7225
|
getInputClasses,
|
|
@@ -6894,6 +7291,7 @@ export {
|
|
|
6894
7291
|
getPopoverTitleClasses,
|
|
6895
7292
|
getPopoverTriggerClasses,
|
|
6896
7293
|
getPrevSlideIndex,
|
|
7294
|
+
getPreviewNavState,
|
|
6897
7295
|
getProgressTextColorClasses,
|
|
6898
7296
|
getProgressVariantClasses,
|
|
6899
7297
|
getQuickJumperInputClasses,
|
|
@@ -6961,6 +7359,7 @@ export {
|
|
|
6961
7359
|
getTableWrapperClasses,
|
|
6962
7360
|
getTabsContainerClasses,
|
|
6963
7361
|
getTagVariantClasses,
|
|
7362
|
+
getTaskBoardLabels,
|
|
6964
7363
|
getTextClasses,
|
|
6965
7364
|
getThemeColor,
|
|
6966
7365
|
getTimePeriodLabels,
|
|
@@ -6982,6 +7381,7 @@ export {
|
|
|
6982
7381
|
getTooltipTriggerClasses,
|
|
6983
7382
|
getTotalPages,
|
|
6984
7383
|
getTotalTextClasses,
|
|
7384
|
+
getTouchDistance,
|
|
6985
7385
|
getTransformOrigin,
|
|
6986
7386
|
getTreeNodeClasses,
|
|
6987
7387
|
getTreeNodeExpandIconClasses,
|
|
@@ -7005,6 +7405,25 @@ export {
|
|
|
7005
7405
|
iconSvgDefaultStrokeLinejoin,
|
|
7006
7406
|
iconSvgDefaultStrokeWidth,
|
|
7007
7407
|
iconWrapperClasses,
|
|
7408
|
+
imageBaseClasses,
|
|
7409
|
+
imageCropperContainerClasses,
|
|
7410
|
+
imageCropperDragAreaClasses,
|
|
7411
|
+
imageCropperGuideClasses,
|
|
7412
|
+
imageCropperImgClasses,
|
|
7413
|
+
imageCropperMaskClasses,
|
|
7414
|
+
imageCropperSelectionClasses,
|
|
7415
|
+
imageErrorClasses,
|
|
7416
|
+
imageErrorIconPath,
|
|
7417
|
+
imageLoadingClasses,
|
|
7418
|
+
imagePreviewCloseBtnClasses,
|
|
7419
|
+
imagePreviewCounterClasses,
|
|
7420
|
+
imagePreviewCursorClass,
|
|
7421
|
+
imagePreviewImgClasses,
|
|
7422
|
+
imagePreviewMaskClasses,
|
|
7423
|
+
imagePreviewNavBtnClasses,
|
|
7424
|
+
imagePreviewToolbarBtnClasses,
|
|
7425
|
+
imagePreviewToolbarClasses,
|
|
7426
|
+
imagePreviewWrapperClasses,
|
|
7008
7427
|
initRovingTabIndex,
|
|
7009
7428
|
injectDropdownStyles,
|
|
7010
7429
|
injectLoadingAnimationStyles,
|
|
@@ -7032,6 +7451,7 @@ export {
|
|
|
7032
7451
|
isTabKey,
|
|
7033
7452
|
isTimeInRange,
|
|
7034
7453
|
isToday,
|
|
7454
|
+
isWipExceeded,
|
|
7035
7455
|
layoutContentClasses,
|
|
7036
7456
|
layoutFooterClasses,
|
|
7037
7457
|
layoutHeaderClasses,
|
|
@@ -7109,7 +7529,10 @@ export {
|
|
|
7109
7529
|
modalSizeClasses,
|
|
7110
7530
|
modalTitleClasses,
|
|
7111
7531
|
modalWrapperClasses,
|
|
7532
|
+
moveCard,
|
|
7533
|
+
moveCropRect,
|
|
7112
7534
|
moveFocusInMenu,
|
|
7535
|
+
nextIconPath,
|
|
7113
7536
|
normalizeActiveKeys,
|
|
7114
7537
|
normalizeChartPadding,
|
|
7115
7538
|
normalizeDate,
|
|
@@ -7128,6 +7551,7 @@ export {
|
|
|
7128
7551
|
notificationTitleClasses,
|
|
7129
7552
|
paginateData,
|
|
7130
7553
|
parseDate,
|
|
7554
|
+
parseDragData,
|
|
7131
7555
|
parseInputValue,
|
|
7132
7556
|
parseTime,
|
|
7133
7557
|
parseWidthToPx,
|
|
@@ -7142,6 +7566,8 @@ export {
|
|
|
7142
7566
|
popconfirmSuccessIconPath,
|
|
7143
7567
|
popconfirmWarningIconPath,
|
|
7144
7568
|
prepareUploadFiles,
|
|
7569
|
+
prevIconPath,
|
|
7570
|
+
previewCloseIconPath,
|
|
7145
7571
|
progressCircleBaseClasses,
|
|
7146
7572
|
progressCircleSizeClasses,
|
|
7147
7573
|
progressCircleTextClasses,
|
|
@@ -7163,11 +7589,14 @@ export {
|
|
|
7163
7589
|
radioRootBaseClasses,
|
|
7164
7590
|
radioSizeClasses,
|
|
7165
7591
|
radioVisualBaseClasses,
|
|
7592
|
+
reorderColumns,
|
|
7166
7593
|
replaceKeys,
|
|
7167
7594
|
resetAreaGradientCounter,
|
|
7168
7595
|
resetBarGradientCounter,
|
|
7596
|
+
resetIconPath,
|
|
7169
7597
|
resetLineGradientCounter,
|
|
7170
7598
|
resetScatterGradientCounter,
|
|
7599
|
+
resizeCropRect,
|
|
7171
7600
|
resolveChartPalette,
|
|
7172
7601
|
resolveChartTooltipContent,
|
|
7173
7602
|
resolveLocaleText,
|
|
@@ -7185,6 +7614,7 @@ export {
|
|
|
7185
7614
|
selectOptionDisabledClasses,
|
|
7186
7615
|
selectOptionSelectedClasses,
|
|
7187
7616
|
selectSearchInputClasses,
|
|
7617
|
+
setDragData,
|
|
7188
7618
|
setThemeColors,
|
|
7189
7619
|
shouldHideBadge,
|
|
7190
7620
|
skeletonAnimationClasses,
|
|
@@ -7258,6 +7688,18 @@ export {
|
|
|
7258
7688
|
tagCloseButtonBaseClasses,
|
|
7259
7689
|
tagCloseIconPath,
|
|
7260
7690
|
tagSizeClasses,
|
|
7691
|
+
taskBoardAddCardClasses,
|
|
7692
|
+
taskBoardBaseClasses,
|
|
7693
|
+
taskBoardCardClasses,
|
|
7694
|
+
taskBoardCardDraggingClasses,
|
|
7695
|
+
taskBoardColumnBodyClasses,
|
|
7696
|
+
taskBoardColumnClasses,
|
|
7697
|
+
taskBoardColumnDraggingClasses,
|
|
7698
|
+
taskBoardColumnDropTargetClasses,
|
|
7699
|
+
taskBoardColumnHeaderClasses,
|
|
7700
|
+
taskBoardDropIndicatorClasses,
|
|
7701
|
+
taskBoardEmptyClasses,
|
|
7702
|
+
taskBoardWipExceededClasses,
|
|
7261
7703
|
textAlignClasses,
|
|
7262
7704
|
textColorClasses,
|
|
7263
7705
|
textDecorationClasses,
|
|
@@ -7289,6 +7731,7 @@ export {
|
|
|
7289
7731
|
to12HourFormat,
|
|
7290
7732
|
to24HourFormat,
|
|
7291
7733
|
toActivityTimelineItems,
|
|
7734
|
+
toCSSSize,
|
|
7292
7735
|
toggleKey,
|
|
7293
7736
|
togglePanelKey,
|
|
7294
7737
|
treeBaseClasses,
|
|
@@ -7307,6 +7750,7 @@ export {
|
|
|
7307
7750
|
treeNodeLabelClasses,
|
|
7308
7751
|
treeNodeSelectedClasses,
|
|
7309
7752
|
treeNodeWrapperClasses,
|
|
7753
|
+
uploadPlusIconPath,
|
|
7310
7754
|
uploadStatusIconColorClasses,
|
|
7311
7755
|
uploadStatusIconSizeClasses,
|
|
7312
7756
|
validateCurrentPage,
|
|
@@ -7315,5 +7759,7 @@ export {
|
|
|
7315
7759
|
validateFileType,
|
|
7316
7760
|
validateForm,
|
|
7317
7761
|
validateRule,
|
|
7318
|
-
version
|
|
7762
|
+
version,
|
|
7763
|
+
zoomInIconPath,
|
|
7764
|
+
zoomOutIconPath
|
|
7319
7765
|
};
|