@evotecit/canopyx 0.3.2 → 0.3.4

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.
Files changed (39) hide show
  1. package/CanopyX.Html/Assets/canopyx-data.js +5 -4
  2. package/CanopyX.Html/Assets/canopyx-editing.css +1 -6
  3. package/CanopyX.Html/Assets/canopyx-editing.js +4 -39
  4. package/CanopyX.Html/Assets/canopyx-flow-entry.css +178 -0
  5. package/CanopyX.Html/Assets/canopyx-flow-entry.js +78 -0
  6. package/CanopyX.Html/Assets/canopyx-flow-module.mjs +80 -0
  7. package/CanopyX.Html/Assets/canopyx-flow.css +180 -0
  8. package/CanopyX.Html/Assets/canopyx-flow.js +214 -0
  9. package/CanopyX.Html/Assets/canopyx-forms.css +8 -0
  10. package/CanopyX.Html/Assets/canopyx-forms.js +39 -0
  11. package/CanopyX.Html/Assets/canopyx-grid-module.mjs +42 -23
  12. package/CanopyX.Html/Assets/canopyx-grid.css +2 -0
  13. package/CanopyX.Html/Assets/canopyx-grid.js +42 -23
  14. package/CanopyX.Html/Assets/canopyx-grouping.js +2 -2
  15. package/CanopyX.Html/Assets/canopyx-interactive.js +7 -7
  16. package/CanopyX.Html/Assets/canopyx-labels-de.js +105 -0
  17. package/CanopyX.Html/Assets/canopyx-labels-es.js +105 -0
  18. package/CanopyX.Html/Assets/canopyx-labels-fr.js +105 -0
  19. package/CanopyX.Html/Assets/canopyx-labels-it.js +105 -0
  20. package/CanopyX.Html/Assets/canopyx-labels-pl.js +105 -0
  21. package/CanopyX.Html/Assets/canopyx-live.js +2 -2
  22. package/CanopyX.Html/Assets/canopyx-matrix.css +153 -0
  23. package/CanopyX.Html/Assets/canopyx-matrix.js +153 -0
  24. package/CanopyX.Html/Assets/canopyx-module.mjs +7 -7
  25. package/CanopyX.Html/Assets/canopyx-reporting-module.mjs +43 -24
  26. package/CanopyX.Html/Assets/canopyx-reporting.css +2 -0
  27. package/CanopyX.Html/Assets/canopyx-reporting.js +43 -24
  28. package/CanopyX.Html/Assets/canopyx-tree-tools.js +3 -2
  29. package/CanopyX.Html/Assets/canopyx.js +7 -7
  30. package/JavaScript/flow.d.ts +232 -0
  31. package/JavaScript/grid.d.ts +11 -5
  32. package/JavaScript/locales/de.mjs +105 -0
  33. package/JavaScript/locales/es.mjs +105 -0
  34. package/JavaScript/locales/fr.mjs +105 -0
  35. package/JavaScript/locales/it.mjs +105 -0
  36. package/JavaScript/locales/pl.mjs +105 -0
  37. package/JavaScript/matrix.d.ts +160 -0
  38. package/README.md +4 -2
  39. package/package.json +24 -1
@@ -517,6 +517,111 @@ const labels = Object.freeze({
517
517
  calendarOutsideRange: "Fuera de las fechas que muestra este calendario",
518
518
  calendarClose: "Cerrar",
519
519
  calendarDetailsOf: "Detalles de {title}",
520
+ flowSteps: "Pasos",
521
+ flowStepOf: "Paso {current} de {count}",
522
+ flowStepAnnounce: "Paso {current} de {count}, {title}",
523
+ flowNext: "Siguiente",
524
+ flowBack: "Atrás",
525
+ flowSubmit: "Enviar",
526
+ flowSubmitting: "Enviando…",
527
+ flowReviewTitle: "Revise sus respuestas",
528
+ flowChange: "Cambiar",
529
+ flowChangeField: "Cambiar {field}",
530
+ flowNotProvided: "No indicado",
531
+ flowOptional: "(opcional)",
532
+ flowStepOptional: "Opcional",
533
+ flowStepComplete: "Completado",
534
+ flowStepCurrent: "Paso actual",
535
+ flowStepErrors: "Errores: {count}",
536
+ flowStepLocked: "Complete primero los pasos anteriores",
537
+ flowStepNotStarted: "Sin empezar",
538
+ flowErrorSummary: "Corrija esto antes de continuar",
539
+ flowReady: "Listo para enviar",
540
+ flowNotReady: "Errores por corregir: {count}",
541
+ flowWarnings: "Advertencias: {count}",
542
+ flowChangesOnly: "Mostrar solo los cambios",
543
+ flowNoChanges: "No ha cambiado ninguna respuesta.",
544
+ flowWas: "Antes: {value}",
545
+ flowChangedCount: "Respuestas cambiadas: {count}",
546
+ flowSecretSet: "Establecido",
547
+ flowSecretKept: "Sin cambios",
548
+ flowSecretNotSet: "Sin establecer",
549
+ flowSecretHint: "Hay un valor guardado. Déjelo en blanco para conservarlo.",
550
+ flowSecretShow: "Mostrar",
551
+ flowSecretHide: "Ocultar",
552
+ flowSecretReveal: "Mostrar {field}",
553
+ flowOn: "Activado",
554
+ flowOff: "Desactivado",
555
+ flowAdd: "Añadir",
556
+ flowAddItem: "Añadir a {field}",
557
+ flowRemoveItem: "Quitar {item}",
558
+ flowItemLabel: "{field}, elemento {index}",
559
+ flowSelectAll: "Seleccionar todo",
560
+ flowSelectNone: "Borrar",
561
+ flowSelectedCount: "{count} de {total} seleccionados",
562
+ flowUnit: "Unidad",
563
+ flowUnitSeconds: "segundos",
564
+ flowUnitMinutes: "minutos",
565
+ flowUnitHours: "horas",
566
+ flowUnitDays: "días",
567
+ flowSeconds: "[one]{count} segundo[other]{count} segundos",
568
+ flowMinutes: "[one]{count} minuto[other]{count} minutos",
569
+ flowHours: "[one]{count} hora[other]{count} horas",
570
+ flowDays: "[one]{count} día[other]{count} días",
571
+ flowDurationInvalid: "{field} debe ser un número entero.",
572
+ flowItemsMin: "{field} necesita al menos {min}.",
573
+ flowItemsMax: "{field} admite como máximo {max}.",
574
+ flowItemEmail: "«{item}» no es una dirección de correo.",
575
+ flowItemHost: "«{item}» no es un nombre de host.",
576
+ flowItemIp: "«{item}» no es una dirección IP.",
577
+ flowItemCidr: "«{item}» no es un rango de red.",
578
+ flowItemUrl: "«{item}» no es una dirección web.",
579
+ flowItemPattern: "«{item}» no tiene el formato esperado.",
580
+ flowSaved: "Guardado",
581
+ flowAccepted: "En curso",
582
+ flowProgress: "{done} de {total}",
583
+ flowConflict: "Esta configuración cambió mientras la editaba.",
584
+ flowReload: "Volver a cargar la configuración actual",
585
+ flowNotSubmitted: "Las respuestas no se enviaron.",
586
+ flowNoHost: "Ningún host recibió las respuestas.",
587
+ flowStartAgain: "Empezar otro",
588
+ flowCopy: "Copiar",
589
+ flowCopied: "Copiado",
590
+ flowSavedIt: "Lo he guardado",
591
+ flowShownOnce: "Se muestra solo una vez. Cópielo ahora.",
592
+ matrixRows: "Filas",
593
+ matrixColumns: "Columnas",
594
+ matrixSearch: "Buscar filas y columnas",
595
+ matrixSortBy: "Ordenar por",
596
+ matrixGroupBy: "Agrupar por",
597
+ matrixByLabel: "Nombre",
598
+ matrixByTotal: "Total",
599
+ matrixAsListed: "Como en la lista",
600
+ matrixNoGrouping: "Sin grupos",
601
+ matrixDescending: "Descendente",
602
+ matrixOnlyProblems: "Solo problemas",
603
+ matrixHideEmpty: "Ocultar filas y columnas vacías",
604
+ matrixSize: "{rows} × {columns}",
605
+ matrixShown: "Filas: {rows} de {totalRows}, columnas: {columns} de {totalColumns}",
606
+ matrixAttention: "Requieren atención: {count}",
607
+ matrixLegend: "Estados",
608
+ matrixFilter: "Filtrar",
609
+ matrixClearFilters: "Borrar filtros",
610
+ matrixNoMatches: "Ninguna fila o columna coincide.",
611
+ matrixSelf: "El mismo elemento",
612
+ matrixNoData: "Sin datos",
613
+ matrixCell: "{row} y {column}: {state}",
614
+ matrixTotal: "Total",
615
+ matrixItemTotal: "{item}: {count}",
616
+ matrixExpandGroup: "Expandir {group}",
617
+ matrixCollapseGroup: "Contraer {group}",
618
+ matrixGroupCount: "Elementos: {count}",
619
+ matrixDetails: "Detalles",
620
+ matrixClose: "Cerrar",
621
+ matrixValue: "Valor",
622
+ matrixState: "Estado",
623
+ matrixAllClear: "Nada requiere atención",
624
+ matrixShowMore: "Mostrar más",
520
625
  });
521
626
  const staticLabels = Object.freeze({
522
627
  overflowNote: "Filas mostradas: {shown}. Total: {total}.",
@@ -517,6 +517,111 @@ const labels = Object.freeze({
517
517
  calendarOutsideRange: "En dehors des dates de ce calendrier",
518
518
  calendarClose: "Fermer",
519
519
  calendarDetailsOf: "Détails de {title}",
520
+ flowSteps: "Étapes",
521
+ flowStepOf: "Étape {current} sur {count}",
522
+ flowStepAnnounce: "Étape {current} sur {count}, {title}",
523
+ flowNext: "Suivant",
524
+ flowBack: "Retour",
525
+ flowSubmit: "Envoyer",
526
+ flowSubmitting: "Envoi…",
527
+ flowReviewTitle: "Vérifiez vos réponses",
528
+ flowChange: "Modifier",
529
+ flowChangeField: "Modifier {field}",
530
+ flowNotProvided: "Non renseigné",
531
+ flowOptional: "(facultatif)",
532
+ flowStepOptional: "Facultative",
533
+ flowStepComplete: "Terminée",
534
+ flowStepCurrent: "Étape actuelle",
535
+ flowStepErrors: "Erreurs : {count}",
536
+ flowStepLocked: "Terminez d'abord les étapes précédentes",
537
+ flowStepNotStarted: "Non commencée",
538
+ flowErrorSummary: "Corrigez ces points avant de continuer",
539
+ flowReady: "Prêt à envoyer",
540
+ flowNotReady: "Erreurs à corriger : {count}",
541
+ flowWarnings: "Avertissements : {count}",
542
+ flowChangesOnly: "Afficher uniquement les modifications",
543
+ flowNoChanges: "Aucune réponse n'a changé.",
544
+ flowWas: "Avant : {value}",
545
+ flowChangedCount: "Réponses modifiées : {count}",
546
+ flowSecretSet: "Défini",
547
+ flowSecretKept: "Inchangé",
548
+ flowSecretNotSet: "Non défini",
549
+ flowSecretHint: "Une valeur est enregistrée. Laissez vide pour la conserver.",
550
+ flowSecretShow: "Afficher",
551
+ flowSecretHide: "Masquer",
552
+ flowSecretReveal: "Afficher {field}",
553
+ flowOn: "Activé",
554
+ flowOff: "Désactivé",
555
+ flowAdd: "Ajouter",
556
+ flowAddItem: "Ajouter à {field}",
557
+ flowRemoveItem: "Retirer {item}",
558
+ flowItemLabel: "{field}, élément {index}",
559
+ flowSelectAll: "Tout sélectionner",
560
+ flowSelectNone: "Effacer",
561
+ flowSelectedCount: "{count} sur {total} sélectionnés",
562
+ flowUnit: "Unité",
563
+ flowUnitSeconds: "secondes",
564
+ flowUnitMinutes: "minutes",
565
+ flowUnitHours: "heures",
566
+ flowUnitDays: "jours",
567
+ flowSeconds: "[one]{count} seconde[other]{count} secondes",
568
+ flowMinutes: "[one]{count} minute[other]{count} minutes",
569
+ flowHours: "[one]{count} heure[other]{count} heures",
570
+ flowDays: "[one]{count} jour[other]{count} jours",
571
+ flowDurationInvalid: "{field} doit être un nombre entier.",
572
+ flowItemsMin: "{field} : au moins {min}.",
573
+ flowItemsMax: "{field} : au plus {max}.",
574
+ flowItemEmail: "« {item} » n'est pas une adresse e-mail.",
575
+ flowItemHost: "« {item} » n'est pas un nom d'hôte.",
576
+ flowItemIp: "« {item} » n'est pas une adresse IP.",
577
+ flowItemCidr: "« {item} » n'est pas une plage réseau.",
578
+ flowItemUrl: "« {item} » n'est pas une adresse web.",
579
+ flowItemPattern: "« {item} » n'a pas le format attendu.",
580
+ flowSaved: "Enregistré",
581
+ flowAccepted: "En cours",
582
+ flowProgress: "{done} sur {total}",
583
+ flowConflict: "Ces paramètres ont changé pendant que vous les modifiiez.",
584
+ flowReload: "Recharger les paramètres actuels",
585
+ flowNotSubmitted: "Les réponses n'ont pas été envoyées.",
586
+ flowNoHost: "Aucun hôte n'a reçu les réponses.",
587
+ flowStartAgain: "Recommencer",
588
+ flowCopy: "Copier",
589
+ flowCopied: "Copié",
590
+ flowSavedIt: "Je l'ai enregistré",
591
+ flowShownOnce: "Affiché une seule fois. Copiez-le maintenant.",
592
+ matrixRows: "Lignes",
593
+ matrixColumns: "Colonnes",
594
+ matrixSearch: "Rechercher des lignes et des colonnes",
595
+ matrixSortBy: "Trier par",
596
+ matrixGroupBy: "Regrouper par",
597
+ matrixByLabel: "Nom",
598
+ matrixByTotal: "Total",
599
+ matrixAsListed: "Comme listé",
600
+ matrixNoGrouping: "Aucun groupe",
601
+ matrixDescending: "Décroissant",
602
+ matrixOnlyProblems: "Problèmes uniquement",
603
+ matrixHideEmpty: "Masquer les lignes et colonnes vides",
604
+ matrixSize: "{rows} × {columns}",
605
+ matrixShown: "Lignes : {rows} sur {totalRows}, colonnes : {columns} sur {totalColumns}",
606
+ matrixAttention: "À examiner : {count}",
607
+ matrixLegend: "États",
608
+ matrixFilter: "Filtrer",
609
+ matrixClearFilters: "Effacer les filtres",
610
+ matrixNoMatches: "Aucune ligne ni colonne ne correspond.",
611
+ matrixSelf: "Même élément",
612
+ matrixNoData: "Aucune donnée",
613
+ matrixCell: "{row} et {column} : {state}",
614
+ matrixTotal: "Total",
615
+ matrixItemTotal: "{item} : {count}",
616
+ matrixExpandGroup: "Développer {group}",
617
+ matrixCollapseGroup: "Réduire {group}",
618
+ matrixGroupCount: "Éléments : {count}",
619
+ matrixDetails: "Détails",
620
+ matrixClose: "Fermer",
621
+ matrixValue: "Valeur",
622
+ matrixState: "État",
623
+ matrixAllClear: "Rien à examiner",
624
+ matrixShowMore: "Afficher plus",
520
625
  });
521
626
  const staticLabels = Object.freeze({
522
627
  overflowNote: "{shown} lignes affichées sur {total}.",
@@ -517,6 +517,111 @@ const labels = Object.freeze({
517
517
  calendarOutsideRange: "Al di fuori delle date di questo calendario",
518
518
  calendarClose: "Chiudi",
519
519
  calendarDetailsOf: "Dettagli di {title}",
520
+ flowSteps: "Passaggi",
521
+ flowStepOf: "Passaggio {current} di {count}",
522
+ flowStepAnnounce: "Passaggio {current} di {count}, {title}",
523
+ flowNext: "Avanti",
524
+ flowBack: "Indietro",
525
+ flowSubmit: "Invia",
526
+ flowSubmitting: "Invio in corso…",
527
+ flowReviewTitle: "Controlla le risposte",
528
+ flowChange: "Modifica",
529
+ flowChangeField: "Modifica {field}",
530
+ flowNotProvided: "Non indicato",
531
+ flowOptional: "(facoltativo)",
532
+ flowStepOptional: "Facoltativo",
533
+ flowStepComplete: "Completato",
534
+ flowStepCurrent: "Passaggio corrente",
535
+ flowStepErrors: "Errori: {count}",
536
+ flowStepLocked: "Completa prima i passaggi precedenti",
537
+ flowStepNotStarted: "Non iniziato",
538
+ flowErrorSummary: "Correggi questi punti prima di continuare",
539
+ flowReady: "Pronto per l'invio",
540
+ flowNotReady: "Errori da correggere: {count}",
541
+ flowWarnings: "Avvisi: {count}",
542
+ flowChangesOnly: "Mostra solo le modifiche",
543
+ flowNoChanges: "Nessuna risposta è cambiata.",
544
+ flowWas: "Prima: {value}",
545
+ flowChangedCount: "Risposte modificate: {count}",
546
+ flowSecretSet: "Impostato",
547
+ flowSecretKept: "Invariato",
548
+ flowSecretNotSet: "Non impostato",
549
+ flowSecretHint: "È salvato un valore. Lascia vuoto per mantenerlo.",
550
+ flowSecretShow: "Mostra",
551
+ flowSecretHide: "Nascondi",
552
+ flowSecretReveal: "Mostra {field}",
553
+ flowOn: "Attivo",
554
+ flowOff: "Disattivo",
555
+ flowAdd: "Aggiungi",
556
+ flowAddItem: "Aggiungi a {field}",
557
+ flowRemoveItem: "Rimuovi {item}",
558
+ flowItemLabel: "{field}, elemento {index}",
559
+ flowSelectAll: "Seleziona tutto",
560
+ flowSelectNone: "Cancella",
561
+ flowSelectedCount: "{count} di {total} selezionati",
562
+ flowUnit: "Unità",
563
+ flowUnitSeconds: "secondi",
564
+ flowUnitMinutes: "minuti",
565
+ flowUnitHours: "ore",
566
+ flowUnitDays: "giorni",
567
+ flowSeconds: "[one]{count} secondo[other]{count} secondi",
568
+ flowMinutes: "[one]{count} minuto[other]{count} minuti",
569
+ flowHours: "[one]{count} ora[other]{count} ore",
570
+ flowDays: "[one]{count} giorno[other]{count} giorni",
571
+ flowDurationInvalid: "{field} deve essere un numero intero.",
572
+ flowItemsMin: "{field} richiede almeno {min}.",
573
+ flowItemsMax: "{field} ne consente al massimo {max}.",
574
+ flowItemEmail: "«{item}» non è un indirizzo email.",
575
+ flowItemHost: "«{item}» non è un nome host.",
576
+ flowItemIp: "«{item}» non è un indirizzo IP.",
577
+ flowItemCidr: "«{item}» non è un intervallo di rete.",
578
+ flowItemUrl: "«{item}» non è un indirizzo web.",
579
+ flowItemPattern: "«{item}» non ha il formato previsto.",
580
+ flowSaved: "Salvato",
581
+ flowAccepted: "In corso",
582
+ flowProgress: "{done} di {total}",
583
+ flowConflict: "Queste impostazioni sono cambiate durante la modifica.",
584
+ flowReload: "Ricarica le impostazioni correnti",
585
+ flowNotSubmitted: "Le risposte non sono state inviate.",
586
+ flowNoHost: "Nessun host ha ricevuto le risposte.",
587
+ flowStartAgain: "Ricomincia",
588
+ flowCopy: "Copia",
589
+ flowCopied: "Copiato",
590
+ flowSavedIt: "L'ho salvato",
591
+ flowShownOnce: "Mostrato una sola volta. Copialo ora.",
592
+ matrixRows: "Righe",
593
+ matrixColumns: "Colonne",
594
+ matrixSearch: "Cerca righe e colonne",
595
+ matrixSortBy: "Ordina per",
596
+ matrixGroupBy: "Raggruppa per",
597
+ matrixByLabel: "Nome",
598
+ matrixByTotal: "Totale",
599
+ matrixAsListed: "Come elencato",
600
+ matrixNoGrouping: "Nessun gruppo",
601
+ matrixDescending: "Decrescente",
602
+ matrixOnlyProblems: "Solo problemi",
603
+ matrixHideEmpty: "Nascondi righe e colonne vuote",
604
+ matrixSize: "{rows} × {columns}",
605
+ matrixShown: "Righe: {rows} di {totalRows}, colonne: {columns} di {totalColumns}",
606
+ matrixAttention: "Richiedono attenzione: {count}",
607
+ matrixLegend: "Stati",
608
+ matrixFilter: "Filtra",
609
+ matrixClearFilters: "Cancella filtri",
610
+ matrixNoMatches: "Nessuna riga o colonna corrisponde.",
611
+ matrixSelf: "Stesso elemento",
612
+ matrixNoData: "Nessun dato",
613
+ matrixCell: "{row} e {column}: {state}",
614
+ matrixTotal: "Totale",
615
+ matrixItemTotal: "{item}: {count}",
616
+ matrixExpandGroup: "Espandi {group}",
617
+ matrixCollapseGroup: "Comprimi {group}",
618
+ matrixGroupCount: "Elementi: {count}",
619
+ matrixDetails: "Dettagli",
620
+ matrixClose: "Chiudi",
621
+ matrixValue: "Valore",
622
+ matrixState: "Stato",
623
+ matrixAllClear: "Niente richiede attenzione",
624
+ matrixShowMore: "Mostra altro",
520
625
  });
521
626
  const staticLabels = Object.freeze({
522
627
  overflowNote: "Righe mostrate: {shown} su {total}.",
@@ -517,6 +517,111 @@ const labels = Object.freeze({
517
517
  calendarOutsideRange: "Poza datami, które pokazuje ten kalendarz",
518
518
  calendarClose: "Zamknij",
519
519
  calendarDetailsOf: "Szczegóły: {title}",
520
+ flowSteps: "Kroki",
521
+ flowStepOf: "Krok {current} z {count}",
522
+ flowStepAnnounce: "Krok {current} z {count}: {title}",
523
+ flowNext: "Dalej",
524
+ flowBack: "Wstecz",
525
+ flowSubmit: "Wyślij",
526
+ flowSubmitting: "Wysyłanie…",
527
+ flowReviewTitle: "Sprawdź odpowiedzi",
528
+ flowChange: "Zmień",
529
+ flowChangeField: "Zmień: {field}",
530
+ flowNotProvided: "Nie podano",
531
+ flowOptional: "(opcjonalnie)",
532
+ flowStepOptional: "Opcjonalny",
533
+ flowStepComplete: "Ukończono",
534
+ flowStepCurrent: "Bieżący krok",
535
+ flowStepErrors: "Błędy: {count}",
536
+ flowStepLocked: "Najpierw ukończ wcześniejsze kroki",
537
+ flowStepNotStarted: "Nierozpoczęty",
538
+ flowErrorSummary: "Popraw te pola, zanim przejdziesz dalej",
539
+ flowReady: "Gotowe do wysłania",
540
+ flowNotReady: "Błędy do poprawienia: {count}",
541
+ flowWarnings: "Ostrzeżenia: {count}",
542
+ flowChangesOnly: "Pokaż tylko zmiany",
543
+ flowNoChanges: "Żadna odpowiedź się nie zmieniła.",
544
+ flowWas: "Było: {value}",
545
+ flowChangedCount: "Zmienione odpowiedzi: {count}",
546
+ flowSecretSet: "Ustawiono",
547
+ flowSecretKept: "Bez zmian",
548
+ flowSecretNotSet: "Nie ustawiono",
549
+ flowSecretHint: "Wartość jest zapisana. Zostaw puste, aby ją zachować.",
550
+ flowSecretShow: "Pokaż",
551
+ flowSecretHide: "Ukryj",
552
+ flowSecretReveal: "Pokaż: {field}",
553
+ flowOn: "Włączone",
554
+ flowOff: "Wyłączone",
555
+ flowAdd: "Dodaj",
556
+ flowAddItem: "Dodaj do: {field}",
557
+ flowRemoveItem: "Usuń: {item}",
558
+ flowItemLabel: "{field}, pozycja {index}",
559
+ flowSelectAll: "Zaznacz wszystko",
560
+ flowSelectNone: "Wyczyść",
561
+ flowSelectedCount: "Zaznaczono {count} z {total}",
562
+ flowUnit: "Jednostka",
563
+ flowUnitSeconds: "sekundy",
564
+ flowUnitMinutes: "minuty",
565
+ flowUnitHours: "godziny",
566
+ flowUnitDays: "dni",
567
+ flowSeconds: "[one]{count} sekunda[few]{count} sekundy[many]{count} sekund[other]{count} sekundy",
568
+ flowMinutes: "[one]{count} minuta[few]{count} minuty[many]{count} minut[other]{count} minuty",
569
+ flowHours: "[one]{count} godzina[few]{count} godziny[many]{count} godzin[other]{count} godziny",
570
+ flowDays: "[one]{count} dzień[few]{count} dni[many]{count} dni[other]{count} dnia",
571
+ flowDurationInvalid: "{field}: wpisz liczbę całkowitą.",
572
+ flowItemsMin: "{field}: wymagane co najmniej {min}.",
573
+ flowItemsMax: "{field}: dozwolone najwyżej {max}.",
574
+ flowItemEmail: "„{item}” nie jest adresem e-mail.",
575
+ flowItemHost: "„{item}” nie jest nazwą hosta.",
576
+ flowItemIp: "„{item}” nie jest adresem IP.",
577
+ flowItemCidr: "„{item}” nie jest zakresem sieci.",
578
+ flowItemUrl: "„{item}” nie jest adresem internetowym.",
579
+ flowItemPattern: "„{item}” ma nieoczekiwany format.",
580
+ flowSaved: "Zapisano",
581
+ flowAccepted: "W toku",
582
+ flowProgress: "{done} z {total}",
583
+ flowConflict: "Te ustawienia zmieniły się podczas edycji.",
584
+ flowReload: "Wczytaj bieżące ustawienia",
585
+ flowNotSubmitted: "Odpowiedzi nie zostały wysłane.",
586
+ flowNoHost: "Żaden host nie odebrał odpowiedzi.",
587
+ flowStartAgain: "Zacznij od nowa",
588
+ flowCopy: "Kopiuj",
589
+ flowCopied: "Skopiowano",
590
+ flowSavedIt: "Mam to zapisane",
591
+ flowShownOnce: "Widoczne tylko raz. Skopiuj teraz.",
592
+ matrixRows: "Wiersze",
593
+ matrixColumns: "Kolumny",
594
+ matrixSearch: "Szukaj wierszy i kolumn",
595
+ matrixSortBy: "Sortuj według",
596
+ matrixGroupBy: "Grupuj według",
597
+ matrixByLabel: "Nazwa",
598
+ matrixByTotal: "Razem",
599
+ matrixAsListed: "Jak na liście",
600
+ matrixNoGrouping: "Bez grup",
601
+ matrixDescending: "Malejąco",
602
+ matrixOnlyProblems: "Tylko problemy",
603
+ matrixHideEmpty: "Ukryj puste wiersze i kolumny",
604
+ matrixSize: "{rows} × {columns}",
605
+ matrixShown: "Wiersze: {rows} z {totalRows}, kolumny: {columns} z {totalColumns}",
606
+ matrixAttention: "Wymaga uwagi: {count}",
607
+ matrixLegend: "Stany",
608
+ matrixFilter: "Filtruj",
609
+ matrixClearFilters: "Wyczyść filtry",
610
+ matrixNoMatches: "Brak pasujących wierszy lub kolumn.",
611
+ matrixSelf: "Ten sam element",
612
+ matrixNoData: "Brak danych",
613
+ matrixCell: "{row} i {column}: {state}",
614
+ matrixTotal: "Razem",
615
+ matrixItemTotal: "{item}: {count}",
616
+ matrixExpandGroup: "Rozwiń {group}",
617
+ matrixCollapseGroup: "Zwiń {group}",
618
+ matrixGroupCount: "Elementy: {count}",
619
+ matrixDetails: "Szczegóły",
620
+ matrixClose: "Zamknij",
621
+ matrixValue: "Wartość",
622
+ matrixState: "Stan",
623
+ matrixAllClear: "Nic nie wymaga uwagi",
624
+ matrixShowMore: "Pokaż więcej",
520
625
  });
521
626
  const staticLabels = Object.freeze({
522
627
  overflowNote: "Pokazano {shown} z {total} wierszy.",
@@ -1,4 +1,4 @@
1
- (function(global){"use strict";const installed=new WeakSet();const part={version:"2fa02b9178c6c5df",install(context){if(installed.has(context.DataGrid.prototype))return;const{DataGrid,h,setText,fill,gridButton,gridIcon,gridQuery,gridResultShape,gridQueryRows,gridCompare,gridOrder,validateGridRows,validateGridPage,validateGridCursorPage,gridFreeze,requireIdentifier,checkDocument,cellValue,PROTOCOL,GRID_REPORTING,VIEW_MODES,inlineGridSource}=context;const LIVE_KEYS=new Set(["stableOrder","flash","batchMs","pollMs","load","announce","pauseWhenHidden"]);const LIVE_MAX_ROWS=100000;function liveOptions(view,options){const read=value=>{if(value===undefined||value===true||value===false)return{};if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).some(key=>!LIVE_KEYS.has(key)))
1
+ (function(global){"use strict";const installed=new WeakSet();const part={version:"e49f69556b65916b",install(context){if(installed.has(context.DataGrid.prototype))return;const{DataGrid,h,setText,fill,gridButton,gridIcon,gridQuery,gridResultShape,gridQueryRows,gridCompare,gridOrder,gridIdOrder,validateGridRows,validateGridPage,validateGridCursorPage,gridFreeze,requireIdentifier,checkDocument,cellValue,PROTOCOL,GRID_REPORTING,VIEW_MODES,inlineGridSource}=context;const LIVE_KEYS=new Set(["stableOrder","flash","batchMs","pollMs","load","announce","pauseWhenHidden"]);const LIVE_MAX_ROWS=100000;function liveOptions(view,options){const read=value=>{if(value===undefined||value===true||value===false)return{};if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).some(key=>!LIVE_KEYS.has(key)))
2
2
  throw new Error("CanopyX: live takes stableOrder, flash, batchMs, pollMs, load, announce and pauseWhenHidden.");return value};const merged=options.live===false?{}:{...read(view.live),...read(options.live)},flash=merged.flash;const integer=(value,min,max)=>value===undefined||Number.isInteger(value)&&value>=min&&value<=max;if(["stableOrder","announce","pauseWhenHidden"].some(key=>merged[key]!==undefined&&typeof merged[key]!=="boolean")||
3
3
  !(flash===undefined||typeof flash==="boolean"||flash&&typeof flash==="object"&&Object.keys(flash).every(key=>key==="durationMs")&&integer(flash.durationMs,100,10000))||
4
4
  !integer(merged.batchMs,0,60000)||!(merged.pollMs===undefined||merged.pollMs===0||integer(merged.pollMs,250,86400000))||
@@ -19,7 +19,7 @@ function liveDiff(rows,current){const add=[],keep=new Set();for(const row of row
19
19
  return{add,update:[],remove:[...current.keys()].filter(id=>!keep.has(id))}}
20
20
  const liveCopy=value=>JSON.parse(JSON.stringify(value));function liveColumns(view){return new Map(view.columns.map(column=>[column.id,column]))}
21
21
  function liveComparer(grid,query){const columns=liveColumns(grid.view),compare=GRID_REPORTING.compare?.(grid.view)||gridCompare;const sorts=query.sort.map(sort=>[columns.get(sort.column),sort.direction]);return(a,b)=>{for(const[column,direction]of sorts){const result=compare(a,b,column,direction);if(result)return result}
22
- return gridOrder(a.id,b.id)}}
22
+ return gridIdOrder(a.id,b.id)}}
23
23
  function liveMatcher(grid,query){const columns=liveColumns(grid.view),unsorted={...query,sort:[]};const view={columns:grid.view.columns,searchColumns:grid.view.searchColumns,rows:null};return row=>{view.rows=[row];return gridQueryRows(view,unsorted,columns,false).length===1}}
24
24
  function liveIndexOrder(order){order.at=new Map();order.ids.forEach((id,index)=>order.at.set(id,index));return order}
25
25
  Object.assign(DataGrid.prototype,{liveRows(){if(this.liveRowsOf!==this.view.rows){this.liveRowMap=new Map();for(const row of this.view.rows)this.liveRowMap.set(row.id,row);this.liveRowsOf=this.view.rows}
@@ -0,0 +1,153 @@
1
+ /* The matrix view: a sticky header with column labels written upwards,sticky row headers and totals,windowed cells. */
2
+ .cx-matrix-host{display:block;}
3
+ .cx-matrix [hidden]{display:none !important;}
4
+ .cx-matrix{display:flex;flex-direction:column;gap:var(--cx-size-8px);box-sizing:border-box;max-height:100%;font:var(--cx-font-size)/1.35 var(--cx-font);color:var(--cx-text);
5
+ --mx-line:color-mix(in srgb,var(--cx-line) 70%,var(--cx-surface));--mx-none:color-mix(in srgb,var(--cx-muted) 42%,var(--cx-surface));
6
+ --mx-raised:color-mix(in srgb,var(--cx-shadow-ink) 18%,transparent);}
7
+ .cx-mx-bar{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:var(--cx-size-8px);}
8
+ .cx-mx-input{box-sizing:border-box;height:var(--cx-size-32px);padding:0 var(--cx-size-10px);font:inherit;color:var(--cx-text);background:var(--cx-surface);
9
+ border:var(--cx-size-1px) solid var(--cx-control-border);border-radius:var(--cx-radius-sm);color-scheme:inherit;}
10
+ .cx-mx-search{flex:1 1 var(--cx-size-180px);max-width:var(--cx-size-320px);}
11
+ .cx-mx-button{box-sizing:border-box;min-height:var(--cx-size-32px);padding:0 var(--cx-size-12px);font:inherit;color:var(--cx-text);background:var(--cx-surface);
12
+ border:var(--cx-size-1px) solid var(--cx-control-border);border-radius:var(--cx-radius-sm);cursor:pointer;}
13
+ .cx-mx-button:hover{background:var(--cx-hover-bg);}
14
+ .cx-mx-button.cx-mx-active{border-color:var(--cx-accent);color:var(--cx-accent-text);}
15
+ .cx-mx-switch{display:inline-flex;align-items:center;gap:var(--cx-size-6px);min-height:var(--cx-size-24px);cursor:pointer;}
16
+ .cx-mx-check{width:var(--cx-size-16px);height:var(--cx-size-16px);margin:0;accent-color:var(--cx-accent);}
17
+ .cx-mx-summary{margin-inline-start:auto;color:var(--cx-muted);font-size:var(--cx-size-13px);font-variant-numeric:tabular-nums;}
18
+ .cx-mx-panel{position:absolute;top:calc(100% + var(--cx-size-4px));inset-inline-start:0;z-index:30;box-sizing:border-box;width:min(var(--cx-size-340px),100%);max-height:var(--cx-size-60vh);
19
+ overflow:auto;display:grid;gap:var(--cx-size-10px);padding:var(--cx-size-12px);background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line-strong);
20
+ border-radius:var(--cx-radius);box-shadow:0 var(--cx-size-8px) var(--cx-size-24px) color-mix(in srgb,var(--cx-shadow-ink) 16%,transparent);}
21
+ .cx-mx-field{display:grid;gap:var(--cx-size-4px);font-size:var(--cx-size-13px);color:var(--cx-muted);}
22
+ .cx-mx-field .cx-mx-input{color:var(--cx-text);}
23
+ .cx-mx-facet{display:grid;gap:var(--cx-size-4px);margin:0;padding:0;border:0;min-width:0;}
24
+ .cx-mx-facet legend{padding:0 0 var(--cx-size-4px);font-size:var(--cx-size-13px);color:var(--cx-muted);}
25
+ .cx-mx-keycount{color:var(--cx-muted);font-variant-numeric:tabular-nums;margin-inline-start:var(--cx-size-4px);}
26
+ .cx-mx-legend{display:flex;flex-wrap:wrap;gap:var(--cx-size-6px) var(--cx-size-16px);font-size:var(--cx-size-13px);}
27
+ .cx-mx-key{display:inline-flex;align-items:center;gap:var(--cx-size-6px);}
28
+ .cx-mx-swatch{display:inline-flex;align-items:center;justify-content:center;width:var(--cx-size-20px);height:var(--cx-size-20px);border-radius:var(--cx-radius-sm);
29
+ border:var(--cx-size-1px) solid var(--mx-line);flex:none;}
30
+ .cx-mx-swatch.cx-mx-none{background:var(--cx-surface);}
31
+ .cx-mx-swatch.cx-mx-none::after{content:"";width:var(--cx-size-3px);height:var(--cx-size-3px);border-radius:50%;background:var(--mx-none);}
32
+ .cx-mx-scroll{position:relative;flex:0 1 auto;box-sizing:border-box;width:fit-content;max-width:100%;min-height:0;max-height:var(--cx-size-100vh);overflow:auto;background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line);border-radius:var(--cx-radius);
33
+ overscroll-behavior:contain;scrollbar-color:var(--cx-scrollbar-thumb,auto) var(--cx-scrollbar-track,auto);}
34
+ .cx-mx-head{position:sticky;top:0;z-index:3;width:var(--mx-content-w);background:var(--cx-head-bg);}
35
+ .cx-mx-head.cx-mx-raised{box-shadow:0 var(--cx-size-6px) var(--cx-size-8px) calc(var(--cx-size-6px) * -1) var(--mx-raised);}
36
+ .cx-mx-band,.cx-mx-hrow,.cx-mx-frow{position:relative;display:flex;}
37
+ .cx-mx-band{height:var(--mx-band-h);border-bottom:var(--cx-size-1px) solid var(--mx-line);}
38
+ .cx-mx-hrow{height:var(--mx-head-h);border-bottom:var(--cx-size-1px) solid var(--cx-line);}
39
+ .cx-mx-spacer{flex:none;width:var(--mx-cols-w);}
40
+ .cx-mx-corner{position:sticky;inset-inline-start:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-head-w);display:flex;flex-direction:column;justify-content:flex-end;
41
+ gap:var(--cx-size-2px);padding:var(--cx-size-6px) var(--cx-size-10px);background:var(--cx-head-bg);border-inline-end:var(--cx-size-1px) solid var(--cx-line);
42
+ font-size:var(--cx-size-12px);font-weight:600;color:var(--cx-muted);}
43
+ .cx-mx-corner-columns{align-self:flex-end;}
44
+ .cx-mx-corner-columns::after{content:" \2192";}
45
+ .cx-mx-corner-rows::after{content:" \2193";}
46
+ .cx-mx-corner-columns:dir(rtl)::after{content:" \2190";}
47
+ .cx-mx-hcell{position:absolute;top:0;bottom:0;box-sizing:border-box;width:var(--mx-cell-w);contain:strict;display:flex;align-items:flex-end;justify-content:center;padding-bottom:var(--cx-size-6px);
48
+ border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-12px);}
49
+ .cx-mx-vlabel{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:calc(var(--mx-head-h) - var(--cx-size-12px));}
50
+ .cx-mx-bcell{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;padding:0 var(--cx-size-4px);border-inline-end:var(--cx-size-1px) solid var(--cx-line);
51
+ overflow:hidden;font-size:var(--cx-size-12px);font-weight:600;}
52
+ .cx-mx-bandcorner,.cx-mx-bandend{background:var(--cx-head-bg);}
53
+ .cx-mx-bcell .cx-mx-toggle{max-width:100%;overflow:hidden;}
54
+ .cx-mx-bclip .cx-mx-toggle{visibility:hidden;}
55
+ .cx-mx-total{position:sticky;inset-inline-end:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-total-w);display:flex;align-items:center;justify-content:flex-end;
56
+ padding:0 var(--cx-size-10px);background:var(--cx-surface);border-inline-start:var(--cx-size-1px) solid var(--cx-line);font-variant-numeric:tabular-nums;font-weight:600;}
57
+ .cx-mx-htotal{background:var(--cx-head-bg);align-items:flex-end;padding-bottom:var(--cx-size-6px);font-size:var(--cx-size-12px);color:var(--cx-muted);}
58
+ .cx-mx-total.cx-mx-zero,.cx-mx-fcell.cx-mx-zero{font-weight:400;color:var(--cx-muted);}
59
+ .cx-mx-body{position:relative;width:var(--mx-content-w);}
60
+ .cx-mx-row{position:absolute;top:0;inset-inline-start:0;display:flex;contain:layout style;width:var(--mx-content-w);height:var(--mx-row-h);box-sizing:border-box;border-bottom:var(--cx-size-1px) solid var(--mx-line);}
61
+ .cx-mx-rowhead{position:sticky;inset-inline-start:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-head-w);display:flex;align-items:center;gap:var(--cx-size-6px);
62
+ min-width:0;padding:0 var(--cx-size-10px);background:var(--cx-surface);border-inline-end:var(--cx-size-1px) solid var(--cx-line);white-space:nowrap;overflow:hidden;}
63
+ .cx-mx-member .cx-mx-rowhead{padding-inline-start:var(--cx-size-24px);}
64
+ .cx-mx-label{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}
65
+ .cx-mx-rowhead > .cx-mx-label{flex:none;max-width:100%;}
66
+ .cx-mx-sub{color:var(--cx-muted);font-size:var(--cx-size-12px);overflow:hidden;text-overflow:ellipsis;}
67
+ .cx-mx-heading{background:var(--cx-head-bg);}
68
+ .cx-mx-heading .cx-mx-rowhead,.cx-mx-rolledrow .cx-mx-rowhead{width:auto;min-width:var(--mx-head-w);background:var(--cx-head-bg);font-weight:600;}
69
+ .cx-mx-heading .cx-mx-total,.cx-mx-rolledrow .cx-mx-total{background:var(--cx-head-bg);}
70
+ .cx-mx-toggle{display:inline-flex;align-items:center;gap:var(--cx-size-6px);min-width:0;min-height:var(--cx-size-24px);padding:0;font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
71
+ .cx-mx-toggle::before{content:"";flex:none;width:0;height:0;border-block:var(--cx-size-4px) solid transparent;border-inline-start:var(--cx-size-6px) solid currentColor;transition:transform .12s;}
72
+ .cx-mx-toggle[aria-expanded="true"]::before{transform:rotate(90deg);}
73
+ .cx-mx-toggle:dir(rtl)[aria-expanded="true"]::before{transform:rotate(-90deg);}
74
+ .cx-mx-hcell .cx-mx-toggle{flex-direction:column;}
75
+ .cx-mx-cell{position:absolute;top:0;box-sizing:border-box;width:var(--mx-cell-w);height:100%;contain:strict;display:flex;align-items:center;justify-content:center;gap:var(--cx-size-2px);
76
+ border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-11px);font-variant-numeric:tabular-nums;cursor:pointer;color:var(--cx-muted);}
77
+ .cx-mx-cell.cx-tone-danger{color:var(--cx-tone-danger);}
78
+ .cx-mx-cell.cx-tone-warning{color:var(--cx-tone-warning);}
79
+ .cx-mx-cell.cx-tone-info{color:var(--cx-tone-info);}
80
+ .cx-mx-cell.cx-tone-success{color:var(--cx-tone-success);}
81
+ .cx-mx-cell.cx-toned{color:var(--cx-t);}
82
+ .cx-mx-cell.cx-tone-success:not(.cx-mx-attn){color:var(--cx-quiet);}
83
+ .cx-mx-cell.cx-mx-none{color:var(--mx-none);}
84
+ .cx-mx-cell.cx-mx-attn{background:var(--mx-bg,var(--cx-hover-bg));font-weight:600;}
85
+ .cx-mx-attn.cx-tone-danger{--mx-bg:var(--cx-tone-danger-bg);}
86
+ .cx-mx-attn.cx-tone-warning{--mx-bg:var(--cx-tone-warning-bg);}
87
+ .cx-mx-attn.cx-tone-info{--mx-bg:var(--cx-tone-info-bg);}
88
+ .cx-mx-attn.cx-tone-success{--mx-bg:var(--cx-tone-success-bg);}
89
+ .cx-mx-attn.cx-toned{color:var(--cx-t);--mx-bg:var(--cx-t-bg,color-mix(in srgb,var(--cx-t) 12%,var(--cx-surface)));}
90
+ .cx-host[data-cx-theme="dark"] .cx-mx-attn.cx-tone-danger{--mx-bg:color-mix(in srgb,var(--cx-tone-danger-bg) 62%,var(--cx-surface));}
91
+ @media (prefers-color-scheme:dark){.cx-host[data-cx-theme="auto"] .cx-mx-attn.cx-tone-danger{--mx-bg:color-mix(in srgb,var(--cx-tone-danger-bg) 62%,var(--cx-surface));}}
92
+ .cx-mx-cell.cx-mx-self{cursor:default;background:repeating-linear-gradient(135deg,transparent 0 var(--cx-size-4px),var(--mx-line) var(--cx-size-4px) var(--cx-size-5px));}
93
+ .cx-mx-cell.cx-mx-rolled{box-shadow:inset 0 0 0 var(--cx-size-1px) var(--mx-line);}
94
+ .cx-mx-canvas{position:absolute;top:0;cursor:pointer;}
95
+ .cx-mx-cell.cx-mx-focus{z-index:1;background:transparent;border:0;cursor:pointer;}
96
+ .cx-mx-hover{position:absolute;top:0;z-index:1;box-sizing:border-box;width:var(--mx-cell-w);height:100%;pointer-events:none;box-shadow:inset 0 0 0 var(--cx-size-2px) var(--cx-accent);}
97
+ .cx-mx-gridline{color:var(--mx-line);}
98
+ .cx-mx-symbol{width:var(--cx-size-14px);height:var(--cx-size-14px);flex:none;}
99
+ .cx-mx-swatch .cx-mx-symbol{width:var(--cx-size-13px);height:var(--cx-size-13px);}
100
+ .cx-mx-value{overflow:hidden;white-space:nowrap;}
101
+ .cx-mx-foot{position:sticky;bottom:0;z-index:3;width:var(--mx-content-w);background:var(--cx-head-bg);border-top:var(--cx-size-1px) solid var(--cx-line-strong);}
102
+ .cx-mx-foot.cx-mx-raised{box-shadow:0 calc(var(--cx-size-6px) * -1) var(--cx-size-8px) calc(var(--cx-size-6px) * -1) var(--mx-raised);}
103
+ .cx-mx-frow{height:var(--mx-row-h);}
104
+ .cx-mx-foothead{background:var(--cx-head-bg);font-weight:600;}
105
+ .cx-mx-fcell{position:absolute;top:0;bottom:0;box-sizing:border-box;width:var(--mx-cell-w);contain:strict;display:flex;align-items:center;justify-content:center;
106
+ border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-11px);font-weight:600;font-variant-numeric:tabular-nums;}
107
+ .cx-mx-foot .cx-mx-total{background:var(--cx-head-bg);}
108
+ .cx-matrix :is(.cx-mx-cell,.cx-mx-rowhead,.cx-mx-hcell,.cx-mx-total,.cx-mx-fcell,.cx-mx-corner):focus-visible{outline:var(--cx-size-2px) solid var(--cx-accent);outline-offset:calc(var(--cx-size-2px) * -1);z-index:4;}
109
+ .cx-mx-empty{padding:var(--cx-size-24px);text-align:center;color:var(--cx-muted);border:var(--cx-size-1px) dashed var(--cx-line);border-radius:var(--cx-radius);}
110
+ .cx-mx-tip{position:absolute;z-index:20;box-sizing:border-box;max-width:var(--cx-size-320px);padding:var(--cx-size-8px) var(--cx-size-10px);pointer-events:none;
111
+ background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line-strong);border-radius:var(--cx-radius);font-size:var(--cx-size-13px);
112
+ box-shadow:0 var(--cx-size-4px) var(--cx-size-16px) color-mix(in srgb,var(--cx-shadow-ink) 14%,transparent);}
113
+ .cx-matrix{position:relative;}
114
+ .cx-mx-tiptitle{font-weight:600;margin-bottom:var(--cx-size-4px);}
115
+ .cx-mx-tiplist,.cx-mx-details{display:grid;grid-template-columns:auto 1fr;gap:var(--cx-size-2px) var(--cx-size-10px);margin:0;}
116
+ .cx-mx-tiplist dt,.cx-mx-details dt{color:var(--cx-muted);}
117
+ .cx-mx-tiplist dd,.cx-mx-details dd{margin:0;overflow-wrap:anywhere;}
118
+ .cx-mx-dialog{box-sizing:border-box;width:min(var(--cx-size-420px),calc(100vw - var(--cx-size-32px)));padding:var(--cx-size-16px);color:var(--cx-text);background:var(--cx-surface);
119
+ border:var(--cx-size-1px) solid var(--cx-line-strong);border-radius:var(--cx-radius);}
120
+ .cx-mx-dialog::backdrop{background:color-mix(in srgb,var(--cx-shadow-ink) 35%,transparent);}
121
+ .cx-mx-dialoghead{display:flex;align-items:center;gap:var(--cx-size-10px);margin-bottom:var(--cx-size-12px);}
122
+ .cx-mx-dialogtitle{margin:0;font-size:var(--cx-size-17px);}
123
+ .cx-mx-dialog .cx-mx-button{margin-top:var(--cx-size-16px);}
124
+ .cx-mx-cards{display:grid;align-content:start;gap:var(--cx-size-8px);flex:0 1 auto;min-height:0;max-height:var(--cx-size-100vh);overflow:auto;overscroll-behavior:contain;}
125
+ .cx-mx-cardlist,.cx-mx-cardcells{list-style:none;margin:0;padding:0;display:grid;gap:var(--cx-size-8px);}
126
+ .cx-mx-card{padding:var(--cx-size-10px) var(--cx-size-12px);border:var(--cx-size-1px) solid var(--cx-line);border-radius:var(--cx-radius);background:var(--cx-surface);}
127
+ .cx-mx-cardgroup{padding:var(--cx-size-4px) 0 0;font-size:var(--cx-size-13px);font-weight:600;color:var(--cx-muted);}
128
+ .cx-mx-cardhead{display:flex;align-items:center;justify-content:space-between;gap:var(--cx-size-8px);font-weight:600;}
129
+ .cx-mx-card .cx-mx-total{position:static;width:auto;padding:0;border:0;background:none;}
130
+ .cx-mx-cardcells{gap:var(--cx-size-4px);margin-top:var(--cx-size-6px);}
131
+ .cx-mx-cardcell{display:flex;align-items:center;gap:var(--cx-size-8px);font-size:var(--cx-size-13px);}
132
+ .cx-mx-print{display:none;}
133
+ .cx-mx-phone .cx-mx-input,.cx-mx-phone .cx-mx-button{min-height:var(--cx-size-44px);height:auto;}
134
+ .cx-mx-phone .cx-mx-search{max-width:none;flex-basis:100%;}
135
+ .cx-mx-phone .cx-mx-switch{min-height:var(--cx-size-44px);}
136
+ .cx-mx-phone .cx-mx-rowhead .cx-mx-sub:not(.cx-mx-toggle .cx-mx-sub){display:none;}
137
+ .cx-mx-phone .cx-mx-total{padding:0 var(--cx-size-6px);}
138
+ .cx-mx-phone .cx-mx-summary{margin-inline-start:0;flex-basis:100%;}
139
+ @media print{
140
+ .cx-matrix .cx-mx-bar,.cx-matrix .cx-mx-scroll,.cx-matrix .cx-mx-cards,.cx-matrix .cx-mx-tip{display:none !important;}
141
+ .cx-matrix .cx-mx-print{display:block;}
142
+ .cx-matrix-host{max-height:none !important;}
143
+ .cx-mx-printtable{border-collapse:collapse;font-size:var(--cx-size-11px);}
144
+ .cx-mx-printtable :is(th,td){border:var(--cx-size-1px) solid var(--cx-line);padding:var(--cx-size-2px) var(--cx-size-4px);text-align:center;}
145
+ .cx-mx-printtable th[scope="row"]{text-align:start;}
146
+ .cx-mx-printtable caption{text-align:start;font-weight:600;padding-bottom:var(--cx-size-6px);}
147
+ .cx-mx-printattn{font-weight:700;}
148
+ }
149
+ @media (forced-colors:active){
150
+ .cx-mx-cell.cx-mx-attn{border:var(--cx-size-1px) solid CanvasText;}
151
+ .cx-matrix :is(.cx-mx-cell,.cx-mx-rowhead,.cx-mx-hcell):focus-visible{outline-color:Highlight;}
152
+ }
153
+ @media (prefers-reduced-motion:reduce){.cx-mx-toggle::before{transition:none;}}