@iyulab/flex-table 0.40.0 → 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 j = 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 j = 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 j = class {
1881
1197
  shiftMoveRight() {
1882
1198
  return this.activeCell ? this.setActiveWithRange(this.activeCell.row, this.activeCell.col + 1) : null;
1883
1199
  }
1884
- }, se = class {
1200
+ }, ne = class {
1885
1201
  constructor() {
1886
1202
  this.current = null;
1887
1203
  }
@@ -1902,7 +1218,7 @@ var j = class {
1902
1218
  let e = this.current;
1903
1219
  return this.current = null, e;
1904
1220
  }
1905
- }, M = 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 j = class {
1963
1279
  };
1964
1280
  //#endregion
1965
1281
  //#region src/core/filtering.ts
1966
- function ce(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 ce(e, t, n) {
1982
1298
  }
1983
1299
  //#endregion
1984
1300
  //#region src/core/undo.ts
1985
- var le = 100, N = class {
1301
+ var ie = 100, A = class {
1986
1302
  constructor() {
1987
- this._undoStack = [], this._redoStack = [], this._maxSize = le;
1303
+ this._undoStack = [], this._redoStack = [], this._maxSize = ie;
1988
1304
  }
1989
1305
  get maxSize() {
1990
1306
  return this._maxSize;
@@ -2021,7 +1337,7 @@ var le = 100, N = class {
2021
1337
  };
2022
1338
  //#endregion
2023
1339
  //#region src/clipboard/clipboard.ts
2024
- function ue(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 ue(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 P(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 F(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 F(e, t) {
2076
1362
  }
2077
1363
  //#endregion
2078
1364
  //#region src/export/xlsx-writer.ts
2079
- var de = (() => {
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 de = (() => {
2085
1371
  }
2086
1372
  return e;
2087
1373
  })();
2088
- function fe(e) {
1374
+ function oe(e) {
2089
1375
  let t = 4294967295;
2090
- for (let n = 0; n < e.length; n++) t = de[(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 I = new TextEncoder();
2094
- function pe(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 = I.encode(i.name), a = fe(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 = L(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), L([
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 L(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 R(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 me(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 z(e, t) {
2123
- return me(t) + (e + 1);
1408
+ function I(e, t) {
1409
+ return ce(t) + (e + 1);
2124
1410
  }
2125
- function he(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 ge = "<?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>", _e = "<?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>", ve = "<?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>", ye = "<?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>", be = "<?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 xe(e, t) {
2131
- let n = [], r = t.map((e, t) => `<c r="${z(0, t)}" t="str" s="2"><v>${R(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 = z(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>${he(a).toFixed(6)}</v></c>` : o === "boolean" ? `<c r="${i}" t="b"><v>${+!!a}</v></c>` : `<c r="${i}" t="str"><v>${R(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,32 +1428,32 @@ function xe(e, t) {
2142
1428
  <sheetData>${n.join("")}</sheetData>
2143
1429
  </worksheet>`;
2144
1430
  }
2145
- function Se(e, t) {
2146
- let n = xe(e, t);
2147
- return pe([
1431
+ function z(e, t) {
1432
+ let n = R(e, t);
1433
+ return se([
2148
1434
  {
2149
1435
  name: "[Content_Types].xml",
2150
- data: I.encode(ge)
1436
+ data: N.encode(ue)
2151
1437
  },
2152
1438
  {
2153
1439
  name: "_rels/.rels",
2154
- data: I.encode(_e)
1440
+ data: N.encode(de)
2155
1441
  },
2156
1442
  {
2157
1443
  name: "xl/workbook.xml",
2158
- data: I.encode(ve)
1444
+ data: N.encode(fe)
2159
1445
  },
2160
1446
  {
2161
1447
  name: "xl/_rels/workbook.xml.rels",
2162
- data: I.encode(ye)
1448
+ data: N.encode(pe)
2163
1449
  },
2164
1450
  {
2165
1451
  name: "xl/worksheets/sheet1.xml",
2166
- data: I.encode(n)
1452
+ data: N.encode(n)
2167
1453
  },
2168
1454
  {
2169
1455
  name: "xl/styles.xml",
2170
- data: I.encode(be)
1456
+ data: N.encode(L)
2171
1457
  }
2172
1458
  ]);
2173
1459
  }
@@ -2177,20 +1463,20 @@ function B(e, t, n) {
2177
1463
  switch (n) {
2178
1464
  case "csv": return V(e, t, ",");
2179
1465
  case "tsv": return V(e, t, " ");
2180
- case "json": return we(e, t);
2181
- case "xlsx": return Se(e, t);
1466
+ case "json": return he(e, t);
1467
+ case "xlsx": return z(e, t);
2182
1468
  }
2183
1469
  }
2184
- function Ce(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
1473
  function V(e, t, n) {
2188
- return [t.map((e) => H(e.label, n)).join(n), ...e.map((e) => t.map((t) => H(Ce(e[t.key], t), n)).join(n))].join("\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
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 we(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 we(e, t) {
2201
1487
  });
2202
1488
  return JSON.stringify(n, null, 2);
2203
1489
  }
2204
- function Te(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 Ee = {
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
- }, De = {
1499
+ }, ve = {
2214
1500
  csv: ".csv",
2215
1501
  tsv: ".tsv",
2216
1502
  json: ".json",
2217
1503
  xlsx: ".xlsx"
2218
1504
  };
2219
- function Oe(e) {
2220
- return Ee[e];
1505
+ function ye(e) {
1506
+ return _e[e];
2221
1507
  }
2222
- function ke(e) {
2223
- return De[e];
1508
+ function be(e) {
1509
+ return ve[e];
2224
1510
  }
2225
1511
  //#endregion
2226
1512
  //#region src/export/xlsx-reader.ts
2227
- function Ae(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 je(e) {
2232
- let t = Ae(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 je(e) {
2242
1528
  }
2243
1529
  return a;
2244
1530
  }
2245
- async function Me(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 Me(e) {
2255
1541
  for (let e of i) o.set(e, s), s += e.length;
2256
1542
  return o;
2257
1543
  }
2258
- async function Ne(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 Me(o);
1547
+ if (t.compressionMethod === 8) return Ce(o);
2262
1548
  throw Error(`XLSX: Unsupported compression method ${t.compressionMethod}`);
2263
1549
  }
2264
- async function Pe(e) {
2265
- let t = new DataView(e), n = je(t), r = /* @__PURE__ */ new Map();
2266
- for (let e of n) e.compressedSize === 0 && e.name.endsWith("/") || r.set(e.name, await Ne(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 Fe = new TextDecoder("utf-8");
1555
+ var Ee = new TextDecoder("utf-8");
2270
1556
  function U(e) {
2271
- let t = Fe.decode(e);
1557
+ let t = Ee.decode(e);
2272
1558
  return new DOMParser().parseFromString(t, "application/xml");
2273
1559
  }
2274
- function Ie(e) {
1560
+ function De(e) {
2275
1561
  if (!e) return [];
2276
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 Le = /* @__PURE__ */ new Set([
1565
+ var Oe = /* @__PURE__ */ new Set([
2280
1566
  14,
2281
1567
  15,
2282
1568
  16,
@@ -2296,29 +1582,29 @@ var Le = /* @__PURE__ */ new Set([
2296
1582
  57,
2297
1583
  58
2298
1584
  ]);
2299
- function Re(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 ze(e) {
1589
+ function Ae(e) {
2304
1590
  let t = /* @__PURE__ */ new Set();
2305
1591
  if (!e) return t;
2306
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 ? Le.has(i) : Re(a)) && t.add(n);
1596
+ (a === void 0 ? Oe.has(i) : ke(a)) && t.add(n);
2311
1597
  }), t;
2312
1598
  }
2313
- function Be(e) {
1599
+ function je(e) {
2314
1600
  if (!e) return !1;
2315
1601
  let t = U(e).querySelector("workbookPr")?.getAttribute("date1904");
2316
1602
  return t === "1" || t === "true";
2317
1603
  }
2318
- function Ve(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 He(e, t, n, r) {
1607
+ function Ne(e, t, n, r) {
2322
1608
  let i = U(e).querySelectorAll("row");
2323
1609
  if (i.length === 0) return [];
2324
1610
  let a = 0, o = /* @__PURE__ */ new Map();
@@ -2326,7 +1612,7 @@ function He(e, t, n, r) {
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 = Ue(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 He(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 ? Ve(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 He(e, t, n, r) {
2349
1635
  }
2350
1636
  return c;
2351
1637
  }
2352
- function Ue(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 W(e) {
2358
- let t = await Pe(e), n = Ie(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 W(e) {
2363
1649
  }
2364
1650
  }
2365
1651
  if (!r) throw Error("XLSX: No worksheet found");
2366
- let i = ze(t.get("xl/styles.xml")), a = Be(t.get("xl/workbook.xml")), o = He(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: []
@@ -2394,14 +1680,14 @@ var q = {
2394
1680
  lt: "<",
2395
1681
  gte: "≥",
2396
1682
  lte: "≤"
2397
- }, J = 120, Y = 40, X = 20, Z = 32, Q = 5, We = 200, $ = class extends n {
1683
+ }, J = 120, Y = 40, X = 20, Z = 32, Q = 5, Fe = 200, $ = class extends n {
2398
1684
  constructor(...e) {
2399
- 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 j(), this._editing = new se(), this._rowSelection = new M(), this._undo = new N(), 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 = () => {
2400
1686
  this._commitCommentPopup();
2401
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();
2402
1688
  }
2403
1689
  static {
2404
- this.styles = l;
1690
+ this.styles = h;
2405
1691
  }
2406
1692
  get data() {
2407
1693
  return this._data;
@@ -2766,7 +2052,7 @@ var q = {
2766
2052
  return B(this._sortedIndices.map((e) => this.data[e]), this.visibleColumns, e);
2767
2053
  }
2768
2054
  exportToFile(e, t) {
2769
- Te(this.exportToString(e), t ?? `export${ke(e)}`, Oe(e));
2055
+ ge(this.exportToString(e), t ?? `export${be(e)}`, ye(e));
2770
2056
  }
2771
2057
  setComment(e, t, n) {
2772
2058
  let r = this.getComment(e, t);
@@ -2823,11 +2109,11 @@ var q = {
2823
2109
  async importFromFile(e) {
2824
2110
  let t = e.name.toLowerCase();
2825
2111
  if (t.endsWith(".xlsx")) {
2826
- let t = await W(await e.arrayBuffer());
2112
+ let t = await Pe(await e.arrayBuffer());
2827
2113
  this._applyImportedSheet(t);
2828
2114
  } else if (t.endsWith(".csv") || t.endsWith(".tsv")) {
2829
- let t = P(await e.text());
2830
- this._applyImportedRows(t);
2115
+ let t = await e.text(), n = f(t);
2116
+ this._applyImportedRows(n);
2831
2117
  } else console.warn(`flex-table importFromFile: unsupported file type "${e.name}"`);
2832
2118
  }
2833
2119
  _applyImportedSheet(e) {
@@ -2837,7 +2123,7 @@ var q = {
2837
2123
  let a = t.get(e);
2838
2124
  if (!a) return;
2839
2125
  let o = this.columns.find((e) => e.key === a);
2840
- r[a] = o ? F(n[i] ?? "", o) : n[i] ?? null;
2126
+ r[a] = o ? j(n[i] ?? "", o) : n[i] ?? null;
2841
2127
  }), r;
2842
2128
  }), r = [...this.data];
2843
2129
  this.data = n, this._undo.push({
@@ -2862,7 +2148,7 @@ var q = {
2862
2148
  let a = n.get(t);
2863
2149
  if (!a) return;
2864
2150
  let o = this.columns.find((e) => e.key === a);
2865
- r[a] = o ? F(e[i] ?? "", o) : e[i] ?? null;
2151
+ r[a] = o ? j(e[i] ?? "", o) : e[i] ?? null;
2866
2152
  }), r;
2867
2153
  }), i = [...this.data];
2868
2154
  this.data = r, this._undo.push({
@@ -3016,7 +2302,7 @@ var q = {
3016
2302
  this._filteredIndices = Array.from({ length: this.data.length }, (e, t) => t), this._sortedIndices = this._filteredIndices;
3017
2303
  return;
3018
2304
  }
3019
- if (this._filteredIndices = ce(this.data, this._filters, (e, t, n) => {
2305
+ if (this._filteredIndices = re(this.data, this._filters, (e, t, n) => {
3020
2306
  this.dispatchEvent(new CustomEvent("filter-error", {
3021
2307
  detail: {
3022
2308
  error: e,
@@ -3046,7 +2332,7 @@ var q = {
3046
2332
  e !== this._viewportHeight && (this._viewportHeight = e), t !== this._viewportWidth && (this._viewportWidth = t), this._warnIfUnconstrained();
3047
2333
  }
3048
2334
  _warnIfUnconstrained() {
3049
- this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount < We || 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.`));
3050
2336
  }
3051
2337
  _onScroll() {
3052
2338
  this._scrollTop = this.scrollTop, this._scrollLeft = this.scrollLeft;
@@ -3176,7 +2462,7 @@ var q = {
3176
2462
  }
3177
2463
  let t = this.shadowRoot?.querySelector(".ft-editor");
3178
2464
  if (t) {
3179
- let n = F(t.value, e);
2465
+ let n = j(t.value, e);
3180
2466
  this._applyEdit(n);
3181
2467
  } else this._cancelEdit();
3182
2468
  }
@@ -3250,35 +2536,37 @@ var q = {
3250
2536
  }));
3251
2537
  }
3252
2538
  _onEditorKeyDown(e) {
3253
- if (this._autocompleteState && this._autocompleteState.candidates.length > 0) {
3254
- if (e.key === "ArrowDown") {
3255
- e.preventDefault(), e.stopPropagation();
3256
- let t = this._autocompleteState.candidates.length;
3257
- this._autocompleteState = {
3258
- ...this._autocompleteState,
3259
- activeIndex: Math.min(this._autocompleteState.activeIndex + 1, t - 1)
3260
- };
3261
- return;
3262
- }
3263
- if (e.key === "ArrowUp") {
3264
- e.preventDefault(), e.stopPropagation(), this._autocompleteState = {
3265
- ...this._autocompleteState,
3266
- activeIndex: Math.max(this._autocompleteState.activeIndex - 1, -1)
3267
- };
3268
- return;
3269
- }
3270
- if (e.key === "Enter" && this._autocompleteState.activeIndex >= 0) {
3271
- e.preventDefault(), e.stopPropagation();
3272
- let t = this._autocompleteState.candidates[this._autocompleteState.activeIndex];
3273
- this._selectAutocompleteCandidate(t);
3274
- return;
3275
- }
3276
- if (e.key === "Escape") {
3277
- e.preventDefault(), e.stopPropagation(), this._autocompleteState = null;
3278
- return;
2539
+ if (!m(e)) {
2540
+ if (this._autocompleteState && this._autocompleteState.candidates.length > 0) {
2541
+ if (e.key === "ArrowDown") {
2542
+ e.preventDefault(), e.stopPropagation();
2543
+ let t = this._autocompleteState.candidates.length;
2544
+ this._autocompleteState = {
2545
+ ...this._autocompleteState,
2546
+ activeIndex: Math.min(this._autocompleteState.activeIndex + 1, t - 1)
2547
+ };
2548
+ return;
2549
+ }
2550
+ if (e.key === "ArrowUp") {
2551
+ e.preventDefault(), e.stopPropagation(), this._autocompleteState = {
2552
+ ...this._autocompleteState,
2553
+ activeIndex: Math.max(this._autocompleteState.activeIndex - 1, -1)
2554
+ };
2555
+ return;
2556
+ }
2557
+ if (e.key === "Enter" && this._autocompleteState.activeIndex >= 0) {
2558
+ e.preventDefault(), e.stopPropagation();
2559
+ let t = this._autocompleteState.candidates[this._autocompleteState.activeIndex];
2560
+ this._selectAutocompleteCandidate(t);
2561
+ return;
2562
+ }
2563
+ if (e.key === "Escape") {
2564
+ e.preventDefault(), e.stopPropagation(), this._autocompleteState = null;
2565
+ return;
2566
+ }
3279
2567
  }
2568
+ e.key === "Enter" ? (e.preventDefault(), e.stopPropagation(), this._commitEdit(), this._selection.moveDown(), this._syncActiveCell()) : e.key === "Tab" ? (e.preventDefault(), e.stopPropagation(), this._commitEdit(), e.shiftKey ? this._selection.movePrev() : this._selection.moveNext(), this._syncActiveCell()) : e.key === "Escape" && (e.preventDefault(), e.stopPropagation(), this._cancelEdit());
3280
2569
  }
3281
- e.key === "Enter" ? (e.preventDefault(), e.stopPropagation(), this._commitEdit(), this._selection.moveDown(), this._syncActiveCell()) : e.key === "Tab" ? (e.preventDefault(), e.stopPropagation(), this._commitEdit(), e.shiftKey ? this._selection.movePrev() : this._selection.moveNext(), this._syncActiveCell()) : e.key === "Escape" && (e.preventDefault(), e.stopPropagation(), this._cancelEdit());
3282
2570
  }
3283
2571
  _getAutocompleteCandidates(e, t) {
3284
2572
  let n = t.toLowerCase(), r = /* @__PURE__ */ new Set(), i = [];
@@ -3316,7 +2604,7 @@ var q = {
3316
2604
  ].includes(t) && this._handleCtrlKey(e)) return;
3317
2605
  }
3318
2606
  if (t.length !== 0 && this._visibleRowCount !== 0) {
3319
- if ((e.key === "Enter" || e.key === "F2") && this._activeCell) {
2607
+ if ((e.key === "Enter" || e.key === "F2") && this._activeCell && !m(e)) {
3320
2608
  e.preventDefault();
3321
2609
  let n = t[this._activeCell.col];
3322
2610
  n && this._isCellEditable(n) ? this._startEdit() : e.key === "Enter" && this._fireRowActivate(n);
@@ -3404,7 +2692,7 @@ var q = {
3404
2692
  async _handleCopy(e) {
3405
2693
  let t = this._selection.getEffectiveRange();
3406
2694
  if (!t) return;
3407
- let n = this.visibleColumns, r = ue(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);
3408
2696
  try {
3409
2697
  await navigator.clipboard.writeText(r);
3410
2698
  } catch (e) {
@@ -3430,7 +2718,7 @@ var q = {
3430
2718
  if (!this._activeCell) return;
3431
2719
  let e = await this._readClipboardText();
3432
2720
  if (e == null) return;
3433
- let t = P(e);
2721
+ let t = f(e);
3434
2722
  if (t.length === 0) return;
3435
2723
  let n = this._expandRowsForPaste(this._activeCell.row, t.length), r = this._applyPasteData(this._activeCell, t);
3436
2724
  if (r.length > 0 || n.length > 0) {
@@ -3488,7 +2776,7 @@ var q = {
3488
2776
  for (let a = 0; a < t[i].length; a++) {
3489
2777
  let s = e.col + a;
3490
2778
  if (s >= n.length) break;
3491
- let c = n[s], l = this.data[o][c.key], u = F(t[i][a], c);
2779
+ let c = n[s], l = this.data[o][c.key], u = j(t[i][a], c);
3492
2780
  this.data[o][c.key] = u, r.push({
3493
2781
  row: o,
3494
2782
  col: s,
@@ -3553,7 +2841,7 @@ var q = {
3553
2841
  for (let r = e.startCol + 1; r <= e.endCol; r++) {
3554
2842
  let e = t[r];
3555
2843
  if (!e || !this._isCellEditable(e)) continue;
3556
- let a = F(o == null ? "" : String(o), e);
2844
+ let a = j(o == null ? "" : String(o), e);
3557
2845
  n.push({
3558
2846
  row: i,
3559
2847
  key: e.key,
@@ -3712,7 +3000,7 @@ var q = {
3712
3000
  @click=${n ? (t) => this._onHeaderClick(t, e) : void 0}>
3713
3001
  ${C ? i`
3714
3002
  <button class="ft-hidden-col-indicator"
3715
- title=${A("showHiddenColumns")}
3003
+ title=${O("showHiddenColumns")}
3716
3004
  @click=${(t) => {
3717
3005
  t.stopPropagation(), this._showHiddenBefore(e);
3718
3006
  }}>&#x276F;</button>
@@ -3722,8 +3010,8 @@ var q = {
3722
3010
  ${o >= 0 ? i`<span class="ft-sort-order">${o + 1}</span>` : ""}
3723
3011
  <button class="ft-column-menu-btn ${s ? "ft-filter-active" : ""}"
3724
3012
  type="button"
3725
- title=${A("columnMenu")}
3726
- aria-label=${A("columnMenuFor", { header: e.label })}
3013
+ title=${O("columnMenu")}
3014
+ aria-label=${O("columnMenuFor", { header: e.label })}
3727
3015
  aria-haspopup="menu"
3728
3016
  aria-expanded=${this._headerMenu?.key === e.key ? "true" : "false"}
3729
3017
  @mousedown=${(e) => e.stopPropagation()}
@@ -3842,26 +3130,26 @@ var q = {
3842
3130
  }}>${t}</button>
3843
3131
  `;
3844
3132
  return i`
3845
- <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 })}
3846
3134
  style="position: fixed; left: ${t}px; top: ${n}px; z-index: var(--u-layer-floating, 1000);"
3847
3135
  @mousedown=${(e) => e.stopPropagation()}
3848
3136
  @keydown=${(e) => this._onHeaderMenuKeydown(e)}>
3849
3137
  ${o.sortable === !1 ? a : i`
3850
- ${c("sort-asc", A("sortAscending"), () => this._applySortFromMenu(e, "asc"))}
3851
- ${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"))}
3852
3140
  <div class="ft-header-menu-separator" role="separator"></div>
3853
3141
  `}
3854
3142
  ${this.showFilters ? i`
3855
- ${c("filter", A("filter"), () => this._openFilterFromMenu(e))}
3856
- ${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}
3857
3145
  <div class="ft-header-menu-separator" role="separator"></div>
3858
3146
  ` : a}
3859
- ${c("hide", A("hideColumn"), () => this._setColumnHidden(e, !0))}
3860
- ${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)))}
3861
3149
  <div class="ft-header-menu-separator" role="separator"></div>
3862
- ${c("autofit", A("autoFitWidth"), () => this._autoFitColumn(e))}
3863
- ${c("wider", A("wider"), () => this._resizeColumnBy(e, X), !0)}
3864
- ${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)}
3865
3153
  </div>
3866
3154
  `;
3867
3155
  }
@@ -3879,26 +3167,26 @@ var q = {
3879
3167
  }}>${e}</button>
3880
3168
  `, f = i`<div class="ft-context-menu-separator" role="separator"></div>`;
3881
3169
  return i`
3882
- <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")}
3883
3171
  style="position: fixed; left: ${n}px; top: ${r}px; z-index: var(--u-layer-floating, 1000);"
3884
3172
  @mousedown=${(e) => e.stopPropagation()}
3885
3173
  @keydown=${(e) => this._onMenuKeydown(e, ".ft-body-context-menu", l)}>
3886
- ${d(A("copy"), () => this._handleCopy(!1))}
3174
+ ${d(O("copy"), () => this._handleCopy(!1))}
3887
3175
  ${f}
3888
- ${d(A("insertRowAbove"), () => this.addRow(void 0, t))}
3889
- ${d(A("insertRowBelow"), () => this.addRow(void 0, t + 1))}
3890
- ${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)}
3891
3179
  ${f}
3892
- ${d(A("hideColumn"), () => this._setColumnHidden(o.key, !0))}
3180
+ ${d(O("hideColumn"), () => this._setColumnHidden(o.key, !0))}
3893
3181
  ${f}
3894
- ${d(`${A("sortAscending")} ↑`, () => this._applySortFromMenu(o.key, "asc"))}
3895
- ${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"))}
3896
3184
  ${f}
3897
- ${d(A("filterByThisValue"), () => this.setFilter(o.key, (e) => e === s))}
3898
- ${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}
3899
3187
  ${f}
3900
- ${d(A(u ? "editComment" : "addComment"), () => this._openCommentPopup(t, o.key, n, r))}
3901
- ${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}
3902
3190
  </div>
3903
3191
  `;
3904
3192
  }
@@ -3930,13 +3218,13 @@ var q = {
3930
3218
  @mousedown=${(e) => e.stopPropagation()}>
3931
3219
  <textarea class="ft-comment-popup-textarea"
3932
3220
  rows="4"
3933
- placeholder=${A("addCommentPlaceholder")}
3221
+ placeholder=${O("addCommentPlaceholder")}
3934
3222
  @keydown=${(e) => {
3935
3223
  e.key === "Escape" && (e.preventDefault(), this._cancelCommentPopup()), e.key === "Enter" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this._commitCommentPopup());
3936
3224
  }}></textarea>
3937
3225
  <div class="ft-comment-popup-buttons">
3938
- <button class="ft-comment-popup-cancel" @click=${() => this._cancelCommentPopup()}>${A("cancel")}</button>
3939
- <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>
3940
3228
  </div>
3941
3229
  </div>
3942
3230
  `;
@@ -3972,7 +3260,7 @@ var q = {
3972
3260
  <div class="ft-filter-dropdown" @click=${(e) => e.stopPropagation()}>
3973
3261
  ${t === "boolean" ? this._renderBooleanFilter(e) : t === "number" ? this._renderNumberFilter(e) : t === "date" || t === "datetime" ? this._renderDateFilter(e) : this._renderTextFilter(e)}
3974
3262
  <div class="ft-filter-actions">
3975
- <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>
3976
3264
  </div>
3977
3265
  </div>
3978
3266
  `;
@@ -4005,7 +3293,7 @@ var q = {
4005
3293
  let n = this._emptyFilterState.get(e) ?? "";
4006
3294
  return i`
4007
3295
  <div class="ft-filter-empty-row">
4008
- <label>${A("blankCells")}</label>
3296
+ <label>${O("blankCells")}</label>
4009
3297
  <select class="ft-filter-mode-select"
4010
3298
  .value=${n}
4011
3299
  @change=${(n) => {
@@ -4015,9 +3303,9 @@ var q = {
4015
3303
  @keydown=${(e) => {
4016
3304
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4017
3305
  }}>
4018
- <option value="">${A("blankAll")}</option>
4019
- <option value="empty">${A("emptyOnly")}</option>
4020
- <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>
4021
3309
  </select>
4022
3310
  </div>
4023
3311
  `;
@@ -4093,13 +3381,13 @@ var q = {
4093
3381
  @keydown=${(e) => {
4094
3382
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4095
3383
  }}>
4096
- <option value="contains">${A("contains")}</option>
4097
- <option value="starts">${A("startsWith")}</option>
4098
- <option value="ends">${A("endsWith")}</option>
4099
- <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>
4100
3388
  </select>
4101
3389
  </div>
4102
- <input class="ft-filter-input" type="text" placeholder=${A("searchPlaceholder")}
3390
+ <input class="ft-filter-input" type="text" placeholder=${O("searchPlaceholder")}
4103
3391
  .value=${t.value}
4104
3392
  @input=${(t) => {
4105
3393
  let n = t.target.value, r = this._textFilterState.get(e.key) ?? {
@@ -4150,7 +3438,7 @@ var q = {
4150
3438
  }}>
4151
3439
  ${Object.keys(q).map((e) => i`<option value=${e}>${q[e]}</option>`)}
4152
3440
  </select>
4153
- <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")}
4154
3442
  .value=${n.value == null ? "" : String(n.value)}
4155
3443
  @input=${(n) => {
4156
3444
  let r = n.target.value, i = this._numberFilterState.get(e) ?? this._defaultNumState();
@@ -4211,13 +3499,13 @@ var q = {
4211
3499
  let t = e.type === "datetime" ? "datetime-local" : "date", n = this._dateFilterState.get(e.key) ?? {};
4212
3500
  return i`
4213
3501
  <div class="ft-filter-range">
4214
- <input class="ft-filter-input" type=${t} placeholder=${A("fromPlaceholder")}
3502
+ <input class="ft-filter-input" type=${t} placeholder=${O("fromPlaceholder")}
4215
3503
  .value=${n.from ?? ""}
4216
3504
  @input=${(t) => this._applyDateFilter(e.key, t, "from")}
4217
3505
  @keydown=${(e) => {
4218
3506
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4219
3507
  }}>
4220
- <input class="ft-filter-input" type=${t} placeholder=${A("toPlaceholder")}
3508
+ <input class="ft-filter-input" type=${t} placeholder=${O("toPlaceholder")}
4221
3509
  .value=${n.to ?? ""}
4222
3510
  @input=${(t) => this._applyDateFilter(e.key, t, "to")}
4223
3511
  @keydown=${(e) => {
@@ -4243,9 +3531,9 @@ var q = {
4243
3531
  @keydown=${(e) => {
4244
3532
  e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
4245
3533
  }}>
4246
- <option value="all">${A("all")}</option>
4247
- <option value="true">\u2714 ${A("booleanTrue")}</option>
4248
- <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>
4249
3537
  </select>
4250
3538
  ${this._renderEmptyFilterRow(e.key)}
4251
3539
  `;
@@ -4662,42 +3950,42 @@ var q = {
4662
3950
  this._closeFindPanel();
4663
3951
  return;
4664
3952
  }
4665
- e.key === "Enter" && 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());
4666
3954
  }}>
4667
3955
  <div class="ft-find-row">
4668
- <input class="ft-find-input" type="text" placeholder=${A("findPlaceholder")}
3956
+ <input class="ft-find-input" type="text" placeholder=${O("findPlaceholder")}
4669
3957
  .value=${t}
4670
3958
  @input=${(e) => {
4671
3959
  this._findState.query = e.target.value, this._findSearch();
4672
3960
  }}>
4673
3961
  <span class="ft-find-count">${c > 0 ? `${l}/${c}` : t ? "0 results" : ""}</span>
4674
- <button @click=${() => this._findPrev()} title=${A("findPrevious")}>◀</button>
4675
- <button @click=${() => this._findNext()} title=${A("findNext")}>▶</button>
4676
- <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) => {
4677
3965
  this._findState.matchCase = e.target.checked, this._findSearch();
4678
3966
  }}> Aa</label>
4679
- <label title=${A("wholeCell")}><input type="checkbox" ?checked=${a} @change=${(e) => {
3967
+ <label title=${O("wholeCell")}><input type="checkbox" ?checked=${a} @change=${(e) => {
4680
3968
  this._findState.wholeCell = e.target.checked, this._findSearch();
4681
3969
  }}> [ ]</label>
4682
- <button @click=${() => this._closeFindPanel()} title=${A("closeFind")}>✕</button>
3970
+ <button @click=${() => this._closeFindPanel()} title=${O("closeFind")}>✕</button>
4683
3971
  </div>
4684
3972
  ${e === "replace" ? i`
4685
3973
  <div class="ft-find-row">
4686
- <input class="ft-find-replace-input" type="text" placeholder=${A("replaceWithPlaceholder")}
3974
+ <input class="ft-find-replace-input" type="text" placeholder=${O("replaceWithPlaceholder")}
4687
3975
  .value=${n}
4688
3976
  @input=${(e) => {
4689
3977
  this._findState.replaceWith = e.target.value;
4690
3978
  }}>
4691
- <button @click=${() => this._replaceOne()} ?disabled=${c === 0}>${A("replace")}</button>
4692
- <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>
4693
3981
  </div>
4694
3982
  ` : ""}
4695
3983
  </div>
4696
3984
  `;
4697
3985
  }
4698
3986
  render() {
4699
- 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;
4700
- 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>`;
4701
3989
  let r = this.headerHeight, o = this._totalRowWidth, { start: s, end: c } = this.visibleColRange, l = [];
4702
3990
  for (let t = 0; t < e.length; t++) (e[t].pinned === "left" || e[t].pinned === "right") && (t < s || t >= c) && l.push(t);
4703
3991
  let u = 0, d = this._scrollLeft, f = this.selectable ? i`<div class="ft-checkbox-header"
@@ -4845,7 +4133,7 @@ var q = {
4845
4133
  ${this._renderEditor(e, t)}
4846
4134
  </div>
4847
4135
  `;
4848
- 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 = [
4849
4137
  "ft-cell",
4850
4138
  `ft-type-${t.type ?? "text"}`,
4851
4139
  `ft-align-${G(t)}`,
@@ -4853,10 +4141,10 @@ var q = {
4853
4141
  c ? "ft-selected" : "",
4854
4142
  d ? "ft-pinned" : "",
4855
4143
  v ? "ft-invalid" : "",
4856
- x ? "ft-find-current" : b ? "ft-find-match" : ""
4857
- ].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;
4858
4146
  return i`
4859
- <div class=${T ? S + " ft-has-comment" : S}
4147
+ <div class=${E ? C + " ft-has-comment" : C}
4860
4148
  role="gridcell"
4861
4149
  data-col-index=${r}
4862
4150
  aria-selected=${_ ? "true" : "false"}
@@ -4868,8 +4156,8 @@ var q = {
4868
4156
  @mouseenter=${() => this._onCellMouseEnter(n, r)}
4869
4157
  @click=${(e) => this._onCellClickEvent(e, n, r)}
4870
4158
  @dblclick=${() => this._onCellDblClick(n, r)}>
4871
- ${E}
4872
- ${O(e[t.key], e, t)}
4159
+ ${D}
4160
+ ${b(e[t.key], e, t)}
4873
4161
  </div>
4874
4162
  `;
4875
4163
  }
@@ -5007,4 +4295,4 @@ K([s({ type: Array })], $.prototype, "columns", void 0), K([s({
5007
4295
  attribute: "max-undo-size"
5008
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")], $);
5009
4297
  //#endregion
5010
- export { M as a, N as i, G as n, k as o, B 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 };