@toclocoinc/lattice-grid 1.103.0 → 1.103.1
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 +6 -0
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +4 -4
- package/docs/api/adapters.html +1 -1
- package/docs/api/ai.html +1 -1
- package/docs/api/alarms.html +1 -1
- package/docs/api/calendar.html +1 -1
- package/docs/api/charts.html +1 -1
- package/docs/api/dashboard.html +1 -1
- package/docs/api/data-router.html +1 -1
- package/docs/api/deckgl.html +1 -1
- package/docs/api/designer.html +1 -1
- package/docs/api/form.html +1 -1
- package/docs/api/gantt.html +1 -1
- package/docs/api/geometry.html +1 -1
- package/docs/api/grid.html +2 -2
- package/docs/api/index.html +1 -1
- package/docs/api/kanban.html +1 -1
- package/docs/api/kpi.html +1 -1
- package/docs/api/layout.html +1 -1
- package/docs/api/leaflet.html +1 -1
- package/docs/api/list.html +1 -1
- package/docs/api/mapview.html +1 -1
- package/docs/api/mock-socket.html +1 -1
- package/docs/api/presets.html +1 -1
- package/docs/api/scheduler.html +1 -1
- package/docs/api/shell.html +1 -1
- package/docs/api/tabs.html +1 -1
- package/docs/api/types.html +1 -1
- package/docs/api-detail.html +4 -4
- package/docs/warnings.json +1 -1
- package/lattice-grid.d.ts +1 -1
- package/lattice-grid.esm.min.js +2 -2
- package/lattice-grid.min.cjs +2 -2
- package/lattice-grid.min.js +2 -2
- package/locales/all.d.ts +1 -1
- package/locales/all.esm.min.js +1 -1
- package/locales/all.min.cjs +1 -1
- package/locales/all.min.js +1 -1
- package/locales/ar.d.ts +1 -1
- package/locales/ar.esm.min.js +1 -1
- package/locales/ar.min.cjs +1 -1
- package/locales/ar.min.js +1 -1
- package/locales/cs-CZ.d.ts +1 -1
- package/locales/cs-CZ.esm.min.js +1 -1
- package/locales/cs-CZ.min.cjs +1 -1
- package/locales/cs-CZ.min.js +1 -1
- package/locales/da-DK.d.ts +1 -1
- package/locales/da-DK.esm.min.js +1 -1
- package/locales/da-DK.min.cjs +1 -1
- package/locales/da-DK.min.js +1 -1
- package/locales/de-DE.d.ts +1 -1
- package/locales/de-DE.esm.min.js +1 -1
- package/locales/de-DE.min.cjs +1 -1
- package/locales/de-DE.min.js +1 -1
- package/locales/el-GR.d.ts +1 -1
- package/locales/el-GR.esm.min.js +1 -1
- package/locales/el-GR.min.cjs +1 -1
- package/locales/el-GR.min.js +1 -1
- package/locales/en-US.d.ts +1 -1
- package/locales/en-US.esm.min.js +1 -1
- package/locales/en-US.min.cjs +1 -1
- package/locales/en-US.min.js +1 -1
- package/locales/es-ES.d.ts +1 -1
- package/locales/es-ES.esm.min.js +1 -1
- package/locales/es-ES.min.cjs +1 -1
- package/locales/es-ES.min.js +1 -1
- package/locales/fi-FI.d.ts +1 -1
- package/locales/fi-FI.esm.min.js +1 -1
- package/locales/fi-FI.min.cjs +1 -1
- package/locales/fi-FI.min.js +1 -1
- package/locales/fr-CA.d.ts +1 -1
- package/locales/fr-CA.esm.min.js +1 -1
- package/locales/fr-CA.min.cjs +1 -1
- package/locales/fr-CA.min.js +1 -1
- package/locales/fr-FR.d.ts +1 -1
- package/locales/fr-FR.esm.min.js +1 -1
- package/locales/fr-FR.min.cjs +1 -1
- package/locales/fr-FR.min.js +1 -1
- package/locales/hu-HU.d.ts +1 -1
- package/locales/hu-HU.esm.min.js +1 -1
- package/locales/hu-HU.min.cjs +1 -1
- package/locales/hu-HU.min.js +1 -1
- package/locales/it-IT.d.ts +1 -1
- package/locales/it-IT.esm.min.js +1 -1
- package/locales/it-IT.min.cjs +1 -1
- package/locales/it-IT.min.js +1 -1
- package/locales/ja-JP.d.ts +1 -1
- package/locales/ja-JP.esm.min.js +1 -1
- package/locales/ja-JP.min.cjs +1 -1
- package/locales/ja-JP.min.js +1 -1
- package/locales/nb-NO.d.ts +1 -1
- package/locales/nb-NO.esm.min.js +1 -1
- package/locales/nb-NO.min.cjs +1 -1
- package/locales/nb-NO.min.js +1 -1
- package/locales/nl-NL.d.ts +1 -1
- package/locales/nl-NL.esm.min.js +1 -1
- package/locales/nl-NL.min.cjs +1 -1
- package/locales/nl-NL.min.js +1 -1
- package/locales/pl-PL.d.ts +1 -1
- package/locales/pl-PL.esm.min.js +1 -1
- package/locales/pl-PL.min.cjs +1 -1
- package/locales/pl-PL.min.js +1 -1
- package/locales/pt-BR.d.ts +1 -1
- package/locales/pt-BR.esm.min.js +1 -1
- package/locales/pt-BR.min.cjs +1 -1
- package/locales/pt-BR.min.js +1 -1
- package/locales/ro-RO.d.ts +1 -1
- package/locales/ro-RO.esm.min.js +1 -1
- package/locales/ro-RO.min.cjs +1 -1
- package/locales/ro-RO.min.js +1 -1
- package/locales/sv-SE.d.ts +1 -1
- package/locales/sv-SE.esm.min.js +1 -1
- package/locales/sv-SE.min.cjs +1 -1
- package/locales/sv-SE.min.js +1 -1
- package/locales/uk-UA.d.ts +1 -1
- package/locales/uk-UA.esm.min.js +1 -1
- package/locales/uk-UA.min.cjs +1 -1
- package/locales/uk-UA.min.js +1 -1
- package/modules/ai.d.ts +1 -1
- package/modules/ai.esm.min.js +1 -1
- package/modules/ai.min.cjs +1 -1
- package/modules/ai.min.js +1 -1
- package/modules/alarms.d.ts +1 -1
- package/modules/alarms.esm.min.js +1 -1
- package/modules/alarms.min.cjs +1 -1
- package/modules/alarms.min.js +1 -1
- package/modules/angular.d.ts +1 -1
- package/modules/angular.esm.min.js +1 -1
- package/modules/angular.min.cjs +1 -1
- package/modules/angular.min.js +1 -1
- package/modules/calendar.d.ts +1 -1
- package/modules/calendar.esm.min.js +1 -1
- package/modules/calendar.min.cjs +1 -1
- package/modules/calendar.min.js +1 -1
- package/modules/chart-alluvial.d.ts +1 -1
- package/modules/chart-alluvial.esm.min.js +1 -1
- package/modules/chart-alluvial.min.cjs +1 -1
- package/modules/chart-alluvial.min.js +1 -1
- package/modules/chart-arc.d.ts +1 -1
- package/modules/chart-arc.esm.min.js +1 -1
- package/modules/chart-arc.min.cjs +1 -1
- package/modules/chart-arc.min.js +1 -1
- package/modules/chart-barrace.d.ts +1 -1
- package/modules/chart-barrace.esm.min.js +1 -1
- package/modules/chart-barrace.min.cjs +1 -1
- package/modules/chart-barrace.min.js +1 -1
- package/modules/chart-bubblemap.d.ts +1 -1
- package/modules/chart-bubblemap.esm.min.js +1 -1
- package/modules/chart-bubblemap.min.cjs +1 -1
- package/modules/chart-bubblemap.min.js +1 -1
- package/modules/chart-bump.d.ts +1 -1
- package/modules/chart-bump.esm.min.js +1 -1
- package/modules/chart-bump.min.cjs +1 -1
- package/modules/chart-bump.min.js +1 -1
- package/modules/chart-calendar.d.ts +1 -1
- package/modules/chart-calendar.esm.min.js +1 -1
- package/modules/chart-calendar.min.cjs +1 -1
- package/modules/chart-calendar.min.js +1 -1
- package/modules/chart-choropleth.d.ts +1 -1
- package/modules/chart-choropleth.esm.min.js +1 -1
- package/modules/chart-choropleth.min.cjs +1 -1
- package/modules/chart-choropleth.min.js +1 -1
- package/modules/chart-decomposition.d.ts +1 -1
- package/modules/chart-decomposition.esm.min.js +1 -1
- package/modules/chart-decomposition.min.cjs +1 -1
- package/modules/chart-decomposition.min.js +1 -1
- package/modules/chart-diverging.d.ts +1 -1
- package/modules/chart-diverging.esm.min.js +1 -1
- package/modules/chart-diverging.min.cjs +1 -1
- package/modules/chart-diverging.min.js +1 -1
- package/modules/chart-dumbbell.d.ts +1 -1
- package/modules/chart-dumbbell.esm.min.js +1 -1
- package/modules/chart-dumbbell.min.cjs +1 -1
- package/modules/chart-dumbbell.min.js +1 -1
- package/modules/chart-fan.d.ts +1 -1
- package/modules/chart-fan.esm.min.js +1 -1
- package/modules/chart-fan.min.cjs +1 -1
- package/modules/chart-fan.min.js +1 -1
- package/modules/chart-forcetree.d.ts +1 -1
- package/modules/chart-forcetree.esm.min.js +1 -1
- package/modules/chart-forcetree.min.cjs +1 -1
- package/modules/chart-forcetree.min.js +1 -1
- package/modules/chart-hexbin.d.ts +1 -1
- package/modules/chart-hexbin.esm.min.js +1 -1
- package/modules/chart-hexbin.min.cjs +1 -1
- package/modules/chart-hexbin.min.js +1 -1
- package/modules/chart-hexmap.d.ts +1 -1
- package/modules/chart-hexmap.esm.min.js +1 -1
- package/modules/chart-hexmap.min.cjs +1 -1
- package/modules/chart-hexmap.min.js +1 -1
- package/modules/chart-icicle.d.ts +1 -1
- package/modules/chart-icicle.esm.min.js +1 -1
- package/modules/chart-icicle.min.cjs +1 -1
- package/modules/chart-icicle.min.js +1 -1
- package/modules/chart-markermap.d.ts +1 -1
- package/modules/chart-markermap.esm.min.js +1 -1
- package/modules/chart-markermap.min.cjs +1 -1
- package/modules/chart-markermap.min.js +1 -1
- package/modules/chart-motion.d.ts +1 -1
- package/modules/chart-motion.esm.min.js +1 -1
- package/modules/chart-motion.min.cjs +1 -1
- package/modules/chart-motion.min.js +1 -1
- package/modules/chart-pack.d.ts +1 -1
- package/modules/chart-pack.esm.min.js +1 -1
- package/modules/chart-pack.min.cjs +1 -1
- package/modules/chart-pack.min.js +1 -1
- package/modules/chart-parallel.d.ts +1 -1
- package/modules/chart-parallel.esm.min.js +1 -1
- package/modules/chart-parallel.min.cjs +1 -1
- package/modules/chart-parallel.min.js +1 -1
- package/modules/chart-pictorial.d.ts +1 -1
- package/modules/chart-pictorial.esm.min.js +1 -1
- package/modules/chart-pictorial.min.cjs +1 -1
- package/modules/chart-pictorial.min.js +1 -1
- package/modules/chart-polararea.d.ts +1 -1
- package/modules/chart-polararea.esm.min.js +1 -1
- package/modules/chart-polararea.min.cjs +1 -1
- package/modules/chart-polararea.min.js +1 -1
- package/modules/chart-polarscatter.d.ts +1 -1
- package/modules/chart-polarscatter.esm.min.js +1 -1
- package/modules/chart-polarscatter.min.cjs +1 -1
- package/modules/chart-polarscatter.min.js +1 -1
- package/modules/chart-pyramid.d.ts +1 -1
- package/modules/chart-pyramid.esm.min.js +1 -1
- package/modules/chart-pyramid.min.cjs +1 -1
- package/modules/chart-pyramid.min.js +1 -1
- package/modules/chart-radialbar.d.ts +1 -1
- package/modules/chart-radialbar.esm.min.js +1 -1
- package/modules/chart-radialbar.min.cjs +1 -1
- package/modules/chart-radialbar.min.js +1 -1
- package/modules/chart-ridgeline.d.ts +1 -1
- package/modules/chart-ridgeline.esm.min.js +1 -1
- package/modules/chart-ridgeline.min.cjs +1 -1
- package/modules/chart-ridgeline.min.js +1 -1
- package/modules/chart-roc.d.ts +1 -1
- package/modules/chart-roc.esm.min.js +1 -1
- package/modules/chart-roc.min.cjs +1 -1
- package/modules/chart-roc.min.js +1 -1
- package/modules/chart-scatter3d.d.ts +1 -1
- package/modules/chart-scatter3d.esm.min.js +1 -1
- package/modules/chart-scatter3d.min.cjs +1 -1
- package/modules/chart-scatter3d.min.js +1 -1
- package/modules/chart-serpentine.d.ts +1 -1
- package/modules/chart-serpentine.esm.min.js +1 -1
- package/modules/chart-serpentine.min.cjs +1 -1
- package/modules/chart-serpentine.min.js +1 -1
- package/modules/chart-slope.d.ts +1 -1
- package/modules/chart-slope.esm.min.js +1 -1
- package/modules/chart-slope.min.cjs +1 -1
- package/modules/chart-slope.min.js +1 -1
- package/modules/chart-spiral.d.ts +1 -1
- package/modules/chart-spiral.esm.min.js +1 -1
- package/modules/chart-spiral.min.cjs +1 -1
- package/modules/chart-spiral.min.js +1 -1
- package/modules/chart-splom.d.ts +1 -1
- package/modules/chart-splom.esm.min.js +1 -1
- package/modules/chart-splom.min.cjs +1 -1
- package/modules/chart-splom.min.js +1 -1
- package/modules/chart-tree.d.ts +1 -1
- package/modules/chart-tree.esm.min.js +1 -1
- package/modules/chart-tree.min.cjs +1 -1
- package/modules/chart-tree.min.js +1 -1
- package/modules/chart-venn.d.ts +1 -1
- package/modules/chart-venn.esm.min.js +1 -1
- package/modules/chart-venn.min.cjs +1 -1
- package/modules/chart-venn.min.js +1 -1
- package/modules/chart-voronoi.d.ts +1 -1
- package/modules/chart-voronoi.esm.min.js +1 -1
- package/modules/chart-voronoi.min.cjs +1 -1
- package/modules/chart-voronoi.min.js +1 -1
- package/modules/chart-waffle.d.ts +1 -1
- package/modules/chart-waffle.esm.min.js +1 -1
- package/modules/chart-waffle.min.cjs +1 -1
- package/modules/chart-waffle.min.js +1 -1
- package/modules/chart-wordcloud.d.ts +1 -1
- package/modules/chart-wordcloud.esm.min.js +1 -1
- package/modules/chart-wordcloud.min.cjs +1 -1
- package/modules/chart-wordcloud.min.js +1 -1
- package/modules/charts.d.ts +1 -1
- package/modules/charts.esm.min.js +1 -1
- package/modules/charts.min.cjs +1 -1
- package/modules/charts.min.js +1 -1
- package/modules/dashboard.d.ts +1 -1
- package/modules/dashboard.esm.min.js +1 -1
- package/modules/dashboard.min.cjs +1 -1
- package/modules/dashboard.min.js +1 -1
- package/modules/data-router.d.ts +1 -1
- package/modules/data-router.esm.min.js +1 -1
- package/modules/data-router.min.cjs +1 -1
- package/modules/data-router.min.js +1 -1
- package/modules/deckgl.d.ts +1 -1
- package/modules/deckgl.esm.min.js +1 -1
- package/modules/deckgl.min.cjs +1 -1
- package/modules/deckgl.min.js +1 -1
- package/modules/designer.d.ts +1 -1
- package/modules/designer.esm.min.js +1 -1
- package/modules/designer.min.cjs +1 -1
- package/modules/designer.min.js +1 -1
- package/modules/devtools.d.ts +1 -1
- package/modules/devtools.esm.min.js +1 -1
- package/modules/devtools.min.cjs +1 -1
- package/modules/devtools.min.js +1 -1
- package/modules/dhtmlx-compat.d.ts +1 -1
- package/modules/dhtmlx-compat.esm.min.js +1 -1
- package/modules/dhtmlx-compat.min.cjs +1 -1
- package/modules/dhtmlx-compat.min.js +1 -1
- package/modules/form.d.ts +1 -1
- package/modules/form.esm.min.js +5 -5
- package/modules/form.esm.min.js.map +1 -1
- package/modules/form.min.cjs +5 -5
- package/modules/form.min.js +5 -5
- package/modules/form.min.js.map +1 -1
- package/modules/gantt.d.ts +1 -1
- package/modules/gantt.esm.min.js +1 -1
- package/modules/gantt.min.cjs +1 -1
- package/modules/gantt.min.js +1 -1
- package/modules/geo-europe-nuts.d.ts +1 -1
- package/modules/geo-europe-nuts.esm.min.js +1 -1
- package/modules/geo-europe-nuts.min.cjs +1 -1
- package/modules/geo-europe-nuts.min.js +1 -1
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-uk.min.cjs +1 -1
- package/modules/geo-uk.min.js +1 -1
- package/modules/geo-us-states.d.ts +1 -1
- package/modules/geo-us-states.esm.min.js +1 -1
- package/modules/geo-us-states.min.cjs +1 -1
- package/modules/geo-us-states.min.js +1 -1
- package/modules/geo-world-110m.d.ts +1 -1
- package/modules/geo-world-110m.esm.min.js +1 -1
- package/modules/geo-world-110m.min.cjs +1 -1
- package/modules/geo-world-110m.min.js +1 -1
- package/modules/geo-world-50m.d.ts +1 -1
- package/modules/geo-world-50m.esm.min.js +1 -1
- package/modules/geo-world-50m.min.cjs +1 -1
- package/modules/geo-world-50m.min.js +1 -1
- package/modules/geometry.d.ts +1 -1
- package/modules/geometry.esm.min.js +1 -1
- package/modules/geometry.min.cjs +1 -1
- package/modules/geometry.min.js +1 -1
- package/modules/htmx.d.ts +1 -1
- package/modules/htmx.esm.min.js +2 -2
- package/modules/htmx.min.cjs +2 -2
- package/modules/htmx.min.js +2 -2
- package/modules/kanban.d.ts +1 -1
- package/modules/kanban.esm.min.js +1 -1
- package/modules/kanban.min.cjs +1 -1
- package/modules/kanban.min.js +1 -1
- package/modules/kpi.d.ts +1 -1
- package/modules/kpi.esm.min.js +1 -1
- package/modules/kpi.min.cjs +1 -1
- package/modules/kpi.min.js +1 -1
- package/modules/layout.d.ts +1 -1
- package/modules/layout.esm.min.js +1 -1
- package/modules/layout.min.cjs +1 -1
- package/modules/layout.min.js +1 -1
- package/modules/leaflet.d.ts +1 -1
- package/modules/leaflet.esm.min.js +1 -1
- package/modules/leaflet.min.cjs +1 -1
- package/modules/leaflet.min.js +1 -1
- package/modules/list.d.ts +1 -1
- package/modules/list.esm.min.js +1 -1
- package/modules/list.min.cjs +1 -1
- package/modules/list.min.js +1 -1
- package/modules/mapview.d.ts +1 -1
- package/modules/mapview.esm.min.js +1 -1
- package/modules/mapview.min.cjs +1 -1
- package/modules/mapview.min.js +1 -1
- package/modules/mock-socket.d.ts +1 -1
- package/modules/mock-socket.esm.min.js +1 -1
- package/modules/mock-socket.min.cjs +1 -1
- package/modules/mock-socket.min.js +1 -1
- package/modules/presets.d.ts +1 -1
- package/modules/presets.esm.min.js +1 -1
- package/modules/presets.min.cjs +1 -1
- package/modules/presets.min.js +1 -1
- package/modules/react.d.ts +1 -1
- package/modules/react.esm.min.js +1 -1
- package/modules/react.min.cjs +1 -1
- package/modules/react.min.js +1 -1
- package/modules/scheduler.d.ts +1 -1
- package/modules/scheduler.esm.min.js +1 -1
- package/modules/scheduler.min.cjs +1 -1
- package/modules/scheduler.min.js +1 -1
- package/modules/shell.d.ts +1 -1
- package/modules/shell.esm.min.js +1 -1
- package/modules/shell.min.cjs +1 -1
- package/modules/shell.min.js +1 -1
- package/modules/svelte.d.ts +1 -1
- package/modules/svelte.esm.min.js +1 -1
- package/modules/svelte.min.cjs +1 -1
- package/modules/svelte.min.js +1 -1
- package/modules/tabs.d.ts +1 -1
- package/modules/tabs.esm.min.js +1 -1
- package/modules/tabs.min.cjs +1 -1
- package/modules/tabs.min.js +1 -1
- package/modules/vue.d.ts +1 -1
- package/modules/vue.esm.min.js +1 -1
- package/modules/vue.min.cjs +1 -1
- package/modules/vue.min.js +1 -1
- package/modules/webcomponent.d.ts +1 -1
- package/modules/webcomponent.esm.min.js +2 -2
- package/modules/webcomponent.min.cjs +2 -2
- package/modules/webcomponent.min.js +2 -2
- package/package.json +1 -1
package/modules/form.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.103.
|
|
2
|
+
* Lattice Grid 1.103.1, form module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
6
|
-
(function(
|
|
6
|
+
(function(er){"use strict";var Cr=!0,Vt=Object.create(null),Ut=Object.create(null);function Ne(N,Z){Vt[N]=Z}function Gt(N){var Z=Ut[N];if(Z)return Z;var e=Object.create(null);Ut[N]=e;var R=Vt[N];if(!R)throw new Error("[lattice] missing module: "+N);return R(e,Gt),e}Ne("packages/modules/form/styles.js",function(N,Z){"use strict";Object.defineProperty(N,"NS",{enumerable:!0,get:function(){return e}}),Object.defineProperty(N,"NEVER_STACK_COLS_CONTAINER",{enumerable:!0,get:function(){return R}}),Object.defineProperty(N,"css",{enumerable:!0,get:function(){return q}}),Object.defineProperty(N,"injectStyles",{enumerable:!0,get:function(){return k}}),Object.defineProperty(N,"injectColsBreakpoint",{enumerable:!0,get:function(){return P}});const e="lat-form",R="lat-cols-never",$="data-lattice-form-styles";function q(){return`
|
|
7
7
|
/* The shared top-level layer host (BACKLOG-0002291): select, combo and the
|
|
8
8
|
date picker each reparent their own popup in here while it is open, so an
|
|
9
9
|
ancestor's \`overflow: hidden\` or fixed height never clips it. One host per
|
|
@@ -1458,7 +1458,7 @@
|
|
|
1458
1458
|
.lat-select__value{ display:flex; align-items:center; gap:calc(var(--lattice-space) / 2); }
|
|
1459
1459
|
.lat-select__value[data-placeholder='true']{ display:block; }
|
|
1460
1460
|
.lat-select__label{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
|
|
1461
|
-
`.trim()}function l(p){const I=p&&p.documentElement;if(!I||I.getAttribute(s))return;I.setAttribute(s,"1");const Q=p.createElement("style");Q.textContent=r(),(p.head||p.body||I).appendChild(Q)}function d(p){return/^(https?:|data:image\/|\/)/i.test(p)}function T(p){const I=String(p??"").trim();if(!I)return"";const Q=I.split(/\s+/);return Q.length>=2?(Q[0][0]+Q[1][0]).toUpperCase():I.slice(0,2).toUpperCase()}function U(p){let I=5381;const Q=String(p??"");for(let re=0;re<Q.length;re++)I=(I<<5)+I+Q.charCodeAt(re)>>>0;return I}function z(p){if(p&&p.color!=null&&String(p.color)!=="")return String(p.color);const I=p&&p.label!=null?String(p.label):p&&p.value!=null?String(p.value):"";return`hsl(${U(I)%360}, 62%, 45%)`}function L(p,I){p.style.background=z(I),p.style.color="#fff"}function y(p,I){const Q=x[I];if(!Q)return null;const re=p.createElementNS(o,"svg");re.setAttribute("class","lat-combo__icon"),re.setAttribute("viewBox",Q.viewBox||"0 0 16 16"),re.setAttribute("aria-hidden","true"),re.setAttribute("focusable","false");const me=Q.paint==="stroke";for(const be of Q.paths||[]){const ke=p.createElementNS(o,"path");ke.setAttribute("d",be),me?(ke.setAttribute("fill","none"),ke.setAttribute("stroke","currentColor"),ke.setAttribute("stroke-width","1.5"),ke.setAttribute("stroke-linecap","round"),ke.setAttribute("stroke-linejoin","round")):ke.setAttribute("fill","currentColor"),re.appendChild(ke)}return re}function M(p,I,Q){if(I==null||I==="")return null;let re;if(I.nodeType)re=I.cloneNode(!0),re.setAttribute&&re.setAttribute("aria-hidden","true");else{const me=String(I),be=y(p,me);be?re=be:(re=p.createElement("span"),re.className="lat-combo__icon lat-combo__icon--glyph",re.setAttribute("aria-hidden","true"),re.textContent=me.slice(0,2))}return Q!=null&&String(Q)!==""&&re&&re.style&&(re.style.color=String(Q)),re}function W(p,I){const Q=p.createElement("span");Q.className="lat-combo__avatar",Q.setAttribute("aria-hidden","true");const re=String(I.avatar);if(d(re)){const me=p.createElement("img");return me.className="lat-combo__avatar-img",me.alt="",me.src=re,me.addEventListener("error",()=>{for(;Q.firstChild;)Q.removeChild(Q.firstChild);Q.classList.add("lat-combo__avatar--initials"),Q.textContent=T(I.label),L(Q,I)}),Q.appendChild(me),Q}return Q.classList.add("lat-combo__avatar--initials"),Q.textContent=re.slice(0,2),L(Q,I),Q}const B={r:255,g:255,b:255},ne={r:20,g:24,b:28},Ae=3;function we(p){const I=p.split(/[,/\s]+/).filter(Boolean).map(Number);return I.length<3||I.some(Q=>Number.isNaN(Q))?null:{r:I[0],g:I[1],b:I[2]}}function ce(p,I){const Q=String(I).trim();if(!Q)return null;if(p&&p.createElement)try{const me=p.defaultView;if(me&&me.getComputedStyle){const be=p.createElement("span");be.style.color=Q;const ke=/rgba?\(([^)]+)\)/.exec(me.getComputedStyle(be).color||"");if(ke)return we(ke[1])}}catch{}if(/^#([0-9a-f]{3,8})$/i.test(Q)){let me=Q.slice(1);return(me.length===3||me.length===4)&&(me=me.split("").map(be=>be+be).join("")),{r:parseInt(me.slice(0,2),16),g:parseInt(me.slice(2,4),16),b:parseInt(me.slice(4,6),16)}}const re=/rgba?\(([^)]+)\)/.exec(Q);return re?we(re[1]):null}function A(p){const I=Q=>{const re=Q/255;return re<=.03928?re/12.92:((re+.055)/1.055)**2.4};return .2126*I(p.r)+.7152*I(p.g)+.0722*I(p.b)}function oe(p,I){const Q=A(p),re=A(I),me=Math.max(Q,re),be=Math.min(Q,re);return(me+.05)/(be+.05)}function te(p,I){const Q=ce(p,I);return Q?oe(Q,B)<Ae||oe(Q,ne)<Ae:!0}function E(p,I){const Q=p.createElement("span");Q.className="lat-combo__dot",Q.setAttribute("aria-hidden","true");const re=String(I.dot);return Q.style.background=re,te(p,re)&&Q.setAttribute("data-ring","true"),Q}function F(p,I){const Q=I&&I.dot;if(Q!=null&&Q!=="")return E(p,I);const re=I&&I.icon;if(re!=null&&re!=="")return M(p,re,I.color);const me=I&&I.avatar;return me!=null&&me!==""?W(p,I):null}function w(p,I,Q){if(typeof Q!="function")return null;const re=Q(I);if(re==null||re===!1)return null;if(re.nodeType)return re.cloneNode(!0);const me=p.createElement("span");me.className="lat-combo__template";const be=String(re);return be.includes("<")?me.innerHTML=n(p,be):me.textContent=be,me}function G(p){return p!=null&&typeof p=="object"?p.value:p}function Y(p){return p==null?"":typeof p!="object"?String(p):p.label!=null?String(p.label):p.title!=null?String(p.title):p.value==null?"":String(p.value)}function ie(p){return p==null||typeof p!="object"?null:p.description!=null?String(p.description):p.subtitle!=null?String(p.subtitle):null}function D(p){return ie(p)!=null||p!=null&&typeof p=="object"&&(p.avatar!=null||p.icon!=null)}function J(p){const I=p!=null&&typeof p=="object"?p:{};return{value:G(p),label:Y(p),description:ie(p),avatar:I.avatar,icon:I.icon,color:I.color,dot:I.dot,disabled:I.disabled===!0}}function ae(p){if(Array.isArray(p))return{items:p,total:p.length,hasMore:!1};if(p&&typeof p=="object"){const I=Array.isArray(p.items)?p.items:[];return{items:I,total:typeof p.total=="number"?p.total:I.length,hasMore:p.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function V(p,I){return p===I?!0:p!=null&&I!=null&&String(p)===String(I)}function se(p,I,Q={}){const re=p&&p.defaultView;return re&&re.Event?new re.Event(I,Q):{type:I,bubbles:Q.bubbles!==!1,cancelable:Q.cancelable!==!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function X(p,I={}){const Q=I.doc||p&&p.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;Q&&(C(Q),l(Q),_(Q));const re=typeof I.t=="function"?I.t:q,me=I.multiple===!0,be=me&&["above","below"].includes(I.chipPlacement)?I.chipPlacement:"inside";Q&&be!=="inside"&&u(Q);const ke=typeof I.debounce=="number"&&I.debounce>=0?I.debounce:i,Le=typeof I.pageSize=="number"&&I.pageSize>0?I.pageSize:v,Se=I.selectAll===!0,je=me?Array.isArray(I.value)?I.value:I.value==null?[]:[I.value]:I.value==null?null:I.value,O=Q.createElement("div");O.className="lat-combo",me&&O.setAttribute("data-multiple","true"),be!=="inside"&&O.setAttribute("data-chip-placement",be),I.inForm||(O.setAttribute("data-lattice-standalone","true"),O.setAttribute("data-density",["compact","standard","comfortable"].includes(I.density)?I.density:"standard"));const ee=Q.createElement("div");ee.className="lat-combo__control";const de=Q.createElement("div");de.className="lat-combo__chips";const K=Q.createElement("span");K.className="lat-combo__summary",K.hidden=!0;const pe=Q.createElement("div");pe.className="lat-combo__chip-row",pe.setAttribute("role","group"),pe.hidden=!0;const Ce=be==="inside"?de:pe;typeof I.maxHeight=="number"&&(Ce.style.maxHeight=`${I.maxHeight}px`);const ye=Q.createElement("span");ye.className="lat-combo__value",ye.setAttribute("aria-hidden","true"),ye.hidden=!0;const ve=Q.createElement("input");ve.className="lat-combo__input",ve.type="text",ve.setAttribute("role","combobox"),ve.setAttribute("aria-autocomplete","list"),ve.setAttribute("aria-haspopup","listbox"),me&&ve.setAttribute("aria-multiselectable","true"),I.placeholder!=null&&(ve.placeholder=String(I.placeholder)),I.inForm&&I.ariaLabel!=null&&ve.setAttribute("aria-label",String(I.ariaLabel));const Ie=Q.createElement("button");Ie.type="button",Ie.className="lat-combo__toggle",Ie.setAttribute("aria-label",re("form.combo.toggle")),Ie.setAttribute("aria-haspopup","listbox");const He=b(Q,"chevronDown");He&&Ie.appendChild(He);const Ee=Q.createElement("button");Ee.type="button",Ee.className="lat-combo__clear",Ee.setAttribute("aria-label",re("form.combo.clear")),Ee.hidden=!0;const De=b(Q,"close");De&&Ee.appendChild(De);const ge=!me&&I.clearable===!0,Re=Q.createElement("div");Re.className="lat-combo__popup lat-combo",Re.hidden=!0;const Te=Q.createElement("div");Te.className="lat-combo__list",Te.setAttribute("role","listbox");const Ge=Q.createElement("div");Ge.className="lat-combo__spacer",Te.appendChild(Ge);const Ke=Q.createElement("div");Ke.className="lat-combo__status",Ke.setAttribute("role","status"),Ke.setAttribute("aria-live","polite");const We=Q.createElement("div");We.className="lat-combo__option lat-combo__option--create",We.setAttribute("role","option"),We.hidden=!0,Te.insertBefore(We,Ge);const fe=Q.createElement("div");fe.className="lat-combo__empty",fe.setAttribute("role","presentation"),fe.setAttribute("aria-live","polite"),fe.hidden=!0,Te.insertBefore(fe,Ge),Re.appendChild(Te),Re.appendChild(Ke),ee.appendChild(Re),be!=="inside"?(ee.appendChild(ve),ee.appendChild(Ie),pe.appendChild(de),pe.appendChild(K),be==="above"&&O.appendChild(pe),O.appendChild(ee),be==="below"&&O.appendChild(pe)):(ee.appendChild(de),ee.appendChild(K),ee.appendChild(ye),ee.appendChild(ve),ge&&ee.appendChild(Ee),ee.appendChild(Ie),O.appendChild(ee));const Me=P("lat-combo-lb");Te.id=Me,ve.setAttribute("aria-controls",Me);let he=[],$e=[];const ot=new Map;let Ye=0,Qe=0,pt=!1,rt=!1,ut=!1,ct="",at=!1,tt=-1,dt=null,mt=0,nt=null;const jt=new Map;let bt=Array.isArray(I.options)?I.options:[];const ft=[],lt=[];let gt=0,Ct=0;const Pt=[];let ht=!1,_t=null;function st(ue,Oe,ze){ue.addEventListener(Oe,ze),Pt.push(()=>ue.removeEventListener(Oe,ze))}function it(ue){const Oe=ot.get(String(ue));if(Oe)return Oe;if(ue!=null){for(const ze of ot.values())if(V(ze.value,ue))return ze}return null}function le(ue){const Oe=it(ue);return Oe?Oe.label:ue==null?"":String(ue)}function _e(ue){ue.value!=null&&ot.set(String(ue.value),ue)}function xe(ue){if(typeof I.resolveLabels!="function")return;const Oe=ue.filter(Xe=>Xe!=null&&!it(Xe));if(Oe.length===0)return;const ze=I.resolveLabels(Oe),Fe=Xe=>{if(!(ht||!Array.isArray(Xe))){for(const Je of Xe){const Ue=J(Je);Ue.value!=null&&_e(Ue)}$e=$e.map(Je=>it(Je.value)||Je),yt(),Dt()}};ze&&typeof ze.then=="function"?ze.then(Fe):Fe(ze)}function Pe(){p.dispatchEvent(se(Q,"change",{bubbles:!0}))}function Ze(){return me?$e.map(ue=>ue.value):$e.length?$e[0].value:null}function Ve(ue){let Oe;if(me)Oe=Array.isArray(ue)?ue:ue==null?[]:[ue];else{const Fe=Array.isArray(ue)?ue.length?ue[0]:null:ue;Oe=Fe==null?[]:[Fe]}const ze=Oe.filter(Fe=>Fe!=null&&(Fe!==""||it(Fe)!=null));$e=ze.map(Fe=>it(Fe)||{value:Fe,label:Fe==null?"":String(Fe),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1}),xe(ze),yt(),At(),St()}function Be(){return I.readOnly===!0}function qe(){$e.length!==0&&($e=[],yt(),At(),St(),Lt(),Dt(),Pe())}function xt(ue){const Oe=Q.createElement("span");Oe.className="lat-combo__chip",Oe.dataset.value=String(ue.value);const ze=w(Q,ue,I.selectedTemplate);if(ze){const Fe=Q.createElement("span");Fe.className="lat-combo__chip-label",Fe.appendChild(ze),Oe.appendChild(Fe)}else{const Fe=F(Q,ue);Fe&&Oe.appendChild(Fe);const Xe=Q.createElement("span");Xe.className="lat-combo__chip-label",Xe.textContent=le(ue.value),Oe.appendChild(Xe)}if(!ue.disabled&&!Be()){const Fe=Q.createElement("button");Fe.type="button",Fe.className="lat-combo__chip-remove",Fe.setAttribute("aria-label",re("form.combo.remove",{label:le(ue.value)})),Fe.textContent="×",st(Fe,"click",Je=>{Je.stopPropagation(),It(ue.value)}),Oe.appendChild(Fe)}return Oe}function Lt(){me||(ve.value=$e.length?le($e[0].value):"")}function Dt(){if(me){ye.hidden=!0;return}for(;ye.firstChild;)ye.removeChild(ye.firstChild);if($e.length===0){ye.hidden=!0;return}const ue=$e[0],ze=w(Q,ue,I.selectedTemplate)||F(Q,ue);ze?(ye.appendChild(ze),ye.hidden=!1):ye.hidden=!0}function er(ue){const Oe=re("form.combo.selected",{count:ue});return Oe==="form.combo.selected"?`Selected: ${ue}`:Oe}function yt(){for(;de.firstChild;)de.removeChild(de.firstChild);if(me){for(const ue of $e)de.appendChild(xt(ue));de.hidden=$e.length===0}else de.hidden=!0;be!=="inside"&&(pe.hidden=!me||$e.length===0,pe.setAttribute("aria-label",er($e.length))),Lt(),Dt(),tr()}function tr(){if(!me||$e.length===0){K.hidden=!0;return}const ue=Ce.getBoundingClientRect().bottom;let Oe=0;const ze=[...de.children];for(const Fe of ze)Fe.getBoundingClientRect().top>=ue-1&&(Oe+=1);Oe>0?(K.hidden=!1,K.textContent=re("form.combo.more",{count:Oe})):K.hidden=!0}function It(ue){if(Be())return;const Oe=$e.length;$e=$e.filter(ze=>!V(ze.value,ue)),$e.length!==Oe&&(yt(),At(),St(),Pe())}function Rt(ue){if(Be())return;const Oe=it(ue)||{value:ue,label:ue==null?"":String(ue),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1};if(_e(Oe),me){if($e.some(ze=>V(ze.value,ue)))return;$e=[...$e,Oe]}else{if($e.length&&V($e[0].value,ue))return;$e=[Oe]}yt(),At(),St(),Pe()}function rr(){if(Be())return;const ue=he.filter(Oe=>!Oe.disabled).map(Oe=>({...Oe}));if(!(ue.length===0&&$e.length===0)){for(const Oe of ue)_e(Oe);$e=ue,yt(),At(),St(),Pe()}}function Wt(){return he.length>0&&he.every(ue=>$e.some(Oe=>V(Oe.value,ue.value)))}function At(){const ue=O.querySelector(".lat-combo__select-all");if(!ue)return;const Oe=Wt();ue.setAttribute("aria-selected",Oe?"true":"false"),ue.textContent=re("form.combo.selectAll")}function $t(){at||ht||I.disabled||(at=!0,Re.hidden=!1,ve.setAttribute("aria-expanded","true"),Ie.setAttribute("aria-expanded","true"),_t=a(Re,ee,{aboveClass:f,onOffscreen:vt}),sr(),he.length===0&&I.load&&!rt&&!ut?Ot(0):Nt())}function vt(){at&&(at=!1,Re.hidden=!0,Re.classList.remove(f),_t&&(_t.close(),_t=null),ve.setAttribute("aria-expanded","false"),Ie.setAttribute("aria-expanded","false"),ve.removeAttribute("aria-activedescendant"))}function nr(){ht||(ve.focus(),$t())}function ar(){ve.blur()}function Et(ue){if(tt=ue,!at)return;const Oe=ue===-1?`${We.id}`:`${Me}-opt-${ue}`;ve.setAttribute("aria-activedescendant",Oe)}function Mt(ue){const Oe=We.hidden===!1,ze=Oe?-1:0,Fe=Math.max(ze,he.length-1);if(he.length===0&&!Oe){Et(-1);return}Et(Math.max(ze,Math.min(Fe,tt+ue))),Bt()}function Bt(){if(tt<0)return;const ue=lt[tt]||0,Oe=ue+(ft[tt]||Kt(he[tt]));ue<Ct?Te.scrollTop=ue:Oe>Ct+gt&&(Te.scrollTop=Oe-gt)}function Kt(ue){return D(ue)?52:30}function Zt(ue){return`${Me}-opt-${ue}`}function or(ue,Oe){const ze=Q.createElement("div");ze.className="lat-combo__option",ze.setAttribute("role","option"),ze.id=Zt(Oe);const Fe=$e.some(Ue=>V(Ue.value,ue.value));ze.setAttribute("aria-selected",Fe?"true":"false"),ue.disabled&&ze.setAttribute("aria-disabled","true");const Xe=w(Q,ue,I.optionTemplate);if(Xe)ze.appendChild(Xe);else{const Ue=F(Q,ue);Ue&&ze.appendChild(Ue);const et=Q.createElement("span");et.className="lat-combo__text";const kt=Q.createElement("span");if(kt.className="lat-combo__title",kt.textContent=ue.label,et.appendChild(kt),ue.description!=null){const Ht=Q.createElement("span");Ht.className="lat-combo__subtitle",Ht.textContent=ue.description,et.appendChild(Ht)}ze.appendChild(et)}return st(ze,"click",Ue=>{Ue.stopPropagation(),Qt(Oe)}),ze}function ir(){const ue=I.newOptions&&!Be()&&ct.trim()!=="",Oe=he.some(ze=>V(ze.value,ct)||ze.label===ct);if(!ue||Oe){We.hidden=!0;return}We.hidden=!1,We.id=`${Me}-create`,We.textContent=re("form.combo.create",{query:ct}),tt===-1&&Et(-1)}function lr(){const ue=!rt&&!ut&&(typeof I.load=="function"||bt.length>0);fe.hidden=!ue,ue&&(fe.textContent=re("form.combo.noMatches"))}function Nt(){if(ir(),at&&(gt=Te.clientHeight||gt),he.length===0){for(Ge.style.height="0px";Ge.firstChild;)Ge.removeChild(Ge.firstChild);lr(),We.hidden!==!1&&(tt=-1,ve.removeAttribute("aria-activedescendant")),Tt(),_t&&_t.reposition();return}fe.hidden=!0;let ue=!1;for(let Ue=0;Ue<he.length;Ue++)ft[Ue]==null&&(ft[Ue]=Kt(he[Ue]));lt.length=0,lt[0]=0;for(let Ue=1;Ue<=he.length;Ue++)lt[Ue]=lt[Ue-1]+ft[Ue-1];const Oe=lt[he.length];Ge.style.height=`${Oe}px`;const ze=Ct,Fe=Ct+gt;let Xe=0;for(;Xe<he.length-1&<[Xe+1]<ze;)Xe+=1;let Je=Xe;for(;Je<he.length&<[Je]<Fe;)Je+=1;for(Je=Math.min(he.length,Je+2);Ge.firstChild;)Ge.removeChild(Ge.firstChild);for(let Ue=Xe;Ue<Je;Ue++){const et=or(he[Ue],Ue);et.style.position="absolute",et.style.left="0",et.style.right="0",et.style.top="0",et.style.transform=`translateY(${lt[Ue]}px)`,Ge.appendChild(et)}for(let Ue=Xe;Ue<Je;Ue++){const et=Q.getElementById(Zt(Ue));if(!et)continue;const kt=et.getBoundingClientRect().height;kt>0&&Math.abs(kt-ft[Ue])>.5&&(ft[Ue]=kt,ue=!0)}if(ue){Nt();return}Tt(),_t&&_t.reposition()}function Tt(){for(;Ke.firstChild;)Ke.removeChild(Ke.firstChild);if(rt)Ke.textContent=re("form.combo.loading"),Ke.dataset.state="loading";else if(ut){Ke.textContent=re("form.combo.error"),Ke.dataset.state="error";const ue=Q.createElement("button");ue.type="button",ue.className="lat-combo__retry",ue.textContent=re("form.combo.retry"),st(ue,"click",ze=>{ze.stopPropagation(),Xt()}),Ke.appendChild(ue)}else he.length===0&&!I.load&&bt.length===0?Ke.textContent="":he.length===0?(Ke.textContent=re("form.combo.empty"),Ke.dataset.state="empty"):(Ke.textContent=re("form.combo.results",{count:Qe}),Ke.dataset.state="results")}function St(){const ue=`${Me}-opt-`;for(const Oe of Te.querySelectorAll('.lat-combo__option[role="option"]')){const ze=Oe.id||"";if(!ze.startsWith(ue))continue;const Fe=Number(ze.slice(ue.length));if(Number.isNaN(Fe))continue;const Xe=he[Fe];Xe&&Oe.setAttribute("aria-selected",$e.some(Je=>V(Je.value,Xe.value))?"true":"false")}At(),ge&&(Ee.hidden=$e.length===0||Be())}function sr(){gt=Te.clientHeight||240}function cr(){if(Se&&me){const ue=Q.createElement("div");ue.className="lat-combo__select-all",ue.setAttribute("role","option"),st(ue,"click",ze=>{ze.stopPropagation(),!Be()&&(Wt()?($e=[],yt(),St(),Pe()):rr())}),Re.insertBefore(ue,Te)}}function Ot(ue){if(ht)return;if(typeof I.load!="function"){const Je=ct.trim().toLowerCase(),Ue=bt.map(J).filter(et=>Je===""||et.label.toLowerCase().includes(Je));he=Ue,Qe=Ue.length,pt=!1,Ye=1,ft.length=0,lt.length=0;for(const et of he)_e(et);Nt();return}if(rt)return;rt=!0,ut=!1,mt+=1;const Oe=mt;dt&&dt.abort(),dt=new AbortController;const ze=dt.signal;Tt();let Fe;try{Fe=I.load({search:ct,page:ue,signal:ze,pageSize:Le})}catch{rt=!1,ut=!0,Tt();return}const Xe=Je=>{if(ht||Oe!==mt)return;rt=!1;const Ue=ae(Je),et=Ue.items.map(J);ue===0?(he=et,ft.length=0,lt.length=0,jt.set(ct,{items:et,total:Ue.total,hasMore:Ue.hasMore,nextPage:1})):he=he.concat(et),Qe=typeof Ue.total=="number"?Ue.total:he.length,pt=Ue.hasMore,Ye=ue+1;for(const kt of et)_e(kt);ft.length=he.length,Nt(),Yt()};Fe&&typeof Fe.then=="function"?Fe.then(Xe).catch(Je=>{ht||Oe!==mt||Je&&Je.name==="AbortError"||(rt=!1,ut=!0,Tt())}):Xe(Fe)}function Yt(){if(!pt||rt||!at)return;(lt[he.length]||0)<gt+m&&Ot(Ye)}function Xt(){ht||(nt&&(clearTimeout(nt),nt=null),dt&&dt.abort(),mt+=1,jt.delete(ct),he=[],Qe=0,pt=!1,rt=!1,ut=!1,Ye=0,ft.length=0,lt.length=0,tt=-1,Ot(0))}function ur(ue){if(ht||(bt=Array.isArray(ue)?ue:[],typeof I.load=="function"))return;Ot(0);const Oe=$e.length;$e=$e.filter(ze=>he.some(Fe=>V(Fe.value,ze.value))).map(ze=>it(ze.value)||ze),$e.length!==Oe?(yt(),At(),St(),Pe()):yt()}function dr(){return!me&&$e.length&&ve.value===le($e[0].value)?"":ve.value}function Jt(){me||(Lt(),ct!==""&&Ft())}function fr(){return me?!1:$e.length&&ve.value.trim()===""&&!Be()?(qe(),!0):(Jt(),!1)}function Ft(){ct=dr(),dt&&dt.abort(),mt+=1;const ue=jt.get(ct);if(ue&&typeof I.load=="function"){he=ue.items.map(J),Qe=ue.total,pt=ue.hasMore,Ye=ue.nextPage,rt=!1,ut=!1,ft.length=0,lt.length=0,tt=-1;for(const Oe of he)_e(Oe);Nt(),Yt();return}he=[],Qe=0,pt=!1,rt=!1,ut=!1,Ye=0,ft.length=0,lt.length=0,tt=-1,Ot(0)}function pr(){nt&&clearTimeout(nt),nt=setTimeout(()=>{nt=null,Ft()},ke)}function mr(ue){const Oe=We.hidden===!1,ze=he.length+(Oe?1:0);if(ue.key==="ArrowDown"){if(ue.preventDefault(),$t(),ze===0)return;tt===-1?Et(he.length?0:-1):Mt(1)}else if(ue.key==="ArrowUp"){if(ue.preventDefault(),!at){$t();return}if(tt===-1){he.length&&Et(0);return}Mt(-1)}else if(ue.key==="Home"){if(!at)return;ue.preventDefault(),Et(Oe?-1:0),Bt()}else if(ue.key==="End"){if(!at)return;ue.preventDefault(),Et(he.length-1),Bt()}else if(ue.key==="PageDown"){if(!at)return;ue.preventDefault(),Mt(Math.max(1,Math.floor(Math.max(gt,60)/30)))}else if(ue.key==="PageUp"){if(!at)return;ue.preventDefault(),Mt(-Math.max(1,Math.floor(Math.max(gt,60)/30)))}else if(ue.key==="Enter"){if(!me&&$e.length&&ve.value.trim()===""&&!Be()){ue.preventDefault(),vt(),qe();return}if(!at){$t();return}tt===-1&&Oe?(ue.preventDefault(),br()):tt>=0&&he[tt]&&(ue.preventDefault(),Qt(tt))}else ue.key==="Escape"?(nt&&(clearTimeout(nt),nt=null),at&&(ue.preventDefault(),vt()),Jt()):ue.key==="Backspace"&&me&&ve.value===""&&$e.length?(ue.preventDefault(),It($e[$e.length-1].value)):ue.key==="Tab"&&vt()}function br(){if(!I.newOptions||Be())return;const ue=ct.trim();if(ue==="")return;let Oe;typeof I.newOptions=="object"&&typeof I.newOptions.create=="function"?Oe=I.newOptions.create(ue):Oe={value:ue,label:ue};const ze=J(Oe);_e(ze),Rt(ze.value),vt()}function Qt(ue){if(Be())return;const Oe=he[ue];!Oe||Oe.disabled||(me?($e.some(ze=>V(ze.value,Oe.value))?It(Oe.value):Rt(Oe.value),ve.focus()):(nt&&(clearTimeout(nt),nt=null),Rt(Oe.value),vt(),ve.value=Oe.label,ct!==""&&Ft()))}const gr=()=>{at||(ve.focus(),!me&&$e.length&&ve.select(),$t())},hr=ue=>{ue.stopPropagation(),at?vt():(ve.focus(),$t())},_r=()=>{pr()},vr=ue=>{ue.stopPropagation()},yr=()=>{Ct=Te.scrollTop,Nt(),pt&&!rt&&Te.scrollTop+Te.clientHeight>=Te.scrollHeight-m&&Ot(Ye)},wr=()=>{!me&&$e.length&&ve.select(),p.dispatchEvent(se(Q,"focus"))},xr=()=>{p.dispatchEvent(se(Q,"blur")),nt&&(clearTimeout(nt),nt=null),vt(),fr()},kr=()=>{Be()||(qe(),Lt(),ve.focus())};st(ee,"click",gr),ge&&st(Ee,"click",kr),st(Ie,"click",hr),st(ve,"input",_r),st(ve,"change",vr),st(ve,"keydown",mr),st(ve,"focus",wr),st(ve,"blur",xr),st(Te,"scroll",yr),st(Te,"mousedown",ue=>ue.preventDefault()),cr(),bt.length&&typeof I.load!="function"&&(ct="",Ot(0)),Ve(je);const wt={el:p,root:O,input:ve,getValue:Ze,setValue(ue){return Ve(ue),wt},reload(){return Xt(),wt},setOptions(ue){return ur(ue),wt},clear(){return qe(),wt},open(){return $t(),wt},close(){return vt(),wt},focus(){return nr(),wt},blur(){return ar(),wt},setDisabled(ue){I.disabled=ue,ve.disabled=ue,Ie.disabled=ue,ue&&vt()},setReadOnly(ue){I.readOnly=ue,ve.readOnly=ue,ue?ve.setAttribute("aria-readonly","true"):ve.removeAttribute("aria-readonly"),yt()},destroy(){vt(),ht=!0,nt&&clearTimeout(nt),dt&&dt.abort();for(const ue of Pt.splice(0))ue();for(;O.firstChild;)O.removeChild(O.firstChild)}};return p.appendChild(O),p.__combo=wt,wt}R("combo",{kind:"field",build(p,I){const Q=I.doc.createElement("div"),re=p.props||{},me=X(Q,{load:re.load,options:p.options,multiple:re.multiple,value:p.value,resolveLabels:re.resolveLabels,newOptions:re.newOptions,optionTemplate:re.optionTemplate,selectedTemplate:re.selectedTemplate,selectAll:re.selectAll,debounce:re.debounce,pageSize:re.pageSize,maxHeight:re.maxHeight,chipPlacement:re.chipPlacement,clearable:re.clearable,placeholder:p.placeholder,ariaLabel:p.label,t:I.t,doc:I.doc,inForm:!0});if(I.disposers.push(()=>me.destroy()),Array.isArray(re.dependsOn))for(const be of re.dependsOn){const ke=Se=>{Se.name===be&&(me.clear(),me.reload())},Le=I.emitter.on("change",ke);I.disposers.push(Le)}return Q.focus=()=>me.focus(),Q.blur=()=>me.blur(),Q},read(p){return p.__combo?p.__combo.getValue():null},write(p,I){p.__combo&&p.__combo.setValue(I)},state(p,I){p.__combo&&(p.__combo.setDisabled(I.disabled===!0),p.__combo.setReadOnly(I.readOnly===!0))}})}),Ne("packages/modules/form/extras.js",function(N,Z){"use strict";Object.defineProperty(N,"injectChromeStyles",{enumerable:!0,get:function(){return b}}),Object.defineProperty(N,"buildTooltip",{enumerable:!0,get:function(){return a}}),Object.defineProperty(N,"buildLock",{enumerable:!0,get:function(){return i}}),Object.defineProperty(N,"renderAvatarAddon",{enumerable:!0,get:function(){return m}}),Object.defineProperty(N,"buildAddons",{enumerable:!0,get:function(){return g}}),Object.defineProperty(N,"buildPanel",{enumerable:!0,get:function(){return H}});const R=Z("packages/modules/form/styles.js").NS,q=Z("packages/modules/form/ids.js").nextId,k=Z("packages/modules/form/controls/field-icon.js"),P=k.makeFieldIcon,j=k.injectFieldIconStyles,C=Z("packages/modules/form/controls/combo.js"),S=C.initialsFor,x=C.renderAvatar,h="data-lattice-form-chrome-styles";function n(u){return u==="cols"?`${R}__cols`:u==="items"?`${R}__items`:`${R}__rows`}function c(){return`
|
|
1461
|
+
`.trim()}function l(p){const I=p&&p.documentElement;if(!I||I.getAttribute(s))return;I.setAttribute(s,"1");const Q=p.createElement("style");Q.textContent=r(),(p.head||p.body||I).appendChild(Q)}function d(p){return/^(https?:|data:image\/|\/)/i.test(p)}function T(p){const I=String(p??"").trim();if(!I)return"";const Q=I.split(/\s+/);return Q.length>=2?(Q[0][0]+Q[1][0]).toUpperCase():I.slice(0,2).toUpperCase()}function U(p){let I=5381;const Q=String(p??"");for(let re=0;re<Q.length;re++)I=(I<<5)+I+Q.charCodeAt(re)>>>0;return I}function z(p){if(p&&p.color!=null&&String(p.color)!=="")return String(p.color);const I=p&&p.label!=null?String(p.label):p&&p.value!=null?String(p.value):"";return`hsl(${U(I)%360}, 62%, 45%)`}function L(p,I){p.style.background=z(I),p.style.color="#fff"}function y(p,I){const Q=x[I];if(!Q)return null;const re=p.createElementNS(o,"svg");re.setAttribute("class","lat-combo__icon"),re.setAttribute("viewBox",Q.viewBox||"0 0 16 16"),re.setAttribute("aria-hidden","true"),re.setAttribute("focusable","false");const me=Q.paint==="stroke";for(const be of Q.paths||[]){const ke=p.createElementNS(o,"path");ke.setAttribute("d",be),me?(ke.setAttribute("fill","none"),ke.setAttribute("stroke","currentColor"),ke.setAttribute("stroke-width","1.5"),ke.setAttribute("stroke-linecap","round"),ke.setAttribute("stroke-linejoin","round")):ke.setAttribute("fill","currentColor"),re.appendChild(ke)}return re}function M(p,I,Q){if(I==null||I==="")return null;let re;if(I.nodeType)re=I.cloneNode(!0),re.setAttribute&&re.setAttribute("aria-hidden","true");else{const me=String(I),be=y(p,me);be?re=be:(re=p.createElement("span"),re.className="lat-combo__icon lat-combo__icon--glyph",re.setAttribute("aria-hidden","true"),re.textContent=me.slice(0,2))}return Q!=null&&String(Q)!==""&&re&&re.style&&(re.style.color=String(Q)),re}function W(p,I){const Q=p.createElement("span");Q.className="lat-combo__avatar",Q.setAttribute("aria-hidden","true");const re=String(I.avatar);if(d(re)){const me=p.createElement("img");return me.className="lat-combo__avatar-img",me.alt="",me.src=re,me.addEventListener("error",()=>{for(;Q.firstChild;)Q.removeChild(Q.firstChild);Q.classList.add("lat-combo__avatar--initials"),Q.textContent=T(I.label),L(Q,I)}),Q.appendChild(me),Q}return Q.classList.add("lat-combo__avatar--initials"),Q.textContent=re.slice(0,2),L(Q,I),Q}const B={r:255,g:255,b:255},ne={r:20,g:24,b:28},Ae=3;function we(p){const I=p.split(/[,/\s]+/).filter(Boolean).map(Number);return I.length<3||I.some(Q=>Number.isNaN(Q))?null:{r:I[0],g:I[1],b:I[2]}}function ce(p,I){const Q=String(I).trim();if(!Q)return null;if(p&&p.createElement)try{const me=p.defaultView;if(me&&me.getComputedStyle){const be=p.createElement("span");be.style.color=Q;const ke=/rgba?\(([^)]+)\)/.exec(me.getComputedStyle(be).color||"");if(ke)return we(ke[1])}}catch{}if(/^#([0-9a-f]{3,8})$/i.test(Q)){let me=Q.slice(1);return(me.length===3||me.length===4)&&(me=me.split("").map(be=>be+be).join("")),{r:parseInt(me.slice(0,2),16),g:parseInt(me.slice(2,4),16),b:parseInt(me.slice(4,6),16)}}const re=/rgba?\(([^)]+)\)/.exec(Q);return re?we(re[1]):null}function A(p){const I=Q=>{const re=Q/255;return re<=.03928?re/12.92:((re+.055)/1.055)**2.4};return .2126*I(p.r)+.7152*I(p.g)+.0722*I(p.b)}function oe(p,I){const Q=A(p),re=A(I),me=Math.max(Q,re),be=Math.min(Q,re);return(me+.05)/(be+.05)}function te(p,I){const Q=ce(p,I);return Q?oe(Q,B)<Ae||oe(Q,ne)<Ae:!0}function E(p,I){const Q=p.createElement("span");Q.className="lat-combo__dot",Q.setAttribute("aria-hidden","true");const re=String(I.dot);return Q.style.background=re,te(p,re)&&Q.setAttribute("data-ring","true"),Q}function F(p,I){const Q=I&&I.dot;if(Q!=null&&Q!=="")return E(p,I);const re=I&&I.icon;if(re!=null&&re!=="")return M(p,re,I.color);const me=I&&I.avatar;return me!=null&&me!==""?W(p,I):null}function w(p,I,Q){if(typeof Q!="function")return null;const re=Q(I);if(re==null||re===!1)return null;if(re.nodeType)return re.cloneNode(!0);const me=p.createElement("span");me.className="lat-combo__template";const be=String(re);return be.includes("<")?me.innerHTML=n(p,be):me.textContent=be,me}function G(p){return p!=null&&typeof p=="object"?p.value:p}function Y(p){return p==null?"":typeof p!="object"?String(p):p.label!=null?String(p.label):p.title!=null?String(p.title):p.value==null?"":String(p.value)}function ie(p){return p==null||typeof p!="object"?null:p.description!=null?String(p.description):p.subtitle!=null?String(p.subtitle):null}function D(p){return ie(p)!=null||p!=null&&typeof p=="object"&&(p.avatar!=null||p.icon!=null)}function J(p){const I=p!=null&&typeof p=="object"?p:{};return{value:G(p),label:Y(p),description:ie(p),avatar:I.avatar,icon:I.icon,color:I.color,dot:I.dot,disabled:I.disabled===!0}}function ae(p){if(Array.isArray(p))return{items:p,total:p.length,hasMore:!1};if(p&&typeof p=="object"){const I=Array.isArray(p.items)?p.items:[];return{items:I,total:typeof p.total=="number"?p.total:I.length,hasMore:p.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function V(p,I){return p===I?!0:p!=null&&I!=null&&String(p)===String(I)}function se(p,I,Q={}){const re=p&&p.defaultView;return re&&re.Event?new re.Event(I,Q):{type:I,bubbles:Q.bubbles!==!1,cancelable:Q.cancelable!==!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function X(p,I={}){const Q=I.doc||p&&p.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;Q&&(C(Q),l(Q),_(Q));const re=typeof I.t=="function"?I.t:q,me=I.multiple===!0,be=me&&["above","below"].includes(I.chipPlacement)?I.chipPlacement:"inside";Q&&be!=="inside"&&u(Q);const ke=typeof I.debounce=="number"&&I.debounce>=0?I.debounce:i,Le=typeof I.pageSize=="number"&&I.pageSize>0?I.pageSize:v,Se=I.selectAll===!0,je=me?Array.isArray(I.value)?I.value:I.value==null?[]:[I.value]:I.value==null?null:I.value,O=Q.createElement("div");O.className="lat-combo",me&&O.setAttribute("data-multiple","true"),be!=="inside"&&O.setAttribute("data-chip-placement",be),I.inForm||(O.setAttribute("data-lattice-standalone","true"),O.setAttribute("data-density",["compact","standard","comfortable"].includes(I.density)?I.density:"standard"));const ee=Q.createElement("div");ee.className="lat-combo__control";const de=Q.createElement("div");de.className="lat-combo__chips";const K=Q.createElement("span");K.className="lat-combo__summary",K.hidden=!0;const pe=Q.createElement("div");pe.className="lat-combo__chip-row",pe.setAttribute("role","group"),pe.hidden=!0;const Ce=be==="inside"?de:pe;typeof I.maxHeight=="number"&&(Ce.style.maxHeight=`${I.maxHeight}px`);const ye=Q.createElement("span");ye.className="lat-combo__value",ye.setAttribute("aria-hidden","true"),ye.hidden=!0;const ve=Q.createElement("input");ve.className="lat-combo__input",ve.type="text",ve.setAttribute("role","combobox"),ve.setAttribute("aria-autocomplete","list"),ve.setAttribute("aria-haspopup","listbox"),me&&ve.setAttribute("aria-multiselectable","true"),I.placeholder!=null&&(ve.placeholder=String(I.placeholder)),I.inForm&&I.ariaLabel!=null&&ve.setAttribute("aria-label",String(I.ariaLabel));const Ie=Q.createElement("button");Ie.type="button",Ie.className="lat-combo__toggle",Ie.setAttribute("aria-label",re("form.combo.toggle")),Ie.setAttribute("aria-haspopup","listbox");const He=b(Q,"chevronDown");He&&Ie.appendChild(He);const Ee=Q.createElement("button");Ee.type="button",Ee.className="lat-combo__clear",Ee.setAttribute("aria-label",re("form.combo.clear")),Ee.hidden=!0;const De=b(Q,"close");De&&Ee.appendChild(De);const ge=!me&&I.clearable===!0,Re=Q.createElement("div");Re.className="lat-combo__popup lat-combo",Re.hidden=!0;const Te=Q.createElement("div");Te.className="lat-combo__list",Te.setAttribute("role","listbox");const Ge=Q.createElement("div");Ge.className="lat-combo__spacer",Te.appendChild(Ge);const Ke=Q.createElement("div");Ke.className="lat-combo__status",Ke.setAttribute("role","status"),Ke.setAttribute("aria-live","polite");const We=Q.createElement("div");We.className="lat-combo__option lat-combo__option--create",We.setAttribute("role","option"),We.hidden=!0,Te.insertBefore(We,Ge);const fe=Q.createElement("div");fe.className="lat-combo__empty",fe.setAttribute("role","presentation"),fe.setAttribute("aria-live","polite"),fe.hidden=!0,Te.insertBefore(fe,Ge),Re.appendChild(Te),Re.appendChild(Ke),ee.appendChild(Re),be!=="inside"?(ee.appendChild(ve),ee.appendChild(Ie),pe.appendChild(de),pe.appendChild(K),be==="above"&&O.appendChild(pe),O.appendChild(ee),be==="below"&&O.appendChild(pe)):(ee.appendChild(de),ee.appendChild(K),ee.appendChild(ye),ee.appendChild(ve),ge&&ee.appendChild(Ee),ee.appendChild(Ie),O.appendChild(ee));const Me=P("lat-combo-lb");Te.id=Me,ve.setAttribute("aria-controls",Me);let he=[],$e=[];const ot=new Map;let Ye=0,Qe=0,pt=!1,rt=!1,ut=!1,ct="",at=!1,tt=-1,dt=null,mt=0,nt=null;const jt=new Map;let bt=Array.isArray(I.options)?I.options:[];const ft=[],st=[];let gt=0,Ct=0;const Pt=[];let ht=!1,_t=null;function it(ue,Oe,ze){ue.addEventListener(Oe,ze),Pt.push(()=>ue.removeEventListener(Oe,ze))}function lt(ue){const Oe=ot.get(String(ue));if(Oe)return Oe;if(ue!=null){for(const ze of ot.values())if(V(ze.value,ue))return ze}return null}function le(ue){const Oe=lt(ue);return Oe?Oe.label:ue==null?"":String(ue)}function _e(ue){ue.value!=null&&ot.set(String(ue.value),ue)}function xe(ue){if(typeof I.resolveLabels!="function")return;const Oe=ue.filter(Xe=>Xe!=null&&!lt(Xe));if(Oe.length===0)return;const ze=I.resolveLabels(Oe),Fe=Xe=>{if(!(ht||!Array.isArray(Xe))){for(const Je of Xe){const Ue=J(Je);Ue.value!=null&&_e(Ue)}$e=$e.map(Je=>lt(Je.value)||Je),yt(),Dt()}};ze&&typeof ze.then=="function"?ze.then(Fe):Fe(ze)}function Pe(){p.dispatchEvent(se(Q,"change",{bubbles:!0}))}function Ze(){return me?$e.map(ue=>ue.value):$e.length?$e[0].value:null}function Ve(ue){let Oe;if(me)Oe=Array.isArray(ue)?ue:ue==null?[]:[ue];else{const Fe=Array.isArray(ue)?ue.length?ue[0]:null:ue;Oe=Fe==null?[]:[Fe]}const ze=Oe.filter(Fe=>Fe!=null&&(Fe!==""||lt(Fe)!=null));$e=ze.map(Fe=>lt(Fe)||{value:Fe,label:Fe==null?"":String(Fe),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1}),xe(ze),yt(),At(),St()}function Be(){return I.readOnly===!0}function qe(){$e.length!==0&&($e=[],yt(),At(),St(),Lt(),Dt(),Pe())}function xt(ue){const Oe=Q.createElement("span");Oe.className="lat-combo__chip",Oe.dataset.value=String(ue.value);const ze=w(Q,ue,I.selectedTemplate);if(ze){const Fe=Q.createElement("span");Fe.className="lat-combo__chip-label",Fe.appendChild(ze),Oe.appendChild(Fe)}else{const Fe=F(Q,ue);Fe&&Oe.appendChild(Fe);const Xe=Q.createElement("span");Xe.className="lat-combo__chip-label",Xe.textContent=le(ue.value),Oe.appendChild(Xe)}if(!ue.disabled&&!Be()){const Fe=Q.createElement("button");Fe.type="button",Fe.className="lat-combo__chip-remove",Fe.setAttribute("aria-label",re("form.combo.remove",{label:le(ue.value)})),Fe.textContent="×",it(Fe,"click",Je=>{Je.stopPropagation(),It(ue.value)}),Oe.appendChild(Fe)}return Oe}function Lt(){me||(ve.value=$e.length?le($e[0].value):"")}function Dt(){if(me){ye.hidden=!0;return}for(;ye.firstChild;)ye.removeChild(ye.firstChild);if($e.length===0){ye.hidden=!0;return}const ue=$e[0],ze=w(Q,ue,I.selectedTemplate)||F(Q,ue);ze?(ye.appendChild(ze),ye.hidden=!1):ye.hidden=!0}function tr(ue){const Oe=re("form.combo.selected",{count:ue});return Oe==="form.combo.selected"?`Selected: ${ue}`:Oe}function yt(){for(;de.firstChild;)de.removeChild(de.firstChild);if(me){for(const ue of $e)de.appendChild(xt(ue));de.hidden=$e.length===0}else de.hidden=!0;be!=="inside"&&(pe.hidden=!me||$e.length===0,pe.setAttribute("aria-label",tr($e.length))),Lt(),Dt(),rr()}function rr(){if(!me||$e.length===0){K.hidden=!0;return}const ue=Ce.getBoundingClientRect().bottom;let Oe=0;const ze=[...de.children];for(const Fe of ze)Fe.getBoundingClientRect().top>=ue-1&&(Oe+=1);Oe>0?(K.hidden=!1,K.textContent=re("form.combo.more",{count:Oe})):K.hidden=!0}function It(ue){if(Be())return;const Oe=$e.length;$e=$e.filter(ze=>!V(ze.value,ue)),$e.length!==Oe&&(yt(),At(),St(),Pe())}function Rt(ue){if(Be())return;const Oe=lt(ue)||{value:ue,label:ue==null?"":String(ue),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1};if(_e(Oe),me){if($e.some(ze=>V(ze.value,ue)))return;$e=[...$e,Oe]}else{if($e.length&&V($e[0].value,ue))return;$e=[Oe]}yt(),At(),St(),Pe()}function nr(){if(Be())return;const ue=he.filter(Oe=>!Oe.disabled).map(Oe=>({...Oe}));if(!(ue.length===0&&$e.length===0)){for(const Oe of ue)_e(Oe);$e=ue,yt(),At(),St(),Pe()}}function Wt(){return he.length>0&&he.every(ue=>$e.some(Oe=>V(Oe.value,ue.value)))}function At(){const ue=O.querySelector(".lat-combo__select-all");if(!ue)return;const Oe=Wt();ue.setAttribute("aria-selected",Oe?"true":"false"),ue.textContent=re("form.combo.selectAll")}function $t(){at||ht||I.disabled||(at=!0,Re.hidden=!1,ve.setAttribute("aria-expanded","true"),Ie.setAttribute("aria-expanded","true"),_t=a(Re,ee,{aboveClass:f,onOffscreen:vt}),cr(),he.length===0&&I.load&&!rt&&!ut?Ot(0):Nt())}function vt(){at&&(at=!1,Re.hidden=!0,Re.classList.remove(f),_t&&(_t.close(),_t=null),ve.setAttribute("aria-expanded","false"),Ie.setAttribute("aria-expanded","false"),ve.removeAttribute("aria-activedescendant"))}function ar(){ht||(ve.focus(),$t())}function or(){ve.blur()}function Et(ue){if(tt=ue,!at)return;const Oe=ue===-1?`${We.id}`:`${Me}-opt-${ue}`;ve.setAttribute("aria-activedescendant",Oe)}function Mt(ue){const Oe=We.hidden===!1,ze=Oe?-1:0,Fe=Math.max(ze,he.length-1);if(he.length===0&&!Oe){Et(-1);return}Et(Math.max(ze,Math.min(Fe,tt+ue))),Bt()}function Bt(){if(tt<0)return;const ue=st[tt]||0,Oe=ue+(ft[tt]||Kt(he[tt]));ue<Ct?Te.scrollTop=ue:Oe>Ct+gt&&(Te.scrollTop=Oe-gt)}function Kt(ue){return D(ue)?52:30}function Zt(ue){return`${Me}-opt-${ue}`}function ir(ue,Oe){const ze=Q.createElement("div");ze.className="lat-combo__option",ze.setAttribute("role","option"),ze.id=Zt(Oe);const Fe=$e.some(Ue=>V(Ue.value,ue.value));ze.setAttribute("aria-selected",Fe?"true":"false"),ue.disabled&&ze.setAttribute("aria-disabled","true");const Xe=w(Q,ue,I.optionTemplate);if(Xe)ze.appendChild(Xe);else{const Ue=F(Q,ue);Ue&&ze.appendChild(Ue);const et=Q.createElement("span");et.className="lat-combo__text";const kt=Q.createElement("span");if(kt.className="lat-combo__title",kt.textContent=ue.label,et.appendChild(kt),ue.description!=null){const Ht=Q.createElement("span");Ht.className="lat-combo__subtitle",Ht.textContent=ue.description,et.appendChild(Ht)}ze.appendChild(et)}return it(ze,"click",Ue=>{Ue.stopPropagation(),qt(Oe)}),ze}function lr(){const ue=I.newOptions&&!Be()&&ct.trim()!=="",Oe=he.some(ze=>V(ze.value,ct)||ze.label===ct);if(!ue||Oe){We.hidden=!0;return}We.hidden=!1,We.id=`${Me}-create`,We.textContent=re("form.combo.create",{query:ct}),tt===-1&&Et(-1)}function sr(){const ue=!rt&&!ut&&(typeof I.load=="function"||bt.length>0);fe.hidden=!ue,ue&&(fe.textContent=re("form.combo.noMatches"))}function Nt(){if(lr(),at&&(gt=Te.clientHeight||gt),he.length===0){for(Ge.style.height="0px";Ge.firstChild;)Ge.removeChild(Ge.firstChild);sr(),We.hidden!==!1&&(tt=-1,ve.removeAttribute("aria-activedescendant")),Tt(),_t&&_t.reposition();return}fe.hidden=!0;let ue=!1;for(let Ue=0;Ue<he.length;Ue++)ft[Ue]==null&&(ft[Ue]=Kt(he[Ue]));st.length=0,st[0]=0;for(let Ue=1;Ue<=he.length;Ue++)st[Ue]=st[Ue-1]+ft[Ue-1];const Oe=st[he.length];Ge.style.height=`${Oe}px`;const ze=Ct,Fe=Ct+gt;let Xe=0;for(;Xe<he.length-1&&st[Xe+1]<ze;)Xe+=1;let Je=Xe;for(;Je<he.length&&st[Je]<Fe;)Je+=1;for(Je=Math.min(he.length,Je+2);Ge.firstChild;)Ge.removeChild(Ge.firstChild);for(let Ue=Xe;Ue<Je;Ue++){const et=ir(he[Ue],Ue);et.style.position="absolute",et.style.left="0",et.style.right="0",et.style.top="0",et.style.transform=`translateY(${st[Ue]}px)`,Ge.appendChild(et)}for(let Ue=Xe;Ue<Je;Ue++){const et=Q.getElementById(Zt(Ue));if(!et)continue;const kt=et.getBoundingClientRect().height;kt>0&&Math.abs(kt-ft[Ue])>.5&&(ft[Ue]=kt,ue=!0)}if(ue){Nt();return}Tt(),_t&&_t.reposition()}function Tt(){for(;Ke.firstChild;)Ke.removeChild(Ke.firstChild);if(rt)Ke.textContent=re("form.combo.loading"),Ke.dataset.state="loading";else if(ut){Ke.textContent=re("form.combo.error"),Ke.dataset.state="error";const ue=Q.createElement("button");ue.type="button",ue.className="lat-combo__retry",ue.textContent=re("form.combo.retry"),it(ue,"click",ze=>{ze.stopPropagation(),Xt()}),Ke.appendChild(ue)}else he.length===0&&!I.load&&bt.length===0?Ke.textContent="":he.length===0?(Ke.textContent=re("form.combo.empty"),Ke.dataset.state="empty"):(Ke.textContent=re("form.combo.results",{count:Qe}),Ke.dataset.state="results")}function St(){const ue=`${Me}-opt-`;for(const Oe of Te.querySelectorAll('.lat-combo__option[role="option"]')){const ze=Oe.id||"";if(!ze.startsWith(ue))continue;const Fe=Number(ze.slice(ue.length));if(Number.isNaN(Fe))continue;const Xe=he[Fe];Xe&&Oe.setAttribute("aria-selected",$e.some(Je=>V(Je.value,Xe.value))?"true":"false")}At(),ge&&(Ee.hidden=$e.length===0||Be())}function cr(){gt=Te.clientHeight||240}function ur(){if(Se&&me){const ue=Q.createElement("div");ue.className="lat-combo__select-all",ue.setAttribute("role","option"),it(ue,"click",ze=>{ze.stopPropagation(),!Be()&&(Wt()?($e=[],yt(),St(),Pe()):nr())}),Re.insertBefore(ue,Te)}}function Ot(ue){if(ht)return;if(typeof I.load!="function"){const Je=ct.trim().toLowerCase(),Ue=bt.map(J).filter(et=>Je===""||et.label.toLowerCase().includes(Je));he=Ue,Qe=Ue.length,pt=!1,Ye=1,ft.length=0,st.length=0;for(const et of he)_e(et);Nt();return}if(rt)return;rt=!0,ut=!1,mt+=1;const Oe=mt;dt&&dt.abort(),dt=new AbortController;const ze=dt.signal;Tt();let Fe;try{Fe=I.load({search:ct,page:ue,signal:ze,pageSize:Le})}catch{rt=!1,ut=!0,Tt();return}const Xe=Je=>{if(ht||Oe!==mt)return;rt=!1;const Ue=ae(Je),et=Ue.items.map(J);ue===0?(he=et,ft.length=0,st.length=0,jt.set(ct,{items:et,total:Ue.total,hasMore:Ue.hasMore,nextPage:1})):he=he.concat(et),Qe=typeof Ue.total=="number"?Ue.total:he.length,pt=Ue.hasMore,Ye=ue+1;for(const kt of et)_e(kt);ft.length=he.length,Nt(),Yt()};Fe&&typeof Fe.then=="function"?Fe.then(Xe).catch(Je=>{ht||Oe!==mt||Je&&Je.name==="AbortError"||(rt=!1,ut=!0,Tt())}):Xe(Fe)}function Yt(){if(!pt||rt||!at)return;(st[he.length]||0)<gt+m&&Ot(Ye)}function Xt(){ht||(nt&&(clearTimeout(nt),nt=null),dt&&dt.abort(),mt+=1,jt.delete(ct),he=[],Qe=0,pt=!1,rt=!1,ut=!1,Ye=0,ft.length=0,st.length=0,tt=-1,Ot(0))}function dr(ue){if(ht||(bt=Array.isArray(ue)?ue:[],typeof I.load=="function"))return;Ot(0);const Oe=$e.length;$e=$e.filter(ze=>he.some(Fe=>V(Fe.value,ze.value))).map(ze=>lt(ze.value)||ze),$e.length!==Oe?(yt(),At(),St(),Pe()):yt()}function fr(){return!me&&$e.length&&ve.value===le($e[0].value)?"":ve.value}function Jt(){me||(Lt(),ct!==""&&Ft())}function pr(){return me?!1:$e.length&&ve.value.trim()===""&&!Be()?(qe(),!0):(Jt(),!1)}function Ft(){ct=fr(),dt&&dt.abort(),mt+=1;const ue=jt.get(ct);if(ue&&typeof I.load=="function"){he=ue.items.map(J),Qe=ue.total,pt=ue.hasMore,Ye=ue.nextPage,rt=!1,ut=!1,ft.length=0,st.length=0,tt=-1;for(const Oe of he)_e(Oe);Nt(),Yt();return}he=[],Qe=0,pt=!1,rt=!1,ut=!1,Ye=0,ft.length=0,st.length=0,tt=-1,Ot(0)}function mr(){nt&&clearTimeout(nt),nt=setTimeout(()=>{nt=null,Ft()},ke)}function br(ue){const Oe=We.hidden===!1,ze=he.length+(Oe?1:0);if(ue.key==="ArrowDown"){if(ue.preventDefault(),$t(),ze===0)return;tt===-1?Et(he.length?0:-1):Mt(1)}else if(ue.key==="ArrowUp"){if(ue.preventDefault(),!at){$t();return}if(tt===-1){he.length&&Et(0);return}Mt(-1)}else if(ue.key==="Home"){if(!at)return;ue.preventDefault(),Et(Oe?-1:0),Bt()}else if(ue.key==="End"){if(!at)return;ue.preventDefault(),Et(he.length-1),Bt()}else if(ue.key==="PageDown"){if(!at)return;ue.preventDefault(),Mt(Math.max(1,Math.floor(Math.max(gt,60)/30)))}else if(ue.key==="PageUp"){if(!at)return;ue.preventDefault(),Mt(-Math.max(1,Math.floor(Math.max(gt,60)/30)))}else if(ue.key==="Enter"){if(!me&&$e.length&&ve.value.trim()===""&&!Be()){ue.preventDefault(),vt(),qe();return}if(!at){$t();return}tt===-1&&Oe?(ue.preventDefault(),Qt()):tt>=0&&he[tt]&&(ue.preventDefault(),qt(tt))}else ue.key==="Escape"?(nt&&(clearTimeout(nt),nt=null),at&&(ue.preventDefault(),vt()),Jt()):ue.key==="Backspace"&&me&&ve.value===""&&$e.length?(ue.preventDefault(),It($e[$e.length-1].value)):ue.key==="Tab"&&vt()}function Qt(){if(!I.newOptions||Be())return;const ue=ct.trim();if(ue==="")return;let Oe;typeof I.newOptions=="object"&&typeof I.newOptions.create=="function"?Oe=I.newOptions.create(ue):Oe={value:ue,label:ue};const ze=J(Oe);_e(ze),Rt(ze.value),vt()}function qt(ue){if(Be())return;const Oe=he[ue];!Oe||Oe.disabled||(me?($e.some(ze=>V(ze.value,Oe.value))?It(Oe.value):Rt(Oe.value),ve.focus()):(nt&&(clearTimeout(nt),nt=null),Rt(Oe.value),vt(),ve.value=Oe.label,ct!==""&&Ft()))}const gr=()=>{at||(ve.focus(),!me&&$e.length&&ve.select(),$t())},hr=ue=>{ue.stopPropagation(),at?vt():(ve.focus(),$t())},_r=()=>{mr()},vr=ue=>{ue.stopPropagation()},yr=()=>{Ct=Te.scrollTop,Nt(),pt&&!rt&&Te.scrollTop+Te.clientHeight>=Te.scrollHeight-m&&Ot(Ye)},wr=()=>{!me&&$e.length&&ve.select(),p.dispatchEvent(se(Q,"focus"))},xr=()=>{p.dispatchEvent(se(Q,"blur")),nt&&(clearTimeout(nt),nt=null),vt(),pr()},kr=()=>{Be()||(qe(),Lt(),ve.focus())};it(ee,"click",gr),ge&&it(Ee,"click",kr),it(Ie,"click",hr),it(ve,"input",_r),it(ve,"change",vr),it(ve,"keydown",br),it(ve,"focus",wr),it(ve,"blur",xr),it(Te,"scroll",yr),it(Te,"mousedown",ue=>ue.preventDefault()),it(We,"click",ue=>{ue.stopPropagation(),Qt()}),ur(),bt.length&&typeof I.load!="function"&&(ct="",Ot(0)),Ve(je);const wt={el:p,root:O,input:ve,getValue:Ze,setValue(ue){return Ve(ue),wt},reload(){return Xt(),wt},setOptions(ue){return dr(ue),wt},clear(){return qe(),wt},open(){return $t(),wt},close(){return vt(),wt},focus(){return ar(),wt},blur(){return or(),wt},setDisabled(ue){I.disabled=ue,ve.disabled=ue,Ie.disabled=ue,ue&&vt()},setReadOnly(ue){I.readOnly=ue,ve.readOnly=ue,ue?ve.setAttribute("aria-readonly","true"):ve.removeAttribute("aria-readonly"),yt()},destroy(){vt(),ht=!0,nt&&clearTimeout(nt),dt&&dt.abort();for(const ue of Pt.splice(0))ue();for(;O.firstChild;)O.removeChild(O.firstChild)}};return p.appendChild(O),p.__combo=wt,wt}R("combo",{kind:"field",build(p,I){const Q=I.doc.createElement("div"),re=p.props||{},me=X(Q,{load:re.load,options:p.options,multiple:re.multiple,value:p.value,resolveLabels:re.resolveLabels,newOptions:re.newOptions,optionTemplate:re.optionTemplate,selectedTemplate:re.selectedTemplate,selectAll:re.selectAll,debounce:re.debounce,pageSize:re.pageSize,maxHeight:re.maxHeight,chipPlacement:re.chipPlacement,clearable:re.clearable,placeholder:p.placeholder,ariaLabel:p.label,t:I.t,doc:I.doc,inForm:!0});if(I.disposers.push(()=>me.destroy()),Array.isArray(re.dependsOn))for(const be of re.dependsOn){const ke=Se=>{Se.name===be&&(me.clear(),me.reload())},Le=I.emitter.on("change",ke);I.disposers.push(Le)}return Q.focus=()=>me.focus(),Q.blur=()=>me.blur(),Q},read(p){return p.__combo?p.__combo.getValue():null},write(p,I){p.__combo&&p.__combo.setValue(I)},state(p,I){p.__combo&&(p.__combo.setDisabled(I.disabled===!0),p.__combo.setReadOnly(I.readOnly===!0))}})}),Ne("packages/modules/form/extras.js",function(N,Z){"use strict";Object.defineProperty(N,"injectChromeStyles",{enumerable:!0,get:function(){return b}}),Object.defineProperty(N,"buildTooltip",{enumerable:!0,get:function(){return a}}),Object.defineProperty(N,"buildLock",{enumerable:!0,get:function(){return i}}),Object.defineProperty(N,"renderAvatarAddon",{enumerable:!0,get:function(){return m}}),Object.defineProperty(N,"buildAddons",{enumerable:!0,get:function(){return g}}),Object.defineProperty(N,"buildPanel",{enumerable:!0,get:function(){return H}});const R=Z("packages/modules/form/styles.js").NS,q=Z("packages/modules/form/ids.js").nextId,k=Z("packages/modules/form/controls/field-icon.js"),P=k.makeFieldIcon,j=k.injectFieldIconStyles,C=Z("packages/modules/form/controls/combo.js"),S=C.initialsFor,x=C.renderAvatar,h="data-lattice-form-chrome-styles";function n(u){return u==="cols"?`${R}__cols`:u==="items"?`${R}__items`:`${R}__rows`}function c(){return`
|
|
1462
1462
|
.${R}__label-group{
|
|
1463
1463
|
display:flex; align-items:center; gap:calc(var(--lattice-space) / 2);
|
|
1464
1464
|
min-width:0; box-sizing:border-box;
|
|
@@ -1828,7 +1828,7 @@ ${r}
|
|
|
1828
1828
|
}
|
|
1829
1829
|
.lat-listbox__status{ padding:calc(var(--lattice-space) / 2) var(--lattice-space); color:var(--lattice-foreground-muted); }
|
|
1830
1830
|
.lat-listbox__status[hidden]{ display:none; }
|
|
1831
|
-
`.trim()}function i(r){const l=r&&r.documentElement;if(!l||l.getAttribute(h))return;l.setAttribute(h,"1");const d=r.createElement("style");d.textContent=a(),(r.head||r.body||l).appendChild(d)}function f(r){return r==null||typeof r!="object"?{value:r,label:r==null?"":String(r),description:null,icon:null,avatar:null,color:null,dot:null,disabled:!1,group:null}:{value:r.value,label:r.label!=null?String(r.label):r.title!=null?String(r.title):r.value==null?"":String(r.value),description:r.description!=null?String(r.description):r.subtitle!=null?String(r.subtitle):null,icon:r.icon,avatar:r.avatar,color:r.color,dot:r.dot,disabled:r.disabled===!0,group:r.group!=null?String(r.group):null}}function v(r){if(Array.isArray(r))return{items:r,total:r.length,hasMore:!1};if(r&&typeof r=="object"){const l=Array.isArray(r.items)?r.items:[];return{items:l,total:typeof r.total=="number"?r.total:l.length,hasMore:r.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function m(r,l){return r===l?!0:r!=null&&l!=null&&String(r)===String(l)}function g(r){return String(r)}function H(r,l){const d=r&&r.defaultView;return d&&d.Event?new d.Event(l,{bubbles:!0}):{type:l,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function u(r){return r.__latListboxRegistry||(r.__latListboxRegistry=new Map),r.__latListboxRegistry}let s=null;function o(r,l={}){const d=l.doc||r&&r.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;d&&(i(d),x(d));const T=typeof l.t=="function"?l.t:q,U=["single","multiple","checkbox"].includes(l.selection)?l.selection:"single",z=U!=="single",L=l.reorder===!0,y=typeof l.connect=="string"&&l.connect!==""?l.connect:null,M=typeof l.name=="string"&&l.name!==""?l.name:null,W=l.sort==="asc"||l.sort==="desc"?l.sort:!1,B=l.groupBy===!0,ne=l.filter===!0,Ae=P("lat-listbox"),we=d.createElement("div");we.className="lat-listbox",l.inForm||(we.setAttribute("data-lattice-standalone","true"),we.setAttribute("data-density",["compact","standard","comfortable"].includes(l.density)?l.density:"standard"));let ce=null;ne&&(ce=d.createElement("input"),ce.type="text",ce.className="lat-listbox__filter",ce.placeholder=T("form.listbox.filterPlaceholder"),ce.setAttribute("aria-label",T("form.listbox.filterPlaceholder")),we.appendChild(ce));let A=null,oe=null,te=null,E=null,F=null;(L||y)&&(A=d.createElement("div"),A.className="lat-listbox__toolbar",A.setAttribute("role","group"),A.setAttribute("aria-label",T("form.listbox.toolbar")),L&&(oe=d.createElement("button"),oe.type="button",oe.className="lat-listbox__toolbar-btn",oe.textContent=T("form.listbox.moveUp"),te=d.createElement("button"),te.type="button",te.className="lat-listbox__toolbar-btn",te.textContent=T("form.listbox.moveDown"),A.appendChild(oe),A.appendChild(te)),y&&(E=d.createElement("button"),E.type="button",E.className="lat-listbox__toolbar-btn",E.textContent=T("form.listbox.moveSelected"),F=d.createElement("button"),F.type="button",F.className="lat-listbox__toolbar-btn",F.textContent=T("form.listbox.moveAll"),A.appendChild(E),A.appendChild(F)),we.appendChild(A));const w=d.createElement("div");w.className="lat-listbox__viewport",w.id=`${Ae}-lb`,w.setAttribute("role","listbox"),w.setAttribute("tabindex","0"),z&&w.setAttribute("aria-multiselectable","true"),w.setAttribute("aria-label",l.ariaLabel!=null?String(l.ariaLabel):"");const G=typeof l.rows=="number"&&l.rows>0?l.rows:8;typeof l.height=="number"&&l.height>0?w.style.height=`${l.height}px`:w.style.height=`calc(var(--lattice-row-height) * ${G})`;let Y=null;if(U==="checkbox"){const le=d.createElement("div");le.className="lat-listbox__option lat-listbox__select-all",Y=d.createElement("input"),Y.type="checkbox",Y.className="lat-listbox__checkbox",Y.id=`${Ae}-select-all`,le.appendChild(Y);const _e=d.createElement("label");_e.className="lat-listbox__title",_e.textContent=T("form.listbox.selectAll"),_e.setAttribute("for",Y.id),le.appendChild(_e),w.appendChild(le)}const ie=d.createElement("div");ie.className="lat-listbox__spacer",w.appendChild(ie);const D=d.createElement("div");D.className="lat-listbox__status",D.setAttribute("role","status"),D.setAttribute("aria-live","polite"),D.hidden=!0,w.appendChild(D),we.appendChild(w);let J=[];const ae=new Set;let V=[],se=-1,X=null,p="";const I=[],Q=[];let re=0,me="",be=null,ke=null,Le=null,Se=0,je=!1,O=0,ee=!1;const de=[];let K=!1;function pe(le,_e,xe){le.addEventListener(_e,xe),de.push(()=>le.removeEventListener(_e,xe))}function Ce(){return l.readOnly===!0||l.disabled===!0}function ye(){r.dispatchEvent(H(d,"change"))}function ve(){if(U==="single"){const le=J.find(_e=>ae.has(g(_e.value)));return le?le.value:null}return L||y?J.map(le=>le.value):J.filter(le=>ae.has(g(le.value))).map(le=>le.value)}function Ie(){const le=V.filter(_e=>!_e.disabled);return le.length>0&&le.every(_e=>ae.has(g(_e.value)))}function He(){const le=p.trim().toLowerCase();let _e=le===""?J.slice():J.filter(xe=>xe.label.toLowerCase().includes(le)||(xe.description||"").toLowerCase().includes(le));W&&(_e=_e.slice().sort((xe,Pe)=>xe.label.localeCompare(Pe.label)*(W==="desc"?-1:1))),V=_e,I.length=0,Q.length=0,se>=V.length&&(se=V.length-1)}function Ee(le){const _e=[],xe=new Map;for(const Pe of le){const Ze=Pe.group||"";let Ve=xe.get(Ze);Ve||(Ve={group:Pe.group||null,items:[]},xe.set(Ze,Ve),_e.push(Ve)),Ve.items.push(Pe)}return _e}function De(le){return`${Ae}-opt-${le}`}function ge(le){return le.description!=null||le.icon!=null||le.avatar!=null?c:n}function Re(le){const _e=V[le];return!!_e&&ae.has(g(_e.value))}function Te(le,_e){const xe=d.createElement("div");if(xe.className="lat-listbox__option",xe.setAttribute("role","option"),xe.id=De(_e),xe.setAttribute("aria-selected",Re(_e)?"true":"false"),le.disabled&&xe.setAttribute("aria-disabled","true"),U==="checkbox"){const Ve=d.createElement("input");Ve.type="checkbox",Ve.className="lat-listbox__checkbox",Ve.tabIndex=-1,Ve.checked=Re(_e),Ve.disabled=le.disabled||Ce(),xe.appendChild(Ve)}const Pe=S(d,le,l.render);if(Pe)xe.appendChild(Pe);else{const Ve=C(d,le);Ve&&xe.appendChild(Ve);const Be=d.createElement("span");Be.className="lat-listbox__text";const qe=d.createElement("span");if(qe.className="lat-listbox__title",qe.textContent=le.label,Be.appendChild(qe),le.description!=null){const xt=d.createElement("span");xt.className="lat-listbox__subtitle",xt.textContent=le.description,Be.appendChild(xt)}xe.appendChild(Be)}return(L||y)&&!le.disabled&&!Ce()&&(xe.draggable=!0,pe(xe,"dragstart",()=>Ge(le)),pe(xe,"dragover",Ve=>{Ve.preventDefault()}),pe(xe,"drop",Ve=>{Ve.preventDefault(),Ke(le)})),pe(xe,"click",Ve=>{le.disabled||Ce()||(w.focus(),bt(_e,{shift:Ve.shiftKey,ctrl:Ve.ctrlKey||Ve.metaKey,touch:Ve.pointerType==="touch"}))}),xe}function Ge(le){const _e=ae.has(g(le.value))?J.filter(xe=>ae.has(g(xe.value))).map(xe=>xe.value):[le.value];s={source:it,values:_e}}function Ke(le){if(!s||Ce())return;const{source:_e,values:xe}=s;s=null;const Pe=J.findIndex(Ze=>m(Ze.value,le.value));if(Pe!==-1){if(_e===it){if(!L)return;We(xe,Pe),Qe(),ye();return}if(y){const Ze=_e.__removeValues(xe);if(Ze.length===0)return;J.splice(Pe,0,...Ze);for(const Ve of Ze)ae.add(g(Ve.value));He(),Qe(),ye()}}}function We(le,_e){const xe=new Set(le.map(g)),Pe=J.filter(qe=>xe.has(g(qe.value)));if(Pe.length===0)return;const Ze=J[_e]?g(J[_e].value):null,Ve=J.filter(qe=>!xe.has(g(qe.value)));let Be=Ze==null?Ve.length:Ve.findIndex(qe=>g(qe.value)===Ze);Be===-1&&(Be=Ve.length),Ve.splice(Be,0,...Pe),J=Ve}function fe(le){const _e=new Set(le.map(g)),xe=J.filter(Pe=>_e.has(g(Pe.value)));if(xe.length===0)return xe;J=J.filter(Pe=>!_e.has(g(Pe.value)));for(const Pe of xe)ae.delete(g(Pe.value));return He(),Qe(),ye(),xe}function Me(le){le.length!==0&&(J=J.concat(le),He(),Qe(),ye())}function he(){return!y||!d?null:u(d).get(y)||null}function $e(){const le=he();if(!le||Ce())return;const _e=J.filter(Pe=>ae.has(g(Pe.value))).map(Pe=>Pe.value);if(_e.length===0)return;const xe=fe(_e);le.__receiveItems(xe)}function ot(){const le=he();if(!le||Ce()||J.length===0)return;const _e=fe(J.map(xe=>xe.value));le.__receiveItems(_e)}function Ye(le){if(Ce())return;const _e=[];for(let xe=0;xe<J.length;xe++)ae.has(g(J[xe].value))&&_e.push(xe);if(_e.length!==0){if(le<0)for(const xe of _e)xe===0||ae.has(g(J[xe-1].value))||([J[xe-1],J[xe]]=[J[xe],J[xe-1]]);else for(let xe=_e.length-1;xe>=0;xe--){const Pe=_e[xe];Pe===J.length-1||ae.has(g(J[Pe+1].value))||([J[Pe+1],J[Pe]]=[J[Pe],J[Pe+1]])}He(),Qe(),ye()}}function Qe(){for(;ie.firstChild;)ie.removeChild(ie.firstChild);ie.style.height="",ie.style.position="",B?pt():rt(),ct(),tt(),A&&dt()}function pt(){let le=0;for(const _e of Ee(V))if(_e.group!=null){const xe=d.createElement("div");xe.setAttribute("role","group");const Pe=d.createElement("div");Pe.className="lat-listbox__group-header",Pe.id=`${Ae}-grp-${le}`,Pe.textContent=_e.group,xe.setAttribute("aria-labelledby",Pe.id),xe.appendChild(Pe);for(const Ze of _e.items)xe.appendChild(Te(Ze,le)),le+=1;ie.appendChild(xe)}else for(const xe of _e.items)ie.appendChild(Te(xe,le)),le+=1}function rt(){if(ie.style.position="relative",re=w.clientHeight||re||240,V.length===0){ie.style.height="0px";return}for(let Be=0;Be<V.length;Be++)I[Be]==null&&(I[Be]=ge(V[Be]));Q.length=0,Q[0]=0;for(let Be=1;Be<=V.length;Be++)Q[Be]=Q[Be-1]+I[Be-1];ie.style.height=`${Q[V.length]}px`;const le=w.scrollTop,_e=le,xe=le+re;let Pe=0;for(;Pe<V.length-1&&Q[Pe+1]<_e;)Pe+=1;let Ze=Pe;for(;Ze<V.length&&Q[Ze]<xe;)Ze+=1;for(Ze=Math.min(V.length,Ze+2);ie.firstChild;)ie.removeChild(ie.firstChild);for(let Be=Pe;Be<Ze;Be++){const qe=Te(V[Be],Be);qe.style.position="absolute",qe.style.insetInlineStart="0",qe.style.insetInlineEnd="0",qe.style.top="0",qe.style.transform=`translateY(${Q[Be]}px)`,ie.appendChild(qe)}let Ve=!1;for(let Be=Pe;Be<Ze;Be++){const qe=d.getElementById(De(Be));if(!qe)continue;const xt=qe.getBoundingClientRect().height;xt>0&&Math.abs(xt-I[Be])>.5&&(I[Be]=xt,Ve=!0)}Ve&&rt()}function ut(){if(se<0||B)return;const le=Q[se]||0,_e=le+(I[se]||ge(V[se]));le<w.scrollTop?w.scrollTop=le:_e>w.scrollTop+re&&(w.scrollTop=_e-re),Qe()}function ct(){V.length===0?(D.hidden=!1,D.textContent=T("form.listbox.empty")):(D.hidden=!0,D.textContent="")}function at(){for(const le of ie.querySelectorAll('.lat-listbox__option[role="option"]')){const _e=le.id||"",xe=Number(_e.slice(`${Ae}-opt-`.length));if(Number.isNaN(xe))continue;const Pe=V[xe];if(!Pe)continue;const Ze=ae.has(g(Pe.value));le.setAttribute("aria-selected",Ze?"true":"false");const Ve=le.querySelector(".lat-listbox__checkbox");Ve&&(Ve.checked=Ze)}tt(),A&&dt()}function tt(){if(!Y)return;const le=V.filter(xe=>!xe.disabled),_e=le.filter(xe=>ae.has(g(xe.value))).length;Y.checked=le.length>0&&_e===le.length,Y.indeterminate=_e>0&&_e<le.length,Y.disabled=Ce()||le.length===0}function dt(){const le=ae.size>0,_e=Ce();oe&&(oe.disabled=_e||!le),te&&(te.disabled=_e||!le),E&&(E.disabled=_e||!le),F&&(F.disabled=_e||J.length===0)}function mt(le){se=le,le>=0&&le<V.length?w.setAttribute("aria-activedescendant",De(le)):w.removeAttribute("aria-activedescendant")}function nt(le){for(let _e=Math.max(0,le);_e<V.length;_e++)if(!V[_e].disabled)return _e;return-1}function jt(le){for(let _e=Math.min(V.length-1,le);_e>=0;_e--)if(!V[_e].disabled)return _e;return-1}function bt(le,_e={}){const xe=V[le];if(!xe||xe.disabled||Ce())return;mt(le);const Pe=new Set(ae);if(U==="single")ae.clear(),ae.add(g(xe.value)),X=le;else if(U==="checkbox")ae.has(g(xe.value))?ae.delete(g(xe.value)):ae.add(g(xe.value)),X=le;else if(_e.shift&&X!=null){const Ze=Math.min(X,le),Ve=Math.max(X,le);ae.clear();for(let Be=Ze;Be<=Ve;Be++)V[Be].disabled||ae.add(g(V[Be].value))}else _e.ctrl||_e.touch?(ae.has(g(xe.value))?ae.delete(g(xe.value)):ae.add(g(xe.value)),X=le):(ae.clear(),ae.add(g(xe.value)),X=le);ut(),at(),ft(Pe,ae)||ye()}function ft(le,_e){if(le.size!==_e.size)return!1;for(const xe of le)if(!_e.has(xe))return!1;return!0}function lt(){if(Ce())return;const le=!Ie();for(const _e of V)_e.disabled||(le?ae.add(g(_e.value)):ae.delete(g(_e.value)));at(),ye()}function gt(le,_e){if(V.length===0)return;const xe=se<0?le>0?-1:V.length:se,Pe=le>0?nt(xe+1):jt(xe-1);if(Pe!==-1){if(mt(Pe),ut(),U==="single"){bt(Pe,{});return}_e&&z&&(X==null&&(X=Pe),bt(Pe,{shift:!0}))}}function Ct(le){be&&clearTimeout(be),me+=le.toLowerCase(),be=setTimeout(()=>{me="",be=null},t);const _e=se>-1?se+1:0;let xe=-1;for(let Pe=_e;Pe<V.length;Pe++)if(!V[Pe].disabled&&V[Pe].label.toLowerCase().startsWith(me)){xe=Pe;break}if(xe===-1){for(let Pe=0;Pe<_e;Pe++)if(!V[Pe].disabled&&V[Pe].label.toLowerCase().startsWith(me)){xe=Pe;break}}xe!==-1&&(mt(xe),ut())}function Pt(le){if(le.altKey&&le.key==="ArrowUp"&&L)le.preventDefault(),Ye(-1);else if(le.altKey&&le.key==="ArrowDown"&&L)le.preventDefault(),Ye(1);else if(le.key==="ArrowDown")le.preventDefault(),gt(1,le.shiftKey);else if(le.key==="ArrowUp")le.preventDefault(),gt(-1,le.shiftKey);else if(le.key==="Home"){le.preventDefault();const _e=nt(0);_e!==-1&&(mt(_e),ut(),U==="single"&&bt(_e,{}))}else if(le.key==="End"){le.preventDefault();const _e=jt(V.length-1);_e!==-1&&(mt(_e),ut(),U==="single"&&bt(_e,{}))}else if(le.key===" ")le.preventDefault(),se>=0&&bt(se,{ctrl:z});else if((le.ctrlKey||le.metaKey)&&(le.key==="a"||le.key==="A")&&z){if(le.preventDefault(),Ce())return;for(const _e of V)_e.disabled||ae.add(g(_e.value));at(),ye()}else le.key.length===1&&!le.ctrlKey&&!le.metaKey&&!le.altKey&&Ct(le.key)}function ht(){if(p=ce.value||"",typeof l.load!="function"){He(),Qe();return}ke&&clearTimeout(ke),ke=setTimeout(()=>_t(),_)}function _t(){if(K||typeof l.load!="function")return;je=!0,Se+=1;const le=Se;Le&&Le.abort(),Le=typeof AbortController<"u"?new AbortController:null;let _e;try{_e=l.load({search:p,page:0,signal:Le?Le.signal:void 0})}catch{je=!1;return}const xe=Pe=>{if(K||le!==Se)return;je=!1;const Ze=v(Pe);J=Ze.items.map(f),ee=Ze.hasMore,O=1,He(),Qe()};_e&&typeof _e.then=="function"?_e.then(xe,()=>{je=!1}):xe(_e)}pe(w,"keydown",Pt),pe(w,"scroll",()=>{B||rt()}),ce&&pe(ce,"input",ht),oe&&pe(oe,"click",()=>Ye(-1)),te&&pe(te,"click",()=>Ye(1)),E&&pe(E,"click",()=>$e()),F&&pe(F,"click",()=>ot()),Y&&pe(Y,"change",()=>lt()),pe(w,"dragover",le=>{s&&le.preventDefault()}),pe(w,"drop",le=>{if(le.preventDefault(),!s||s.source===it||!y)return;const _e=s.source.__removeValues(s.values);s=null,Me(_e)});function st(le){if(ae.clear(),U==="single")le!=null&&ae.add(g(le));else if((L||y)&&Array.isArray(le)){const _e=new Map(J.map(xe=>[g(xe.value),xe]));J=le.map(xe=>_e.get(g(xe))||f(xe));for(const xe of J)ae.add(g(xe.value))}else{const _e=Array.isArray(le)?le:le==null?[]:[le];for(const xe of _e)ae.add(g(xe))}He(),Qe()}typeof l.load!="function"&&(J=(Array.isArray(l.options)?l.options:[]).map(f)),He(),st(l.value),typeof l.load=="function"&&_t();const it={el:r,root:we,viewport:w,getValue:ve,setValue(le){return st(le),it},focus(){return w.focus(),it},blur(){return w.blur(),it},setDisabled(le){l.disabled=le,w.setAttribute("aria-disabled",le?"true":"false"),ce&&(ce.disabled=le),tt(),dt()},setReadOnly(le){l.readOnly=le,le?w.setAttribute("aria-readonly","true"):w.removeAttribute("aria-readonly"),tt(),dt()},__removeValues:fe,__receiveItems:Me,destroy(){K=!0,be&&clearTimeout(be),ke&&clearTimeout(ke),Le&&Le.abort();for(const le of de.splice(0))le();if(d&&M){const le=u(d);le.get(M)===it&&le.delete(M)}for(;we.firstChild;)we.removeChild(we.firstChild)}};return d&&M&&u(d).set(M,it),Qe(),r.appendChild(we),r.__listbox=it,it}R("listbox",{kind:"field",build(r,l){const d=r.props||{},T=l.doc.createElement("div");return o(T,{options:r.options,load:d.load,selection:d.selection,value:r.value,filter:d.filter===!0,groupBy:d.groupBy===!0,sort:d.sort,render:d.render,reorder:d.reorder===!0,connect:d.connect,name:r.name,min:r.min,max:r.max,height:d.height,rows:r.rows,disabled:r.disabled===!0,readOnly:r.readOnly===!0,ariaLabel:r.label,t:l.t,doc:l.doc,inForm:!0}),T.__listboxT=l.t,l.disposers.push(()=>{T.__listbox&&T.__listbox.destroy()}),T},read(r){return r.__listbox?r.__listbox.getValue():null},write(r,l){r.__listbox&&r.__listbox.setValue(l)},validate(r,l,d){if(!r.__listbox)return null;const U=r.__listboxT||q,z=Array.isArray(d)?d.length:d==null?0:1,L=l.min!=null&&Number.isFinite(Number(l.min))?Number(l.min):null,y=l.max!=null&&Number.isFinite(Number(l.max))?Number(l.max):null;return L!=null&&z<L?{code:"min",message:U("form.listbox.min",{min:String(L)})}:y!=null&&z>y?{code:"max",message:U("form.listbox.max",{max:String(y)})}:null},state(r,l){r.__listbox&&(r.__listbox.setDisabled(l.disabled===!0),r.__listbox.setReadOnly(l.readOnly===!0))},focus(r){r.__listbox&&r.__listbox.focus()},blur(r){r.__listbox&&r.__listbox.blur()}})}),Ne("packages/modules/form/controls/options.js",function(N,Z){"use strict";Object.defineProperty(N,"normalizeOptions",{enumerable:!0,get:function(){return $}}),Object.defineProperty(N,"resolveChoiceLayout",{enumerable:!0,get:function(){return q}}),Object.defineProperty(N,"choiceLayoutCss",{enumerable:!0,get:function(){return k}}),Object.defineProperty(N,"injectChoiceLayoutStyles",{enumerable:!0,get:function(){return j}});const R=Z("packages/modules/form/styles.js").NS;function $(C){return Array.isArray(C)?C.map(S=>{if(typeof S=="string")return{value:S,label:S};if(S&&typeof S=="object"){const x=S.value==null?"":String(S.value),h=S.label!=null?String(S.label):S.text!=null?String(S.text):x;return{value:x,label:h}}return{value:"",label:""}}):[]}function q(C){const S=C&&C.props?C.props:{},x=C&&C.orientation!=null?C.orientation:S.orientation;let h=C&&C.columns!=null?C.columns:S.columns;return h=typeof h=="number"&&Number.isFinite(h)&&h>=1?Math.floor(h):0,h>0?{orientation:"vertical",columns:h}:{orientation:x==="horizontal"?"horizontal":"vertical",columns:0}}function k(){return`
|
|
1831
|
+
`.trim()}function i(r){const l=r&&r.documentElement;if(!l||l.getAttribute(h))return;l.setAttribute(h,"1");const d=r.createElement("style");d.textContent=a(),(r.head||r.body||l).appendChild(d)}function f(r){return r==null||typeof r!="object"?{value:r,label:r==null?"":String(r),description:null,icon:null,avatar:null,color:null,dot:null,disabled:!1,group:null}:{value:r.value,label:r.label!=null?String(r.label):r.title!=null?String(r.title):r.value==null?"":String(r.value),description:r.description!=null?String(r.description):r.subtitle!=null?String(r.subtitle):null,icon:r.icon,avatar:r.avatar,color:r.color,dot:r.dot,disabled:r.disabled===!0,group:r.group!=null?String(r.group):null}}function v(r){if(Array.isArray(r))return{items:r,total:r.length,hasMore:!1};if(r&&typeof r=="object"){const l=Array.isArray(r.items)?r.items:[];return{items:l,total:typeof r.total=="number"?r.total:l.length,hasMore:r.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function m(r,l){return r===l?!0:r!=null&&l!=null&&String(r)===String(l)}function g(r){return String(r)}function H(r,l){const d=r&&r.defaultView;return d&&d.Event?new d.Event(l,{bubbles:!0}):{type:l,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function u(r){return r.__latListboxRegistry||(r.__latListboxRegistry=new Map),r.__latListboxRegistry}let s=null;function o(r,l={}){const d=l.doc||r&&r.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;d&&(i(d),x(d));const T=typeof l.t=="function"?l.t:q,U=["single","multiple","checkbox"].includes(l.selection)?l.selection:"single",z=U!=="single",L=l.reorder===!0,y=typeof l.connect=="string"&&l.connect!==""?l.connect:null,M=typeof l.name=="string"&&l.name!==""?l.name:null,W=l.sort==="asc"||l.sort==="desc"?l.sort:!1,B=l.groupBy===!0,ne=l.filter===!0,Ae=P("lat-listbox"),we=d.createElement("div");we.className="lat-listbox",l.inForm||(we.setAttribute("data-lattice-standalone","true"),we.setAttribute("data-density",["compact","standard","comfortable"].includes(l.density)?l.density:"standard"));let ce=null;ne&&(ce=d.createElement("input"),ce.type="text",ce.className="lat-listbox__filter",ce.placeholder=T("form.listbox.filterPlaceholder"),ce.setAttribute("aria-label",T("form.listbox.filterPlaceholder")),we.appendChild(ce));let A=null,oe=null,te=null,E=null,F=null;(L||y)&&(A=d.createElement("div"),A.className="lat-listbox__toolbar",A.setAttribute("role","group"),A.setAttribute("aria-label",T("form.listbox.toolbar")),L&&(oe=d.createElement("button"),oe.type="button",oe.className="lat-listbox__toolbar-btn",oe.textContent=T("form.listbox.moveUp"),te=d.createElement("button"),te.type="button",te.className="lat-listbox__toolbar-btn",te.textContent=T("form.listbox.moveDown"),A.appendChild(oe),A.appendChild(te)),y&&(E=d.createElement("button"),E.type="button",E.className="lat-listbox__toolbar-btn",E.textContent=T("form.listbox.moveSelected"),F=d.createElement("button"),F.type="button",F.className="lat-listbox__toolbar-btn",F.textContent=T("form.listbox.moveAll"),A.appendChild(E),A.appendChild(F)),we.appendChild(A));const w=d.createElement("div");w.className="lat-listbox__viewport",w.id=`${Ae}-lb`,w.setAttribute("role","listbox"),w.setAttribute("tabindex","0"),z&&w.setAttribute("aria-multiselectable","true"),w.setAttribute("aria-label",l.ariaLabel!=null?String(l.ariaLabel):"");const G=typeof l.rows=="number"&&l.rows>0?l.rows:8;typeof l.height=="number"&&l.height>0?w.style.height=`${l.height}px`:w.style.height=`calc(var(--lattice-row-height) * ${G})`;let Y=null;if(U==="checkbox"){const le=d.createElement("div");le.className="lat-listbox__option lat-listbox__select-all",Y=d.createElement("input"),Y.type="checkbox",Y.className="lat-listbox__checkbox",Y.id=`${Ae}-select-all`,le.appendChild(Y);const _e=d.createElement("label");_e.className="lat-listbox__title",_e.textContent=T("form.listbox.selectAll"),_e.setAttribute("for",Y.id),le.appendChild(_e),w.appendChild(le)}const ie=d.createElement("div");ie.className="lat-listbox__spacer",w.appendChild(ie);const D=d.createElement("div");D.className="lat-listbox__status",D.setAttribute("role","status"),D.setAttribute("aria-live","polite"),D.hidden=!0,w.appendChild(D),we.appendChild(w);let J=[];const ae=new Set;let V=[],se=-1,X=null,p="";const I=[],Q=[];let re=0,me="",be=null,ke=null,Le=null,Se=0,je=!1,O=0,ee=!1;const de=[];let K=!1;function pe(le,_e,xe){le.addEventListener(_e,xe),de.push(()=>le.removeEventListener(_e,xe))}function Ce(){return l.readOnly===!0||l.disabled===!0}function ye(){r.dispatchEvent(H(d,"change"))}function ve(){if(U==="single"){const le=J.find(_e=>ae.has(g(_e.value)));return le?le.value:null}return L||y?J.map(le=>le.value):J.filter(le=>ae.has(g(le.value))).map(le=>le.value)}function Ie(){const le=V.filter(_e=>!_e.disabled);return le.length>0&&le.every(_e=>ae.has(g(_e.value)))}function He(){const le=p.trim().toLowerCase();let _e=le===""?J.slice():J.filter(xe=>xe.label.toLowerCase().includes(le)||(xe.description||"").toLowerCase().includes(le));W&&(_e=_e.slice().sort((xe,Pe)=>xe.label.localeCompare(Pe.label)*(W==="desc"?-1:1))),V=_e,I.length=0,Q.length=0,se>=V.length&&(se=V.length-1)}function Ee(le){const _e=[],xe=new Map;for(const Pe of le){const Ze=Pe.group||"";let Ve=xe.get(Ze);Ve||(Ve={group:Pe.group||null,items:[]},xe.set(Ze,Ve),_e.push(Ve)),Ve.items.push(Pe)}return _e}function De(le){return`${Ae}-opt-${le}`}function ge(le){return le.description!=null||le.icon!=null||le.avatar!=null?c:n}function Re(le){const _e=V[le];return!!_e&&ae.has(g(_e.value))}function Te(le,_e){const xe=d.createElement("div");if(xe.className="lat-listbox__option",xe.setAttribute("role","option"),xe.id=De(_e),xe.setAttribute("aria-selected",Re(_e)?"true":"false"),le.disabled&&xe.setAttribute("aria-disabled","true"),U==="checkbox"){const Ve=d.createElement("input");Ve.type="checkbox",Ve.className="lat-listbox__checkbox",Ve.tabIndex=-1,Ve.checked=Re(_e),Ve.disabled=le.disabled||Ce(),xe.appendChild(Ve)}const Pe=S(d,le,l.render);if(Pe)xe.appendChild(Pe);else{const Ve=C(d,le);Ve&&xe.appendChild(Ve);const Be=d.createElement("span");Be.className="lat-listbox__text";const qe=d.createElement("span");if(qe.className="lat-listbox__title",qe.textContent=le.label,Be.appendChild(qe),le.description!=null){const xt=d.createElement("span");xt.className="lat-listbox__subtitle",xt.textContent=le.description,Be.appendChild(xt)}xe.appendChild(Be)}return(L||y)&&!le.disabled&&!Ce()&&(xe.draggable=!0,pe(xe,"dragstart",()=>Ge(le)),pe(xe,"dragover",Ve=>{Ve.preventDefault()}),pe(xe,"drop",Ve=>{Ve.preventDefault(),Ke(le)})),pe(xe,"click",Ve=>{le.disabled||Ce()||(w.focus(),bt(_e,{shift:Ve.shiftKey,ctrl:Ve.ctrlKey||Ve.metaKey,touch:Ve.pointerType==="touch"}))}),xe}function Ge(le){const _e=ae.has(g(le.value))?J.filter(xe=>ae.has(g(xe.value))).map(xe=>xe.value):[le.value];s={source:lt,values:_e}}function Ke(le){if(!s||Ce())return;const{source:_e,values:xe}=s;s=null;const Pe=J.findIndex(Ze=>m(Ze.value,le.value));if(Pe!==-1){if(_e===lt){if(!L)return;We(xe,Pe),Qe(),ye();return}if(y){const Ze=_e.__removeValues(xe);if(Ze.length===0)return;J.splice(Pe,0,...Ze);for(const Ve of Ze)ae.add(g(Ve.value));He(),Qe(),ye()}}}function We(le,_e){const xe=new Set(le.map(g)),Pe=J.filter(qe=>xe.has(g(qe.value)));if(Pe.length===0)return;const Ze=J[_e]?g(J[_e].value):null,Ve=J.filter(qe=>!xe.has(g(qe.value)));let Be=Ze==null?Ve.length:Ve.findIndex(qe=>g(qe.value)===Ze);Be===-1&&(Be=Ve.length),Ve.splice(Be,0,...Pe),J=Ve}function fe(le){const _e=new Set(le.map(g)),xe=J.filter(Pe=>_e.has(g(Pe.value)));if(xe.length===0)return xe;J=J.filter(Pe=>!_e.has(g(Pe.value)));for(const Pe of xe)ae.delete(g(Pe.value));return He(),Qe(),ye(),xe}function Me(le){le.length!==0&&(J=J.concat(le),He(),Qe(),ye())}function he(){return!y||!d?null:u(d).get(y)||null}function $e(){const le=he();if(!le||Ce())return;const _e=J.filter(Pe=>ae.has(g(Pe.value))).map(Pe=>Pe.value);if(_e.length===0)return;const xe=fe(_e);le.__receiveItems(xe)}function ot(){const le=he();if(!le||Ce()||J.length===0)return;const _e=fe(J.map(xe=>xe.value));le.__receiveItems(_e)}function Ye(le){if(Ce())return;const _e=[];for(let xe=0;xe<J.length;xe++)ae.has(g(J[xe].value))&&_e.push(xe);if(_e.length!==0){if(le<0)for(const xe of _e)xe===0||ae.has(g(J[xe-1].value))||([J[xe-1],J[xe]]=[J[xe],J[xe-1]]);else for(let xe=_e.length-1;xe>=0;xe--){const Pe=_e[xe];Pe===J.length-1||ae.has(g(J[Pe+1].value))||([J[Pe+1],J[Pe]]=[J[Pe],J[Pe+1]])}He(),Qe(),ye()}}function Qe(){for(;ie.firstChild;)ie.removeChild(ie.firstChild);ie.style.height="",ie.style.position="",B?pt():rt(),ct(),tt(),A&&dt()}function pt(){let le=0;for(const _e of Ee(V))if(_e.group!=null){const xe=d.createElement("div");xe.setAttribute("role","group");const Pe=d.createElement("div");Pe.className="lat-listbox__group-header",Pe.id=`${Ae}-grp-${le}`,Pe.textContent=_e.group,xe.setAttribute("aria-labelledby",Pe.id),xe.appendChild(Pe);for(const Ze of _e.items)xe.appendChild(Te(Ze,le)),le+=1;ie.appendChild(xe)}else for(const xe of _e.items)ie.appendChild(Te(xe,le)),le+=1}function rt(){if(ie.style.position="relative",re=w.clientHeight||re||240,V.length===0){ie.style.height="0px";return}for(let Be=0;Be<V.length;Be++)I[Be]==null&&(I[Be]=ge(V[Be]));Q.length=0,Q[0]=0;for(let Be=1;Be<=V.length;Be++)Q[Be]=Q[Be-1]+I[Be-1];ie.style.height=`${Q[V.length]}px`;const le=w.scrollTop,_e=le,xe=le+re;let Pe=0;for(;Pe<V.length-1&&Q[Pe+1]<_e;)Pe+=1;let Ze=Pe;for(;Ze<V.length&&Q[Ze]<xe;)Ze+=1;for(Ze=Math.min(V.length,Ze+2);ie.firstChild;)ie.removeChild(ie.firstChild);for(let Be=Pe;Be<Ze;Be++){const qe=Te(V[Be],Be);qe.style.position="absolute",qe.style.insetInlineStart="0",qe.style.insetInlineEnd="0",qe.style.top="0",qe.style.transform=`translateY(${Q[Be]}px)`,ie.appendChild(qe)}let Ve=!1;for(let Be=Pe;Be<Ze;Be++){const qe=d.getElementById(De(Be));if(!qe)continue;const xt=qe.getBoundingClientRect().height;xt>0&&Math.abs(xt-I[Be])>.5&&(I[Be]=xt,Ve=!0)}Ve&&rt()}function ut(){if(se<0||B)return;const le=Q[se]||0,_e=le+(I[se]||ge(V[se]));le<w.scrollTop?w.scrollTop=le:_e>w.scrollTop+re&&(w.scrollTop=_e-re),Qe()}function ct(){V.length===0?(D.hidden=!1,D.textContent=T("form.listbox.empty")):(D.hidden=!0,D.textContent="")}function at(){for(const le of ie.querySelectorAll('.lat-listbox__option[role="option"]')){const _e=le.id||"",xe=Number(_e.slice(`${Ae}-opt-`.length));if(Number.isNaN(xe))continue;const Pe=V[xe];if(!Pe)continue;const Ze=ae.has(g(Pe.value));le.setAttribute("aria-selected",Ze?"true":"false");const Ve=le.querySelector(".lat-listbox__checkbox");Ve&&(Ve.checked=Ze)}tt(),A&&dt()}function tt(){if(!Y)return;const le=V.filter(xe=>!xe.disabled),_e=le.filter(xe=>ae.has(g(xe.value))).length;Y.checked=le.length>0&&_e===le.length,Y.indeterminate=_e>0&&_e<le.length,Y.disabled=Ce()||le.length===0}function dt(){const le=ae.size>0,_e=Ce();oe&&(oe.disabled=_e||!le),te&&(te.disabled=_e||!le),E&&(E.disabled=_e||!le),F&&(F.disabled=_e||J.length===0)}function mt(le){se=le,le>=0&&le<V.length?w.setAttribute("aria-activedescendant",De(le)):w.removeAttribute("aria-activedescendant")}function nt(le){for(let _e=Math.max(0,le);_e<V.length;_e++)if(!V[_e].disabled)return _e;return-1}function jt(le){for(let _e=Math.min(V.length-1,le);_e>=0;_e--)if(!V[_e].disabled)return _e;return-1}function bt(le,_e={}){const xe=V[le];if(!xe||xe.disabled||Ce())return;mt(le);const Pe=new Set(ae);if(U==="single")ae.clear(),ae.add(g(xe.value)),X=le;else if(U==="checkbox")ae.has(g(xe.value))?ae.delete(g(xe.value)):ae.add(g(xe.value)),X=le;else if(_e.shift&&X!=null){const Ze=Math.min(X,le),Ve=Math.max(X,le);ae.clear();for(let Be=Ze;Be<=Ve;Be++)V[Be].disabled||ae.add(g(V[Be].value))}else _e.ctrl||_e.touch?(ae.has(g(xe.value))?ae.delete(g(xe.value)):ae.add(g(xe.value)),X=le):(ae.clear(),ae.add(g(xe.value)),X=le);ut(),at(),ft(Pe,ae)||ye()}function ft(le,_e){if(le.size!==_e.size)return!1;for(const xe of le)if(!_e.has(xe))return!1;return!0}function st(){if(Ce())return;const le=!Ie();for(const _e of V)_e.disabled||(le?ae.add(g(_e.value)):ae.delete(g(_e.value)));at(),ye()}function gt(le,_e){if(V.length===0)return;const xe=se<0?le>0?-1:V.length:se,Pe=le>0?nt(xe+1):jt(xe-1);if(Pe!==-1){if(mt(Pe),ut(),U==="single"){bt(Pe,{});return}_e&&z&&(X==null&&(X=Pe),bt(Pe,{shift:!0}))}}function Ct(le){be&&clearTimeout(be),me+=le.toLowerCase(),be=setTimeout(()=>{me="",be=null},t);const _e=se>-1?se+1:0;let xe=-1;for(let Pe=_e;Pe<V.length;Pe++)if(!V[Pe].disabled&&V[Pe].label.toLowerCase().startsWith(me)){xe=Pe;break}if(xe===-1){for(let Pe=0;Pe<_e;Pe++)if(!V[Pe].disabled&&V[Pe].label.toLowerCase().startsWith(me)){xe=Pe;break}}xe!==-1&&(mt(xe),ut())}function Pt(le){if(le.altKey&&le.key==="ArrowUp"&&L)le.preventDefault(),Ye(-1);else if(le.altKey&&le.key==="ArrowDown"&&L)le.preventDefault(),Ye(1);else if(le.key==="ArrowDown")le.preventDefault(),gt(1,le.shiftKey);else if(le.key==="ArrowUp")le.preventDefault(),gt(-1,le.shiftKey);else if(le.key==="Home"){le.preventDefault();const _e=nt(0);_e!==-1&&(mt(_e),ut(),U==="single"&&bt(_e,{}))}else if(le.key==="End"){le.preventDefault();const _e=jt(V.length-1);_e!==-1&&(mt(_e),ut(),U==="single"&&bt(_e,{}))}else if(le.key===" ")le.preventDefault(),se>=0&&bt(se,{ctrl:z});else if((le.ctrlKey||le.metaKey)&&(le.key==="a"||le.key==="A")&&z){if(le.preventDefault(),Ce())return;for(const _e of V)_e.disabled||ae.add(g(_e.value));at(),ye()}else le.key.length===1&&!le.ctrlKey&&!le.metaKey&&!le.altKey&&Ct(le.key)}function ht(){if(p=ce.value||"",typeof l.load!="function"){He(),Qe();return}ke&&clearTimeout(ke),ke=setTimeout(()=>_t(),_)}function _t(){if(K||typeof l.load!="function")return;je=!0,Se+=1;const le=Se;Le&&Le.abort(),Le=typeof AbortController<"u"?new AbortController:null;let _e;try{_e=l.load({search:p,page:0,signal:Le?Le.signal:void 0})}catch{je=!1;return}const xe=Pe=>{if(K||le!==Se)return;je=!1;const Ze=v(Pe);J=Ze.items.map(f),ee=Ze.hasMore,O=1,He(),Qe()};_e&&typeof _e.then=="function"?_e.then(xe,()=>{je=!1}):xe(_e)}pe(w,"keydown",Pt),pe(w,"scroll",()=>{B||rt()}),ce&&pe(ce,"input",ht),oe&&pe(oe,"click",()=>Ye(-1)),te&&pe(te,"click",()=>Ye(1)),E&&pe(E,"click",()=>$e()),F&&pe(F,"click",()=>ot()),Y&&pe(Y,"change",()=>st()),pe(w,"dragover",le=>{s&&le.preventDefault()}),pe(w,"drop",le=>{if(le.preventDefault(),!s||s.source===lt||!y)return;const _e=s.source.__removeValues(s.values);s=null,Me(_e)});function it(le){if(ae.clear(),U==="single")le!=null&&ae.add(g(le));else if((L||y)&&Array.isArray(le)){const _e=new Map(J.map(xe=>[g(xe.value),xe]));J=le.map(xe=>_e.get(g(xe))||f(xe));for(const xe of J)ae.add(g(xe.value))}else{const _e=Array.isArray(le)?le:le==null?[]:[le];for(const xe of _e)ae.add(g(xe))}He(),Qe()}typeof l.load!="function"&&(J=(Array.isArray(l.options)?l.options:[]).map(f)),He(),it(l.value),typeof l.load=="function"&&_t();const lt={el:r,root:we,viewport:w,getValue:ve,setValue(le){return it(le),lt},focus(){return w.focus(),lt},blur(){return w.blur(),lt},setDisabled(le){l.disabled=le,w.setAttribute("aria-disabled",le?"true":"false"),ce&&(ce.disabled=le),tt(),dt()},setReadOnly(le){l.readOnly=le,le?w.setAttribute("aria-readonly","true"):w.removeAttribute("aria-readonly"),tt(),dt()},__removeValues:fe,__receiveItems:Me,destroy(){K=!0,be&&clearTimeout(be),ke&&clearTimeout(ke),Le&&Le.abort();for(const le of de.splice(0))le();if(d&&M){const le=u(d);le.get(M)===lt&&le.delete(M)}for(;we.firstChild;)we.removeChild(we.firstChild)}};return d&&M&&u(d).set(M,lt),Qe(),r.appendChild(we),r.__listbox=lt,lt}R("listbox",{kind:"field",build(r,l){const d=r.props||{},T=l.doc.createElement("div");return o(T,{options:r.options,load:d.load,selection:d.selection,value:r.value,filter:d.filter===!0,groupBy:d.groupBy===!0,sort:d.sort,render:d.render,reorder:d.reorder===!0,connect:d.connect,name:r.name,min:r.min,max:r.max,height:d.height,rows:r.rows,disabled:r.disabled===!0,readOnly:r.readOnly===!0,ariaLabel:r.label,t:l.t,doc:l.doc,inForm:!0}),T.__listboxT=l.t,l.disposers.push(()=>{T.__listbox&&T.__listbox.destroy()}),T},read(r){return r.__listbox?r.__listbox.getValue():null},write(r,l){r.__listbox&&r.__listbox.setValue(l)},validate(r,l,d){if(!r.__listbox)return null;const U=r.__listboxT||q,z=Array.isArray(d)?d.length:d==null?0:1,L=l.min!=null&&Number.isFinite(Number(l.min))?Number(l.min):null,y=l.max!=null&&Number.isFinite(Number(l.max))?Number(l.max):null;return L!=null&&z<L?{code:"min",message:U("form.listbox.min",{min:String(L)})}:y!=null&&z>y?{code:"max",message:U("form.listbox.max",{max:String(y)})}:null},state(r,l){r.__listbox&&(r.__listbox.setDisabled(l.disabled===!0),r.__listbox.setReadOnly(l.readOnly===!0))},focus(r){r.__listbox&&r.__listbox.focus()},blur(r){r.__listbox&&r.__listbox.blur()}})}),Ne("packages/modules/form/controls/options.js",function(N,Z){"use strict";Object.defineProperty(N,"normalizeOptions",{enumerable:!0,get:function(){return $}}),Object.defineProperty(N,"resolveChoiceLayout",{enumerable:!0,get:function(){return q}}),Object.defineProperty(N,"choiceLayoutCss",{enumerable:!0,get:function(){return k}}),Object.defineProperty(N,"injectChoiceLayoutStyles",{enumerable:!0,get:function(){return j}});const R=Z("packages/modules/form/styles.js").NS;function $(C){return Array.isArray(C)?C.map(S=>{if(typeof S=="string")return{value:S,label:S};if(S&&typeof S=="object"){const x=S.value==null?"":String(S.value),h=S.label!=null?String(S.label):S.text!=null?String(S.text):x;return{value:x,label:h}}return{value:"",label:""}}):[]}function q(C){const S=C&&C.props?C.props:{},x=C&&C.orientation!=null?C.orientation:S.orientation;let h=C&&C.columns!=null?C.columns:S.columns;return h=typeof h=="number"&&Number.isFinite(h)&&h>=1?Math.floor(h):0,h>0?{orientation:"vertical",columns:h}:{orientation:x==="horizontal"?"horizontal":"vertical",columns:0}}function k(){return`
|
|
1832
1832
|
.${R}__radiogroup--horizontal,
|
|
1833
1833
|
.${R}__checkboxgroup--horizontal{
|
|
1834
1834
|
flex-direction:row; flex-wrap:wrap; align-items:center;
|
|
@@ -2162,6 +2162,6 @@ ${r}
|
|
|
2162
2162
|
${l}
|
|
2163
2163
|
${T}
|
|
2164
2164
|
${d}
|
|
2165
|
-
`.trim()}function t(l){const d=l&&l.documentElement;if(!d||d.getAttribute(x))return;d.setAttribute(x,"1");const T=l.createElement("style");T.textContent=_(),(l.head||l.body||d).appendChild(T)}function a(l){return n.includes(l)?l:"bottom-right"}function i(l){return c.includes(l)?l:"primary"}function f(l,d){return b.includes(d)?d:l.startsWith("top-")?"down":l.startsWith("bottom-")?"up":l==="middle-left"?"right":"left"}function v(l){switch(l){case"top-left":return{startAngle:0,endAngle:-90};case"top-center":return{startAngle:225,endAngle:315};case"top-right":return{startAngle:180,endAngle:270};case"middle-left":return{startAngle:90,endAngle:-90};case"middle-right":return{startAngle:270,endAngle:90};case"bottom-left":return{startAngle:0,endAngle:90};case"bottom-center":return{startAngle:135,endAngle:45};case"bottom-right":return{startAngle:180,endAngle:90};default:return{startAngle:180,endAngle:90}}}function m(l,d){const T=d&&typeof d=="object"?d:{},U=v(l),z=typeof T.startAngle=="number"?T.startAngle:U.startAngle,L=typeof T.endAngle=="number"?T.endAngle:U.endAngle,y=typeof T.offset=="number"&&T.offset>0?T.offset:0;return{startAngle:z,endAngle:L,offset:y,defaulted:T.startAngle==null&&T.endAngle==null}}function g(l,d){const T=C[d];if(!T)return null;const U=l.createElementNS(h,"svg");U.setAttribute("viewBox",T.viewBox||"0 0 16 16"),U.setAttribute("aria-hidden","true"),U.setAttribute("focusable","false");const z=T.paint==="stroke";for(const L of T.paths||[]){const y=l.createElementNS(h,"path");y.setAttribute("d",L),z?(y.setAttribute("fill","none"),y.setAttribute("stroke","currentColor"),y.setAttribute("stroke-width","1.5"),y.setAttribute("stroke-linecap","round"),y.setAttribute("stroke-linejoin","round")):y.setAttribute("fill","currentColor"),U.appendChild(y)}return U}function H(l,d){if(l==null)return null;if(typeof l=="object"&&l.nodeType)return l;if(typeof l!="string"||l==="")return null;const T=l;if(/^(https?:)?\/\//i.test(T)||/^data:/i.test(T)){const U=d.createElement("img");return U.src=T,U.alt="",U}return g(d,T)}function u(l,d,T){const U=l&&l.defaultView;return U&&U.CustomEvent?new U.CustomEvent(d,{bubbles:!0,detail:T}):{type:d,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,detail:T,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function s(l){return Array.isArray(l)?l.map(d=>{const T=d&&typeof d=="object"?d:{};return{id:T.id,icon:T.icon,text:T.text,disabled:T.disabled===!0,render:typeof T.render=="function"?T.render:null}}):[]}function o(l,d){const T="var(--lat-sd-size)",U="var(--lat-sd-gap)",z="var(--lat-sd-pad)";if(d==="up"||d==="down"){const M={flexDirection:"column"};return l.endsWith("-left")?(M.insetInlineStart=z,M.alignItems="flex-start"):l.endsWith("-right")?(M.insetInlineEnd=z,M.alignItems="flex-end"):(M.left="50%",M.transform="translateX(-50%)",M.alignItems="center"),d==="down"?M.top=`calc(${z} + ${T} + ${U})`:M.bottom=`calc(${z} + ${T} + ${U})`,M}const y={flexDirection:"row"};return l.startsWith("top-")?(y.top=z,y.alignItems="flex-start"):l.startsWith("bottom-")?(y.bottom=z,y.alignItems="flex-end"):(y.top="50%",y.transform="translateY(-50%)",y.alignItems="center"),d==="right"?y.insetInlineStart=`calc(${z} + ${T} + ${U})`:y.insetInlineEnd=`calc(${z} + ${T} + ${U})`,y}function r(l,d={}){const T=d.doc||l&&l.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;T&&t(T);const U=typeof d.t=="function"?d.t:q,z=d.inForm===!0,L=d.emitter||null,y=d.itemName!=null?String(d.itemName):"",M=d.formItem||null,W=a(d.position),B=d.fixed===!0,ne=d.openOnHover===!0,Ae=d.mode==="radial"?"radial":"linear",we=i(d.variant),ce=f(W,d.direction),A=d.modal===!0,oe=d.text!=null?String(d.text):"",te=d.openIcon!=null?d.openIcon:"plus",E=d.closeIcon!=null?d.closeIcon:"close",F=Ae==="radial"?m(W,d.radial):null;let w=d.disabled===!0,G=s(d.items);const Y=T.createElement("div");Y.className=S,Y.setAttribute("data-variant",we),Y.setAttribute("data-fixed",B?"true":"false"),z||Y.setAttribute("data-lattice-standalone","true");const ie=P("lat-speeddial-menu"),D=T.createElement("button");D.type="button",D.className=`${S}__fab`,D.setAttribute("data-position",W),D.setAttribute("aria-haspopup","menu"),D.setAttribute("aria-expanded","false"),D.setAttribute("aria-controls",ie),oe&&D.setAttribute("data-text","true");const J=T.createElement("span");if(J.className=`${S}__fab-icon`,J.setAttribute("aria-hidden","true"),D.appendChild(J),oe){const ge=T.createElement("span");ge.className=`${S}__fab-text`,ge.textContent=oe,D.appendChild(ge)}const ae=T.createElement("div");ae.className=`${S}__backdrop`,ae.hidden=!0;const V=T.createElement("div");V.className=`${S}__menu`,V.setAttribute("role","menu"),V.setAttribute("aria-label",U("form.speeddial.menu")),V.id=ie,V.setAttribute("data-mode",Ae),Ae==="linear"&&V.setAttribute("data-direction",ce),V.hidden=!0,Y.appendChild(ae),Y.appendChild(V),Y.appendChild(D);let se=!1;const X=[];let p=!1;const I=(ge,Re)=>{L?L.emit(ge,{name:y,item:M,...Re}):l.dispatchEvent(u(T,ge,Re))},Q=()=>oe||U(se?"form.speeddial.close":"form.speeddial.open"),re=()=>{for(;J.firstChild;)J.removeChild(J.firstChild);const ge=H(se?E:te,T);ge&&J.appendChild(ge)},me=(ge,Re)=>{const Te=T.createElement("button");Te.type="button",Te.className=`${S}__item`,Te.setAttribute("role","menuitem"),Te.setAttribute("tabindex","-1"),Te.dataset.index=String(Re);const Ge=ge.text!=null&&String(ge.text)!==""?String(ge.text):ge.id!=null?String(ge.id):"";Ge&&Te.setAttribute("aria-label",Ge),ge.disabled&&Te.setAttribute("aria-disabled","true");const Ke=H(ge.icon,T),We=ge.text!=null?String(ge.text):"";if(typeof ge.render=="function"){const he=ge.render(ge,Re);he&&typeof he=="object"&&he.nodeType?Te.appendChild(he):Te.textContent=he!=null?String(he):""}else{if(Ke){const he=T.createElement("span");he.className=`${S}__item-icon`,he.setAttribute("aria-hidden","true"),he.appendChild(Ke),Te.appendChild(he)}if(We!==""){const he=T.createElement("span");he.className=`${S}__item-text`,he.textContent=We,Te.appendChild(he)}}Te.setAttribute("data-icon-only",Ke!=null&&We===""?"true":"false"),Te.setAttribute("data-text-only",Ke==null&&We!==""?"true":"false");const fe=he=>{he.stopPropagation(),!(ge.disabled||w)&&(I("itemClick",{item:ge,index:Re}),Se(!1),D.focus())};Te.addEventListener("click",fe),X.push(()=>Te.removeEventListener("click",fe));const Me=he=>{he.key==="Escape"?(he.preventDefault(),he.stopPropagation(),Se(!1),D.focus()):he.key==="ArrowDown"||he.key==="ArrowRight"?(he.preventDefault(),je(Re,1)):(he.key==="ArrowUp"||he.key==="ArrowLeft")&&(he.preventDefault(),je(Re,-1))};return Te.addEventListener("keydown",Me),X.push(()=>Te.removeEventListener("keydown",Me)),Te};let be=[];const ke=()=>{for(;V.firstChild;)V.removeChild(V.firstChild);be=G.map((ge,Re)=>me(ge,Re));for(const ge of be)V.appendChild(ge);re()},Le=()=>{if(Ae!=="radial"||!F)return;const ge=D.getBoundingClientRect(),Re=B?0:Y.getBoundingClientRect().left,Te=B?0:Y.getBoundingClientRect().top,Ge=ge.left+ge.width/2-Re,Ke=ge.top+ge.height/2-Te,We=F.offset||Math.round(ge.width/2+28);let fe=F.startAngle,Me=F.endAngle;if(F.defaulted&&getComputedStyle(Y).direction==="rtl"){const $e=180-Me;Me=180-fe,fe=$e}const he=be.length;be.forEach(($e,ot)=>{const Qe=(he<=1?(fe+Me)/2:fe+(Me-fe)*(ot/(he-1)))*Math.PI/180;$e.style.left=`${Math.round(Ge+We*Math.cos(Qe))}px`,$e.style.top=`${Math.round(Ke-We*Math.sin(Qe))}px`})},Se=(ge,Re={})=>{p||w||se===ge||(se=ge,D.setAttribute("aria-expanded",se?"true":"false"),D.setAttribute("aria-label",Q()),V.hidden=!se,A&&(ae.hidden=!se),re(),se?(I("open",{}),Le(),Re.focusItems!==!1&&je(-1,1)):I("close",{}))},je=(ge,Re)=>{const Te=be.length;if(Te===0)return;let Ge=ge===-1?Re>0?0:Te-1:(ge+Re+Te)%Te;for(let Ke=0;Ke<Te;Ke+=1){if(!G[Ge].disabled){be[Ge].focus();return}Ge=(Ge+Re+Te)%Te}},O=()=>{Se(!0,{focusItems:!1})},ee=()=>{se&&(Se(!1),D.focus())},de=()=>{Se(!se,{focusItems:!1})};if(Ae==="linear"){const ge=o(W,ce);for(const Re of Object.keys(ge))V.style[Re]=ge[Re]}const K=()=>{w||de()};D.addEventListener("click",K),X.push(()=>D.removeEventListener("click",K));const pe=()=>{ne&&!w&&Se(!0,{focusItems:!1})};D.addEventListener("pointerenter",pe),X.push(()=>D.removeEventListener("pointerenter",pe));const Ce=()=>{ne&&se&&Se(!1)};Y.addEventListener("pointerleave",Ce),X.push(()=>Y.removeEventListener("pointerleave",Ce));const ye=ge=>{ge.stopPropagation(),ee()};ae.addEventListener("click",ye),X.push(()=>ae.removeEventListener("click",ye));const ve=ge=>{if(!se)return;const Re=ge.target;Re&&Y.contains(Re)||ee()};T.addEventListener("pointerdown",ve,!0),X.push(()=>T.removeEventListener("pointerdown",ve,!0));const Ie=ge=>{!se||ge.key!=="Escape"||(ge.preventDefault(),ee())};T.addEventListener("keydown",Ie,!0),X.push(()=>T.removeEventListener("keydown",Ie,!0));const He=ge=>{ge.key==="Escape"?se&&(ge.preventDefault(),ge.stopPropagation(),ee()):ge.key==="ArrowDown"||ge.key==="ArrowRight"?(ge.preventDefault(),Se(!0),je(-1,1)):(ge.key==="ArrowUp"||ge.key==="ArrowLeft")&&(ge.preventDefault(),Se(!0),je(-1,-1))};D.addEventListener("keydown",He),X.push(()=>D.removeEventListener("keydown",He));const Ee=ge=>{w=ge===!0,D.disabled=w,D.setAttribute("aria-disabled",w?"true":"false"),w&&se&&Se(!1)},De={el:Y,fab:D,menu:V,open:O,close:ee,toggle:de,setItems(ge){G=s(ge),ke()},setDisabled:Ee,destroy(){p=!0;for(const ge of X.splice(0))ge();for(;Y.firstChild;)Y.removeChild(Y.firstChild);Y.parentNode&&Y.parentNode.removeChild(Y)}};return Ee(w),ke(),l.appendChild(Y),l.__latSpeedDial=De,De}R("speeddial",{kind:"button",action:!0,build(l,d){const T=l.props||{},U=d.doc.createElement("div"),z=r(U,{items:T.speedDialItems||T.items,position:T.position,fixed:T.fixed,openOnHover:T.openOnHover,direction:T.direction,mode:l.mode,radial:T.radial,modal:T.modal,openIcon:T.openIcon,closeIcon:T.closeIcon,text:T.text!=null?T.text:l.label,variant:T.variant,disabled:l.disabled,t:d.t,doc:d.doc,inForm:!0,emitter:d.emitter,itemName:l.name,formItem:l});return d.disposers.push(()=>z.destroy()),U},read(){return null},write(){},state(l,d){const T=l&&l.__latSpeedDial;T&&T.setDisabled(d.disabled===!0)}})}),Ne("packages/modules/form/controls/multipart-upload.js",function(N,Z){"use strict";Object.defineProperty(N,"uploadMultipart",{enumerable:!0,get:function(){return e}});function e(R,$,q={}){return new Promise((k,P)=>{const j=new XMLHttpRequest,C=new FormData,S=$.fieldName||"file";if($.params)for(const[x,h]of Object.entries($.params))C.append(x,String(h));if(C.append(S,R,R.name),j.open("POST",$.target,!0),$.headers)for(const[x,h]of Object.entries($.headers))j.setRequestHeader(x,h);if(j.upload.addEventListener("progress",x=>{q.onProgress&&x.lengthComputable&&q.onProgress(Math.round(x.loaded/x.total*100))}),j.addEventListener("load",()=>{if(j.status>=200&&j.status<300){let x=j.responseText;try{x=JSON.parse(j.responseText)}catch{}k(x)}else P(new Error(`upload failed with status ${j.status}`))}),j.addEventListener("error",()=>P(new Error("upload failed"))),j.addEventListener("abort",()=>P(new Error("upload aborted"))),q.signal){if(q.signal.aborted){j.abort();return}q.signal.addEventListener("abort",()=>j.abort())}j.send(C)})}}),Ne("packages/modules/form/controls/avatar.js",function(N,Z){"use strict";const R=Z("packages/modules/form/controls/registry.js").registerControl,$=Z("packages/modules/form/controls/field-icon.js"),q=$.makeFieldIcon,k=$.injectFieldIconStyles,P=Z("packages/modules/form/controls/file.js"),j=P.accepts,C=P.formatSize,x=Z("packages/modules/form/controls/multipart-upload.js").uploadMultipart,h=Object.freeze({small:40,medium:64,large:96}),n=Object.freeze({photo:"M3 4.5h2l1-1.5h4l1 1.5h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM8 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"});function c(f){return f}function b(f,v){const m="http://www.w3.org/2000/svg",g=f.createElementNS(m,"svg");g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("focusable","false"),g.setAttribute("aria-hidden","true");const H=f.createElementNS(m,"path");return H.setAttribute("d",v),H.setAttribute("fill","currentColor"),g.appendChild(H),g}function _(f){return typeof f=="number"&&Number.isFinite(f)&&f>0?f:typeof f=="string"&&h[f]?h[f]:h.medium}function t(f,v){const m=v&&v.defaultView,g=m&&m.Event,H=g?new g("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};f.dispatchEvent(H)}function a(f){if(!f||typeof f!="object")return null;const v=f;return v.src==null||v.src===""?null:v}function i(f){return new Promise((v,m)=>{const g=new FileReader;g.onload=()=>v(String(g.result)),g.onerror=()=>m(g.error||new Error("could not read the file")),g.readAsDataURL(f)})}R("avatar",{kind:"field",build(f,v){const m=v.doc,g=v.t||c;k(m);const H=f.props||{},u=Array.isArray(H.accept)&&H.accept.length?H.accept.map(String):["image/*"],s=Number(H.maxSize)||0,o=m.createElement("div");o.className="lat-form__avatar";const r={value:a(f.value),rejectedMessage:null,accept:u,maxSize:s,size:_(H.size),circle:H.circle===!0,alt:H.alt!=null?String(H.alt):"",preview:H.preview!=null&&H.preview!==""?String(H.preview):null,icon:H.icon,placeholder:f.placeholder!=null&&f.placeholder!==""?String(f.placeholder):g("form.avatar.placeholder"),removeIcon:H.removeIcon!==!1,upload:H.upload&&typeof H.upload=="object"?H.upload:null,disabled:f.disabled===!0,readOnly:f.readOnly===!0,label:f.label!=null&&f.label!==""?String(f.label):null};o.__latAvatar=r;const l=m.createElement("input");l.type="file",l.className="lat-form__avatar-input",l.tabIndex=-1,l.setAttribute("aria-hidden","true"),u.length&&(l.accept=u.join(",")),o.appendChild(l);const d=m.createElement("button");d.type="button",d.className="lat-form__avatar-picture",o.appendChild(d);const T=m.createElement("button");T.type="button",T.className="lat-form__avatar-remove",T.setAttribute("aria-label",g("form.avatar.remove")),T.title=g("form.avatar.remove"),T.appendChild(q(m,"close")||b(m,n.photo)),o.appendChild(T);const U=m.createElement("span");return U.className="lat-form__avatar-status",o.appendChild(U),o.style.setProperty("--lat-avatar-size",`${r.size}px`),o.__latPaint=()=>{o.style.setProperty("--lat-avatar-size",`${r.size}px`),d.classList.toggle("lat-form__avatar-picture--circle",r.circle);const z=r.disabled||r.readOnly;d.disabled=z,d.tabIndex=z?-1:0,d.setAttribute("aria-label",r.label||g("form.avatar.choose")),d.textContent="";const L=r.value&&r.value.src?r.value.src:null;if(L){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=L,M.alt=r.alt,d.appendChild(M)}else if(r.preview){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=r.preview,M.alt=r.alt,d.appendChild(M)}else if(r.icon!=null&&r.icon!==!1){if(typeof r.icon=="object"&&r.icon.nodeType)d.appendChild(r.icon);else if(typeof r.icon=="string"){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=r.icon,M.alt=r.alt,d.appendChild(M)}}else{const M=m.createElement("span");M.className="lat-form__avatar-placeholder",M.appendChild(b(m,n.photo));const W=m.createElement("span");W.className="lat-form__avatar-placeholder-text",W.textContent=r.placeholder,M.appendChild(W),d.appendChild(M)}const y=!!(r.value&&r.value.src);T.hidden=!y||!r.removeIcon||r.disabled||r.readOnly,T.disabled=r.disabled||r.readOnly,U.textContent="",U.className="lat-form__avatar-status",r.value&&r.value.status==="uploading"?(U.classList.add("lat-form__avatar-status--uploading"),U.textContent=`${Math.round(r.value.progress||0)}%`):r.value&&r.value.status==="failed"&&(U.classList.add("lat-form__avatar-status--failed"),U.textContent=r.value.message||g("form.avatar.uploadFailed"))},o.__latStartUpload=()=>{const z=r.upload,L=r.value;!z||!L||!L.file||z.autosend===!1||(L.status="uploading",L.progress=0,o.__latPaint(),x(L.file,z,{onProgress(y){r.value===L&&(L.progress=y,o.__latPaint())}}).then(y=>{r.value===L&&(L.status="done",L.progress=100,z.updateFromResponse!==!1&&y&&typeof y=="object"&&(y.src!=null&&(L.src=String(y.src)),y.id!=null&&(L.id=y.id)),o.__latPaint(),t(o,m))},y=>{r.value===L&&(L.status="failed",L.message=y&&y.message?String(y.message):g("form.avatar.uploadFailed"),o.__latPaint(),t(o,m))}))},o.__latAdmit=z=>{if(!(!z||r.disabled||r.readOnly)){if(r.maxSize&&z.size>r.maxSize){r.rejectedMessage=g("form.avatar.rejected.size",{size:C(r.maxSize)});return}if(!j(z,r.accept)){r.rejectedMessage=g("form.avatar.rejected.type");return}r.rejectedMessage=null,i(z).then(L=>{r.value={src:L,file:z,name:z.name,size:z.size,status:"pending"},o.__latPaint(),t(o,m),o.__latStartUpload()})}},o.__latRemove=()=>{r.disabled||r.readOnly||(r.value=null,o.__latPaint(),t(o,m))},l.addEventListener("change",()=>{const z=l.files&&l.files[0];o.__latAdmit(z),l.value=""}),d.addEventListener("click",()=>{r.disabled||r.readOnly||l.click()}),d.addEventListener("keydown",z=>{r.disabled||r.readOnly||(z.key==="Enter"||z.key===" "||z.key==="Spacebar")&&(z.preventDefault(),l.click())}),T.addEventListener("click",z=>{z.stopPropagation(),o.__latRemove()}),["dragenter","dragover"].forEach(z=>d.addEventListener(z,L=>{r.disabled||r.readOnly||(L.preventDefault(),d.classList.add("lat-form__avatar-picture--dragover"))})),d.addEventListener("dragleave",()=>{d.classList.remove("lat-form__avatar-picture--dragover")}),d.addEventListener("drop",z=>{if(z.preventDefault(),d.classList.remove("lat-form__avatar-picture--dragover"),r.disabled||r.readOnly)return;const L=z.dataTransfer&&z.dataTransfer.files&&z.dataTransfer.files[0];o.__latAdmit(L)}),o.__latPaint(),r.value&&r.value.file&&r.value.status==="pending"&&o.__latStartUpload(),o},read(f){return f.__latAvatar?f.__latAvatar.value:null},write(f,v){const m=f.__latAvatar;m&&(m.value=a(v),f.__latPaint&&f.__latPaint())},state(f,v){const m=f.__latAvatar;m&&(m.disabled=v.disabled===!0,m.readOnly=v.readOnly===!0,m.disabled?f.setAttribute("aria-disabled","true"):f.removeAttribute("aria-disabled"),m.readOnly?f.setAttribute("aria-readonly","true"):f.removeAttribute("aria-readonly"),f.__latPaint&&f.__latPaint())},validate(f,v,m){const g=f.__latAvatar;return g&&g.rejectedMessage?g.rejectedMessage:null},focus(f){const v=f.querySelector(".lat-form__avatar-picture");v&&v.focus()}})}),Ne("packages/modules/form/controls/togglegroup.js",function(N,Z){"use strict";const R=Z("packages/modules/form/controls/registry.js").registerControl,q=Z("packages/modules/form/controls/button.js").buildIcon,k="lat-form__togglegroup",P="lat-form__togglegroup-btn";function j(x,h){const n=x!==null&&typeof x=="object"?x:{},c=n.id!=null?String(n.id):n.value!=null?String(n.value):String(h),b=n.text!=null?String(n.text):c;return{id:c,text:b,offText:n.offText!=null?String(n.offText):b,icon:n.icon!=null?n.icon:null,offIcon:n.offIcon!=null?n.offIcon:n.icon,selected:n.selected===!0,disabled:n.disabled===!0,hidden:n.hidden===!0,full:n.full===!0}}function C(x,h){const n=h&&h.defaultView,c=n&&n.Event,b=c?new c("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};x.dispatchEvent(b)}function S(x){return typeof x=="number"&&Number.isFinite(x)&&x>=0?x:0}R("togglegroup",{kind:"field",build(x,h){const n=h.doc,c=x.props||{},b=c.multiselect===!0,_=c.full===!0,t=n.createElement("div");t.className=k,t.setAttribute("role","group"),t.setAttribute("aria-label",x.label!=null&&x.label!==""?String(x.label):h.t("form.togglegroup")),t.style.setProperty("--lat-form-gap",`${S(c.gap)}px`),_&&t.setAttribute("data-full","true");const a=(Array.isArray(x.options)?x.options:[]).map(j).filter(s=>!s.hidden),i=[],f={},v={doc:n,options:a,buttons:i,pressed:f,multiselect:b,disabled:x.disabled===!0,readOnly:x.readOnly===!0};t.__latToggleGroup=v;for(const s of a){const o=n.createElement("button");o.type="button",o.className=P,o.setAttribute("data-index",String(i.length)),s.full&&o.setAttribute("data-full","true"),o.disabled=s.disabled||v.disabled,o.__tg={opt:s,pressed:!1},t.appendChild(o),i.push(o),f[s.id]=!1}const m=s=>{const o=s.__tg,r=o.opt,l=o.pressed;s.setAttribute("aria-pressed",l?"true":"false"),s.removeAttribute("aria-label"),s.textContent="";const d=q(l?r.icon:r.offIcon,n);d&&s.appendChild(d);const T=l?r.text:r.offText;if(T!==""){const U=n.createElement("span");U.className=`${P}-label`,U.textContent=T,s.appendChild(U)}else d&&s.setAttribute("aria-label",r.id)},g=()=>{for(const s of i)s.__tg.pressed=f[s.__tg.opt.id]===!0,m(s)},H=s=>{if(s.disabled||v.disabled||v.readOnly)return!1;if(b)f[s.id]=!f[s.id];else{if(f[s.id])return!1;for(const o of a)f[o.id]=o.id===s.id}return g(),!0},u=x.value!=null&&typeof x.value=="object"?x.value:{};for(const s of a)f[s.id]=u[s.id]===!0;if(b)for(const s of a)f[s.id]=f[s.id]||s.selected===!0;else{let s=a.find(o=>f[o.id]);s||(s=a.find(o=>o.selected)),s||(s=a[0]);for(const o of a)f[o.id]=o.id===(s&&s.id)}return g(),t.addEventListener("click",s=>{const o=s.target&&s.target.closest?s.target.closest(`.${P}`):null;if(!o||!t.contains(o)||!o.__tg)return;const r=o.__tg.opt;H(r)&&(t.__latChangeDetail={id:r.id,pressed:f[r.id]},C(t,n))}),t.__latKey=s=>{if(s.key!=="ArrowLeft"&&s.key!=="ArrowRight")return;const o=i.filter(T=>!T.disabled);if(!o.length)return;const r=o.indexOf(n.activeElement),l=s.key==="ArrowRight"?1:-1,d=r===-1?l===1?0:o.length-1:r+l;d<0||d>=o.length||(s.preventDefault(),o[d].focus())},t.addEventListener("keydown",t.__latKey),t},read(x){const h=x&&x.__latToggleGroup,n={};if(!h)return n;for(const c of h.options)n[c.id]=h.pressed[c.id]===!0;return n},write(x,h){const n=x&&x.__latToggleGroup;if(!n)return;const c=h!=null&&typeof h=="object"&&!Array.isArray(h)?h:{};for(const _ of n.options)n.pressed[_.id]=c[_.id]===!0;if(!n.multiselect){const _=n.options.find(t=>n.pressed[t.id]);for(const t of n.options)n.pressed[t.id]=t.id===(_?_.id:n.options[0]&&n.options[0].id)}for(const _ of n.buttons)_.__tg.pressed=n.pressed[_.__tg.opt.id]===!0;const b=n.doc;for(const _ of n.buttons){const t=_.__tg,a=t.opt,i=t.pressed;_.setAttribute("aria-pressed",i?"true":"false"),_.removeAttribute("aria-label"),_.textContent="";const f=q(i?a.icon:a.offIcon,b);f&&_.appendChild(f);const v=i?a.text:a.offText;if(v!==""){const m=b.createElement("span");m.className=`${P}-label`,m.textContent=v,_.appendChild(m)}else f&&_.setAttribute("aria-label",a.id)}},state(x,h){const n=x&&x.__latToggleGroup;if(n){n.disabled=h.disabled===!0,n.readOnly=h.readOnly===!0,n.readOnly?x.setAttribute("aria-readonly","true"):x.removeAttribute("aria-readonly"),n.disabled?x.setAttribute("aria-disabled","true"):x.removeAttribute("aria-disabled");for(const c of n.buttons)c.disabled=n.disabled||c.__tg.opt.disabled}},focus(x){const h=x&&x.__latToggleGroup,n=h&&h.buttons.find(c=>!c.disabled);n&&typeof n.focus=="function"&&n.focus()}})}),Ne("packages/modules/form/controls/index.js",function(N,Z){"use strict";const e=Z("packages/modules/form/controls/input.js"),R=Z("packages/modules/form/controls/number.js"),$=Z("packages/modules/form/controls/textarea.js"),q=Z("packages/modules/form/controls/checkbox.js"),k=Z("packages/modules/form/controls/button.js"),P=Z("packages/modules/form/controls/buttons.js"),j=Z("packages/modules/form/controls/text.js"),C=Z("packages/modules/form/controls/combo.js"),S=Z("packages/modules/form/controls/select.js"),x=Z("packages/modules/form/controls/listbox.js"),h=Z("packages/modules/form/controls/radiogroup.js"),n=Z("packages/modules/form/controls/checkboxgroup.js"),c=Z("packages/modules/form/controls/toggle.js"),b=Z("packages/modules/form/controls/datepicker.js"),_=Z("packages/modules/form/controls/time.js"),t=Z("packages/modules/form/controls/daterange.js"),a=Z("packages/modules/form/controls/file.js"),i=Z("packages/modules/form/controls/richtext.js"),f=Z("packages/modules/form/controls/rating.js"),v=Z("packages/modules/form/controls/stage.js"),m=Z("packages/modules/form/controls/chips.js"),g=Z("packages/modules/form/controls/otp.js"),H=Z("packages/modules/form/controls/color.js"),u=Z("packages/modules/form/controls/barcode.js"),s=Z("packages/modules/form/controls/speeddial.js"),o=Z("packages/modules/form/controls/container.js"),r=Z("packages/modules/form/controls/avatar.js"),l=Z("packages/modules/form/controls/togglegroup.js")}),Ne("packages/modules/form/create.js",function(N,Z){"use strict";Object.defineProperty(N,"createForm",{enumerable:!0,get:function(){return y}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return M}});const e=Z("packages/modules/form/styles.js"),R=e.NS,$=e.injectStyles,q=Z("packages/modules/form/model.js"),k=q.resolveConfig,P=q.DENSITIES,j=q.cssSize,C=Z("packages/modules/form/view.js"),S=C.markValidation,x=C.mount,h=C.runValidation,n=C.validateItem,c=C.wizardBack,b=C.wizardGoTo,_=C.wizardNext,t=Z("packages/modules/form/emitter.js"),a=t.Emitter,i=t.FORM_EVENTS,v=Z("packages/modules/form/messages.js").createTranslator,m=Z("packages/modules/form/bind.js"),g=m.resolveBind,H=m.applyBinding,s=Z("packages/modules/form/rules.js").applyRules,r=Z("packages/modules/form/state.js").syncRecordState,l=Z("packages/modules/form/controls/container.js"),d=l.attachToContainer,T=l.attachHtmlToContainer,U=l.getContainerWidget,z=Z("packages/modules/form/controls/index.js");function L(W){if(Array.isArray(W))return W.map(L);if(W==null||typeof W!="object"||typeof W.nodeType=="number"||Object.getPrototypeOf(W)!==Object.prototype)return W;const B=W.type==="buttons"?"buttons":W.type==="speeddial"?"speedDialItems":null,ne=B!=null&&Array.isArray(W.items),Ae={};for(const we of Object.keys(W))ne&&we==="items"||(Ae[we]=L(W[we]));return ne&&(Ae[B]=W.items.map(L)),Ae}function y(W,B={}){const ne=W&&W.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,Ae=g(B);let we=B;if(Ae){if(we={...B},we.density===void 0){const G=Ae.density();G!=null&&(we.density=G)}if(!(Array.isArray(we.rows)&&we.rows.length||Array.isArray(we.cols)&&we.cols.length)){const G=Ae.items();G.length&&(we.rows=[{items:G}])}}const ce=k(L(we)),A={el:W||null,doc:ne,model:ce,config:ce,items:new Map,order:[],emitter:new a,t:v(ce.messages).t,disposers:[],dirty:new Set,conflicts:new Set,baseline:{},bound:null},oe=w=>(w.facade||(w.facade={el:w.el,item:w.item,name:w.item.name,getValue(){return w.value},setValue(G){return w.def.write(w.control,G),w.value=w.def.read(w.control),w.item.value=w.value,s(A),w.facade},show(){return w.hidden=!1,w.el.hidden=!1,w.facade},hide(){return w.hidden=!0,w.el.hidden=!0,w.facade},isVisible(){return!(w.hidden||w.ruleHidden)},disable(){return w.item.disabled=!0,r(w),w.facade},enable(){return w.item.disabled=!1,r(w),w.facade},focus(){return typeof w.def.focus=="function"?w.def.focus(w.control):typeof w.control.focus=="function"&&w.control.focus(),w.facade},blur(){return typeof w.def.blur=="function"?w.def.blur(w.control):typeof w.control.blur=="function"&&w.control.blur(),w.facade},validate(){return n(A,w)},setLoading(G){return typeof w.def.setLoading=="function"&&w.def.setLoading(w.control,G===!0),w.facade},setOptions(G){const Y=w.control&&(w.control.__combo||w.control.__select);return Y&&typeof Y.setOptions=="function"&&(Y.setOptions(G),w.item.options=G),w.facade},reload(){const G=w.control&&(w.control.__combo||w.control.__select);return G&&typeof G.reload=="function"&&G.reload(),w.facade}},w.def.kind==="container"&&(w.facade.attach=(G,Y)=>(d(w.control,G,Y),w.facade),w.facade.attachHTML=G=>(T(A.doc,w.control,G),w.facade),w.facade.getWidget=()=>U(w.control))),w.facade);W&&ne&&$(ne);const te=W&&typeof W.style.cssText=="string"?W.style.cssText:"",E=new Set(["field","toggle","display"]),F={el:W||null,config:ce,getItem(w){const G=A.items.get(String(w));return G?oe(G):void 0},getValue(){const w={};for(const G of A.order)G.item.name!=null&&E.has(G.def.kind)&&(w[G.item.name]=G.value);return w},setValue(w){if(w==null||typeof w!="object")return F;for(const G of Object.keys(w)){const Y=A.items.get(G);Y&&oe(Y).setValue(w[G])}return F},clear(){for(const w of A.order)if(w.item.name!=null)if(w.def.kind==="field"){const G=w.item.props&&w.item.props.multiple===!0,Y=w.item.type==="togglegroup"?{}:w.item.type==="chips"?G?[]:null:w.item.type==="number"||w.item.type==="radiogroup"||w.item.type==="datepicker"||w.item.type==="stage"||w.item.type==="combo"&&!G?null:w.item.type==="rating"?0:w.item.type==="file"||w.item.type==="checkboxgroup"||(w.item.type==="select"||w.item.type==="combo")&&G?[]:"";w.value=Y,w.item.value=Y,w.def.write(w.control,Y)}else w.def.kind==="toggle"&&(w.value=!1,w.item.value=!1,w.def.write(w.control,!1));return s(A),F},validate(){const w=[];let G=!0;for(const Y of A.order){if(Y.item.name==null||Y.def.kind!=="field"&&Y.def.kind!=="toggle"||Y.item.disabled===!0||Y.ruleHidden===!0||Y.hidden===!0||(typeof Y.def.reset=="function"&&Y.def.reset(Y.control,Y.item),Y.item.required!==!0&&Y.item.validation==null&&typeof Y.def.validate!="function"&&Y.ruleRequired!==!0))continue;const ie=h(A,Y);S(A,Y,ie),ie&&(G=!1,w.push({name:Y.item.name,rule:ie.code,message:ie.message}))}return A.emitter.emit("validated",{name:null,item:null,value:void 0,valid:G,failures:w}),G},forEach(w){for(const G of A.order)w(oe(G))},on(w,G){return w!=="*"&&!i.includes(w)?(console.warn(`lattice-form: "${w}" is not a form event and will never fire.`),()=>{}):A.emitter.on(w,G)},off(w,G){A.emitter.off(w,G)},setDensity(w){return P.includes(w)&&(ce.density=w,W&&W.setAttribute("data-density",w)),F},setReadOnly(w){for(const G of A.order)G.item.readOnly=w===!0,r(G);return F},setDisabled(w){for(const G of A.order)G.item.disabled=w===!0,r(G);return F},setSpacing(w){const G=w==null?null:j(w);return ce.spacing=G,W&&(G==null?W.style.removeProperty("--lattice-form-item-gap"):W.style.setProperty("--lattice-form-item-gap",G)),F},isDirty(w){return w==null?A.dirty.size>0:A.dirty.has(String(w))},isConflicted(w){return w==null?A.conflicts.size>0:A.conflicts.has(String(w))},save(){const w=A.bound;if(!w)return!1;if(A.dirty.size===0)return!0;const G={};for(const D of A.dirty){const J=F.getItem(D);J&&(G[D]=J.getValue())}const Y=w.save(G),ie=D=>{if(!D)return!1;for(const J of Object.keys(G))A.baseline[J]=G[J],A.dirty.delete(J),A.conflicts.delete(J);return!0};return Y&&typeof Y.then=="function"?Y.then(ie):ie(Y)},revert(){for(const w of A.dirty){if(!Object.hasOwn(A.baseline,w))continue;const G=A.items.get(w);G&&oe(G).setValue(A.baseline[w])}return A.dirty.clear(),A.conflicts.clear(),F},_bind(w){return H(A,F,w),F},_commit(w){for(const G of Object.keys(w||{}))A.baseline[G]=w[G],A.dirty.delete(G),A.conflicts.delete(G)},get steps(){return A.model.steps||[]},get activeStep(){return A.wizard?A.wizard.active:0},next(){return _(A)},back(){return c(A)},goToStep(w){return b(A,w)},__reapplyRules(){return s(A),F},destroy(){for(const G of A.disposers.splice(0))G();A.emitter.clear();const w=A.el;if(w){for(;w.firstChild;)w.removeChild(w.firstChild);w.classList.remove(R),w.removeAttribute("data-density"),w.removeAttribute("data-lattice-standalone"),w.style.cssText=te,w.__latticeForm===F&&(w.__latticeForm=null)}A.items.clear(),A.order.length=0,A.dirty.clear(),A.conflicts.clear(),A.baseline={},A.bound=null}};return W&&(W.__latticeForm=F),A.form=F,W&&ne&&x(A),Ae&&H(A,F,Ae),F}const M=y}),Ne("packages/modules/form/group.js",function(N,Z){"use strict";Object.defineProperty(N,"GROUP_EVENTS",{enumerable:!0,get:function(){return x}}),Object.defineProperty(N,"createFormGroup",{enumerable:!0,get:function(){return t}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return a}});const R=Z("packages/modules/form/emitter.js").Emitter,q=Z("packages/modules/form/bind-router.js").routerBinding,k=Z("packages/modules/form/group-rules.js"),P=k.attachRuleResolver,j=k.detachRuleResolver,C=k.makeRuleResolver,S=k.reapplyMembers,x=Object.freeze(["change","validated"]),h=new Set;function n(i){const f={},v=i.getValue();for(const m of Object.keys(v))i.isDirty(m)===!0&&(f[m]=v[m]);return f}function c(i,f){h.has(i)||(h.add(i),console.warn("[lattice]",f))}const b=new WeakMap;function _(i,f){let v=b.get(i);if(!v){const m=i.destroy;v={original:m,watchers:new Set},b.set(i,v),i.destroy=function(){const H=b.get(i)||v;for(const u of[...H.watchers])u.detach(i);return m.call(i)}}v.watchers.add(f)}function t(i,f={}){const v=[],m=new Map,g=new Map,H=new R,u=f&&typeof f.bind=="object"&&f.bind.router!=null?f.bind:null,s=u?q(u):null,o=()=>{m.clear(),g.clear();for(const U of v){const z=Object.keys(U.form.getValue());for(const L of z)m.has(L)?c(`form.group.duplicate-field:${L}`,`form group: the field "${L}" is owned by more than one form; the first one added wins.`):m.set(L,U);U.id!=null&&!g.has(U.id)&&g.set(U.id,U)}},r=C({owners:m,byId:g,warnOnce:c}),l=U=>{const z=v.findIndex(M=>M.form===U);if(z===-1)return!1;const[L]=v.splice(z,1);for(const M of L.unsubs)M();o();const y=b.get(U);return y&&(y.watchers.delete(d),y.watchers.size===0&&(b.delete(U),U.destroy=y.original)),j(U),typeof U.__reapplyRules=="function"&&U.__reapplyRules(),S(v),!0},d={detach:l},T={get forms(){return v.map(U=>U.form)},add(U,z){if(!U||typeof U!="object"||typeof U.getValue!="function"||v.some(W=>W.form===U))return T;const L={form:U,id:z&&z.id,unsubs:[],lastFailures:[]};v.push(L),s&&typeof U._bind=="function"&&U._bind(s);const y=W=>{H.emit("change",{form:U,name:W.name,value:W.value}),S(v)},M=W=>{L.lastFailures=W.failures||[],H.emit("validated",{form:U,valid:W.valid})};return L.unsubs.push(U.on("change",y)),L.unsubs.push(U.on("validated",M)),_(U,d),o(),P(U,r),S(v),T},remove(U){return l(U),T},getValue(){const U={};for(const z of v)Object.assign(U,z.form.getValue());return f.transform&&typeof f.transform.get=="function"?f.transform.get(U):U},setValue(U){if(f.transform&&typeof f.transform.set=="function")f.transform.set(U);else if(U!=null&&typeof U=="object")for(const z of Object.keys(U)){const L=m.get(z);L&&L.form.setValue({[z]:U[z]})}return S(v),T},getItem(U){const z=m.get(String(U));return z?z.form.getItem(U):void 0},validate(){let U=!0;const z=[];for(const L of v){L.form.validate()===!1&&(U=!1);for(const M of L.lastFailures||[])z.push({form:L.form,name:M.name})}if(!U){const L=z.find(y=>y.name!=null);if(L){const y=L.form.getItem(L.name);y&&(y.focus(),y.el&&typeof y.el.scrollIntoView=="function"&&y.el.scrollIntoView({block:"nearest"}))}}return U},setReadOnly(U){for(const z of v)z.form.setReadOnly(U===!0);return T},setDisabled(U){for(const z of v)z.form.setDisabled(U===!0);return T},clear(){for(const U of v)U.form.clear();return T},reset(){for(const U of v)typeof U.form.revert=="function"&&U.form.revert();return T},save(){if(!s)return!1;const U=v.map(M=>({member:M,changes:n(M.form)})),z={};for(const M of U)Object.assign(z,M.changes);if(!Object.keys(z).length)return!0;const L=s.save(z),y=M=>{if(!M)return!1;for(const W of U)W.member.form&&typeof W.member.form._commit=="function"&&W.member.form._commit(W.changes);return!0};return L&&typeof L.then=="function"?L.then(y):y(L)},isDirty(){return v.some(U=>U.form.isDirty()===!0)},on(U,z){return U!=="*"&&!x.includes(U)?(console.warn(`lattice-form: "${U}" is not a form group event and will never fire.`),()=>{}):H.on(U,z)},off(U,z){H.off(U,z)},destroy(){for(;v.length;){const U=v[v.length-1].form;l(U)}H.clear()}};if(Array.isArray(i))for(const U of i)T.add(U);else i&&typeof i=="object"&&typeof i.getValue=="function"&&T.add(i);return T}const a=t}),Ne("packages/modules/form/enhance.js",function(N,Z){"use strict";Object.defineProperty(N,"itemForField",{enumerable:!0,get:function(){return C}}),Object.defineProperty(N,"configForForm",{enumerable:!0,get:function(){return S}}),Object.defineProperty(N,"enhanceForm",{enumerable:!0,get:function(){return x}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return h}});const R=Z("packages/modules/form/create.js").createForm,$=Object.freeze(["text","email","password","url"]);function q(n){const c=n&&n.type?String(n.type).toLowerCase():"";return c==="submit"||c==="image"||n&&n.tagName==="BUTTON"&&c!=="button"}function k(n){if(!n||!n.name)return!1;const c=n&&n.type?String(n.type).toLowerCase():"";return!(c==="submit"||c==="button"||c==="reset"||c==="image"||c==="hidden"||c==="file"||n.tagName==="BUTTON")}function P(n,c){if(typeof n.getAttribute=="function"){const b=n.getAttribute("data-label");if(b!=null&&b!=="")return b;const _=n.getAttribute("aria-label");if(_!=null&&_!=="")return _}if(n.id&&typeof c.querySelector=="function"){const b=c.querySelector(`label[for="${n.id}"]`);if(b&&b.textContent!=null){const _=String(b.textContent).trim();if(_)return _}}return String(n.name||"")}function j(n){return n.type==="checkbox"?n.checked===!0:n.value==null?"":n.value}function C(n,c){if(q(n)||!k(n))return null;const b=n.type?String(n.type).toLowerCase():"text",_={type:"input",name:n.name,label:P(n,c),value:j(n)};if(b==="number")_.type="number",n.min!=null&&n.min!==""&&(_.min=Number(n.min)),n.max!=null&&n.max!==""&&(_.max=Number(n.max)),n.step!=null&&n.step!==""&&(_.step=Number(n.step));else if(b==="checkbox")_.type="checkbox";else if(n.tagName==="TEXTAREA")_.type="textarea";else if($.includes(b))_.subtype=b,(b==="email"||b==="url")&&(_.validation=b);else return null;if(n.placeholder!=null&&n.placeholder!==""&&(_.placeholder=n.placeholder),n.required===!0&&(_.required=!0),n.disabled===!0&&(_.disabled=!0),n.readOnly===!0&&(_.readOnly=!0),typeof n.getAttribute=="function"){const t=n.getAttribute("data-validation")||n.getAttribute("data-rule");t&&(_.validation=t);const a=n.getAttribute("data-error-message");a&&(_.errorMessage=a);const i=n.getAttribute("data-help");i&&(_.helpMessage=i)}return _}function S(n,c){const b=n&&n.ownerDocument||(typeof document<"u"?document:null),_=[],t=n&&n.elements?n.elements:[];for(const a of t){const i=C(a,b);i&&_.push(i)}return{...c||{},rows:_}}function x(n,c){if(!n)return null;if(n.__latticeForm)return n.__latticeForm;const b=n.ownerDocument||(typeof document<"u"?document:null),_=[],t=n.elements?n.elements:[];for(const i of t)q(i)&&_.push(i);const a=R(n,S(n,c));n.__latticeForm=a;for(const i of _)i.parentNode!==n&&n.appendChild(i);return typeof n.addEventListener=="function"&&b&&n.addEventListener("submit",i=>{a.validate()||(i.preventDefault(),i.stopImmediatePropagation())},!0),a}const h=x}),Ne("packages/modules/form/index.js",function(N,Z){"use strict";Object.defineProperty(N,"registerControl",{enumerable:!0,get:function(){return h}}),Object.defineProperty(N,"createForm",{enumerable:!0,get:function(){return P}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return n}});const R=Z("packages/modules/form/styles.js").NS,q=Z("packages/modules/form/controls/registry.js").registerControl,P=Z("packages/modules/form/create.js").createForm,j=Z("packages/modules/form/controls/combo.js");Object.defineProperty(N,"createCombo",{enumerable:!0,get:function(){return j.createCombo}});const C=Z("packages/modules/form/controls/speeddial.js");Object.defineProperty(N,"createSpeedDial",{enumerable:!0,get:function(){return C.createSpeedDial}});const S=Z("packages/modules/form/group.js");Object.defineProperty(N,"createFormGroup",{enumerable:!0,get:function(){return S.createFormGroup}});const x=Z("packages/modules/form/enhance.js");Object.defineProperty(N,"enhanceForm",{enumerable:!0,get:function(){return x.enhanceForm}});function h(c,b){if(b===null||typeof b!="object"||typeof b.create!="function"){console.warn("lattice-form: registerControl needs a definition with a create(el, item, api) function.");return}const _=typeof b.getValue=="function"?b.getValue:()=>null,t=typeof b.setValue=="function"?b.setValue:()=>{};q(String(c),{kind:"field",custom:!0,validate:typeof b.validate=="function"?(a,i,f)=>b.validate(f,i,a):void 0,destroy:typeof b.destroy=="function"?a=>b.destroy(a):void 0,build(a,i){const f=i.doc.createElement("div");f.className=`${R}__custom`;const v={name:a.name,item:a,getValue(){return v._read?v._read():void 0},setValue(m){v._write&&v._write(m)},onChange(m){v._commit&&v._commit(m===void 0?_():m)},onInput(m){v._input&&v._input(m===void 0?_():m)}};return f.__latticeFormApi=v,b.create(f,a,v),t(f,a.value),f},read(a){return _(a)},write(a,i){t(a,i)},state(a,i){a.setAttribute("data-disabled",i.disabled===!0?"true":"false"),a.setAttribute("data-readonly",i.readOnly===!0?"true":"false")}})}const n=P});var zt=Gt("packages/modules/form/index.js");typeof module=="object"&&module.exports?module.exports=zt:typeof define=="function"&&define.amd?define(function(){return zt}):qt.LatticeGridForm=zt})(typeof globalThis<"u"?globalThis:this);
|
|
2165
|
+
`.trim()}function t(l){const d=l&&l.documentElement;if(!d||d.getAttribute(x))return;d.setAttribute(x,"1");const T=l.createElement("style");T.textContent=_(),(l.head||l.body||d).appendChild(T)}function a(l){return n.includes(l)?l:"bottom-right"}function i(l){return c.includes(l)?l:"primary"}function f(l,d){return b.includes(d)?d:l.startsWith("top-")?"down":l.startsWith("bottom-")?"up":l==="middle-left"?"right":"left"}function v(l){switch(l){case"top-left":return{startAngle:0,endAngle:-90};case"top-center":return{startAngle:225,endAngle:315};case"top-right":return{startAngle:180,endAngle:270};case"middle-left":return{startAngle:90,endAngle:-90};case"middle-right":return{startAngle:270,endAngle:90};case"bottom-left":return{startAngle:0,endAngle:90};case"bottom-center":return{startAngle:135,endAngle:45};case"bottom-right":return{startAngle:180,endAngle:90};default:return{startAngle:180,endAngle:90}}}function m(l,d){const T=d&&typeof d=="object"?d:{},U=v(l),z=typeof T.startAngle=="number"?T.startAngle:U.startAngle,L=typeof T.endAngle=="number"?T.endAngle:U.endAngle,y=typeof T.offset=="number"&&T.offset>0?T.offset:0;return{startAngle:z,endAngle:L,offset:y,defaulted:T.startAngle==null&&T.endAngle==null}}function g(l,d){const T=C[d];if(!T)return null;const U=l.createElementNS(h,"svg");U.setAttribute("viewBox",T.viewBox||"0 0 16 16"),U.setAttribute("aria-hidden","true"),U.setAttribute("focusable","false");const z=T.paint==="stroke";for(const L of T.paths||[]){const y=l.createElementNS(h,"path");y.setAttribute("d",L),z?(y.setAttribute("fill","none"),y.setAttribute("stroke","currentColor"),y.setAttribute("stroke-width","1.5"),y.setAttribute("stroke-linecap","round"),y.setAttribute("stroke-linejoin","round")):y.setAttribute("fill","currentColor"),U.appendChild(y)}return U}function H(l,d){if(l==null)return null;if(typeof l=="object"&&l.nodeType)return l;if(typeof l!="string"||l==="")return null;const T=l;if(/^(https?:)?\/\//i.test(T)||/^data:/i.test(T)){const U=d.createElement("img");return U.src=T,U.alt="",U}return g(d,T)}function u(l,d,T){const U=l&&l.defaultView;return U&&U.CustomEvent?new U.CustomEvent(d,{bubbles:!0,detail:T}):{type:d,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,detail:T,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function s(l){return Array.isArray(l)?l.map(d=>{const T=d&&typeof d=="object"?d:{};return{id:T.id,icon:T.icon,text:T.text,disabled:T.disabled===!0,render:typeof T.render=="function"?T.render:null}}):[]}function o(l,d){const T="var(--lat-sd-size)",U="var(--lat-sd-gap)",z="var(--lat-sd-pad)";if(d==="up"||d==="down"){const M={flexDirection:"column"};return l.endsWith("-left")?(M.insetInlineStart=z,M.alignItems="flex-start"):l.endsWith("-right")?(M.insetInlineEnd=z,M.alignItems="flex-end"):(M.left="50%",M.transform="translateX(-50%)",M.alignItems="center"),d==="down"?M.top=`calc(${z} + ${T} + ${U})`:M.bottom=`calc(${z} + ${T} + ${U})`,M}const y={flexDirection:"row"};return l.startsWith("top-")?(y.top=z,y.alignItems="flex-start"):l.startsWith("bottom-")?(y.bottom=z,y.alignItems="flex-end"):(y.top="50%",y.transform="translateY(-50%)",y.alignItems="center"),d==="right"?y.insetInlineStart=`calc(${z} + ${T} + ${U})`:y.insetInlineEnd=`calc(${z} + ${T} + ${U})`,y}function r(l,d={}){const T=d.doc||l&&l.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;T&&t(T);const U=typeof d.t=="function"?d.t:q,z=d.inForm===!0,L=d.emitter||null,y=d.itemName!=null?String(d.itemName):"",M=d.formItem||null,W=a(d.position),B=d.fixed===!0,ne=d.openOnHover===!0,Ae=d.mode==="radial"?"radial":"linear",we=i(d.variant),ce=f(W,d.direction),A=d.modal===!0,oe=d.text!=null?String(d.text):"",te=d.openIcon!=null?d.openIcon:"plus",E=d.closeIcon!=null?d.closeIcon:"close",F=Ae==="radial"?m(W,d.radial):null;let w=d.disabled===!0,G=s(d.items);const Y=T.createElement("div");Y.className=S,Y.setAttribute("data-variant",we),Y.setAttribute("data-fixed",B?"true":"false"),z||Y.setAttribute("data-lattice-standalone","true");const ie=P("lat-speeddial-menu"),D=T.createElement("button");D.type="button",D.className=`${S}__fab`,D.setAttribute("data-position",W),D.setAttribute("aria-haspopup","menu"),D.setAttribute("aria-expanded","false"),D.setAttribute("aria-controls",ie),oe&&D.setAttribute("data-text","true");const J=T.createElement("span");if(J.className=`${S}__fab-icon`,J.setAttribute("aria-hidden","true"),D.appendChild(J),oe){const ge=T.createElement("span");ge.className=`${S}__fab-text`,ge.textContent=oe,D.appendChild(ge)}const ae=T.createElement("div");ae.className=`${S}__backdrop`,ae.hidden=!0;const V=T.createElement("div");V.className=`${S}__menu`,V.setAttribute("role","menu"),V.setAttribute("aria-label",U("form.speeddial.menu")),V.id=ie,V.setAttribute("data-mode",Ae),Ae==="linear"&&V.setAttribute("data-direction",ce),V.hidden=!0,Y.appendChild(ae),Y.appendChild(V),Y.appendChild(D);let se=!1;const X=[];let p=!1;const I=(ge,Re)=>{L?L.emit(ge,{name:y,item:M,...Re}):l.dispatchEvent(u(T,ge,Re))},Q=()=>oe||U(se?"form.speeddial.close":"form.speeddial.open"),re=()=>{for(;J.firstChild;)J.removeChild(J.firstChild);const ge=H(se?E:te,T);ge&&J.appendChild(ge)},me=(ge,Re)=>{const Te=T.createElement("button");Te.type="button",Te.className=`${S}__item`,Te.setAttribute("role","menuitem"),Te.setAttribute("tabindex","-1"),Te.dataset.index=String(Re);const Ge=ge.text!=null&&String(ge.text)!==""?String(ge.text):ge.id!=null?String(ge.id):"";Ge&&Te.setAttribute("aria-label",Ge),ge.disabled&&Te.setAttribute("aria-disabled","true");const Ke=H(ge.icon,T),We=ge.text!=null?String(ge.text):"";if(typeof ge.render=="function"){const he=ge.render(ge,Re);he&&typeof he=="object"&&he.nodeType?Te.appendChild(he):Te.textContent=he!=null?String(he):""}else{if(Ke){const he=T.createElement("span");he.className=`${S}__item-icon`,he.setAttribute("aria-hidden","true"),he.appendChild(Ke),Te.appendChild(he)}if(We!==""){const he=T.createElement("span");he.className=`${S}__item-text`,he.textContent=We,Te.appendChild(he)}}Te.setAttribute("data-icon-only",Ke!=null&&We===""?"true":"false"),Te.setAttribute("data-text-only",Ke==null&&We!==""?"true":"false");const fe=he=>{he.stopPropagation(),!(ge.disabled||w)&&(I("itemClick",{item:ge,index:Re}),Se(!1),D.focus())};Te.addEventListener("click",fe),X.push(()=>Te.removeEventListener("click",fe));const Me=he=>{he.key==="Escape"?(he.preventDefault(),he.stopPropagation(),Se(!1),D.focus()):he.key==="ArrowDown"||he.key==="ArrowRight"?(he.preventDefault(),je(Re,1)):(he.key==="ArrowUp"||he.key==="ArrowLeft")&&(he.preventDefault(),je(Re,-1))};return Te.addEventListener("keydown",Me),X.push(()=>Te.removeEventListener("keydown",Me)),Te};let be=[];const ke=()=>{for(;V.firstChild;)V.removeChild(V.firstChild);be=G.map((ge,Re)=>me(ge,Re));for(const ge of be)V.appendChild(ge);re()},Le=()=>{if(Ae!=="radial"||!F)return;const ge=D.getBoundingClientRect(),Re=B?0:Y.getBoundingClientRect().left,Te=B?0:Y.getBoundingClientRect().top,Ge=ge.left+ge.width/2-Re,Ke=ge.top+ge.height/2-Te,We=F.offset||Math.round(ge.width/2+28);let fe=F.startAngle,Me=F.endAngle;if(F.defaulted&&getComputedStyle(Y).direction==="rtl"){const $e=180-Me;Me=180-fe,fe=$e}const he=be.length;be.forEach(($e,ot)=>{const Qe=(he<=1?(fe+Me)/2:fe+(Me-fe)*(ot/(he-1)))*Math.PI/180;$e.style.left=`${Math.round(Ge+We*Math.cos(Qe))}px`,$e.style.top=`${Math.round(Ke-We*Math.sin(Qe))}px`})},Se=(ge,Re={})=>{p||w||se===ge||(se=ge,D.setAttribute("aria-expanded",se?"true":"false"),D.setAttribute("aria-label",Q()),V.hidden=!se,A&&(ae.hidden=!se),re(),se?(I("open",{}),Le(),Re.focusItems!==!1&&je(-1,1)):I("close",{}))},je=(ge,Re)=>{const Te=be.length;if(Te===0)return;let Ge=ge===-1?Re>0?0:Te-1:(ge+Re+Te)%Te;for(let Ke=0;Ke<Te;Ke+=1){if(!G[Ge].disabled){be[Ge].focus();return}Ge=(Ge+Re+Te)%Te}},O=()=>{Se(!0,{focusItems:!1})},ee=()=>{se&&(Se(!1),D.focus())},de=()=>{Se(!se,{focusItems:!1})};if(Ae==="linear"){const ge=o(W,ce);for(const Re of Object.keys(ge))V.style[Re]=ge[Re]}const K=()=>{w||de()};D.addEventListener("click",K),X.push(()=>D.removeEventListener("click",K));const pe=()=>{ne&&!w&&Se(!0,{focusItems:!1})};D.addEventListener("pointerenter",pe),X.push(()=>D.removeEventListener("pointerenter",pe));const Ce=()=>{ne&&se&&Se(!1)};Y.addEventListener("pointerleave",Ce),X.push(()=>Y.removeEventListener("pointerleave",Ce));const ye=ge=>{ge.stopPropagation(),ee()};ae.addEventListener("click",ye),X.push(()=>ae.removeEventListener("click",ye));const ve=ge=>{if(!se)return;const Re=ge.target;Re&&Y.contains(Re)||ee()};T.addEventListener("pointerdown",ve,!0),X.push(()=>T.removeEventListener("pointerdown",ve,!0));const Ie=ge=>{!se||ge.key!=="Escape"||(ge.preventDefault(),ee())};T.addEventListener("keydown",Ie,!0),X.push(()=>T.removeEventListener("keydown",Ie,!0));const He=ge=>{ge.key==="Escape"?se&&(ge.preventDefault(),ge.stopPropagation(),ee()):ge.key==="ArrowDown"||ge.key==="ArrowRight"?(ge.preventDefault(),Se(!0),je(-1,1)):(ge.key==="ArrowUp"||ge.key==="ArrowLeft")&&(ge.preventDefault(),Se(!0),je(-1,-1))};D.addEventListener("keydown",He),X.push(()=>D.removeEventListener("keydown",He));const Ee=ge=>{w=ge===!0,D.disabled=w,D.setAttribute("aria-disabled",w?"true":"false"),w&&se&&Se(!1)},De={el:Y,fab:D,menu:V,open:O,close:ee,toggle:de,setItems(ge){G=s(ge),ke()},setDisabled:Ee,destroy(){p=!0;for(const ge of X.splice(0))ge();for(;Y.firstChild;)Y.removeChild(Y.firstChild);Y.parentNode&&Y.parentNode.removeChild(Y)}};return Ee(w),ke(),l.appendChild(Y),l.__latSpeedDial=De,De}R("speeddial",{kind:"button",action:!0,build(l,d){const T=l.props||{},U=d.doc.createElement("div"),z=r(U,{items:T.speedDialItems||T.items,position:T.position,fixed:T.fixed,openOnHover:T.openOnHover,direction:T.direction,mode:l.mode,radial:T.radial,modal:T.modal,openIcon:T.openIcon,closeIcon:T.closeIcon,text:T.text!=null?T.text:l.label,variant:T.variant,disabled:l.disabled,t:d.t,doc:d.doc,inForm:!0,emitter:d.emitter,itemName:l.name,formItem:l});return d.disposers.push(()=>z.destroy()),U},read(){return null},write(){},state(l,d){const T=l&&l.__latSpeedDial;T&&T.setDisabled(d.disabled===!0)}})}),Ne("packages/modules/form/controls/multipart-upload.js",function(N,Z){"use strict";Object.defineProperty(N,"uploadMultipart",{enumerable:!0,get:function(){return e}});function e(R,$,q={}){return new Promise((k,P)=>{const j=new XMLHttpRequest,C=new FormData,S=$.fieldName||"file";if($.params)for(const[x,h]of Object.entries($.params))C.append(x,String(h));if(C.append(S,R,R.name),j.open("POST",$.target,!0),$.headers)for(const[x,h]of Object.entries($.headers))j.setRequestHeader(x,h);if(j.upload.addEventListener("progress",x=>{q.onProgress&&x.lengthComputable&&q.onProgress(Math.round(x.loaded/x.total*100))}),j.addEventListener("load",()=>{if(j.status>=200&&j.status<300){let x=j.responseText;try{x=JSON.parse(j.responseText)}catch{}k(x)}else P(new Error(`upload failed with status ${j.status}`))}),j.addEventListener("error",()=>P(new Error("upload failed"))),j.addEventListener("abort",()=>P(new Error("upload aborted"))),q.signal){if(q.signal.aborted){j.abort();return}q.signal.addEventListener("abort",()=>j.abort())}j.send(C)})}}),Ne("packages/modules/form/controls/avatar.js",function(N,Z){"use strict";const R=Z("packages/modules/form/controls/registry.js").registerControl,$=Z("packages/modules/form/controls/field-icon.js"),q=$.makeFieldIcon,k=$.injectFieldIconStyles,P=Z("packages/modules/form/controls/file.js"),j=P.accepts,C=P.formatSize,x=Z("packages/modules/form/controls/multipart-upload.js").uploadMultipart,h=Object.freeze({small:40,medium:64,large:96}),n=Object.freeze({photo:"M3 4.5h2l1-1.5h4l1 1.5h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM8 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"});function c(f){return f}function b(f,v){const m="http://www.w3.org/2000/svg",g=f.createElementNS(m,"svg");g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("focusable","false"),g.setAttribute("aria-hidden","true");const H=f.createElementNS(m,"path");return H.setAttribute("d",v),H.setAttribute("fill","currentColor"),g.appendChild(H),g}function _(f){return typeof f=="number"&&Number.isFinite(f)&&f>0?f:typeof f=="string"&&h[f]?h[f]:h.medium}function t(f,v){const m=v&&v.defaultView,g=m&&m.Event,H=g?new g("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};f.dispatchEvent(H)}function a(f){if(!f||typeof f!="object")return null;const v=f;return v.src==null||v.src===""?null:v}function i(f){return new Promise((v,m)=>{const g=new FileReader;g.onload=()=>v(String(g.result)),g.onerror=()=>m(g.error||new Error("could not read the file")),g.readAsDataURL(f)})}R("avatar",{kind:"field",build(f,v){const m=v.doc,g=v.t||c;k(m);const H=f.props||{},u=Array.isArray(H.accept)&&H.accept.length?H.accept.map(String):["image/*"],s=Number(H.maxSize)||0,o=m.createElement("div");o.className="lat-form__avatar";const r={value:a(f.value),rejectedMessage:null,accept:u,maxSize:s,size:_(H.size),circle:H.circle===!0,alt:H.alt!=null?String(H.alt):"",preview:H.preview!=null&&H.preview!==""?String(H.preview):null,icon:H.icon,placeholder:f.placeholder!=null&&f.placeholder!==""?String(f.placeholder):g("form.avatar.placeholder"),removeIcon:H.removeIcon!==!1,upload:H.upload&&typeof H.upload=="object"?H.upload:null,disabled:f.disabled===!0,readOnly:f.readOnly===!0,label:f.label!=null&&f.label!==""?String(f.label):null};o.__latAvatar=r;const l=m.createElement("input");l.type="file",l.className="lat-form__avatar-input",l.tabIndex=-1,l.setAttribute("aria-hidden","true"),u.length&&(l.accept=u.join(",")),o.appendChild(l);const d=m.createElement("button");d.type="button",d.className="lat-form__avatar-picture",o.appendChild(d);const T=m.createElement("button");T.type="button",T.className="lat-form__avatar-remove",T.setAttribute("aria-label",g("form.avatar.remove")),T.title=g("form.avatar.remove"),T.appendChild(q(m,"close")||b(m,n.photo)),o.appendChild(T);const U=m.createElement("span");return U.className="lat-form__avatar-status",o.appendChild(U),o.style.setProperty("--lat-avatar-size",`${r.size}px`),o.__latPaint=()=>{o.style.setProperty("--lat-avatar-size",`${r.size}px`),d.classList.toggle("lat-form__avatar-picture--circle",r.circle);const z=r.disabled||r.readOnly;d.disabled=z,d.tabIndex=z?-1:0,d.setAttribute("aria-label",r.label||g("form.avatar.choose")),d.textContent="";const L=r.value&&r.value.src?r.value.src:null;if(L){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=L,M.alt=r.alt,d.appendChild(M)}else if(r.preview){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=r.preview,M.alt=r.alt,d.appendChild(M)}else if(r.icon!=null&&r.icon!==!1){if(typeof r.icon=="object"&&r.icon.nodeType)d.appendChild(r.icon);else if(typeof r.icon=="string"){const M=m.createElement("img");M.className="lat-form__avatar-img",M.src=r.icon,M.alt=r.alt,d.appendChild(M)}}else{const M=m.createElement("span");M.className="lat-form__avatar-placeholder",M.appendChild(b(m,n.photo));const W=m.createElement("span");W.className="lat-form__avatar-placeholder-text",W.textContent=r.placeholder,M.appendChild(W),d.appendChild(M)}const y=!!(r.value&&r.value.src);T.hidden=!y||!r.removeIcon||r.disabled||r.readOnly,T.disabled=r.disabled||r.readOnly,U.textContent="",U.className="lat-form__avatar-status",r.value&&r.value.status==="uploading"?(U.classList.add("lat-form__avatar-status--uploading"),U.textContent=`${Math.round(r.value.progress||0)}%`):r.value&&r.value.status==="failed"&&(U.classList.add("lat-form__avatar-status--failed"),U.textContent=r.value.message||g("form.avatar.uploadFailed"))},o.__latStartUpload=()=>{const z=r.upload,L=r.value;!z||!L||!L.file||z.autosend===!1||(L.status="uploading",L.progress=0,o.__latPaint(),x(L.file,z,{onProgress(y){r.value===L&&(L.progress=y,o.__latPaint())}}).then(y=>{r.value===L&&(L.status="done",L.progress=100,z.updateFromResponse!==!1&&y&&typeof y=="object"&&(y.src!=null&&(L.src=String(y.src)),y.id!=null&&(L.id=y.id)),o.__latPaint(),t(o,m))},y=>{r.value===L&&(L.status="failed",L.message=y&&y.message?String(y.message):g("form.avatar.uploadFailed"),o.__latPaint(),t(o,m))}))},o.__latAdmit=z=>{if(!(!z||r.disabled||r.readOnly)){if(r.maxSize&&z.size>r.maxSize){r.rejectedMessage=g("form.avatar.rejected.size",{size:C(r.maxSize)});return}if(!j(z,r.accept)){r.rejectedMessage=g("form.avatar.rejected.type");return}r.rejectedMessage=null,i(z).then(L=>{r.value={src:L,file:z,name:z.name,size:z.size,status:"pending"},o.__latPaint(),t(o,m),o.__latStartUpload()})}},o.__latRemove=()=>{r.disabled||r.readOnly||(r.value=null,o.__latPaint(),t(o,m))},l.addEventListener("change",()=>{const z=l.files&&l.files[0];o.__latAdmit(z),l.value=""}),d.addEventListener("click",()=>{r.disabled||r.readOnly||l.click()}),d.addEventListener("keydown",z=>{r.disabled||r.readOnly||(z.key==="Enter"||z.key===" "||z.key==="Spacebar")&&(z.preventDefault(),l.click())}),T.addEventListener("click",z=>{z.stopPropagation(),o.__latRemove()}),["dragenter","dragover"].forEach(z=>d.addEventListener(z,L=>{r.disabled||r.readOnly||(L.preventDefault(),d.classList.add("lat-form__avatar-picture--dragover"))})),d.addEventListener("dragleave",()=>{d.classList.remove("lat-form__avatar-picture--dragover")}),d.addEventListener("drop",z=>{if(z.preventDefault(),d.classList.remove("lat-form__avatar-picture--dragover"),r.disabled||r.readOnly)return;const L=z.dataTransfer&&z.dataTransfer.files&&z.dataTransfer.files[0];o.__latAdmit(L)}),o.__latPaint(),r.value&&r.value.file&&r.value.status==="pending"&&o.__latStartUpload(),o},read(f){return f.__latAvatar?f.__latAvatar.value:null},write(f,v){const m=f.__latAvatar;m&&(m.value=a(v),f.__latPaint&&f.__latPaint())},state(f,v){const m=f.__latAvatar;m&&(m.disabled=v.disabled===!0,m.readOnly=v.readOnly===!0,m.disabled?f.setAttribute("aria-disabled","true"):f.removeAttribute("aria-disabled"),m.readOnly?f.setAttribute("aria-readonly","true"):f.removeAttribute("aria-readonly"),f.__latPaint&&f.__latPaint())},validate(f,v,m){const g=f.__latAvatar;return g&&g.rejectedMessage?g.rejectedMessage:null},focus(f){const v=f.querySelector(".lat-form__avatar-picture");v&&v.focus()}})}),Ne("packages/modules/form/controls/togglegroup.js",function(N,Z){"use strict";const R=Z("packages/modules/form/controls/registry.js").registerControl,q=Z("packages/modules/form/controls/button.js").buildIcon,k="lat-form__togglegroup",P="lat-form__togglegroup-btn";function j(x,h){const n=x!==null&&typeof x=="object"?x:{},c=n.id!=null?String(n.id):n.value!=null?String(n.value):String(h),b=n.text!=null?String(n.text):c;return{id:c,text:b,offText:n.offText!=null?String(n.offText):b,icon:n.icon!=null?n.icon:null,offIcon:n.offIcon!=null?n.offIcon:n.icon,selected:n.selected===!0,disabled:n.disabled===!0,hidden:n.hidden===!0,full:n.full===!0}}function C(x,h){const n=h&&h.defaultView,c=n&&n.Event,b=c?new c("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};x.dispatchEvent(b)}function S(x){return typeof x=="number"&&Number.isFinite(x)&&x>=0?x:0}R("togglegroup",{kind:"field",build(x,h){const n=h.doc,c=x.props||{},b=c.multiselect===!0,_=c.full===!0,t=n.createElement("div");t.className=k,t.setAttribute("role","group"),t.setAttribute("aria-label",x.label!=null&&x.label!==""?String(x.label):h.t("form.togglegroup")),t.style.setProperty("--lat-form-gap",`${S(c.gap)}px`),_&&t.setAttribute("data-full","true");const a=(Array.isArray(x.options)?x.options:[]).map(j).filter(s=>!s.hidden),i=[],f={},v={doc:n,options:a,buttons:i,pressed:f,multiselect:b,disabled:x.disabled===!0,readOnly:x.readOnly===!0};t.__latToggleGroup=v;for(const s of a){const o=n.createElement("button");o.type="button",o.className=P,o.setAttribute("data-index",String(i.length)),s.full&&o.setAttribute("data-full","true"),o.disabled=s.disabled||v.disabled,o.__tg={opt:s,pressed:!1},t.appendChild(o),i.push(o),f[s.id]=!1}const m=s=>{const o=s.__tg,r=o.opt,l=o.pressed;s.setAttribute("aria-pressed",l?"true":"false"),s.removeAttribute("aria-label"),s.textContent="";const d=q(l?r.icon:r.offIcon,n);d&&s.appendChild(d);const T=l?r.text:r.offText;if(T!==""){const U=n.createElement("span");U.className=`${P}-label`,U.textContent=T,s.appendChild(U)}else d&&s.setAttribute("aria-label",r.id)},g=()=>{for(const s of i)s.__tg.pressed=f[s.__tg.opt.id]===!0,m(s)},H=s=>{if(s.disabled||v.disabled||v.readOnly)return!1;if(b)f[s.id]=!f[s.id];else{if(f[s.id])return!1;for(const o of a)f[o.id]=o.id===s.id}return g(),!0},u=x.value!=null&&typeof x.value=="object"?x.value:{};for(const s of a)f[s.id]=u[s.id]===!0;if(b)for(const s of a)f[s.id]=f[s.id]||s.selected===!0;else{let s=a.find(o=>f[o.id]);s||(s=a.find(o=>o.selected)),s||(s=a[0]);for(const o of a)f[o.id]=o.id===(s&&s.id)}return g(),t.addEventListener("click",s=>{const o=s.target&&s.target.closest?s.target.closest(`.${P}`):null;if(!o||!t.contains(o)||!o.__tg)return;const r=o.__tg.opt;H(r)&&(t.__latChangeDetail={id:r.id,pressed:f[r.id]},C(t,n))}),t.__latKey=s=>{if(s.key!=="ArrowLeft"&&s.key!=="ArrowRight")return;const o=i.filter(T=>!T.disabled);if(!o.length)return;const r=o.indexOf(n.activeElement),l=s.key==="ArrowRight"?1:-1,d=r===-1?l===1?0:o.length-1:r+l;d<0||d>=o.length||(s.preventDefault(),o[d].focus())},t.addEventListener("keydown",t.__latKey),t},read(x){const h=x&&x.__latToggleGroup,n={};if(!h)return n;for(const c of h.options)n[c.id]=h.pressed[c.id]===!0;return n},write(x,h){const n=x&&x.__latToggleGroup;if(!n)return;const c=h!=null&&typeof h=="object"&&!Array.isArray(h)?h:{};for(const _ of n.options)n.pressed[_.id]=c[_.id]===!0;if(!n.multiselect){const _=n.options.find(t=>n.pressed[t.id]);for(const t of n.options)n.pressed[t.id]=t.id===(_?_.id:n.options[0]&&n.options[0].id)}for(const _ of n.buttons)_.__tg.pressed=n.pressed[_.__tg.opt.id]===!0;const b=n.doc;for(const _ of n.buttons){const t=_.__tg,a=t.opt,i=t.pressed;_.setAttribute("aria-pressed",i?"true":"false"),_.removeAttribute("aria-label"),_.textContent="";const f=q(i?a.icon:a.offIcon,b);f&&_.appendChild(f);const v=i?a.text:a.offText;if(v!==""){const m=b.createElement("span");m.className=`${P}-label`,m.textContent=v,_.appendChild(m)}else f&&_.setAttribute("aria-label",a.id)}},state(x,h){const n=x&&x.__latToggleGroup;if(n){n.disabled=h.disabled===!0,n.readOnly=h.readOnly===!0,n.readOnly?x.setAttribute("aria-readonly","true"):x.removeAttribute("aria-readonly"),n.disabled?x.setAttribute("aria-disabled","true"):x.removeAttribute("aria-disabled");for(const c of n.buttons)c.disabled=n.disabled||c.__tg.opt.disabled}},focus(x){const h=x&&x.__latToggleGroup,n=h&&h.buttons.find(c=>!c.disabled);n&&typeof n.focus=="function"&&n.focus()}})}),Ne("packages/modules/form/controls/index.js",function(N,Z){"use strict";const e=Z("packages/modules/form/controls/input.js"),R=Z("packages/modules/form/controls/number.js"),$=Z("packages/modules/form/controls/textarea.js"),q=Z("packages/modules/form/controls/checkbox.js"),k=Z("packages/modules/form/controls/button.js"),P=Z("packages/modules/form/controls/buttons.js"),j=Z("packages/modules/form/controls/text.js"),C=Z("packages/modules/form/controls/combo.js"),S=Z("packages/modules/form/controls/select.js"),x=Z("packages/modules/form/controls/listbox.js"),h=Z("packages/modules/form/controls/radiogroup.js"),n=Z("packages/modules/form/controls/checkboxgroup.js"),c=Z("packages/modules/form/controls/toggle.js"),b=Z("packages/modules/form/controls/datepicker.js"),_=Z("packages/modules/form/controls/time.js"),t=Z("packages/modules/form/controls/daterange.js"),a=Z("packages/modules/form/controls/file.js"),i=Z("packages/modules/form/controls/richtext.js"),f=Z("packages/modules/form/controls/rating.js"),v=Z("packages/modules/form/controls/stage.js"),m=Z("packages/modules/form/controls/chips.js"),g=Z("packages/modules/form/controls/otp.js"),H=Z("packages/modules/form/controls/color.js"),u=Z("packages/modules/form/controls/barcode.js"),s=Z("packages/modules/form/controls/speeddial.js"),o=Z("packages/modules/form/controls/container.js"),r=Z("packages/modules/form/controls/avatar.js"),l=Z("packages/modules/form/controls/togglegroup.js")}),Ne("packages/modules/form/create.js",function(N,Z){"use strict";Object.defineProperty(N,"createForm",{enumerable:!0,get:function(){return y}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return M}});const e=Z("packages/modules/form/styles.js"),R=e.NS,$=e.injectStyles,q=Z("packages/modules/form/model.js"),k=q.resolveConfig,P=q.DENSITIES,j=q.cssSize,C=Z("packages/modules/form/view.js"),S=C.markValidation,x=C.mount,h=C.runValidation,n=C.validateItem,c=C.wizardBack,b=C.wizardGoTo,_=C.wizardNext,t=Z("packages/modules/form/emitter.js"),a=t.Emitter,i=t.FORM_EVENTS,v=Z("packages/modules/form/messages.js").createTranslator,m=Z("packages/modules/form/bind.js"),g=m.resolveBind,H=m.applyBinding,s=Z("packages/modules/form/rules.js").applyRules,r=Z("packages/modules/form/state.js").syncRecordState,l=Z("packages/modules/form/controls/container.js"),d=l.attachToContainer,T=l.attachHtmlToContainer,U=l.getContainerWidget,z=Z("packages/modules/form/controls/index.js");function L(W){if(Array.isArray(W))return W.map(L);if(W==null||typeof W!="object"||typeof W.nodeType=="number"||Object.getPrototypeOf(W)!==Object.prototype)return W;const B=W.type==="buttons"?"buttons":W.type==="speeddial"?"speedDialItems":null,ne=B!=null&&Array.isArray(W.items),Ae={};for(const we of Object.keys(W))ne&&we==="items"||(Ae[we]=L(W[we]));return ne&&(Ae[B]=W.items.map(L)),Ae}function y(W,B={}){const ne=W&&W.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,Ae=g(B);let we=B;if(Ae){if(we={...B},we.density===void 0){const G=Ae.density();G!=null&&(we.density=G)}if(!(Array.isArray(we.rows)&&we.rows.length||Array.isArray(we.cols)&&we.cols.length)){const G=Ae.items();G.length&&(we.rows=[{items:G}])}}const ce=k(L(we)),A={el:W||null,doc:ne,model:ce,config:ce,items:new Map,order:[],emitter:new a,t:v(ce.messages).t,disposers:[],dirty:new Set,conflicts:new Set,baseline:{},bound:null},oe=w=>(w.facade||(w.facade={el:w.el,item:w.item,name:w.item.name,getValue(){return w.value},setValue(G){return w.def.write(w.control,G),w.value=w.def.read(w.control),w.item.value=w.value,s(A),w.facade},show(){return w.hidden=!1,w.el.hidden=!1,w.facade},hide(){return w.hidden=!0,w.el.hidden=!0,w.facade},isVisible(){return!(w.hidden||w.ruleHidden)},disable(){return w.item.disabled=!0,r(w),w.facade},enable(){return w.item.disabled=!1,r(w),w.facade},focus(){return typeof w.def.focus=="function"?w.def.focus(w.control):typeof w.control.focus=="function"&&w.control.focus(),w.facade},blur(){return typeof w.def.blur=="function"?w.def.blur(w.control):typeof w.control.blur=="function"&&w.control.blur(),w.facade},validate(){return n(A,w)},setLoading(G){return typeof w.def.setLoading=="function"&&w.def.setLoading(w.control,G===!0),w.facade},setOptions(G){const Y=w.control&&(w.control.__combo||w.control.__select);return Y&&typeof Y.setOptions=="function"&&(Y.setOptions(G),w.item.options=G),w.facade},reload(){const G=w.control&&(w.control.__combo||w.control.__select);return G&&typeof G.reload=="function"&&G.reload(),w.facade}},w.def.kind==="container"&&(w.facade.attach=(G,Y)=>(d(w.control,G,Y),w.facade),w.facade.attachHTML=G=>(T(A.doc,w.control,G),w.facade),w.facade.getWidget=()=>U(w.control))),w.facade);W&&ne&&$(ne);const te=W&&typeof W.style.cssText=="string"?W.style.cssText:"",E=new Set(["field","toggle","display"]),F={el:W||null,config:ce,getItem(w){const G=A.items.get(String(w));return G?oe(G):void 0},getValue(){const w={};for(const G of A.order)G.item.name!=null&&E.has(G.def.kind)&&(w[G.item.name]=G.value);return w},setValue(w){if(w==null||typeof w!="object")return F;for(const G of Object.keys(w)){const Y=A.items.get(G);Y&&oe(Y).setValue(w[G])}return F},clear(){for(const w of A.order)if(w.item.name!=null)if(w.def.kind==="field"){const G=w.item.props&&w.item.props.multiple===!0,Y=w.item.type==="togglegroup"?{}:w.item.type==="chips"?G?[]:null:w.item.type==="number"||w.item.type==="radiogroup"||w.item.type==="datepicker"||w.item.type==="stage"||w.item.type==="combo"&&!G?null:w.item.type==="rating"?0:w.item.type==="file"||w.item.type==="checkboxgroup"||(w.item.type==="select"||w.item.type==="combo")&&G?[]:"";w.value=Y,w.item.value=Y,w.def.write(w.control,Y)}else w.def.kind==="toggle"&&(w.value=!1,w.item.value=!1,w.def.write(w.control,!1));return s(A),F},validate(){const w=[];let G=!0;for(const Y of A.order){if(Y.item.name==null||Y.def.kind!=="field"&&Y.def.kind!=="toggle"||Y.item.disabled===!0||Y.ruleHidden===!0||Y.hidden===!0||(typeof Y.def.reset=="function"&&Y.def.reset(Y.control,Y.item),Y.item.required!==!0&&Y.item.validation==null&&typeof Y.def.validate!="function"&&Y.ruleRequired!==!0))continue;const ie=h(A,Y);S(A,Y,ie),ie&&(G=!1,w.push({name:Y.item.name,rule:ie.code,message:ie.message}))}return A.emitter.emit("validated",{name:null,item:null,value:void 0,valid:G,failures:w}),G},forEach(w){for(const G of A.order)w(oe(G))},on(w,G){return w!=="*"&&!i.includes(w)?(console.warn(`lattice-form: "${w}" is not a form event and will never fire.`),()=>{}):A.emitter.on(w,G)},off(w,G){A.emitter.off(w,G)},setDensity(w){return P.includes(w)&&(ce.density=w,W&&W.setAttribute("data-density",w)),F},setReadOnly(w){for(const G of A.order)G.item.readOnly=w===!0,r(G);return F},setDisabled(w){for(const G of A.order)G.item.disabled=w===!0,r(G);return F},setSpacing(w){const G=w==null?null:j(w);return ce.spacing=G,W&&(G==null?W.style.removeProperty("--lattice-form-item-gap"):W.style.setProperty("--lattice-form-item-gap",G)),F},isDirty(w){return w==null?A.dirty.size>0:A.dirty.has(String(w))},isConflicted(w){return w==null?A.conflicts.size>0:A.conflicts.has(String(w))},save(){const w=A.bound;if(!w)return!1;if(A.dirty.size===0)return!0;const G={};for(const D of A.dirty){const J=F.getItem(D);J&&(G[D]=J.getValue())}const Y=w.save(G),ie=D=>{if(!D)return!1;for(const J of Object.keys(G))A.baseline[J]=G[J],A.dirty.delete(J),A.conflicts.delete(J);return!0};return Y&&typeof Y.then=="function"?Y.then(ie):ie(Y)},revert(){for(const w of A.dirty){if(!Object.hasOwn(A.baseline,w))continue;const G=A.items.get(w);G&&oe(G).setValue(A.baseline[w])}return A.dirty.clear(),A.conflicts.clear(),F},_bind(w){return H(A,F,w),F},_commit(w){for(const G of Object.keys(w||{}))A.baseline[G]=w[G],A.dirty.delete(G),A.conflicts.delete(G)},get steps(){return A.model.steps||[]},get activeStep(){return A.wizard?A.wizard.active:0},next(){return _(A)},back(){return c(A)},goToStep(w){return b(A,w)},__reapplyRules(){return s(A),F},destroy(){for(const G of A.disposers.splice(0))G();A.emitter.clear();const w=A.el;if(w){for(;w.firstChild;)w.removeChild(w.firstChild);w.classList.remove(R),w.removeAttribute("data-density"),w.removeAttribute("data-lattice-standalone"),w.style.cssText=te,w.__latticeForm===F&&(w.__latticeForm=null)}A.items.clear(),A.order.length=0,A.dirty.clear(),A.conflicts.clear(),A.baseline={},A.bound=null}};return W&&(W.__latticeForm=F),A.form=F,W&&ne&&x(A),Ae&&H(A,F,Ae),F}const M=y}),Ne("packages/modules/form/group.js",function(N,Z){"use strict";Object.defineProperty(N,"GROUP_EVENTS",{enumerable:!0,get:function(){return x}}),Object.defineProperty(N,"createFormGroup",{enumerable:!0,get:function(){return t}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return a}});const R=Z("packages/modules/form/emitter.js").Emitter,q=Z("packages/modules/form/bind-router.js").routerBinding,k=Z("packages/modules/form/group-rules.js"),P=k.attachRuleResolver,j=k.detachRuleResolver,C=k.makeRuleResolver,S=k.reapplyMembers,x=Object.freeze(["change","validated"]),h=new Set;function n(i){const f={},v=i.getValue();for(const m of Object.keys(v))i.isDirty(m)===!0&&(f[m]=v[m]);return f}function c(i,f){h.has(i)||(h.add(i),console.warn("[lattice]",f))}const b=new WeakMap;function _(i,f){let v=b.get(i);if(!v){const m=i.destroy;v={original:m,watchers:new Set},b.set(i,v),i.destroy=function(){const H=b.get(i)||v;for(const u of[...H.watchers])u.detach(i);return m.call(i)}}v.watchers.add(f)}function t(i,f={}){const v=[],m=new Map,g=new Map,H=new R,u=f&&typeof f.bind=="object"&&f.bind.router!=null?f.bind:null,s=u?q(u):null,o=()=>{m.clear(),g.clear();for(const U of v){const z=Object.keys(U.form.getValue());for(const L of z)m.has(L)?c(`form.group.duplicate-field:${L}`,`form group: the field "${L}" is owned by more than one form; the first one added wins.`):m.set(L,U);U.id!=null&&!g.has(U.id)&&g.set(U.id,U)}},r=C({owners:m,byId:g,warnOnce:c}),l=U=>{const z=v.findIndex(M=>M.form===U);if(z===-1)return!1;const[L]=v.splice(z,1);for(const M of L.unsubs)M();o();const y=b.get(U);return y&&(y.watchers.delete(d),y.watchers.size===0&&(b.delete(U),U.destroy=y.original)),j(U),typeof U.__reapplyRules=="function"&&U.__reapplyRules(),S(v),!0},d={detach:l},T={get forms(){return v.map(U=>U.form)},add(U,z){if(!U||typeof U!="object"||typeof U.getValue!="function"||v.some(W=>W.form===U))return T;const L={form:U,id:z&&z.id,unsubs:[],lastFailures:[]};v.push(L),s&&typeof U._bind=="function"&&U._bind(s);const y=W=>{H.emit("change",{form:U,name:W.name,value:W.value}),S(v)},M=W=>{L.lastFailures=W.failures||[],H.emit("validated",{form:U,valid:W.valid})};return L.unsubs.push(U.on("change",y)),L.unsubs.push(U.on("validated",M)),_(U,d),o(),P(U,r),S(v),T},remove(U){return l(U),T},getValue(){const U={};for(const z of v)Object.assign(U,z.form.getValue());return f.transform&&typeof f.transform.get=="function"?f.transform.get(U):U},setValue(U){if(f.transform&&typeof f.transform.set=="function")f.transform.set(U);else if(U!=null&&typeof U=="object")for(const z of Object.keys(U)){const L=m.get(z);L&&L.form.setValue({[z]:U[z]})}return S(v),T},getItem(U){const z=m.get(String(U));return z?z.form.getItem(U):void 0},validate(){let U=!0;const z=[];for(const L of v){L.form.validate()===!1&&(U=!1);for(const M of L.lastFailures||[])z.push({form:L.form,name:M.name})}if(!U){const L=z.find(y=>y.name!=null);if(L){const y=L.form.getItem(L.name);y&&(y.focus(),y.el&&typeof y.el.scrollIntoView=="function"&&y.el.scrollIntoView({block:"nearest"}))}}return U},setReadOnly(U){for(const z of v)z.form.setReadOnly(U===!0);return T},setDisabled(U){for(const z of v)z.form.setDisabled(U===!0);return T},clear(){for(const U of v)U.form.clear();return T},reset(){for(const U of v)typeof U.form.revert=="function"&&U.form.revert();return T},save(){if(!s)return!1;const U=v.map(M=>({member:M,changes:n(M.form)})),z={};for(const M of U)Object.assign(z,M.changes);if(!Object.keys(z).length)return!0;const L=s.save(z),y=M=>{if(!M)return!1;for(const W of U)W.member.form&&typeof W.member.form._commit=="function"&&W.member.form._commit(W.changes);return!0};return L&&typeof L.then=="function"?L.then(y):y(L)},isDirty(){return v.some(U=>U.form.isDirty()===!0)},on(U,z){return U!=="*"&&!x.includes(U)?(console.warn(`lattice-form: "${U}" is not a form group event and will never fire.`),()=>{}):H.on(U,z)},off(U,z){H.off(U,z)},destroy(){for(;v.length;){const U=v[v.length-1].form;l(U)}H.clear()}};if(Array.isArray(i))for(const U of i)T.add(U);else i&&typeof i=="object"&&typeof i.getValue=="function"&&T.add(i);return T}const a=t}),Ne("packages/modules/form/enhance.js",function(N,Z){"use strict";Object.defineProperty(N,"itemForField",{enumerable:!0,get:function(){return C}}),Object.defineProperty(N,"configForForm",{enumerable:!0,get:function(){return S}}),Object.defineProperty(N,"enhanceForm",{enumerable:!0,get:function(){return x}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return h}});const R=Z("packages/modules/form/create.js").createForm,$=Object.freeze(["text","email","password","url"]);function q(n){const c=n&&n.type?String(n.type).toLowerCase():"";return c==="submit"||c==="image"||n&&n.tagName==="BUTTON"&&c!=="button"}function k(n){if(!n||!n.name)return!1;const c=n&&n.type?String(n.type).toLowerCase():"";return!(c==="submit"||c==="button"||c==="reset"||c==="image"||c==="hidden"||c==="file"||n.tagName==="BUTTON")}function P(n,c){if(typeof n.getAttribute=="function"){const b=n.getAttribute("data-label");if(b!=null&&b!=="")return b;const _=n.getAttribute("aria-label");if(_!=null&&_!=="")return _}if(n.id&&typeof c.querySelector=="function"){const b=c.querySelector(`label[for="${n.id}"]`);if(b&&b.textContent!=null){const _=String(b.textContent).trim();if(_)return _}}return String(n.name||"")}function j(n){return n.type==="checkbox"?n.checked===!0:n.value==null?"":n.value}function C(n,c){if(q(n)||!k(n))return null;const b=n.type?String(n.type).toLowerCase():"text",_={type:"input",name:n.name,label:P(n,c),value:j(n)};if(b==="number")_.type="number",n.min!=null&&n.min!==""&&(_.min=Number(n.min)),n.max!=null&&n.max!==""&&(_.max=Number(n.max)),n.step!=null&&n.step!==""&&(_.step=Number(n.step));else if(b==="checkbox")_.type="checkbox";else if(n.tagName==="TEXTAREA")_.type="textarea";else if($.includes(b))_.subtype=b,(b==="email"||b==="url")&&(_.validation=b);else return null;if(n.placeholder!=null&&n.placeholder!==""&&(_.placeholder=n.placeholder),n.required===!0&&(_.required=!0),n.disabled===!0&&(_.disabled=!0),n.readOnly===!0&&(_.readOnly=!0),typeof n.getAttribute=="function"){const t=n.getAttribute("data-validation")||n.getAttribute("data-rule");t&&(_.validation=t);const a=n.getAttribute("data-error-message");a&&(_.errorMessage=a);const i=n.getAttribute("data-help");i&&(_.helpMessage=i)}return _}function S(n,c){const b=n&&n.ownerDocument||(typeof document<"u"?document:null),_=[],t=n&&n.elements?n.elements:[];for(const a of t){const i=C(a,b);i&&_.push(i)}return{...c||{},rows:_}}function x(n,c){if(!n)return null;if(n.__latticeForm)return n.__latticeForm;const b=n.ownerDocument||(typeof document<"u"?document:null),_=[],t=n.elements?n.elements:[];for(const i of t)q(i)&&_.push(i);const a=R(n,S(n,c));n.__latticeForm=a;for(const i of _)i.parentNode!==n&&n.appendChild(i);return typeof n.addEventListener=="function"&&b&&n.addEventListener("submit",i=>{a.validate()||(i.preventDefault(),i.stopImmediatePropagation())},!0),a}const h=x}),Ne("packages/modules/form/index.js",function(N,Z){"use strict";Object.defineProperty(N,"registerControl",{enumerable:!0,get:function(){return h}}),Object.defineProperty(N,"createForm",{enumerable:!0,get:function(){return P}}),Object.defineProperty(N,"default",{enumerable:!0,get:function(){return n}});const R=Z("packages/modules/form/styles.js").NS,q=Z("packages/modules/form/controls/registry.js").registerControl,P=Z("packages/modules/form/create.js").createForm,j=Z("packages/modules/form/controls/combo.js");Object.defineProperty(N,"createCombo",{enumerable:!0,get:function(){return j.createCombo}});const C=Z("packages/modules/form/controls/speeddial.js");Object.defineProperty(N,"createSpeedDial",{enumerable:!0,get:function(){return C.createSpeedDial}});const S=Z("packages/modules/form/group.js");Object.defineProperty(N,"createFormGroup",{enumerable:!0,get:function(){return S.createFormGroup}});const x=Z("packages/modules/form/enhance.js");Object.defineProperty(N,"enhanceForm",{enumerable:!0,get:function(){return x.enhanceForm}});function h(c,b){if(b===null||typeof b!="object"||typeof b.create!="function"){console.warn("lattice-form: registerControl needs a definition with a create(el, item, api) function.");return}const _=typeof b.getValue=="function"?b.getValue:()=>null,t=typeof b.setValue=="function"?b.setValue:()=>{};q(String(c),{kind:"field",custom:!0,validate:typeof b.validate=="function"?(a,i,f)=>b.validate(f,i,a):void 0,destroy:typeof b.destroy=="function"?a=>b.destroy(a):void 0,build(a,i){const f=i.doc.createElement("div");f.className=`${R}__custom`;const v={name:a.name,item:a,getValue(){return v._read?v._read():void 0},setValue(m){v._write&&v._write(m)},onChange(m){v._commit&&v._commit(m===void 0?_():m)},onInput(m){v._input&&v._input(m===void 0?_():m)}};return f.__latticeFormApi=v,b.create(f,a,v),t(f,a.value),f},read(a){return _(a)},write(a,i){t(a,i)},state(a,i){a.setAttribute("data-disabled",i.disabled===!0?"true":"false"),a.setAttribute("data-readonly",i.readOnly===!0?"true":"false")}})}const n=P});var zt=Gt("packages/modules/form/index.js");typeof module=="object"&&module.exports?module.exports=zt:typeof define=="function"&&define.amd?define(function(){return zt}):er.LatticeGridForm=zt})(typeof globalThis<"u"?globalThis:this);
|
|
2166
2166
|
|
|
2167
2167
|
//# sourceMappingURL=form.min.js.map
|