@expcat/tigercat-core 2.0.4 → 2.1.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/{data-export-CJTP3rIi.d.ts → data-export-CJUETRjV.d.ts} +1 -1
- package/dist/index.d.ts +2928 -173
- package/dist/index.js +2424 -246
- package/dist/{locale-CaxkEHEG.d.ts → locale-CEDXoKX7.d.ts} +23 -1
- package/dist/locales/ar-SA.d.ts +1 -1
- package/dist/locales/ar-SA.js +16 -0
- package/dist/locales/de-DE.d.ts +1 -1
- package/dist/locales/de-DE.js +16 -0
- package/dist/locales/en-US.d.ts +1 -1
- package/dist/locales/en-US.js +8 -0
- package/dist/locales/es-ES.d.ts +1 -1
- package/dist/locales/es-ES.js +16 -0
- package/dist/locales/fr-FR.d.ts +1 -1
- package/dist/locales/fr-FR.js +16 -0
- package/dist/locales/id-ID.d.ts +1 -1
- package/dist/locales/id-ID.js +16 -0
- package/dist/locales/ja-JP.d.ts +1 -1
- package/dist/locales/ja-JP.js +16 -0
- package/dist/locales/ko-KR.d.ts +1 -1
- package/dist/locales/ko-KR.js +16 -0
- package/dist/locales/pt-BR.d.ts +1 -1
- package/dist/locales/pt-BR.js +16 -0
- package/dist/locales/th-TH.d.ts +1 -1
- package/dist/locales/th-TH.js +16 -0
- package/dist/locales/vi-VN.d.ts +1 -1
- package/dist/locales/vi-VN.js +16 -0
- package/dist/locales/zh-CN.d.ts +1 -1
- package/dist/locales/zh-CN.js +8 -0
- package/dist/locales/zh-TW.d.ts +1 -1
- package/dist/locales/zh-TW.js +16 -0
- package/dist/{table-DtmPxL6W.d.ts → table-CbPOY5bp.d.ts} +1 -1
- package/dist/utils/data-export.d.ts +3 -3
- package/dist/utils/table-export.d.ts +2 -2
- package/package.json +1 -1
- package/tokens/tailwind-tokens.js +3 -6
- package/tokens/tokens.css +4 -8
package/dist/index.js
CHANGED
|
@@ -109,8 +109,9 @@ var copyTextToClipboard = async (text) => {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
if (!isBrowser()) return false;
|
|
112
|
+
let textarea = null;
|
|
112
113
|
try {
|
|
113
|
-
|
|
114
|
+
textarea = document.createElement("textarea");
|
|
114
115
|
textarea.value = text;
|
|
115
116
|
textarea.setAttribute("readonly", "");
|
|
116
117
|
textarea.style.position = "fixed";
|
|
@@ -119,11 +120,11 @@ var copyTextToClipboard = async (text) => {
|
|
|
119
120
|
document.body.appendChild(textarea);
|
|
120
121
|
textarea.select();
|
|
121
122
|
textarea.setSelectionRange(0, textarea.value.length);
|
|
122
|
-
|
|
123
|
-
document.body.removeChild(textarea);
|
|
124
|
-
return ok;
|
|
123
|
+
return document.execCommand("copy");
|
|
125
124
|
} catch {
|
|
126
125
|
return false;
|
|
126
|
+
} finally {
|
|
127
|
+
textarea?.remove();
|
|
127
128
|
}
|
|
128
129
|
};
|
|
129
130
|
|
|
@@ -1504,7 +1505,9 @@ var TIGER_LOCALE_KEYS = [
|
|
|
1504
1505
|
"markdownEditor",
|
|
1505
1506
|
"richTextEditor",
|
|
1506
1507
|
"cronEditor",
|
|
1507
|
-
"formValidation"
|
|
1508
|
+
"formValidation",
|
|
1509
|
+
"inputOtp",
|
|
1510
|
+
"tagsInput"
|
|
1508
1511
|
];
|
|
1509
1512
|
function isRecord3(value) {
|
|
1510
1513
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -1572,7 +1575,9 @@ function mergeTigerLocale(base, override) {
|
|
|
1572
1575
|
markdownEditor: { ...base?.markdownEditor, ...override?.markdownEditor },
|
|
1573
1576
|
richTextEditor: { ...base?.richTextEditor, ...override?.richTextEditor },
|
|
1574
1577
|
cronEditor: { ...base?.cronEditor, ...override?.cronEditor },
|
|
1575
|
-
formValidation: { ...base?.formValidation, ...override?.formValidation }
|
|
1578
|
+
formValidation: { ...base?.formValidation, ...override?.formValidation },
|
|
1579
|
+
inputOtp: { ...base?.inputOtp, ...override?.inputOtp },
|
|
1580
|
+
tagsInput: { ...base?.tagsInput, ...override?.tagsInput }
|
|
1576
1581
|
};
|
|
1577
1582
|
}
|
|
1578
1583
|
var RTL_LANGUAGE_CODES = /* @__PURE__ */ new Set(["ar", "fa", "he", "iw", "ps", "ur"]);
|
|
@@ -2393,6 +2398,36 @@ var ZH_CN_UPLOAD_LABELS = {
|
|
|
2393
2398
|
removeFileAriaLabel: "\u79FB\u9664 {fileName}",
|
|
2394
2399
|
previewFileAriaLabel: "\u9884\u89C8 {fileName}"
|
|
2395
2400
|
};
|
|
2401
|
+
var DEFAULT_INPUT_OTP_LABELS = {
|
|
2402
|
+
groupLabel: "One-time password",
|
|
2403
|
+
slotLabel: "Character {index} of {total}"
|
|
2404
|
+
};
|
|
2405
|
+
var ZH_CN_INPUT_OTP_LABELS = {
|
|
2406
|
+
groupLabel: "\u4E00\u6B21\u6027\u9A8C\u8BC1\u7801",
|
|
2407
|
+
slotLabel: "\u7B2C {index} \u4F4D\uFF0C\u5171 {total} \u4F4D"
|
|
2408
|
+
};
|
|
2409
|
+
function getInputOTPLabels(locale, overrides) {
|
|
2410
|
+
const defaultLabels = locale?.locale?.toLowerCase().startsWith("zh") ? ZH_CN_INPUT_OTP_LABELS : DEFAULT_INPUT_OTP_LABELS;
|
|
2411
|
+
return {
|
|
2412
|
+
groupLabel: overrides?.groupLabel ?? locale?.inputOtp?.groupLabel ?? defaultLabels.groupLabel,
|
|
2413
|
+
slotLabel: overrides?.slotLabel ?? locale?.inputOtp?.slotLabel ?? defaultLabels.slotLabel
|
|
2414
|
+
};
|
|
2415
|
+
}
|
|
2416
|
+
var DEFAULT_TAGS_INPUT_LABELS = {
|
|
2417
|
+
removeTagLabel: "Remove {tag}",
|
|
2418
|
+
clearAllLabel: "Clear all tags"
|
|
2419
|
+
};
|
|
2420
|
+
var ZH_CN_TAGS_INPUT_LABELS = {
|
|
2421
|
+
removeTagLabel: "\u79FB\u9664 {tag}",
|
|
2422
|
+
clearAllLabel: "\u6E05\u7A7A\u5168\u90E8\u6807\u7B7E"
|
|
2423
|
+
};
|
|
2424
|
+
function getTagsInputLabels(locale, overrides) {
|
|
2425
|
+
const defaultLabels = locale?.locale?.toLowerCase().startsWith("zh") ? ZH_CN_TAGS_INPUT_LABELS : DEFAULT_TAGS_INPUT_LABELS;
|
|
2426
|
+
return {
|
|
2427
|
+
removeTagLabel: overrides?.removeTagLabel ?? locale?.tagsInput?.removeTagLabel ?? defaultLabels.removeTagLabel,
|
|
2428
|
+
clearAllLabel: overrides?.clearAllLabel ?? locale?.tagsInput?.clearAllLabel ?? defaultLabels.clearAllLabel
|
|
2429
|
+
};
|
|
2430
|
+
}
|
|
2396
2431
|
|
|
2397
2432
|
// src/utils/i18n/datepicker-locales/en-US.ts
|
|
2398
2433
|
var EN_US_DATEPICKER_LOCALE = {
|
|
@@ -3134,6 +3169,14 @@ var enUS = {
|
|
|
3134
3169
|
patternMismatch: "Value does not match the required pattern",
|
|
3135
3170
|
validatorFailed: "Validation failed",
|
|
3136
3171
|
validatorError: "Validation error occurred"
|
|
3172
|
+
},
|
|
3173
|
+
inputOtp: {
|
|
3174
|
+
groupLabel: "One-time password",
|
|
3175
|
+
slotLabel: "Character {index} of {total}"
|
|
3176
|
+
},
|
|
3177
|
+
tagsInput: {
|
|
3178
|
+
removeTagLabel: "Remove {tag}",
|
|
3179
|
+
clearAllLabel: "Clear all tags"
|
|
3137
3180
|
}
|
|
3138
3181
|
};
|
|
3139
3182
|
|
|
@@ -7781,6 +7824,235 @@ function injectDropdownStyles() {
|
|
|
7781
7824
|
}
|
|
7782
7825
|
var DROPDOWN_ENTER_CLASS = "tiger-dropdown-enter";
|
|
7783
7826
|
|
|
7827
|
+
// src/utils/context-menu-utils.ts
|
|
7828
|
+
var CONTEXT_MENU_POINT_SIZE = 1;
|
|
7829
|
+
var CONTEXT_MENU_ENTER_CLASS = DROPDOWN_ENTER_CLASS;
|
|
7830
|
+
var CONTEXT_MENU_SUB_CHEVRON_PATH = "M9 5l7 7-7 7";
|
|
7831
|
+
function injectContextMenuStyles() {
|
|
7832
|
+
injectDropdownStyles();
|
|
7833
|
+
}
|
|
7834
|
+
function getContextMenuContainerClasses() {
|
|
7835
|
+
return classNames("tiger-context-menu", "relative");
|
|
7836
|
+
}
|
|
7837
|
+
function getContextMenuTriggerClasses(disabled) {
|
|
7838
|
+
return classNames(
|
|
7839
|
+
"tiger-context-menu-trigger",
|
|
7840
|
+
disabled ? "cursor-not-allowed opacity-50 pointer-events-none" : void 0
|
|
7841
|
+
);
|
|
7842
|
+
}
|
|
7843
|
+
function getContextMenuMenuClasses() {
|
|
7844
|
+
return classNames("tiger-context-menu-menu", getDropdownMenuClasses());
|
|
7845
|
+
}
|
|
7846
|
+
function getContextMenuItemClasses(disabled, divided) {
|
|
7847
|
+
return classNames("tiger-context-menu-item", getDropdownItemClasses(disabled, divided));
|
|
7848
|
+
}
|
|
7849
|
+
function getContextMenuSubTriggerClasses(disabled) {
|
|
7850
|
+
return classNames(getContextMenuItemClasses(disabled, false), "justify-between");
|
|
7851
|
+
}
|
|
7852
|
+
function getContextMenuSubChevronClasses() {
|
|
7853
|
+
return classNames(
|
|
7854
|
+
"tiger-context-menu-sub-chevron",
|
|
7855
|
+
"w-3.5 h-3.5 shrink-0",
|
|
7856
|
+
"text-[var(--tiger-text-muted,#9ca3af)]"
|
|
7857
|
+
);
|
|
7858
|
+
}
|
|
7859
|
+
function getContextMenuPointStyle(point) {
|
|
7860
|
+
return {
|
|
7861
|
+
position: "fixed",
|
|
7862
|
+
left: `${point.x}px`,
|
|
7863
|
+
top: `${point.y}px`,
|
|
7864
|
+
width: `${CONTEXT_MENU_POINT_SIZE}px`,
|
|
7865
|
+
height: `${CONTEXT_MENU_POINT_SIZE}px`,
|
|
7866
|
+
margin: "0px",
|
|
7867
|
+
padding: "0px",
|
|
7868
|
+
border: "0px",
|
|
7869
|
+
pointerEvents: "none"
|
|
7870
|
+
};
|
|
7871
|
+
}
|
|
7872
|
+
function getContextMenuPointFromEvent(event) {
|
|
7873
|
+
return { x: event.clientX, y: event.clientY };
|
|
7874
|
+
}
|
|
7875
|
+
function getContextMenuPointFromElement(element) {
|
|
7876
|
+
const rect = element.getBoundingClientRect();
|
|
7877
|
+
return { x: rect.left, y: rect.top };
|
|
7878
|
+
}
|
|
7879
|
+
function getContextMenuOpenPoint(event, fallbackElement) {
|
|
7880
|
+
if (event) return getContextMenuPointFromEvent(event);
|
|
7881
|
+
if (fallbackElement) return getContextMenuPointFromElement(fallbackElement);
|
|
7882
|
+
return { x: 0, y: 0 };
|
|
7883
|
+
}
|
|
7884
|
+
function isContextMenuKeyboardEvent(event) {
|
|
7885
|
+
return event.key === "ContextMenu" || event.key === "F10" && event.shiftKey;
|
|
7886
|
+
}
|
|
7887
|
+
|
|
7888
|
+
// src/utils/navigation-menu-utils.ts
|
|
7889
|
+
var NAVIGATION_MENU_DEFAULT_DELAY_DURATION = 100;
|
|
7890
|
+
var NAVIGATION_MENU_DEFAULT_SKIP_DELAY_DURATION = 150;
|
|
7891
|
+
var NAVIGATION_MENU_DEFAULT_OFFSET = 4;
|
|
7892
|
+
var NAVIGATION_MENU_ENTER_CLASS = DROPDOWN_ENTER_CLASS;
|
|
7893
|
+
var NAVIGATION_MENU_CHEVRON_PATH = DROPDOWN_CHEVRON_PATH;
|
|
7894
|
+
var NAVIGATION_MENU_BAR_ITEM_ATTR = "data-tiger-navigation-menu-bar-item";
|
|
7895
|
+
function injectNavigationMenuStyles() {
|
|
7896
|
+
injectDropdownStyles();
|
|
7897
|
+
}
|
|
7898
|
+
function isNavigationMenuValueOpen(itemValue, openValue) {
|
|
7899
|
+
return openValue !== null && openValue !== void 0 && openValue !== "" && openValue === itemValue;
|
|
7900
|
+
}
|
|
7901
|
+
function isNavigationMenuOpen(openValue) {
|
|
7902
|
+
return openValue !== null && openValue !== void 0 && openValue !== "";
|
|
7903
|
+
}
|
|
7904
|
+
function resolveNavigationMenuOpenValue(options) {
|
|
7905
|
+
const next = options.value !== void 0 ? options.value : options.internalValue;
|
|
7906
|
+
if (options.open === false) return null;
|
|
7907
|
+
if (!isNavigationMenuOpen(next)) return null;
|
|
7908
|
+
return next;
|
|
7909
|
+
}
|
|
7910
|
+
function shouldSkipNavigationMenuOpenDelay(lastOpenAt, now, skipDelayDuration) {
|
|
7911
|
+
if (lastOpenAt <= 0) return false;
|
|
7912
|
+
return now - lastOpenAt < skipDelayDuration;
|
|
7913
|
+
}
|
|
7914
|
+
function isNavigationMenuTriggerOpenKey(key) {
|
|
7915
|
+
return key === "Enter" || key === " " || key === "ArrowDown";
|
|
7916
|
+
}
|
|
7917
|
+
function getNavigationMenuBarItems(container) {
|
|
7918
|
+
return Array.from(
|
|
7919
|
+
container.querySelectorAll(`[${NAVIGATION_MENU_BAR_ITEM_ATTR}]`)
|
|
7920
|
+
).filter((el) => {
|
|
7921
|
+
if (el.disabled) return false;
|
|
7922
|
+
if (el.getAttribute("aria-disabled") === "true") return false;
|
|
7923
|
+
return true;
|
|
7924
|
+
});
|
|
7925
|
+
}
|
|
7926
|
+
function handleMenubarNavigation(container, event) {
|
|
7927
|
+
const items = getNavigationMenuBarItems(container);
|
|
7928
|
+
if (items.length === 0) return false;
|
|
7929
|
+
const activeElement = container.ownerDocument?.activeElement ?? null;
|
|
7930
|
+
const currentIndex = items.indexOf(activeElement);
|
|
7931
|
+
let nextIndex = -1;
|
|
7932
|
+
switch (event.key) {
|
|
7933
|
+
case "ArrowRight":
|
|
7934
|
+
nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
|
|
7935
|
+
break;
|
|
7936
|
+
case "ArrowLeft":
|
|
7937
|
+
nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
|
|
7938
|
+
break;
|
|
7939
|
+
case "Home":
|
|
7940
|
+
nextIndex = 0;
|
|
7941
|
+
break;
|
|
7942
|
+
case "End":
|
|
7943
|
+
nextIndex = items.length - 1;
|
|
7944
|
+
break;
|
|
7945
|
+
default:
|
|
7946
|
+
return false;
|
|
7947
|
+
}
|
|
7948
|
+
event.preventDefault();
|
|
7949
|
+
const next = items[nextIndex];
|
|
7950
|
+
items.forEach((el) => {
|
|
7951
|
+
el.tabIndex = el === next ? 0 : -1;
|
|
7952
|
+
});
|
|
7953
|
+
next.focus();
|
|
7954
|
+
return true;
|
|
7955
|
+
}
|
|
7956
|
+
function initNavigationMenuRovingTabIndex(root) {
|
|
7957
|
+
const items = getNavigationMenuBarItems(root);
|
|
7958
|
+
if (items.length === 0) return;
|
|
7959
|
+
const hasActive = items.some((el) => el.tabIndex === 0);
|
|
7960
|
+
if (hasActive) return;
|
|
7961
|
+
items.forEach((el, index) => {
|
|
7962
|
+
el.tabIndex = index === 0 ? 0 : -1;
|
|
7963
|
+
});
|
|
7964
|
+
}
|
|
7965
|
+
function getNavigationMenuClasses() {
|
|
7966
|
+
return classNames("tiger-navigation-menu", "relative");
|
|
7967
|
+
}
|
|
7968
|
+
function getNavigationMenuListClasses() {
|
|
7969
|
+
return classNames(
|
|
7970
|
+
"tiger-navigation-menu-list",
|
|
7971
|
+
"flex flex-row flex-wrap items-center gap-1",
|
|
7972
|
+
"m-0 p-1",
|
|
7973
|
+
"list-none"
|
|
7974
|
+
);
|
|
7975
|
+
}
|
|
7976
|
+
function getNavigationMenuItemClasses() {
|
|
7977
|
+
return classNames("tiger-navigation-menu-item", "relative");
|
|
7978
|
+
}
|
|
7979
|
+
function getNavigationMenuTriggerClasses(disabled, open) {
|
|
7980
|
+
return classNames(
|
|
7981
|
+
"tiger-navigation-menu-trigger",
|
|
7982
|
+
"inline-flex items-center gap-1.5",
|
|
7983
|
+
"px-3 py-2",
|
|
7984
|
+
"rounded-[var(--tiger-radius-md,0.5rem)]",
|
|
7985
|
+
"text-sm font-medium text-[var(--tiger-text,#374151)]",
|
|
7986
|
+
"bg-transparent border-0",
|
|
7987
|
+
"select-none appearance-none",
|
|
7988
|
+
"transition-colors duration-150",
|
|
7989
|
+
"focus:outline-none",
|
|
7990
|
+
"focus-visible:ring-2 focus-visible:ring-[var(--tiger-focus-ring,var(--tiger-primary,#2563eb))]/40",
|
|
7991
|
+
disabled ? "cursor-not-allowed opacity-50 pointer-events-none" : "cursor-pointer hover:bg-[var(--tiger-surface-muted,#f3f4f6)]",
|
|
7992
|
+
open && "bg-[var(--tiger-surface-muted,#f3f4f6)]"
|
|
7993
|
+
);
|
|
7994
|
+
}
|
|
7995
|
+
function getNavigationMenuChevronClasses(open) {
|
|
7996
|
+
return classNames("tiger-navigation-menu-chevron", getDropdownChevronClasses(open));
|
|
7997
|
+
}
|
|
7998
|
+
function getNavigationMenuContentClasses(mega) {
|
|
7999
|
+
return classNames(
|
|
8000
|
+
"tiger-navigation-menu-content",
|
|
8001
|
+
getDropdownMenuClasses(),
|
|
8002
|
+
mega && "min-w-[28rem]! p-4"
|
|
8003
|
+
);
|
|
8004
|
+
}
|
|
8005
|
+
function getNavigationMenuLinkClasses(disabled, inPanel, active = false) {
|
|
8006
|
+
if (inPanel) {
|
|
8007
|
+
return classNames(
|
|
8008
|
+
"tiger-navigation-menu-link",
|
|
8009
|
+
getDropdownItemClasses(disabled, false),
|
|
8010
|
+
active && "bg-[var(--tiger-surface-muted,#f3f4f6)] font-medium"
|
|
8011
|
+
);
|
|
8012
|
+
}
|
|
8013
|
+
return classNames("tiger-navigation-menu-link", getNavigationMenuTriggerClasses(disabled, active));
|
|
8014
|
+
}
|
|
8015
|
+
|
|
8016
|
+
// src/types/page-header.ts
|
|
8017
|
+
var PAGE_HEADER_DEFAULT_BACK_ARIA_LABEL = "Back";
|
|
8018
|
+
|
|
8019
|
+
// src/utils/page-header-utils.ts
|
|
8020
|
+
var pageHeaderRootClasses = "tiger-page-header flex w-full flex-col gap-3 border-b border-[var(--tiger-border,#e5e7eb)] pb-4";
|
|
8021
|
+
var pageHeaderHeadingRowClasses = "tiger-page-header-heading flex w-full items-start justify-between gap-4";
|
|
8022
|
+
var pageHeaderStartClasses = "tiger-page-header-start flex min-w-0 items-start gap-2";
|
|
8023
|
+
var pageHeaderMainClasses = "tiger-page-header-main flex min-w-0 flex-1 flex-col gap-1";
|
|
8024
|
+
var pageHeaderTitleRowClasses = "tiger-page-header-title-row flex min-w-0 flex-wrap items-baseline gap-x-3 gap-y-1";
|
|
8025
|
+
var pageHeaderTitleClasses = "tiger-page-header-title text-xl font-semibold leading-7 text-[var(--tiger-text,#111827)]";
|
|
8026
|
+
var pageHeaderSubtitleClasses = "tiger-page-header-subtitle text-sm leading-6 text-[var(--tiger-text-muted,#6b7280)]";
|
|
8027
|
+
var pageHeaderActionsClasses = "tiger-page-header-actions ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2";
|
|
8028
|
+
var pageHeaderBackWrapClasses = "tiger-page-header-back flex shrink-0 items-center pt-0.5";
|
|
8029
|
+
var pageHeaderBackButtonClasses = "h-8 w-8 shrink-0 !px-0";
|
|
8030
|
+
var pageHeaderBackIconClasses = "h-5 w-5 rtl:-scale-x-100";
|
|
8031
|
+
var pageHeaderContentClasses = "tiger-page-header-content min-w-0";
|
|
8032
|
+
function resolvePageHeaderBackVisibility(input) {
|
|
8033
|
+
if (input.showBack === false) return false;
|
|
8034
|
+
if (input.showBack === true) return true;
|
|
8035
|
+
return Boolean(input.hasHandler) || Boolean(input.hasBackHref) || Boolean(input.hasBackOverride);
|
|
8036
|
+
}
|
|
8037
|
+
function resolvePageHeaderBackAriaLabel(label) {
|
|
8038
|
+
if (typeof label === "string") {
|
|
8039
|
+
const trimmed = label.trim();
|
|
8040
|
+
if (trimmed) return trimmed;
|
|
8041
|
+
}
|
|
8042
|
+
return PAGE_HEADER_DEFAULT_BACK_ARIA_LABEL;
|
|
8043
|
+
}
|
|
8044
|
+
function hasPageHeaderHeadingContent(flags) {
|
|
8045
|
+
return Boolean(
|
|
8046
|
+
flags.showBack || flags.hasBreadcrumb || flags.hasTitle || flags.hasSubtitle || flags.hasActions
|
|
8047
|
+
);
|
|
8048
|
+
}
|
|
8049
|
+
function getPageHeaderRootClasses(className) {
|
|
8050
|
+
return classNames(pageHeaderRootClasses, className);
|
|
8051
|
+
}
|
|
8052
|
+
function getPageHeaderBackButtonClasses(className) {
|
|
8053
|
+
return classNames(pageHeaderBackButtonClasses, className);
|
|
8054
|
+
}
|
|
8055
|
+
|
|
7784
8056
|
// src/utils/drawer-utils.ts
|
|
7785
8057
|
function getDrawerMaskClasses(visible) {
|
|
7786
8058
|
return classNames(
|
|
@@ -8357,6 +8629,239 @@ function injectLoadingAnimationStyles() {
|
|
|
8357
8629
|
}
|
|
8358
8630
|
}
|
|
8359
8631
|
|
|
8632
|
+
// src/utils/loading-bar-utils.ts
|
|
8633
|
+
var DEFAULT_LOADING_BAR_HEIGHT = 2;
|
|
8634
|
+
var DEFAULT_LOADING_BAR_COLOR = "primary";
|
|
8635
|
+
var DEFAULT_LOADING_BAR_ARIA_LABEL = "Loading";
|
|
8636
|
+
var LOADING_BAR_START_PERCENTAGE = 8;
|
|
8637
|
+
var LOADING_BAR_MAX_TRICKLE_PERCENTAGE = 94;
|
|
8638
|
+
var LOADING_BAR_TRICKLE_INTERVAL_MS = 200;
|
|
8639
|
+
var LOADING_BAR_FINISH_HIDE_DELAY_MS = 300;
|
|
8640
|
+
var LOADING_BAR_CONTAINER_ID = "tiger-loading-bar-container";
|
|
8641
|
+
var LOADING_BAR_CONTAINER_ROOT_ID = `${LOADING_BAR_CONTAINER_ID}-root`;
|
|
8642
|
+
var loadingBarContainerBaseClasses = "fixed top-0 left-0 right-0 z-[10000] pointer-events-none overflow-hidden";
|
|
8643
|
+
var loadingBarFillBaseClasses = "block w-full origin-left transition-transform duration-200 ease-out motion-reduce:transition-none";
|
|
8644
|
+
var loadingBarColorClasses = {
|
|
8645
|
+
primary: "bg-[color:var(--tiger-primary,#2563eb)]",
|
|
8646
|
+
success: "bg-[color:var(--tiger-success,#16a34a)]",
|
|
8647
|
+
warning: "bg-[color:var(--tiger-warning,#f59e0b)]",
|
|
8648
|
+
danger: "bg-[color:var(--tiger-error,#dc2626)]",
|
|
8649
|
+
info: "bg-[color:var(--tiger-info,#0ea5e9)]"
|
|
8650
|
+
};
|
|
8651
|
+
function createInitialLoadingBarState() {
|
|
8652
|
+
return {
|
|
8653
|
+
visible: false,
|
|
8654
|
+
percentage: 0,
|
|
8655
|
+
status: "idle",
|
|
8656
|
+
color: DEFAULT_LOADING_BAR_COLOR,
|
|
8657
|
+
height: DEFAULT_LOADING_BAR_HEIGHT,
|
|
8658
|
+
startedCount: 0
|
|
8659
|
+
};
|
|
8660
|
+
}
|
|
8661
|
+
function clampLoadingBarPercentage(percentage) {
|
|
8662
|
+
if (!Number.isFinite(percentage)) return 0;
|
|
8663
|
+
return Math.max(0, Math.min(100, percentage));
|
|
8664
|
+
}
|
|
8665
|
+
function resolveLoadingBarColor(color) {
|
|
8666
|
+
if (color && color in loadingBarColorClasses) return color;
|
|
8667
|
+
return DEFAULT_LOADING_BAR_COLOR;
|
|
8668
|
+
}
|
|
8669
|
+
function resolveLoadingBarHeight(height) {
|
|
8670
|
+
if (typeof height !== "number" || !Number.isFinite(height) || height <= 0) {
|
|
8671
|
+
return DEFAULT_LOADING_BAR_HEIGHT;
|
|
8672
|
+
}
|
|
8673
|
+
return height;
|
|
8674
|
+
}
|
|
8675
|
+
function resolveLoadingBarFillColor(status, color) {
|
|
8676
|
+
if (status === "error") return "danger";
|
|
8677
|
+
return resolveLoadingBarColor(color);
|
|
8678
|
+
}
|
|
8679
|
+
function resolveLoadingBarAriaLabel(ariaLabel) {
|
|
8680
|
+
const trimmed = ariaLabel?.trim();
|
|
8681
|
+
return trimmed ? trimmed : DEFAULT_LOADING_BAR_ARIA_LABEL;
|
|
8682
|
+
}
|
|
8683
|
+
function getLoadingBarColorClasses(color) {
|
|
8684
|
+
return loadingBarColorClasses[resolveLoadingBarColor(color)];
|
|
8685
|
+
}
|
|
8686
|
+
function getLoadingBarContainerClasses(className) {
|
|
8687
|
+
return classNames(loadingBarContainerBaseClasses, className);
|
|
8688
|
+
}
|
|
8689
|
+
function getLoadingBarFillClasses(status, color) {
|
|
8690
|
+
return classNames(
|
|
8691
|
+
loadingBarFillBaseClasses,
|
|
8692
|
+
getLoadingBarColorClasses(resolveLoadingBarFillColor(status, color))
|
|
8693
|
+
);
|
|
8694
|
+
}
|
|
8695
|
+
function getLoadingBarFillStyle(percentage, height) {
|
|
8696
|
+
return {
|
|
8697
|
+
transform: `scaleX(${clampLoadingBarPercentage(percentage) / 100})`,
|
|
8698
|
+
height: `${resolveLoadingBarHeight(height)}px`
|
|
8699
|
+
};
|
|
8700
|
+
}
|
|
8701
|
+
function nextLoadingBarTricklePercentage(current, random = Math.random) {
|
|
8702
|
+
const clamped = clampLoadingBarPercentage(current);
|
|
8703
|
+
if (clamped >= LOADING_BAR_MAX_TRICKLE_PERCENTAGE) {
|
|
8704
|
+
return LOADING_BAR_MAX_TRICKLE_PERCENTAGE;
|
|
8705
|
+
}
|
|
8706
|
+
const remaining = LOADING_BAR_MAX_TRICKLE_PERCENTAGE - clamped;
|
|
8707
|
+
const rawSample = random();
|
|
8708
|
+
const sample = Number.isFinite(rawSample) ? Math.min(1, Math.max(0, rawSample)) : 0.5;
|
|
8709
|
+
const step = Math.max(0.5, remaining * 0.08 * (0.4 + sample));
|
|
8710
|
+
return Math.min(LOADING_BAR_MAX_TRICKLE_PERCENTAGE, clamped + step);
|
|
8711
|
+
}
|
|
8712
|
+
function resolveLoadingBarMountTarget(container) {
|
|
8713
|
+
if (!isBrowser()) return null;
|
|
8714
|
+
if (!container) return document.body;
|
|
8715
|
+
if (typeof container === "string") {
|
|
8716
|
+
const found = document.querySelector(container);
|
|
8717
|
+
return found instanceof HTMLElement ? found : document.body;
|
|
8718
|
+
}
|
|
8719
|
+
return container;
|
|
8720
|
+
}
|
|
8721
|
+
function mergeStartOptions(state, options) {
|
|
8722
|
+
return {
|
|
8723
|
+
...state,
|
|
8724
|
+
color: resolveLoadingBarColor(options?.color ?? state.color),
|
|
8725
|
+
height: resolveLoadingBarHeight(options?.height ?? state.height),
|
|
8726
|
+
className: options?.className ?? state.className,
|
|
8727
|
+
style: options?.style ?? state.style,
|
|
8728
|
+
ariaLabel: options?.ariaLabel ?? state.ariaLabel,
|
|
8729
|
+
container: options?.container ?? state.container
|
|
8730
|
+
};
|
|
8731
|
+
}
|
|
8732
|
+
function createLoadingBarController(hooks = {}) {
|
|
8733
|
+
let state = createInitialLoadingBarState();
|
|
8734
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
8735
|
+
let trickleTimer;
|
|
8736
|
+
let hideTimer;
|
|
8737
|
+
const schedule = hooks.setTimeout ?? ((handler, timeout) => globalThis.setTimeout(handler, timeout));
|
|
8738
|
+
const cancel = hooks.clearTimeout ?? ((id) => globalThis.clearTimeout(id));
|
|
8739
|
+
function emit() {
|
|
8740
|
+
listeners.forEach((listener) => listener());
|
|
8741
|
+
}
|
|
8742
|
+
function stopTrickle() {
|
|
8743
|
+
if (trickleTimer === void 0) return;
|
|
8744
|
+
cancel(trickleTimer);
|
|
8745
|
+
trickleTimer = void 0;
|
|
8746
|
+
}
|
|
8747
|
+
function stopHide() {
|
|
8748
|
+
if (hideTimer === void 0) return;
|
|
8749
|
+
cancel(hideTimer);
|
|
8750
|
+
hideTimer = void 0;
|
|
8751
|
+
}
|
|
8752
|
+
function hideNow() {
|
|
8753
|
+
stopTrickle();
|
|
8754
|
+
stopHide();
|
|
8755
|
+
state = {
|
|
8756
|
+
...createInitialLoadingBarState(),
|
|
8757
|
+
color: state.color,
|
|
8758
|
+
height: state.height,
|
|
8759
|
+
className: state.className,
|
|
8760
|
+
style: state.style,
|
|
8761
|
+
ariaLabel: state.ariaLabel,
|
|
8762
|
+
container: state.container
|
|
8763
|
+
};
|
|
8764
|
+
emit();
|
|
8765
|
+
}
|
|
8766
|
+
function scheduleHide() {
|
|
8767
|
+
stopHide();
|
|
8768
|
+
if (!isBrowser() && !hooks.setTimeout) {
|
|
8769
|
+
hideNow();
|
|
8770
|
+
return;
|
|
8771
|
+
}
|
|
8772
|
+
hideTimer = schedule(() => {
|
|
8773
|
+
hideTimer = void 0;
|
|
8774
|
+
hideNow();
|
|
8775
|
+
}, LOADING_BAR_FINISH_HIDE_DELAY_MS);
|
|
8776
|
+
}
|
|
8777
|
+
function tickTrickle() {
|
|
8778
|
+
if (state.status !== "loading" || state.startedCount <= 0) {
|
|
8779
|
+
stopTrickle();
|
|
8780
|
+
return;
|
|
8781
|
+
}
|
|
8782
|
+
state = {
|
|
8783
|
+
...state,
|
|
8784
|
+
percentage: nextLoadingBarTricklePercentage(state.percentage)
|
|
8785
|
+
};
|
|
8786
|
+
emit();
|
|
8787
|
+
trickleTimer = schedule(tickTrickle, LOADING_BAR_TRICKLE_INTERVAL_MS);
|
|
8788
|
+
}
|
|
8789
|
+
function startTrickle() {
|
|
8790
|
+
stopTrickle();
|
|
8791
|
+
if (!isBrowser() && !hooks.setTimeout) return;
|
|
8792
|
+
trickleTimer = schedule(tickTrickle, LOADING_BAR_TRICKLE_INTERVAL_MS);
|
|
8793
|
+
}
|
|
8794
|
+
function start(options) {
|
|
8795
|
+
stopHide();
|
|
8796
|
+
const nextCount = state.startedCount + 1;
|
|
8797
|
+
const isFresh = state.status !== "loading" || !state.visible;
|
|
8798
|
+
state = mergeStartOptions(state, options);
|
|
8799
|
+
state = {
|
|
8800
|
+
...state,
|
|
8801
|
+
visible: true,
|
|
8802
|
+
status: "loading",
|
|
8803
|
+
startedCount: nextCount,
|
|
8804
|
+
percentage: isFresh ? LOADING_BAR_START_PERCENTAGE : state.percentage
|
|
8805
|
+
};
|
|
8806
|
+
emit();
|
|
8807
|
+
if (isFresh) {
|
|
8808
|
+
startTrickle();
|
|
8809
|
+
}
|
|
8810
|
+
}
|
|
8811
|
+
function finish() {
|
|
8812
|
+
if (state.startedCount <= 0 && state.status !== "loading") {
|
|
8813
|
+
return;
|
|
8814
|
+
}
|
|
8815
|
+
const nextCount = Math.max(0, state.startedCount - 1);
|
|
8816
|
+
if (nextCount > 0) {
|
|
8817
|
+
state = { ...state, startedCount: nextCount };
|
|
8818
|
+
emit();
|
|
8819
|
+
return;
|
|
8820
|
+
}
|
|
8821
|
+
stopTrickle();
|
|
8822
|
+
state = {
|
|
8823
|
+
...state,
|
|
8824
|
+
visible: true,
|
|
8825
|
+
startedCount: 0,
|
|
8826
|
+
percentage: 100,
|
|
8827
|
+
status: "success"
|
|
8828
|
+
};
|
|
8829
|
+
emit();
|
|
8830
|
+
scheduleHide();
|
|
8831
|
+
}
|
|
8832
|
+
function error() {
|
|
8833
|
+
stopTrickle();
|
|
8834
|
+
state = {
|
|
8835
|
+
...state,
|
|
8836
|
+
visible: true,
|
|
8837
|
+
startedCount: 0,
|
|
8838
|
+
percentage: 100,
|
|
8839
|
+
status: "error"
|
|
8840
|
+
};
|
|
8841
|
+
emit();
|
|
8842
|
+
scheduleHide();
|
|
8843
|
+
}
|
|
8844
|
+
function clear() {
|
|
8845
|
+
stopTrickle();
|
|
8846
|
+
stopHide();
|
|
8847
|
+
state = createInitialLoadingBarState();
|
|
8848
|
+
emit();
|
|
8849
|
+
}
|
|
8850
|
+
return {
|
|
8851
|
+
getState: () => ({ ...state }),
|
|
8852
|
+
start,
|
|
8853
|
+
finish,
|
|
8854
|
+
error,
|
|
8855
|
+
clear,
|
|
8856
|
+
subscribe: (listener) => {
|
|
8857
|
+
listeners.add(listener);
|
|
8858
|
+
return () => {
|
|
8859
|
+
listeners.delete(listener);
|
|
8860
|
+
};
|
|
8861
|
+
}
|
|
8862
|
+
};
|
|
8863
|
+
}
|
|
8864
|
+
|
|
8360
8865
|
// src/utils/floating-popup-utils.ts
|
|
8361
8866
|
function createFloatingIdFactory(prefix) {
|
|
8362
8867
|
let counter = 0;
|
|
@@ -8949,93 +9454,590 @@ function getTextClasses(props) {
|
|
|
8949
9454
|
);
|
|
8950
9455
|
}
|
|
8951
9456
|
|
|
8952
|
-
// src/
|
|
8953
|
-
var
|
|
8954
|
-
|
|
8955
|
-
|
|
8956
|
-
|
|
8957
|
-
|
|
8958
|
-
|
|
8959
|
-
|
|
8960
|
-
|
|
8961
|
-
|
|
8962
|
-
|
|
9457
|
+
// src/types/kbd.ts
|
|
9458
|
+
var DEFAULT_KBD_SEPARATOR = "+";
|
|
9459
|
+
var DEFAULT_KBD_SIZE = "md";
|
|
9460
|
+
var DEFAULT_KBD_VARIANT = "default";
|
|
9461
|
+
|
|
9462
|
+
// src/utils/kbd-utils.ts
|
|
9463
|
+
var kbdBaseClasses = "tiger-kbd inline-flex items-center rounded-[var(--tiger-radius-sm,0.375rem)] border font-medium font-mono align-middle whitespace-nowrap transition-colors";
|
|
9464
|
+
var kbdKeyClasses = "tiger-kbd-key border-0 bg-transparent p-0 shadow-none rounded-none";
|
|
9465
|
+
var kbdSeparatorClasses = "tiger-kbd-separator";
|
|
9466
|
+
var kbdSubtleVariantClasses = "border-transparent bg-[var(--tiger-surface-muted,#f9fafb)] text-[var(--tiger-text-muted,#6b7280)]";
|
|
9467
|
+
function normalizeKbdKeys(keys) {
|
|
9468
|
+
if (keys == null) return [];
|
|
9469
|
+
if (typeof keys === "string") {
|
|
9470
|
+
const trimmed = keys.trim();
|
|
9471
|
+
return trimmed ? [trimmed] : [];
|
|
9472
|
+
}
|
|
9473
|
+
if (!Array.isArray(keys)) return [];
|
|
9474
|
+
const result = [];
|
|
9475
|
+
for (const key of keys) {
|
|
9476
|
+
if (typeof key !== "string") continue;
|
|
9477
|
+
const trimmed = key.trim();
|
|
9478
|
+
if (trimmed) result.push(trimmed);
|
|
9479
|
+
}
|
|
9480
|
+
return result;
|
|
8963
9481
|
}
|
|
8964
|
-
|
|
8965
|
-
|
|
8966
|
-
|
|
8967
|
-
|
|
8968
|
-
|
|
8969
|
-
|
|
8970
|
-
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";
|
|
8971
|
-
var prevIconPath = "M15 19l-7-7 7-7";
|
|
8972
|
-
var nextIconPath = "M9 5l7 7-7 7";
|
|
8973
|
-
var previewCloseIconPath = "M6 18L18 6M6 6l12 12";
|
|
8974
|
-
var imagePreviewMaskClasses = "fixed inset-0 bg-[var(--tiger-image-mask,rgba(0,0,0,0.85))] transition-opacity";
|
|
8975
|
-
var imagePreviewWrapperClasses = "fixed inset-0 flex items-center justify-center select-none";
|
|
8976
|
-
var imagePreviewImgClasses = "max-w-none transition-transform duration-150 ease-out cursor-grab active:cursor-grabbing touch-none";
|
|
8977
|
-
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";
|
|
8978
|
-
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";
|
|
8979
|
-
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";
|
|
8980
|
-
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";
|
|
8981
|
-
var imagePreviewCounterClasses = "text-sm text-white/80 mx-2 tabular-nums";
|
|
8982
|
-
var imageCropperContainerClasses = "relative overflow-hidden bg-[var(--tiger-image-cropper-bg,#0f172a)] rounded-[var(--tiger-radius-lg,0.75rem)] select-none touch-none shadow-inner border border-white/10 tiger-image-cropper-checkerboard";
|
|
8983
|
-
var imageCropperImgClasses = "absolute top-0 left-0 max-w-none pointer-events-none";
|
|
8984
|
-
var imageCropperMaskClasses = "absolute inset-0 pointer-events-none";
|
|
8985
|
-
var imageCropperSelectionClasses = "absolute border-2 border-[var(--tiger-image-cropper-border,#ffffff)] pointer-events-none shadow-[0_0_0_9999px_rgba(0,0,0,0.65),0_0_15px_rgba(255,255,255,0.4)] transition-shadow duration-300";
|
|
8986
|
-
var imageCropperGuideClasses = "absolute border-[var(--tiger-image-cropper-border,rgba(255,255,255,0.25))] pointer-events-none opacity-40 transition-opacity duration-300";
|
|
8987
|
-
var imageCropperDragAreaClasses = "absolute cursor-move";
|
|
8988
|
-
function getCropperHandleClasses(handle) {
|
|
8989
|
-
const base = "absolute w-3.5 h-3.5 rounded-full bg-white border-2 border-[var(--tiger-primary,#2563eb)] shadow-md hover:scale-125 hover:bg-[var(--tiger-primary,#2563eb)] hover:border-white transition-all duration-200 cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--tiger-primary,#2563eb)]";
|
|
8990
|
-
const positionMap = {
|
|
8991
|
-
nw: "-top-1.75 -left-1.75 cursor-nw-resize",
|
|
8992
|
-
n: "-top-1.75 left-1/2 -translate-x-1/2 cursor-n-resize",
|
|
8993
|
-
ne: "-top-1.75 -right-1.75 cursor-ne-resize",
|
|
8994
|
-
e: "top-1/2 -right-1.75 -translate-y-1/2 cursor-e-resize",
|
|
8995
|
-
se: "-bottom-1.75 -right-1.75 cursor-se-resize",
|
|
8996
|
-
s: "-bottom-1.75 left-1/2 -translate-x-1/2 cursor-s-resize",
|
|
8997
|
-
sw: "-bottom-1.75 -left-1.75 cursor-sw-resize",
|
|
8998
|
-
w: "top-1/2 -left-1.75 -translate-y-1/2 cursor-w-resize"
|
|
8999
|
-
};
|
|
9000
|
-
return classNames(base, positionMap[handle]);
|
|
9482
|
+
function resolveKbdSeparator(separator) {
|
|
9483
|
+
if (typeof separator === "string") {
|
|
9484
|
+
const trimmed = separator.trim();
|
|
9485
|
+
if (trimmed) return trimmed;
|
|
9486
|
+
}
|
|
9487
|
+
return DEFAULT_KBD_SEPARATOR;
|
|
9001
9488
|
}
|
|
9002
|
-
|
|
9003
|
-
|
|
9004
|
-
|
|
9005
|
-
var uploadPlusIconPath = "M12 4v16m8-8H4";
|
|
9006
|
-
function clampScale(scale, min, max) {
|
|
9007
|
-
return Math.min(Math.max(scale, min), max);
|
|
9489
|
+
function resolveKbdSize(size2) {
|
|
9490
|
+
if (size2 === "sm" || size2 === "md" || size2 === "lg") return size2;
|
|
9491
|
+
return DEFAULT_KBD_SIZE;
|
|
9008
9492
|
}
|
|
9009
|
-
function
|
|
9010
|
-
|
|
9493
|
+
function resolveKbdVariant(variant) {
|
|
9494
|
+
if (variant === "default" || variant === "subtle") return variant;
|
|
9495
|
+
return DEFAULT_KBD_VARIANT;
|
|
9011
9496
|
}
|
|
9012
|
-
function
|
|
9013
|
-
|
|
9014
|
-
|
|
9015
|
-
|
|
9016
|
-
|
|
9017
|
-
|
|
9497
|
+
function getKbdParts(keys, separator) {
|
|
9498
|
+
const normalized = normalizeKbdKeys(keys);
|
|
9499
|
+
const resolvedSeparator = resolveKbdSeparator(separator);
|
|
9500
|
+
const parts = [];
|
|
9501
|
+
for (let index = 0; index < normalized.length; index++) {
|
|
9502
|
+
if (index > 0) {
|
|
9503
|
+
parts.push({ type: "separator", value: resolvedSeparator });
|
|
9504
|
+
}
|
|
9505
|
+
parts.push({ type: "key", value: normalized[index] });
|
|
9506
|
+
}
|
|
9507
|
+
return parts;
|
|
9018
9508
|
}
|
|
9019
|
-
function
|
|
9020
|
-
|
|
9021
|
-
if (
|
|
9022
|
-
|
|
9023
|
-
|
|
9024
|
-
|
|
9025
|
-
|
|
9026
|
-
|
|
9509
|
+
function formatKbdCombo(keys, separator) {
|
|
9510
|
+
const normalized = normalizeKbdKeys(keys);
|
|
9511
|
+
if (normalized.length === 0) return "";
|
|
9512
|
+
return normalized.join(` ${resolveKbdSeparator(separator)} `);
|
|
9513
|
+
}
|
|
9514
|
+
function getKbdVariantClasses(variant) {
|
|
9515
|
+
if (resolveKbdVariant(variant) === "subtle") return kbdSubtleVariantClasses;
|
|
9516
|
+
return getTagVariantClasses("default");
|
|
9517
|
+
}
|
|
9518
|
+
function getKbdRootClasses(input = {}) {
|
|
9519
|
+
const size2 = resolveKbdSize(input.size);
|
|
9520
|
+
return classNames(
|
|
9521
|
+
kbdBaseClasses,
|
|
9522
|
+
tagSizeClasses[size2],
|
|
9523
|
+
getKbdVariantClasses(input.variant),
|
|
9524
|
+
input.className
|
|
9525
|
+
);
|
|
9526
|
+
}
|
|
9527
|
+
function formatKbdSeparatorText(separator) {
|
|
9528
|
+
return ` ${resolveKbdSeparator(separator)} `;
|
|
9529
|
+
}
|
|
9530
|
+
|
|
9531
|
+
// src/types/highlight.ts
|
|
9532
|
+
var DEFAULT_HIGHLIGHT_CASE_SENSITIVE = false;
|
|
9533
|
+
var DEFAULT_HIGHLIGHT_GLOBAL = true;
|
|
9534
|
+
|
|
9535
|
+
// src/utils/highlight-utils.ts
|
|
9536
|
+
var highlightRootClasses = "tiger-highlight";
|
|
9537
|
+
var highlightMarkClasses = "tiger-highlight-mark rounded-[var(--tiger-radius-sm,0.375rem)] bg-[color-mix(in_srgb,var(--tiger-warning,#d97706)_20%,transparent)] px-0.5 text-inherit box-decoration-clone";
|
|
9538
|
+
var REGEXP_SPECIAL_CHARS = /[.*+?^${}()|[\]\\]/g;
|
|
9539
|
+
function escapeHighlightKeyword(keyword) {
|
|
9540
|
+
return keyword.replace(REGEXP_SPECIAL_CHARS, "\\$&");
|
|
9541
|
+
}
|
|
9542
|
+
function normalizeHighlightKeywords(keywords) {
|
|
9543
|
+
if (keywords == null) return [];
|
|
9544
|
+
if (typeof keywords === "string" || keywords instanceof RegExp) {
|
|
9545
|
+
return [keywords];
|
|
9546
|
+
}
|
|
9547
|
+
if (!Array.isArray(keywords)) return [];
|
|
9548
|
+
const result = [];
|
|
9549
|
+
for (const item of keywords) {
|
|
9550
|
+
if (typeof item === "string" || item instanceof RegExp) {
|
|
9551
|
+
result.push(item);
|
|
9027
9552
|
}
|
|
9028
9553
|
}
|
|
9029
|
-
|
|
9030
|
-
height = Math.min(height, imageHeight);
|
|
9031
|
-
x = Math.max(0, Math.min(x, imageWidth - width));
|
|
9032
|
-
y = Math.max(0, Math.min(y, imageHeight - height));
|
|
9033
|
-
return { x, y, width, height };
|
|
9554
|
+
return result;
|
|
9034
9555
|
}
|
|
9035
|
-
function
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
9556
|
+
function resolveHighlightCaseSensitive(value) {
|
|
9557
|
+
if (typeof value === "boolean") return value;
|
|
9558
|
+
return DEFAULT_HIGHLIGHT_CASE_SENSITIVE;
|
|
9559
|
+
}
|
|
9560
|
+
function resolveHighlightGlobal(value) {
|
|
9561
|
+
if (typeof value === "boolean") return value;
|
|
9562
|
+
return DEFAULT_HIGHLIGHT_GLOBAL;
|
|
9563
|
+
}
|
|
9564
|
+
function resolveHighlightText(text, fallback) {
|
|
9565
|
+
if (text != null) return text;
|
|
9566
|
+
if (fallback != null) return fallback;
|
|
9567
|
+
return "";
|
|
9568
|
+
}
|
|
9569
|
+
function cloneRegExp(source, global) {
|
|
9570
|
+
const withoutG = source.flags.replace(/g/g, "");
|
|
9571
|
+
const flags = global ? `${withoutG}g` : withoutG;
|
|
9572
|
+
try {
|
|
9573
|
+
return new RegExp(source.source, flags);
|
|
9574
|
+
} catch {
|
|
9575
|
+
return null;
|
|
9576
|
+
}
|
|
9577
|
+
}
|
|
9578
|
+
function collectRegExpRanges(text, pattern, global) {
|
|
9579
|
+
const ranges = [];
|
|
9580
|
+
if (!text) return ranges;
|
|
9581
|
+
try {
|
|
9582
|
+
if (!global) {
|
|
9583
|
+
const match2 = pattern.exec(text);
|
|
9584
|
+
if (match2 && match2[0].length > 0) {
|
|
9585
|
+
ranges.push({ start: match2.index, end: match2.index + match2[0].length });
|
|
9586
|
+
}
|
|
9587
|
+
return ranges;
|
|
9588
|
+
}
|
|
9589
|
+
pattern.lastIndex = 0;
|
|
9590
|
+
let match;
|
|
9591
|
+
let steps = 0;
|
|
9592
|
+
const limit = text.length + 2;
|
|
9593
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
9594
|
+
if (++steps > limit) break;
|
|
9595
|
+
if (match[0].length === 0) {
|
|
9596
|
+
pattern.lastIndex += 1;
|
|
9597
|
+
if (pattern.lastIndex > text.length) break;
|
|
9598
|
+
continue;
|
|
9599
|
+
}
|
|
9600
|
+
ranges.push({ start: match.index, end: match.index + match[0].length });
|
|
9601
|
+
}
|
|
9602
|
+
} catch {
|
|
9603
|
+
return [];
|
|
9604
|
+
}
|
|
9605
|
+
return ranges;
|
|
9606
|
+
}
|
|
9607
|
+
function collectStringRanges(text, keyword, caseSensitive, global) {
|
|
9608
|
+
if (!keyword) return [];
|
|
9609
|
+
const flags = `${global ? "g" : ""}${caseSensitive ? "" : "i"}`;
|
|
9610
|
+
let pattern;
|
|
9611
|
+
try {
|
|
9612
|
+
pattern = new RegExp(escapeHighlightKeyword(keyword), flags);
|
|
9613
|
+
} catch {
|
|
9614
|
+
return [];
|
|
9615
|
+
}
|
|
9616
|
+
return collectRegExpRanges(text, pattern, global);
|
|
9617
|
+
}
|
|
9618
|
+
function sanitizeRange(range, length) {
|
|
9619
|
+
const start = Math.max(0, Math.min(range.start, length));
|
|
9620
|
+
const end = Math.max(0, Math.min(range.end, length));
|
|
9621
|
+
if (end <= start) return null;
|
|
9622
|
+
return { start, end };
|
|
9623
|
+
}
|
|
9624
|
+
function mergeHighlightRanges(ranges) {
|
|
9625
|
+
if (ranges.length === 0) return [];
|
|
9626
|
+
const sorted = ranges.map((range) => ({ start: range.start, end: range.end })).sort((left, right) => left.start - right.start || left.end - right.end);
|
|
9627
|
+
const merged = [{ ...sorted[0] }];
|
|
9628
|
+
for (let index = 1; index < sorted.length; index++) {
|
|
9629
|
+
const current = sorted[index];
|
|
9630
|
+
const last = merged[merged.length - 1];
|
|
9631
|
+
if (current.start <= last.end) {
|
|
9632
|
+
if (current.end > last.end) last.end = current.end;
|
|
9633
|
+
} else {
|
|
9634
|
+
merged.push({ ...current });
|
|
9635
|
+
}
|
|
9636
|
+
}
|
|
9637
|
+
return merged;
|
|
9638
|
+
}
|
|
9639
|
+
function findHighlightRanges(text, keywords, options = {}) {
|
|
9640
|
+
if (!text) return [];
|
|
9641
|
+
const caseSensitive = resolveHighlightCaseSensitive(options.caseSensitive);
|
|
9642
|
+
const global = resolveHighlightGlobal(options.global);
|
|
9643
|
+
const queries = normalizeHighlightKeywords(keywords);
|
|
9644
|
+
const collected = [];
|
|
9645
|
+
for (const query of queries) {
|
|
9646
|
+
if (typeof query === "string") {
|
|
9647
|
+
collected.push(...collectStringRanges(text, query, caseSensitive, global));
|
|
9648
|
+
continue;
|
|
9649
|
+
}
|
|
9650
|
+
const pattern = cloneRegExp(query, global);
|
|
9651
|
+
if (!pattern) continue;
|
|
9652
|
+
collected.push(...collectRegExpRanges(text, pattern, global));
|
|
9653
|
+
}
|
|
9654
|
+
const sanitized = [];
|
|
9655
|
+
for (const range of collected) {
|
|
9656
|
+
const next = sanitizeRange(range, text.length);
|
|
9657
|
+
if (next) sanitized.push(next);
|
|
9658
|
+
}
|
|
9659
|
+
return mergeHighlightRanges(sanitized);
|
|
9660
|
+
}
|
|
9661
|
+
function getHighlightSegments(text, keywords, options = {}) {
|
|
9662
|
+
if (!text) return [];
|
|
9663
|
+
const ranges = findHighlightRanges(text, keywords, options);
|
|
9664
|
+
const segments = [];
|
|
9665
|
+
let cursor = 0;
|
|
9666
|
+
for (const range of ranges) {
|
|
9667
|
+
if (range.start > cursor) {
|
|
9668
|
+
segments.push({
|
|
9669
|
+
text: text.slice(cursor, range.start),
|
|
9670
|
+
highlighted: false,
|
|
9671
|
+
start: cursor,
|
|
9672
|
+
end: range.start
|
|
9673
|
+
});
|
|
9674
|
+
}
|
|
9675
|
+
segments.push({
|
|
9676
|
+
text: text.slice(range.start, range.end),
|
|
9677
|
+
highlighted: true,
|
|
9678
|
+
start: range.start,
|
|
9679
|
+
end: range.end
|
|
9680
|
+
});
|
|
9681
|
+
cursor = range.end;
|
|
9682
|
+
}
|
|
9683
|
+
if (cursor < text.length) {
|
|
9684
|
+
segments.push({
|
|
9685
|
+
text: text.slice(cursor),
|
|
9686
|
+
highlighted: false,
|
|
9687
|
+
start: cursor,
|
|
9688
|
+
end: text.length
|
|
9689
|
+
});
|
|
9690
|
+
}
|
|
9691
|
+
if (segments.length === 0) {
|
|
9692
|
+
segments.push({ text, highlighted: false, start: 0, end: text.length });
|
|
9693
|
+
}
|
|
9694
|
+
return segments;
|
|
9695
|
+
}
|
|
9696
|
+
function getHighlightRootClasses(className) {
|
|
9697
|
+
return classNames(highlightRootClasses, className);
|
|
9698
|
+
}
|
|
9699
|
+
function getHighlightMarkClasses(className) {
|
|
9700
|
+
return classNames(highlightMarkClasses, className);
|
|
9701
|
+
}
|
|
9702
|
+
|
|
9703
|
+
// src/types/marquee.ts
|
|
9704
|
+
var DEFAULT_MARQUEE_DIRECTION = "left";
|
|
9705
|
+
var DEFAULT_MARQUEE_DURATION_MS = 2e4;
|
|
9706
|
+
var DEFAULT_MARQUEE_GAP_PX = 16;
|
|
9707
|
+
var DEFAULT_MARQUEE_REPEAT = 2;
|
|
9708
|
+
var MAX_MARQUEE_REPEAT = 16;
|
|
9709
|
+
var DEFAULT_MARQUEE_PAUSE_ON_HOVER = true;
|
|
9710
|
+
var DEFAULT_MARQUEE_ARIA_LABEL = "Scrolling content";
|
|
9711
|
+
|
|
9712
|
+
// src/utils/marquee-utils.ts
|
|
9713
|
+
var MARQUEE_STYLE_ID = "tiger-ui-marquee-styles";
|
|
9714
|
+
var MARQUEE_DURATION_VAR = "--tiger-marquee-duration";
|
|
9715
|
+
var MARQUEE_COPIES_VAR = "--tiger-marquee-copies";
|
|
9716
|
+
var MARQUEE_GAP_VAR = "--tiger-marquee-gap";
|
|
9717
|
+
var MARQUEE_CSS = `
|
|
9718
|
+
@keyframes tiger-marquee-x {
|
|
9719
|
+
from { transform: translate3d(0, 0, 0); }
|
|
9720
|
+
to { transform: translate3d(calc(-100% / var(${MARQUEE_COPIES_VAR}, 2)), 0, 0); }
|
|
9721
|
+
}
|
|
9722
|
+
|
|
9723
|
+
@keyframes tiger-marquee-y {
|
|
9724
|
+
from { transform: translate3d(0, 0, 0); }
|
|
9725
|
+
to { transform: translate3d(0, calc(-100% / var(${MARQUEE_COPIES_VAR}, 2)), 0); }
|
|
9726
|
+
}
|
|
9727
|
+
|
|
9728
|
+
.tiger-marquee-track {
|
|
9729
|
+
animation: tiger-marquee-x var(${MARQUEE_DURATION_VAR}, 20000ms) linear infinite;
|
|
9730
|
+
}
|
|
9731
|
+
|
|
9732
|
+
.tiger-marquee-vertical > .tiger-marquee-track {
|
|
9733
|
+
animation-name: tiger-marquee-y;
|
|
9734
|
+
}
|
|
9735
|
+
|
|
9736
|
+
.tiger-marquee-reverse > .tiger-marquee-track {
|
|
9737
|
+
animation-direction: reverse;
|
|
9738
|
+
}
|
|
9739
|
+
|
|
9740
|
+
.tiger-marquee-content {
|
|
9741
|
+
gap: var(${MARQUEE_GAP_VAR}, 16px);
|
|
9742
|
+
}
|
|
9743
|
+
|
|
9744
|
+
.tiger-marquee-horizontal > .tiger-marquee-track > .tiger-marquee-content {
|
|
9745
|
+
padding-inline-end: var(${MARQUEE_GAP_VAR}, 16px);
|
|
9746
|
+
}
|
|
9747
|
+
|
|
9748
|
+
.tiger-marquee-vertical > .tiger-marquee-track > .tiger-marquee-content {
|
|
9749
|
+
padding-block-end: var(${MARQUEE_GAP_VAR}, 16px);
|
|
9750
|
+
}
|
|
9751
|
+
|
|
9752
|
+
.tiger-marquee-static > .tiger-marquee-track {
|
|
9753
|
+
animation: none;
|
|
9754
|
+
}
|
|
9755
|
+
|
|
9756
|
+
.tiger-marquee[data-marquee-paused='true'] > .tiger-marquee-track,
|
|
9757
|
+
.tiger-marquee-pause-hover:hover > .tiger-marquee-track,
|
|
9758
|
+
.tiger-marquee-pause-hover:focus-within > .tiger-marquee-track {
|
|
9759
|
+
animation-play-state: paused;
|
|
9760
|
+
}
|
|
9761
|
+
|
|
9762
|
+
@media (prefers-reduced-motion: reduce) {
|
|
9763
|
+
.tiger-marquee {
|
|
9764
|
+
overflow: auto;
|
|
9765
|
+
}
|
|
9766
|
+
|
|
9767
|
+
.tiger-marquee > .tiger-marquee-track {
|
|
9768
|
+
animation: none !important;
|
|
9769
|
+
will-change: auto;
|
|
9770
|
+
}
|
|
9771
|
+
|
|
9772
|
+
.tiger-marquee .tiger-marquee-clone {
|
|
9773
|
+
display: none !important;
|
|
9774
|
+
}
|
|
9775
|
+
|
|
9776
|
+
.tiger-marquee-horizontal > .tiger-marquee-track > .tiger-marquee-content {
|
|
9777
|
+
padding-inline-end: 0;
|
|
9778
|
+
}
|
|
9779
|
+
|
|
9780
|
+
.tiger-marquee-vertical > .tiger-marquee-track > .tiger-marquee-content {
|
|
9781
|
+
padding-block-end: 0;
|
|
9782
|
+
}
|
|
9783
|
+
}
|
|
9784
|
+
`;
|
|
9785
|
+
var marqueeRootClasses = "tiger-marquee overflow-hidden max-w-full";
|
|
9786
|
+
var marqueePauseHoverClasses = "tiger-marquee-pause-hover";
|
|
9787
|
+
var marqueeHorizontalClasses = "tiger-marquee-horizontal";
|
|
9788
|
+
var marqueeVerticalClasses = "tiger-marquee-vertical";
|
|
9789
|
+
var marqueeReverseClasses = "tiger-marquee-reverse";
|
|
9790
|
+
var marqueeStaticClasses = "tiger-marquee-static";
|
|
9791
|
+
var marqueeTrackClasses = "tiger-marquee-track flex w-max";
|
|
9792
|
+
var marqueeTrackVerticalClasses = "flex-col w-full h-max";
|
|
9793
|
+
var marqueeContentClasses = "tiger-marquee-content flex shrink-0 items-center";
|
|
9794
|
+
var marqueeContentVerticalClasses = "flex-col items-stretch";
|
|
9795
|
+
var marqueeCloneClasses = "tiger-marquee-clone";
|
|
9796
|
+
var MARQUEE_DIRECTIONS = /* @__PURE__ */ new Set(["left", "right", "up", "down"]);
|
|
9797
|
+
var isStyleInjected2 = false;
|
|
9798
|
+
function injectMarqueeStyles() {
|
|
9799
|
+
if (!isBrowser() || isStyleInjected2) return;
|
|
9800
|
+
if (document.getElementById(MARQUEE_STYLE_ID)) {
|
|
9801
|
+
isStyleInjected2 = true;
|
|
9802
|
+
return;
|
|
9803
|
+
}
|
|
9804
|
+
const style = document.createElement("style");
|
|
9805
|
+
style.id = MARQUEE_STYLE_ID;
|
|
9806
|
+
style.textContent = MARQUEE_CSS;
|
|
9807
|
+
document.head.appendChild(style);
|
|
9808
|
+
isStyleInjected2 = true;
|
|
9809
|
+
}
|
|
9810
|
+
function resolveMarqueeDirection(direction) {
|
|
9811
|
+
if (direction && MARQUEE_DIRECTIONS.has(direction)) return direction;
|
|
9812
|
+
return DEFAULT_MARQUEE_DIRECTION;
|
|
9813
|
+
}
|
|
9814
|
+
function isMarqueeVertical(direction) {
|
|
9815
|
+
const resolved = resolveMarqueeDirection(direction);
|
|
9816
|
+
return resolved === "up" || resolved === "down";
|
|
9817
|
+
}
|
|
9818
|
+
function isMarqueeReverse(direction) {
|
|
9819
|
+
const resolved = resolveMarqueeDirection(direction);
|
|
9820
|
+
return resolved === "right" || resolved === "down";
|
|
9821
|
+
}
|
|
9822
|
+
function resolveMarqueeDuration(duration) {
|
|
9823
|
+
if (typeof duration === "number" && Number.isFinite(duration) && duration > 0) {
|
|
9824
|
+
return `${duration}ms`;
|
|
9825
|
+
}
|
|
9826
|
+
return `${DEFAULT_MARQUEE_DURATION_MS}ms`;
|
|
9827
|
+
}
|
|
9828
|
+
function resolveMarqueeGap(gap) {
|
|
9829
|
+
if (typeof gap === "number" && Number.isFinite(gap) && gap >= 0) {
|
|
9830
|
+
return `${gap}px`;
|
|
9831
|
+
}
|
|
9832
|
+
if (typeof gap === "string") {
|
|
9833
|
+
const trimmed = gap.trim();
|
|
9834
|
+
if (trimmed) return trimmed;
|
|
9835
|
+
}
|
|
9836
|
+
return `${DEFAULT_MARQUEE_GAP_PX}px`;
|
|
9837
|
+
}
|
|
9838
|
+
function resolveMarqueeRepeat(repeat) {
|
|
9839
|
+
if (typeof repeat === "number" && Number.isFinite(repeat)) {
|
|
9840
|
+
const copies = Math.floor(repeat);
|
|
9841
|
+
if (copies >= 1) return Math.min(copies, MAX_MARQUEE_REPEAT);
|
|
9842
|
+
}
|
|
9843
|
+
return DEFAULT_MARQUEE_REPEAT;
|
|
9844
|
+
}
|
|
9845
|
+
function shouldLoopMarquee(repeat) {
|
|
9846
|
+
return resolveMarqueeRepeat(repeat) >= 2;
|
|
9847
|
+
}
|
|
9848
|
+
function resolveMarqueePauseOnHover(value) {
|
|
9849
|
+
if (typeof value === "boolean") return value;
|
|
9850
|
+
return DEFAULT_MARQUEE_PAUSE_ON_HOVER;
|
|
9851
|
+
}
|
|
9852
|
+
function resolveMarqueeAriaLabel(label) {
|
|
9853
|
+
if (typeof label === "string") {
|
|
9854
|
+
const trimmed = label.trim();
|
|
9855
|
+
if (trimmed) return trimmed;
|
|
9856
|
+
}
|
|
9857
|
+
return DEFAULT_MARQUEE_ARIA_LABEL;
|
|
9858
|
+
}
|
|
9859
|
+
function isMarqueePaused(input) {
|
|
9860
|
+
if (!resolveMarqueePauseOnHover(input.pauseOnHover)) return false;
|
|
9861
|
+
return Boolean(input.hovered || input.focused);
|
|
9862
|
+
}
|
|
9863
|
+
function isMarqueeFocusInside(root, related) {
|
|
9864
|
+
return root instanceof Node && related instanceof Node && root.contains(related);
|
|
9865
|
+
}
|
|
9866
|
+
function getMarqueeTrackStyle(input = {}) {
|
|
9867
|
+
return {
|
|
9868
|
+
[MARQUEE_DURATION_VAR]: resolveMarqueeDuration(input.duration),
|
|
9869
|
+
[MARQUEE_COPIES_VAR]: String(resolveMarqueeRepeat(input.repeat)),
|
|
9870
|
+
[MARQUEE_GAP_VAR]: resolveMarqueeGap(input.gap)
|
|
9871
|
+
};
|
|
9872
|
+
}
|
|
9873
|
+
function getMarqueeRootClasses(input = {}) {
|
|
9874
|
+
const direction = resolveMarqueeDirection(input.direction);
|
|
9875
|
+
const looping = shouldLoopMarquee(input.repeat);
|
|
9876
|
+
return classNames(
|
|
9877
|
+
marqueeRootClasses,
|
|
9878
|
+
isMarqueeVertical(direction) ? marqueeVerticalClasses : marqueeHorizontalClasses,
|
|
9879
|
+
isMarqueeReverse(direction) && marqueeReverseClasses,
|
|
9880
|
+
resolveMarqueePauseOnHover(input.pauseOnHover) && marqueePauseHoverClasses,
|
|
9881
|
+
!looping && marqueeStaticClasses,
|
|
9882
|
+
input.className
|
|
9883
|
+
);
|
|
9884
|
+
}
|
|
9885
|
+
function getMarqueeTrackClasses(direction) {
|
|
9886
|
+
return classNames(
|
|
9887
|
+
marqueeTrackClasses,
|
|
9888
|
+
isMarqueeVertical(direction) && marqueeTrackVerticalClasses
|
|
9889
|
+
);
|
|
9890
|
+
}
|
|
9891
|
+
function getMarqueeContentClasses(input = {}) {
|
|
9892
|
+
return classNames(
|
|
9893
|
+
marqueeContentClasses,
|
|
9894
|
+
isMarqueeVertical(input.direction) && marqueeContentVerticalClasses,
|
|
9895
|
+
input.clone && marqueeCloneClasses,
|
|
9896
|
+
input.className
|
|
9897
|
+
);
|
|
9898
|
+
}
|
|
9899
|
+
|
|
9900
|
+
// src/types/split-button.ts
|
|
9901
|
+
var DEFAULT_SPLIT_BUTTON_TRIGGER_ARIA_LABEL = "More options";
|
|
9902
|
+
var DEFAULT_SPLIT_BUTTON_VARIANT = "primary";
|
|
9903
|
+
var DEFAULT_SPLIT_BUTTON_SIZE = "md";
|
|
9904
|
+
|
|
9905
|
+
// src/utils/split-button-utils.ts
|
|
9906
|
+
var splitButtonRootClasses = "tiger-split-button inline-flex";
|
|
9907
|
+
var splitButtonRootBlockClasses = "w-full";
|
|
9908
|
+
var splitButtonPrimaryClasses = "!rounded-r-none";
|
|
9909
|
+
var splitButtonPrimaryBlockClasses = "min-w-0 flex-1";
|
|
9910
|
+
var splitButtonTriggerClasses = "tiger-split-button-trigger shrink-0 !rounded-l-none -ml-px";
|
|
9911
|
+
var splitButtonTriggerSizeClasses = {
|
|
9912
|
+
xs: "!px-1.5",
|
|
9913
|
+
sm: "!px-2",
|
|
9914
|
+
md: "!px-2.5",
|
|
9915
|
+
lg: "!px-3",
|
|
9916
|
+
xl: "!px-4"
|
|
9917
|
+
};
|
|
9918
|
+
var BUTTON_SIZES = /* @__PURE__ */ new Set(["xs", "sm", "md", "lg", "xl"]);
|
|
9919
|
+
var BUTTON_VARIANTS = /* @__PURE__ */ new Set(["primary", "secondary", "outline", "ghost", "link"]);
|
|
9920
|
+
function resolveSplitButtonSize(size2) {
|
|
9921
|
+
if (size2 && BUTTON_SIZES.has(size2)) return size2;
|
|
9922
|
+
return DEFAULT_SPLIT_BUTTON_SIZE;
|
|
9923
|
+
}
|
|
9924
|
+
function resolveSplitButtonVariant(variant) {
|
|
9925
|
+
if (variant && BUTTON_VARIANTS.has(variant)) return variant;
|
|
9926
|
+
return DEFAULT_SPLIT_BUTTON_VARIANT;
|
|
9927
|
+
}
|
|
9928
|
+
function resolveSplitButtonTriggerAriaLabel(label) {
|
|
9929
|
+
if (typeof label === "string") {
|
|
9930
|
+
const trimmed = label.trim();
|
|
9931
|
+
if (trimmed) return trimmed;
|
|
9932
|
+
}
|
|
9933
|
+
return DEFAULT_SPLIT_BUTTON_TRIGGER_ARIA_LABEL;
|
|
9934
|
+
}
|
|
9935
|
+
function getSplitButtonRootClasses(input = {}) {
|
|
9936
|
+
return classNames(
|
|
9937
|
+
splitButtonRootClasses,
|
|
9938
|
+
input.block && splitButtonRootBlockClasses,
|
|
9939
|
+
input.className
|
|
9940
|
+
);
|
|
9941
|
+
}
|
|
9942
|
+
function getSplitButtonPrimaryClasses(input = {}) {
|
|
9943
|
+
return classNames(
|
|
9944
|
+
splitButtonPrimaryClasses,
|
|
9945
|
+
input.block && splitButtonPrimaryBlockClasses,
|
|
9946
|
+
input.className
|
|
9947
|
+
);
|
|
9948
|
+
}
|
|
9949
|
+
function getSplitButtonTriggerClasses(input = {}) {
|
|
9950
|
+
const size2 = resolveSplitButtonSize(input.size);
|
|
9951
|
+
return classNames(splitButtonTriggerClasses, splitButtonTriggerSizeClasses[size2], input.className);
|
|
9952
|
+
}
|
|
9953
|
+
|
|
9954
|
+
// src/utils/image-utils.ts
|
|
9955
|
+
var imageBaseClasses = "relative inline-block overflow-hidden";
|
|
9956
|
+
function getImageImgClasses(fit) {
|
|
9957
|
+
const fitMap = {
|
|
9958
|
+
contain: "object-contain",
|
|
9959
|
+
cover: "object-cover",
|
|
9960
|
+
fill: "object-fill",
|
|
9961
|
+
none: "object-none",
|
|
9962
|
+
"scale-down": "object-scale-down"
|
|
9963
|
+
};
|
|
9964
|
+
return classNames("block w-full h-full", fitMap[fit]);
|
|
9965
|
+
}
|
|
9966
|
+
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)]";
|
|
9967
|
+
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";
|
|
9968
|
+
var imagePreviewCursorClass = "cursor-pointer";
|
|
9969
|
+
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";
|
|
9970
|
+
var zoomInIconPath = "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v6m3-3H7";
|
|
9971
|
+
var zoomOutIconPath = "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM13 10H7";
|
|
9972
|
+
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";
|
|
9973
|
+
var prevIconPath = "M15 19l-7-7 7-7";
|
|
9974
|
+
var nextIconPath = "M9 5l7 7-7 7";
|
|
9975
|
+
var previewCloseIconPath = "M6 18L18 6M6 6l12 12";
|
|
9976
|
+
var imagePreviewMaskClasses = "fixed inset-0 bg-[var(--tiger-image-mask,rgba(0,0,0,0.85))] transition-opacity";
|
|
9977
|
+
var imagePreviewWrapperClasses = "fixed inset-0 flex items-center justify-center select-none";
|
|
9978
|
+
var imagePreviewImgClasses = "max-w-none transition-transform duration-150 ease-out cursor-grab active:cursor-grabbing touch-none";
|
|
9979
|
+
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";
|
|
9980
|
+
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";
|
|
9981
|
+
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";
|
|
9982
|
+
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";
|
|
9983
|
+
var imagePreviewCounterClasses = "text-sm text-white/80 mx-2 tabular-nums";
|
|
9984
|
+
var imageCropperContainerClasses = "relative overflow-hidden bg-[var(--tiger-image-cropper-bg,#0f172a)] rounded-[var(--tiger-radius-lg,0.75rem)] select-none touch-none shadow-inner border border-white/10 tiger-image-cropper-checkerboard";
|
|
9985
|
+
var imageCropperImgClasses = "absolute top-0 left-0 max-w-none pointer-events-none";
|
|
9986
|
+
var imageCropperMaskClasses = "absolute inset-0 pointer-events-none";
|
|
9987
|
+
var imageCropperSelectionClasses = "absolute border-2 border-[var(--tiger-image-cropper-border,#ffffff)] pointer-events-none shadow-[0_0_0_9999px_rgba(0,0,0,0.65),0_0_15px_rgba(255,255,255,0.4)] transition-shadow duration-300";
|
|
9988
|
+
var imageCropperGuideClasses = "absolute border-[var(--tiger-image-cropper-border,rgba(255,255,255,0.25))] pointer-events-none opacity-40 transition-opacity duration-300";
|
|
9989
|
+
var imageCropperDragAreaClasses = "absolute cursor-move";
|
|
9990
|
+
function getCropperHandleClasses(handle) {
|
|
9991
|
+
const base = "absolute w-3.5 h-3.5 rounded-full bg-white border-2 border-[var(--tiger-primary,#2563eb)] shadow-md hover:scale-125 hover:bg-[var(--tiger-primary,#2563eb)] hover:border-white transition-all duration-200 cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--tiger-primary,#2563eb)]";
|
|
9992
|
+
const positionMap = {
|
|
9993
|
+
nw: "-top-1.75 -left-1.75 cursor-nw-resize",
|
|
9994
|
+
n: "-top-1.75 left-1/2 -translate-x-1/2 cursor-n-resize",
|
|
9995
|
+
ne: "-top-1.75 -right-1.75 cursor-ne-resize",
|
|
9996
|
+
e: "top-1/2 -right-1.75 -translate-y-1/2 cursor-e-resize",
|
|
9997
|
+
se: "-bottom-1.75 -right-1.75 cursor-se-resize",
|
|
9998
|
+
s: "-bottom-1.75 left-1/2 -translate-x-1/2 cursor-s-resize",
|
|
9999
|
+
sw: "-bottom-1.75 -left-1.75 cursor-sw-resize",
|
|
10000
|
+
w: "top-1/2 -left-1.75 -translate-y-1/2 cursor-w-resize"
|
|
10001
|
+
};
|
|
10002
|
+
return classNames(base, positionMap[handle]);
|
|
10003
|
+
}
|
|
10004
|
+
var CROP_HANDLES = ["nw", "n", "ne", "e", "se", "s", "sw", "w"];
|
|
10005
|
+
var cropUploadTriggerClasses = "inline-flex items-center justify-center gap-2.5 px-5 py-2.5 border-2 border-dashed border-[var(--tiger-border,#d1d5db)] rounded-[var(--tiger-radius-lg,0.75rem)] text-[var(--tiger-text-secondary,#4b5563)] bg-[var(--tiger-surface-muted,#f9fafb)] hover:bg-[var(--tiger-surface,#ffffff)] hover:border-[var(--tiger-primary,#2563eb)] hover:text-[var(--tiger-primary,#2563eb)] hover:scale-[1.02] active:scale-[0.98] hover:shadow-md transition-all duration-300 ease-out cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--tiger-primary,#2563eb)] focus:ring-offset-2 dark:bg-neutral-900 dark:hover:bg-neutral-800";
|
|
10006
|
+
var cropUploadTriggerDisabledClasses = "inline-flex items-center justify-center gap-2.5 px-5 py-2.5 border-2 border-dashed border-[var(--tiger-border,#d1d5db)] rounded-[var(--tiger-radius-lg,0.75rem)] text-[var(--tiger-text-disabled,#9ca3af)] bg-[var(--tiger-surface-muted,#f9fafb)] cursor-not-allowed opacity-60 dark:bg-neutral-900/50";
|
|
10007
|
+
var uploadPlusIconPath = "M12 4v16m8-8H4";
|
|
10008
|
+
function clampScale(scale, min, max) {
|
|
10009
|
+
return Math.min(Math.max(scale, min), max);
|
|
10010
|
+
}
|
|
10011
|
+
function calculateTransform(scale, offsetX, offsetY) {
|
|
10012
|
+
return `translate(${offsetX}px, ${offsetY}px) scale(${scale})`;
|
|
10013
|
+
}
|
|
10014
|
+
function getPreviewNavState(currentIndex, total) {
|
|
10015
|
+
return {
|
|
10016
|
+
hasPrev: currentIndex > 0,
|
|
10017
|
+
hasNext: currentIndex < total - 1,
|
|
10018
|
+
counter: total > 1 ? `${currentIndex + 1} / ${total}` : ""
|
|
10019
|
+
};
|
|
10020
|
+
}
|
|
10021
|
+
function constrainCropRect(rect, imageWidth, imageHeight, aspectRatio) {
|
|
10022
|
+
let { x, y, width, height } = rect;
|
|
10023
|
+
if (aspectRatio && aspectRatio > 0) {
|
|
10024
|
+
const currentRatio = width / height;
|
|
10025
|
+
if (currentRatio > aspectRatio) {
|
|
10026
|
+
width = height * aspectRatio;
|
|
10027
|
+
} else {
|
|
10028
|
+
height = width / aspectRatio;
|
|
10029
|
+
}
|
|
10030
|
+
}
|
|
10031
|
+
width = Math.min(width, imageWidth);
|
|
10032
|
+
height = Math.min(height, imageHeight);
|
|
10033
|
+
x = Math.max(0, Math.min(x, imageWidth - width));
|
|
10034
|
+
y = Math.max(0, Math.min(y, imageHeight - height));
|
|
10035
|
+
return { x, y, width, height };
|
|
10036
|
+
}
|
|
10037
|
+
function resizeCropRect(rect, handle, dx, dy, imageWidth, imageHeight, aspectRatio, minW = 20, minH = 20) {
|
|
10038
|
+
let { x, y, width, height } = rect;
|
|
10039
|
+
switch (handle) {
|
|
10040
|
+
case "nw":
|
|
9039
10041
|
x += dx;
|
|
9040
10042
|
y += dy;
|
|
9041
10043
|
width -= dx;
|
|
@@ -9149,6 +10151,153 @@ function toCSSSize(value) {
|
|
|
9149
10151
|
return typeof value === "number" ? `${value}px` : value;
|
|
9150
10152
|
}
|
|
9151
10153
|
|
|
10154
|
+
// src/types/image-compare.ts
|
|
10155
|
+
var DEFAULT_IMAGE_COMPARE_POSITION = 50;
|
|
10156
|
+
var DEFAULT_IMAGE_COMPARE_STEP = 1;
|
|
10157
|
+
var DEFAULT_IMAGE_COMPARE_ORIENTATION = "horizontal";
|
|
10158
|
+
var DEFAULT_IMAGE_COMPARE_FIT = "cover";
|
|
10159
|
+
var DEFAULT_IMAGE_COMPARE_ARIA_LABEL = "Image comparison";
|
|
10160
|
+
|
|
10161
|
+
// src/utils/image-compare-utils.ts
|
|
10162
|
+
var IMAGE_COMPARE_POSITION_VAR = "--tiger-image-compare-position";
|
|
10163
|
+
var imageCompareRootClasses = "tiger-image-compare relative overflow-hidden select-none touch-none max-w-full";
|
|
10164
|
+
var imageCompareHorizontalClasses = "tiger-image-compare-horizontal";
|
|
10165
|
+
var imageCompareVerticalClasses = "tiger-image-compare-vertical";
|
|
10166
|
+
var imageCompareDisabledClasses = "tiger-image-compare-disabled cursor-not-allowed";
|
|
10167
|
+
var imageCompareAfterClasses = "tiger-image-compare-after relative block w-full h-full [&>img]:pointer-events-none [&>img]:select-none [&>img]:max-w-none";
|
|
10168
|
+
var imageCompareBeforeClasses = "tiger-image-compare-before absolute inset-0 overflow-hidden [&>img]:pointer-events-none [&>img]:select-none [&>img]:max-w-none";
|
|
10169
|
+
var imageCompareHandleClasses = "tiger-image-compare-handle absolute z-10 flex items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-[var(--tiger-primary,#2563eb)] focus-visible:ring-offset-2";
|
|
10170
|
+
var imageCompareHandleHorizontalClasses = "inset-y-0 w-6 -translate-x-1/2 cursor-ew-resize";
|
|
10171
|
+
var imageCompareHandleVerticalClasses = "inset-x-0 h-6 -translate-y-1/2 cursor-ns-resize";
|
|
10172
|
+
var imageCompareHandleDisabledClasses = "cursor-not-allowed";
|
|
10173
|
+
var imageCompareLineClasses = "tiger-image-compare-line absolute bg-white shadow pointer-events-none";
|
|
10174
|
+
var imageCompareLineHorizontalClasses = "inset-y-0 left-1/2 w-0.5 -translate-x-1/2";
|
|
10175
|
+
var imageCompareLineVerticalClasses = "inset-x-0 top-1/2 h-0.5 -translate-y-1/2";
|
|
10176
|
+
var imageCompareKnobClasses = "tiger-image-compare-knob relative z-10 flex h-8 w-8 items-center justify-center rounded-full border-2 border-white bg-[var(--tiger-primary,#2563eb)] text-white shadow pointer-events-none";
|
|
10177
|
+
var IMAGE_COMPARE_ORIENTATIONS = /* @__PURE__ */ new Set(["horizontal", "vertical"]);
|
|
10178
|
+
var IMAGE_FITS = /* @__PURE__ */ new Set(["contain", "cover", "fill", "none", "scale-down"]);
|
|
10179
|
+
function resolveImageCompareOrientation(orientation) {
|
|
10180
|
+
if (orientation && IMAGE_COMPARE_ORIENTATIONS.has(orientation)) return orientation;
|
|
10181
|
+
return DEFAULT_IMAGE_COMPARE_ORIENTATION;
|
|
10182
|
+
}
|
|
10183
|
+
function isImageCompareVertical(orientation) {
|
|
10184
|
+
return resolveImageCompareOrientation(orientation) === "vertical";
|
|
10185
|
+
}
|
|
10186
|
+
function resolveImageCompareFit(fit) {
|
|
10187
|
+
if (fit && IMAGE_FITS.has(fit)) return fit;
|
|
10188
|
+
return DEFAULT_IMAGE_COMPARE_FIT;
|
|
10189
|
+
}
|
|
10190
|
+
function resolveImageCompareStep(step) {
|
|
10191
|
+
if (typeof step === "number" && Number.isFinite(step) && step > 0) return step;
|
|
10192
|
+
return DEFAULT_IMAGE_COMPARE_STEP;
|
|
10193
|
+
}
|
|
10194
|
+
function resolveImageComparePosition(position, step) {
|
|
10195
|
+
const safeStep = resolveImageCompareStep(step);
|
|
10196
|
+
const raw = typeof position === "number" && Number.isFinite(position) ? position : DEFAULT_IMAGE_COMPARE_POSITION;
|
|
10197
|
+
return sliderNormalizeValue(raw, 0, 100, safeStep);
|
|
10198
|
+
}
|
|
10199
|
+
function resolveImageCompareAriaLabel(label) {
|
|
10200
|
+
if (typeof label === "string") {
|
|
10201
|
+
const trimmed = label.trim();
|
|
10202
|
+
if (trimmed) return trimmed;
|
|
10203
|
+
}
|
|
10204
|
+
return DEFAULT_IMAGE_COMPARE_ARIA_LABEL;
|
|
10205
|
+
}
|
|
10206
|
+
var IMAGE_COMPARE_INTERACTIVE_SELECTOR = 'a, button, input, textarea, select, [role="button"]';
|
|
10207
|
+
function isImageCompareInteractiveTarget(target, handle) {
|
|
10208
|
+
if (!(target instanceof Element)) return false;
|
|
10209
|
+
if (handle instanceof Node && handle.contains(target)) return false;
|
|
10210
|
+
return target.closest(IMAGE_COMPARE_INTERACTIVE_SELECTOR) !== null;
|
|
10211
|
+
}
|
|
10212
|
+
function getImageComparePointerClientPoint(event) {
|
|
10213
|
+
if (event.touches && event.touches.length > 0) {
|
|
10214
|
+
const touch = event.touches[0];
|
|
10215
|
+
return { clientX: touch.clientX, clientY: touch.clientY };
|
|
10216
|
+
}
|
|
10217
|
+
if (typeof event.clientX === "number" && typeof event.clientY === "number") {
|
|
10218
|
+
return { clientX: event.clientX, clientY: event.clientY };
|
|
10219
|
+
}
|
|
10220
|
+
return null;
|
|
10221
|
+
}
|
|
10222
|
+
function getImageComparePositionFromPointer(input) {
|
|
10223
|
+
const orientation = resolveImageCompareOrientation(input.orientation);
|
|
10224
|
+
const step = resolveImageCompareStep(input.step);
|
|
10225
|
+
const { rect } = input;
|
|
10226
|
+
if (orientation === "vertical") {
|
|
10227
|
+
return sliderGetValueFromPosition(input.clientY - rect.top, rect.height, 0, 100, step);
|
|
10228
|
+
}
|
|
10229
|
+
return sliderGetValueFromPosition(input.clientX - rect.left, rect.width, 0, 100, step);
|
|
10230
|
+
}
|
|
10231
|
+
function getImageCompareKeyboardPosition(key, current, step) {
|
|
10232
|
+
return sliderGetKeyboardValue(
|
|
10233
|
+
key,
|
|
10234
|
+
resolveImageComparePosition(current, step),
|
|
10235
|
+
0,
|
|
10236
|
+
100,
|
|
10237
|
+
resolveImageCompareStep(step)
|
|
10238
|
+
);
|
|
10239
|
+
}
|
|
10240
|
+
function getImageCompareClipStyle(position, orientation, step) {
|
|
10241
|
+
const resolved = resolveImageComparePosition(position, step);
|
|
10242
|
+
const clipped = `${100 - resolved}%`;
|
|
10243
|
+
if (isImageCompareVertical(orientation)) {
|
|
10244
|
+
return { clipPath: `inset(0 0 ${clipped} 0)` };
|
|
10245
|
+
}
|
|
10246
|
+
return { clipPath: `inset(0 ${clipped} 0 0)` };
|
|
10247
|
+
}
|
|
10248
|
+
function getImageCompareHandleStyle(position, orientation, step) {
|
|
10249
|
+
const resolved = resolveImageComparePosition(position, step);
|
|
10250
|
+
if (isImageCompareVertical(orientation)) {
|
|
10251
|
+
return { top: `${resolved}%` };
|
|
10252
|
+
}
|
|
10253
|
+
return { left: `${resolved}%` };
|
|
10254
|
+
}
|
|
10255
|
+
function getImageCompareRootStyle(input = {}) {
|
|
10256
|
+
const position = resolveImageComparePosition(input.position, input.step);
|
|
10257
|
+
const style = {
|
|
10258
|
+
[IMAGE_COMPARE_POSITION_VAR]: `${position}%`
|
|
10259
|
+
};
|
|
10260
|
+
const width = toCSSSize(input.width);
|
|
10261
|
+
const height = toCSSSize(input.height);
|
|
10262
|
+
if (width) style.width = width;
|
|
10263
|
+
if (height) style.height = height;
|
|
10264
|
+
return style;
|
|
10265
|
+
}
|
|
10266
|
+
function getImageCompareRootClasses(input = {}) {
|
|
10267
|
+
return classNames(
|
|
10268
|
+
imageCompareRootClasses,
|
|
10269
|
+
isImageCompareVertical(input.orientation) ? imageCompareVerticalClasses : imageCompareHorizontalClasses,
|
|
10270
|
+
input.disabled && imageCompareDisabledClasses,
|
|
10271
|
+
input.className
|
|
10272
|
+
);
|
|
10273
|
+
}
|
|
10274
|
+
function getImageCompareAfterClasses(className) {
|
|
10275
|
+
return classNames(imageCompareAfterClasses, className);
|
|
10276
|
+
}
|
|
10277
|
+
function getImageCompareBeforeClasses(className) {
|
|
10278
|
+
return classNames(imageCompareBeforeClasses, className);
|
|
10279
|
+
}
|
|
10280
|
+
function getImageCompareHandleClasses(input = {}) {
|
|
10281
|
+
return classNames(
|
|
10282
|
+
imageCompareHandleClasses,
|
|
10283
|
+
isImageCompareVertical(input.orientation) ? imageCompareHandleVerticalClasses : imageCompareHandleHorizontalClasses,
|
|
10284
|
+
input.disabled && imageCompareHandleDisabledClasses,
|
|
10285
|
+
input.className
|
|
10286
|
+
);
|
|
10287
|
+
}
|
|
10288
|
+
function getImageCompareLineClasses(orientation) {
|
|
10289
|
+
return classNames(
|
|
10290
|
+
imageCompareLineClasses,
|
|
10291
|
+
isImageCompareVertical(orientation) ? imageCompareLineVerticalClasses : imageCompareLineHorizontalClasses
|
|
10292
|
+
);
|
|
10293
|
+
}
|
|
10294
|
+
function getImageCompareKnobClasses(className) {
|
|
10295
|
+
return classNames(imageCompareKnobClasses, className);
|
|
10296
|
+
}
|
|
10297
|
+
function getImageCompareImgClasses(fit) {
|
|
10298
|
+
return getImageImgClasses(resolveImageCompareFit(fit));
|
|
10299
|
+
}
|
|
10300
|
+
|
|
9152
10301
|
// src/utils/gesture-utils.ts
|
|
9153
10302
|
var DEFAULT_SWIPE_DISTANCE = 24;
|
|
9154
10303
|
var DEFAULT_LONG_PRESS_THRESHOLD = 500;
|
|
@@ -10758,7 +11907,10 @@ function valueToGaugeAngle(value, min, max, startAngle, endAngle) {
|
|
|
10758
11907
|
const safeMin = safeNumber(min);
|
|
10759
11908
|
const safeMax = safeNumber(max, safeMin);
|
|
10760
11909
|
if (safeMax <= safeMin) return safeStart;
|
|
10761
|
-
const ratio = Math.max(
|
|
11910
|
+
const ratio = Math.max(
|
|
11911
|
+
0,
|
|
11912
|
+
Math.min(1, (safeNumber(value, safeMin) - safeMin) / (safeMax - safeMin))
|
|
11913
|
+
);
|
|
10762
11914
|
return safeStart + ratio * (safeEnd - safeStart);
|
|
10763
11915
|
}
|
|
10764
11916
|
function computeGaugeTicks(cx, cy, radius, min, max, startAngle, endAngle, tickCount) {
|
|
@@ -10820,11 +11972,7 @@ function interpolateColor(minColor, maxColor, t) {
|
|
|
10820
11972
|
const clamped = Number.isFinite(t) ? Math.max(0, Math.min(1, t)) : 0;
|
|
10821
11973
|
const [r1, g1, b1] = hexToRgb(minColor);
|
|
10822
11974
|
const [r2, g2, b2] = hexToRgb(maxColor);
|
|
10823
|
-
return rgbToHex(
|
|
10824
|
-
r1 + (r2 - r1) * clamped,
|
|
10825
|
-
g1 + (g2 - g1) * clamped,
|
|
10826
|
-
b1 + (b2 - b1) * clamped
|
|
10827
|
-
);
|
|
11975
|
+
return rgbToHex(r1 + (r2 - r1) * clamped, g1 + (g2 - g1) * clamped, b1 + (b2 - b1) * clamped);
|
|
10828
11976
|
}
|
|
10829
11977
|
function interpolateColorOklch(minColor, maxColor, t) {
|
|
10830
11978
|
const clamped = Math.max(0, Math.min(1, t));
|
|
@@ -12607,6 +13755,148 @@ function createTaskBoardDragController(callbacks, initialOptions) {
|
|
|
12607
13755
|
return ctrl;
|
|
12608
13756
|
}
|
|
12609
13757
|
|
|
13758
|
+
// src/utils/virtual-list-utils.ts
|
|
13759
|
+
var virtualListContainerClasses = classNames(
|
|
13760
|
+
"overflow-auto relative",
|
|
13761
|
+
"bg-[var(--tiger-virtuallist-bg,var(--tiger-surface,#ffffff))]"
|
|
13762
|
+
);
|
|
13763
|
+
var virtualListInnerClasses = "relative w-full";
|
|
13764
|
+
function getFixedVirtualRange(scrollTop, containerHeight, itemHeight, itemCount, overscan) {
|
|
13765
|
+
if (itemHeight <= 0 || itemCount <= 0) {
|
|
13766
|
+
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
13767
|
+
}
|
|
13768
|
+
const totalHeight = itemCount * itemHeight;
|
|
13769
|
+
const startIndex = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);
|
|
13770
|
+
const visibleCount = Math.ceil(containerHeight / itemHeight);
|
|
13771
|
+
const endIndex = Math.min(itemCount - 1, startIndex + visibleCount + 2 * overscan);
|
|
13772
|
+
const offsetTop = startIndex * itemHeight;
|
|
13773
|
+
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
13774
|
+
}
|
|
13775
|
+
function fixedSizeStrategy(itemHeight) {
|
|
13776
|
+
return {
|
|
13777
|
+
getRange(scrollTop, containerHeight, itemCount, overscan) {
|
|
13778
|
+
return getFixedVirtualRange(scrollTop, containerHeight, itemHeight, itemCount, overscan);
|
|
13779
|
+
},
|
|
13780
|
+
getItemHeight() {
|
|
13781
|
+
return itemHeight;
|
|
13782
|
+
},
|
|
13783
|
+
getItemOffset(index) {
|
|
13784
|
+
return index * itemHeight;
|
|
13785
|
+
}
|
|
13786
|
+
};
|
|
13787
|
+
}
|
|
13788
|
+
function variableSizeStrategy(getHeight, itemCount) {
|
|
13789
|
+
const offsets = new Float64Array(itemCount + 1);
|
|
13790
|
+
for (let i = 0; i < itemCount; i++) {
|
|
13791
|
+
offsets[i + 1] = offsets[i] + getHeight(i);
|
|
13792
|
+
}
|
|
13793
|
+
const totalHeight = offsets[itemCount] ?? 0;
|
|
13794
|
+
function binarySearchStart(scrollTop) {
|
|
13795
|
+
let lo = 0;
|
|
13796
|
+
let hi = itemCount - 1;
|
|
13797
|
+
while (lo <= hi) {
|
|
13798
|
+
const mid = lo + hi >>> 1;
|
|
13799
|
+
if (offsets[mid + 1] <= scrollTop) {
|
|
13800
|
+
lo = mid + 1;
|
|
13801
|
+
} else {
|
|
13802
|
+
hi = mid - 1;
|
|
13803
|
+
}
|
|
13804
|
+
}
|
|
13805
|
+
return Math.min(lo, itemCount - 1);
|
|
13806
|
+
}
|
|
13807
|
+
return {
|
|
13808
|
+
getRange(scrollTop, containerHeight, _itemCount, overscan) {
|
|
13809
|
+
if (itemCount === 0) {
|
|
13810
|
+
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
13811
|
+
}
|
|
13812
|
+
const rawStart = binarySearchStart(scrollTop);
|
|
13813
|
+
const startIndex = Math.max(0, rawStart - overscan);
|
|
13814
|
+
const viewEnd = scrollTop + containerHeight;
|
|
13815
|
+
let endIndex = rawStart;
|
|
13816
|
+
while (endIndex < itemCount - 1 && offsets[endIndex] < viewEnd) {
|
|
13817
|
+
endIndex++;
|
|
13818
|
+
}
|
|
13819
|
+
endIndex = Math.min(itemCount - 1, endIndex + overscan);
|
|
13820
|
+
const offsetTop = offsets[startIndex];
|
|
13821
|
+
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
13822
|
+
},
|
|
13823
|
+
getItemHeight(index) {
|
|
13824
|
+
return getHeight(index);
|
|
13825
|
+
},
|
|
13826
|
+
getItemOffset(index) {
|
|
13827
|
+
return offsets[index] ?? 0;
|
|
13828
|
+
}
|
|
13829
|
+
};
|
|
13830
|
+
}
|
|
13831
|
+
function dynamicSizeStrategy(estimatedHeight, itemCount) {
|
|
13832
|
+
const measuredHeights = /* @__PURE__ */ new Map();
|
|
13833
|
+
const offsets = new Float64Array(itemCount + 1);
|
|
13834
|
+
for (let i = 0; i < itemCount; i++) {
|
|
13835
|
+
offsets[i + 1] = offsets[i] + estimatedHeight;
|
|
13836
|
+
}
|
|
13837
|
+
let dirtyFrom = itemCount;
|
|
13838
|
+
function getHeight(index) {
|
|
13839
|
+
return measuredHeights.get(index) ?? estimatedHeight;
|
|
13840
|
+
}
|
|
13841
|
+
function rebuildOffsets() {
|
|
13842
|
+
if (dirtyFrom >= itemCount) return;
|
|
13843
|
+
for (let i = dirtyFrom; i < itemCount; i++) {
|
|
13844
|
+
offsets[i + 1] = offsets[i] + getHeight(i);
|
|
13845
|
+
}
|
|
13846
|
+
dirtyFrom = itemCount;
|
|
13847
|
+
}
|
|
13848
|
+
function getOffset(index) {
|
|
13849
|
+
rebuildOffsets();
|
|
13850
|
+
const safeIndex = Math.min(itemCount, Math.max(0, index));
|
|
13851
|
+
return offsets[safeIndex] ?? 0;
|
|
13852
|
+
}
|
|
13853
|
+
function binarySearchStart(scrollTop) {
|
|
13854
|
+
let lo = 0;
|
|
13855
|
+
let hi = itemCount - 1;
|
|
13856
|
+
while (lo <= hi) {
|
|
13857
|
+
const mid = lo + hi >>> 1;
|
|
13858
|
+
if (offsets[mid + 1] <= scrollTop) {
|
|
13859
|
+
lo = mid + 1;
|
|
13860
|
+
} else {
|
|
13861
|
+
hi = mid - 1;
|
|
13862
|
+
}
|
|
13863
|
+
}
|
|
13864
|
+
return Math.min(lo, itemCount - 1);
|
|
13865
|
+
}
|
|
13866
|
+
return {
|
|
13867
|
+
getRange(scrollTop, containerHeight, _itemCount, overscan) {
|
|
13868
|
+
if (itemCount === 0) {
|
|
13869
|
+
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
13870
|
+
}
|
|
13871
|
+
rebuildOffsets();
|
|
13872
|
+
const rawStart = binarySearchStart(scrollTop);
|
|
13873
|
+
const startIndex = Math.max(0, rawStart - overscan);
|
|
13874
|
+
const viewEnd = scrollTop + containerHeight;
|
|
13875
|
+
let endIndex = rawStart;
|
|
13876
|
+
while (endIndex < itemCount - 1 && offsets[endIndex] < viewEnd) {
|
|
13877
|
+
endIndex++;
|
|
13878
|
+
}
|
|
13879
|
+
endIndex = Math.min(itemCount - 1, endIndex + overscan);
|
|
13880
|
+
const offsetTop = offsets[startIndex] ?? 0;
|
|
13881
|
+
const totalHeight = offsets[itemCount] ?? 0;
|
|
13882
|
+
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
13883
|
+
},
|
|
13884
|
+
getItemHeight(index) {
|
|
13885
|
+
return getHeight(index);
|
|
13886
|
+
},
|
|
13887
|
+
getItemOffset(index) {
|
|
13888
|
+
return getOffset(index);
|
|
13889
|
+
},
|
|
13890
|
+
updateItemHeight(index, measuredHeight) {
|
|
13891
|
+
if (index < 0 || index >= itemCount || !Number.isFinite(measuredHeight) || measuredHeight <= 0 || getHeight(index) === measuredHeight) {
|
|
13892
|
+
return;
|
|
13893
|
+
}
|
|
13894
|
+
measuredHeights.set(index, measuredHeight);
|
|
13895
|
+
dirtyFrom = Math.min(dirtyFrom, index);
|
|
13896
|
+
}
|
|
13897
|
+
};
|
|
13898
|
+
}
|
|
13899
|
+
|
|
12610
13900
|
// src/utils/cascader-utils.ts
|
|
12611
13901
|
var cascaderBaseClasses = "relative inline-block w-full";
|
|
12612
13902
|
var CASCADER_TRIGGER_BASE_CLASSES = [
|
|
@@ -12745,6 +14035,27 @@ function getCascaderColumns(options, activePath) {
|
|
|
12745
14035
|
}
|
|
12746
14036
|
return columns;
|
|
12747
14037
|
}
|
|
14038
|
+
var CASCADER_DEFAULT_LIST_HEIGHT = 256;
|
|
14039
|
+
var CASCADER_VIRTUAL_OVERSCAN = 5;
|
|
14040
|
+
function getCascaderVirtualItemHeight(size2 = "md") {
|
|
14041
|
+
return getSelectVirtualItemHeight(size2);
|
|
14042
|
+
}
|
|
14043
|
+
function getCascaderVirtualRange(scrollTop, listHeight, itemCount, itemHeight, overscan = CASCADER_VIRTUAL_OVERSCAN) {
|
|
14044
|
+
const range = fixedSizeStrategy(itemHeight).getRange(scrollTop, listHeight, itemCount, overscan);
|
|
14045
|
+
if (range.endIndex < 0 || range.startIndex <= range.endIndex) return range;
|
|
14046
|
+
return {
|
|
14047
|
+
...range,
|
|
14048
|
+
startIndex: range.endIndex,
|
|
14049
|
+
offsetTop: range.endIndex * itemHeight
|
|
14050
|
+
};
|
|
14051
|
+
}
|
|
14052
|
+
function getCascaderVirtualAlignScrollTop(scrollTop, index, itemHeight, listHeight) {
|
|
14053
|
+
if (index < 0 || itemHeight <= 0 || listHeight <= 0) return scrollTop;
|
|
14054
|
+
const top = index * itemHeight;
|
|
14055
|
+
if (top < scrollTop) return top;
|
|
14056
|
+
if (top + itemHeight > scrollTop + listHeight) return top + itemHeight - listHeight;
|
|
14057
|
+
return scrollTop;
|
|
14058
|
+
}
|
|
12748
14059
|
|
|
12749
14060
|
// src/utils/auto-complete-utils.ts
|
|
12750
14061
|
var autoCompleteBaseClasses = "relative inline-block w-full";
|
|
@@ -12979,15 +14290,351 @@ function getNumberKeyboardKeys(options = {}) {
|
|
|
12979
14290
|
if (options.showConfirm !== false) {
|
|
12980
14291
|
keys.push({ type: "confirm", value: "confirm", label: confirmText, ariaLabel: confirmText });
|
|
12981
14292
|
}
|
|
12982
|
-
return keys;
|
|
14293
|
+
return keys;
|
|
14294
|
+
}
|
|
14295
|
+
function getNumberKeyboardKeyClasses(key, disabled = false) {
|
|
14296
|
+
return classNames(
|
|
14297
|
+
numberKeyboardKeyClasses,
|
|
14298
|
+
key.type === "confirm" && numberKeyboardConfirmKeyClasses,
|
|
14299
|
+
key.type === "empty" && numberKeyboardEmptyKeyClasses,
|
|
14300
|
+
disabled && "pointer-events-none"
|
|
14301
|
+
);
|
|
14302
|
+
}
|
|
14303
|
+
|
|
14304
|
+
// src/utils/input-otp-utils.ts
|
|
14305
|
+
var OTP_TYPE_PATTERNS = {
|
|
14306
|
+
numeric: /^[0-9]$/,
|
|
14307
|
+
alphanumeric: /^[a-zA-Z0-9]$/
|
|
14308
|
+
};
|
|
14309
|
+
function getOtpCharPattern(options) {
|
|
14310
|
+
const pattern = options.pattern;
|
|
14311
|
+
if (!pattern) return OTP_TYPE_PATTERNS[options.type ?? "numeric"];
|
|
14312
|
+
return pattern.global || pattern.sticky ? new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, "")) : pattern;
|
|
14313
|
+
}
|
|
14314
|
+
function sanitizeOtpInput(raw, options = {}) {
|
|
14315
|
+
const pattern = getOtpCharPattern(options);
|
|
14316
|
+
let result = "";
|
|
14317
|
+
for (const char of raw) {
|
|
14318
|
+
if (pattern.test(char)) result += char;
|
|
14319
|
+
}
|
|
14320
|
+
return result;
|
|
14321
|
+
}
|
|
14322
|
+
function normalizeOtpValue(raw, length, options = {}) {
|
|
14323
|
+
return sanitizeOtpInput(raw, options).slice(0, length);
|
|
14324
|
+
}
|
|
14325
|
+
function distributeOtpPaste(pasted, length, options = {}) {
|
|
14326
|
+
const sanitized = sanitizeOtpInput(pasted, options);
|
|
14327
|
+
if (!sanitized) return null;
|
|
14328
|
+
const value = sanitized.slice(0, length);
|
|
14329
|
+
return { value, nextIndex: Math.min(value.length, length - 1) };
|
|
14330
|
+
}
|
|
14331
|
+
function applyOtpCharInput(current, index, chars, length, options = {}) {
|
|
14332
|
+
const sanitized = sanitizeOtpInput(chars, options);
|
|
14333
|
+
if (!sanitized) return { value: current, nextIndex: index };
|
|
14334
|
+
if (sanitized.length > 1) {
|
|
14335
|
+
return distributeOtpPaste(sanitized, length, options) ?? { value: current, nextIndex: index };
|
|
14336
|
+
}
|
|
14337
|
+
const effectiveIndex = Math.min(index, current.length, length - 1);
|
|
14338
|
+
const value = (current.slice(0, effectiveIndex) + sanitized + current.slice(effectiveIndex + 1)).slice(0, length);
|
|
14339
|
+
return { value, nextIndex: Math.min(effectiveIndex + 1, length - 1) };
|
|
14340
|
+
}
|
|
14341
|
+
function applyOtpBackspace(current, index) {
|
|
14342
|
+
if (index < current.length) {
|
|
14343
|
+
return { value: current.slice(0, index) + current.slice(index + 1), nextIndex: index };
|
|
14344
|
+
}
|
|
14345
|
+
if (index > 0) {
|
|
14346
|
+
return { value: current.slice(0, index - 1) + current.slice(index), nextIndex: index - 1 };
|
|
14347
|
+
}
|
|
14348
|
+
return { value: current, nextIndex: 0 };
|
|
14349
|
+
}
|
|
14350
|
+
function applyOtpDelete(current, index) {
|
|
14351
|
+
if (index < current.length) {
|
|
14352
|
+
return { value: current.slice(0, index) + current.slice(index + 1), nextIndex: index };
|
|
14353
|
+
}
|
|
14354
|
+
return { value: current, nextIndex: index };
|
|
14355
|
+
}
|
|
14356
|
+
function isOtpComplete(value, length) {
|
|
14357
|
+
return length > 0 && value.length >= length;
|
|
14358
|
+
}
|
|
14359
|
+
function getOtpSeparatorIndices(length, groups) {
|
|
14360
|
+
if (!groups || groups.length === 0) return [];
|
|
14361
|
+
const indices = [];
|
|
14362
|
+
let sum = 0;
|
|
14363
|
+
for (const group of groups) {
|
|
14364
|
+
if (!Number.isInteger(group) || group <= 0) return [];
|
|
14365
|
+
sum += group;
|
|
14366
|
+
if (sum < length) indices.push(sum - 1);
|
|
14367
|
+
}
|
|
14368
|
+
return sum === length ? indices : [];
|
|
14369
|
+
}
|
|
14370
|
+
function formatOtpSlotLabel(template, index, total) {
|
|
14371
|
+
return template.replace("{index}", String(index)).replace("{total}", String(total));
|
|
14372
|
+
}
|
|
14373
|
+
var OTP_CONTAINER_GAP = {
|
|
14374
|
+
sm: "gap-1.5",
|
|
14375
|
+
md: "gap-2",
|
|
14376
|
+
lg: "gap-3"
|
|
14377
|
+
};
|
|
14378
|
+
function getOtpContainerClasses(size2 = "md") {
|
|
14379
|
+
return classNames("inline-flex items-center", OTP_CONTAINER_GAP[size2]);
|
|
14380
|
+
}
|
|
14381
|
+
var OTP_TEXT_SIZE_CLASSES = {
|
|
14382
|
+
sm: "text-sm",
|
|
14383
|
+
md: "text-base",
|
|
14384
|
+
lg: "text-lg"
|
|
14385
|
+
};
|
|
14386
|
+
var OTP_SLOT_SIZE_CLASSES = {
|
|
14387
|
+
sm: "h-8 w-8 text-sm",
|
|
14388
|
+
md: "h-10 w-10 text-base",
|
|
14389
|
+
lg: "h-12 w-12 text-lg"
|
|
14390
|
+
};
|
|
14391
|
+
var OTP_SLOT_STATUS_CLASSES = {
|
|
14392
|
+
default: "border-[var(--tiger-border,#e5e7eb)] focus:ring-[var(--tiger-primary,#2563eb)]/40 focus:border-transparent",
|
|
14393
|
+
error: "border-red-500 focus:ring-red-500 focus:border-red-500 text-red-900",
|
|
14394
|
+
success: "border-green-500 focus:ring-green-500 focus:border-green-500 text-green-900",
|
|
14395
|
+
warning: "border-yellow-500 focus:ring-yellow-500 focus:border-yellow-500 text-yellow-900"
|
|
14396
|
+
};
|
|
14397
|
+
function getOtpSlotClasses(size2 = "md", status = "default", options = {}) {
|
|
14398
|
+
return classNames(
|
|
14399
|
+
"text-center border rounded-[var(--tiger-radius-md,0.5rem)]",
|
|
14400
|
+
"bg-[var(--tiger-surface,#ffffff)] text-[var(--tiger-text,#111827)]",
|
|
14401
|
+
"focus:outline-none focus:ring-2 transition-colors",
|
|
14402
|
+
"disabled:bg-[var(--tiger-surface-muted,#f3f4f6)] disabled:text-[var(--tiger-text-muted,#6b7280)] disabled:cursor-not-allowed",
|
|
14403
|
+
OTP_SLOT_SIZE_CLASSES[size2],
|
|
14404
|
+
OTP_SLOT_STATUS_CLASSES[status],
|
|
14405
|
+
options.readonly && "cursor-default"
|
|
14406
|
+
);
|
|
14407
|
+
}
|
|
14408
|
+
function getOtpSeparatorClasses(size2 = "md") {
|
|
14409
|
+
return classNames(
|
|
14410
|
+
"select-none text-[var(--tiger-text-muted,#6b7280)]",
|
|
14411
|
+
OTP_TEXT_SIZE_CLASSES[size2]
|
|
14412
|
+
);
|
|
14413
|
+
}
|
|
14414
|
+
function getOtpErrorClasses() {
|
|
14415
|
+
return "mt-1 text-sm text-[var(--tiger-error,#dc2626)]";
|
|
14416
|
+
}
|
|
14417
|
+
|
|
14418
|
+
// src/utils/tags-input-utils.ts
|
|
14419
|
+
function extractTagCandidates(inputValue, delimiters = [","]) {
|
|
14420
|
+
const separators = delimiters.filter((delimiter) => delimiter.length > 0);
|
|
14421
|
+
if (separators.length === 0) return { candidates: [], pending: inputValue };
|
|
14422
|
+
const candidates = [];
|
|
14423
|
+
let rest = inputValue;
|
|
14424
|
+
for (; ; ) {
|
|
14425
|
+
let earliest = -1;
|
|
14426
|
+
let separatorLength = 0;
|
|
14427
|
+
for (const separator of separators) {
|
|
14428
|
+
const index = rest.indexOf(separator);
|
|
14429
|
+
if (index !== -1 && (earliest === -1 || index < earliest)) {
|
|
14430
|
+
earliest = index;
|
|
14431
|
+
separatorLength = separator.length;
|
|
14432
|
+
}
|
|
14433
|
+
}
|
|
14434
|
+
if (earliest === -1) break;
|
|
14435
|
+
const segment = rest.slice(0, earliest).trim();
|
|
14436
|
+
if (segment) candidates.push(segment);
|
|
14437
|
+
rest = rest.slice(earliest + separatorLength);
|
|
14438
|
+
}
|
|
14439
|
+
return { candidates, pending: rest };
|
|
14440
|
+
}
|
|
14441
|
+
function splitTagInput(raw, delimiters = [","]) {
|
|
14442
|
+
const { candidates, pending } = extractTagCandidates(raw, [...delimiters, "\n", "\r"]);
|
|
14443
|
+
const last = pending.trim();
|
|
14444
|
+
return last ? [...candidates, last] : candidates;
|
|
14445
|
+
}
|
|
14446
|
+
function addTags(current, candidates, options = {}) {
|
|
14447
|
+
const { allowDuplicates = false, max } = options;
|
|
14448
|
+
const tags = [...current];
|
|
14449
|
+
const added = [];
|
|
14450
|
+
const rejected = [];
|
|
14451
|
+
for (const candidate of candidates) {
|
|
14452
|
+
const tag = candidate.trim();
|
|
14453
|
+
if (!tag) continue;
|
|
14454
|
+
if (max !== void 0 && tags.length >= max) {
|
|
14455
|
+
rejected.push(tag);
|
|
14456
|
+
continue;
|
|
14457
|
+
}
|
|
14458
|
+
if (!allowDuplicates && tags.includes(tag)) {
|
|
14459
|
+
rejected.push(tag);
|
|
14460
|
+
continue;
|
|
14461
|
+
}
|
|
14462
|
+
tags.push(tag);
|
|
14463
|
+
added.push(tag);
|
|
14464
|
+
}
|
|
14465
|
+
return { tags, added, rejected };
|
|
14466
|
+
}
|
|
14467
|
+
function removeTagAt(tags, index) {
|
|
14468
|
+
if (index < 0 || index >= tags.length) return tags;
|
|
14469
|
+
return [...tags.slice(0, index), ...tags.slice(index + 1)];
|
|
14470
|
+
}
|
|
14471
|
+
function formatRemoveTagLabel(template, tag) {
|
|
14472
|
+
return template.replace("{tag}", tag);
|
|
14473
|
+
}
|
|
14474
|
+
var TAGS_INPUT_SIZE_CLASSES = {
|
|
14475
|
+
sm: "min-h-8 px-2 py-1 text-sm gap-1",
|
|
14476
|
+
md: "min-h-10 px-3 py-1.5 text-base gap-1.5",
|
|
14477
|
+
lg: "min-h-12 px-4 py-2 text-lg gap-2"
|
|
14478
|
+
};
|
|
14479
|
+
var TAGS_INPUT_STATUS_CLASSES = {
|
|
14480
|
+
default: "border-[var(--tiger-border,#e5e7eb)] focus-within:ring-[var(--tiger-primary,#2563eb)]/40 focus-within:border-transparent",
|
|
14481
|
+
error: "border-red-500 focus-within:ring-red-500 focus-within:border-red-500",
|
|
14482
|
+
success: "border-green-500 focus-within:ring-green-500 focus-within:border-green-500",
|
|
14483
|
+
warning: "border-yellow-500 focus-within:ring-yellow-500 focus-within:border-yellow-500"
|
|
14484
|
+
};
|
|
14485
|
+
function getTagsInputContainerClasses(size2 = "md", status = "default", options = {}) {
|
|
14486
|
+
return classNames(
|
|
14487
|
+
"flex w-full flex-wrap items-center border rounded-[var(--tiger-radius-md,0.5rem)]",
|
|
14488
|
+
"bg-[var(--tiger-surface,#ffffff)] transition-colors focus-within:ring-2",
|
|
14489
|
+
TAGS_INPUT_SIZE_CLASSES[size2],
|
|
14490
|
+
TAGS_INPUT_STATUS_CLASSES[status],
|
|
14491
|
+
options.disabled && "cursor-not-allowed bg-[var(--tiger-surface-muted,#f3f4f6)] text-[var(--tiger-text-muted,#6b7280)]"
|
|
14492
|
+
);
|
|
14493
|
+
}
|
|
14494
|
+
function getTagsInputInnerInputClasses() {
|
|
14495
|
+
return classNames(
|
|
14496
|
+
"min-w-16 flex-1 border-none bg-transparent p-0 outline-none",
|
|
14497
|
+
"text-[var(--tiger-text,#111827)] placeholder:text-[var(--tiger-text-muted,#6b7280)]",
|
|
14498
|
+
"disabled:cursor-not-allowed"
|
|
14499
|
+
);
|
|
14500
|
+
}
|
|
14501
|
+
function getTagsInputHighlightClasses() {
|
|
14502
|
+
return "ring-2 ring-[var(--tiger-primary,#2563eb)]/60";
|
|
14503
|
+
}
|
|
14504
|
+
function getTagsInputClearButtonClasses() {
|
|
14505
|
+
return classNames(
|
|
14506
|
+
"shrink-0 cursor-pointer border-none bg-transparent p-0",
|
|
14507
|
+
"text-[var(--tiger-text-muted,#6b7280)] hover:text-[var(--tiger-text,#111827)]"
|
|
14508
|
+
);
|
|
14509
|
+
}
|
|
14510
|
+
function getTagsInputErrorClasses() {
|
|
14511
|
+
return "mt-1 text-sm text-[var(--tiger-error,#dc2626)]";
|
|
14512
|
+
}
|
|
14513
|
+
|
|
14514
|
+
// src/utils/mask-input-utils.ts
|
|
14515
|
+
var DEFAULT_MASK_TOKENS = {
|
|
14516
|
+
"#": { pattern: /[0-9]/ },
|
|
14517
|
+
a: { pattern: /[a-zA-Z]/ },
|
|
14518
|
+
"*": { pattern: /[a-zA-Z0-9]/ }
|
|
14519
|
+
};
|
|
14520
|
+
function parseMask(mask, tokens) {
|
|
14521
|
+
const tokenMap = { ...DEFAULT_MASK_TOKENS, ...tokens };
|
|
14522
|
+
const spec = [];
|
|
14523
|
+
let escaped = false;
|
|
14524
|
+
for (const char of mask) {
|
|
14525
|
+
if (escaped) {
|
|
14526
|
+
spec.push({ kind: "fixed", char });
|
|
14527
|
+
escaped = false;
|
|
14528
|
+
continue;
|
|
14529
|
+
}
|
|
14530
|
+
if (char === "!") {
|
|
14531
|
+
escaped = true;
|
|
14532
|
+
continue;
|
|
14533
|
+
}
|
|
14534
|
+
const token = tokenMap[char];
|
|
14535
|
+
spec.push(token ? { kind: "token", token } : { kind: "fixed", char });
|
|
14536
|
+
}
|
|
14537
|
+
return spec;
|
|
14538
|
+
}
|
|
14539
|
+
function countMaskTokens(spec) {
|
|
14540
|
+
let count = 0;
|
|
14541
|
+
for (const entry of spec) {
|
|
14542
|
+
if (entry.kind === "token") count += 1;
|
|
14543
|
+
}
|
|
14544
|
+
return count;
|
|
14545
|
+
}
|
|
14546
|
+
function formatMaskValue(raw, spec) {
|
|
14547
|
+
let maskedValue = "";
|
|
14548
|
+
let rawValue = "";
|
|
14549
|
+
let fixedBuffer = "";
|
|
14550
|
+
let rawPos = 0;
|
|
14551
|
+
let filled = 0;
|
|
14552
|
+
const chars = Array.from(raw);
|
|
14553
|
+
for (const entry of spec) {
|
|
14554
|
+
if (entry.kind === "fixed") {
|
|
14555
|
+
fixedBuffer += entry.char;
|
|
14556
|
+
continue;
|
|
14557
|
+
}
|
|
14558
|
+
let accepted;
|
|
14559
|
+
while (rawPos < chars.length) {
|
|
14560
|
+
const candidate = chars[rawPos];
|
|
14561
|
+
rawPos += 1;
|
|
14562
|
+
const transformed = entry.token.transform ? entry.token.transform(candidate) : candidate;
|
|
14563
|
+
if (entry.token.pattern.test(transformed)) {
|
|
14564
|
+
accepted = transformed;
|
|
14565
|
+
break;
|
|
14566
|
+
}
|
|
14567
|
+
}
|
|
14568
|
+
if (accepted === void 0) break;
|
|
14569
|
+
maskedValue += fixedBuffer + accepted;
|
|
14570
|
+
fixedBuffer = "";
|
|
14571
|
+
rawValue += accepted;
|
|
14572
|
+
filled += 1;
|
|
14573
|
+
}
|
|
14574
|
+
const totalTokens = countMaskTokens(spec);
|
|
14575
|
+
if (rawValue.length > 0 && fixedBuffer) {
|
|
14576
|
+
maskedValue += fixedBuffer;
|
|
14577
|
+
}
|
|
14578
|
+
return { rawValue, maskedValue, completed: totalTokens > 0 && filled === totalTokens };
|
|
14579
|
+
}
|
|
14580
|
+
function extractRawValue(masked, spec, upTo) {
|
|
14581
|
+
let raw = "";
|
|
14582
|
+
let specIdx = 0;
|
|
14583
|
+
const limit = upTo === void 0 ? masked.length : Math.min(upTo, masked.length);
|
|
14584
|
+
for (let i = 0; i < limit; i++) {
|
|
14585
|
+
const char = masked[i];
|
|
14586
|
+
if (specIdx < spec.length) {
|
|
14587
|
+
const entry2 = spec[specIdx];
|
|
14588
|
+
if (entry2.kind === "fixed" && entry2.char === char) {
|
|
14589
|
+
specIdx += 1;
|
|
14590
|
+
continue;
|
|
14591
|
+
}
|
|
14592
|
+
}
|
|
14593
|
+
let tokenIdx = specIdx;
|
|
14594
|
+
while (tokenIdx < spec.length && spec[tokenIdx].kind === "fixed") tokenIdx += 1;
|
|
14595
|
+
if (tokenIdx >= spec.length) break;
|
|
14596
|
+
const entry = spec[tokenIdx];
|
|
14597
|
+
const transformed = entry.token.transform ? entry.token.transform(char) : char;
|
|
14598
|
+
if (entry.token.pattern.test(transformed)) {
|
|
14599
|
+
raw += transformed;
|
|
14600
|
+
specIdx = tokenIdx + 1;
|
|
14601
|
+
}
|
|
14602
|
+
}
|
|
14603
|
+
return raw;
|
|
14604
|
+
}
|
|
14605
|
+
function getMaskCaretPosition(spec, rawIndex) {
|
|
14606
|
+
if (rawIndex <= 0) return 0;
|
|
14607
|
+
let pos = 0;
|
|
14608
|
+
let tokens = 0;
|
|
14609
|
+
for (let i = 0; i < spec.length; i++) {
|
|
14610
|
+
pos += 1;
|
|
14611
|
+
if (spec[i].kind !== "token") continue;
|
|
14612
|
+
tokens += 1;
|
|
14613
|
+
if (tokens === rawIndex) {
|
|
14614
|
+
for (let j = i + 1; j < spec.length && spec[j].kind === "fixed"; j++) {
|
|
14615
|
+
pos += 1;
|
|
14616
|
+
}
|
|
14617
|
+
return pos;
|
|
14618
|
+
}
|
|
14619
|
+
}
|
|
14620
|
+
return pos;
|
|
12983
14621
|
}
|
|
12984
|
-
function
|
|
12985
|
-
|
|
12986
|
-
|
|
12987
|
-
|
|
12988
|
-
|
|
12989
|
-
|
|
12990
|
-
|
|
14622
|
+
function applyMaskInput(inputValue, caret, spec, previousMasked) {
|
|
14623
|
+
let raw = extractRawValue(inputValue, spec);
|
|
14624
|
+
let rawBeforeCaret = extractRawValue(inputValue, spec, caret).length;
|
|
14625
|
+
let result = formatMaskValue(raw, spec);
|
|
14626
|
+
if (previousMasked !== void 0 && inputValue.length < previousMasked.length && result.maskedValue === previousMasked && rawBeforeCaret > 0) {
|
|
14627
|
+
raw = raw.slice(0, rawBeforeCaret - 1) + raw.slice(rawBeforeCaret);
|
|
14628
|
+
rawBeforeCaret -= 1;
|
|
14629
|
+
result = formatMaskValue(raw, spec);
|
|
14630
|
+
}
|
|
14631
|
+
const caretPos = Math.min(getMaskCaretPosition(spec, rawBeforeCaret), result.maskedValue.length);
|
|
14632
|
+
return {
|
|
14633
|
+
rawValue: result.rawValue,
|
|
14634
|
+
maskedValue: result.maskedValue,
|
|
14635
|
+
caret: caretPos,
|
|
14636
|
+
completed: result.completed
|
|
14637
|
+
};
|
|
12991
14638
|
}
|
|
12992
14639
|
|
|
12993
14640
|
// src/utils/cron-editor-utils.ts
|
|
@@ -13440,7 +15087,16 @@ function filterTransferItems(items, query, filterFn) {
|
|
|
13440
15087
|
|
|
13441
15088
|
// src/utils/tree-select-utils.ts
|
|
13442
15089
|
var treeSelectBaseClasses = "relative inline-block w-full";
|
|
13443
|
-
var
|
|
15090
|
+
var treeSelectDropdownSurfaceClasses = "bg-[var(--tiger-treeselect-dropdown-bg,var(--tiger-surface,#ffffff))] border border-[var(--tiger-treeselect-dropdown-border,var(--tiger-border,#d1d5db))] rounded-[var(--tiger-radius-md,0.5rem)] shadow-lg";
|
|
15091
|
+
var treeSelectDropdownClasses = classNames(
|
|
15092
|
+
treeSelectDropdownSurfaceClasses,
|
|
15093
|
+
"max-h-60 overflow-auto"
|
|
15094
|
+
);
|
|
15095
|
+
var TREE_SELECT_DEFAULT_HEIGHT = 400;
|
|
15096
|
+
var TREE_SELECT_DEFAULT_ITEM_HEIGHT = 32;
|
|
15097
|
+
function getTreeSelectDropdownClasses(virtual = false) {
|
|
15098
|
+
return virtual ? classNames(treeSelectDropdownSurfaceClasses, "overflow-hidden") : treeSelectDropdownClasses;
|
|
15099
|
+
}
|
|
13444
15100
|
var treeSelectSearchClasses = "w-full px-3 py-1.5 border-b border-[var(--tiger-treeselect-border,var(--tiger-border,#d1d5db))] text-sm bg-[var(--tiger-treeselect-bg,var(--tiger-surface,#ffffff))] text-[var(--tiger-treeselect-text,var(--tiger-text,#111827))] outline-none placeholder:text-[var(--tiger-treeselect-placeholder,var(--tiger-text-muted,#9ca3af))]";
|
|
13445
15101
|
var treeSelectEmptyClasses = "px-3 py-4 text-center text-[var(--tiger-treeselect-empty-text,var(--tiger-text-muted,#9ca3af))]";
|
|
13446
15102
|
var treeSelectNodeBaseClasses = "flex items-center px-2 py-1.5 cursor-pointer rounded transition-colors";
|
|
@@ -13520,6 +15176,31 @@ function filterTreeSelectNodes(data, query) {
|
|
|
13520
15176
|
search(data, []);
|
|
13521
15177
|
return matchedKeys;
|
|
13522
15178
|
}
|
|
15179
|
+
function getTreeSelectVisibleIndex(nodes, value) {
|
|
15180
|
+
if (value === void 0 || value === null || value === "") return -1;
|
|
15181
|
+
if (Array.isArray(value)) {
|
|
15182
|
+
if (value.length === 0) return -1;
|
|
15183
|
+
const selected = new Set(value);
|
|
15184
|
+
return nodes.findIndex((item) => selected.has(item.node.key));
|
|
15185
|
+
}
|
|
15186
|
+
return nodes.findIndex((item) => item.node.key === value);
|
|
15187
|
+
}
|
|
15188
|
+
function getTreeSelectVirtualAlignScrollTop(scrollTop, index, itemHeight, viewportHeight) {
|
|
15189
|
+
if (index < 0 || itemHeight <= 0 || viewportHeight <= 0) return scrollTop;
|
|
15190
|
+
const top = index * itemHeight;
|
|
15191
|
+
if (top < scrollTop) return top;
|
|
15192
|
+
if (top + itemHeight > scrollTop + viewportHeight) return top + itemHeight - viewportHeight;
|
|
15193
|
+
return scrollTop;
|
|
15194
|
+
}
|
|
15195
|
+
function alignTreeSelectVirtualScroll(el, index, itemHeight, viewportHeight) {
|
|
15196
|
+
if (!el || index < 0) return el?.scrollTop ?? 0;
|
|
15197
|
+
const next = getTreeSelectVirtualAlignScrollTop(el.scrollTop, index, itemHeight, viewportHeight);
|
|
15198
|
+
if (el.scrollTop !== next) {
|
|
15199
|
+
el.scrollTop = next;
|
|
15200
|
+
el.dispatchEvent(new Event("scroll"));
|
|
15201
|
+
}
|
|
15202
|
+
return next;
|
|
15203
|
+
}
|
|
13523
15204
|
|
|
13524
15205
|
// src/utils/rate-utils.ts
|
|
13525
15206
|
var rateBaseClasses = "inline-flex items-center gap-0.5";
|
|
@@ -13905,148 +15586,6 @@ function findEnabledColorSwatchIndex(options, startIndex, direction) {
|
|
|
13905
15586
|
return -1;
|
|
13906
15587
|
}
|
|
13907
15588
|
|
|
13908
|
-
// src/utils/virtual-list-utils.ts
|
|
13909
|
-
var virtualListContainerClasses = classNames(
|
|
13910
|
-
"overflow-auto relative",
|
|
13911
|
-
"bg-[var(--tiger-virtuallist-bg,var(--tiger-surface,#ffffff))]"
|
|
13912
|
-
);
|
|
13913
|
-
var virtualListInnerClasses = "relative w-full";
|
|
13914
|
-
function getFixedVirtualRange(scrollTop, containerHeight, itemHeight, itemCount, overscan) {
|
|
13915
|
-
if (itemHeight <= 0 || itemCount <= 0) {
|
|
13916
|
-
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
13917
|
-
}
|
|
13918
|
-
const totalHeight = itemCount * itemHeight;
|
|
13919
|
-
const startIndex = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);
|
|
13920
|
-
const visibleCount = Math.ceil(containerHeight / itemHeight);
|
|
13921
|
-
const endIndex = Math.min(itemCount - 1, startIndex + visibleCount + 2 * overscan);
|
|
13922
|
-
const offsetTop = startIndex * itemHeight;
|
|
13923
|
-
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
13924
|
-
}
|
|
13925
|
-
function fixedSizeStrategy(itemHeight) {
|
|
13926
|
-
return {
|
|
13927
|
-
getRange(scrollTop, containerHeight, itemCount, overscan) {
|
|
13928
|
-
return getFixedVirtualRange(scrollTop, containerHeight, itemHeight, itemCount, overscan);
|
|
13929
|
-
},
|
|
13930
|
-
getItemHeight() {
|
|
13931
|
-
return itemHeight;
|
|
13932
|
-
},
|
|
13933
|
-
getItemOffset(index) {
|
|
13934
|
-
return index * itemHeight;
|
|
13935
|
-
}
|
|
13936
|
-
};
|
|
13937
|
-
}
|
|
13938
|
-
function variableSizeStrategy(getHeight, itemCount) {
|
|
13939
|
-
const offsets = new Float64Array(itemCount + 1);
|
|
13940
|
-
for (let i = 0; i < itemCount; i++) {
|
|
13941
|
-
offsets[i + 1] = offsets[i] + getHeight(i);
|
|
13942
|
-
}
|
|
13943
|
-
const totalHeight = offsets[itemCount] ?? 0;
|
|
13944
|
-
function binarySearchStart(scrollTop) {
|
|
13945
|
-
let lo = 0;
|
|
13946
|
-
let hi = itemCount - 1;
|
|
13947
|
-
while (lo <= hi) {
|
|
13948
|
-
const mid = lo + hi >>> 1;
|
|
13949
|
-
if (offsets[mid + 1] <= scrollTop) {
|
|
13950
|
-
lo = mid + 1;
|
|
13951
|
-
} else {
|
|
13952
|
-
hi = mid - 1;
|
|
13953
|
-
}
|
|
13954
|
-
}
|
|
13955
|
-
return Math.min(lo, itemCount - 1);
|
|
13956
|
-
}
|
|
13957
|
-
return {
|
|
13958
|
-
getRange(scrollTop, containerHeight, _itemCount, overscan) {
|
|
13959
|
-
if (itemCount === 0) {
|
|
13960
|
-
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
13961
|
-
}
|
|
13962
|
-
const rawStart = binarySearchStart(scrollTop);
|
|
13963
|
-
const startIndex = Math.max(0, rawStart - overscan);
|
|
13964
|
-
const viewEnd = scrollTop + containerHeight;
|
|
13965
|
-
let endIndex = rawStart;
|
|
13966
|
-
while (endIndex < itemCount - 1 && offsets[endIndex] < viewEnd) {
|
|
13967
|
-
endIndex++;
|
|
13968
|
-
}
|
|
13969
|
-
endIndex = Math.min(itemCount - 1, endIndex + overscan);
|
|
13970
|
-
const offsetTop = offsets[startIndex];
|
|
13971
|
-
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
13972
|
-
},
|
|
13973
|
-
getItemHeight(index) {
|
|
13974
|
-
return getHeight(index);
|
|
13975
|
-
},
|
|
13976
|
-
getItemOffset(index) {
|
|
13977
|
-
return offsets[index] ?? 0;
|
|
13978
|
-
}
|
|
13979
|
-
};
|
|
13980
|
-
}
|
|
13981
|
-
function dynamicSizeStrategy(estimatedHeight, itemCount) {
|
|
13982
|
-
const measuredHeights = /* @__PURE__ */ new Map();
|
|
13983
|
-
const offsets = new Float64Array(itemCount + 1);
|
|
13984
|
-
for (let i = 0; i < itemCount; i++) {
|
|
13985
|
-
offsets[i + 1] = offsets[i] + estimatedHeight;
|
|
13986
|
-
}
|
|
13987
|
-
let dirtyFrom = itemCount;
|
|
13988
|
-
function getHeight(index) {
|
|
13989
|
-
return measuredHeights.get(index) ?? estimatedHeight;
|
|
13990
|
-
}
|
|
13991
|
-
function rebuildOffsets() {
|
|
13992
|
-
if (dirtyFrom >= itemCount) return;
|
|
13993
|
-
for (let i = dirtyFrom; i < itemCount; i++) {
|
|
13994
|
-
offsets[i + 1] = offsets[i] + getHeight(i);
|
|
13995
|
-
}
|
|
13996
|
-
dirtyFrom = itemCount;
|
|
13997
|
-
}
|
|
13998
|
-
function getOffset(index) {
|
|
13999
|
-
rebuildOffsets();
|
|
14000
|
-
const safeIndex = Math.min(itemCount, Math.max(0, index));
|
|
14001
|
-
return offsets[safeIndex] ?? 0;
|
|
14002
|
-
}
|
|
14003
|
-
function binarySearchStart(scrollTop) {
|
|
14004
|
-
let lo = 0;
|
|
14005
|
-
let hi = itemCount - 1;
|
|
14006
|
-
while (lo <= hi) {
|
|
14007
|
-
const mid = lo + hi >>> 1;
|
|
14008
|
-
if (offsets[mid + 1] <= scrollTop) {
|
|
14009
|
-
lo = mid + 1;
|
|
14010
|
-
} else {
|
|
14011
|
-
hi = mid - 1;
|
|
14012
|
-
}
|
|
14013
|
-
}
|
|
14014
|
-
return Math.min(lo, itemCount - 1);
|
|
14015
|
-
}
|
|
14016
|
-
return {
|
|
14017
|
-
getRange(scrollTop, containerHeight, _itemCount, overscan) {
|
|
14018
|
-
if (itemCount === 0) {
|
|
14019
|
-
return { startIndex: 0, endIndex: -1, offsetTop: 0, totalHeight: 0 };
|
|
14020
|
-
}
|
|
14021
|
-
rebuildOffsets();
|
|
14022
|
-
const rawStart = binarySearchStart(scrollTop);
|
|
14023
|
-
const startIndex = Math.max(0, rawStart - overscan);
|
|
14024
|
-
const viewEnd = scrollTop + containerHeight;
|
|
14025
|
-
let endIndex = rawStart;
|
|
14026
|
-
while (endIndex < itemCount - 1 && offsets[endIndex] < viewEnd) {
|
|
14027
|
-
endIndex++;
|
|
14028
|
-
}
|
|
14029
|
-
endIndex = Math.min(itemCount - 1, endIndex + overscan);
|
|
14030
|
-
const offsetTop = offsets[startIndex] ?? 0;
|
|
14031
|
-
const totalHeight = offsets[itemCount] ?? 0;
|
|
14032
|
-
return { startIndex, endIndex, offsetTop, totalHeight };
|
|
14033
|
-
},
|
|
14034
|
-
getItemHeight(index) {
|
|
14035
|
-
return getHeight(index);
|
|
14036
|
-
},
|
|
14037
|
-
getItemOffset(index) {
|
|
14038
|
-
return getOffset(index);
|
|
14039
|
-
},
|
|
14040
|
-
updateItemHeight(index, measuredHeight) {
|
|
14041
|
-
if (index < 0 || index >= itemCount || !Number.isFinite(measuredHeight) || measuredHeight <= 0 || getHeight(index) === measuredHeight) {
|
|
14042
|
-
return;
|
|
14043
|
-
}
|
|
14044
|
-
measuredHeights.set(index, measuredHeight);
|
|
14045
|
-
dirtyFrom = Math.min(dirtyFrom, index);
|
|
14046
|
-
}
|
|
14047
|
-
};
|
|
14048
|
-
}
|
|
14049
|
-
|
|
14050
15589
|
// src/utils/stepper-utils.ts
|
|
14051
15590
|
var stepperBaseClasses = "inline-flex items-center";
|
|
14052
15591
|
var sizePad = {
|
|
@@ -15241,13 +16780,209 @@ function applyAspectRatio(width, height, originalWidth, originalHeight) {
|
|
|
15241
16780
|
return { width, height: width / ratio };
|
|
15242
16781
|
}
|
|
15243
16782
|
|
|
16783
|
+
// src/utils/scroll-area-utils.ts
|
|
16784
|
+
var SCROLL_AREA_MIN_THUMB_SIZE = 20;
|
|
16785
|
+
var SCROLL_AREA_EPSILON = 1;
|
|
16786
|
+
var scrollAreaRootClasses = "tiger-scroll-area group/scroll-area relative overflow-hidden";
|
|
16787
|
+
var scrollAreaViewportBaseClasses = "tiger-scroll-area-viewport h-full w-full [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--tiger-primary,#2563eb)]";
|
|
16788
|
+
var scrollAreaScrollbarBaseClasses = "tiger-scroll-area-scrollbar absolute z-10 touch-none select-none rounded-full bg-[var(--tiger-surface-muted,#f3f4f6)] transition-opacity duration-200";
|
|
16789
|
+
var scrollAreaThumbBaseClasses = "tiger-scroll-area-thumb absolute rounded-full bg-[var(--tiger-border,#d1d5db)] transition-colors hover:bg-[var(--tiger-text-muted,#9ca3af)]";
|
|
16790
|
+
var scrollAreaThumbDraggingClasses = "bg-[var(--tiger-text-muted,#9ca3af)]";
|
|
16791
|
+
var scrollAreaContentBaseClasses = "tiger-scroll-area-content";
|
|
16792
|
+
var scrollAreaShadowBaseClasses = "tiger-scroll-area-shadow pointer-events-none absolute";
|
|
16793
|
+
var VIEWPORT_OVERFLOW_CLASSES = {
|
|
16794
|
+
vertical: "overflow-y-auto overflow-x-hidden",
|
|
16795
|
+
horizontal: "overflow-x-auto overflow-y-hidden",
|
|
16796
|
+
both: "overflow-auto"
|
|
16797
|
+
};
|
|
16798
|
+
var SCROLLBAR_THICKNESS_CLASSES = {
|
|
16799
|
+
sm: { x: "h-1.5", y: "w-1.5" },
|
|
16800
|
+
md: { x: "h-2.5", y: "w-2.5" },
|
|
16801
|
+
lg: { x: "h-3.5", y: "w-3.5" }
|
|
16802
|
+
};
|
|
16803
|
+
var SCROLLBAR_PLACEMENT_CLASSES = {
|
|
16804
|
+
x: "bottom-0 left-0 right-0",
|
|
16805
|
+
y: "right-0 top-0 bottom-0"
|
|
16806
|
+
};
|
|
16807
|
+
var THUMB_AXIS_CLASSES = {
|
|
16808
|
+
x: "top-0.5 bottom-0.5",
|
|
16809
|
+
y: "left-0.5 right-0.5"
|
|
16810
|
+
};
|
|
16811
|
+
var SHADOW_SIDE_CLASSES = {
|
|
16812
|
+
top: "inset-x-0 top-0 h-3 bg-gradient-to-b from-black/10 to-transparent",
|
|
16813
|
+
bottom: "inset-x-0 bottom-0 h-3 bg-gradient-to-t from-black/10 to-transparent",
|
|
16814
|
+
left: "inset-y-0 left-0 w-3 bg-gradient-to-r from-black/10 to-transparent",
|
|
16815
|
+
right: "inset-y-0 right-0 w-3 bg-gradient-to-l from-black/10 to-transparent"
|
|
16816
|
+
};
|
|
16817
|
+
function clamp(value, min, max) {
|
|
16818
|
+
if (Number.isNaN(value)) return min;
|
|
16819
|
+
if (value < min) return min;
|
|
16820
|
+
if (value > max) return max;
|
|
16821
|
+
return value;
|
|
16822
|
+
}
|
|
16823
|
+
function computeScrollAreaAxisState(scrollPos, scrollSize, clientSize, minThumbSize = SCROLL_AREA_MIN_THUMB_SIZE) {
|
|
16824
|
+
const maxScroll = scrollSize - clientSize;
|
|
16825
|
+
const scrollable = clientSize > 0 && maxScroll > SCROLL_AREA_EPSILON;
|
|
16826
|
+
if (!scrollable) {
|
|
16827
|
+
return {
|
|
16828
|
+
scrollable: false,
|
|
16829
|
+
thumbSize: clientSize > 0 ? clientSize : 0,
|
|
16830
|
+
thumbOffset: 0,
|
|
16831
|
+
progress: 0,
|
|
16832
|
+
atStart: true,
|
|
16833
|
+
atEnd: true
|
|
16834
|
+
};
|
|
16835
|
+
}
|
|
16836
|
+
const thumbSize = clamp(clientSize / scrollSize * clientSize, minThumbSize, clientSize);
|
|
16837
|
+
const position = clamp(scrollPos, 0, maxScroll);
|
|
16838
|
+
const progress = position / maxScroll;
|
|
16839
|
+
const thumbOffset = (clientSize - thumbSize) * progress;
|
|
16840
|
+
return {
|
|
16841
|
+
scrollable: true,
|
|
16842
|
+
thumbSize,
|
|
16843
|
+
thumbOffset,
|
|
16844
|
+
progress,
|
|
16845
|
+
atStart: position <= SCROLL_AREA_EPSILON,
|
|
16846
|
+
atEnd: maxScroll - position <= SCROLL_AREA_EPSILON
|
|
16847
|
+
};
|
|
16848
|
+
}
|
|
16849
|
+
function computeScrollAreaState(metrics, minThumbSize = SCROLL_AREA_MIN_THUMB_SIZE) {
|
|
16850
|
+
return {
|
|
16851
|
+
x: computeScrollAreaAxisState(
|
|
16852
|
+
Math.abs(metrics.scrollLeft),
|
|
16853
|
+
metrics.scrollWidth,
|
|
16854
|
+
metrics.clientWidth,
|
|
16855
|
+
minThumbSize
|
|
16856
|
+
),
|
|
16857
|
+
y: computeScrollAreaAxisState(
|
|
16858
|
+
metrics.scrollTop,
|
|
16859
|
+
metrics.scrollHeight,
|
|
16860
|
+
metrics.clientHeight,
|
|
16861
|
+
minThumbSize
|
|
16862
|
+
)
|
|
16863
|
+
};
|
|
16864
|
+
}
|
|
16865
|
+
function createEmptyScrollAreaState() {
|
|
16866
|
+
const axis = {
|
|
16867
|
+
scrollable: false,
|
|
16868
|
+
thumbSize: 0,
|
|
16869
|
+
thumbOffset: 0,
|
|
16870
|
+
progress: 0,
|
|
16871
|
+
atStart: true,
|
|
16872
|
+
atEnd: true
|
|
16873
|
+
};
|
|
16874
|
+
return { x: { ...axis }, y: { ...axis } };
|
|
16875
|
+
}
|
|
16876
|
+
function readScrollAreaMetrics(element) {
|
|
16877
|
+
return {
|
|
16878
|
+
scrollTop: element.scrollTop,
|
|
16879
|
+
scrollLeft: element.scrollLeft,
|
|
16880
|
+
scrollHeight: element.scrollHeight,
|
|
16881
|
+
scrollWidth: element.scrollWidth,
|
|
16882
|
+
clientHeight: element.clientHeight,
|
|
16883
|
+
clientWidth: element.clientWidth
|
|
16884
|
+
};
|
|
16885
|
+
}
|
|
16886
|
+
function computeScrollFromThumbOffset(thumbOffset, trackSize, thumbSize, scrollSize, clientSize) {
|
|
16887
|
+
const maxThumbOffset = trackSize - thumbSize;
|
|
16888
|
+
const maxScroll = Math.max(scrollSize - clientSize, 0);
|
|
16889
|
+
if (maxThumbOffset <= 0 || maxScroll <= 0) return 0;
|
|
16890
|
+
return clamp(thumbOffset / maxThumbOffset, 0, 1) * maxScroll;
|
|
16891
|
+
}
|
|
16892
|
+
function computeScrollFromTrackPoint(point, trackSize, thumbSize, scrollSize, clientSize) {
|
|
16893
|
+
return computeScrollFromThumbOffset(
|
|
16894
|
+
point - thumbSize / 2,
|
|
16895
|
+
trackSize,
|
|
16896
|
+
thumbSize,
|
|
16897
|
+
scrollSize,
|
|
16898
|
+
clientSize
|
|
16899
|
+
);
|
|
16900
|
+
}
|
|
16901
|
+
function isScrollAreaAxisEnabled(direction, axis) {
|
|
16902
|
+
if (direction === "both") return true;
|
|
16903
|
+
return axis === "y" ? direction === "vertical" : direction === "horizontal";
|
|
16904
|
+
}
|
|
16905
|
+
function shouldRenderScrollAreaScrollbar(visibility, direction, axis, axisState) {
|
|
16906
|
+
if (visibility === "hidden") return false;
|
|
16907
|
+
if (!isScrollAreaAxisEnabled(direction, axis)) return false;
|
|
16908
|
+
if (visibility === "always") return true;
|
|
16909
|
+
return axisState.scrollable;
|
|
16910
|
+
}
|
|
16911
|
+
function getScrollAreaShadowSides(state, direction) {
|
|
16912
|
+
const sides = [];
|
|
16913
|
+
if (isScrollAreaAxisEnabled(direction, "y") && state.y.scrollable) {
|
|
16914
|
+
if (!state.y.atStart) sides.push("top");
|
|
16915
|
+
if (!state.y.atEnd) sides.push("bottom");
|
|
16916
|
+
}
|
|
16917
|
+
if (isScrollAreaAxisEnabled(direction, "x") && state.x.scrollable) {
|
|
16918
|
+
if (!state.x.atStart) sides.push("left");
|
|
16919
|
+
if (!state.x.atEnd) sides.push("right");
|
|
16920
|
+
}
|
|
16921
|
+
return sides;
|
|
16922
|
+
}
|
|
16923
|
+
function resolveScrollAreaLength(value) {
|
|
16924
|
+
if (value === void 0 || value === null || value === "") return void 0;
|
|
16925
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
16926
|
+
}
|
|
16927
|
+
function getScrollAreaBoxStyle(options) {
|
|
16928
|
+
const style = {};
|
|
16929
|
+
const height = resolveScrollAreaLength(options.height);
|
|
16930
|
+
const maxHeight = resolveScrollAreaLength(options.maxHeight);
|
|
16931
|
+
const width = resolveScrollAreaLength(options.width);
|
|
16932
|
+
const maxWidth = resolveScrollAreaLength(options.maxWidth);
|
|
16933
|
+
if (height !== void 0) style.height = height;
|
|
16934
|
+
if (maxHeight !== void 0) style.maxHeight = maxHeight;
|
|
16935
|
+
if (width !== void 0) style.width = width;
|
|
16936
|
+
if (maxWidth !== void 0) style.maxWidth = maxWidth;
|
|
16937
|
+
return style;
|
|
16938
|
+
}
|
|
16939
|
+
function getScrollAreaViewportClasses(direction, className) {
|
|
16940
|
+
return [scrollAreaViewportBaseClasses, VIEWPORT_OVERFLOW_CLASSES[direction], className].filter(Boolean).join(" ");
|
|
16941
|
+
}
|
|
16942
|
+
function getScrollAreaContentClasses(direction) {
|
|
16943
|
+
return direction === "vertical" ? scrollAreaContentBaseClasses : `${scrollAreaContentBaseClasses} min-w-max`;
|
|
16944
|
+
}
|
|
16945
|
+
function getScrollAreaScrollbarClasses(axis, size2, visibility) {
|
|
16946
|
+
const thickness = SCROLLBAR_THICKNESS_CLASSES[size2][axis];
|
|
16947
|
+
const fade = visibility === "hover" ? "opacity-0 group-hover/scroll-area:opacity-100 group-focus-within/scroll-area:opacity-100" : "opacity-100";
|
|
16948
|
+
return [scrollAreaScrollbarBaseClasses, SCROLLBAR_PLACEMENT_CLASSES[axis], thickness, fade].join(
|
|
16949
|
+
" "
|
|
16950
|
+
);
|
|
16951
|
+
}
|
|
16952
|
+
function getScrollAreaThumbClasses(axis, dragging) {
|
|
16953
|
+
return [
|
|
16954
|
+
scrollAreaThumbBaseClasses,
|
|
16955
|
+
THUMB_AXIS_CLASSES[axis],
|
|
16956
|
+
dragging ? scrollAreaThumbDraggingClasses : ""
|
|
16957
|
+
].filter(Boolean).join(" ");
|
|
16958
|
+
}
|
|
16959
|
+
function getScrollAreaThumbStyle(axis, axisState) {
|
|
16960
|
+
if (axis === "y") {
|
|
16961
|
+
return { height: `${axisState.thumbSize}px`, top: `${axisState.thumbOffset}px` };
|
|
16962
|
+
}
|
|
16963
|
+
return { width: `${axisState.thumbSize}px`, left: `${axisState.thumbOffset}px` };
|
|
16964
|
+
}
|
|
16965
|
+
function getScrollAreaShadowClasses(side) {
|
|
16966
|
+
return `${scrollAreaShadowBaseClasses} ${SHADOW_SIDE_CLASSES[side]}`;
|
|
16967
|
+
}
|
|
16968
|
+
function observeScrollAreaSize(targets, onResize) {
|
|
16969
|
+
if (typeof ResizeObserver === "undefined") return () => void 0;
|
|
16970
|
+
const observed = targets.filter((target) => Boolean(target));
|
|
16971
|
+
if (observed.length === 0) return () => void 0;
|
|
16972
|
+
const observer = new ResizeObserver(() => onResize());
|
|
16973
|
+
for (const target of observed) {
|
|
16974
|
+
observer.observe(target);
|
|
16975
|
+
}
|
|
16976
|
+
return () => observer.disconnect();
|
|
16977
|
+
}
|
|
16978
|
+
|
|
15244
16979
|
// src/utils/code-editor-utils.ts
|
|
15245
|
-
var codeEditorBaseClasses = "relative font-mono text-sm leading-
|
|
16980
|
+
var codeEditorBaseClasses = "relative font-mono text-sm leading-[1.625rem] border rounded overflow-hidden";
|
|
15246
16981
|
var codeEditorLightClasses = "bg-white border-gray-200 text-gray-900";
|
|
15247
16982
|
var codeEditorDarkClasses = "bg-gray-900 border-gray-700 text-gray-100";
|
|
15248
16983
|
var codeEditorDisabledClasses = "opacity-60 cursor-not-allowed";
|
|
15249
|
-
var codeEditorTextareaClasses = "absolute inset-0 w-full h-full resize-none outline-none bg-transparent text-transparent
|
|
15250
|
-
var codeEditorHighlightClasses = "p-3 font-mono text-sm leading-
|
|
16984
|
+
var codeEditorTextareaClasses = "absolute inset-0 w-full h-full resize-none outline-none bg-transparent text-transparent p-3 font-mono text-sm leading-[1.625rem] whitespace-pre overflow-auto";
|
|
16985
|
+
var codeEditorHighlightClasses = "p-3 font-mono text-sm leading-[1.625rem] whitespace-pre overflow-auto pointer-events-none";
|
|
15251
16986
|
var codeEditorLineNumberClasses = "select-none text-right pr-3 pl-2 border-r min-w-[3rem] flex-shrink-0";
|
|
15252
16987
|
var codeEditorLineNumberLightClasses = "bg-gray-50 border-gray-200 text-gray-400";
|
|
15253
16988
|
var codeEditorLineNumberDarkClasses = "bg-gray-800 border-gray-700 text-gray-500";
|
|
@@ -15256,6 +16991,9 @@ var codeEditorActiveLineDarkClasses = "bg-gray-800/60";
|
|
|
15256
16991
|
function getCodeEditorActiveLineClasses(theme) {
|
|
15257
16992
|
return theme === "dark" ? codeEditorActiveLineDarkClasses : codeEditorActiveLineLightClasses;
|
|
15258
16993
|
}
|
|
16994
|
+
function getCodeEditorCaretClasses(theme) {
|
|
16995
|
+
return theme === "dark" ? "caret-gray-100" : "caret-gray-900";
|
|
16996
|
+
}
|
|
15259
16997
|
function getActiveLineIndex(value, caretPosition) {
|
|
15260
16998
|
const clamped = Math.max(0, Math.min(caretPosition, value.length));
|
|
15261
16999
|
let line = 0;
|
|
@@ -17412,6 +19150,144 @@ async function getCropperResult(cropper) {
|
|
|
17412
19150
|
return await cropper.getCropResult();
|
|
17413
19151
|
}
|
|
17414
19152
|
|
|
19153
|
+
// src/utils/aspect-ratio-utils.ts
|
|
19154
|
+
var ASPECT_RATIO_DEFAULT = "16/9";
|
|
19155
|
+
var ASPECT_RATIO_DEFAULT_NUMERIC = 16 / 9;
|
|
19156
|
+
var ASPECT_RATIO_DEFAULT_STYLE = { aspectRatio: "16 / 9" };
|
|
19157
|
+
var ASPECT_RATIO_FRACTION_PATTERN = /^\s*(\d+(?:\.\d+)?)\s*\/\s*(\d+(?:\.\d+)?)\s*$/;
|
|
19158
|
+
var aspectRatioRootClasses = "tiger-aspect-ratio relative w-full";
|
|
19159
|
+
var aspectRatioContentClasses = "tiger-aspect-ratio-content absolute inset-0";
|
|
19160
|
+
function isValidAspectRatio(value) {
|
|
19161
|
+
return Number.isFinite(value) && value > 0;
|
|
19162
|
+
}
|
|
19163
|
+
function matchValidFraction(ratio) {
|
|
19164
|
+
const fraction = ASPECT_RATIO_FRACTION_PATTERN.exec(ratio);
|
|
19165
|
+
if (!fraction) return null;
|
|
19166
|
+
const numerator = Number(fraction[1]);
|
|
19167
|
+
const denominator = Number(fraction[2]);
|
|
19168
|
+
if (denominator <= 0 || !isValidAspectRatio(numerator) || !isValidAspectRatio(numerator / denominator)) {
|
|
19169
|
+
return null;
|
|
19170
|
+
}
|
|
19171
|
+
return { numerator: fraction[1], denominator: fraction[2] };
|
|
19172
|
+
}
|
|
19173
|
+
function parseAspectRatio(ratio, fallback = ASPECT_RATIO_DEFAULT_NUMERIC) {
|
|
19174
|
+
if (typeof ratio === "number") {
|
|
19175
|
+
return isValidAspectRatio(ratio) ? ratio : fallback;
|
|
19176
|
+
}
|
|
19177
|
+
if (typeof ratio === "string") {
|
|
19178
|
+
const fraction = matchValidFraction(ratio);
|
|
19179
|
+
if (fraction) {
|
|
19180
|
+
return Number(fraction.numerator) / Number(fraction.denominator);
|
|
19181
|
+
}
|
|
19182
|
+
const numeric = Number(ratio.trim());
|
|
19183
|
+
return isValidAspectRatio(numeric) ? numeric : fallback;
|
|
19184
|
+
}
|
|
19185
|
+
return fallback;
|
|
19186
|
+
}
|
|
19187
|
+
function getAspectRatioStyle(ratio) {
|
|
19188
|
+
if (typeof ratio === "string") {
|
|
19189
|
+
const fraction = matchValidFraction(ratio);
|
|
19190
|
+
if (fraction) {
|
|
19191
|
+
return { aspectRatio: fraction.numerator + " / " + fraction.denominator };
|
|
19192
|
+
}
|
|
19193
|
+
const numeric = Number(ratio.trim());
|
|
19194
|
+
if (isValidAspectRatio(numeric)) {
|
|
19195
|
+
return { aspectRatio: String(numeric) };
|
|
19196
|
+
}
|
|
19197
|
+
return ASPECT_RATIO_DEFAULT_STYLE;
|
|
19198
|
+
}
|
|
19199
|
+
if (typeof ratio === "number" && isValidAspectRatio(ratio)) {
|
|
19200
|
+
return { aspectRatio: String(ratio) };
|
|
19201
|
+
}
|
|
19202
|
+
return ASPECT_RATIO_DEFAULT_STYLE;
|
|
19203
|
+
}
|
|
19204
|
+
function getAspectRatioRootClasses(className) {
|
|
19205
|
+
return className ? aspectRatioRootClasses + " " + className : aspectRatioRootClasses;
|
|
19206
|
+
}
|
|
19207
|
+
function getAspectRatioContentClasses(className) {
|
|
19208
|
+
return className ? aspectRatioContentClasses + " " + className : aspectRatioContentClasses;
|
|
19209
|
+
}
|
|
19210
|
+
|
|
19211
|
+
// src/utils/masonry-utils.ts
|
|
19212
|
+
var MASONRY_DEFAULT_COLUMNS = 3;
|
|
19213
|
+
var MASONRY_DEFAULT_GAP = 16;
|
|
19214
|
+
var masonryRootClasses = "tiger-masonry flex w-full items-start";
|
|
19215
|
+
var masonryColumnClasses = "tiger-masonry-column flex min-w-0 flex-1 flex-col";
|
|
19216
|
+
var masonryItemClasses = "tiger-masonry-item";
|
|
19217
|
+
function clampMasonryColumnCount(value) {
|
|
19218
|
+
if (!Number.isFinite(value) || value < 1) return 1;
|
|
19219
|
+
return Math.floor(value);
|
|
19220
|
+
}
|
|
19221
|
+
function clampMasonryGap(value) {
|
|
19222
|
+
if (!Number.isFinite(value) || value < 0) return 0;
|
|
19223
|
+
return value;
|
|
19224
|
+
}
|
|
19225
|
+
function resolveMasonryColumnCount(columns, width) {
|
|
19226
|
+
const resolved = resolveResponsiveValue(
|
|
19227
|
+
columns ?? MASONRY_DEFAULT_COLUMNS,
|
|
19228
|
+
width,
|
|
19229
|
+
MASONRY_DEFAULT_COLUMNS
|
|
19230
|
+
);
|
|
19231
|
+
return clampMasonryColumnCount(resolved);
|
|
19232
|
+
}
|
|
19233
|
+
function resolveMasonryGap(gap, width) {
|
|
19234
|
+
const resolved = resolveResponsiveValue(gap ?? MASONRY_DEFAULT_GAP, width, MASONRY_DEFAULT_GAP);
|
|
19235
|
+
return clampMasonryGap(resolved);
|
|
19236
|
+
}
|
|
19237
|
+
function distributeMasonryItems(heights, columnCount) {
|
|
19238
|
+
const count = clampMasonryColumnCount(columnCount);
|
|
19239
|
+
const columns = Array.from({ length: count }, () => []);
|
|
19240
|
+
const totals = new Array(count).fill(0);
|
|
19241
|
+
heights.forEach((rawHeight, index) => {
|
|
19242
|
+
const height = Number.isFinite(rawHeight) ? rawHeight : 0;
|
|
19243
|
+
let target = 0;
|
|
19244
|
+
for (let column = 1; column < count; column++) {
|
|
19245
|
+
if (totals[column] < totals[target]) target = column;
|
|
19246
|
+
}
|
|
19247
|
+
columns[target].push(index);
|
|
19248
|
+
totals[target] += height;
|
|
19249
|
+
});
|
|
19250
|
+
return columns;
|
|
19251
|
+
}
|
|
19252
|
+
function moduloDistributeMasonryItems(itemCount, columnCount) {
|
|
19253
|
+
const count = clampMasonryColumnCount(columnCount);
|
|
19254
|
+
const columns = Array.from({ length: count }, () => []);
|
|
19255
|
+
const total = Number.isFinite(itemCount) && itemCount > 0 ? Math.floor(itemCount) : 0;
|
|
19256
|
+
for (let index = 0; index < total; index++) {
|
|
19257
|
+
columns[index % count].push(index);
|
|
19258
|
+
}
|
|
19259
|
+
return columns;
|
|
19260
|
+
}
|
|
19261
|
+
function computeMasonryColumnHeights(heights, columns, gap) {
|
|
19262
|
+
const spacing = clampMasonryGap(gap);
|
|
19263
|
+
return columns.map((column) => {
|
|
19264
|
+
const total = column.reduce(
|
|
19265
|
+
(sum, index) => sum + (Number.isFinite(heights[index]) ? heights[index] : 0),
|
|
19266
|
+
0
|
|
19267
|
+
);
|
|
19268
|
+
return total + Math.max(column.length - 1, 0) * spacing;
|
|
19269
|
+
});
|
|
19270
|
+
}
|
|
19271
|
+
function readMasonryItemHeight(element) {
|
|
19272
|
+
const height = element.getBoundingClientRect().height;
|
|
19273
|
+
return Number.isFinite(height) ? height : 0;
|
|
19274
|
+
}
|
|
19275
|
+
function getMasonryRootClasses(className) {
|
|
19276
|
+
return [masonryRootClasses, className].filter(Boolean).join(" ");
|
|
19277
|
+
}
|
|
19278
|
+
function getMasonryColumnClasses(className) {
|
|
19279
|
+
return [masonryColumnClasses, className].filter(Boolean).join(" ");
|
|
19280
|
+
}
|
|
19281
|
+
function getMasonryItemClasses(className) {
|
|
19282
|
+
return [masonryItemClasses, className].filter(Boolean).join(" ");
|
|
19283
|
+
}
|
|
19284
|
+
function getMasonryGapStyle(gap) {
|
|
19285
|
+
return { gap: `${clampMasonryGap(gap)}px` };
|
|
19286
|
+
}
|
|
19287
|
+
function getMasonryColumnStyle(gap) {
|
|
19288
|
+
return { rowGap: `${clampMasonryGap(gap)}px` };
|
|
19289
|
+
}
|
|
19290
|
+
|
|
17415
19291
|
// src/theme-runtime/checkbox.ts
|
|
17416
19292
|
var checkboxSizeClasses2 = {
|
|
17417
19293
|
sm: "w-4 h-4",
|
|
@@ -19056,12 +20932,17 @@ var designTokens = {
|
|
|
19056
20932
|
};
|
|
19057
20933
|
|
|
19058
20934
|
// src/index.ts
|
|
19059
|
-
var version = "2.
|
|
20935
|
+
var version = "2.1.0";
|
|
19060
20936
|
export {
|
|
19061
20937
|
ANIMATION_DURATION_FAST_MS,
|
|
19062
20938
|
ANIMATION_DURATION_MS,
|
|
19063
20939
|
ANIMATION_DURATION_SLOW_MS,
|
|
20940
|
+
ASPECT_RATIO_DEFAULT,
|
|
20941
|
+
CASCADER_DEFAULT_LIST_HEIGHT,
|
|
19064
20942
|
COMPONENT_MOTION_VARS,
|
|
20943
|
+
CONTEXT_MENU_ENTER_CLASS,
|
|
20944
|
+
CONTEXT_MENU_POINT_SIZE,
|
|
20945
|
+
CONTEXT_MENU_SUB_CHEVRON_PATH,
|
|
19065
20946
|
COUNTDOWN_DEFAULT_FORMAT,
|
|
19066
20947
|
COUNTDOWN_DEFAULT_INTERVAL_MS,
|
|
19067
20948
|
CROP_HANDLES,
|
|
@@ -19076,16 +20957,41 @@ export {
|
|
|
19076
20957
|
DEFAULT_FORM_VALIDATION_LABELS,
|
|
19077
20958
|
DEFAULT_FORM_WIZARD_LABELS,
|
|
19078
20959
|
DEFAULT_HEATMAP_CANVAS_THRESHOLD,
|
|
20960
|
+
DEFAULT_HIGHLIGHT_CASE_SENSITIVE,
|
|
20961
|
+
DEFAULT_HIGHLIGHT_GLOBAL,
|
|
20962
|
+
DEFAULT_IMAGE_COMPARE_ARIA_LABEL,
|
|
20963
|
+
DEFAULT_IMAGE_COMPARE_FIT,
|
|
20964
|
+
DEFAULT_IMAGE_COMPARE_ORIENTATION,
|
|
20965
|
+
DEFAULT_IMAGE_COMPARE_POSITION,
|
|
20966
|
+
DEFAULT_IMAGE_COMPARE_STEP,
|
|
19079
20967
|
DEFAULT_IMAGE_EDITOR_LABELS,
|
|
19080
20968
|
DEFAULT_IMAGE_VIEWER_LABELS,
|
|
20969
|
+
DEFAULT_INPUT_OTP_LABELS,
|
|
20970
|
+
DEFAULT_KBD_SEPARATOR,
|
|
20971
|
+
DEFAULT_KBD_SIZE,
|
|
20972
|
+
DEFAULT_KBD_VARIANT,
|
|
20973
|
+
DEFAULT_LOADING_BAR_ARIA_LABEL,
|
|
20974
|
+
DEFAULT_LOADING_BAR_COLOR,
|
|
20975
|
+
DEFAULT_LOADING_BAR_HEIGHT,
|
|
19081
20976
|
DEFAULT_MARKDOWN_EDITOR_LABELS,
|
|
20977
|
+
DEFAULT_MARQUEE_ARIA_LABEL,
|
|
20978
|
+
DEFAULT_MARQUEE_DIRECTION,
|
|
20979
|
+
DEFAULT_MARQUEE_DURATION_MS,
|
|
20980
|
+
DEFAULT_MARQUEE_GAP_PX,
|
|
20981
|
+
DEFAULT_MARQUEE_PAUSE_ON_HOVER,
|
|
20982
|
+
DEFAULT_MARQUEE_REPEAT,
|
|
20983
|
+
DEFAULT_MASK_TOKENS,
|
|
19082
20984
|
DEFAULT_PAGINATION_LABELS,
|
|
19083
20985
|
DEFAULT_RATE_LABELS,
|
|
19084
20986
|
DEFAULT_RICH_TEXT_EDITOR_LABELS,
|
|
19085
20987
|
DEFAULT_SELECT_LABELS,
|
|
20988
|
+
DEFAULT_SPLIT_BUTTON_SIZE,
|
|
20989
|
+
DEFAULT_SPLIT_BUTTON_TRIGGER_ARIA_LABEL,
|
|
20990
|
+
DEFAULT_SPLIT_BUTTON_VARIANT,
|
|
19086
20991
|
DEFAULT_STATUS_LABELS,
|
|
19087
20992
|
DEFAULT_TABLE_LABELS,
|
|
19088
20993
|
DEFAULT_TABS_LABELS,
|
|
20994
|
+
DEFAULT_TAGS_INPUT_LABELS,
|
|
19089
20995
|
DEFAULT_TASK_BOARD_LABELS,
|
|
19090
20996
|
DEFAULT_TIME_PICKER_LABELS,
|
|
19091
20997
|
DEFAULT_TOUR_LABELS,
|
|
@@ -19110,6 +21016,21 @@ export {
|
|
|
19110
21016
|
FLOATING_OVERLAY_Z_INDEX,
|
|
19111
21017
|
FORM_VALIDATION_PRESETS,
|
|
19112
21018
|
GAUGE_ANIMATION_DURATION_MS,
|
|
21019
|
+
IMAGE_COMPARE_POSITION_VAR,
|
|
21020
|
+
LOADING_BAR_CONTAINER_ID,
|
|
21021
|
+
LOADING_BAR_CONTAINER_ROOT_ID,
|
|
21022
|
+
LOADING_BAR_FINISH_HIDE_DELAY_MS,
|
|
21023
|
+
LOADING_BAR_MAX_TRICKLE_PERCENTAGE,
|
|
21024
|
+
LOADING_BAR_START_PERCENTAGE,
|
|
21025
|
+
LOADING_BAR_TRICKLE_INTERVAL_MS,
|
|
21026
|
+
MARQUEE_COPIES_VAR,
|
|
21027
|
+
MARQUEE_CSS,
|
|
21028
|
+
MARQUEE_DURATION_VAR,
|
|
21029
|
+
MARQUEE_GAP_VAR,
|
|
21030
|
+
MARQUEE_STYLE_ID,
|
|
21031
|
+
MASONRY_DEFAULT_COLUMNS,
|
|
21032
|
+
MASONRY_DEFAULT_GAP,
|
|
21033
|
+
MAX_MARQUEE_REPEAT,
|
|
19113
21034
|
MODERN_BASE_TOKENS_DARK,
|
|
19114
21035
|
MODERN_BASE_TOKENS_LIGHT,
|
|
19115
21036
|
MODERN_OVERRIDE_TOKENS_DARK,
|
|
@@ -19120,6 +21041,13 @@ export {
|
|
|
19120
21041
|
MOTION_DURATION_TOKEN_VARS,
|
|
19121
21042
|
MOTION_EASING_TOKEN_FALLBACKS,
|
|
19122
21043
|
MOTION_EASING_TOKEN_VARS,
|
|
21044
|
+
NAVIGATION_MENU_BAR_ITEM_ATTR,
|
|
21045
|
+
NAVIGATION_MENU_CHEVRON_PATH,
|
|
21046
|
+
NAVIGATION_MENU_DEFAULT_DELAY_DURATION,
|
|
21047
|
+
NAVIGATION_MENU_DEFAULT_OFFSET,
|
|
21048
|
+
NAVIGATION_MENU_DEFAULT_SKIP_DELAY_DURATION,
|
|
21049
|
+
NAVIGATION_MENU_ENTER_CLASS,
|
|
21050
|
+
PAGE_HEADER_DEFAULT_BACK_ARIA_LABEL,
|
|
19123
21051
|
PAGINATION_FULL_MODE_PAGE_THRESHOLD,
|
|
19124
21052
|
PIE_BASE_SHADOW,
|
|
19125
21053
|
PIE_EMPHASIS_SHADOW,
|
|
@@ -19129,6 +21057,7 @@ export {
|
|
|
19129
21057
|
RESIZE_KEYBOARD_STEP,
|
|
19130
21058
|
SCATTER_ENTRANCE_CLASS,
|
|
19131
21059
|
SCATTER_ENTRANCE_KEYFRAMES,
|
|
21060
|
+
SCROLL_AREA_MIN_THUMB_SIZE,
|
|
19132
21061
|
SHAKE_CLASS,
|
|
19133
21062
|
STATISTIC_ANIMATION_DURATION_MS,
|
|
19134
21063
|
SVG_ANIMATION_CLASSES,
|
|
@@ -19148,6 +21077,8 @@ export {
|
|
|
19148
21077
|
TRANSITION_DURATIONS,
|
|
19149
21078
|
TRANSITION_OPACITY,
|
|
19150
21079
|
TRANSITION_TRANSFORM,
|
|
21080
|
+
TREE_SELECT_DEFAULT_HEIGHT,
|
|
21081
|
+
TREE_SELECT_DEFAULT_ITEM_HEIGHT,
|
|
19151
21082
|
ThemeManager,
|
|
19152
21083
|
VIEW_TRANSITION_CSS,
|
|
19153
21084
|
WEEKDAYS,
|
|
@@ -19162,6 +21093,7 @@ export {
|
|
|
19162
21093
|
ZH_CN_FORM_WIZARD_LABELS,
|
|
19163
21094
|
ZH_CN_IMAGE_EDITOR_LABELS,
|
|
19164
21095
|
ZH_CN_IMAGE_VIEWER_LABELS,
|
|
21096
|
+
ZH_CN_INPUT_OTP_LABELS,
|
|
19165
21097
|
ZH_CN_MARKDOWN_EDITOR_LABELS,
|
|
19166
21098
|
ZH_CN_PAGINATION_LABELS,
|
|
19167
21099
|
ZH_CN_RATE_LABELS,
|
|
@@ -19170,6 +21102,7 @@ export {
|
|
|
19170
21102
|
ZH_CN_STATUS_LABELS,
|
|
19171
21103
|
ZH_CN_TABLE_LABELS,
|
|
19172
21104
|
ZH_CN_TABS_LABELS,
|
|
21105
|
+
ZH_CN_TAGS_INPUT_LABELS,
|
|
19173
21106
|
ZH_CN_TASK_BOARD_LABELS,
|
|
19174
21107
|
ZH_CN_TIME_PICKER_LABELS,
|
|
19175
21108
|
ZH_CN_TOUR_LABELS,
|
|
@@ -19186,6 +21119,7 @@ export {
|
|
|
19186
21119
|
activityItemTitleGroupClasses,
|
|
19187
21120
|
addDays,
|
|
19188
21121
|
addMonths,
|
|
21122
|
+
addTags,
|
|
19189
21123
|
addYears,
|
|
19190
21124
|
affixWrapperClasses,
|
|
19191
21125
|
alertBannerClasses,
|
|
@@ -19201,6 +21135,7 @@ export {
|
|
|
19201
21135
|
alertIconSizeClasses,
|
|
19202
21136
|
alertSizeClasses,
|
|
19203
21137
|
alertTitleSizeClasses,
|
|
21138
|
+
alignTreeSelectVirtualScroll,
|
|
19204
21139
|
anchorAffixClasses,
|
|
19205
21140
|
anchorBaseClasses,
|
|
19206
21141
|
anchorInkActiveHorizontalClasses,
|
|
@@ -19219,9 +21154,15 @@ export {
|
|
|
19219
21154
|
applyFileDragReorder,
|
|
19220
21155
|
applyFloatingStyles,
|
|
19221
21156
|
applyMarkdownToolbarAction,
|
|
21157
|
+
applyMaskInput,
|
|
19222
21158
|
applyNumberKeyboardInput,
|
|
21159
|
+
applyOtpBackspace,
|
|
21160
|
+
applyOtpCharInput,
|
|
21161
|
+
applyOtpDelete,
|
|
19223
21162
|
applyWheelZoom,
|
|
19224
21163
|
archiveIcon,
|
|
21164
|
+
aspectRatioContentClasses,
|
|
21165
|
+
aspectRatioRootClasses,
|
|
19225
21166
|
autoCompleteBaseClasses,
|
|
19226
21167
|
autoCompleteDropdownClasses,
|
|
19227
21168
|
autoCompleteEmptyStateClasses,
|
|
@@ -19359,6 +21300,9 @@ export {
|
|
|
19359
21300
|
clampDimensions,
|
|
19360
21301
|
clampImageAnnotationPoint,
|
|
19361
21302
|
clampImageAnnotationUnit,
|
|
21303
|
+
clampLoadingBarPercentage,
|
|
21304
|
+
clampMasonryColumnCount,
|
|
21305
|
+
clampMasonryGap,
|
|
19362
21306
|
clampPaneSize,
|
|
19363
21307
|
clampPercentage,
|
|
19364
21308
|
clampScale,
|
|
@@ -19436,9 +21380,14 @@ export {
|
|
|
19436
21380
|
computeGanttLayout,
|
|
19437
21381
|
computeGaugeTicks,
|
|
19438
21382
|
computeHeatmapCells,
|
|
21383
|
+
computeMasonryColumnHeights,
|
|
19439
21384
|
computeOrgChartLayout,
|
|
19440
21385
|
computePieHoverOffset,
|
|
19441
21386
|
computePieLabelLine,
|
|
21387
|
+
computeScrollAreaAxisState,
|
|
21388
|
+
computeScrollAreaState,
|
|
21389
|
+
computeScrollFromThumbOffset,
|
|
21390
|
+
computeScrollFromTrackPoint,
|
|
19442
21391
|
computeSunburstArcs,
|
|
19443
21392
|
computeTreeMapNodes,
|
|
19444
21393
|
constrainCropRect,
|
|
@@ -19448,6 +21397,7 @@ export {
|
|
|
19448
21397
|
containerPaddingClasses,
|
|
19449
21398
|
copyTextToClipboard,
|
|
19450
21399
|
countLines,
|
|
21400
|
+
countMaskTokens,
|
|
19451
21401
|
countdownBaseClasses,
|
|
19452
21402
|
countdownPrefixClasses,
|
|
19453
21403
|
countdownSuffixClasses,
|
|
@@ -19473,6 +21423,7 @@ export {
|
|
|
19473
21423
|
createDefaultTransform,
|
|
19474
21424
|
createDocumentDragSession,
|
|
19475
21425
|
createDragState,
|
|
21426
|
+
createEmptyScrollAreaState,
|
|
19476
21427
|
createFloatingIdFactory,
|
|
19477
21428
|
createFocusTrap,
|
|
19478
21429
|
createFormConditionDependencies,
|
|
@@ -19487,9 +21438,11 @@ export {
|
|
|
19487
21438
|
createImageAnnotationBox,
|
|
19488
21439
|
createImageAnnotationPath,
|
|
19489
21440
|
createInfiniteScrollObserver,
|
|
21441
|
+
createInitialLoadingBarState,
|
|
19490
21442
|
createInstanceCounter,
|
|
19491
21443
|
createLinePath,
|
|
19492
21444
|
createLinearScale,
|
|
21445
|
+
createLoadingBarController,
|
|
19493
21446
|
createLongPressController,
|
|
19494
21447
|
createMotionSequence,
|
|
19495
21448
|
createNotificationStackUpdateScheduler,
|
|
@@ -19593,6 +21546,8 @@ export {
|
|
|
19593
21546
|
descriptionsWrapperClasses,
|
|
19594
21547
|
designTokens,
|
|
19595
21548
|
devWarn,
|
|
21549
|
+
distributeMasonryItems,
|
|
21550
|
+
distributeOtpPaste,
|
|
19596
21551
|
dotSizeClasses,
|
|
19597
21552
|
dotsVariantConfig,
|
|
19598
21553
|
downloadChartBlob,
|
|
@@ -19615,6 +21570,7 @@ export {
|
|
|
19615
21570
|
ensureBarMinHeight,
|
|
19616
21571
|
errorCircleSolidIcon20PathD,
|
|
19617
21572
|
escapeHighlightHtml,
|
|
21573
|
+
escapeHighlightKeyword,
|
|
19618
21574
|
escapeMarkdownHtml,
|
|
19619
21575
|
evaluateFormCondition,
|
|
19620
21576
|
evaluateFormConditions,
|
|
@@ -19626,6 +21582,8 @@ export {
|
|
|
19626
21582
|
exportTableToExcel,
|
|
19627
21583
|
extendedIcons,
|
|
19628
21584
|
extractMentionQuery,
|
|
21585
|
+
extractRawValue,
|
|
21586
|
+
extractTagCandidates,
|
|
19629
21587
|
fileManagerBreadcrumbClasses,
|
|
19630
21588
|
fileManagerBreadcrumbItemClasses,
|
|
19631
21589
|
fileManagerBreadcrumbSeparatorClasses,
|
|
@@ -19662,6 +21620,7 @@ export {
|
|
|
19662
21620
|
findCascaderOption,
|
|
19663
21621
|
findColumnFromPoint,
|
|
19664
21622
|
findFirstEnabledIndex,
|
|
21623
|
+
findHighlightRanges,
|
|
19665
21624
|
findHotkeyMatch,
|
|
19666
21625
|
findLastEnabledIndex,
|
|
19667
21626
|
findMarkdownHotkeyMatch,
|
|
@@ -19706,12 +21665,17 @@ export {
|
|
|
19706
21665
|
formatGanttDate,
|
|
19707
21666
|
formatInputNumberDisplay,
|
|
19708
21667
|
formatIntlNumber,
|
|
21668
|
+
formatKbdCombo,
|
|
21669
|
+
formatKbdSeparatorText,
|
|
21670
|
+
formatMaskValue,
|
|
19709
21671
|
formatMonthYear,
|
|
21672
|
+
formatOtpSlotLabel,
|
|
19710
21673
|
formatPageAriaLabel,
|
|
19711
21674
|
formatPaginationPageIndicator,
|
|
19712
21675
|
formatPaginationTotal,
|
|
19713
21676
|
formatPrecision,
|
|
19714
21677
|
formatProgressText,
|
|
21678
|
+
formatRemoveTagLabel,
|
|
19715
21679
|
formatStatisticValue,
|
|
19716
21680
|
formatTableSelectRowAriaLabel,
|
|
19717
21681
|
formatTableSortByText,
|
|
@@ -19756,6 +21720,9 @@ export {
|
|
|
19756
21720
|
getAnchoredOverlayTabTarget,
|
|
19757
21721
|
getAreaGradientPrefix,
|
|
19758
21722
|
getArrowStyles,
|
|
21723
|
+
getAspectRatioContentClasses,
|
|
21724
|
+
getAspectRatioRootClasses,
|
|
21725
|
+
getAspectRatioStyle,
|
|
19759
21726
|
getAutoCompleteInputClasses,
|
|
19760
21727
|
getAutoCompleteOptionClasses,
|
|
19761
21728
|
getAutoExpandKeys,
|
|
@@ -19798,6 +21765,9 @@ export {
|
|
|
19798
21765
|
getCascaderOptionPath,
|
|
19799
21766
|
getCascaderOptionsAtLevel,
|
|
19800
21767
|
getCascaderTriggerClasses,
|
|
21768
|
+
getCascaderVirtualAlignScrollTop,
|
|
21769
|
+
getCascaderVirtualItemHeight,
|
|
21770
|
+
getCascaderVirtualRange,
|
|
19801
21771
|
getChartAnimationStyle,
|
|
19802
21772
|
getChartAxisTickCacheSize,
|
|
19803
21773
|
getChartAxisTicks,
|
|
@@ -19818,6 +21788,7 @@ export {
|
|
|
19818
21788
|
getCodeBlockContainerClasses,
|
|
19819
21789
|
getCodeBlockCopyButtonClasses,
|
|
19820
21790
|
getCodeEditorActiveLineClasses,
|
|
21791
|
+
getCodeEditorCaretClasses,
|
|
19821
21792
|
getCodeEditorContainerClasses,
|
|
19822
21793
|
getColGutterClasses,
|
|
19823
21794
|
getColMergedStyleVars,
|
|
@@ -19839,6 +21810,16 @@ export {
|
|
|
19839
21810
|
getContainerClasses,
|
|
19840
21811
|
getContainerHeight,
|
|
19841
21812
|
getContainerScrollTop,
|
|
21813
|
+
getContextMenuContainerClasses,
|
|
21814
|
+
getContextMenuItemClasses,
|
|
21815
|
+
getContextMenuMenuClasses,
|
|
21816
|
+
getContextMenuOpenPoint,
|
|
21817
|
+
getContextMenuPointFromElement,
|
|
21818
|
+
getContextMenuPointFromEvent,
|
|
21819
|
+
getContextMenuPointStyle,
|
|
21820
|
+
getContextMenuSubChevronClasses,
|
|
21821
|
+
getContextMenuSubTriggerClasses,
|
|
21822
|
+
getContextMenuTriggerClasses,
|
|
19842
21823
|
getCountdownParts,
|
|
19843
21824
|
getCountdownRemaining,
|
|
19844
21825
|
getCountdownTitleClasses,
|
|
@@ -19938,6 +21919,9 @@ export {
|
|
|
19938
21919
|
getGroupHeaderCellClasses,
|
|
19939
21920
|
getGutterStyles,
|
|
19940
21921
|
getHeatmapCellIndexAtPoint,
|
|
21922
|
+
getHighlightMarkClasses,
|
|
21923
|
+
getHighlightRootClasses,
|
|
21924
|
+
getHighlightSegments,
|
|
19941
21925
|
getIconDefinition,
|
|
19942
21926
|
getImageAnnotationCenter,
|
|
19943
21927
|
getImageAnnotationPathData,
|
|
@@ -19946,6 +21930,19 @@ export {
|
|
|
19946
21930
|
getImageAnnotationStrokeColor,
|
|
19947
21931
|
getImageAnnotationToolButtonClasses,
|
|
19948
21932
|
getImageAnnotationToolLabel,
|
|
21933
|
+
getImageCompareAfterClasses,
|
|
21934
|
+
getImageCompareBeforeClasses,
|
|
21935
|
+
getImageCompareClipStyle,
|
|
21936
|
+
getImageCompareHandleClasses,
|
|
21937
|
+
getImageCompareHandleStyle,
|
|
21938
|
+
getImageCompareImgClasses,
|
|
21939
|
+
getImageCompareKeyboardPosition,
|
|
21940
|
+
getImageCompareKnobClasses,
|
|
21941
|
+
getImageCompareLineClasses,
|
|
21942
|
+
getImageComparePointerClientPoint,
|
|
21943
|
+
getImageComparePositionFromPointer,
|
|
21944
|
+
getImageCompareRootClasses,
|
|
21945
|
+
getImageCompareRootStyle,
|
|
19949
21946
|
getImageEditorLabels,
|
|
19950
21947
|
getImageGroupClasses,
|
|
19951
21948
|
getImageImgClasses,
|
|
@@ -19973,11 +21970,15 @@ export {
|
|
|
19973
21970
|
getInputNumberStatusClasses,
|
|
19974
21971
|
getInputNumberStepButtonClasses,
|
|
19975
21972
|
getInputNumberWrapperClasses,
|
|
21973
|
+
getInputOTPLabels,
|
|
19976
21974
|
getInputPasswordToggleClasses,
|
|
19977
21975
|
getInputWrapperClasses,
|
|
19978
21976
|
getIntlPluralCategory,
|
|
19979
21977
|
getJustifyClasses,
|
|
19980
21978
|
getKanbanContainerClasses,
|
|
21979
|
+
getKbdParts,
|
|
21980
|
+
getKbdRootClasses,
|
|
21981
|
+
getKbdVariantClasses,
|
|
19981
21982
|
getLayoutContentClasses,
|
|
19982
21983
|
getLayoutHeaderClasses,
|
|
19983
21984
|
getLeafKeys,
|
|
@@ -19989,6 +21990,10 @@ export {
|
|
|
19989
21990
|
getListHeaderFooterClasses,
|
|
19990
21991
|
getListItemClasses,
|
|
19991
21992
|
getLoadingBarClasses,
|
|
21993
|
+
getLoadingBarColorClasses,
|
|
21994
|
+
getLoadingBarContainerClasses,
|
|
21995
|
+
getLoadingBarFillClasses,
|
|
21996
|
+
getLoadingBarFillStyle,
|
|
19992
21997
|
getLoadingBarsWrapperClasses,
|
|
19993
21998
|
getLoadingClasses,
|
|
19994
21999
|
getLoadingDotClasses,
|
|
@@ -20001,6 +22006,16 @@ export {
|
|
|
20001
22006
|
getMarkdownEditorLabels,
|
|
20002
22007
|
getMarkdownToolbarButtonClasses,
|
|
20003
22008
|
getMarkdownToolbarButtons,
|
|
22009
|
+
getMarqueeContentClasses,
|
|
22010
|
+
getMarqueeRootClasses,
|
|
22011
|
+
getMarqueeTrackClasses,
|
|
22012
|
+
getMarqueeTrackStyle,
|
|
22013
|
+
getMaskCaretPosition,
|
|
22014
|
+
getMasonryColumnClasses,
|
|
22015
|
+
getMasonryColumnStyle,
|
|
22016
|
+
getMasonryGapStyle,
|
|
22017
|
+
getMasonryItemClasses,
|
|
22018
|
+
getMasonryRootClasses,
|
|
20004
22019
|
getMentionsInputClasses,
|
|
20005
22020
|
getMentionsOptionClasses,
|
|
20006
22021
|
getMenuButtons,
|
|
@@ -20015,6 +22030,14 @@ export {
|
|
|
20015
22030
|
getModalContentClasses,
|
|
20016
22031
|
getMonthDays,
|
|
20017
22032
|
getMonthNames,
|
|
22033
|
+
getNavigationMenuBarItems,
|
|
22034
|
+
getNavigationMenuChevronClasses,
|
|
22035
|
+
getNavigationMenuClasses,
|
|
22036
|
+
getNavigationMenuContentClasses,
|
|
22037
|
+
getNavigationMenuItemClasses,
|
|
22038
|
+
getNavigationMenuLinkClasses,
|
|
22039
|
+
getNavigationMenuListClasses,
|
|
22040
|
+
getNavigationMenuTriggerClasses,
|
|
20018
22041
|
getNextActiveKey,
|
|
20019
22042
|
getNextColorSwatchIndex,
|
|
20020
22043
|
getNextImageAnnotationTool,
|
|
@@ -20033,6 +22056,13 @@ export {
|
|
|
20033
22056
|
getOrgChartLinkPath,
|
|
20034
22057
|
getOrgChartNodeAriaLabel,
|
|
20035
22058
|
getOrgChartNodeClasses,
|
|
22059
|
+
getOtpContainerClasses,
|
|
22060
|
+
getOtpErrorClasses,
|
|
22061
|
+
getOtpSeparatorClasses,
|
|
22062
|
+
getOtpSeparatorIndices,
|
|
22063
|
+
getOtpSlotClasses,
|
|
22064
|
+
getPageHeaderBackButtonClasses,
|
|
22065
|
+
getPageHeaderRootClasses,
|
|
20036
22066
|
getPageNumbers,
|
|
20037
22067
|
getPageRange,
|
|
20038
22068
|
getPageSizeSelectorClasses,
|
|
@@ -20106,6 +22136,14 @@ export {
|
|
|
20106
22136
|
getScatterHoverShadow,
|
|
20107
22137
|
getScatterHoverSize,
|
|
20108
22138
|
getScatterPointPath,
|
|
22139
|
+
getScrollAreaBoxStyle,
|
|
22140
|
+
getScrollAreaContentClasses,
|
|
22141
|
+
getScrollAreaScrollbarClasses,
|
|
22142
|
+
getScrollAreaShadowClasses,
|
|
22143
|
+
getScrollAreaShadowSides,
|
|
22144
|
+
getScrollAreaThumbClasses,
|
|
22145
|
+
getScrollAreaThumbStyle,
|
|
22146
|
+
getScrollAreaViewportClasses,
|
|
20109
22147
|
getScrollSpyItemByHref,
|
|
20110
22148
|
getScrollSpyItemByKey,
|
|
20111
22149
|
getScrollSpyItemClasses,
|
|
@@ -20144,6 +22182,9 @@ export {
|
|
|
20144
22182
|
getSpaceStyle,
|
|
20145
22183
|
getSpanClasses,
|
|
20146
22184
|
getSpinnerSVG,
|
|
22185
|
+
getSplitButtonPrimaryClasses,
|
|
22186
|
+
getSplitButtonRootClasses,
|
|
22187
|
+
getSplitButtonTriggerClasses,
|
|
20147
22188
|
getSplitterContainerClasses,
|
|
20148
22189
|
getSplitterGutterClasses,
|
|
20149
22190
|
getSplitterGutterHandleClasses,
|
|
@@ -20199,6 +22240,12 @@ export {
|
|
|
20199
22240
|
getTabsContainerClasses,
|
|
20200
22241
|
getTabsLabels,
|
|
20201
22242
|
getTagVariantClasses,
|
|
22243
|
+
getTagsInputClearButtonClasses,
|
|
22244
|
+
getTagsInputContainerClasses,
|
|
22245
|
+
getTagsInputErrorClasses,
|
|
22246
|
+
getTagsInputHighlightClasses,
|
|
22247
|
+
getTagsInputInnerInputClasses,
|
|
22248
|
+
getTagsInputLabels,
|
|
20202
22249
|
getTaskBoardLabels,
|
|
20203
22250
|
getTextClasses,
|
|
20204
22251
|
getThemeColor,
|
|
@@ -20240,8 +22287,11 @@ export {
|
|
|
20240
22287
|
getTreeNodeClasses,
|
|
20241
22288
|
getTreeNodeExpandIconClasses,
|
|
20242
22289
|
getTreeSelectDisplayLabel,
|
|
22290
|
+
getTreeSelectDropdownClasses,
|
|
20243
22291
|
getTreeSelectNodeClasses,
|
|
20244
22292
|
getTreeSelectTriggerClasses,
|
|
22293
|
+
getTreeSelectVirtualAlignScrollTop,
|
|
22294
|
+
getTreeSelectVisibleIndex,
|
|
20245
22295
|
getUploadButtonClasses,
|
|
20246
22296
|
getUploadDataTransferFiles,
|
|
20247
22297
|
getUploadLabels,
|
|
@@ -20275,6 +22325,7 @@ export {
|
|
|
20275
22325
|
handleDragStart,
|
|
20276
22326
|
handleDrop,
|
|
20277
22327
|
handleMenuNavigation,
|
|
22328
|
+
handleMenubarNavigation,
|
|
20278
22329
|
handleNodeCheck,
|
|
20279
22330
|
handleTabKey,
|
|
20280
22331
|
handleUploadDragLeave,
|
|
@@ -20282,10 +22333,13 @@ export {
|
|
|
20282
22333
|
handleUploadDrop,
|
|
20283
22334
|
hasErrors,
|
|
20284
22335
|
hasGutter,
|
|
22336
|
+
hasPageHeaderHeadingContent,
|
|
20285
22337
|
hasTableSelectionColumn,
|
|
20286
22338
|
helpCircleIcon,
|
|
20287
22339
|
hexToRgb2 as hexToRgb,
|
|
20288
22340
|
highContrastTheme,
|
|
22341
|
+
highlightMarkClasses,
|
|
22342
|
+
highlightRootClasses,
|
|
20289
22343
|
hsvToRgb,
|
|
20290
22344
|
icon16ViewBox,
|
|
20291
22345
|
icon20ViewBox,
|
|
@@ -20311,6 +22365,20 @@ export {
|
|
|
20311
22365
|
imageAnnotationToolButtonClasses,
|
|
20312
22366
|
imageAnnotationToolbarClasses,
|
|
20313
22367
|
imageBaseClasses,
|
|
22368
|
+
imageCompareAfterClasses,
|
|
22369
|
+
imageCompareBeforeClasses,
|
|
22370
|
+
imageCompareDisabledClasses,
|
|
22371
|
+
imageCompareHandleClasses,
|
|
22372
|
+
imageCompareHandleDisabledClasses,
|
|
22373
|
+
imageCompareHandleHorizontalClasses,
|
|
22374
|
+
imageCompareHandleVerticalClasses,
|
|
22375
|
+
imageCompareHorizontalClasses,
|
|
22376
|
+
imageCompareKnobClasses,
|
|
22377
|
+
imageCompareLineClasses,
|
|
22378
|
+
imageCompareLineHorizontalClasses,
|
|
22379
|
+
imageCompareLineVerticalClasses,
|
|
22380
|
+
imageCompareRootClasses,
|
|
22381
|
+
imageCompareVerticalClasses,
|
|
20314
22382
|
imageCropperContainerClasses,
|
|
20315
22383
|
imageCropperDragAreaClasses,
|
|
20316
22384
|
imageCropperGuideClasses,
|
|
@@ -20343,9 +22411,13 @@ export {
|
|
|
20343
22411
|
infiniteScrollEndClasses,
|
|
20344
22412
|
infiniteScrollLoaderClasses,
|
|
20345
22413
|
infiniteScrollSentinelClasses,
|
|
22414
|
+
initNavigationMenuRovingTabIndex,
|
|
20346
22415
|
initRovingTabIndex,
|
|
22416
|
+
injectContextMenuStyles,
|
|
20347
22417
|
injectDropdownStyles,
|
|
20348
22418
|
injectLoadingAnimationStyles,
|
|
22419
|
+
injectMarqueeStyles,
|
|
22420
|
+
injectNavigationMenuStyles,
|
|
20349
22421
|
injectShakeStyle,
|
|
20350
22422
|
injectSvgAnimationStyles,
|
|
20351
22423
|
injectViewTransitionStyles,
|
|
@@ -20372,6 +22444,7 @@ export {
|
|
|
20372
22444
|
isCascaderOptionExpandable,
|
|
20373
22445
|
isColorSwatchSelected,
|
|
20374
22446
|
isContentEmpty,
|
|
22447
|
+
isContextMenuKeyboardEvent,
|
|
20375
22448
|
isCrossContainerDrag,
|
|
20376
22449
|
isDateInRange,
|
|
20377
22450
|
isDragEnabled,
|
|
@@ -20383,6 +22456,8 @@ export {
|
|
|
20383
22456
|
isHttpResultStatus,
|
|
20384
22457
|
isImageAnnotationPathClosed,
|
|
20385
22458
|
isImageAnnotationShapeTool,
|
|
22459
|
+
isImageCompareInteractiveTarget,
|
|
22460
|
+
isImageCompareVertical,
|
|
20386
22461
|
isInlineFormat,
|
|
20387
22462
|
isKeyActive,
|
|
20388
22463
|
isKeyOpen,
|
|
@@ -20390,15 +22465,24 @@ export {
|
|
|
20390
22465
|
isLazyTigerLocale,
|
|
20391
22466
|
isLongPress,
|
|
20392
22467
|
isMarkdownToolbarSeparator,
|
|
22468
|
+
isMarqueeFocusInside,
|
|
22469
|
+
isMarqueePaused,
|
|
22470
|
+
isMarqueeReverse,
|
|
22471
|
+
isMarqueeVertical,
|
|
20393
22472
|
isMobile,
|
|
20394
22473
|
isModalSheetSwipeCloseGesture,
|
|
22474
|
+
isNavigationMenuOpen,
|
|
22475
|
+
isNavigationMenuTriggerOpenKey,
|
|
22476
|
+
isNavigationMenuValueOpen,
|
|
20395
22477
|
isNextDisabled,
|
|
20396
22478
|
isOptionGroup,
|
|
22479
|
+
isOtpComplete,
|
|
20397
22480
|
isPanelActive,
|
|
20398
22481
|
isPrevDisabled,
|
|
20399
22482
|
isRtlLocale,
|
|
20400
22483
|
isSameContainerDrag,
|
|
20401
22484
|
isSameDay,
|
|
22485
|
+
isScrollAreaAxisEnabled,
|
|
20402
22486
|
isSignatureEmpty,
|
|
20403
22487
|
isSpaceKey,
|
|
20404
22488
|
isTabKey,
|
|
@@ -20418,6 +22502,10 @@ export {
|
|
|
20418
22502
|
kanbanSwimlaneCollapsedClasses,
|
|
20419
22503
|
kanbanSwimlaneDotClasses,
|
|
20420
22504
|
kanbanSwimlaneHeaderClasses,
|
|
22505
|
+
kbdBaseClasses,
|
|
22506
|
+
kbdKeyClasses,
|
|
22507
|
+
kbdSeparatorClasses,
|
|
22508
|
+
kbdSubtleVariantClasses,
|
|
20421
22509
|
keyIcon,
|
|
20422
22510
|
layoutContentClasses,
|
|
20423
22511
|
layoutFooterClasses,
|
|
@@ -20451,6 +22539,9 @@ export {
|
|
|
20451
22539
|
listSizeClasses,
|
|
20452
22540
|
listWrapperClasses,
|
|
20453
22541
|
loadingBarBaseClasses,
|
|
22542
|
+
loadingBarColorClasses,
|
|
22543
|
+
loadingBarContainerBaseClasses,
|
|
22544
|
+
loadingBarFillBaseClasses,
|
|
20454
22545
|
loadingBarsWrapperBaseClasses,
|
|
20455
22546
|
loadingColorClasses,
|
|
20456
22547
|
loadingContainerBaseClasses,
|
|
@@ -20480,6 +22571,20 @@ export {
|
|
|
20480
22571
|
markdownEditorToolbarSeparatorClasses,
|
|
20481
22572
|
markdownHotkeyMatches,
|
|
20482
22573
|
markdownModeLabels,
|
|
22574
|
+
marqueeCloneClasses,
|
|
22575
|
+
marqueeContentClasses,
|
|
22576
|
+
marqueeContentVerticalClasses,
|
|
22577
|
+
marqueeHorizontalClasses,
|
|
22578
|
+
marqueePauseHoverClasses,
|
|
22579
|
+
marqueeReverseClasses,
|
|
22580
|
+
marqueeRootClasses,
|
|
22581
|
+
marqueeStaticClasses,
|
|
22582
|
+
marqueeTrackClasses,
|
|
22583
|
+
marqueeTrackVerticalClasses,
|
|
22584
|
+
marqueeVerticalClasses,
|
|
22585
|
+
masonryColumnClasses,
|
|
22586
|
+
masonryItemClasses,
|
|
22587
|
+
masonryRootClasses,
|
|
20483
22588
|
matchesHotkey,
|
|
20484
22589
|
matchesMenuSearch,
|
|
20485
22590
|
measureTableResizeSnapshot,
|
|
@@ -20504,6 +22609,7 @@ export {
|
|
|
20504
22609
|
menuSearchEmptyClasses,
|
|
20505
22610
|
menuSearchFieldClasses,
|
|
20506
22611
|
menuSearchInputClasses,
|
|
22612
|
+
mergeHighlightRanges,
|
|
20507
22613
|
mergeStyleValues,
|
|
20508
22614
|
mergeTigerLocale,
|
|
20509
22615
|
messageBaseClasses,
|
|
@@ -20529,6 +22635,7 @@ export {
|
|
|
20529
22635
|
modalTitleClasses,
|
|
20530
22636
|
modalWrapperClasses,
|
|
20531
22637
|
modernTheme,
|
|
22638
|
+
moduloDistributeMasonryItems,
|
|
20532
22639
|
moonIcon,
|
|
20533
22640
|
moveCard,
|
|
20534
22641
|
moveCropRect,
|
|
@@ -20541,6 +22648,7 @@ export {
|
|
|
20541
22648
|
naturalTheme,
|
|
20542
22649
|
navigateToFolder,
|
|
20543
22650
|
nextIconPath,
|
|
22651
|
+
nextLoadingBarTricklePercentage,
|
|
20544
22652
|
normalizeActiveKeys,
|
|
20545
22653
|
normalizeChartBrushRange,
|
|
20546
22654
|
normalizeChartPadding,
|
|
@@ -20549,10 +22657,13 @@ export {
|
|
|
20549
22657
|
normalizeCronExpression,
|
|
20550
22658
|
normalizeDate,
|
|
20551
22659
|
normalizeGanttDate,
|
|
22660
|
+
normalizeHighlightKeywords,
|
|
20552
22661
|
normalizeImageAnnotationBox,
|
|
22662
|
+
normalizeKbdKeys,
|
|
20553
22663
|
normalizeMenuSearchQuery,
|
|
20554
22664
|
normalizeNumberKeyboardValue,
|
|
20555
22665
|
normalizeOrgChartData,
|
|
22666
|
+
normalizeOtpValue,
|
|
20556
22667
|
normalizeRotation,
|
|
20557
22668
|
normalizeSpotlightText,
|
|
20558
22669
|
normalizeStringOption,
|
|
@@ -20576,6 +22687,7 @@ export {
|
|
|
20576
22687
|
numberKeyboardGridClasses,
|
|
20577
22688
|
numberKeyboardKeyClasses,
|
|
20578
22689
|
numberKeyboardRootClasses,
|
|
22690
|
+
observeScrollAreaSize,
|
|
20579
22691
|
orderTableFixedColumns,
|
|
20580
22692
|
orgChartLinkClasses,
|
|
20581
22693
|
orgChartNodeClasses,
|
|
@@ -20585,8 +22697,21 @@ export {
|
|
|
20585
22697
|
orgChartNodeTitleClasses,
|
|
20586
22698
|
padCountdownNumber,
|
|
20587
22699
|
padTwo,
|
|
22700
|
+
pageHeaderActionsClasses,
|
|
22701
|
+
pageHeaderBackButtonClasses,
|
|
22702
|
+
pageHeaderBackIconClasses,
|
|
22703
|
+
pageHeaderBackWrapClasses,
|
|
22704
|
+
pageHeaderContentClasses,
|
|
22705
|
+
pageHeaderHeadingRowClasses,
|
|
22706
|
+
pageHeaderMainClasses,
|
|
22707
|
+
pageHeaderRootClasses,
|
|
22708
|
+
pageHeaderStartClasses,
|
|
22709
|
+
pageHeaderSubtitleClasses,
|
|
22710
|
+
pageHeaderTitleClasses,
|
|
22711
|
+
pageHeaderTitleRowClasses,
|
|
20588
22712
|
paginateData,
|
|
20589
22713
|
paperclipIcon,
|
|
22714
|
+
parseAspectRatio,
|
|
20590
22715
|
parseColorInput,
|
|
20591
22716
|
parseCountdownTimestamp,
|
|
20592
22717
|
parseCronFieldControl,
|
|
@@ -20597,6 +22722,7 @@ export {
|
|
|
20597
22722
|
parseInputNumberValue,
|
|
20598
22723
|
parseInputValue,
|
|
20599
22724
|
parseHeight as parseMarkdownHeight,
|
|
22725
|
+
parseMask,
|
|
20600
22726
|
parsePaneSize,
|
|
20601
22727
|
parseTime,
|
|
20602
22728
|
parseWidthToPx,
|
|
@@ -20664,10 +22790,13 @@ export {
|
|
|
20664
22790
|
rateHoverColor,
|
|
20665
22791
|
rateInactiveColor,
|
|
20666
22792
|
readFileAsDataUrl,
|
|
22793
|
+
readMasonryItemHeight,
|
|
22794
|
+
readScrollAreaMetrics,
|
|
20667
22795
|
redoFormHistory,
|
|
20668
22796
|
registerEscapeDismiss,
|
|
20669
22797
|
registerImageGroupItem,
|
|
20670
22798
|
removeCssVarsCached,
|
|
22799
|
+
removeTagAt,
|
|
20671
22800
|
renderMarkdownInline,
|
|
20672
22801
|
renderMarkdownToHtml,
|
|
20673
22802
|
renderTokenHtml,
|
|
@@ -20710,17 +22839,48 @@ export {
|
|
|
20710
22839
|
resolveFormConditionState,
|
|
20711
22840
|
resolveFormFieldConditionState,
|
|
20712
22841
|
resolveHeatmapRenderMode,
|
|
22842
|
+
resolveHighlightCaseSensitive,
|
|
22843
|
+
resolveHighlightGlobal,
|
|
22844
|
+
resolveHighlightText,
|
|
22845
|
+
resolveImageCompareAriaLabel,
|
|
22846
|
+
resolveImageCompareFit,
|
|
22847
|
+
resolveImageCompareOrientation,
|
|
22848
|
+
resolveImageComparePosition,
|
|
22849
|
+
resolveImageCompareStep,
|
|
22850
|
+
resolveKbdSeparator,
|
|
22851
|
+
resolveKbdSize,
|
|
22852
|
+
resolveKbdVariant,
|
|
22853
|
+
resolveLoadingBarAriaLabel,
|
|
22854
|
+
resolveLoadingBarColor,
|
|
22855
|
+
resolveLoadingBarFillColor,
|
|
22856
|
+
resolveLoadingBarHeight,
|
|
22857
|
+
resolveLoadingBarMountTarget,
|
|
20713
22858
|
resolveLocaleText,
|
|
22859
|
+
resolveMarqueeAriaLabel,
|
|
22860
|
+
resolveMarqueeDirection,
|
|
22861
|
+
resolveMarqueeDuration,
|
|
22862
|
+
resolveMarqueeGap,
|
|
22863
|
+
resolveMarqueePauseOnHover,
|
|
22864
|
+
resolveMarqueeRepeat,
|
|
22865
|
+
resolveMasonryColumnCount,
|
|
22866
|
+
resolveMasonryGap,
|
|
20714
22867
|
resolveMotionDuration,
|
|
20715
22868
|
resolveMotionEasing,
|
|
20716
22869
|
resolveMultiSeriesTooltipContent,
|
|
22870
|
+
resolveNavigationMenuOpenValue,
|
|
22871
|
+
resolvePageHeaderBackAriaLabel,
|
|
22872
|
+
resolvePageHeaderBackVisibility,
|
|
20717
22873
|
resolvePaginationDisplayMode,
|
|
20718
22874
|
resolvePanGesture,
|
|
20719
22875
|
resolvePinchScale,
|
|
20720
22876
|
resolveResponsiveChartSize,
|
|
20721
22877
|
resolveResponsiveValue,
|
|
22878
|
+
resolveScrollAreaLength,
|
|
20722
22879
|
resolveSelectFilteredOptions,
|
|
20723
22880
|
resolveSeriesData,
|
|
22881
|
+
resolveSplitButtonSize,
|
|
22882
|
+
resolveSplitButtonTriggerAriaLabel,
|
|
22883
|
+
resolveSplitButtonVariant,
|
|
20724
22884
|
resolveSwipeGesture,
|
|
20725
22885
|
resolveTableColumnWidth,
|
|
20726
22886
|
resolveTigerLocale,
|
|
@@ -20750,7 +22910,15 @@ export {
|
|
|
20750
22910
|
runStepValidation,
|
|
20751
22911
|
runUploadQueue,
|
|
20752
22912
|
sanitizeHtml,
|
|
22913
|
+
sanitizeOtpInput,
|
|
20753
22914
|
scatterPointTransitionClasses,
|
|
22915
|
+
scrollAreaContentBaseClasses,
|
|
22916
|
+
scrollAreaRootClasses,
|
|
22917
|
+
scrollAreaScrollbarBaseClasses,
|
|
22918
|
+
scrollAreaShadowBaseClasses,
|
|
22919
|
+
scrollAreaThumbBaseClasses,
|
|
22920
|
+
scrollAreaThumbDraggingClasses,
|
|
22921
|
+
scrollAreaViewportBaseClasses,
|
|
20754
22922
|
scrollSpyItemActiveClasses,
|
|
20755
22923
|
scrollSpyItemBaseClasses,
|
|
20756
22924
|
scrollSpyItemDisabledClasses,
|
|
@@ -20785,8 +22953,11 @@ export {
|
|
|
20785
22953
|
shouldCommitImageAnnotationBox,
|
|
20786
22954
|
shouldHideBadge,
|
|
20787
22955
|
shouldLoadMore,
|
|
22956
|
+
shouldLoopMarquee,
|
|
20788
22957
|
shouldReduceMotion,
|
|
22958
|
+
shouldRenderScrollAreaScrollbar,
|
|
20789
22959
|
shouldShowBackTop,
|
|
22960
|
+
shouldSkipNavigationMenuOpenDelay,
|
|
20790
22961
|
signatureCanvasClasses,
|
|
20791
22962
|
signatureCanvasWrapClasses,
|
|
20792
22963
|
signatureClearButtonClasses,
|
|
@@ -20823,6 +22994,13 @@ export {
|
|
|
20823
22994
|
sortFileItems,
|
|
20824
22995
|
sortNotificationGroups,
|
|
20825
22996
|
sparklesIcon,
|
|
22997
|
+
splitButtonPrimaryBlockClasses,
|
|
22998
|
+
splitButtonPrimaryClasses,
|
|
22999
|
+
splitButtonRootBlockClasses,
|
|
23000
|
+
splitButtonRootClasses,
|
|
23001
|
+
splitButtonTriggerClasses,
|
|
23002
|
+
splitButtonTriggerSizeClasses,
|
|
23003
|
+
splitTagInput,
|
|
20826
23004
|
splitTransferData,
|
|
20827
23005
|
splitterBaseClasses,
|
|
20828
23006
|
splitterGutterBaseClasses,
|