@iyulab/flex-table 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +51 -0
- package/dist/{flex-table-Y4GyDV0Y.js → flex-table-BAQbidin.js} +899 -152
- package/dist/flex-table.js +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/locale.d.ts +32 -0
- package/dist/react.js +1 -1
- package/package.json +1 -1
|
@@ -978,8 +978,755 @@ function y(e) {
|
|
|
978
978
|
return String(e);
|
|
979
979
|
}
|
|
980
980
|
//#endregion
|
|
981
|
+
//#region node_modules/@iyulab/components/dist/utilities/Locale.js
|
|
982
|
+
var b = new Map(Object.entries(/* #__PURE__ */ Object.assign({
|
|
983
|
+
"../assets/locales/ar.json": {
|
|
984
|
+
valueMissing: "هذا الحقل مطلوب",
|
|
985
|
+
badInput: "يرجى إدخال قيمة صالحة",
|
|
986
|
+
typeMismatch: "يرجى إدخال قيمة بالتنسيق الصحيح",
|
|
987
|
+
patternMismatch: "يرجى اتباع التنسيق المطلوب",
|
|
988
|
+
rangeUnderflow: "يجب أن تكون القيمة {min} على الأقل",
|
|
989
|
+
rangeOverflow: "يجب ألا تتجاوز القيمة {max}",
|
|
990
|
+
stepMismatch: "يجب أن تكون القيمة من مضاعفات {step}",
|
|
991
|
+
tooShort: "يجب أن تكون {min} على الأقل",
|
|
992
|
+
tooLong: "يجب ألا تتجاوز {max}",
|
|
993
|
+
increment: "زيادة القيمة",
|
|
994
|
+
decrement: "إنقاص القيمة",
|
|
995
|
+
clear: "مسح القيمة",
|
|
996
|
+
today: "اليوم",
|
|
997
|
+
time: "الوقت",
|
|
998
|
+
showPassword: "إظهار كلمة المرور",
|
|
999
|
+
hidePassword: "إخفاء كلمة المرور",
|
|
1000
|
+
previousSlide: "الشريحة السابقة",
|
|
1001
|
+
nextSlide: "الشريحة التالية",
|
|
1002
|
+
goToSlide: "الانتقال إلى الشريحة {n}",
|
|
1003
|
+
chooseDate: "اختر التاريخ",
|
|
1004
|
+
previousMonth: "الشهر السابق",
|
|
1005
|
+
nextMonth: "الشهر التالي",
|
|
1006
|
+
close: "إغلاق",
|
|
1007
|
+
copy: "نسخ",
|
|
1008
|
+
copied: "تم النسخ",
|
|
1009
|
+
chooseFile: "اختر ملفًا",
|
|
1010
|
+
noFileChosen: "لم يتم اختيار أي ملف",
|
|
1011
|
+
filesSelected: "تم اختيار {count} ملفات",
|
|
1012
|
+
resizePanels: "تغيير حجم اللوحات",
|
|
1013
|
+
search: "بحث",
|
|
1014
|
+
alertError: "خطأ",
|
|
1015
|
+
alertWarning: "تحذير",
|
|
1016
|
+
alertSuccess: "نجاح",
|
|
1017
|
+
alertInfo: "معلومات",
|
|
1018
|
+
alertNotice: "إشعار",
|
|
1019
|
+
alertMessage: "رسالة",
|
|
1020
|
+
remove: "إزالة",
|
|
1021
|
+
closeTab: "إغلاق علامة التبويب",
|
|
1022
|
+
breadcrumb: "مسار التنقل"
|
|
1023
|
+
},
|
|
1024
|
+
"../assets/locales/de.json": {
|
|
1025
|
+
valueMissing: "Dieses Feld ist erforderlich",
|
|
1026
|
+
badInput: "Bitte geben Sie einen gültigen Wert ein",
|
|
1027
|
+
typeMismatch: "Bitte geben Sie einen gültigen Wert ein",
|
|
1028
|
+
patternMismatch: "Bitte halten Sie sich an das angeforderte Format",
|
|
1029
|
+
rangeUnderflow: "Der Wert muss mindestens {min} betragen",
|
|
1030
|
+
rangeOverflow: "Der Wert darf höchstens {max} betragen",
|
|
1031
|
+
stepMismatch: "Der Wert muss ein Vielfaches von {step} sein",
|
|
1032
|
+
tooShort: "Muss mindestens {min} betragen",
|
|
1033
|
+
tooLong: "Darf höchstens {max} betragen",
|
|
1034
|
+
increment: "Wert erhöhen",
|
|
1035
|
+
decrement: "Wert verringern",
|
|
1036
|
+
clear: "Wert löschen",
|
|
1037
|
+
today: "Heute",
|
|
1038
|
+
time: "Uhrzeit",
|
|
1039
|
+
showPassword: "Passwort anzeigen",
|
|
1040
|
+
hidePassword: "Passwort verbergen",
|
|
1041
|
+
previousSlide: "Vorherige Folie",
|
|
1042
|
+
nextSlide: "Nächste Folie",
|
|
1043
|
+
goToSlide: "Zu Folie {n} wechseln",
|
|
1044
|
+
chooseDate: "Datum auswählen",
|
|
1045
|
+
previousMonth: "Vorheriger Monat",
|
|
1046
|
+
nextMonth: "Nächster Monat",
|
|
1047
|
+
close: "Schließen",
|
|
1048
|
+
copy: "Kopieren",
|
|
1049
|
+
copied: "Kopiert",
|
|
1050
|
+
chooseFile: "Datei auswählen",
|
|
1051
|
+
noFileChosen: "Keine Datei ausgewählt",
|
|
1052
|
+
filesSelected: "{count} Dateien ausgewählt",
|
|
1053
|
+
resizePanels: "Bereichsgröße ändern",
|
|
1054
|
+
search: "Suchen",
|
|
1055
|
+
alertError: "Fehler",
|
|
1056
|
+
alertWarning: "Warnung",
|
|
1057
|
+
alertSuccess: "Erfolg",
|
|
1058
|
+
alertInfo: "Information",
|
|
1059
|
+
alertNotice: "Hinweis",
|
|
1060
|
+
alertMessage: "Nachricht",
|
|
1061
|
+
remove: "Entfernen",
|
|
1062
|
+
closeTab: "Tab schließen",
|
|
1063
|
+
breadcrumb: "Navigationspfad"
|
|
1064
|
+
},
|
|
1065
|
+
"../assets/locales/en.json": {
|
|
1066
|
+
valueMissing: "This field is required",
|
|
1067
|
+
badInput: "Please enter a valid value",
|
|
1068
|
+
typeMismatch: "Please enter a valid value",
|
|
1069
|
+
patternMismatch: "Please match the requested format",
|
|
1070
|
+
rangeUnderflow: "Value must be at least {min}",
|
|
1071
|
+
rangeOverflow: "Value must be at most {max}",
|
|
1072
|
+
stepMismatch: "Value must be a multiple of {step}",
|
|
1073
|
+
tooShort: "Must be at least {min}",
|
|
1074
|
+
tooLong: "Must be at most {max}",
|
|
1075
|
+
increment: "Increase value",
|
|
1076
|
+
decrement: "Decrease value",
|
|
1077
|
+
clear: "Clear value",
|
|
1078
|
+
today: "Today",
|
|
1079
|
+
time: "Time",
|
|
1080
|
+
showPassword: "Show password",
|
|
1081
|
+
hidePassword: "Hide password",
|
|
1082
|
+
previousSlide: "Previous slide",
|
|
1083
|
+
nextSlide: "Next slide",
|
|
1084
|
+
goToSlide: "Go to slide {n}",
|
|
1085
|
+
chooseDate: "Choose date",
|
|
1086
|
+
previousMonth: "Previous month",
|
|
1087
|
+
nextMonth: "Next month",
|
|
1088
|
+
close: "Close",
|
|
1089
|
+
copy: "Copy",
|
|
1090
|
+
copied: "Copied",
|
|
1091
|
+
chooseFile: "Choose file",
|
|
1092
|
+
noFileChosen: "No file chosen",
|
|
1093
|
+
filesSelected: "{count} files selected",
|
|
1094
|
+
resizePanels: "Resize panels",
|
|
1095
|
+
search: "Search",
|
|
1096
|
+
alertError: "Error",
|
|
1097
|
+
alertWarning: "Warning",
|
|
1098
|
+
alertSuccess: "Success",
|
|
1099
|
+
alertInfo: "Information",
|
|
1100
|
+
alertNotice: "Notice",
|
|
1101
|
+
alertMessage: "Message",
|
|
1102
|
+
remove: "Remove",
|
|
1103
|
+
closeTab: "Close tab",
|
|
1104
|
+
breadcrumb: "Breadcrumb"
|
|
1105
|
+
},
|
|
1106
|
+
"../assets/locales/es.json": {
|
|
1107
|
+
valueMissing: "Este campo es obligatorio",
|
|
1108
|
+
badInput: "Introduzca un valor válido",
|
|
1109
|
+
typeMismatch: "Introduzca un valor con el formato correcto",
|
|
1110
|
+
patternMismatch: "Ajuste el valor al formato solicitado",
|
|
1111
|
+
rangeUnderflow: "El valor debe ser como mínimo {min}",
|
|
1112
|
+
rangeOverflow: "El valor debe ser como máximo {max}",
|
|
1113
|
+
stepMismatch: "El valor debe ser múltiplo de {step}",
|
|
1114
|
+
tooShort: "Debe ser como mínimo {min}",
|
|
1115
|
+
tooLong: "Debe ser como máximo {max}",
|
|
1116
|
+
increment: "Aumentar valor",
|
|
1117
|
+
decrement: "Disminuir valor",
|
|
1118
|
+
clear: "Borrar valor",
|
|
1119
|
+
today: "Hoy",
|
|
1120
|
+
time: "Hora",
|
|
1121
|
+
showPassword: "Mostrar contraseña",
|
|
1122
|
+
hidePassword: "Ocultar contraseña",
|
|
1123
|
+
previousSlide: "Diapositiva anterior",
|
|
1124
|
+
nextSlide: "Siguiente diapositiva",
|
|
1125
|
+
goToSlide: "Ir a la diapositiva {n}",
|
|
1126
|
+
chooseDate: "Elegir fecha",
|
|
1127
|
+
previousMonth: "Mes anterior",
|
|
1128
|
+
nextMonth: "Mes siguiente",
|
|
1129
|
+
close: "Cerrar",
|
|
1130
|
+
copy: "Copiar",
|
|
1131
|
+
copied: "Copiado",
|
|
1132
|
+
chooseFile: "Elegir archivo",
|
|
1133
|
+
noFileChosen: "Ningún archivo elegido",
|
|
1134
|
+
filesSelected: "{count} archivos seleccionados",
|
|
1135
|
+
resizePanels: "Cambiar el tamaño de los paneles",
|
|
1136
|
+
search: "Buscar",
|
|
1137
|
+
alertError: "Error",
|
|
1138
|
+
alertWarning: "Advertencia",
|
|
1139
|
+
alertSuccess: "Éxito",
|
|
1140
|
+
alertInfo: "Información",
|
|
1141
|
+
alertNotice: "Aviso",
|
|
1142
|
+
alertMessage: "Mensaje",
|
|
1143
|
+
remove: "Quitar",
|
|
1144
|
+
closeTab: "Cerrar pestaña",
|
|
1145
|
+
breadcrumb: "Ruta de navegación"
|
|
1146
|
+
},
|
|
1147
|
+
"../assets/locales/fr.json": {
|
|
1148
|
+
valueMissing: "Ce champ est obligatoire",
|
|
1149
|
+
badInput: "Veuillez saisir une valeur valide",
|
|
1150
|
+
typeMismatch: "Veuillez saisir une valeur au format correct",
|
|
1151
|
+
patternMismatch: "Veuillez respecter le format demandé",
|
|
1152
|
+
rangeUnderflow: "La valeur doit être supérieure ou égale à {min}",
|
|
1153
|
+
rangeOverflow: "La valeur doit être inférieure ou égale à {max}",
|
|
1154
|
+
stepMismatch: "La valeur doit être un multiple de {step}",
|
|
1155
|
+
tooShort: "Doit être au moins {min}",
|
|
1156
|
+
tooLong: "Doit être au plus {max}",
|
|
1157
|
+
increment: "Augmenter la valeur",
|
|
1158
|
+
decrement: "Diminuer la valeur",
|
|
1159
|
+
clear: "Effacer la valeur",
|
|
1160
|
+
today: "Aujourd’hui",
|
|
1161
|
+
time: "Heure",
|
|
1162
|
+
showPassword: "Afficher le mot de passe",
|
|
1163
|
+
hidePassword: "Masquer le mot de passe",
|
|
1164
|
+
previousSlide: "Diapositive précédente",
|
|
1165
|
+
nextSlide: "Diapositive suivante",
|
|
1166
|
+
goToSlide: "Aller à la diapositive {n}",
|
|
1167
|
+
chooseDate: "Choisir une date",
|
|
1168
|
+
previousMonth: "Mois précédent",
|
|
1169
|
+
nextMonth: "Mois suivant",
|
|
1170
|
+
close: "Fermer",
|
|
1171
|
+
copy: "Copier",
|
|
1172
|
+
copied: "Copié",
|
|
1173
|
+
chooseFile: "Choisir un fichier",
|
|
1174
|
+
noFileChosen: "Aucun fichier choisi",
|
|
1175
|
+
filesSelected: "{count} fichiers sélectionnés",
|
|
1176
|
+
resizePanels: "Redimensionner les panneaux",
|
|
1177
|
+
search: "Rechercher",
|
|
1178
|
+
alertError: "Erreur",
|
|
1179
|
+
alertWarning: "Avertissement",
|
|
1180
|
+
alertSuccess: "Succès",
|
|
1181
|
+
alertInfo: "Information",
|
|
1182
|
+
alertNotice: "Avis",
|
|
1183
|
+
alertMessage: "Message",
|
|
1184
|
+
remove: "Supprimer",
|
|
1185
|
+
closeTab: "Fermer l'onglet",
|
|
1186
|
+
breadcrumb: "Fil d'Ariane"
|
|
1187
|
+
},
|
|
1188
|
+
"../assets/locales/id.json": {
|
|
1189
|
+
valueMissing: "Kolom ini wajib diisi",
|
|
1190
|
+
badInput: "Masukkan nilai yang valid",
|
|
1191
|
+
typeMismatch: "Masukkan nilai dengan format yang benar",
|
|
1192
|
+
patternMismatch: "Sesuaikan dengan format yang diminta",
|
|
1193
|
+
rangeUnderflow: "Nilai harus minimal {min}",
|
|
1194
|
+
rangeOverflow: "Nilai harus maksimal {max}",
|
|
1195
|
+
stepMismatch: "Nilai harus kelipatan dari {step}",
|
|
1196
|
+
tooShort: "Harus minimal {min}",
|
|
1197
|
+
tooLong: "Harus maksimal {max}",
|
|
1198
|
+
increment: "Tambah nilai",
|
|
1199
|
+
decrement: "Kurangi nilai",
|
|
1200
|
+
clear: "Hapus nilai",
|
|
1201
|
+
today: "Hari ini",
|
|
1202
|
+
time: "Waktu",
|
|
1203
|
+
showPassword: "Tampilkan kata sandi",
|
|
1204
|
+
hidePassword: "Sembunyikan kata sandi",
|
|
1205
|
+
previousSlide: "Slide sebelumnya",
|
|
1206
|
+
nextSlide: "Slide berikutnya",
|
|
1207
|
+
goToSlide: "Buka slide {n}",
|
|
1208
|
+
chooseDate: "Pilih tanggal",
|
|
1209
|
+
previousMonth: "Bulan sebelumnya",
|
|
1210
|
+
nextMonth: "Bulan berikutnya",
|
|
1211
|
+
close: "Tutup",
|
|
1212
|
+
copy: "Salin",
|
|
1213
|
+
copied: "Disalin",
|
|
1214
|
+
chooseFile: "Pilih berkas",
|
|
1215
|
+
noFileChosen: "Tidak ada berkas dipilih",
|
|
1216
|
+
filesSelected: "{count} berkas dipilih",
|
|
1217
|
+
resizePanels: "Ubah ukuran panel",
|
|
1218
|
+
search: "Cari",
|
|
1219
|
+
alertError: "Kesalahan",
|
|
1220
|
+
alertWarning: "Peringatan",
|
|
1221
|
+
alertSuccess: "Berhasil",
|
|
1222
|
+
alertInfo: "Informasi",
|
|
1223
|
+
alertNotice: "Pemberitahuan",
|
|
1224
|
+
alertMessage: "Pesan",
|
|
1225
|
+
remove: "Hapus",
|
|
1226
|
+
closeTab: "Tutup tab",
|
|
1227
|
+
breadcrumb: "Navigasi remah roti"
|
|
1228
|
+
},
|
|
1229
|
+
"../assets/locales/ja.json": {
|
|
1230
|
+
valueMissing: "この項目は必須です",
|
|
1231
|
+
badInput: "有効な値を入力してください",
|
|
1232
|
+
typeMismatch: "正しい形式の値を入力してください",
|
|
1233
|
+
patternMismatch: "指定された形式で入力してください",
|
|
1234
|
+
rangeUnderflow: "値は{min}以上である必要があります",
|
|
1235
|
+
rangeOverflow: "値は{max}以下である必要があります",
|
|
1236
|
+
stepMismatch: "値は{step}の倍数である必要があります",
|
|
1237
|
+
tooShort: "{min}以上である必要があります",
|
|
1238
|
+
tooLong: "{max}以下である必要があります",
|
|
1239
|
+
increment: "値を増やす",
|
|
1240
|
+
decrement: "値を減らす",
|
|
1241
|
+
clear: "値をクリア",
|
|
1242
|
+
today: "今日",
|
|
1243
|
+
time: "時刻",
|
|
1244
|
+
showPassword: "パスワードを表示",
|
|
1245
|
+
hidePassword: "パスワードを隠す",
|
|
1246
|
+
previousSlide: "前のスライド",
|
|
1247
|
+
nextSlide: "次のスライド",
|
|
1248
|
+
goToSlide: "スライド{n}に移動",
|
|
1249
|
+
chooseDate: "日付を選択",
|
|
1250
|
+
previousMonth: "前月",
|
|
1251
|
+
nextMonth: "翌月",
|
|
1252
|
+
close: "閉じる",
|
|
1253
|
+
copy: "コピー",
|
|
1254
|
+
copied: "コピーしました",
|
|
1255
|
+
chooseFile: "ファイルを選択",
|
|
1256
|
+
noFileChosen: "ファイルが選択されていません",
|
|
1257
|
+
filesSelected: "{count}個のファイルを選択しました",
|
|
1258
|
+
resizePanels: "パネルのサイズ変更",
|
|
1259
|
+
search: "検索",
|
|
1260
|
+
alertError: "エラー",
|
|
1261
|
+
alertWarning: "警告",
|
|
1262
|
+
alertSuccess: "完了",
|
|
1263
|
+
alertInfo: "お知らせ",
|
|
1264
|
+
alertNotice: "通知",
|
|
1265
|
+
alertMessage: "メッセージ",
|
|
1266
|
+
remove: "削除",
|
|
1267
|
+
closeTab: "タブを閉じる",
|
|
1268
|
+
breadcrumb: "パンくずリスト"
|
|
1269
|
+
},
|
|
1270
|
+
"../assets/locales/ko.json": {
|
|
1271
|
+
valueMissing: "필수 항목입니다",
|
|
1272
|
+
badInput: "올바른 값을 입력하세요",
|
|
1273
|
+
typeMismatch: "올바른 형식의 값을 입력하세요",
|
|
1274
|
+
patternMismatch: "요청된 형식에 맞게 입력하세요",
|
|
1275
|
+
rangeUnderflow: "값은 {min} 이상이어야 합니다",
|
|
1276
|
+
rangeOverflow: "값은 {max} 이하여야 합니다",
|
|
1277
|
+
stepMismatch: "값은 {step}의 배수여야 합니다",
|
|
1278
|
+
tooShort: "최소 {min} 이상이어야 합니다",
|
|
1279
|
+
tooLong: "최대 {max} 이하여야 합니다",
|
|
1280
|
+
increment: "값 증가",
|
|
1281
|
+
decrement: "값 감소",
|
|
1282
|
+
clear: "값 지우기",
|
|
1283
|
+
today: "오늘",
|
|
1284
|
+
time: "시간",
|
|
1285
|
+
showPassword: "비밀번호 표시",
|
|
1286
|
+
hidePassword: "비밀번호 숨기기",
|
|
1287
|
+
previousSlide: "이전 슬라이드",
|
|
1288
|
+
nextSlide: "다음 슬라이드",
|
|
1289
|
+
goToSlide: "{n}번 슬라이드로 이동",
|
|
1290
|
+
chooseDate: "날짜 선택",
|
|
1291
|
+
previousMonth: "이전 달",
|
|
1292
|
+
nextMonth: "다음 달",
|
|
1293
|
+
close: "닫기",
|
|
1294
|
+
copy: "복사",
|
|
1295
|
+
copied: "복사됨",
|
|
1296
|
+
chooseFile: "파일 선택",
|
|
1297
|
+
noFileChosen: "선택된 파일 없음",
|
|
1298
|
+
filesSelected: "{count}개 파일 선택됨",
|
|
1299
|
+
resizePanels: "패널 크기 조절",
|
|
1300
|
+
search: "검색",
|
|
1301
|
+
alertError: "오류",
|
|
1302
|
+
alertWarning: "경고",
|
|
1303
|
+
alertSuccess: "완료",
|
|
1304
|
+
alertInfo: "안내",
|
|
1305
|
+
alertNotice: "알림",
|
|
1306
|
+
alertMessage: "메시지",
|
|
1307
|
+
remove: "제거",
|
|
1308
|
+
closeTab: "탭 닫기",
|
|
1309
|
+
breadcrumb: "탐색 경로"
|
|
1310
|
+
},
|
|
1311
|
+
"../assets/locales/pt-BR.json": {
|
|
1312
|
+
valueMissing: "Este campo é obrigatório",
|
|
1313
|
+
badInput: "Insira um valor válido",
|
|
1314
|
+
typeMismatch: "Insira um valor no formato correto",
|
|
1315
|
+
patternMismatch: "Siga o formato solicitado",
|
|
1316
|
+
rangeUnderflow: "O valor deve ser no mínimo {min}",
|
|
1317
|
+
rangeOverflow: "O valor deve ser no máximo {max}",
|
|
1318
|
+
stepMismatch: "O valor deve ser um múltiplo de {step}",
|
|
1319
|
+
tooShort: "Deve ser no mínimo {min}",
|
|
1320
|
+
tooLong: "Deve ser no máximo {max}",
|
|
1321
|
+
increment: "Aumentar valor",
|
|
1322
|
+
decrement: "Diminuir valor",
|
|
1323
|
+
clear: "Limpar valor",
|
|
1324
|
+
today: "Hoje",
|
|
1325
|
+
time: "Hora",
|
|
1326
|
+
showPassword: "Mostrar senha",
|
|
1327
|
+
hidePassword: "Ocultar senha",
|
|
1328
|
+
previousSlide: "Slide anterior",
|
|
1329
|
+
nextSlide: "Próximo slide",
|
|
1330
|
+
goToSlide: "Ir para o slide {n}",
|
|
1331
|
+
chooseDate: "Escolher data",
|
|
1332
|
+
previousMonth: "Mês anterior",
|
|
1333
|
+
nextMonth: "Próximo mês",
|
|
1334
|
+
close: "Fechar",
|
|
1335
|
+
copy: "Copiar",
|
|
1336
|
+
copied: "Copiado",
|
|
1337
|
+
chooseFile: "Escolher arquivo",
|
|
1338
|
+
noFileChosen: "Nenhum arquivo escolhido",
|
|
1339
|
+
filesSelected: "{count} arquivos selecionados",
|
|
1340
|
+
resizePanels: "Redimensionar painéis",
|
|
1341
|
+
search: "Pesquisar",
|
|
1342
|
+
alertError: "Erro",
|
|
1343
|
+
alertWarning: "Aviso",
|
|
1344
|
+
alertSuccess: "Sucesso",
|
|
1345
|
+
alertInfo: "Informação",
|
|
1346
|
+
alertNotice: "Nota",
|
|
1347
|
+
alertMessage: "Mensagem",
|
|
1348
|
+
remove: "Remover",
|
|
1349
|
+
closeTab: "Fechar aba",
|
|
1350
|
+
breadcrumb: "Trilha de navegação"
|
|
1351
|
+
},
|
|
1352
|
+
"../assets/locales/ru.json": {
|
|
1353
|
+
valueMissing: "Это поле обязательно для заполнения",
|
|
1354
|
+
badInput: "Введите допустимое значение",
|
|
1355
|
+
typeMismatch: "Введите значение в правильном формате",
|
|
1356
|
+
patternMismatch: "Введите значение в требуемом формате",
|
|
1357
|
+
rangeUnderflow: "Значение должно быть не менее {min}",
|
|
1358
|
+
rangeOverflow: "Значение должно быть не более {max}",
|
|
1359
|
+
stepMismatch: "Значение должно быть кратно {step}",
|
|
1360
|
+
tooShort: "Должно быть не менее {min}",
|
|
1361
|
+
tooLong: "Должно быть не более {max}",
|
|
1362
|
+
increment: "Увеличить значение",
|
|
1363
|
+
decrement: "Уменьшить значение",
|
|
1364
|
+
clear: "Очистить значение",
|
|
1365
|
+
today: "Сегодня",
|
|
1366
|
+
time: "Время",
|
|
1367
|
+
showPassword: "Показать пароль",
|
|
1368
|
+
hidePassword: "Скрыть пароль",
|
|
1369
|
+
previousSlide: "Предыдущий слайд",
|
|
1370
|
+
nextSlide: "Следующий слайд",
|
|
1371
|
+
goToSlide: "Перейти к слайду {n}",
|
|
1372
|
+
chooseDate: "Выбрать дату",
|
|
1373
|
+
previousMonth: "Предыдущий месяц",
|
|
1374
|
+
nextMonth: "Следующий месяц",
|
|
1375
|
+
close: "Закрыть",
|
|
1376
|
+
copy: "Копировать",
|
|
1377
|
+
copied: "Скопировано",
|
|
1378
|
+
chooseFile: "Выбрать файл",
|
|
1379
|
+
noFileChosen: "Файл не выбран",
|
|
1380
|
+
filesSelected: "Выбрано файлов: {count}",
|
|
1381
|
+
resizePanels: "Изменить размер панелей",
|
|
1382
|
+
search: "Поиск",
|
|
1383
|
+
alertError: "Ошибка",
|
|
1384
|
+
alertWarning: "Предупреждение",
|
|
1385
|
+
alertSuccess: "Успешно",
|
|
1386
|
+
alertInfo: "Информация",
|
|
1387
|
+
alertNotice: "Уведомление",
|
|
1388
|
+
alertMessage: "Сообщение",
|
|
1389
|
+
remove: "Удалить",
|
|
1390
|
+
closeTab: "Закрыть вкладку",
|
|
1391
|
+
breadcrumb: "Навигационная цепочка"
|
|
1392
|
+
},
|
|
1393
|
+
"../assets/locales/th.json": {
|
|
1394
|
+
valueMissing: "จำเป็นต้องกรอกข้อมูลนี้",
|
|
1395
|
+
badInput: "กรุณากรอกค่าที่ถูกต้อง",
|
|
1396
|
+
typeMismatch: "กรุณากรอกค่าให้ถูกรูปแบบ",
|
|
1397
|
+
patternMismatch: "กรุณากรอกให้ตรงตามรูปแบบที่กำหนด",
|
|
1398
|
+
rangeUnderflow: "ค่าต้องมากกว่าหรือเท่ากับ {min}",
|
|
1399
|
+
rangeOverflow: "ค่าต้องน้อยกว่าหรือเท่ากับ {max}",
|
|
1400
|
+
stepMismatch: "ค่าต้องเป็นจำนวนทวีคูณของ {step}",
|
|
1401
|
+
tooShort: "ต้องมีอย่างน้อย {min}",
|
|
1402
|
+
tooLong: "ต้องไม่เกิน {max}",
|
|
1403
|
+
increment: "เพิ่มค่า",
|
|
1404
|
+
decrement: "ลดค่า",
|
|
1405
|
+
clear: "ล้างค่า",
|
|
1406
|
+
today: "วันนี้",
|
|
1407
|
+
time: "เวลา",
|
|
1408
|
+
showPassword: "แสดงรหัสผ่าน",
|
|
1409
|
+
hidePassword: "ซ่อนรหัสผ่าน",
|
|
1410
|
+
previousSlide: "สไลด์ก่อนหน้า",
|
|
1411
|
+
nextSlide: "สไลด์ถัดไป",
|
|
1412
|
+
goToSlide: "ไปที่สไลด์ที่ {n}",
|
|
1413
|
+
chooseDate: "เลือกวันที่",
|
|
1414
|
+
previousMonth: "เดือนก่อนหน้า",
|
|
1415
|
+
nextMonth: "เดือนถัดไป",
|
|
1416
|
+
close: "ปิด",
|
|
1417
|
+
copy: "คัดลอก",
|
|
1418
|
+
copied: "คัดลอกแล้ว",
|
|
1419
|
+
chooseFile: "เลือกไฟล์",
|
|
1420
|
+
noFileChosen: "ยังไม่ได้เลือกไฟล์",
|
|
1421
|
+
filesSelected: "เลือกแล้ว {count} ไฟล์",
|
|
1422
|
+
resizePanels: "ปรับขนาดแผง",
|
|
1423
|
+
search: "ค้นหา",
|
|
1424
|
+
alertError: "ข้อผิดพลาด",
|
|
1425
|
+
alertWarning: "คำเตือน",
|
|
1426
|
+
alertSuccess: "สำเร็จ",
|
|
1427
|
+
alertInfo: "ข้อมูล",
|
|
1428
|
+
alertNotice: "ประกาศ",
|
|
1429
|
+
alertMessage: "ข้อความ",
|
|
1430
|
+
remove: "ลบ",
|
|
1431
|
+
closeTab: "ปิดแท็บ",
|
|
1432
|
+
breadcrumb: "เส้นทางการนำทาง"
|
|
1433
|
+
},
|
|
1434
|
+
"../assets/locales/vi.json": {
|
|
1435
|
+
valueMissing: "Trường này là bắt buộc",
|
|
1436
|
+
badInput: "Vui lòng nhập giá trị hợp lệ",
|
|
1437
|
+
typeMismatch: "Vui lòng nhập giá trị đúng định dạng",
|
|
1438
|
+
patternMismatch: "Vui lòng nhập đúng định dạng yêu cầu",
|
|
1439
|
+
rangeUnderflow: "Giá trị phải lớn hơn hoặc bằng {min}",
|
|
1440
|
+
rangeOverflow: "Giá trị phải nhỏ hơn hoặc bằng {max}",
|
|
1441
|
+
stepMismatch: "Giá trị phải là bội số của {step}",
|
|
1442
|
+
tooShort: "Phải lớn hơn hoặc bằng {min}",
|
|
1443
|
+
tooLong: "Phải nhỏ hơn hoặc bằng {max}",
|
|
1444
|
+
increment: "Tăng giá trị",
|
|
1445
|
+
decrement: "Giảm giá trị",
|
|
1446
|
+
clear: "Xóa giá trị",
|
|
1447
|
+
today: "Hôm nay",
|
|
1448
|
+
time: "Giờ",
|
|
1449
|
+
showPassword: "Hiện mật khẩu",
|
|
1450
|
+
hidePassword: "Ẩn mật khẩu",
|
|
1451
|
+
previousSlide: "Slide trước",
|
|
1452
|
+
nextSlide: "Slide sau",
|
|
1453
|
+
goToSlide: "Đi đến slide {n}",
|
|
1454
|
+
chooseDate: "Chọn ngày",
|
|
1455
|
+
previousMonth: "Tháng trước",
|
|
1456
|
+
nextMonth: "Tháng sau",
|
|
1457
|
+
close: "Đóng",
|
|
1458
|
+
copy: "Sao chép",
|
|
1459
|
+
copied: "Đã sao chép",
|
|
1460
|
+
chooseFile: "Chọn tệp",
|
|
1461
|
+
noFileChosen: "Chưa chọn tệp nào",
|
|
1462
|
+
filesSelected: "Đã chọn {count} tệp",
|
|
1463
|
+
resizePanels: "Thay đổi kích thước bảng",
|
|
1464
|
+
search: "Tìm kiếm",
|
|
1465
|
+
alertError: "Lỗi",
|
|
1466
|
+
alertWarning: "Cảnh báo",
|
|
1467
|
+
alertSuccess: "Thành công",
|
|
1468
|
+
alertInfo: "Thông tin",
|
|
1469
|
+
alertNotice: "Lưu ý",
|
|
1470
|
+
alertMessage: "Thông báo",
|
|
1471
|
+
remove: "Xóa",
|
|
1472
|
+
closeTab: "Đóng tab",
|
|
1473
|
+
breadcrumb: "Đường dẫn điều hướng"
|
|
1474
|
+
},
|
|
1475
|
+
"../assets/locales/zh-CN.json": {
|
|
1476
|
+
valueMissing: "此项为必填项",
|
|
1477
|
+
badInput: "请输入有效的值",
|
|
1478
|
+
typeMismatch: "请输入正确格式的值",
|
|
1479
|
+
patternMismatch: "请按照要求的格式输入",
|
|
1480
|
+
rangeUnderflow: "值必须大于或等于{min}",
|
|
1481
|
+
rangeOverflow: "值必须小于或等于{max}",
|
|
1482
|
+
stepMismatch: "值必须是{step}的倍数",
|
|
1483
|
+
tooShort: "至少需要{min}",
|
|
1484
|
+
tooLong: "最多不能超过{max}",
|
|
1485
|
+
increment: "增加值",
|
|
1486
|
+
decrement: "减少值",
|
|
1487
|
+
clear: "清除值",
|
|
1488
|
+
today: "今天",
|
|
1489
|
+
time: "时间",
|
|
1490
|
+
showPassword: "显示密码",
|
|
1491
|
+
hidePassword: "隐藏密码",
|
|
1492
|
+
previousSlide: "上一张幻灯片",
|
|
1493
|
+
nextSlide: "下一张幻灯片",
|
|
1494
|
+
goToSlide: "转到幻灯片{n}",
|
|
1495
|
+
chooseDate: "选择日期",
|
|
1496
|
+
previousMonth: "上个月",
|
|
1497
|
+
nextMonth: "下个月",
|
|
1498
|
+
close: "关闭",
|
|
1499
|
+
copy: "复制",
|
|
1500
|
+
copied: "已复制",
|
|
1501
|
+
chooseFile: "选择文件",
|
|
1502
|
+
noFileChosen: "未选择文件",
|
|
1503
|
+
filesSelected: "已选择{count}个文件",
|
|
1504
|
+
resizePanels: "调整面板大小",
|
|
1505
|
+
search: "搜索",
|
|
1506
|
+
alertError: "错误",
|
|
1507
|
+
alertWarning: "警告",
|
|
1508
|
+
alertSuccess: "成功",
|
|
1509
|
+
alertInfo: "信息",
|
|
1510
|
+
alertNotice: "提示",
|
|
1511
|
+
alertMessage: "消息",
|
|
1512
|
+
remove: "移除",
|
|
1513
|
+
closeTab: "关闭标签页",
|
|
1514
|
+
breadcrumb: "面包屑导航"
|
|
1515
|
+
},
|
|
1516
|
+
"../assets/locales/zh-TW.json": {
|
|
1517
|
+
valueMissing: "此欄位為必填",
|
|
1518
|
+
badInput: "請輸入有效的值",
|
|
1519
|
+
typeMismatch: "請輸入正確格式的值",
|
|
1520
|
+
patternMismatch: "請依照要求的格式輸入",
|
|
1521
|
+
rangeUnderflow: "值必須大於或等於{min}",
|
|
1522
|
+
rangeOverflow: "值必須小於或等於{max}",
|
|
1523
|
+
stepMismatch: "值必須是{step}的倍數",
|
|
1524
|
+
tooShort: "至少需要{min}",
|
|
1525
|
+
tooLong: "最多不能超過{max}",
|
|
1526
|
+
increment: "增加值",
|
|
1527
|
+
decrement: "減少值",
|
|
1528
|
+
clear: "清除值",
|
|
1529
|
+
today: "今天",
|
|
1530
|
+
time: "時間",
|
|
1531
|
+
showPassword: "顯示密碼",
|
|
1532
|
+
hidePassword: "隱藏密碼",
|
|
1533
|
+
previousSlide: "上一張投影片",
|
|
1534
|
+
nextSlide: "下一張投影片",
|
|
1535
|
+
goToSlide: "前往投影片{n}",
|
|
1536
|
+
chooseDate: "選擇日期",
|
|
1537
|
+
previousMonth: "上個月",
|
|
1538
|
+
nextMonth: "下個月",
|
|
1539
|
+
close: "關閉",
|
|
1540
|
+
copy: "複製",
|
|
1541
|
+
copied: "已複製",
|
|
1542
|
+
chooseFile: "選擇檔案",
|
|
1543
|
+
noFileChosen: "未選擇檔案",
|
|
1544
|
+
filesSelected: "已選擇{count}個檔案",
|
|
1545
|
+
resizePanels: "調整面板大小",
|
|
1546
|
+
search: "搜尋",
|
|
1547
|
+
alertError: "錯誤",
|
|
1548
|
+
alertWarning: "警告",
|
|
1549
|
+
alertSuccess: "成功",
|
|
1550
|
+
alertInfo: "資訊",
|
|
1551
|
+
alertNotice: "提示",
|
|
1552
|
+
alertMessage: "訊息",
|
|
1553
|
+
remove: "移除",
|
|
1554
|
+
closeTab: "關閉分頁",
|
|
1555
|
+
breadcrumb: "麵包屑導覽"
|
|
1556
|
+
}
|
|
1557
|
+
})).map(([e, t]) => [(e.split("/").pop()?.replace(".json", "") || "").toLowerCase(), t])), x = /* @__PURE__ */ new Map();
|
|
1558
|
+
function S() {
|
|
1559
|
+
return typeof document < "u" && document.documentElement?.lang ? document.documentElement.lang : typeof window < "u" && typeof navigator < "u" && navigator.language ? navigator.language : "en";
|
|
1560
|
+
}
|
|
1561
|
+
var C = S();
|
|
1562
|
+
function w(e) {
|
|
1563
|
+
let t = e.toLowerCase(), n = t.split("-")[0];
|
|
1564
|
+
return n === t ? [t, "en"] : [
|
|
1565
|
+
t,
|
|
1566
|
+
n,
|
|
1567
|
+
"en"
|
|
1568
|
+
];
|
|
1569
|
+
}
|
|
1570
|
+
function T(e, t) {
|
|
1571
|
+
return t ? e.replace(/\{(\w+)\}/g, (e, n) => t[n] == null ? `{${n}}` : String(t[n])) : e;
|
|
1572
|
+
}
|
|
1573
|
+
function E(e, t) {
|
|
1574
|
+
for (let n of w(e)) {
|
|
1575
|
+
let e = x.get(n)?.[t] ?? b.get(n)?.[t];
|
|
1576
|
+
if (e) return e;
|
|
1577
|
+
}
|
|
1578
|
+
return b.get("en")[t];
|
|
1579
|
+
}
|
|
1580
|
+
var D = /* @__PURE__ */ new Map(), O = class {
|
|
1581
|
+
constructor() {}
|
|
1582
|
+
static set(e) {
|
|
1583
|
+
C = e;
|
|
1584
|
+
}
|
|
1585
|
+
static get() {
|
|
1586
|
+
return C;
|
|
1587
|
+
}
|
|
1588
|
+
static register(e, t) {
|
|
1589
|
+
let n = e.toLowerCase(), r = x.get(n) ?? b.get(n) ?? b.get("en");
|
|
1590
|
+
x.set(n, {
|
|
1591
|
+
...r,
|
|
1592
|
+
...t
|
|
1593
|
+
});
|
|
1594
|
+
}
|
|
1595
|
+
static getValue(e, t) {
|
|
1596
|
+
return T(E(C, e), t);
|
|
1597
|
+
}
|
|
1598
|
+
static namespace(e) {
|
|
1599
|
+
return {
|
|
1600
|
+
name: e,
|
|
1601
|
+
register(t, n) {
|
|
1602
|
+
let r = D.get(e) ?? /* @__PURE__ */ new Map(), i = t.toLowerCase();
|
|
1603
|
+
r.set(i, {
|
|
1604
|
+
...r.get(i),
|
|
1605
|
+
...n
|
|
1606
|
+
}), D.set(e, r);
|
|
1607
|
+
},
|
|
1608
|
+
text(t, n) {
|
|
1609
|
+
let r = D.get(e);
|
|
1610
|
+
for (let e of w(C)) {
|
|
1611
|
+
let i = r?.get(e)?.[t];
|
|
1612
|
+
if (i) return T(i, n);
|
|
1613
|
+
}
|
|
1614
|
+
return t;
|
|
1615
|
+
}
|
|
1616
|
+
};
|
|
1617
|
+
}
|
|
1618
|
+
}.namespace("flex-table");
|
|
1619
|
+
O.register("en", {
|
|
1620
|
+
showHiddenColumns: "Show hidden column(s)",
|
|
1621
|
+
columnMenu: "Column menu",
|
|
1622
|
+
cellActions: "Cell actions",
|
|
1623
|
+
noColumnsDefined: "No columns defined",
|
|
1624
|
+
addCommentPlaceholder: "Add a comment… (Ctrl+Enter to save)",
|
|
1625
|
+
cancel: "Cancel",
|
|
1626
|
+
save: "Save",
|
|
1627
|
+
clear: "Clear",
|
|
1628
|
+
blankCells: "Blank cells",
|
|
1629
|
+
emptyOnly: "Empty only",
|
|
1630
|
+
nonEmptyOnly: "Non-empty only",
|
|
1631
|
+
blankAll: "— All —",
|
|
1632
|
+
all: "All",
|
|
1633
|
+
contains: "Contains",
|
|
1634
|
+
startsWith: "Starts with",
|
|
1635
|
+
endsWith: "Ends with",
|
|
1636
|
+
wildcard: "Wildcard",
|
|
1637
|
+
searchPlaceholder: "Search...",
|
|
1638
|
+
valuePlaceholder: "Value",
|
|
1639
|
+
fromPlaceholder: "From",
|
|
1640
|
+
toPlaceholder: "To",
|
|
1641
|
+
findPlaceholder: "Find...",
|
|
1642
|
+
findPrevious: "Previous (Shift+Enter)",
|
|
1643
|
+
findNext: "Next (Enter)",
|
|
1644
|
+
matchCase: "Match case",
|
|
1645
|
+
wholeCell: "Whole cell",
|
|
1646
|
+
closeFind: "Close (Escape)",
|
|
1647
|
+
replaceWithPlaceholder: "Replace with...",
|
|
1648
|
+
replace: "Replace",
|
|
1649
|
+
replaceAll: "Replace all",
|
|
1650
|
+
sortAscending: "Sort ascending",
|
|
1651
|
+
sortDescending: "Sort descending",
|
|
1652
|
+
filter: "Filter…",
|
|
1653
|
+
clearFilter: "Clear filter",
|
|
1654
|
+
hideColumn: "Hide column",
|
|
1655
|
+
showColumn: "Show: {header}",
|
|
1656
|
+
autoFitWidth: "Auto-fit width",
|
|
1657
|
+
wider: "Wider",
|
|
1658
|
+
narrower: "Narrower",
|
|
1659
|
+
columnMenuFor: "Column menu: {header}",
|
|
1660
|
+
columnMenuRegion: "{header} column",
|
|
1661
|
+
copy: "Copy",
|
|
1662
|
+
insertRowAbove: "Insert row above",
|
|
1663
|
+
insertRowBelow: "Insert row below",
|
|
1664
|
+
deleteRow: "Delete row",
|
|
1665
|
+
filterByThisValue: "Filter by this value",
|
|
1666
|
+
addComment: "Add Comment",
|
|
1667
|
+
editComment: "Edit Comment",
|
|
1668
|
+
deleteComment: "Delete Comment",
|
|
1669
|
+
booleanTrue: "True",
|
|
1670
|
+
booleanFalse: "False",
|
|
1671
|
+
dropFileToImport: "Drop file to import (.xlsx / .csv)"
|
|
1672
|
+
}), O.register("ko", {
|
|
1673
|
+
showHiddenColumns: "숨긴 열 보기",
|
|
1674
|
+
columnMenu: "열 메뉴",
|
|
1675
|
+
cellActions: "셀 작업",
|
|
1676
|
+
noColumnsDefined: "정의된 열이 없습니다",
|
|
1677
|
+
addCommentPlaceholder: "메모 입력… (Ctrl+Enter 로 저장)",
|
|
1678
|
+
cancel: "취소",
|
|
1679
|
+
save: "저장",
|
|
1680
|
+
clear: "지우기",
|
|
1681
|
+
blankCells: "빈 셀",
|
|
1682
|
+
emptyOnly: "빈 값만",
|
|
1683
|
+
nonEmptyOnly: "빈 값 제외",
|
|
1684
|
+
blankAll: "— 전체 —",
|
|
1685
|
+
all: "전체",
|
|
1686
|
+
contains: "포함",
|
|
1687
|
+
startsWith: "시작 문자",
|
|
1688
|
+
endsWith: "끝 문자",
|
|
1689
|
+
wildcard: "와일드카드",
|
|
1690
|
+
searchPlaceholder: "검색...",
|
|
1691
|
+
valuePlaceholder: "값",
|
|
1692
|
+
fromPlaceholder: "시작",
|
|
1693
|
+
toPlaceholder: "끝",
|
|
1694
|
+
findPlaceholder: "찾기...",
|
|
1695
|
+
findPrevious: "이전 (Shift+Enter)",
|
|
1696
|
+
findNext: "다음 (Enter)",
|
|
1697
|
+
matchCase: "대/소문자 구분",
|
|
1698
|
+
wholeCell: "셀 전체 일치",
|
|
1699
|
+
closeFind: "닫기 (Escape)",
|
|
1700
|
+
replaceWithPlaceholder: "바꿀 내용...",
|
|
1701
|
+
replace: "바꾸기",
|
|
1702
|
+
replaceAll: "모두 바꾸기",
|
|
1703
|
+
sortAscending: "오름차순 정렬",
|
|
1704
|
+
sortDescending: "내림차순 정렬",
|
|
1705
|
+
filter: "필터…",
|
|
1706
|
+
clearFilter: "필터 지우기",
|
|
1707
|
+
hideColumn: "열 숨기기",
|
|
1708
|
+
showColumn: "{header} 보기",
|
|
1709
|
+
autoFitWidth: "너비 자동 맞춤",
|
|
1710
|
+
wider: "넓게",
|
|
1711
|
+
narrower: "좁게",
|
|
1712
|
+
columnMenuFor: "{header} 열 메뉴",
|
|
1713
|
+
columnMenuRegion: "{header} 열",
|
|
1714
|
+
copy: "복사",
|
|
1715
|
+
insertRowAbove: "위에 행 삽입",
|
|
1716
|
+
insertRowBelow: "아래에 행 삽입",
|
|
1717
|
+
deleteRow: "행 삭제",
|
|
1718
|
+
filterByThisValue: "이 값으로 필터",
|
|
1719
|
+
addComment: "메모 추가",
|
|
1720
|
+
editComment: "메모 편집",
|
|
1721
|
+
deleteComment: "메모 삭제",
|
|
1722
|
+
booleanTrue: "참",
|
|
1723
|
+
booleanFalse: "거짓",
|
|
1724
|
+
dropFileToImport: "가져올 파일을 놓으세요 (.xlsx / .csv)"
|
|
1725
|
+
});
|
|
1726
|
+
var k = (e, t) => O.text(e, t);
|
|
1727
|
+
//#endregion
|
|
981
1728
|
//#region src/core/selection.ts
|
|
982
|
-
function
|
|
1729
|
+
function ee(e) {
|
|
983
1730
|
return {
|
|
984
1731
|
startRow: Math.min(e.startRow, e.endRow),
|
|
985
1732
|
startCol: Math.min(e.startCol, e.endCol),
|
|
@@ -987,7 +1734,7 @@ function b(e) {
|
|
|
987
1734
|
endCol: Math.max(e.startCol, e.endCol)
|
|
988
1735
|
};
|
|
989
1736
|
}
|
|
990
|
-
var
|
|
1737
|
+
var te = class {
|
|
991
1738
|
constructor() {
|
|
992
1739
|
this.activeCell = null, this.rangeAnchor = null, this.range = null, this.extraRanges = [], this._rowCount = 0, this._colCount = 0;
|
|
993
1740
|
}
|
|
@@ -1014,7 +1761,7 @@ var x = class {
|
|
|
1014
1761
|
return e < 0 || e >= this._rowCount || t < 0 || t >= this._colCount ? this.activeCell : (!this.rangeAnchor && this.activeCell && (this.rangeAnchor = { ...this.activeCell }), this.activeCell = {
|
|
1015
1762
|
row: e,
|
|
1016
1763
|
col: t
|
|
1017
|
-
}, this.rangeAnchor && (this.range =
|
|
1764
|
+
}, this.rangeAnchor && (this.range = ee({
|
|
1018
1765
|
startRow: this.rangeAnchor.row,
|
|
1019
1766
|
startCol: this.rangeAnchor.col,
|
|
1020
1767
|
endRow: e,
|
|
@@ -1085,7 +1832,7 @@ var x = class {
|
|
|
1085
1832
|
shiftMoveRight() {
|
|
1086
1833
|
return this.activeCell ? this.setActiveWithRange(this.activeCell.row, this.activeCell.col + 1) : null;
|
|
1087
1834
|
}
|
|
1088
|
-
},
|
|
1835
|
+
}, ne = class {
|
|
1089
1836
|
constructor() {
|
|
1090
1837
|
this.current = null;
|
|
1091
1838
|
}
|
|
@@ -1106,7 +1853,7 @@ var x = class {
|
|
|
1106
1853
|
let e = this.current;
|
|
1107
1854
|
return this.current = null, e;
|
|
1108
1855
|
}
|
|
1109
|
-
},
|
|
1856
|
+
}, A = class {
|
|
1110
1857
|
constructor() {
|
|
1111
1858
|
this._selected = /* @__PURE__ */ new Set(), this._mode = "multi", this._rowCount = 0;
|
|
1112
1859
|
}
|
|
@@ -1167,7 +1914,7 @@ var x = class {
|
|
|
1167
1914
|
};
|
|
1168
1915
|
//#endregion
|
|
1169
1916
|
//#region src/core/filtering.ts
|
|
1170
|
-
function
|
|
1917
|
+
function j(e, t, n) {
|
|
1171
1918
|
if (t.length === 0) return Array.from({ length: e.length }, (e, t) => t);
|
|
1172
1919
|
let r = [];
|
|
1173
1920
|
for (let i = 0; i < e.length; i++) {
|
|
@@ -1186,9 +1933,9 @@ function w(e, t, n) {
|
|
|
1186
1933
|
}
|
|
1187
1934
|
//#endregion
|
|
1188
1935
|
//#region src/core/undo.ts
|
|
1189
|
-
var
|
|
1936
|
+
var re = 100, M = class {
|
|
1190
1937
|
constructor() {
|
|
1191
|
-
this._undoStack = [], this._redoStack = [], this._maxSize =
|
|
1938
|
+
this._undoStack = [], this._redoStack = [], this._maxSize = re;
|
|
1192
1939
|
}
|
|
1193
1940
|
get maxSize() {
|
|
1194
1941
|
return this._maxSize;
|
|
@@ -1225,7 +1972,7 @@ var T = 100, E = class {
|
|
|
1225
1972
|
};
|
|
1226
1973
|
//#endregion
|
|
1227
1974
|
//#region src/clipboard/clipboard.ts
|
|
1228
|
-
function
|
|
1975
|
+
function ie(e, t, n) {
|
|
1229
1976
|
let r = [];
|
|
1230
1977
|
for (let i = n.startRow; i <= n.endRow; i++) {
|
|
1231
1978
|
let a = e[i], o = [];
|
|
@@ -1237,7 +1984,7 @@ function D(e, t, n) {
|
|
|
1237
1984
|
}
|
|
1238
1985
|
return r.join("\n");
|
|
1239
1986
|
}
|
|
1240
|
-
function
|
|
1987
|
+
function N(e) {
|
|
1241
1988
|
let t = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n"), n = [], r = [], i = 0, a = t.length;
|
|
1242
1989
|
for (; i <= a;) {
|
|
1243
1990
|
if (i === a) {
|
|
@@ -1267,7 +2014,7 @@ function O(e) {
|
|
|
1267
2014
|
}
|
|
1268
2015
|
return n;
|
|
1269
2016
|
}
|
|
1270
|
-
function
|
|
2017
|
+
function P(e, t) {
|
|
1271
2018
|
if (e === "") return null;
|
|
1272
2019
|
switch (t.type) {
|
|
1273
2020
|
case "number": {
|
|
@@ -1280,7 +2027,7 @@ function k(e, t) {
|
|
|
1280
2027
|
}
|
|
1281
2028
|
//#endregion
|
|
1282
2029
|
//#region src/export/xlsx-writer.ts
|
|
1283
|
-
var
|
|
2030
|
+
var ae = (() => {
|
|
1284
2031
|
let e = /* @__PURE__ */ new Uint32Array(256);
|
|
1285
2032
|
for (let t = 0; t < 256; t++) {
|
|
1286
2033
|
let n = t;
|
|
@@ -1289,56 +2036,56 @@ var A = (() => {
|
|
|
1289
2036
|
}
|
|
1290
2037
|
return e;
|
|
1291
2038
|
})();
|
|
1292
|
-
function
|
|
2039
|
+
function oe(e) {
|
|
1293
2040
|
let t = 4294967295;
|
|
1294
|
-
for (let n = 0; n < e.length; n++) t =
|
|
2041
|
+
for (let n = 0; n < e.length; n++) t = ae[(t ^ e[n]) & 255] ^ t >>> 8;
|
|
1295
2042
|
return (t ^ 4294967295) >>> 0;
|
|
1296
2043
|
}
|
|
1297
|
-
var
|
|
1298
|
-
function
|
|
2044
|
+
var F = new TextEncoder();
|
|
2045
|
+
function se(e) {
|
|
1299
2046
|
let t = [], n = [], r = 0;
|
|
1300
2047
|
for (let i of e) {
|
|
1301
|
-
let e =
|
|
2048
|
+
let e = F.encode(i.name), a = oe(i.data), o = i.data.length, s = new ArrayBuffer(30 + e.length), c = new DataView(s);
|
|
1302
2049
|
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);
|
|
1303
2050
|
let l = new ArrayBuffer(46 + e.length), u = new DataView(l);
|
|
1304
2051
|
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;
|
|
1305
2052
|
}
|
|
1306
|
-
let i =
|
|
1307
|
-
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),
|
|
2053
|
+
let i = I(n), a = /* @__PURE__ */ new ArrayBuffer(22), o = new DataView(a);
|
|
2054
|
+
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([
|
|
1308
2055
|
...t,
|
|
1309
2056
|
i,
|
|
1310
2057
|
new Uint8Array(a)
|
|
1311
2058
|
]);
|
|
1312
2059
|
}
|
|
1313
|
-
function
|
|
2060
|
+
function I(e) {
|
|
1314
2061
|
let t = e.reduce((e, t) => e + t.length, 0), n = new Uint8Array(t), r = 0;
|
|
1315
2062
|
for (let t of e) n.set(t, r), r += t.length;
|
|
1316
2063
|
return n;
|
|
1317
2064
|
}
|
|
1318
|
-
function
|
|
2065
|
+
function L(e) {
|
|
1319
2066
|
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
1320
2067
|
}
|
|
1321
|
-
function
|
|
2068
|
+
function ce(e) {
|
|
1322
2069
|
let t = "";
|
|
1323
2070
|
for (e++; e > 0;) t = String.fromCharCode(64 + (e % 26 || 26)) + t, e = Math.floor((e - 1) / 26);
|
|
1324
2071
|
return t;
|
|
1325
2072
|
}
|
|
1326
|
-
function
|
|
1327
|
-
return
|
|
2073
|
+
function R(e, t) {
|
|
2074
|
+
return ce(t) + (e + 1);
|
|
1328
2075
|
}
|
|
1329
|
-
function
|
|
2076
|
+
function le(e) {
|
|
1330
2077
|
let t = Date.UTC(1899, 11, 30);
|
|
1331
2078
|
return (e.getTime() - t) / 864e5;
|
|
1332
2079
|
}
|
|
1333
|
-
var
|
|
1334
|
-
function
|
|
1335
|
-
let n = [], r = t.map((e, t) => `<c r="${
|
|
2080
|
+
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>", z = "<?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>", B = "<?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>";
|
|
2081
|
+
function V(e, t) {
|
|
2082
|
+
let n = [], r = t.map((e, t) => `<c r="${R(0, t)}" t="str" s="2"><v>${L(e.header)}</v></c>`);
|
|
1336
2083
|
return n.push(`<row r="1">${r.join("")}</row>`), e.forEach((e, r) => {
|
|
1337
2084
|
let i = t.map((t, n) => {
|
|
1338
|
-
let i =
|
|
2085
|
+
let i = R(r + 1, n), a = e[t.key];
|
|
1339
2086
|
if (a == null) return `<c r="${i}" t="str"><v></v></c>`;
|
|
1340
2087
|
let o = t.type ?? "text";
|
|
1341
|
-
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>${
|
|
2088
|
+
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>${L(String(a))}</v></c>`;
|
|
1342
2089
|
});
|
|
1343
2090
|
n.push(`<row r="${r + 2}">${i.join("")}</row>`);
|
|
1344
2091
|
}), `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
@@ -1346,55 +2093,55 @@ function ce(e, t) {
|
|
|
1346
2093
|
<sheetData>${n.join("")}</sheetData>
|
|
1347
2094
|
</worksheet>`;
|
|
1348
2095
|
}
|
|
1349
|
-
function
|
|
1350
|
-
let n =
|
|
1351
|
-
return
|
|
2096
|
+
function pe(e, t) {
|
|
2097
|
+
let n = V(e, t);
|
|
2098
|
+
return se([
|
|
1352
2099
|
{
|
|
1353
2100
|
name: "[Content_Types].xml",
|
|
1354
|
-
data:
|
|
2101
|
+
data: F.encode(ue)
|
|
1355
2102
|
},
|
|
1356
2103
|
{
|
|
1357
2104
|
name: "_rels/.rels",
|
|
1358
|
-
data:
|
|
2105
|
+
data: F.encode(de)
|
|
1359
2106
|
},
|
|
1360
2107
|
{
|
|
1361
2108
|
name: "xl/workbook.xml",
|
|
1362
|
-
data:
|
|
2109
|
+
data: F.encode(fe)
|
|
1363
2110
|
},
|
|
1364
2111
|
{
|
|
1365
2112
|
name: "xl/_rels/workbook.xml.rels",
|
|
1366
|
-
data:
|
|
2113
|
+
data: F.encode(z)
|
|
1367
2114
|
},
|
|
1368
2115
|
{
|
|
1369
2116
|
name: "xl/worksheets/sheet1.xml",
|
|
1370
|
-
data:
|
|
2117
|
+
data: F.encode(n)
|
|
1371
2118
|
},
|
|
1372
2119
|
{
|
|
1373
2120
|
name: "xl/styles.xml",
|
|
1374
|
-
data:
|
|
2121
|
+
data: F.encode(B)
|
|
1375
2122
|
}
|
|
1376
2123
|
]);
|
|
1377
2124
|
}
|
|
1378
2125
|
//#endregion
|
|
1379
2126
|
//#region src/export/export.ts
|
|
1380
|
-
function
|
|
2127
|
+
function H(e, t, n) {
|
|
1381
2128
|
switch (n) {
|
|
1382
|
-
case "csv": return
|
|
1383
|
-
case "tsv": return
|
|
1384
|
-
case "json": return
|
|
1385
|
-
case "xlsx": return
|
|
2129
|
+
case "csv": return U(e, t, ",");
|
|
2130
|
+
case "tsv": return U(e, t, " ");
|
|
2131
|
+
case "json": return he(e, t);
|
|
2132
|
+
case "xlsx": return pe(e, t);
|
|
1386
2133
|
}
|
|
1387
2134
|
}
|
|
1388
|
-
function
|
|
2135
|
+
function me(e, t) {
|
|
1389
2136
|
return e == null ? "" : (t.type === "date" || t.type === "datetime") && e instanceof Date ? e.toISOString() : String(e);
|
|
1390
2137
|
}
|
|
1391
|
-
function
|
|
1392
|
-
return [t.map((e) =>
|
|
2138
|
+
function U(e, t, n) {
|
|
2139
|
+
return [t.map((e) => W(e.header, n)).join(n), ...e.map((e) => t.map((t) => W(me(e[t.key], t), n)).join(n))].join("\n");
|
|
1393
2140
|
}
|
|
1394
|
-
function
|
|
2141
|
+
function W(e, t) {
|
|
1395
2142
|
return e.includes(t) || e.includes("\"") || e.includes("\n") || e.includes("\r") ? "\"" + e.replace(/"/g, "\"\"") + "\"" : e;
|
|
1396
2143
|
}
|
|
1397
|
-
function
|
|
2144
|
+
function he(e, t) {
|
|
1398
2145
|
let n = e.map((e) => {
|
|
1399
2146
|
let n = {};
|
|
1400
2147
|
for (let r of t) {
|
|
@@ -1405,35 +2152,35 @@ function B(e, t) {
|
|
|
1405
2152
|
});
|
|
1406
2153
|
return JSON.stringify(n, null, 2);
|
|
1407
2154
|
}
|
|
1408
|
-
function
|
|
2155
|
+
function ge(e, t, n) {
|
|
1409
2156
|
let r = new Blob([e], { type: n }), i = URL.createObjectURL(r), a = document.createElement("a");
|
|
1410
2157
|
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);
|
|
1411
2158
|
}
|
|
1412
|
-
var
|
|
2159
|
+
var _e = {
|
|
1413
2160
|
csv: "text/csv;charset=utf-8",
|
|
1414
2161
|
tsv: "text/tab-separated-values;charset=utf-8",
|
|
1415
2162
|
json: "application/json;charset=utf-8",
|
|
1416
2163
|
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
1417
|
-
},
|
|
2164
|
+
}, ve = {
|
|
1418
2165
|
csv: ".csv",
|
|
1419
2166
|
tsv: ".tsv",
|
|
1420
2167
|
json: ".json",
|
|
1421
2168
|
xlsx: ".xlsx"
|
|
1422
2169
|
};
|
|
1423
|
-
function
|
|
1424
|
-
return
|
|
2170
|
+
function ye(e) {
|
|
2171
|
+
return _e[e];
|
|
1425
2172
|
}
|
|
1426
|
-
function
|
|
1427
|
-
return
|
|
2173
|
+
function be(e) {
|
|
2174
|
+
return ve[e];
|
|
1428
2175
|
}
|
|
1429
2176
|
//#endregion
|
|
1430
2177
|
//#region src/export/xlsx-reader.ts
|
|
1431
|
-
function
|
|
2178
|
+
function xe(e) {
|
|
1432
2179
|
for (let t = e.byteLength - 22; t >= 0; t--) if (e.getUint32(t, !0) === 101010256) return t;
|
|
1433
2180
|
throw Error("XLSX: End of central directory not found — not a valid ZIP file");
|
|
1434
2181
|
}
|
|
1435
|
-
function
|
|
1436
|
-
let t =
|
|
2182
|
+
function Se(e) {
|
|
2183
|
+
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;
|
|
1437
2184
|
for (; o < s && e.getUint32(o, !0) === 33639248;) {
|
|
1438
2185
|
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));
|
|
1439
2186
|
a.push({
|
|
@@ -1446,7 +2193,7 @@ function pe(e) {
|
|
|
1446
2193
|
}
|
|
1447
2194
|
return a;
|
|
1448
2195
|
}
|
|
1449
|
-
async function
|
|
2196
|
+
async function Ce(e) {
|
|
1450
2197
|
let t = new DecompressionStream("deflate-raw"), n = t.writable.getWriter(), r = t.readable.getReader();
|
|
1451
2198
|
n.write(e), n.close();
|
|
1452
2199
|
let i = [];
|
|
@@ -1459,40 +2206,40 @@ async function me(e) {
|
|
|
1459
2206
|
for (let e of i) o.set(e, s), s += e.length;
|
|
1460
2207
|
return o;
|
|
1461
2208
|
}
|
|
1462
|
-
async function
|
|
2209
|
+
async function we(e, t) {
|
|
1463
2210
|
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);
|
|
1464
2211
|
if (t.compressionMethod === 0) return o.slice();
|
|
1465
|
-
if (t.compressionMethod === 8) return
|
|
2212
|
+
if (t.compressionMethod === 8) return Ce(o);
|
|
1466
2213
|
throw Error(`XLSX: Unsupported compression method ${t.compressionMethod}`);
|
|
1467
2214
|
}
|
|
1468
|
-
async function
|
|
1469
|
-
let t = new DataView(e), n =
|
|
1470
|
-
for (let e of n) e.compressedSize === 0 && e.name.endsWith("/") || r.set(e.name, await
|
|
2215
|
+
async function Te(e) {
|
|
2216
|
+
let t = new DataView(e), n = Se(t), r = /* @__PURE__ */ new Map();
|
|
2217
|
+
for (let e of n) e.compressedSize === 0 && e.name.endsWith("/") || r.set(e.name, await we(t, e));
|
|
1471
2218
|
return r;
|
|
1472
2219
|
}
|
|
1473
|
-
var
|
|
1474
|
-
function
|
|
1475
|
-
let t =
|
|
2220
|
+
var Ee = new TextDecoder("utf-8");
|
|
2221
|
+
function G(e) {
|
|
2222
|
+
let t = Ee.decode(e);
|
|
1476
2223
|
return new DOMParser().parseFromString(t, "application/xml");
|
|
1477
2224
|
}
|
|
1478
|
-
function
|
|
2225
|
+
function De(e) {
|
|
1479
2226
|
if (!e) return [];
|
|
1480
|
-
let t =
|
|
2227
|
+
let t = G(e);
|
|
1481
2228
|
return Array.from(t.querySelectorAll("si")).map((e) => Array.from(e.querySelectorAll("t")).map((e) => e.textContent ?? "").join(""));
|
|
1482
2229
|
}
|
|
1483
|
-
function
|
|
2230
|
+
function Oe(e) {
|
|
1484
2231
|
let t = (e - 1) * 864e5 + Date.UTC(1899, 11, 30);
|
|
1485
2232
|
return new Date(t).toISOString().slice(0, 10);
|
|
1486
2233
|
}
|
|
1487
|
-
function
|
|
1488
|
-
let n =
|
|
2234
|
+
function ke(e, t) {
|
|
2235
|
+
let n = G(e).querySelectorAll("row");
|
|
1489
2236
|
if (n.length === 0) return [];
|
|
1490
2237
|
let r = 0, i = /* @__PURE__ */ new Map();
|
|
1491
2238
|
for (let e of n) {
|
|
1492
2239
|
let n = parseInt(e.getAttribute("r") ?? "1", 10) - 1, a = /* @__PURE__ */ new Map();
|
|
1493
2240
|
i.set(n, a);
|
|
1494
2241
|
for (let n of e.querySelectorAll("c")) {
|
|
1495
|
-
let e =
|
|
2242
|
+
let e = Ae(n.getAttribute("r") ?? "");
|
|
1496
2243
|
e > r && (r = e);
|
|
1497
2244
|
let i = n.getAttribute("t") ?? "", o = n.getAttribute("s") ?? "", s = n.querySelector("v")?.textContent ?? "", c = n.querySelector("is > t")?.textContent ?? null, l;
|
|
1498
2245
|
if (i === "s") l = t[parseInt(s, 10)] ?? "";
|
|
@@ -1501,7 +2248,7 @@ function be(e, t) {
|
|
|
1501
2248
|
else if (s === "") l = "";
|
|
1502
2249
|
else {
|
|
1503
2250
|
let e = parseFloat(s);
|
|
1504
|
-
l = !isNaN(e) && o !== "" && parseInt(o, 10) > 0 && e >= 1 && e <= 73050 ?
|
|
2251
|
+
l = !isNaN(e) && o !== "" && parseInt(o, 10) > 0 && e >= 1 && e <= 73050 ? Oe(e) : s;
|
|
1505
2252
|
}
|
|
1506
2253
|
a.set(e, l);
|
|
1507
2254
|
}
|
|
@@ -1515,13 +2262,13 @@ function be(e, t) {
|
|
|
1515
2262
|
}
|
|
1516
2263
|
return o;
|
|
1517
2264
|
}
|
|
1518
|
-
function
|
|
2265
|
+
function Ae(e) {
|
|
1519
2266
|
let t = 0, n = 0;
|
|
1520
2267
|
for (; n < e.length && e[n] >= "A" && e[n] <= "Z";) t = t * 26 + (e.charCodeAt(n) - 64), n++;
|
|
1521
2268
|
return t - 1;
|
|
1522
2269
|
}
|
|
1523
|
-
async function
|
|
1524
|
-
let t = await
|
|
2270
|
+
async function je(e) {
|
|
2271
|
+
let t = await Te(e), n = De(t.get("xl/sharedStrings.xml")), r = t.get("xl/worksheets/sheet1.xml");
|
|
1525
2272
|
if (!r) {
|
|
1526
2273
|
for (let [e, n] of t) if (e.toLowerCase().includes("worksheets/sheet")) {
|
|
1527
2274
|
r = n;
|
|
@@ -1529,7 +2276,7 @@ async function G(e) {
|
|
|
1529
2276
|
}
|
|
1530
2277
|
}
|
|
1531
2278
|
if (!r) throw Error("XLSX: No worksheet found");
|
|
1532
|
-
let i =
|
|
2279
|
+
let i = ke(r, n);
|
|
1533
2280
|
return i.length === 0 ? {
|
|
1534
2281
|
headers: [],
|
|
1535
2282
|
rows: []
|
|
@@ -1539,7 +2286,7 @@ async function G(e) {
|
|
|
1539
2286
|
};
|
|
1540
2287
|
}
|
|
1541
2288
|
//#endregion
|
|
1542
|
-
//#region \0@oxc-project+runtime@0.
|
|
2289
|
+
//#region \0@oxc-project+runtime@0.150.0/helpers/esm/decorate.js
|
|
1543
2290
|
function K(e, t, n, r) {
|
|
1544
2291
|
var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
|
|
1545
2292
|
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
|
|
@@ -1555,9 +2302,9 @@ var q = {
|
|
|
1555
2302
|
lt: "<",
|
|
1556
2303
|
gte: "≥",
|
|
1557
2304
|
lte: "≤"
|
|
1558
|
-
}, J = 120, Y = 40, X = 20, Z = 32, Q = 5,
|
|
2305
|
+
}, J = 120, Y = 40, X = 20, Z = 32, Q = 5, Me = 200, $ = class extends n {
|
|
1559
2306
|
constructor(...e) {
|
|
1560
|
-
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
|
|
2307
|
+
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 A(), 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 = () => {
|
|
1561
2308
|
this._commitCommentPopup();
|
|
1562
2309
|
}, 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();
|
|
1563
2310
|
}
|
|
@@ -1922,12 +2669,12 @@ var q = {
|
|
|
1922
2669
|
if (!t) return "";
|
|
1923
2670
|
let n = this.visibleColumns.slice(t.startCol, t.endCol + 1), r = [];
|
|
1924
2671
|
for (let e = t.startRow; e <= t.endRow; e++) r.push(this.data[this._toDataIndex(e)]);
|
|
1925
|
-
return
|
|
2672
|
+
return H(r, n, e);
|
|
1926
2673
|
}
|
|
1927
|
-
return
|
|
2674
|
+
return H(this._sortedIndices.map((e) => this.data[e]), this.visibleColumns, e);
|
|
1928
2675
|
}
|
|
1929
2676
|
exportToFile(e, t) {
|
|
1930
|
-
|
|
2677
|
+
ge(this.exportToString(e), t ?? `export${be(e)}`, ye(e));
|
|
1931
2678
|
}
|
|
1932
2679
|
setComment(e, t, n) {
|
|
1933
2680
|
let r = this.getComment(e, t);
|
|
@@ -1984,10 +2731,10 @@ var q = {
|
|
|
1984
2731
|
async importFromFile(e) {
|
|
1985
2732
|
let t = e.name.toLowerCase();
|
|
1986
2733
|
if (t.endsWith(".xlsx")) {
|
|
1987
|
-
let t = await
|
|
2734
|
+
let t = await je(await e.arrayBuffer());
|
|
1988
2735
|
this._applyImportedSheet(t);
|
|
1989
2736
|
} else if (t.endsWith(".csv") || t.endsWith(".tsv")) {
|
|
1990
|
-
let t =
|
|
2737
|
+
let t = N(await e.text());
|
|
1991
2738
|
this._applyImportedRows(t);
|
|
1992
2739
|
} else console.warn(`flex-table importFromFile: unsupported file type "${e.name}"`);
|
|
1993
2740
|
}
|
|
@@ -1998,7 +2745,7 @@ var q = {
|
|
|
1998
2745
|
let a = t.get(e);
|
|
1999
2746
|
if (!a) return;
|
|
2000
2747
|
let o = this.columns.find((e) => e.key === a);
|
|
2001
|
-
r[a] = o ?
|
|
2748
|
+
r[a] = o ? P(n[i] ?? "", o) : n[i] ?? null;
|
|
2002
2749
|
}), r;
|
|
2003
2750
|
}), r = [...this.data];
|
|
2004
2751
|
this.data = n, this._undo.push({
|
|
@@ -2023,7 +2770,7 @@ var q = {
|
|
|
2023
2770
|
let a = n.get(t);
|
|
2024
2771
|
if (!a) return;
|
|
2025
2772
|
let o = this.columns.find((e) => e.key === a);
|
|
2026
|
-
r[a] = o ?
|
|
2773
|
+
r[a] = o ? P(e[i] ?? "", o) : e[i] ?? null;
|
|
2027
2774
|
}), r;
|
|
2028
2775
|
}), i = [...this.data];
|
|
2029
2776
|
this.data = r, this._undo.push({
|
|
@@ -2169,7 +2916,7 @@ var q = {
|
|
|
2169
2916
|
this._filteredIndices = Array.from({ length: this.data.length }, (e, t) => t), this._sortedIndices = this._filteredIndices;
|
|
2170
2917
|
return;
|
|
2171
2918
|
}
|
|
2172
|
-
if (this._filteredIndices =
|
|
2919
|
+
if (this._filteredIndices = j(this.data, this._filters, (e, t, n) => {
|
|
2173
2920
|
this.dispatchEvent(new CustomEvent("filter-error", {
|
|
2174
2921
|
detail: {
|
|
2175
2922
|
error: e,
|
|
@@ -2199,7 +2946,7 @@ var q = {
|
|
|
2199
2946
|
e !== this._viewportHeight && (this._viewportHeight = e), t !== this._viewportWidth && (this._viewportWidth = t), this._warnIfUnconstrained();
|
|
2200
2947
|
}
|
|
2201
2948
|
_warnIfUnconstrained() {
|
|
2202
|
-
this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount <
|
|
2949
|
+
this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount < Me || 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.`));
|
|
2203
2950
|
}
|
|
2204
2951
|
_onScroll() {
|
|
2205
2952
|
this._scrollTop = this.scrollTop, this._scrollLeft = this.scrollLeft;
|
|
@@ -2329,7 +3076,7 @@ var q = {
|
|
|
2329
3076
|
}
|
|
2330
3077
|
let t = this.shadowRoot?.querySelector(".ft-editor");
|
|
2331
3078
|
if (t) {
|
|
2332
|
-
let n =
|
|
3079
|
+
let n = P(t.value, e);
|
|
2333
3080
|
this._applyEdit(n);
|
|
2334
3081
|
} else this._cancelEdit();
|
|
2335
3082
|
}
|
|
@@ -2557,7 +3304,7 @@ var q = {
|
|
|
2557
3304
|
async _handleCopy(e) {
|
|
2558
3305
|
let t = this._selection.getEffectiveRange();
|
|
2559
3306
|
if (!t) return;
|
|
2560
|
-
let n = this.visibleColumns, r =
|
|
3307
|
+
let n = this.visibleColumns, r = ie(this._sortedIndices.map((e) => this.data[e]), n, t);
|
|
2561
3308
|
try {
|
|
2562
3309
|
await navigator.clipboard.writeText(r);
|
|
2563
3310
|
} catch (e) {
|
|
@@ -2583,7 +3330,7 @@ var q = {
|
|
|
2583
3330
|
if (!this._activeCell) return;
|
|
2584
3331
|
let e = await this._readClipboardText();
|
|
2585
3332
|
if (e == null) return;
|
|
2586
|
-
let t =
|
|
3333
|
+
let t = N(e);
|
|
2587
3334
|
if (t.length === 0) return;
|
|
2588
3335
|
let n = this._expandRowsForPaste(this._activeCell.row, t.length), r = this._applyPasteData(this._activeCell, t);
|
|
2589
3336
|
if (r.length > 0 || n.length > 0) {
|
|
@@ -2641,7 +3388,7 @@ var q = {
|
|
|
2641
3388
|
for (let a = 0; a < t[i].length; a++) {
|
|
2642
3389
|
let s = e.col + a;
|
|
2643
3390
|
if (s >= n.length) break;
|
|
2644
|
-
let c = n[s], l = this.data[o][c.key], u =
|
|
3391
|
+
let c = n[s], l = this.data[o][c.key], u = P(t[i][a], c);
|
|
2645
3392
|
this.data[o][c.key] = u, r.push({
|
|
2646
3393
|
row: o,
|
|
2647
3394
|
col: s,
|
|
@@ -2706,7 +3453,7 @@ var q = {
|
|
|
2706
3453
|
for (let r = e.startCol + 1; r <= e.endCol; r++) {
|
|
2707
3454
|
let e = t[r];
|
|
2708
3455
|
if (!e || !this._isCellEditable(e)) continue;
|
|
2709
|
-
let a =
|
|
3456
|
+
let a = P(o == null ? "" : String(o), e);
|
|
2710
3457
|
n.push({
|
|
2711
3458
|
row: i,
|
|
2712
3459
|
key: e.key,
|
|
@@ -2865,7 +3612,7 @@ var q = {
|
|
|
2865
3612
|
@click=${n ? (t) => this._onHeaderClick(t, e) : void 0}>
|
|
2866
3613
|
${x ? i`
|
|
2867
3614
|
<button class="ft-hidden-col-indicator"
|
|
2868
|
-
title
|
|
3615
|
+
title=${k("showHiddenColumns")}
|
|
2869
3616
|
@click=${(t) => {
|
|
2870
3617
|
t.stopPropagation(), this._showHiddenBefore(e);
|
|
2871
3618
|
}}>❯</button>
|
|
@@ -2875,8 +3622,8 @@ var q = {
|
|
|
2875
3622
|
${o >= 0 ? i`<span class="ft-sort-order">${o + 1}</span>` : ""}
|
|
2876
3623
|
<button class="ft-column-menu-btn ${s ? "ft-filter-active" : ""}"
|
|
2877
3624
|
type="button"
|
|
2878
|
-
title
|
|
2879
|
-
aria-label=${
|
|
3625
|
+
title=${k("columnMenu")}
|
|
3626
|
+
aria-label=${k("columnMenuFor", { header: e.header })}
|
|
2880
3627
|
aria-haspopup="menu"
|
|
2881
3628
|
aria-expanded=${this._headerMenu?.key === e.key ? "true" : "false"}
|
|
2882
3629
|
@mousedown=${(e) => e.stopPropagation()}
|
|
@@ -2995,26 +3742,26 @@ var q = {
|
|
|
2995
3742
|
}}>${t}</button>
|
|
2996
3743
|
`;
|
|
2997
3744
|
return i`
|
|
2998
|
-
<div class="ft-header-menu" role="menu" aria-label=${
|
|
3745
|
+
<div class="ft-header-menu" role="menu" aria-label=${k("columnMenuRegion", { header: o.header })}
|
|
2999
3746
|
style="position: fixed; left: ${t}px; top: ${n}px; z-index: 200;"
|
|
3000
3747
|
@mousedown=${(e) => e.stopPropagation()}
|
|
3001
3748
|
@keydown=${(e) => this._onHeaderMenuKeydown(e)}>
|
|
3002
3749
|
${o.sortable === !1 ? a : i`
|
|
3003
|
-
${c("sort-asc", "
|
|
3004
|
-
${c("sort-desc", "
|
|
3750
|
+
${c("sort-asc", k("sortAscending"), () => this._applySortFromMenu(e, "asc"))}
|
|
3751
|
+
${c("sort-desc", k("sortDescending"), () => this._applySortFromMenu(e, "desc"))}
|
|
3005
3752
|
<div class="ft-header-menu-separator" role="separator"></div>
|
|
3006
3753
|
`}
|
|
3007
3754
|
${this.showFilters ? i`
|
|
3008
|
-
${c("filter", "
|
|
3009
|
-
${s ? c("clear-filter", "
|
|
3755
|
+
${c("filter", k("filter"), () => this._openFilterFromMenu(e))}
|
|
3756
|
+
${s ? c("clear-filter", k("clearFilter"), () => this._clearColumnFilter(e)) : a}
|
|
3010
3757
|
<div class="ft-header-menu-separator" role="separator"></div>
|
|
3011
3758
|
` : a}
|
|
3012
|
-
${c("hide", "
|
|
3013
|
-
${r.map((e) => c("show",
|
|
3759
|
+
${c("hide", k("hideColumn"), () => this._setColumnHidden(e, !0))}
|
|
3760
|
+
${r.map((e) => c("show", k("showColumn", { header: e.header }), () => this._setColumnHidden(e.key, !1)))}
|
|
3014
3761
|
<div class="ft-header-menu-separator" role="separator"></div>
|
|
3015
|
-
${c("autofit", "
|
|
3016
|
-
${c("wider", "
|
|
3017
|
-
${c("narrower", "
|
|
3762
|
+
${c("autofit", k("autoFitWidth"), () => this._autoFitColumn(e))}
|
|
3763
|
+
${c("wider", k("wider"), () => this._resizeColumnBy(e, X), !0)}
|
|
3764
|
+
${c("narrower", k("narrower"), () => this._resizeColumnBy(e, -20), !0)}
|
|
3018
3765
|
</div>
|
|
3019
3766
|
`;
|
|
3020
3767
|
}
|
|
@@ -3032,26 +3779,26 @@ var q = {
|
|
|
3032
3779
|
}}>${e}</button>
|
|
3033
3780
|
`, f = i`<div class="ft-context-menu-separator" role="separator"></div>`;
|
|
3034
3781
|
return i`
|
|
3035
|
-
<div class="ft-body-context-menu" role="menu" aria-label
|
|
3782
|
+
<div class="ft-body-context-menu" role="menu" aria-label=${k("cellActions")}
|
|
3036
3783
|
style="position: fixed; left: ${n}px; top: ${r}px; z-index: 200;"
|
|
3037
3784
|
@mousedown=${(e) => e.stopPropagation()}
|
|
3038
3785
|
@keydown=${(e) => this._onMenuKeydown(e, ".ft-body-context-menu", l)}>
|
|
3039
|
-
${d("
|
|
3786
|
+
${d(k("copy"), () => this._handleCopy(!1))}
|
|
3040
3787
|
${f}
|
|
3041
|
-
${d("
|
|
3042
|
-
${d("
|
|
3043
|
-
${d("
|
|
3788
|
+
${d(k("insertRowAbove"), () => this.addRow(void 0, t))}
|
|
3789
|
+
${d(k("insertRowBelow"), () => this.addRow(void 0, t + 1))}
|
|
3790
|
+
${d(k("deleteRow"), () => this.deleteRows([t]), !0)}
|
|
3044
3791
|
${f}
|
|
3045
|
-
${d("
|
|
3792
|
+
${d(k("hideColumn"), () => this._setColumnHidden(o.key, !0))}
|
|
3046
3793
|
${f}
|
|
3047
|
-
${d("
|
|
3048
|
-
${d("
|
|
3794
|
+
${d(`${k("sortAscending")} ↑`, () => this._applySortFromMenu(o.key, "asc"))}
|
|
3795
|
+
${d(`${k("sortDescending")} ↓`, () => this._applySortFromMenu(o.key, "desc"))}
|
|
3049
3796
|
${f}
|
|
3050
|
-
${d("
|
|
3051
|
-
${c ? d("
|
|
3797
|
+
${d(k("filterByThisValue"), () => this.setFilter(o.key, (e) => e === s))}
|
|
3798
|
+
${c ? d(k("clearFilter"), () => this.removeFilter(o.key)) : a}
|
|
3052
3799
|
${f}
|
|
3053
|
-
${d(u ? "
|
|
3054
|
-
${u ? d("
|
|
3800
|
+
${d(k(u ? "editComment" : "addComment"), () => this._openCommentPopup(t, o.key, n, r))}
|
|
3801
|
+
${u ? d(k("deleteComment"), () => this.setComment(t, o.key, null), !0) : a}
|
|
3055
3802
|
</div>
|
|
3056
3803
|
`;
|
|
3057
3804
|
}
|
|
@@ -3083,13 +3830,13 @@ var q = {
|
|
|
3083
3830
|
@mousedown=${(e) => e.stopPropagation()}>
|
|
3084
3831
|
<textarea class="ft-comment-popup-textarea"
|
|
3085
3832
|
rows="4"
|
|
3086
|
-
placeholder
|
|
3833
|
+
placeholder=${k("addCommentPlaceholder")}
|
|
3087
3834
|
@keydown=${(e) => {
|
|
3088
3835
|
e.key === "Escape" && (e.preventDefault(), this._cancelCommentPopup()), e.key === "Enter" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this._commitCommentPopup());
|
|
3089
3836
|
}}></textarea>
|
|
3090
3837
|
<div class="ft-comment-popup-buttons">
|
|
3091
|
-
<button class="ft-comment-popup-cancel" @click=${() => this._cancelCommentPopup()}
|
|
3092
|
-
<button class="ft-comment-popup-save" @click=${() => this._commitCommentPopup()}
|
|
3838
|
+
<button class="ft-comment-popup-cancel" @click=${() => this._cancelCommentPopup()}>${k("cancel")}</button>
|
|
3839
|
+
<button class="ft-comment-popup-save" @click=${() => this._commitCommentPopup()}>${k("save")}</button>
|
|
3093
3840
|
</div>
|
|
3094
3841
|
</div>
|
|
3095
3842
|
`;
|
|
@@ -3125,7 +3872,7 @@ var q = {
|
|
|
3125
3872
|
<div class="ft-filter-dropdown" @click=${(e) => e.stopPropagation()}>
|
|
3126
3873
|
${t === "boolean" ? this._renderBooleanFilter(e) : t === "number" ? this._renderNumberFilter(e) : t === "date" || t === "datetime" ? this._renderDateFilter(e) : this._renderTextFilter(e)}
|
|
3127
3874
|
<div class="ft-filter-actions">
|
|
3128
|
-
<button class="ft-filter-clear" @click=${() => this._clearColumnFilter(e.key)}
|
|
3875
|
+
<button class="ft-filter-clear" @click=${() => this._clearColumnFilter(e.key)}>${k("clear")}</button>
|
|
3129
3876
|
</div>
|
|
3130
3877
|
</div>
|
|
3131
3878
|
`;
|
|
@@ -3158,7 +3905,7 @@ var q = {
|
|
|
3158
3905
|
let n = this._emptyFilterState.get(e) ?? "";
|
|
3159
3906
|
return i`
|
|
3160
3907
|
<div class="ft-filter-empty-row">
|
|
3161
|
-
<label
|
|
3908
|
+
<label>${k("blankCells")}</label>
|
|
3162
3909
|
<select class="ft-filter-mode-select"
|
|
3163
3910
|
.value=${n}
|
|
3164
3911
|
@change=${(n) => {
|
|
@@ -3168,9 +3915,9 @@ var q = {
|
|
|
3168
3915
|
@keydown=${(e) => {
|
|
3169
3916
|
e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
|
|
3170
3917
|
}}>
|
|
3171
|
-
<option value=""
|
|
3172
|
-
<option value="empty"
|
|
3173
|
-
<option value="non-empty"
|
|
3918
|
+
<option value="">${k("blankAll")}</option>
|
|
3919
|
+
<option value="empty">${k("emptyOnly")}</option>
|
|
3920
|
+
<option value="non-empty">${k("nonEmptyOnly")}</option>
|
|
3174
3921
|
</select>
|
|
3175
3922
|
</div>
|
|
3176
3923
|
`;
|
|
@@ -3246,13 +3993,13 @@ var q = {
|
|
|
3246
3993
|
@keydown=${(e) => {
|
|
3247
3994
|
e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
|
|
3248
3995
|
}}>
|
|
3249
|
-
<option value="contains"
|
|
3250
|
-
<option value="starts"
|
|
3251
|
-
<option value="ends"
|
|
3252
|
-
<option value="wildcard"
|
|
3996
|
+
<option value="contains">${k("contains")}</option>
|
|
3997
|
+
<option value="starts">${k("startsWith")}</option>
|
|
3998
|
+
<option value="ends">${k("endsWith")}</option>
|
|
3999
|
+
<option value="wildcard">${k("wildcard")}</option>
|
|
3253
4000
|
</select>
|
|
3254
4001
|
</div>
|
|
3255
|
-
<input class="ft-filter-input" type="text" placeholder
|
|
4002
|
+
<input class="ft-filter-input" type="text" placeholder=${k("searchPlaceholder")}
|
|
3256
4003
|
.value=${t.value}
|
|
3257
4004
|
@input=${(t) => {
|
|
3258
4005
|
let n = t.target.value, r = this._textFilterState.get(e.key) ?? {
|
|
@@ -3303,7 +4050,7 @@ var q = {
|
|
|
3303
4050
|
}}>
|
|
3304
4051
|
${Object.keys(q).map((e) => i`<option value=${e}>${q[e]}</option>`)}
|
|
3305
4052
|
</select>
|
|
3306
|
-
<input class="ft-filter-input ft-num-cond-input" type="number" placeholder
|
|
4053
|
+
<input class="ft-filter-input ft-num-cond-input" type="number" placeholder=${k("valuePlaceholder")}
|
|
3307
4054
|
.value=${n.value == null ? "" : String(n.value)}
|
|
3308
4055
|
@input=${(n) => {
|
|
3309
4056
|
let r = n.target.value, i = this._numberFilterState.get(e) ?? this._defaultNumState();
|
|
@@ -3364,13 +4111,13 @@ var q = {
|
|
|
3364
4111
|
let t = e.type === "datetime" ? "datetime-local" : "date", n = this._dateFilterState.get(e.key) ?? {};
|
|
3365
4112
|
return i`
|
|
3366
4113
|
<div class="ft-filter-range">
|
|
3367
|
-
<input class="ft-filter-input" type=${t} placeholder
|
|
4114
|
+
<input class="ft-filter-input" type=${t} placeholder=${k("fromPlaceholder")}
|
|
3368
4115
|
.value=${n.from ?? ""}
|
|
3369
4116
|
@input=${(t) => this._applyDateFilter(e.key, t, "from")}
|
|
3370
4117
|
@keydown=${(e) => {
|
|
3371
4118
|
e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
|
|
3372
4119
|
}}>
|
|
3373
|
-
<input class="ft-filter-input" type=${t} placeholder
|
|
4120
|
+
<input class="ft-filter-input" type=${t} placeholder=${k("toPlaceholder")}
|
|
3374
4121
|
.value=${n.to ?? ""}
|
|
3375
4122
|
@input=${(t) => this._applyDateFilter(e.key, t, "to")}
|
|
3376
4123
|
@keydown=${(e) => {
|
|
@@ -3396,9 +4143,9 @@ var q = {
|
|
|
3396
4143
|
@keydown=${(e) => {
|
|
3397
4144
|
e.key === "Escape" && (this._openFilterKey = null), e.stopPropagation();
|
|
3398
4145
|
}}>
|
|
3399
|
-
<option value="all"
|
|
3400
|
-
<option value="true">\u2714
|
|
3401
|
-
<option value="false">\u2718
|
|
4146
|
+
<option value="all">${k("all")}</option>
|
|
4147
|
+
<option value="true">\u2714 ${k("booleanTrue")}</option>
|
|
4148
|
+
<option value="false">\u2718 ${k("booleanFalse")}</option>
|
|
3402
4149
|
</select>
|
|
3403
4150
|
${this._renderEmptyFilterRow(e.key)}
|
|
3404
4151
|
`;
|
|
@@ -3818,39 +4565,39 @@ var q = {
|
|
|
3818
4565
|
e.key === "Enter" && e.target instanceof HTMLInputElement && e.target.classList.contains("ft-find-input") && (e.shiftKey ? this._findPrev() : this._findNext());
|
|
3819
4566
|
}}>
|
|
3820
4567
|
<div class="ft-find-row">
|
|
3821
|
-
<input class="ft-find-input" type="text" placeholder
|
|
4568
|
+
<input class="ft-find-input" type="text" placeholder=${k("findPlaceholder")}
|
|
3822
4569
|
.value=${t}
|
|
3823
4570
|
@input=${(e) => {
|
|
3824
4571
|
this._findState.query = e.target.value, this._findSearch();
|
|
3825
4572
|
}}>
|
|
3826
4573
|
<span class="ft-find-count">${c > 0 ? `${l}/${c}` : t ? "0 results" : ""}</span>
|
|
3827
|
-
<button @click=${() => this._findPrev()} title
|
|
3828
|
-
<button @click=${() => this._findNext()} title
|
|
3829
|
-
<label title
|
|
4574
|
+
<button @click=${() => this._findPrev()} title=${k("findPrevious")}>◀</button>
|
|
4575
|
+
<button @click=${() => this._findNext()} title=${k("findNext")}>▶</button>
|
|
4576
|
+
<label title=${k("matchCase")}><input type="checkbox" ?checked=${r} @change=${(e) => {
|
|
3830
4577
|
this._findState.matchCase = e.target.checked, this._findSearch();
|
|
3831
4578
|
}}> Aa</label>
|
|
3832
|
-
<label title
|
|
4579
|
+
<label title=${k("wholeCell")}><input type="checkbox" ?checked=${a} @change=${(e) => {
|
|
3833
4580
|
this._findState.wholeCell = e.target.checked, this._findSearch();
|
|
3834
4581
|
}}> [ ]</label>
|
|
3835
|
-
<button @click=${() => this._closeFindPanel()} title
|
|
4582
|
+
<button @click=${() => this._closeFindPanel()} title=${k("closeFind")}>✕</button>
|
|
3836
4583
|
</div>
|
|
3837
4584
|
${e === "replace" ? i`
|
|
3838
4585
|
<div class="ft-find-row">
|
|
3839
|
-
<input class="ft-find-replace-input" type="text" placeholder
|
|
4586
|
+
<input class="ft-find-replace-input" type="text" placeholder=${k("replaceWithPlaceholder")}
|
|
3840
4587
|
.value=${n}
|
|
3841
4588
|
@input=${(e) => {
|
|
3842
4589
|
this._findState.replaceWith = e.target.value;
|
|
3843
4590
|
}}>
|
|
3844
|
-
<button @click=${() => this._replaceOne()} ?disabled=${c === 0}
|
|
3845
|
-
<button @click=${() => this._replaceAll()} ?disabled=${c === 0}
|
|
4591
|
+
<button @click=${() => this._replaceOne()} ?disabled=${c === 0}>${k("replace")}</button>
|
|
4592
|
+
<button @click=${() => this._replaceAll()} ?disabled=${c === 0}>${k("replaceAll")}</button>
|
|
3846
4593
|
</div>
|
|
3847
4594
|
` : ""}
|
|
3848
4595
|
</div>
|
|
3849
4596
|
`;
|
|
3850
4597
|
}
|
|
3851
4598
|
render() {
|
|
3852
|
-
let e = this.visibleColumns, t = this.importEnabled && this._isDragOver ? i`<div class="ft-import-overlay"
|
|
3853
|
-
if (e.length === 0) return i`${t}${n}<div class="ft-empty"
|
|
4599
|
+
let e = this.visibleColumns, t = this.importEnabled && this._isDragOver ? i`<div class="ft-import-overlay">${k("dropFileToImport")}</div>` : a, n = this.loading ? i`<div class="ft-loading-overlay"></div>` : a;
|
|
4600
|
+
if (e.length === 0) return i`${t}${n}<div class="ft-empty">${k("noColumnsDefined")}</div>`;
|
|
3854
4601
|
let r = this.headerHeight, o = this._totalRowWidth, { start: s, end: c } = this.visibleColRange, l = [];
|
|
3855
4602
|
for (let t = 0; t < e.length; t++) (e[t].pinned === "left" || e[t].pinned === "right") && (t < s || t >= c) && l.push(t);
|
|
3856
4603
|
let u = 0, d = this._scrollLeft, f = this.selectable ? i`<div class="ft-checkbox-header"
|
|
@@ -4159,4 +4906,4 @@ K([s({ type: Array })], $.prototype, "columns", void 0), K([s({
|
|
|
4159
4906
|
attribute: "max-undo-size"
|
|
4160
4907
|
})], $.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")], $);
|
|
4161
4908
|
//#endregion
|
|
4162
|
-
export {
|
|
4909
|
+
export { O as a, A as i, H as n, m as o, M as r, $ as t };
|