@iyulab/flex-table 0.40.1 → 0.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,12 @@
1
1
  import { n as e, t } from "./sorting-CjfjRxwL.js";
2
2
  import { LitElement as n, css as r, html as i, nothing as a } from "lit";
3
3
  import { customElement as o, property as s, state as c } from "lit/decorators.js";
4
+ import { Locale as l } from "@iyulab/components/dist/utilities/Locale.js";
5
+ import { formatDate as u, formatNumber as d } from "@iyulab/components/dist/utilities/format.js";
6
+ import { decodeTsv as f, encodeTsv as p } from "@iyulab/components/dist/utilities/tsv.js";
7
+ import { isImeComposing as m } from "@iyulab/components/dist/utilities/keyboard.js";
4
8
  //#region src/styles/flex-table.styles.ts
5
- var l = r`
9
+ var h = r`
6
10
  /* --- Theme Variables (Light defaults) --- */
7
11
  :host {
8
12
  --ft-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -905,701 +909,29 @@ var l = r`
905
909
  outline: 2px solid var(--ft-find-color);
906
910
  outline-offset: -2px;
907
911
  }
908
- `, u = new Map(Object.entries(/* #__PURE__ */ Object.assign({
909
- "../assets/locales/ar.json": {
910
- valueMissing: "هذا الحقل مطلوب",
911
- badInput: "يرجى إدخال قيمة صالحة",
912
- typeMismatch: "يرجى إدخال قيمة بالتنسيق الصحيح",
913
- patternMismatch: "يرجى اتباع التنسيق المطلوب",
914
- rangeUnderflow: "يجب أن تكون القيمة {min} على الأقل",
915
- rangeOverflow: "يجب ألا تتجاوز القيمة {max}",
916
- stepMismatch: "يجب أن تكون القيمة من مضاعفات {step}",
917
- tooShort: "يجب أن تكون {min} على الأقل",
918
- tooLong: "يجب ألا تتجاوز {max}",
919
- increment: "زيادة القيمة",
920
- decrement: "إنقاص القيمة",
921
- clear: "مسح القيمة",
922
- today: "اليوم",
923
- time: "الوقت",
924
- showPassword: "إظهار كلمة المرور",
925
- hidePassword: "إخفاء كلمة المرور",
926
- previousSlide: "الشريحة السابقة",
927
- nextSlide: "الشريحة التالية",
928
- goToSlide: "الانتقال إلى الشريحة {n}",
929
- chooseDate: "اختر التاريخ",
930
- previousMonth: "الشهر السابق",
931
- nextMonth: "الشهر التالي",
932
- close: "إغلاق",
933
- copy: "نسخ",
934
- copied: "تم النسخ",
935
- chooseFile: "اختر ملفًا",
936
- noFileChosen: "لم يتم اختيار أي ملف",
937
- filesSelected: "تم اختيار {count} ملفات",
938
- resizePanels: "تغيير حجم اللوحات",
939
- search: "بحث",
940
- alertError: "خطأ",
941
- alertWarning: "تحذير",
942
- alertSuccess: "نجاح",
943
- alertInfo: "معلومات",
944
- alertNotice: "إشعار",
945
- alertMessage: "رسالة",
946
- remove: "إزالة",
947
- closeTab: "إغلاق علامة التبويب",
948
- breadcrumb: "مسار التنقل",
949
- confirm: "تأكيد",
950
- cancel: "إلغاء"
951
- },
952
- "../assets/locales/de.json": {
953
- valueMissing: "Dieses Feld ist erforderlich",
954
- badInput: "Bitte geben Sie einen gültigen Wert ein",
955
- typeMismatch: "Bitte geben Sie einen gültigen Wert ein",
956
- patternMismatch: "Bitte halten Sie sich an das angeforderte Format",
957
- rangeUnderflow: "Der Wert muss mindestens {min} betragen",
958
- rangeOverflow: "Der Wert darf höchstens {max} betragen",
959
- stepMismatch: "Der Wert muss ein Vielfaches von {step} sein",
960
- tooShort: "Muss mindestens {min} betragen",
961
- tooLong: "Darf höchstens {max} betragen",
962
- increment: "Wert erhöhen",
963
- decrement: "Wert verringern",
964
- clear: "Wert löschen",
965
- today: "Heute",
966
- time: "Uhrzeit",
967
- showPassword: "Passwort anzeigen",
968
- hidePassword: "Passwort verbergen",
969
- previousSlide: "Vorherige Folie",
970
- nextSlide: "Nächste Folie",
971
- goToSlide: "Zu Folie {n} wechseln",
972
- chooseDate: "Datum auswählen",
973
- previousMonth: "Vorheriger Monat",
974
- nextMonth: "Nächster Monat",
975
- close: "Schließen",
976
- copy: "Kopieren",
977
- copied: "Kopiert",
978
- chooseFile: "Datei auswählen",
979
- noFileChosen: "Keine Datei ausgewählt",
980
- filesSelected: "{count} Dateien ausgewählt",
981
- resizePanels: "Bereichsgröße ändern",
982
- search: "Suchen",
983
- alertError: "Fehler",
984
- alertWarning: "Warnung",
985
- alertSuccess: "Erfolg",
986
- alertInfo: "Information",
987
- alertNotice: "Hinweis",
988
- alertMessage: "Nachricht",
989
- remove: "Entfernen",
990
- closeTab: "Tab schließen",
991
- breadcrumb: "Navigationspfad",
992
- confirm: "Bestätigen",
993
- cancel: "Abbrechen"
994
- },
995
- "../assets/locales/en.json": {
996
- valueMissing: "This field is required",
997
- badInput: "Please enter a valid value",
998
- typeMismatch: "Please enter a valid value",
999
- patternMismatch: "Please match the requested format",
1000
- rangeUnderflow: "Value must be at least {min}",
1001
- rangeOverflow: "Value must be at most {max}",
1002
- stepMismatch: "Value must be a multiple of {step}",
1003
- tooShort: "Must be at least {min}",
1004
- tooLong: "Must be at most {max}",
1005
- increment: "Increase value",
1006
- decrement: "Decrease value",
1007
- clear: "Clear value",
1008
- today: "Today",
1009
- time: "Time",
1010
- showPassword: "Show password",
1011
- hidePassword: "Hide password",
1012
- previousSlide: "Previous slide",
1013
- nextSlide: "Next slide",
1014
- goToSlide: "Go to slide {n}",
1015
- chooseDate: "Choose date",
1016
- previousMonth: "Previous month",
1017
- nextMonth: "Next month",
1018
- close: "Close",
1019
- copy: "Copy",
1020
- copied: "Copied",
1021
- chooseFile: "Choose file",
1022
- noFileChosen: "No file chosen",
1023
- filesSelected: "{count} files selected",
1024
- resizePanels: "Resize panels",
1025
- search: "Search",
1026
- alertError: "Error",
1027
- alertWarning: "Warning",
1028
- alertSuccess: "Success",
1029
- alertInfo: "Information",
1030
- alertNotice: "Notice",
1031
- alertMessage: "Message",
1032
- remove: "Remove",
1033
- closeTab: "Close tab",
1034
- breadcrumb: "Breadcrumb",
1035
- confirm: "Confirm",
1036
- cancel: "Cancel"
1037
- },
1038
- "../assets/locales/es.json": {
1039
- valueMissing: "Este campo es obligatorio",
1040
- badInput: "Introduzca un valor válido",
1041
- typeMismatch: "Introduzca un valor con el formato correcto",
1042
- patternMismatch: "Ajuste el valor al formato solicitado",
1043
- rangeUnderflow: "El valor debe ser como mínimo {min}",
1044
- rangeOverflow: "El valor debe ser como máximo {max}",
1045
- stepMismatch: "El valor debe ser múltiplo de {step}",
1046
- tooShort: "Debe ser como mínimo {min}",
1047
- tooLong: "Debe ser como máximo {max}",
1048
- increment: "Aumentar valor",
1049
- decrement: "Disminuir valor",
1050
- clear: "Borrar valor",
1051
- today: "Hoy",
1052
- time: "Hora",
1053
- showPassword: "Mostrar contraseña",
1054
- hidePassword: "Ocultar contraseña",
1055
- previousSlide: "Diapositiva anterior",
1056
- nextSlide: "Siguiente diapositiva",
1057
- goToSlide: "Ir a la diapositiva {n}",
1058
- chooseDate: "Elegir fecha",
1059
- previousMonth: "Mes anterior",
1060
- nextMonth: "Mes siguiente",
1061
- close: "Cerrar",
1062
- copy: "Copiar",
1063
- copied: "Copiado",
1064
- chooseFile: "Elegir archivo",
1065
- noFileChosen: "Ningún archivo elegido",
1066
- filesSelected: "{count} archivos seleccionados",
1067
- resizePanels: "Cambiar el tamaño de los paneles",
1068
- search: "Buscar",
1069
- alertError: "Error",
1070
- alertWarning: "Advertencia",
1071
- alertSuccess: "Éxito",
1072
- alertInfo: "Información",
1073
- alertNotice: "Aviso",
1074
- alertMessage: "Mensaje",
1075
- remove: "Quitar",
1076
- closeTab: "Cerrar pestaña",
1077
- breadcrumb: "Ruta de navegación",
1078
- confirm: "Confirmar",
1079
- cancel: "Cancelar"
1080
- },
1081
- "../assets/locales/fr.json": {
1082
- valueMissing: "Ce champ est obligatoire",
1083
- badInput: "Veuillez saisir une valeur valide",
1084
- typeMismatch: "Veuillez saisir une valeur au format correct",
1085
- patternMismatch: "Veuillez respecter le format demandé",
1086
- rangeUnderflow: "La valeur doit être supérieure ou égale à {min}",
1087
- rangeOverflow: "La valeur doit être inférieure ou égale à {max}",
1088
- stepMismatch: "La valeur doit être un multiple de {step}",
1089
- tooShort: "Doit être au moins {min}",
1090
- tooLong: "Doit être au plus {max}",
1091
- increment: "Augmenter la valeur",
1092
- decrement: "Diminuer la valeur",
1093
- clear: "Effacer la valeur",
1094
- today: "Aujourd’hui",
1095
- time: "Heure",
1096
- showPassword: "Afficher le mot de passe",
1097
- hidePassword: "Masquer le mot de passe",
1098
- previousSlide: "Diapositive précédente",
1099
- nextSlide: "Diapositive suivante",
1100
- goToSlide: "Aller à la diapositive {n}",
1101
- chooseDate: "Choisir une date",
1102
- previousMonth: "Mois précédent",
1103
- nextMonth: "Mois suivant",
1104
- close: "Fermer",
1105
- copy: "Copier",
1106
- copied: "Copié",
1107
- chooseFile: "Choisir un fichier",
1108
- noFileChosen: "Aucun fichier choisi",
1109
- filesSelected: "{count} fichiers sélectionnés",
1110
- resizePanels: "Redimensionner les panneaux",
1111
- search: "Rechercher",
1112
- alertError: "Erreur",
1113
- alertWarning: "Avertissement",
1114
- alertSuccess: "Succès",
1115
- alertInfo: "Information",
1116
- alertNotice: "Avis",
1117
- alertMessage: "Message",
1118
- remove: "Supprimer",
1119
- closeTab: "Fermer l'onglet",
1120
- breadcrumb: "Fil d'Ariane",
1121
- confirm: "Confirmer",
1122
- cancel: "Annuler"
1123
- },
1124
- "../assets/locales/id.json": {
1125
- valueMissing: "Kolom ini wajib diisi",
1126
- badInput: "Masukkan nilai yang valid",
1127
- typeMismatch: "Masukkan nilai dengan format yang benar",
1128
- patternMismatch: "Sesuaikan dengan format yang diminta",
1129
- rangeUnderflow: "Nilai harus minimal {min}",
1130
- rangeOverflow: "Nilai harus maksimal {max}",
1131
- stepMismatch: "Nilai harus kelipatan dari {step}",
1132
- tooShort: "Harus minimal {min}",
1133
- tooLong: "Harus maksimal {max}",
1134
- increment: "Tambah nilai",
1135
- decrement: "Kurangi nilai",
1136
- clear: "Hapus nilai",
1137
- today: "Hari ini",
1138
- time: "Waktu",
1139
- showPassword: "Tampilkan kata sandi",
1140
- hidePassword: "Sembunyikan kata sandi",
1141
- previousSlide: "Slide sebelumnya",
1142
- nextSlide: "Slide berikutnya",
1143
- goToSlide: "Buka slide {n}",
1144
- chooseDate: "Pilih tanggal",
1145
- previousMonth: "Bulan sebelumnya",
1146
- nextMonth: "Bulan berikutnya",
1147
- close: "Tutup",
1148
- copy: "Salin",
1149
- copied: "Disalin",
1150
- chooseFile: "Pilih berkas",
1151
- noFileChosen: "Tidak ada berkas dipilih",
1152
- filesSelected: "{count} berkas dipilih",
1153
- resizePanels: "Ubah ukuran panel",
1154
- search: "Cari",
1155
- alertError: "Kesalahan",
1156
- alertWarning: "Peringatan",
1157
- alertSuccess: "Berhasil",
1158
- alertInfo: "Informasi",
1159
- alertNotice: "Pemberitahuan",
1160
- alertMessage: "Pesan",
1161
- remove: "Hapus",
1162
- closeTab: "Tutup tab",
1163
- breadcrumb: "Navigasi remah roti",
1164
- confirm: "Konfirmasi",
1165
- cancel: "Batal"
1166
- },
1167
- "../assets/locales/ja.json": {
1168
- valueMissing: "この項目は必須です",
1169
- badInput: "有効な値を入力してください",
1170
- typeMismatch: "正しい形式の値を入力してください",
1171
- patternMismatch: "指定された形式で入力してください",
1172
- rangeUnderflow: "値は{min}以上である必要があります",
1173
- rangeOverflow: "値は{max}以下である必要があります",
1174
- stepMismatch: "値は{step}の倍数である必要があります",
1175
- tooShort: "{min}以上である必要があります",
1176
- tooLong: "{max}以下である必要があります",
1177
- increment: "値を増やす",
1178
- decrement: "値を減らす",
1179
- clear: "値をクリア",
1180
- today: "今日",
1181
- time: "時刻",
1182
- showPassword: "パスワードを表示",
1183
- hidePassword: "パスワードを隠す",
1184
- previousSlide: "前のスライド",
1185
- nextSlide: "次のスライド",
1186
- goToSlide: "スライド{n}に移動",
1187
- chooseDate: "日付を選択",
1188
- previousMonth: "前月",
1189
- nextMonth: "翌月",
1190
- close: "閉じる",
1191
- copy: "コピー",
1192
- copied: "コピーしました",
1193
- chooseFile: "ファイルを選択",
1194
- noFileChosen: "ファイルが選択されていません",
1195
- filesSelected: "{count}個のファイルを選択しました",
1196
- resizePanels: "パネルのサイズ変更",
1197
- search: "検索",
1198
- alertError: "エラー",
1199
- alertWarning: "警告",
1200
- alertSuccess: "完了",
1201
- alertInfo: "お知らせ",
1202
- alertNotice: "通知",
1203
- alertMessage: "メッセージ",
1204
- remove: "削除",
1205
- closeTab: "タブを閉じる",
1206
- breadcrumb: "パンくずリスト",
1207
- confirm: "OK",
1208
- cancel: "キャンセル"
1209
- },
1210
- "../assets/locales/ko.json": {
1211
- valueMissing: "필수 항목입니다",
1212
- badInput: "올바른 값을 입력하세요",
1213
- typeMismatch: "올바른 형식의 값을 입력하세요",
1214
- patternMismatch: "요청된 형식에 맞게 입력하세요",
1215
- rangeUnderflow: "값은 {min} 이상이어야 합니다",
1216
- rangeOverflow: "값은 {max} 이하여야 합니다",
1217
- stepMismatch: "값은 {step}의 배수여야 합니다",
1218
- tooShort: "최소 {min} 이상이어야 합니다",
1219
- tooLong: "최대 {max} 이하여야 합니다",
1220
- increment: "값 증가",
1221
- decrement: "값 감소",
1222
- clear: "값 지우기",
1223
- today: "오늘",
1224
- time: "시간",
1225
- showPassword: "비밀번호 표시",
1226
- hidePassword: "비밀번호 숨기기",
1227
- previousSlide: "이전 슬라이드",
1228
- nextSlide: "다음 슬라이드",
1229
- goToSlide: "{n}번 슬라이드로 이동",
1230
- chooseDate: "날짜 선택",
1231
- previousMonth: "이전 달",
1232
- nextMonth: "다음 달",
1233
- close: "닫기",
1234
- copy: "복사",
1235
- copied: "복사됨",
1236
- chooseFile: "파일 선택",
1237
- noFileChosen: "선택된 파일 없음",
1238
- filesSelected: "{count}개 파일 선택됨",
1239
- resizePanels: "패널 크기 조절",
1240
- search: "검색",
1241
- alertError: "오류",
1242
- alertWarning: "경고",
1243
- alertSuccess: "완료",
1244
- alertInfo: "안내",
1245
- alertNotice: "알림",
1246
- alertMessage: "메시지",
1247
- remove: "제거",
1248
- closeTab: "탭 닫기",
1249
- breadcrumb: "탐색 경로",
1250
- confirm: "확인",
1251
- cancel: "취소"
1252
- },
1253
- "../assets/locales/pt-BR.json": {
1254
- valueMissing: "Este campo é obrigatório",
1255
- badInput: "Insira um valor válido",
1256
- typeMismatch: "Insira um valor no formato correto",
1257
- patternMismatch: "Siga o formato solicitado",
1258
- rangeUnderflow: "O valor deve ser no mínimo {min}",
1259
- rangeOverflow: "O valor deve ser no máximo {max}",
1260
- stepMismatch: "O valor deve ser um múltiplo de {step}",
1261
- tooShort: "Deve ser no mínimo {min}",
1262
- tooLong: "Deve ser no máximo {max}",
1263
- increment: "Aumentar valor",
1264
- decrement: "Diminuir valor",
1265
- clear: "Limpar valor",
1266
- today: "Hoje",
1267
- time: "Hora",
1268
- showPassword: "Mostrar senha",
1269
- hidePassword: "Ocultar senha",
1270
- previousSlide: "Slide anterior",
1271
- nextSlide: "Próximo slide",
1272
- goToSlide: "Ir para o slide {n}",
1273
- chooseDate: "Escolher data",
1274
- previousMonth: "Mês anterior",
1275
- nextMonth: "Próximo mês",
1276
- close: "Fechar",
1277
- copy: "Copiar",
1278
- copied: "Copiado",
1279
- chooseFile: "Escolher arquivo",
1280
- noFileChosen: "Nenhum arquivo escolhido",
1281
- filesSelected: "{count} arquivos selecionados",
1282
- resizePanels: "Redimensionar painéis",
1283
- search: "Pesquisar",
1284
- alertError: "Erro",
1285
- alertWarning: "Aviso",
1286
- alertSuccess: "Sucesso",
1287
- alertInfo: "Informação",
1288
- alertNotice: "Nota",
1289
- alertMessage: "Mensagem",
1290
- remove: "Remover",
1291
- closeTab: "Fechar aba",
1292
- breadcrumb: "Trilha de navegação",
1293
- confirm: "Confirmar",
1294
- cancel: "Cancelar"
1295
- },
1296
- "../assets/locales/ru.json": {
1297
- valueMissing: "Это поле обязательно для заполнения",
1298
- badInput: "Введите допустимое значение",
1299
- typeMismatch: "Введите значение в правильном формате",
1300
- patternMismatch: "Введите значение в требуемом формате",
1301
- rangeUnderflow: "Значение должно быть не менее {min}",
1302
- rangeOverflow: "Значение должно быть не более {max}",
1303
- stepMismatch: "Значение должно быть кратно {step}",
1304
- tooShort: "Должно быть не менее {min}",
1305
- tooLong: "Должно быть не более {max}",
1306
- increment: "Увеличить значение",
1307
- decrement: "Уменьшить значение",
1308
- clear: "Очистить значение",
1309
- today: "Сегодня",
1310
- time: "Время",
1311
- showPassword: "Показать пароль",
1312
- hidePassword: "Скрыть пароль",
1313
- previousSlide: "Предыдущий слайд",
1314
- nextSlide: "Следующий слайд",
1315
- goToSlide: "Перейти к слайду {n}",
1316
- chooseDate: "Выбрать дату",
1317
- previousMonth: "Предыдущий месяц",
1318
- nextMonth: "Следующий месяц",
1319
- close: "Закрыть",
1320
- copy: "Копировать",
1321
- copied: "Скопировано",
1322
- chooseFile: "Выбрать файл",
1323
- noFileChosen: "Файл не выбран",
1324
- filesSelected: "Выбрано файлов: {count}",
1325
- resizePanels: "Изменить размер панелей",
1326
- search: "Поиск",
1327
- alertError: "Ошибка",
1328
- alertWarning: "Предупреждение",
1329
- alertSuccess: "Успешно",
1330
- alertInfo: "Информация",
1331
- alertNotice: "Уведомление",
1332
- alertMessage: "Сообщение",
1333
- remove: "Удалить",
1334
- closeTab: "Закрыть вкладку",
1335
- breadcrumb: "Навигационная цепочка",
1336
- confirm: "Подтвердить",
1337
- cancel: "Отмена"
1338
- },
1339
- "../assets/locales/th.json": {
1340
- valueMissing: "จำเป็นต้องกรอกข้อมูลนี้",
1341
- badInput: "กรุณากรอกค่าที่ถูกต้อง",
1342
- typeMismatch: "กรุณากรอกค่าให้ถูกรูปแบบ",
1343
- patternMismatch: "กรุณากรอกให้ตรงตามรูปแบบที่กำหนด",
1344
- rangeUnderflow: "ค่าต้องมากกว่าหรือเท่ากับ {min}",
1345
- rangeOverflow: "ค่าต้องน้อยกว่าหรือเท่ากับ {max}",
1346
- stepMismatch: "ค่าต้องเป็นจำนวนทวีคูณของ {step}",
1347
- tooShort: "ต้องมีอย่างน้อย {min}",
1348
- tooLong: "ต้องไม่เกิน {max}",
1349
- increment: "เพิ่มค่า",
1350
- decrement: "ลดค่า",
1351
- clear: "ล้างค่า",
1352
- today: "วันนี้",
1353
- time: "เวลา",
1354
- showPassword: "แสดงรหัสผ่าน",
1355
- hidePassword: "ซ่อนรหัสผ่าน",
1356
- previousSlide: "สไลด์ก่อนหน้า",
1357
- nextSlide: "สไลด์ถัดไป",
1358
- goToSlide: "ไปที่สไลด์ที่ {n}",
1359
- chooseDate: "เลือกวันที่",
1360
- previousMonth: "เดือนก่อนหน้า",
1361
- nextMonth: "เดือนถัดไป",
1362
- close: "ปิด",
1363
- copy: "คัดลอก",
1364
- copied: "คัดลอกแล้ว",
1365
- chooseFile: "เลือกไฟล์",
1366
- noFileChosen: "ยังไม่ได้เลือกไฟล์",
1367
- filesSelected: "เลือกแล้ว {count} ไฟล์",
1368
- resizePanels: "ปรับขนาดแผง",
1369
- search: "ค้นหา",
1370
- alertError: "ข้อผิดพลาด",
1371
- alertWarning: "คำเตือน",
1372
- alertSuccess: "สำเร็จ",
1373
- alertInfo: "ข้อมูล",
1374
- alertNotice: "ประกาศ",
1375
- alertMessage: "ข้อความ",
1376
- remove: "ลบ",
1377
- closeTab: "ปิดแท็บ",
1378
- breadcrumb: "เส้นทางการนำทาง",
1379
- confirm: "ยืนยัน",
1380
- cancel: "ยกเลิก"
1381
- },
1382
- "../assets/locales/vi.json": {
1383
- valueMissing: "Trường này là bắt buộc",
1384
- badInput: "Vui lòng nhập giá trị hợp lệ",
1385
- typeMismatch: "Vui lòng nhập giá trị đúng định dạng",
1386
- patternMismatch: "Vui lòng nhập đúng định dạng yêu cầu",
1387
- rangeUnderflow: "Giá trị phải lớn hơn hoặc bằng {min}",
1388
- rangeOverflow: "Giá trị phải nhỏ hơn hoặc bằng {max}",
1389
- stepMismatch: "Giá trị phải là bội số của {step}",
1390
- tooShort: "Phải lớn hơn hoặc bằng {min}",
1391
- tooLong: "Phải nhỏ hơn hoặc bằng {max}",
1392
- increment: "Tăng giá trị",
1393
- decrement: "Giảm giá trị",
1394
- clear: "Xóa giá trị",
1395
- today: "Hôm nay",
1396
- time: "Giờ",
1397
- showPassword: "Hiện mật khẩu",
1398
- hidePassword: "Ẩn mật khẩu",
1399
- previousSlide: "Slide trước",
1400
- nextSlide: "Slide sau",
1401
- goToSlide: "Đi đến slide {n}",
1402
- chooseDate: "Chọn ngày",
1403
- previousMonth: "Tháng trước",
1404
- nextMonth: "Tháng sau",
1405
- close: "Đóng",
1406
- copy: "Sao chép",
1407
- copied: "Đã sao chép",
1408
- chooseFile: "Chọn tệp",
1409
- noFileChosen: "Chưa chọn tệp nào",
1410
- filesSelected: "Đã chọn {count} tệp",
1411
- resizePanels: "Thay đổi kích thước bảng",
1412
- search: "Tìm kiếm",
1413
- alertError: "Lỗi",
1414
- alertWarning: "Cảnh báo",
1415
- alertSuccess: "Thành công",
1416
- alertInfo: "Thông tin",
1417
- alertNotice: "Lưu ý",
1418
- alertMessage: "Thông báo",
1419
- remove: "Xóa",
1420
- closeTab: "Đóng tab",
1421
- breadcrumb: "Đường dẫn điều hướng",
1422
- confirm: "Xác nhận",
1423
- cancel: "Hủy"
1424
- },
1425
- "../assets/locales/zh-CN.json": {
1426
- valueMissing: "此项为必填项",
1427
- badInput: "请输入有效的值",
1428
- typeMismatch: "请输入正确格式的值",
1429
- patternMismatch: "请按照要求的格式输入",
1430
- rangeUnderflow: "值必须大于或等于{min}",
1431
- rangeOverflow: "值必须小于或等于{max}",
1432
- stepMismatch: "值必须是{step}的倍数",
1433
- tooShort: "至少需要{min}",
1434
- tooLong: "最多不能超过{max}",
1435
- increment: "增加值",
1436
- decrement: "减少值",
1437
- clear: "清除值",
1438
- today: "今天",
1439
- time: "时间",
1440
- showPassword: "显示密码",
1441
- hidePassword: "隐藏密码",
1442
- previousSlide: "上一张幻灯片",
1443
- nextSlide: "下一张幻灯片",
1444
- goToSlide: "转到幻灯片{n}",
1445
- chooseDate: "选择日期",
1446
- previousMonth: "上个月",
1447
- nextMonth: "下个月",
1448
- close: "关闭",
1449
- copy: "复制",
1450
- copied: "已复制",
1451
- chooseFile: "选择文件",
1452
- noFileChosen: "未选择文件",
1453
- filesSelected: "已选择{count}个文件",
1454
- resizePanels: "调整面板大小",
1455
- search: "搜索",
1456
- alertError: "错误",
1457
- alertWarning: "警告",
1458
- alertSuccess: "成功",
1459
- alertInfo: "信息",
1460
- alertNotice: "提示",
1461
- alertMessage: "消息",
1462
- remove: "移除",
1463
- closeTab: "关闭标签页",
1464
- breadcrumb: "面包屑导航",
1465
- confirm: "确定",
1466
- cancel: "取消"
1467
- },
1468
- "../assets/locales/zh-TW.json": {
1469
- valueMissing: "此欄位為必填",
1470
- badInput: "請輸入有效的值",
1471
- typeMismatch: "請輸入正確格式的值",
1472
- patternMismatch: "請依照要求的格式輸入",
1473
- rangeUnderflow: "值必須大於或等於{min}",
1474
- rangeOverflow: "值必須小於或等於{max}",
1475
- stepMismatch: "值必須是{step}的倍數",
1476
- tooShort: "至少需要{min}",
1477
- tooLong: "最多不能超過{max}",
1478
- increment: "增加值",
1479
- decrement: "減少值",
1480
- clear: "清除值",
1481
- today: "今天",
1482
- time: "時間",
1483
- showPassword: "顯示密碼",
1484
- hidePassword: "隱藏密碼",
1485
- previousSlide: "上一張投影片",
1486
- nextSlide: "下一張投影片",
1487
- goToSlide: "前往投影片{n}",
1488
- chooseDate: "選擇日期",
1489
- previousMonth: "上個月",
1490
- nextMonth: "下個月",
1491
- close: "關閉",
1492
- copy: "複製",
1493
- copied: "已複製",
1494
- chooseFile: "選擇檔案",
1495
- noFileChosen: "未選擇檔案",
1496
- filesSelected: "已選擇{count}個檔案",
1497
- resizePanels: "調整面板大小",
1498
- search: "搜尋",
1499
- alertError: "錯誤",
1500
- alertWarning: "警告",
1501
- alertSuccess: "成功",
1502
- alertInfo: "資訊",
1503
- alertNotice: "提示",
1504
- alertMessage: "訊息",
1505
- remove: "移除",
1506
- closeTab: "關閉分頁",
1507
- breadcrumb: "麵包屑導覽",
1508
- confirm: "確定",
1509
- cancel: "取消"
1510
- }
1511
- })).map(([e, t]) => [(e.split("/").pop()?.replace(".json", "") || "").toLowerCase(), t])), d = /* @__PURE__ */ new Map();
1512
- function f() {
1513
- return typeof document < "u" && document.documentElement?.lang ? document.documentElement.lang : typeof window < "u" && typeof navigator < "u" && navigator.language ? navigator.language : "en";
1514
- }
1515
- var p = f(), m = {
1516
- "zh-hant": "zh-tw",
1517
- "zh-hk": "zh-tw",
1518
- "zh-mo": "zh-tw",
1519
- zh: "zh-cn",
1520
- pt: "pt-br"
1521
- };
1522
- function h(e) {
1523
- let t = e.toLowerCase().split("-"), n = t.map((e, n) => t.slice(0, t.length - n).join("-")), r = n.find((e) => e in m), i = r ? [
1524
- ...n,
1525
- m[r],
1526
- "en"
1527
- ] : [...n, "en"];
1528
- return [...new Set(i)];
1529
- }
1530
- function g(e, t) {
1531
- return t ? e.replace(/\{(\w+)\}/g, (e, n) => t[n] == null ? `{${n}}` : String(t[n])) : e;
1532
- }
1533
- function _(e, t) {
1534
- for (let n of h(e)) {
1535
- let e = d.get(n)?.[t] ?? u.get(n)?.[t];
1536
- if (e) return e;
1537
- }
1538
- return u.get("en")[t];
1539
- }
1540
- var v = /* @__PURE__ */ new Map(), y = class {
1541
- constructor() {}
1542
- static set(e) {
1543
- p = e;
1544
- }
1545
- static get() {
1546
- return p;
1547
- }
1548
- static register(e, t) {
1549
- let n = e.toLowerCase(), r = d.get(n) ?? u.get(n) ?? u.get("en");
1550
- d.set(n, {
1551
- ...r,
1552
- ...t
1553
- });
1554
- }
1555
- static getValue(e, t) {
1556
- return g(_(p, e), t);
1557
- }
1558
- static namespace(e) {
1559
- let t = (t, n, r) => {
1560
- let i = v.get(e);
1561
- for (let e of h(t || p)) {
1562
- let t = i?.get(e)?.[n];
1563
- if (t) return g(t, r);
1564
- }
1565
- return n;
1566
- };
1567
- return {
1568
- name: e,
1569
- register(t, n) {
1570
- let r = v.get(e) ?? /* @__PURE__ */ new Map(), i = t.toLowerCase();
1571
- r.set(i, {
1572
- ...r.get(i),
1573
- ...n
1574
- }), v.set(e, r);
1575
- },
1576
- text: (e, n) => t(void 0, e, n),
1577
- textIn: t
1578
- };
1579
- }
1580
- };
912
+ `;
1581
913
  //#endregion
1582
914
  //#region src/renderers/format.ts
1583
- function b(e, t) {
1584
- return e == null ? "" : typeof t == "function" ? t(e) : x(t) ? C(e, t) : S(e, t);
915
+ function g(e, t) {
916
+ return e == null ? "" : typeof t == "function" ? t(e) : _(t) ? y(e, t) : v(e, t);
1585
917
  }
1586
- function x(e) {
918
+ function _(e) {
1587
919
  return /[yMdHhms]/.test(e);
1588
920
  }
1589
- function S(e, t) {
921
+ function v(e, t) {
1590
922
  let n = typeof e == "number" ? e : Number(e);
1591
923
  if (isNaN(n)) return String(e);
1592
- let r = t.endsWith("%"), i = t.match(/^([^#0.,%]+)/), a = i ? i[1] : "", o = t.replace(/^[^#0.,%]+/, "").replace(/%$/, ""), s = o.match(/\.([0#]+)$/), c = s ? s[1].length : 0, l = {
924
+ let r = t.endsWith("%"), i = t.match(/^([^#0.,%]+)/), a = i ? i[1] : "", o = t.replace(/^[^#0.,%]+/, "").replace(/%$/, ""), s = o.match(/\.([0#]+)$/), c = s ? s[1].length : 0, u = {
1593
925
  minimumFractionDigits: c,
1594
926
  maximumFractionDigits: c,
1595
927
  useGrouping: o.includes(",")
1596
- }, u;
1597
- return r ? u = new Intl.NumberFormat(y.get(), {
1598
- ...l,
928
+ }, d;
929
+ return r ? d = new Intl.NumberFormat(l.get(), {
930
+ ...u,
1599
931
  style: "percent"
1600
- }).format(n) : (u = new Intl.NumberFormat(y.get(), l).format(n), a && (u = a + u)), u + "";
932
+ }).format(n) : (d = new Intl.NumberFormat(l.get(), u).format(n), a && (d = a + d)), d + "";
1601
933
  }
1602
- function C(e, t) {
934
+ function y(e, t) {
1603
935
  let n;
1604
936
  if (e instanceof Date) n = e;
1605
937
  else if (typeof e == "string" || typeof e == "number") n = new Date(e);
@@ -1609,43 +941,27 @@ function C(e, t) {
1609
941
  return t.replace("yyyy", r).replace("yy", i).replace("MM", a).replace("dd", o).replace("HH", s).replace("hh", c).replace("mm", l).replace("ss", u);
1610
942
  }
1611
943
  //#endregion
1612
- //#region node_modules/@iyulab/components/dist/utilities/format.js
1613
- function w(e) {
1614
- let [t, n, r] = e.split("-").map(Number);
1615
- return Number.isNaN(t) || Number.isNaN(n) || Number.isNaN(r) ? new Date(e) : new Date(t, n - 1, r);
1616
- }
1617
- function T(e) {
1618
- return typeof e == "string" ? w(e) : e;
1619
- }
1620
- function E(e, t, n) {
1621
- return new Intl.NumberFormat(n ?? y.get(), t).format(e);
1622
- }
1623
- function D(e, t, n) {
1624
- let r = T(e);
1625
- return Number.isNaN(r.getTime()) ? String(e) : new Intl.DateTimeFormat(n ?? y.get(), t).format(r);
1626
- }
1627
- //#endregion
1628
944
  //#region src/renderers/cell-renderer.ts
1629
- function O(e, t, n) {
1630
- return n.render ? n.render(e, t, n) : n.format ? typeof n.format == "function" ? n.format(e, t, n) : b(e, n.format) : ee(e, n);
945
+ function b(e, t, n) {
946
+ return n.render ? n.render(e, t, n) : n.format ? typeof n.format == "function" ? n.format(e, t, n) : g(e, n.format) : x(e, n);
1631
947
  }
1632
- function ee(e, t) {
948
+ function x(e, t) {
1633
949
  if (e == null) return "";
1634
950
  switch (t.type) {
1635
- case "number": return re(e);
951
+ case "number": return w(e);
1636
952
  case "boolean": return i`<span class="ft-bool">${e ? "✔" : ""}</span>`;
1637
- case "date": return ie(e);
1638
- case "datetime": return ae(e);
1639
- case "select": return te(e, t);
953
+ case "date": return T(e);
954
+ case "datetime": return E(e);
955
+ case "select": return S(e, t);
1640
956
  default: return String(e);
1641
957
  }
1642
958
  }
1643
- function te(e, t) {
959
+ function S(e, t) {
1644
960
  if (!t.options || t.options.length === 0 || typeof t.options[0] == "string") return e == null ? "" : String(e);
1645
961
  let n = t.options.find((t) => t.value === e);
1646
962
  return n ? n.label : e == null ? "" : String(e);
1647
963
  }
1648
- var ne = {
964
+ var C = {
1649
965
  year: "numeric",
1650
966
  month: "numeric",
1651
967
  day: "numeric",
@@ -1653,19 +969,19 @@ var ne = {
1653
969
  minute: "numeric",
1654
970
  second: "numeric"
1655
971
  };
1656
- function re(e) {
1657
- return typeof e == "number" ? Number.isInteger(e) ? E(e) : E(e, { minimumFractionDigits: 1 }) : String(e);
972
+ function w(e) {
973
+ return typeof e == "number" ? Number.isInteger(e) ? d(e) : d(e, { minimumFractionDigits: 1 }) : String(e);
1658
974
  }
1659
- function ie(e) {
1660
- return e instanceof Date || typeof e == "string" ? D(e) : String(e);
975
+ function T(e) {
976
+ return e instanceof Date || typeof e == "string" ? u(e) : String(e);
1661
977
  }
1662
- function ae(e) {
1663
- return e instanceof Date || typeof e == "string" ? D(e, ne) : String(e);
978
+ function E(e) {
979
+ return e instanceof Date || typeof e == "string" ? u(e, C) : String(e);
1664
980
  }
1665
981
  //#endregion
1666
982
  //#region src/locale.ts
1667
- var k = y.namespace("flex-table");
1668
- k.register("en", {
983
+ var D = l.namespace("flex-table");
984
+ D.register("en", {
1669
985
  showHiddenColumns: "Show hidden column(s)",
1670
986
  columnMenu: "Column menu",
1671
987
  cellActions: "Cell actions",
@@ -1718,7 +1034,7 @@ k.register("en", {
1718
1034
  booleanTrue: "True",
1719
1035
  booleanFalse: "False",
1720
1036
  dropFileToImport: "Drop file to import (.xlsx / .csv)"
1721
- }), k.register("ko", {
1037
+ }), D.register("ko", {
1722
1038
  showHiddenColumns: "숨긴 열 보기",
1723
1039
  columnMenu: "열 메뉴",
1724
1040
  cellActions: "셀 작업",
@@ -1772,10 +1088,10 @@ k.register("en", {
1772
1088
  booleanFalse: "거짓",
1773
1089
  dropFileToImport: "가져올 파일을 놓으세요 (.xlsx / .csv)"
1774
1090
  });
1775
- var A = (e, t) => k.text(e, t);
1091
+ var O = (e, t) => D.text(e, t);
1776
1092
  //#endregion
1777
1093
  //#region src/core/selection.ts
1778
- function oe(e) {
1094
+ function ee(e) {
1779
1095
  return {
1780
1096
  startRow: Math.min(e.startRow, e.endRow),
1781
1097
  startCol: Math.min(e.startCol, e.endCol),
@@ -1783,7 +1099,7 @@ function oe(e) {
1783
1099
  endCol: Math.max(e.startCol, e.endCol)
1784
1100
  };
1785
1101
  }
1786
- var se = class {
1102
+ var te = class {
1787
1103
  constructor() {
1788
1104
  this.activeCell = null, this.rangeAnchor = null, this.range = null, this.extraRanges = [], this._rowCount = 0, this._colCount = 0;
1789
1105
  }
@@ -1810,7 +1126,7 @@ var se = class {
1810
1126
  return e < 0 || e >= this._rowCount || t < 0 || t >= this._colCount ? this.activeCell : (!this.rangeAnchor && this.activeCell && (this.rangeAnchor = { ...this.activeCell }), this.activeCell = {
1811
1127
  row: e,
1812
1128
  col: t
1813
- }, this.rangeAnchor && (this.range = oe({
1129
+ }, this.rangeAnchor && (this.range = ee({
1814
1130
  startRow: this.rangeAnchor.row,
1815
1131
  startCol: this.rangeAnchor.col,
1816
1132
  endRow: e,
@@ -1881,7 +1197,7 @@ var se = class {
1881
1197
  shiftMoveRight() {
1882
1198
  return this.activeCell ? this.setActiveWithRange(this.activeCell.row, this.activeCell.col + 1) : null;
1883
1199
  }
1884
- }, ce = class {
1200
+ }, ne = class {
1885
1201
  constructor() {
1886
1202
  this.current = null;
1887
1203
  }
@@ -1902,7 +1218,7 @@ var se = class {
1902
1218
  let e = this.current;
1903
1219
  return this.current = null, e;
1904
1220
  }
1905
- }, j = class {
1221
+ }, k = class {
1906
1222
  constructor() {
1907
1223
  this._selected = /* @__PURE__ */ new Set(), this._mode = "multi", this._rowCount = 0;
1908
1224
  }
@@ -1963,7 +1279,7 @@ var se = class {
1963
1279
  };
1964
1280
  //#endregion
1965
1281
  //#region src/core/filtering.ts
1966
- function le(e, t, n) {
1282
+ function re(e, t, n) {
1967
1283
  if (t.length === 0) return Array.from({ length: e.length }, (e, t) => t);
1968
1284
  let r = [];
1969
1285
  for (let i = 0; i < e.length; i++) {
@@ -1982,9 +1298,9 @@ function le(e, t, n) {
1982
1298
  }
1983
1299
  //#endregion
1984
1300
  //#region src/core/undo.ts
1985
- var ue = 100, M = class {
1301
+ var ie = 100, A = class {
1986
1302
  constructor() {
1987
- this._undoStack = [], this._redoStack = [], this._maxSize = ue;
1303
+ this._undoStack = [], this._redoStack = [], this._maxSize = ie;
1988
1304
  }
1989
1305
  get maxSize() {
1990
1306
  return this._maxSize;
@@ -2021,7 +1337,7 @@ var ue = 100, M = class {
2021
1337
  };
2022
1338
  //#endregion
2023
1339
  //#region src/clipboard/clipboard.ts
2024
- function de(e, t, n) {
1340
+ function ae(e, t, n) {
2025
1341
  let r = [];
2026
1342
  for (let i = n.startRow; i <= n.endRow; i++) {
2027
1343
  let a = e[i], o = [];
@@ -2029,41 +1345,11 @@ function de(e, t, n) {
2029
1345
  let n = a[t[e].key];
2030
1346
  o.push(n == null ? "" : String(n));
2031
1347
  }
2032
- r.push(o.join(" "));
2033
- }
2034
- return r.join("\n");
2035
- }
2036
- function N(e) {
2037
- let t = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n"), n = [], r = [], i = 0, a = t.length;
2038
- for (; i <= a;) {
2039
- if (i === a) {
2040
- (r.length > 0 || n.length > 0) && n.push(r);
2041
- break;
2042
- }
2043
- if (t[i] === "\"") {
2044
- let e = "";
2045
- for (i++; i < a;) if (t[i] === "\"") {
2046
- if (i + 1 < a && t[i + 1] === "\"") e += "\"", i += 2;
2047
- else {
2048
- i++;
2049
- break;
2050
- }
2051
- } else e += t[i], i++;
2052
- r.push(e), i < a && t[i] === " " ? i++ : i < a && t[i] === "\n" && (n.push(r), r = [], i++);
2053
- } else {
2054
- let e = "";
2055
- for (; i < a && t[i] !== " " && t[i] !== "\n";) e += t[i], i++;
2056
- r.push(e), i < a && t[i] === " " ? i++ : i < a && t[i] === "\n" && (n.push(r), r = [], i++);
2057
- }
2058
- }
2059
- for (; n.length > 0;) {
2060
- let e = n[n.length - 1];
2061
- if (e.length === 0 || e.length === 1 && e[0] === "") n.pop();
2062
- else break;
1348
+ r.push(o);
2063
1349
  }
2064
- return n;
1350
+ return p(r);
2065
1351
  }
2066
- function P(e, t) {
1352
+ function j(e, t) {
2067
1353
  if (e === "") return null;
2068
1354
  switch (t.type) {
2069
1355
  case "number": {
@@ -2076,7 +1362,7 @@ function P(e, t) {
2076
1362
  }
2077
1363
  //#endregion
2078
1364
  //#region src/export/xlsx-writer.ts
2079
- var fe = (() => {
1365
+ var M = (() => {
2080
1366
  let e = /* @__PURE__ */ new Uint32Array(256);
2081
1367
  for (let t = 0; t < 256; t++) {
2082
1368
  let n = t;
@@ -2085,56 +1371,56 @@ var fe = (() => {
2085
1371
  }
2086
1372
  return e;
2087
1373
  })();
2088
- function pe(e) {
1374
+ function oe(e) {
2089
1375
  let t = 4294967295;
2090
- for (let n = 0; n < e.length; n++) t = fe[(t ^ e[n]) & 255] ^ t >>> 8;
1376
+ for (let n = 0; n < e.length; n++) t = M[(t ^ e[n]) & 255] ^ t >>> 8;
2091
1377
  return (t ^ 4294967295) >>> 0;
2092
1378
  }
2093
- var F = new TextEncoder();
2094
- function me(e) {
1379
+ var N = new TextEncoder();
1380
+ function se(e) {
2095
1381
  let t = [], n = [], r = 0;
2096
1382
  for (let i of e) {
2097
- let e = F.encode(i.name), a = pe(i.data), o = i.data.length, s = new ArrayBuffer(30 + e.length), c = new DataView(s);
1383
+ let e = N.encode(i.name), a = oe(i.data), o = i.data.length, s = new ArrayBuffer(30 + e.length), c = new DataView(s);
2098
1384
  c.setUint32(0, 67324752, !0), c.setUint16(4, 20, !0), c.setUint16(6, 0, !0), c.setUint16(8, 0, !0), c.setUint16(10, 0, !0), c.setUint16(12, 33, !0), c.setUint32(14, a, !0), c.setUint32(18, o, !0), c.setUint32(22, o, !0), c.setUint16(26, e.length, !0), c.setUint16(28, 0, !0), new Uint8Array(s, 30).set(e), t.push(new Uint8Array(s)), t.push(i.data);
2099
1385
  let l = new ArrayBuffer(46 + e.length), u = new DataView(l);
2100
1386
  u.setUint32(0, 33639248, !0), u.setUint16(4, 20, !0), u.setUint16(6, 20, !0), u.setUint16(8, 0, !0), u.setUint16(10, 0, !0), u.setUint16(12, 0, !0), u.setUint16(14, 33, !0), u.setUint32(16, a, !0), u.setUint32(20, o, !0), u.setUint32(24, o, !0), u.setUint16(28, e.length, !0), u.setUint16(30, 0, !0), u.setUint16(32, 0, !0), u.setUint16(34, 0, !0), u.setUint16(36, 0, !0), u.setUint32(38, 0, !0), u.setUint32(42, r, !0), new Uint8Array(l, 46).set(e), n.push(new Uint8Array(l)), r += 30 + e.length + o;
2101
1387
  }
2102
- let i = I(n), a = /* @__PURE__ */ new ArrayBuffer(22), o = new DataView(a);
2103
- return o.setUint32(0, 101010256, !0), o.setUint16(4, 0, !0), o.setUint16(6, 0, !0), o.setUint16(8, e.length, !0), o.setUint16(10, e.length, !0), o.setUint32(12, i.length, !0), o.setUint32(16, r, !0), o.setUint16(20, 0, !0), I([
1388
+ let i = P(n), a = /* @__PURE__ */ new ArrayBuffer(22), o = new DataView(a);
1389
+ return o.setUint32(0, 101010256, !0), o.setUint16(4, 0, !0), o.setUint16(6, 0, !0), o.setUint16(8, e.length, !0), o.setUint16(10, e.length, !0), o.setUint32(12, i.length, !0), o.setUint32(16, r, !0), o.setUint16(20, 0, !0), P([
2104
1390
  ...t,
2105
1391
  i,
2106
1392
  new Uint8Array(a)
2107
1393
  ]);
2108
1394
  }
2109
- function I(e) {
1395
+ function P(e) {
2110
1396
  let t = e.reduce((e, t) => e + t.length, 0), n = new Uint8Array(t), r = 0;
2111
1397
  for (let t of e) n.set(t, r), r += t.length;
2112
1398
  return n;
2113
1399
  }
2114
- function L(e) {
1400
+ function F(e) {
2115
1401
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
2116
1402
  }
2117
- function he(e) {
1403
+ function ce(e) {
2118
1404
  let t = "";
2119
1405
  for (e++; e > 0;) t = String.fromCharCode(64 + (e % 26 || 26)) + t, e = Math.floor((e - 1) / 26);
2120
1406
  return t;
2121
1407
  }
2122
- function R(e, t) {
2123
- return he(t) + (e + 1);
1408
+ function I(e, t) {
1409
+ return ce(t) + (e + 1);
2124
1410
  }
2125
- function ge(e) {
1411
+ function le(e) {
2126
1412
  let t = Date.UTC(1899, 11, 30);
2127
1413
  return (e.getTime() - t) / 864e5;
2128
1414
  }
2129
- var _e = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\n <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\n <Default Extension=\"xml\" ContentType=\"application/xml\"/>\n <Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>\n <Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>\n <Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>\n</Types>", ve = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>\n</Relationships>", ye = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\n <sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>\n</workbook>", be = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>\n <Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>\n</Relationships>", xe = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<styleSheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">\n <numFmts count=\"1\"><numFmt numFmtId=\"164\" formatCode=\"yyyy-mm-dd\"/></numFmts>\n <fonts count=\"2\">\n <font><sz val=\"11\"/><name val=\"Calibri\"/></font>\n <font><sz val=\"11\"/><b/><name val=\"Calibri\"/></font>\n </fonts>\n <fills count=\"2\">\n <fill><patternFill patternType=\"none\"/></fill>\n <fill><patternFill patternType=\"gray125\"/></fill>\n </fills>\n <borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>\n <cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>\n <cellXfs count=\"3\">\n <xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\"/>\n <xf numFmtId=\"164\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\" applyNumberFormat=\"1\"/>\n <xf numFmtId=\"0\" fontId=\"1\" fillId=\"0\" borderId=\"0\" xfId=\"0\" applyFont=\"1\"/>\n </cellXfs>\n</styleSheet>";
2130
- function Se(e, t) {
2131
- let n = [], r = t.map((e, t) => `<c r="${R(0, t)}" t="str" s="2"><v>${L(e.label)}</v></c>`);
1415
+ var ue = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\n <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\n <Default Extension=\"xml\" ContentType=\"application/xml\"/>\n <Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>\n <Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>\n <Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>\n</Types>", de = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>\n</Relationships>", fe = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\n <sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>\n</workbook>", pe = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>\n <Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>\n</Relationships>", L = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<styleSheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">\n <numFmts count=\"1\"><numFmt numFmtId=\"164\" formatCode=\"yyyy-mm-dd\"/></numFmts>\n <fonts count=\"2\">\n <font><sz val=\"11\"/><name val=\"Calibri\"/></font>\n <font><sz val=\"11\"/><b/><name val=\"Calibri\"/></font>\n </fonts>\n <fills count=\"2\">\n <fill><patternFill patternType=\"none\"/></fill>\n <fill><patternFill patternType=\"gray125\"/></fill>\n </fills>\n <borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>\n <cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>\n <cellXfs count=\"3\">\n <xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\"/>\n <xf numFmtId=\"164\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\" applyNumberFormat=\"1\"/>\n <xf numFmtId=\"0\" fontId=\"1\" fillId=\"0\" borderId=\"0\" xfId=\"0\" applyFont=\"1\"/>\n </cellXfs>\n</styleSheet>";
1416
+ function R(e, t) {
1417
+ let n = [], r = t.map((e, t) => `<c r="${I(0, t)}" t="str" s="2"><v>${F(e.label)}</v></c>`);
2132
1418
  return n.push(`<row r="1">${r.join("")}</row>`), e.forEach((e, r) => {
2133
1419
  let i = t.map((t, n) => {
2134
- let i = R(r + 1, n), a = e[t.key];
1420
+ let i = I(r + 1, n), a = e[t.key];
2135
1421
  if (a == null) return `<c r="${i}" t="str"><v></v></c>`;
2136
1422
  let o = t.type ?? "text";
2137
- return o === "number" && typeof a == "number" ? `<c r="${i}"><v>${a}</v></c>` : (o === "date" || o === "datetime") && a instanceof Date ? `<c r="${i}" s="1"><v>${ge(a).toFixed(6)}</v></c>` : o === "boolean" ? `<c r="${i}" t="b"><v>${+!!a}</v></c>` : `<c r="${i}" t="str"><v>${L(String(a))}</v></c>`;
1423
+ return o === "number" && typeof a == "number" ? `<c r="${i}"><v>${a}</v></c>` : (o === "date" || o === "datetime") && a instanceof Date ? `<c r="${i}" s="1"><v>${le(a).toFixed(6)}</v></c>` : o === "boolean" ? `<c r="${i}" t="b"><v>${+!!a}</v></c>` : `<c r="${i}" t="str"><v>${F(String(a))}</v></c>`;
2138
1424
  });
2139
1425
  n.push(`<row r="${r + 2}">${i.join("")}</row>`);
2140
1426
  }), `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -2142,55 +1428,55 @@ function Se(e, t) {
2142
1428
  <sheetData>${n.join("")}</sheetData>
2143
1429
  </worksheet>`;
2144
1430
  }
2145
- function Ce(e, t) {
2146
- let n = Se(e, t);
2147
- return me([
1431
+ function z(e, t) {
1432
+ let n = R(e, t);
1433
+ return se([
2148
1434
  {
2149
1435
  name: "[Content_Types].xml",
2150
- data: F.encode(_e)
1436
+ data: N.encode(ue)
2151
1437
  },
2152
1438
  {
2153
1439
  name: "_rels/.rels",
2154
- data: F.encode(ve)
1440
+ data: N.encode(de)
2155
1441
  },
2156
1442
  {
2157
1443
  name: "xl/workbook.xml",
2158
- data: F.encode(ye)
1444
+ data: N.encode(fe)
2159
1445
  },
2160
1446
  {
2161
1447
  name: "xl/_rels/workbook.xml.rels",
2162
- data: F.encode(be)
1448
+ data: N.encode(pe)
2163
1449
  },
2164
1450
  {
2165
1451
  name: "xl/worksheets/sheet1.xml",
2166
- data: F.encode(n)
1452
+ data: N.encode(n)
2167
1453
  },
2168
1454
  {
2169
1455
  name: "xl/styles.xml",
2170
- data: F.encode(xe)
1456
+ data: N.encode(L)
2171
1457
  }
2172
1458
  ]);
2173
1459
  }
2174
1460
  //#endregion
2175
1461
  //#region src/export/export.ts
2176
- function z(e, t, n) {
1462
+ function B(e, t, n) {
2177
1463
  switch (n) {
2178
- case "csv": return B(e, t, ",");
2179
- case "tsv": return B(e, t, " ");
2180
- case "json": return Te(e, t);
2181
- case "xlsx": return Ce(e, t);
1464
+ case "csv": return V(e, t, ",");
1465
+ case "tsv": return V(e, t, " ");
1466
+ case "json": return he(e, t);
1467
+ case "xlsx": return z(e, t);
2182
1468
  }
2183
1469
  }
2184
- function we(e, t) {
1470
+ function me(e, t) {
2185
1471
  return e == null ? "" : (t.type === "date" || t.type === "datetime") && e instanceof Date ? e.toISOString() : String(e);
2186
1472
  }
2187
- function B(e, t, n) {
2188
- return [t.map((e) => V(e.label, n)).join(n), ...e.map((e) => t.map((t) => V(we(e[t.key], t), n)).join(n))].join("\n");
1473
+ function V(e, t, n) {
1474
+ return [t.map((e) => H(e.label, n)).join(n), ...e.map((e) => t.map((t) => H(me(e[t.key], t), n)).join(n))].join("\n");
2189
1475
  }
2190
- function V(e, t) {
1476
+ function H(e, t) {
2191
1477
  return e.includes(t) || e.includes("\"") || e.includes("\n") || e.includes("\r") ? "\"" + e.replace(/"/g, "\"\"") + "\"" : e;
2192
1478
  }
2193
- function Te(e, t) {
1479
+ function he(e, t) {
2194
1480
  let n = e.map((e) => {
2195
1481
  let n = {};
2196
1482
  for (let r of t) {
@@ -2201,35 +1487,35 @@ function Te(e, t) {
2201
1487
  });
2202
1488
  return JSON.stringify(n, null, 2);
2203
1489
  }
2204
- function Ee(e, t, n) {
1490
+ function ge(e, t, n) {
2205
1491
  let r = new Blob([e], { type: n }), i = URL.createObjectURL(r), a = document.createElement("a");
2206
1492
  a.href = i, a.download = t, a.style.display = "none", document.body.appendChild(a), a.click(), document.body.removeChild(a), setTimeout(() => URL.revokeObjectURL(i), 100);
2207
1493
  }
2208
- var De = {
1494
+ var _e = {
2209
1495
  csv: "text/csv;charset=utf-8",
2210
1496
  tsv: "text/tab-separated-values;charset=utf-8",
2211
1497
  json: "application/json;charset=utf-8",
2212
1498
  xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
2213
- }, Oe = {
1499
+ }, ve = {
2214
1500
  csv: ".csv",
2215
1501
  tsv: ".tsv",
2216
1502
  json: ".json",
2217
1503
  xlsx: ".xlsx"
2218
1504
  };
2219
- function ke(e) {
2220
- return De[e];
1505
+ function ye(e) {
1506
+ return _e[e];
2221
1507
  }
2222
- function Ae(e) {
2223
- return Oe[e];
1508
+ function be(e) {
1509
+ return ve[e];
2224
1510
  }
2225
1511
  //#endregion
2226
1512
  //#region src/export/xlsx-reader.ts
2227
- function je(e) {
1513
+ function xe(e) {
2228
1514
  for (let t = e.byteLength - 22; t >= 0; t--) if (e.getUint32(t, !0) === 101010256) return t;
2229
1515
  throw Error("XLSX: End of central directory not found — not a valid ZIP file");
2230
1516
  }
2231
- function Me(e) {
2232
- let t = je(e), n = e.getUint32(t + 16, !0), r = e.getUint32(t + 12, !0), i = new TextDecoder("utf-8"), a = [], o = n, s = n + r;
1517
+ function Se(e) {
1518
+ let t = xe(e), n = e.getUint32(t + 16, !0), r = e.getUint32(t + 12, !0), i = new TextDecoder("utf-8"), a = [], o = n, s = n + r;
2233
1519
  for (; o < s && e.getUint32(o, !0) === 33639248;) {
2234
1520
  let t = e.getUint16(o + 10, !0), n = e.getUint32(o + 20, !0), r = e.getUint32(o + 24, !0), s = e.getUint16(o + 28, !0), c = e.getUint16(o + 30, !0), l = e.getUint16(o + 32, !0), u = e.getUint32(o + 42, !0), d = i.decode(new Uint8Array(e.buffer, o + 46, s));
2235
1521
  a.push({
@@ -2242,7 +1528,7 @@ function Me(e) {
2242
1528
  }
2243
1529
  return a;
2244
1530
  }
2245
- async function Ne(e) {
1531
+ async function Ce(e) {
2246
1532
  let t = new DecompressionStream("deflate-raw"), n = t.writable.getWriter(), r = t.readable.getReader();
2247
1533
  n.write(e), n.close();
2248
1534
  let i = [];
@@ -2255,28 +1541,28 @@ async function Ne(e) {
2255
1541
  for (let e of i) o.set(e, s), s += e.length;
2256
1542
  return o;
2257
1543
  }
2258
- async function Pe(e, t) {
1544
+ async function we(e, t) {
2259
1545
  let n = t.localHeaderOffset, r = e.getUint16(n + 26, !0), i = e.getUint16(n + 28, !0), a = n + 30 + r + i, o = new Uint8Array(e.buffer, a, t.compressedSize);
2260
1546
  if (t.compressionMethod === 0) return o.slice();
2261
- if (t.compressionMethod === 8) return Ne(o);
1547
+ if (t.compressionMethod === 8) return Ce(o);
2262
1548
  throw Error(`XLSX: Unsupported compression method ${t.compressionMethod}`);
2263
1549
  }
2264
- async function Fe(e) {
2265
- let t = new DataView(e), n = Me(t), r = /* @__PURE__ */ new Map();
2266
- for (let e of n) e.compressedSize === 0 && e.name.endsWith("/") || r.set(e.name, await Pe(t, e));
1550
+ async function Te(e) {
1551
+ let t = new DataView(e), n = Se(t), r = /* @__PURE__ */ new Map();
1552
+ for (let e of n) e.compressedSize === 0 && e.name.endsWith("/") || r.set(e.name, await we(t, e));
2267
1553
  return r;
2268
1554
  }
2269
- var Ie = new TextDecoder("utf-8");
2270
- function H(e) {
2271
- let t = Ie.decode(e);
1555
+ var Ee = new TextDecoder("utf-8");
1556
+ function U(e) {
1557
+ let t = Ee.decode(e);
2272
1558
  return new DOMParser().parseFromString(t, "application/xml");
2273
1559
  }
2274
- function Le(e) {
1560
+ function De(e) {
2275
1561
  if (!e) return [];
2276
- let t = H(e);
1562
+ let t = U(e);
2277
1563
  return Array.from(t.querySelectorAll("si")).map((e) => Array.from(e.querySelectorAll("t")).map((e) => e.textContent ?? "").join(""));
2278
1564
  }
2279
- var Re = /* @__PURE__ */ new Set([
1565
+ var Oe = /* @__PURE__ */ new Set([
2280
1566
  14,
2281
1567
  15,
2282
1568
  16,
@@ -2296,37 +1582,37 @@ var Re = /* @__PURE__ */ new Set([
2296
1582
  57,
2297
1583
  58
2298
1584
  ]);
2299
- function ze(e) {
1585
+ function ke(e) {
2300
1586
  let t = e.replace(/"[^"]*"/g, "").replace(/\\./g, "").replace(/\[[^\]]*\]/g, "").split(";")[0];
2301
1587
  return /[dy]/i.test(t);
2302
1588
  }
2303
- function Be(e) {
1589
+ function Ae(e) {
2304
1590
  let t = /* @__PURE__ */ new Set();
2305
1591
  if (!e) return t;
2306
- let n = H(e), r = /* @__PURE__ */ new Map();
1592
+ let n = U(e), r = /* @__PURE__ */ new Map();
2307
1593
  for (let e of Array.from(n.querySelectorAll("numFmts > numFmt"))) r.set(parseInt(e.getAttribute("numFmtId") ?? "", 10), e.getAttribute("formatCode") ?? "");
2308
1594
  return Array.from(n.querySelectorAll("cellXfs > xf")).forEach((e, n) => {
2309
1595
  let i = parseInt(e.getAttribute("numFmtId") ?? "0", 10), a = r.get(i);
2310
- (a === void 0 ? Re.has(i) : ze(a)) && t.add(n);
1596
+ (a === void 0 ? Oe.has(i) : ke(a)) && t.add(n);
2311
1597
  }), t;
2312
1598
  }
2313
- function Ve(e) {
1599
+ function je(e) {
2314
1600
  if (!e) return !1;
2315
- let t = H(e).querySelector("workbookPr")?.getAttribute("date1904");
1601
+ let t = U(e).querySelector("workbookPr")?.getAttribute("date1904");
2316
1602
  return t === "1" || t === "true";
2317
1603
  }
2318
- function He(e, t) {
1604
+ function Me(e, t) {
2319
1605
  return new Date((t ? Date.UTC(1904, 0, 1) : Date.UTC(1899, 11, 30)) + Math.floor(e) * 864e5).toISOString().slice(0, 10);
2320
1606
  }
2321
- function Ue(e, t, n, r) {
2322
- let i = H(e).querySelectorAll("row");
1607
+ function Ne(e, t, n, r) {
1608
+ let i = U(e).querySelectorAll("row");
2323
1609
  if (i.length === 0) return [];
2324
1610
  let a = 0, o = /* @__PURE__ */ new Map();
2325
1611
  for (let e of i) {
2326
1612
  let i = parseInt(e.getAttribute("r") ?? "1", 10) - 1, s = /* @__PURE__ */ new Map();
2327
1613
  o.set(i, s);
2328
1614
  for (let i of e.querySelectorAll("c")) {
2329
- let e = We(i.getAttribute("r") ?? "");
1615
+ let e = W(i.getAttribute("r") ?? "");
2330
1616
  e > a && (a = e);
2331
1617
  let o = i.getAttribute("t") ?? "", c = i.getAttribute("s") ?? "", l = i.querySelector("v")?.textContent ?? "", u = i.querySelector("is > t")?.textContent ?? null, d;
2332
1618
  if (o === "s") d = t[parseInt(l, 10)] ?? "";
@@ -2335,7 +1621,7 @@ function Ue(e, t, n, r) {
2335
1621
  else if (l === "") d = "";
2336
1622
  else {
2337
1623
  let e = parseFloat(l);
2338
- d = c !== "" && n.has(parseInt(c, 10)) && !isNaN(e) && e >= 0 ? He(e, r) : l;
1624
+ d = c !== "" && n.has(parseInt(c, 10)) && !isNaN(e) && e >= 0 ? Me(e, r) : l;
2339
1625
  }
2340
1626
  s.set(e, d);
2341
1627
  }
@@ -2349,13 +1635,13 @@ function Ue(e, t, n, r) {
2349
1635
  }
2350
1636
  return c;
2351
1637
  }
2352
- function We(e) {
1638
+ function W(e) {
2353
1639
  let t = 0, n = 0;
2354
1640
  for (; n < e.length && e[n] >= "A" && e[n] <= "Z";) t = t * 26 + (e.charCodeAt(n) - 64), n++;
2355
1641
  return t - 1;
2356
1642
  }
2357
- async function U(e) {
2358
- let t = await Fe(e), n = Le(t.get("xl/sharedStrings.xml")), r = t.get("xl/worksheets/sheet1.xml");
1643
+ async function Pe(e) {
1644
+ let t = await Te(e), n = De(t.get("xl/sharedStrings.xml")), r = t.get("xl/worksheets/sheet1.xml");
2359
1645
  if (!r) {
2360
1646
  for (let [e, n] of t) if (e.toLowerCase().includes("worksheets/sheet")) {
2361
1647
  r = n;
@@ -2363,7 +1649,7 @@ async function U(e) {
2363
1649
  }
2364
1650
  }
2365
1651
  if (!r) throw Error("XLSX: No worksheet found");
2366
- let i = Be(t.get("xl/styles.xml")), a = Ve(t.get("xl/workbook.xml")), o = Ue(r, n, i, a);
1652
+ let i = Ae(t.get("xl/styles.xml")), a = je(t.get("xl/workbook.xml")), o = Ne(r, n, i, a);
2367
1653
  return o.length === 0 ? {
2368
1654
  headers: [],
2369
1655
  rows: []
@@ -2374,13 +1660,8 @@ async function U(e) {
2374
1660
  }
2375
1661
  //#endregion
2376
1662
  //#region src/models/types.ts
2377
- function W(e) {
2378
- return e.align ? e.align : e.type === "number" ? "end" : e.type === "boolean" ? "center" : "start";
2379
- }
2380
- //#endregion
2381
- //#region node_modules/@iyulab/components/dist/utilities/keyboard.js
2382
1663
  function G(e) {
2383
- return e.isComposing || e.keyCode === 229;
1664
+ return e.align ? e.align : e.type === "number" ? "end" : e.type === "boolean" ? "center" : "start";
2384
1665
  }
2385
1666
  //#endregion
2386
1667
  //#region \0@oxc-project+runtime@0.151.0/helpers/esm/decorate.js
@@ -2399,14 +1680,14 @@ var q = {
2399
1680
  lt: "<",
2400
1681
  gte: "≥",
2401
1682
  lte: "≤"
2402
- }, J = 120, Y = 40, X = 20, Z = 32, Q = 5, Ge = 200, $ = class extends n {
1683
+ }, J = 120, Y = 40, X = 20, Z = 32, Q = 5, Fe = 200, $ = class extends n {
2403
1684
  constructor(...e) {
2404
- super(...e), this.columns = [], this._data = [], this._inUndoRedo = !1, this.clearUndoOnDataChange = !1, this.clearSelectionOnDataChange = !1, this._rowHeightFromCss = Z, this.showRowNumbers = !1, this.theme = void 0, this.maxRows = 0, this.editable = !0, this.showFilters = !1, this.showContextMenu = !1, this.frozenRows = 0, this.emptyMessage = "No data", this.noMatchingMessage = "No matching data", this.loading = !1, this.importEnabled = !1, this.selectable = !1, this.dataMode = "client", this.footerData = null, this.stylesheets = [], this._scrollTop = 0, this._scrollLeft = 0, this._viewportHeight = 0, this._viewportWidth = 0, this._colLeftOffsets = [], this._totalRowWidth = 0, this._baseStyleSheets = [], this._activeCell = null, this._editingCell = null, this._sortCriteria = [], this._selection = new se(), this._editing = new ce(), this._rowSelection = new j(), this._undo = new M(), this._filters = [], this._filteredIndices = [], this._sortedIndices = [], this._openFilterKey = null, this._rowSelectionVersion = 0, this._lastCheckboxRowIndex = null, this._checkboxShiftPending = !1, this._autocompleteState = null, this._headerMenu = null, this._bodyContextMenu = null, this._commentPopup = null, this._viewDirty = !0, this._isDragging = !1, this._wasDrag = !1, this._resizing = null, this._resizeCleanup = null, this._wasHeaderDrag = !1, this._wasRowDrag = !1, this._colDrag = null, this._colDragIndicatorLeft = null, this._fillDrag = null, this._rowDrag = null, this._rowDragIndicatorY = null, this._findState = null, this._columnWidths = /* @__PURE__ */ new Map(), this._hostResizeObserver = null, this._comments = /* @__PURE__ */ new Map(), this._isDragOver = !1, this._warnedUnconstrained = !1, this._onCommentPopupOutsideClick = () => {
1685
+ super(...e), this.columns = [], this._data = [], this._inUndoRedo = !1, this.clearUndoOnDataChange = !1, this.clearSelectionOnDataChange = !1, this._rowHeightFromCss = Z, this.showRowNumbers = !1, this.theme = void 0, this.maxRows = 0, this.editable = !0, this.showFilters = !1, this.showContextMenu = !1, this.frozenRows = 0, this.emptyMessage = "No data", this.noMatchingMessage = "No matching data", this.loading = !1, this.importEnabled = !1, this.selectable = !1, this.dataMode = "client", this.footerData = null, this.stylesheets = [], this._scrollTop = 0, this._scrollLeft = 0, this._viewportHeight = 0, this._viewportWidth = 0, this._colLeftOffsets = [], this._totalRowWidth = 0, this._baseStyleSheets = [], this._activeCell = null, this._editingCell = null, this._sortCriteria = [], this._selection = new te(), this._editing = new ne(), this._rowSelection = new k(), this._undo = new A(), this._filters = [], this._filteredIndices = [], this._sortedIndices = [], this._openFilterKey = null, this._rowSelectionVersion = 0, this._lastCheckboxRowIndex = null, this._checkboxShiftPending = !1, this._autocompleteState = null, this._headerMenu = null, this._bodyContextMenu = null, this._commentPopup = null, this._viewDirty = !0, this._isDragging = !1, this._wasDrag = !1, this._resizing = null, this._resizeCleanup = null, this._wasHeaderDrag = !1, this._wasRowDrag = !1, this._colDrag = null, this._colDragIndicatorLeft = null, this._fillDrag = null, this._rowDrag = null, this._rowDragIndicatorY = null, this._findState = null, this._columnWidths = /* @__PURE__ */ new Map(), this._hostResizeObserver = null, this._comments = /* @__PURE__ */ new Map(), this._isDragOver = !1, this._warnedUnconstrained = !1, this._onCommentPopupOutsideClick = () => {
2405
1686
  this._commitCommentPopup();
2406
1687
  }, this._invalidCells = /* @__PURE__ */ new Map(), this._textFilterState = /* @__PURE__ */ new Map(), this._numberFilterState = /* @__PURE__ */ new Map(), this._dateFilterState = /* @__PURE__ */ new Map(), this._emptyFilterState = /* @__PURE__ */ new Map();
2407
1688
  }
2408
1689
  static {
2409
- this.styles = l;
1690
+ this.styles = h;
2410
1691
  }
2411
1692
  get data() {
2412
1693
  return this._data;
@@ -2766,12 +2047,12 @@ var q = {
2766
2047
  if (!t) return "";
2767
2048
  let n = this.visibleColumns.slice(t.startCol, t.endCol + 1), r = [];
2768
2049
  for (let e = t.startRow; e <= t.endRow; e++) r.push(this.data[this._toDataIndex(e)]);
2769
- return z(r, n, e);
2050
+ return B(r, n, e);
2770
2051
  }
2771
- return z(this._sortedIndices.map((e) => this.data[e]), this.visibleColumns, e);
2052
+ return B(this._sortedIndices.map((e) => this.data[e]), this.visibleColumns, e);
2772
2053
  }
2773
2054
  exportToFile(e, t) {
2774
- Ee(this.exportToString(e), t ?? `export${Ae(e)}`, ke(e));
2055
+ ge(this.exportToString(e), t ?? `export${be(e)}`, ye(e));
2775
2056
  }
2776
2057
  setComment(e, t, n) {
2777
2058
  let r = this.getComment(e, t);
@@ -2828,11 +2109,11 @@ var q = {
2828
2109
  async importFromFile(e) {
2829
2110
  let t = e.name.toLowerCase();
2830
2111
  if (t.endsWith(".xlsx")) {
2831
- let t = await U(await e.arrayBuffer());
2112
+ let t = await Pe(await e.arrayBuffer());
2832
2113
  this._applyImportedSheet(t);
2833
2114
  } else if (t.endsWith(".csv") || t.endsWith(".tsv")) {
2834
- let t = N(await e.text());
2835
- this._applyImportedRows(t);
2115
+ let t = await e.text(), n = f(t);
2116
+ this._applyImportedRows(n);
2836
2117
  } else console.warn(`flex-table importFromFile: unsupported file type "${e.name}"`);
2837
2118
  }
2838
2119
  _applyImportedSheet(e) {
@@ -2842,7 +2123,7 @@ var q = {
2842
2123
  let a = t.get(e);
2843
2124
  if (!a) return;
2844
2125
  let o = this.columns.find((e) => e.key === a);
2845
- r[a] = o ? P(n[i] ?? "", o) : n[i] ?? null;
2126
+ r[a] = o ? j(n[i] ?? "", o) : n[i] ?? null;
2846
2127
  }), r;
2847
2128
  }), r = [...this.data];
2848
2129
  this.data = n, this._undo.push({
@@ -2867,7 +2148,7 @@ var q = {
2867
2148
  let a = n.get(t);
2868
2149
  if (!a) return;
2869
2150
  let o = this.columns.find((e) => e.key === a);
2870
- r[a] = o ? P(e[i] ?? "", o) : e[i] ?? null;
2151
+ r[a] = o ? j(e[i] ?? "", o) : e[i] ?? null;
2871
2152
  }), r;
2872
2153
  }), i = [...this.data];
2873
2154
  this.data = r, this._undo.push({
@@ -3021,7 +2302,7 @@ var q = {
3021
2302
  this._filteredIndices = Array.from({ length: this.data.length }, (e, t) => t), this._sortedIndices = this._filteredIndices;
3022
2303
  return;
3023
2304
  }
3024
- if (this._filteredIndices = le(this.data, this._filters, (e, t, n) => {
2305
+ if (this._filteredIndices = re(this.data, this._filters, (e, t, n) => {
3025
2306
  this.dispatchEvent(new CustomEvent("filter-error", {
3026
2307
  detail: {
3027
2308
  error: e,
@@ -3051,7 +2332,7 @@ var q = {
3051
2332
  e !== this._viewportHeight && (this._viewportHeight = e), t !== this._viewportWidth && (this._viewportWidth = t), this._warnIfUnconstrained();
3052
2333
  }
3053
2334
  _warnIfUnconstrained() {
3054
- this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount < Ge || this.scrollHeight > this.clientHeight + 1 || (this._warnedUnconstrained = !0, console.warn(`[@iyulab/flex-table] ${this._visibleRowCount} rows but the host has no height constraint — it grew to fit every row, so virtual scrolling is off and all rows are rendered. Give the host a height (e.g. height: 400px, or flex: 1 1 auto with min-height: 0 inside a sized parent) so it becomes the scroll container.`));
2335
+ this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount < Fe || this.scrollHeight > this.clientHeight + 1 || (this._warnedUnconstrained = !0, console.warn(`[@iyulab/flex-table] ${this._visibleRowCount} rows but the host has no height constraint — it grew to fit every row, so virtual scrolling is off and all rows are rendered. Give the host a height (e.g. height: 400px, or flex: 1 1 auto with min-height: 0 inside a sized parent) so it becomes the scroll container.`));
3055
2336
  }
3056
2337
  _onScroll() {
3057
2338
  this._scrollTop = this.scrollTop, this._scrollLeft = this.scrollLeft;
@@ -3181,7 +2462,7 @@ var q = {
3181
2462
  }
3182
2463
  let t = this.shadowRoot?.querySelector(".ft-editor");
3183
2464
  if (t) {
3184
- let n = P(t.value, e);
2465
+ let n = j(t.value, e);
3185
2466
  this._applyEdit(n);
3186
2467
  } else this._cancelEdit();
3187
2468
  }
@@ -3255,7 +2536,7 @@ var q = {
3255
2536
  }));
3256
2537
  }
3257
2538
  _onEditorKeyDown(e) {
3258
- if (!G(e)) {
2539
+ if (!m(e)) {
3259
2540
  if (this._autocompleteState && this._autocompleteState.candidates.length > 0) {
3260
2541
  if (e.key === "ArrowDown") {
3261
2542
  e.preventDefault(), e.stopPropagation();
@@ -3323,7 +2604,7 @@ var q = {
3323
2604
  ].includes(t) && this._handleCtrlKey(e)) return;
3324
2605
  }
3325
2606
  if (t.length !== 0 && this._visibleRowCount !== 0) {
3326
- if ((e.key === "Enter" || e.key === "F2") && this._activeCell && !G(e)) {
2607
+ if ((e.key === "Enter" || e.key === "F2") && this._activeCell && !m(e)) {
3327
2608
  e.preventDefault();
3328
2609
  let n = t[this._activeCell.col];
3329
2610
  n && this._isCellEditable(n) ? this._startEdit() : e.key === "Enter" && this._fireRowActivate(n);
@@ -3411,7 +2692,7 @@ var q = {
3411
2692
  async _handleCopy(e) {
3412
2693
  let t = this._selection.getEffectiveRange();
3413
2694
  if (!t) return;
3414
- let n = this.visibleColumns, r = de(this._sortedIndices.map((e) => this.data[e]), n, t);
2695
+ let n = this.visibleColumns, r = ae(this._sortedIndices.map((e) => this.data[e]), n, t);
3415
2696
  try {
3416
2697
  await navigator.clipboard.writeText(r);
3417
2698
  } catch (e) {
@@ -3437,7 +2718,7 @@ var q = {
3437
2718
  if (!this._activeCell) return;
3438
2719
  let e = await this._readClipboardText();
3439
2720
  if (e == null) return;
3440
- let t = N(e);
2721
+ let t = f(e);
3441
2722
  if (t.length === 0) return;
3442
2723
  let n = this._expandRowsForPaste(this._activeCell.row, t.length), r = this._applyPasteData(this._activeCell, t);
3443
2724
  if (r.length > 0 || n.length > 0) {
@@ -3495,7 +2776,7 @@ var q = {
3495
2776
  for (let a = 0; a < t[i].length; a++) {
3496
2777
  let s = e.col + a;
3497
2778
  if (s >= n.length) break;
3498
- let c = n[s], l = this.data[o][c.key], u = P(t[i][a], c);
2779
+ let c = n[s], l = this.data[o][c.key], u = j(t[i][a], c);
3499
2780
  this.data[o][c.key] = u, r.push({
3500
2781
  row: o,
3501
2782
  col: s,
@@ -3560,7 +2841,7 @@ var q = {
3560
2841
  for (let r = e.startCol + 1; r <= e.endCol; r++) {
3561
2842
  let e = t[r];
3562
2843
  if (!e || !this._isCellEditable(e)) continue;
3563
- let a = P(o == null ? "" : String(o), e);
2844
+ let a = j(o == null ? "" : String(o), e);
3564
2845
  n.push({
3565
2846
  row: i,
3566
2847
  key: e.key,
@@ -3697,7 +2978,7 @@ var q = {
3697
2978
  return Math.min(n, i);
3698
2979
  }
3699
2980
  _renderHeaderCell(e, t) {
3700
- let n = e.sortable !== !1, r = this._sortCriteria.find((t) => t.key === e.key), o = this._sortCriteria.length > 1 ? this._sortCriteria.findIndex((t) => t.key === e.key) : -1, s = this._filters.some((t) => t.key === e.key), c = e.pinned === "left", l = e.pinned === "right", u = c || l, d = e.headerAlign ?? W(e), f = [
2981
+ let n = e.sortable !== !1, r = this._sortCriteria.find((t) => t.key === e.key), o = this._sortCriteria.length > 1 ? this._sortCriteria.findIndex((t) => t.key === e.key) : -1, s = this._filters.some((t) => t.key === e.key), c = e.pinned === "left", l = e.pinned === "right", u = c || l, d = e.headerAlign ?? G(e), f = [
3701
2982
  "ft-header-cell",
3702
2983
  n ? "ft-sortable" : "",
3703
2984
  u ? "ft-pinned" : "",
@@ -3719,7 +3000,7 @@ var q = {
3719
3000
  @click=${n ? (t) => this._onHeaderClick(t, e) : void 0}>
3720
3001
  ${C ? i`
3721
3002
  <button class="ft-hidden-col-indicator"
3722
- title=${A("showHiddenColumns")}
3003
+ title=${O("showHiddenColumns")}
3723
3004
  @click=${(t) => {
3724
3005
  t.stopPropagation(), this._showHiddenBefore(e);
3725
3006
  }}>&#x276F;</button>
@@ -3729,8 +3010,8 @@ var q = {
3729
3010
  ${o >= 0 ? i`<span class="ft-sort-order">${o + 1}</span>` : ""}
3730
3011
  <button class="ft-column-menu-btn ${s ? "ft-filter-active" : ""}"
3731
3012
  type="button"
3732
- title=${A("columnMenu")}
3733
- aria-label=${A("columnMenuFor", { header: e.label })}
3013
+ title=${O("columnMenu")}
3014
+ aria-label=${O("columnMenuFor", { header: e.label })}
3734
3015
  aria-haspopup="menu"
3735
3016
  aria-expanded=${this._headerMenu?.key === e.key ? "true" : "false"}
3736
3017
  @mousedown=${(e) => e.stopPropagation()}
@@ -3849,26 +3130,26 @@ var q = {
3849
3130
  }}>${t}</button>
3850
3131
  `;
3851
3132
  return i`
3852
- <div class="ft-header-menu" role="menu" aria-label=${A("columnMenuRegion", { header: o.label })}
3133
+ <div class="ft-header-menu" role="menu" aria-label=${O("columnMenuRegion", { header: o.label })}
3853
3134
  style="position: fixed; left: ${t}px; top: ${n}px; z-index: var(--u-layer-floating, 1000);"
3854
3135
  @mousedown=${(e) => e.stopPropagation()}
3855
3136
  @keydown=${(e) => this._onHeaderMenuKeydown(e)}>
3856
3137
  ${o.sortable === !1 ? a : i`
3857
- ${c("sort-asc", A("sortAscending"), () => this._applySortFromMenu(e, "asc"))}
3858
- ${c("sort-desc", A("sortDescending"), () => this._applySortFromMenu(e, "desc"))}
3138
+ ${c("sort-asc", O("sortAscending"), () => this._applySortFromMenu(e, "asc"))}
3139
+ ${c("sort-desc", O("sortDescending"), () => this._applySortFromMenu(e, "desc"))}
3859
3140
  <div class="ft-header-menu-separator" role="separator"></div>
3860
3141
  `}
3861
3142
  ${this.showFilters ? i`
3862
- ${c("filter", A("filter"), () => this._openFilterFromMenu(e))}
3863
- ${s ? c("clear-filter", A("clearFilter"), () => this._clearColumnFilter(e)) : a}
3143
+ ${c("filter", O("filter"), () => this._openFilterFromMenu(e))}
3144
+ ${s ? c("clear-filter", O("clearFilter"), () => this._clearColumnFilter(e)) : a}
3864
3145
  <div class="ft-header-menu-separator" role="separator"></div>
3865
3146
  ` : a}
3866
- ${c("hide", A("hideColumn"), () => this._setColumnHidden(e, !0))}
3867
- ${r.map((e) => c("show", A("showColumn", { header: e.label }), () => this._setColumnHidden(e.key, !1)))}
3147
+ ${c("hide", O("hideColumn"), () => this._setColumnHidden(e, !0))}
3148
+ ${r.map((e) => c("show", O("showColumn", { header: e.label }), () => this._setColumnHidden(e.key, !1)))}
3868
3149
  <div class="ft-header-menu-separator" role="separator"></div>
3869
- ${c("autofit", A("autoFitWidth"), () => this._autoFitColumn(e))}
3870
- ${c("wider", A("wider"), () => this._resizeColumnBy(e, X), !0)}
3871
- ${c("narrower", A("narrower"), () => this._resizeColumnBy(e, -20), !0)}
3150
+ ${c("autofit", O("autoFitWidth"), () => this._autoFitColumn(e))}
3151
+ ${c("wider", O("wider"), () => this._resizeColumnBy(e, X), !0)}
3152
+ ${c("narrower", O("narrower"), () => this._resizeColumnBy(e, -20), !0)}
3872
3153
  </div>
3873
3154
  `;
3874
3155
  }
@@ -3886,26 +3167,26 @@ var q = {
3886
3167
  }}>${e}</button>
3887
3168
  `, f = i`<div class="ft-context-menu-separator" role="separator"></div>`;
3888
3169
  return i`
3889
- <div class="ft-body-context-menu" role="menu" aria-label=${A("cellActions")}
3170
+ <div class="ft-body-context-menu" role="menu" aria-label=${O("cellActions")}
3890
3171
  style="position: fixed; left: ${n}px; top: ${r}px; z-index: var(--u-layer-floating, 1000);"
3891
3172
  @mousedown=${(e) => e.stopPropagation()}
3892
3173
  @keydown=${(e) => this._onMenuKeydown(e, ".ft-body-context-menu", l)}>
3893
- ${d(A("copy"), () => this._handleCopy(!1))}
3174
+ ${d(O("copy"), () => this._handleCopy(!1))}
3894
3175
  ${f}
3895
- ${d(A("insertRowAbove"), () => this.addRow(void 0, t))}
3896
- ${d(A("insertRowBelow"), () => this.addRow(void 0, t + 1))}
3897
- ${d(A("deleteRow"), () => this.deleteRows([t]), !0)}
3176
+ ${d(O("insertRowAbove"), () => this.addRow(void 0, t))}
3177
+ ${d(O("insertRowBelow"), () => this.addRow(void 0, t + 1))}
3178
+ ${d(O("deleteRow"), () => this.deleteRows([t]), !0)}
3898
3179
  ${f}
3899
- ${d(A("hideColumn"), () => this._setColumnHidden(o.key, !0))}
3180
+ ${d(O("hideColumn"), () => this._setColumnHidden(o.key, !0))}
3900
3181
  ${f}
3901
- ${d(`${A("sortAscending")} ↑`, () => this._applySortFromMenu(o.key, "asc"))}
3902
- ${d(`${A("sortDescending")} ↓`, () => this._applySortFromMenu(o.key, "desc"))}
3182
+ ${d(`${O("sortAscending")} ↑`, () => this._applySortFromMenu(o.key, "asc"))}
3183
+ ${d(`${O("sortDescending")} ↓`, () => this._applySortFromMenu(o.key, "desc"))}
3903
3184
  ${f}
3904
- ${d(A("filterByThisValue"), () => this.setFilter(o.key, (e) => e === s))}
3905
- ${c ? d(A("clearFilter"), () => this.removeFilter(o.key)) : a}
3185
+ ${d(O("filterByThisValue"), () => this.setFilter(o.key, (e) => e === s))}
3186
+ ${c ? d(O("clearFilter"), () => this.removeFilter(o.key)) : a}
3906
3187
  ${f}
3907
- ${d(A(u ? "editComment" : "addComment"), () => this._openCommentPopup(t, o.key, n, r))}
3908
- ${u ? d(A("deleteComment"), () => this.setComment(t, o.key, null), !0) : a}
3188
+ ${d(O(u ? "editComment" : "addComment"), () => this._openCommentPopup(t, o.key, n, r))}
3189
+ ${u ? d(O("deleteComment"), () => this.setComment(t, o.key, null), !0) : a}
3909
3190
  </div>
3910
3191
  `;
3911
3192
  }
@@ -3937,13 +3218,13 @@ var q = {
3937
3218
  @mousedown=${(e) => e.stopPropagation()}>
3938
3219
  <textarea class="ft-comment-popup-textarea"
3939
3220
  rows="4"
3940
- placeholder=${A("addCommentPlaceholder")}
3221
+ placeholder=${O("addCommentPlaceholder")}
3941
3222
  @keydown=${(e) => {
3942
3223
  e.key === "Escape" && (e.preventDefault(), this._cancelCommentPopup()), e.key === "Enter" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this._commitCommentPopup());
3943
3224
  }}></textarea>
3944
3225
  <div class="ft-comment-popup-buttons">
3945
- <button class="ft-comment-popup-cancel" @click=${() => this._cancelCommentPopup()}>${A("cancel")}</button>
3946
- <button class="ft-comment-popup-save" @click=${() => this._commitCommentPopup()}>${A("save")}</button>
3226
+ <button class="ft-comment-popup-cancel" @click=${() => this._cancelCommentPopup()}>${O("cancel")}</button>
3227
+ <button class="ft-comment-popup-save" @click=${() => this._commitCommentPopup()}>${O("save")}</button>
3947
3228
  </div>
3948
3229
  </div>
3949
3230
  `;
@@ -3979,7 +3260,7 @@ var q = {
3979
3260
  <div class="ft-filter-dropdown" @click=${(e) => e.stopPropagation()}>
3980
3261
  ${t === "boolean" ? this._renderBooleanFilter(e) : t === "number" ? this._renderNumberFilter(e) : t === "date" || t === "datetime" ? this._renderDateFilter(e) : this._renderTextFilter(e)}
3981
3262
  <div class="ft-filter-actions">
3982
- <button class="ft-filter-clear" @click=${() => this._clearColumnFilter(e.key)}>${A("clear")}</button>
3263
+ <button class="ft-filter-clear" @click=${() => this._clearColumnFilter(e.key)}>${O("clear")}</button>
3983
3264
  </div>
3984
3265
  </div>
3985
3266
  `;
@@ -4012,7 +3293,7 @@ var q = {
4012
3293
  let n = this._emptyFilterState.get(e) ?? "";
4013
3294
  return i`
4014
3295
  <div class="ft-filter-empty-row">
4015
- <label>${A("blankCells")}</label>
3296
+ <label>${O("blankCells")}</label>
4016
3297
  <select class="ft-filter-mode-select"
4017
3298
  .value=${n}
4018
3299
  @change=${(n) => {
@@ -4022,9 +3303,9 @@ var q = {
4022
3303
  @keydown=${(e) => {
4023
3304
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4024
3305
  }}>
4025
- <option value="">${A("blankAll")}</option>
4026
- <option value="empty">${A("emptyOnly")}</option>
4027
- <option value="non-empty">${A("nonEmptyOnly")}</option>
3306
+ <option value="">${O("blankAll")}</option>
3307
+ <option value="empty">${O("emptyOnly")}</option>
3308
+ <option value="non-empty">${O("nonEmptyOnly")}</option>
4028
3309
  </select>
4029
3310
  </div>
4030
3311
  `;
@@ -4100,13 +3381,13 @@ var q = {
4100
3381
  @keydown=${(e) => {
4101
3382
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4102
3383
  }}>
4103
- <option value="contains">${A("contains")}</option>
4104
- <option value="starts">${A("startsWith")}</option>
4105
- <option value="ends">${A("endsWith")}</option>
4106
- <option value="wildcard">${A("wildcard")}</option>
3384
+ <option value="contains">${O("contains")}</option>
3385
+ <option value="starts">${O("startsWith")}</option>
3386
+ <option value="ends">${O("endsWith")}</option>
3387
+ <option value="wildcard">${O("wildcard")}</option>
4107
3388
  </select>
4108
3389
  </div>
4109
- <input class="ft-filter-input" type="text" placeholder=${A("searchPlaceholder")}
3390
+ <input class="ft-filter-input" type="text" placeholder=${O("searchPlaceholder")}
4110
3391
  .value=${t.value}
4111
3392
  @input=${(t) => {
4112
3393
  let n = t.target.value, r = this._textFilterState.get(e.key) ?? {
@@ -4157,7 +3438,7 @@ var q = {
4157
3438
  }}>
4158
3439
  ${Object.keys(q).map((e) => i`<option value=${e}>${q[e]}</option>`)}
4159
3440
  </select>
4160
- <input class="ft-filter-input ft-num-cond-input" type="number" placeholder=${A("valuePlaceholder")}
3441
+ <input class="ft-filter-input ft-num-cond-input" type="number" placeholder=${O("valuePlaceholder")}
4161
3442
  .value=${n.value == null ? "" : String(n.value)}
4162
3443
  @input=${(n) => {
4163
3444
  let r = n.target.value, i = this._numberFilterState.get(e) ?? this._defaultNumState();
@@ -4218,13 +3499,13 @@ var q = {
4218
3499
  let t = e.type === "datetime" ? "datetime-local" : "date", n = this._dateFilterState.get(e.key) ?? {};
4219
3500
  return i`
4220
3501
  <div class="ft-filter-range">
4221
- <input class="ft-filter-input" type=${t} placeholder=${A("fromPlaceholder")}
3502
+ <input class="ft-filter-input" type=${t} placeholder=${O("fromPlaceholder")}
4222
3503
  .value=${n.from ?? ""}
4223
3504
  @input=${(t) => this._applyDateFilter(e.key, t, "from")}
4224
3505
  @keydown=${(e) => {
4225
3506
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4226
3507
  }}>
4227
- <input class="ft-filter-input" type=${t} placeholder=${A("toPlaceholder")}
3508
+ <input class="ft-filter-input" type=${t} placeholder=${O("toPlaceholder")}
4228
3509
  .value=${n.to ?? ""}
4229
3510
  @input=${(t) => this._applyDateFilter(e.key, t, "to")}
4230
3511
  @keydown=${(e) => {
@@ -4250,9 +3531,9 @@ var q = {
4250
3531
  @keydown=${(e) => {
4251
3532
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4252
3533
  }}>
4253
- <option value="all">${A("all")}</option>
4254
- <option value="true">\u2714 ${A("booleanTrue")}</option>
4255
- <option value="false">\u2718 ${A("booleanFalse")}</option>
3534
+ <option value="all">${O("all")}</option>
3535
+ <option value="true">\u2714 ${O("booleanTrue")}</option>
3536
+ <option value="false">\u2718 ${O("booleanFalse")}</option>
4256
3537
  </select>
4257
3538
  ${this._renderEmptyFilterRow(e.key)}
4258
3539
  `;
@@ -4669,42 +3950,42 @@ var q = {
4669
3950
  this._closeFindPanel();
4670
3951
  return;
4671
3952
  }
4672
- e.key === "Enter" && !G(e) && e.target instanceof HTMLInputElement && e.target.classList.contains("ft-find-input") && (e.shiftKey ? this._findPrev() : this._findNext());
3953
+ e.key === "Enter" && !m(e) && e.target instanceof HTMLInputElement && e.target.classList.contains("ft-find-input") && (e.shiftKey ? this._findPrev() : this._findNext());
4673
3954
  }}>
4674
3955
  <div class="ft-find-row">
4675
- <input class="ft-find-input" type="text" placeholder=${A("findPlaceholder")}
3956
+ <input class="ft-find-input" type="text" placeholder=${O("findPlaceholder")}
4676
3957
  .value=${t}
4677
3958
  @input=${(e) => {
4678
3959
  this._findState.query = e.target.value, this._findSearch();
4679
3960
  }}>
4680
3961
  <span class="ft-find-count">${c > 0 ? `${l}/${c}` : t ? "0 results" : ""}</span>
4681
- <button @click=${() => this._findPrev()} title=${A("findPrevious")}>◀</button>
4682
- <button @click=${() => this._findNext()} title=${A("findNext")}>▶</button>
4683
- <label title=${A("matchCase")}><input type="checkbox" ?checked=${r} @change=${(e) => {
3962
+ <button @click=${() => this._findPrev()} title=${O("findPrevious")}>◀</button>
3963
+ <button @click=${() => this._findNext()} title=${O("findNext")}>▶</button>
3964
+ <label title=${O("matchCase")}><input type="checkbox" ?checked=${r} @change=${(e) => {
4684
3965
  this._findState.matchCase = e.target.checked, this._findSearch();
4685
3966
  }}> Aa</label>
4686
- <label title=${A("wholeCell")}><input type="checkbox" ?checked=${a} @change=${(e) => {
3967
+ <label title=${O("wholeCell")}><input type="checkbox" ?checked=${a} @change=${(e) => {
4687
3968
  this._findState.wholeCell = e.target.checked, this._findSearch();
4688
3969
  }}> [ ]</label>
4689
- <button @click=${() => this._closeFindPanel()} title=${A("closeFind")}>✕</button>
3970
+ <button @click=${() => this._closeFindPanel()} title=${O("closeFind")}>✕</button>
4690
3971
  </div>
4691
3972
  ${e === "replace" ? i`
4692
3973
  <div class="ft-find-row">
4693
- <input class="ft-find-replace-input" type="text" placeholder=${A("replaceWithPlaceholder")}
3974
+ <input class="ft-find-replace-input" type="text" placeholder=${O("replaceWithPlaceholder")}
4694
3975
  .value=${n}
4695
3976
  @input=${(e) => {
4696
3977
  this._findState.replaceWith = e.target.value;
4697
3978
  }}>
4698
- <button @click=${() => this._replaceOne()} ?disabled=${c === 0}>${A("replace")}</button>
4699
- <button @click=${() => this._replaceAll()} ?disabled=${c === 0}>${A("replaceAll")}</button>
3979
+ <button @click=${() => this._replaceOne()} ?disabled=${c === 0}>${O("replace")}</button>
3980
+ <button @click=${() => this._replaceAll()} ?disabled=${c === 0}>${O("replaceAll")}</button>
4700
3981
  </div>
4701
3982
  ` : ""}
4702
3983
  </div>
4703
3984
  `;
4704
3985
  }
4705
3986
  render() {
4706
- let e = this.visibleColumns, t = this.importEnabled && this._isDragOver ? i`<div class="ft-import-overlay">${A("dropFileToImport")}</div>` : a, n = this.loading ? i`<div class="ft-loading-overlay"></div>` : a;
4707
- if (e.length === 0) return i`${t}${n}<div class="ft-empty">${A("noColumnsDefined")}</div>`;
3987
+ let e = this.visibleColumns, t = this.importEnabled && this._isDragOver ? i`<div class="ft-import-overlay">${O("dropFileToImport")}</div>` : a, n = this.loading ? i`<div class="ft-loading-overlay"></div>` : a;
3988
+ if (e.length === 0) return i`${t}${n}<div class="ft-empty">${O("noColumnsDefined")}</div>`;
4708
3989
  let r = this.headerHeight, o = this._totalRowWidth, { start: s, end: c } = this.visibleColRange, l = [];
4709
3990
  for (let t = 0; t < e.length; t++) (e[t].pinned === "left" || e[t].pinned === "right") && (t < s || t >= c) && l.push(t);
4710
3991
  let u = 0, d = this._scrollLeft, f = this.selectable ? i`<div class="ft-checkbox-header"
@@ -4852,18 +4133,18 @@ var q = {
4852
4133
  ${this._renderEditor(e, t)}
4853
4134
  </div>
4854
4135
  `;
4855
- let _ = o || c, v = this._isCellInvalid(n, r), y = (this._findState?.results ?? []).findIndex((e) => e.row === n && e.col === r), b = y >= 0, x = b && y === this._findState.currentIndex, S = [
4136
+ let _ = o || c, v = this._isCellInvalid(n, r), y = (this._findState?.results ?? []).findIndex((e) => e.row === n && e.col === r), x = y >= 0, S = x && y === this._findState.currentIndex, C = [
4856
4137
  "ft-cell",
4857
4138
  `ft-type-${t.type ?? "text"}`,
4858
- `ft-align-${W(t)}`,
4139
+ `ft-align-${G(t)}`,
4859
4140
  o ? "ft-active" : "",
4860
4141
  c ? "ft-selected" : "",
4861
4142
  d ? "ft-pinned" : "",
4862
4143
  v ? "ft-invalid" : "",
4863
- x ? "ft-find-current" : b ? "ft-find-match" : ""
4864
- ].filter(Boolean).join(" "), C = this._toDataIndex(n), w = this._comments.get(C)?.get(t.key) ?? null, T = w !== null, E = T ? i`<div class="ft-comment-indicator" title=${w}></div>` : a;
4144
+ S ? "ft-find-current" : x ? "ft-find-match" : ""
4145
+ ].filter(Boolean).join(" "), w = this._toDataIndex(n), T = this._comments.get(w)?.get(t.key) ?? null, E = T !== null, D = E ? i`<div class="ft-comment-indicator" title=${T}></div>` : a;
4865
4146
  return i`
4866
- <div class=${T ? S + " ft-has-comment" : S}
4147
+ <div class=${E ? C + " ft-has-comment" : C}
4867
4148
  role="gridcell"
4868
4149
  data-col-index=${r}
4869
4150
  aria-selected=${_ ? "true" : "false"}
@@ -4875,8 +4156,8 @@ var q = {
4875
4156
  @mouseenter=${() => this._onCellMouseEnter(n, r)}
4876
4157
  @click=${(e) => this._onCellClickEvent(e, n, r)}
4877
4158
  @dblclick=${() => this._onCellDblClick(n, r)}>
4878
- ${E}
4879
- ${O(e[t.key], e, t)}
4159
+ ${D}
4160
+ ${b(e[t.key], e, t)}
4880
4161
  </div>
4881
4162
  `;
4882
4163
  }
@@ -5014,4 +4295,4 @@ K([s({ type: Array })], $.prototype, "columns", void 0), K([s({
5014
4295
  attribute: "max-undo-size"
5015
4296
  })], $.prototype, "maxUndoSize", null), K([c()], $.prototype, "_scrollTop", void 0), K([c()], $.prototype, "_scrollLeft", void 0), K([c()], $.prototype, "_viewportHeight", void 0), K([c()], $.prototype, "_viewportWidth", void 0), K([c()], $.prototype, "_activeCell", void 0), K([c()], $.prototype, "_editingCell", void 0), K([c()], $.prototype, "_sortCriteria", void 0), K([c()], $.prototype, "_openFilterKey", void 0), K([c()], $.prototype, "_rowSelectionVersion", void 0), K([c()], $.prototype, "_autocompleteState", void 0), K([c()], $.prototype, "_headerMenu", void 0), K([c()], $.prototype, "_bodyContextMenu", void 0), K([c()], $.prototype, "_commentPopup", void 0), K([c()], $.prototype, "_isDragOver", void 0), $ = K([o("flex-table")], $);
5016
4297
  //#endregion
5017
- export { j as a, M as i, W as n, k as o, z as r, O as s, $ as t };
4298
+ export { k as a, A as i, G as n, D as o, B as r, b as s, $ as t };