@sqlrooms/deck 0.29.0-rc.12 → 0.29.0-rc.13
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/README.md +144 -22
- package/dist/DeckJsonMap.d.ts.map +1 -1
- package/dist/DeckJsonMap.js +58 -12
- package/dist/DeckJsonMap.js.map +1 -1
- package/dist/DeckMapBasemapSelect.d.ts +9 -0
- package/dist/DeckMapBasemapSelect.d.ts.map +1 -0
- package/dist/DeckMapBasemapSelect.js +20 -0
- package/dist/DeckMapBasemapSelect.js.map +1 -0
- package/dist/DeckMapDefaultStylesProvider.d.ts +13 -19
- package/dist/DeckMapDefaultStylesProvider.d.ts.map +1 -1
- package/dist/DeckMapDefaultStylesProvider.js +11 -18
- package/dist/DeckMapDefaultStylesProvider.js.map +1 -1
- package/dist/DeckMapsSlice.d.ts +5 -0
- package/dist/DeckMapsSlice.d.ts.map +1 -1
- package/dist/DeckMapsSlice.js +6 -3
- package/dist/DeckMapsSlice.js.map +1 -1
- package/dist/MapSettings.d.ts.map +1 -1
- package/dist/MapSettings.js +3 -2
- package/dist/MapSettings.js.map +1 -1
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +15 -10
- package/dist/ai.js.map +1 -1
- package/dist/basemap.d.ts +23 -0
- package/dist/basemap.d.ts.map +1 -0
- package/dist/basemap.js +23 -0
- package/dist/basemap.js.map +1 -0
- package/dist/block.d.ts.map +1 -1
- package/dist/block.js +12 -8
- package/dist/block.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/mapAiSharedInstructions.d.ts.map +1 -1
- package/dist/mapAiSharedInstructions.js +1 -0
- package/dist/mapAiSharedInstructions.js.map +1 -1
- package/dist/mapConfig.d.ts +5 -0
- package/dist/mapConfig.d.ts.map +1 -1
- package/dist/mapConfig.js +28 -3
- package/dist/mapConfig.js.map +1 -1
- package/dist/mapConfigUtils.d.ts.map +1 -1
- package/dist/mapConfigUtils.js +7 -2
- package/dist/mapConfigUtils.js.map +1 -1
- package/dist/mapStyles.d.ts +16 -0
- package/dist/mapStyles.d.ts.map +1 -0
- package/dist/mapStyles.js +32 -0
- package/dist/mapStyles.js.map +1 -0
- package/dist/protomapsStyles.d.ts +18 -0
- package/dist/protomapsStyles.d.ts.map +1 -0
- package/dist/protomapsStyles.js +38 -0
- package/dist/protomapsStyles.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +11 -9
package/dist/MapSettings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapSettings.js","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,EAAE,EACF,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAC,2BAA2B,EAAqB,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,gBAAgB,EAChB,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAGlB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,oCAAoC,EACpC,yBAAyB,EACzB,sCAAsC,EACtC,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,IAAI,cAAc,EACvC,sBAAsB,IAAI,eAAe,EACzC,oBAAoB,IAAI,KAAK,EAC7B,oBAAoB,IAAI,iBAAiB,EACzC,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,aAAa,GAAyB,EAAE,CAAC;AAE/C,SAAS,uBAAuB,CAC9B,IAA8B;IAE9B,OAAO,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;AACjE,CAAC;AAED,yDAAyD;AACzD,SAAS,6BAA6B,CACpC,OAA6B,EAC7B,KAAyB,EACzB,aAAuC;IAEvC,IAAI,CAAC,KAAK;QAAE,OAAO,aAAa,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,EAAE,IAAI;QAAE,OAAO,aAAa,CAAC;IACxC,kEAAkE;IAClE,IAAI,+BAA+B,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,wDAAwD;AACxD,SAAS,yBAAyB,CAChC,OAA6B,EAC7B,IAA8B,EAC9B,SAAkB;IAElB,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,oBAAoB,CACvC,SAAS,EACT,uBAAuB,CAAC,IAAI,CAAC,CAC9B,CAAC;IACF,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACrD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,6BAA6B,CAC3C,OAA6B,EAC7B,aAAuC,EACvC,cAAuB;IAEvB,MAAM,KAAK,GAAG,yBAAyB,CACrC,OAAO,EACP,aAAa,EACb,cAAc,CACf,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,KAAK;QACL,IAAI,EAAE,6BAA6B,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC;KACnE,CAAC;AACJ,CAAC;AAsBD,SAAS,gBAAgB,CAAC,IAA8B;IACtD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,wEAAwE;IACxE,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,sDAAsD;AACtD,SAAS,sBAAsB,CAC7B,MAAc,EACd,IAA8B;IAE9B,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GACV,uBAAuB,CAAC,MAA8C,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAChB,IAAI,KAAK,WAAW;QAClB,CAAC,CAAC,gCAAgC,CAC9B,MAAuD,CACxD;QACH,CAAC,CAAC,CAAC,iCAAiC,CAChC,MAAwD,CACzD;YACD,gCAAgC,CAC9B,MAAuD,CACxD,CAAC,CAAC;IAET,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,oBAAoB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzD,YAAY,CAAC,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,SAAS,wBAAwB,CAC/B,MAAgB,EAChB,IAA8B;IAE9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAChD,OAAO,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,OAAO,6BAA6B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1D,CAAC;IACD,OAAO,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3D,CAAC;AAED,MAAM,sBAAsB,GAGvB,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,CACL,gBAAM,SAAS,EAAC,wCAAwC,aACrD,QAAQ,CAAC,CAAC,CAAC,CACV,oCAEE,SAAS,EAAC,8CAA8C,EACxD,KAAK,EAAE,EAAC,eAAe,EAAE,QAAQ,EAAC,GAClC,CACH,CAAC,CAAC,CAAC,IAAI,EACR,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,GAAQ,IACrC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,gBAAgB,GAKjB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAC,EAAE,EAAE,CAAC,CAC7D,gBACE,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,8FAA8F,EAC9F,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB,CAC9D,EACD,KAAK,EAAE,EAAC,eAAe,EAAE,KAAK,EAAC,YAE/B,gBACE,IAAI,EAAC,OAAO,gBACA,SAAS,EACrB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,qFAAqF,EAC/F,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACjD,GACI,CACT,CAAC;AAEF,SAAS,qBAAqB,CAAC,OAAe;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAqC;IACnE,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,mBAAmB,GAGpB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,YACjB,cAAK,SAAS,EAAC,QAAQ,YAAE,QAAQ,GAAO,GAClC,CACT,CAAC;AAEF,MAAM,uBAAuB,GAIxB,CAAC,EAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAC3C,KAAC,mBAAmB,IAAC,KAAK,EAAE,YAAY,YAAY,GAAG,YACrD,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,YAAY,CAAC,EACrB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAC9D,GACkB,CACvB,CAAC;AAgCF,MAAM,sBAAsB,GAAoC,CAAC,EAC/D,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,QAAQ,EACR,OAAO,EACP,eAAe,EACf,WAAW,GAAG,SAAS,EACvB,gBAAgB,GAAG,4BAA4B,EAC/C,WAAW,EACX,aAAa,EACb,UAAU,GAAG,OAAO,EACpB,WAAW,EACX,cAAc,EACd,WAAW,GAAG,QAAQ,EACtB,UAAU,GAAG,EAAE,EACf,SAAS,GAAG,GAAG,EACf,SAAS,GAAG,EAAE,EACd,UAAU,GAAG,GAAG,EAChB,uBAAuB,GAAG,KAAK,GAChC,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI;QAC7D,GAAG,gBAAgB;KACpB,CAAC;IACF,MAAM,cAAc,GAAG,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACvD,uEAAuE;IACvE,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,CAAC;IACvC,MAAM,cAAc,GAAG,oCAAoC,CACzD,KAAK,EACL,QAAQ,EACR,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CACpB,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,KAIzB,EAAE,EAAE;QACH,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,6BAA6B,CAC5C,OAAO,EACP,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,IAAI,IAAI,YAAY,EAC9C,cAAc,CACf,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,QAAQ,CAAC;QAE/B,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAClD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM;YACZ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI;gBAC5C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE5B,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,WAAW,GACf,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;YAC5D,OAAO;gBACL,GAAG,QAAQ;gBACX,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;oBACvC,KAAK;oBACL,IAAI;oBACJ,MAAM;oBACN,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,aAAa;wBACpB,CAAC,CAAC,2BAA2B,CAAC,aAAa,CAAC;wBAC5C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG;iBAClC,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,eAAe,CAAC,CAAC,CAAC,CACjB,eAAK,SAAS,EAAC,yCAAyC,aACtD,gBAAM,SAAS,EAAC,6CAA6C,aAC1D,WAAW,EACX,uBAAuB,CAAC,CAAC,CAAC,CACzB,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,aAAa,gBACZ,mCAAmC,YAE9C,KAAC,iBAAiB,IAAC,SAAS,EAAC,4BAA4B,GAAG,GACrD,GACM,EACjB,KAAC,cAAc,oDAEE,IACT,CACX,CAAC,CAAC,CAAC,IAAI,IACH,EACP,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,KAAK,KAAK,EAC1B,eAAe,EAAE,eAAe,gBACpB,WAAW,GACvB,IACE,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,YAAY,IAAI,aAAa,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5D,KAAC,mBAAmB,IAClB,KAAK,EAAE,GAAG,UAAU,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,YAE3D,KAAC,MAAM,IACL,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,CAAC,WAAW,CAAC,EACpB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GACxD,GACkB,CACvB,CAAC,CAAC,CAAC,IAAI,EAEP,YAAY,IAAI,cAAc,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7D,KAAC,mBAAmB,IAClB,KAAK,EAAE,GAAG,WAAW,KACnB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WACpD,GAAG,UAAU,EAAE,YAEf,KAAC,MAAM,IACL,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,WAAW,CAAC,EACpB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GACnE,GACkB,CACvB,CAAC,CAAC,CAAC,IAAI,EAEP,YAAY,CAAC,CAAC,CAAC,CACd,8BACE,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,4BAAmB,EACxD,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,gBACzC,aAAa,EACxB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;oCAC3B,IAAI,OAAO,EAAE,CAAC;wCACZ,gBAAgB,CAAC,EAAE,CAAC,CAAC;wCACrB,OAAO;oCACT,CAAC;oCACD,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;wCACtB,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;oCAC/D,CAAC;oCACD,WAAW,CACT,2BAA2B,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAC7D,CAAC;gCACJ,CAAC,GACD,IACE,EAEL,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,KAAC,gBAAgB,kBACJ,OAAO,EAClB,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;oCAChB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oCACxD,WAAW,CACT,wBAAwB,CACtB,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CACL,CACF,CAAC;gCACJ,CAAC,GACD,IACE,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,UAAU,CAAC,CAAC,CAAC,CACZ,eAAK,SAAS,EAAC,qBAAqB,aACjC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,YAC/B,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,kBAC3B,KAAC,cAAc,CAAC,SAAS,IACvB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAC,KAAK,EAAC,CAAC,EAC9C,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YACjB,MAAC,MAAM,IACL,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,gBAAgB,CAAC,EAAC,IAAI,EAAE,KAAiC,EAAC,CAAC,aAG7D,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,iCAAiC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACjD,KAAC,UAAU,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,YAC/C,MAAM,CAAC,KAAK,IADE,MAAM,CAAC,KAAK,CAEhB,CACd,CAAC,GACY,IACT,GACH,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,YACnB,MAAC,MAAM,IACL,KAAK,EAAE,UAAU,CAAC,MAAM,EACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,gBAAgB,CAAC,EAAC,MAAM,EAAE,KAAyB,EAAC,CAAC,aAGvD,KAAC,aAAa,IAAC,SAAS,EAAC,iCAAiC,YACxD,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,KAAC,UAAU,IAAc,KAAK,EAAE,MAAM,YACpC,KAAC,sBAAsB,IACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACpB,IAJa,MAAM,CAKV,CACd,CAAC,GACY,IACT,GACH,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,uBAAuB,IACtB,YAAY,EAAE,cAAc,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;4BACpB,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;gCACtD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;gCACtD,IAAI,UAAU,EAAE,CAAC;oCACf,MAAM,KAAK,GACT,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC;wCAC7C,UAAU,CAAC;oCACb,OAAO;wCACL,GAAG,QAAQ;wCACX,CAAC,QAAQ,CAAC,EAAE;4CACV,GAAG,KAAK;4CACR,OAAO,EAAE,OAAO,GAAG,GAAG;yCACvB;qCACF,CAAC;gCACJ,CAAC;gCACD,MAAM,OAAO,GACX,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;gCAC5D,OAAO;oCACL,GAAG,QAAQ;oCACX,CAAC,QAAQ,CAAC,EAAE;wCACV,OAAO,CAAC,CAAC,CAAC;wCACV,OAAO,CAAC,CAAC,CAAC;wCACV,OAAO,CAAC,CAAC,CAAC;wCACV,qBAAqB,CAAC,OAAO,CAAC;qCAC/B;iCACF,CAAC;4BACJ,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC,GACD,IACD,CACJ,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,uBAAuB,GAUxB,CAAC,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC;IAC9C,MAAM,cAAc,GAAG,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACvD,uEAAuE;IACvE,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI;QACtE,GAAG,4BAA4B;KAChC,CAAC;IACF,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI;QACtE,GAAG,4BAA4B;KAChC,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,CAAC,oCAAoC,CACnC,KAAK,EACL,gBAAgB,EAChB,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CACrB;QACC,oCAAoC,CAClC,KAAK,EACL,gBAAgB,EAChB,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CACrB,CAAC;QACF,CAAC,CACJ,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,KAI9B,EAAE,EAAE;QACH,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,uBAAuB,CAAC,OAAO,CAAC,cAAc;YAC9C,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC;QACjD,MAAM,QAAQ,GAAG,6BAA6B,CAC5C,OAAO,EACP,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,IAAI,IAAI,YAAY,EAC9C,cAAc,CACf,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,QAAQ,CAAC;QAE/B,uBAAuB,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACvD,uBAAuB,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACvD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM;YACZ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI;gBAC5C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE5B,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,QAAQ,GACZ,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;gBACrD,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACxD,MAAM,MAAM,GACV,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,UAAU,CAAC;YACrE,MAAM,MAAM,GACV,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,UAAU,CAAC;YACrE,MAAM,OAAO,GAAG,QAAQ;gBACtB,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YACpE,MAAM,KAAK,GAAG,4BAA4B,CAAC;gBACzC,KAAK;gBACL,IAAI;gBACJ,MAAM;gBACN,KAAK,EAAE,KAAK;gBACZ,OAAO;aACR,CAAC,CAAC;YACH,OAAO;gBACL,GAAG,QAAQ;gBACX,cAAc,EAAE,KAAK;gBACrB,cAAc,EAAE,KAAK;aACtB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,QAA6C,EAC7C,KAAgD,EAChD,EAAE;QACF,WAAW,CACT,wBAAwB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CACjE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,4BAAmB,EACxD,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,gBACzC,aAAa,EACxB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;4BAC3B,IAAI,OAAO,EAAE,CAAC;gCACZ,qBAAqB,CAAC,EAAE,CAAC,CAAC;gCAC1B,OAAO;4BACT,CAAC;4BACD,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;gCACtB,uBAAuB,CAAC,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;gCAClE,uBAAuB,CAAC,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;4BACpE,CAAC;4BACD,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;gCACtD,MAAM,YAAY,GAKd,EAAE,CAAC;gCACP,IAAI,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;oCAC3D,YAAY,CAAC,cAAc,GAAG,4BAA4B,CAAC;gCAC7D,CAAC;gCACD,IAAI,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;oCAC3D,YAAY,CAAC,cAAc,GAAG,4BAA4B,CAAC;gCAC7D,CAAC;gCACD,OAAO,sCAAsC,CAC3C,SAAS,EACT,YAAY,CACb,CAAC;4BACJ,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC,GACD,IACE,EAEL,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,8BACE,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,6BAAoB,EACzD,KAAC,gBAAgB,kBACJ,cAAc,EACzB,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;oCAChB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oCACzD,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gCACvC,CAAC,GACD,IACE,EACN,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,6BAAoB,EACzD,KAAC,gBAAgB,kBACJ,cAAc,EACzB,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;oCAChB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oCACzD,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gCACvC,CAAC,GACD,IACE,IACL,CACJ,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,qBAAqB,aACjC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,YAC/B,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,kBAC3B,KAAC,cAAc,CAAC,SAAS,IACvB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAC,KAAK,EAAC,CAAC,EACnD,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YACjB,MAAC,MAAM,IACL,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,qBAAqB,CAAC;gCACpB,IAAI,EAAE,KAAiC;6BACxC,CAAC,aAGJ,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,iCAAiC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACjD,KAAC,UAAU,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,YAC/C,MAAM,CAAC,KAAK,IADE,MAAM,CAAC,KAAK,CAEhB,CACd,CAAC,GACY,IACT,GACH,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,YACnB,MAAC,MAAM,IACL,KAAK,EAAE,UAAU,CAAC,MAAM,EACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,qBAAqB,CAAC,EAAC,MAAM,EAAE,KAAyB,EAAC,CAAC,aAG5D,KAAC,aAAa,IAAC,SAAS,EAAC,iCAAiC,YACxD,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,KAAC,UAAU,IAAc,KAAK,EAAE,MAAM,YACpC,KAAC,sBAAsB,IACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACpB,IAJa,MAAM,CAKV,CACd,CAAC,GACY,IACT,GACH,IACJ,CACP,EAED,KAAC,uBAAuB,IACtB,YAAY,EAAE,cAAc,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;oBACpB,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;wBACtD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;wBACtD,IAAI,UAAU,EAAE,CAAC;4BACf,MAAM,KAAK,GACT,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;gCACrD,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;gCACrD,UAAU,CAAC;4BACb,MAAM,SAAS,GAAG,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,GAAG,EAAC,CAAC;4BACrD,OAAO;gCACL,GAAG,QAAQ;gCACX,cAAc,EAAE,SAAS;gCACzB,cAAc,EAAE,SAAS;6BAC1B,CAAC;wBACJ,CAAC;wBACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;wBAC7C,MAAM,MAAM,GACV,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;4BACpD,UAAU,CAAC;wBACb,MAAM,MAAM,GACV,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;4BACpD,UAAU,CAAC;wBACb,OAAO;4BACL,GAAG,QAAQ;4BACX,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;4BACxD,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;yBACzD,CAAC;oBACJ,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC,GACD,IACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAOzB,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,yBAAgB,EACrD,KAAC,MAAM,IACL,OAAO,EAAE,QAAQ,EACjB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;4BACxD,GAAG,SAAS;4BACZ,QAAQ,EAAE,OAAO;4BACjB,YAAY,EAAE,OAAO;gCACnB,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;gCAC/B,CAAC,CAAC,SAAS,CAAC,YAAY;yBAC3B,CAAC,CAAC,CACJ,GAEH,IACE,EAEL,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChC,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,YAC/B,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,YAC7B,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,CAAC,GAAG,EAAE;4BACX,MAAM,IAAI,GAAG,KAAK,EAAE,YAAY,CAAC;4BACjC,IACE,IAAI;gCACJ,OAAO,IAAI,KAAK,QAAQ;gCACxB,YAAY,IAAK,IAAe,EAChC,CAAC;gCACD,OAAQ,IAAgC,CAAC,KAE5B,CAAC;4BAChB,CAAC;4BACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gCACvD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BACvB,CAAC;4BACD,OAAO,SAAS,CAAC;wBACnB,CAAC,CAAC,EAAE,EACJ,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE,CAC5B,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;4BACxD,GAAG,SAAS;4BACZ,YAAY,EAAE,eAAe;gCAC3B,CAAC,CAAC;oCACE,YAAY,EAAE,OAAO;oCACrB,KAAK,EAAE,eAAe;oCACtB,IAAI,EAAE,QAAQ;oCACd,MAAM,EAAE,MAAM;oCACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;iCAChB;gCACH,CAAC,CAAC,SAAS;4BACb,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,CAAC;yBAC9C,CAAC,CAAC,CACJ,EAEH,WAAW,EAAC,4BAA4B,EACxC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,CAAC,CAAC,CAAC,IAAI,EAEP,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,mBAAmB,IAClB,KAAK,EAAE,oBAAqB,KAAK,EAAE,cAAqC,IAAI,CAAC,GAAG,YAEhF,KAAC,MAAM,IACL,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAE,KAAK,EAAE,cAAqC,IAAI,CAAC,CAAC,EAC3D,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;wBACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC7B,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;4BACxD,GAAG,SAAS;4BACZ,cAAc,EAAE,KAAK;yBACtB,CAAC,CAAC,CACJ,CAAC;oBACJ,CAAC,GACD,GACkB,CACvB,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,KAAK,EACL,aAAa,EACb,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,EACd,QAAQ,EACR,YAAY,GAAG,KAAK,EACpB,mBAAmB,GAAG,KAAK,GAC5B,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CACtC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CACnC,CAAC;IACF,2EAA2E;IAC3E,MAAM,uBAAuB,GAAG,MAAM,CAEpC,EAAE,CAAC,CAAC;IAEN,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CACH,aAAa;QACX,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,KAAK;QACpD,CAAC,CAAC,SAAS,EACf,CAAC,aAAa,EAAE,MAAM,CAAC,CACxB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,EAAE,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAO;QACrB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,aAAa,EAAE,QAAQ,CAAC,CAC1B,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC;IACzB,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EACrC,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,QAAQ,GAAG,YAAY,IAAI,QAAQ,KAAK,MAAM,CAAC;IACrD,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,oBAAoB;QAC7C,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,yEAAyE;IACzE,MAAM,wBAAwB,GAAG,kBAAkB,EAAE,MAAM,CAAC;IAC5D,MAAM,iBAAiB,GAAG,2BAA2B,CACnD,wBAAwB,CACzB;QACC,CAAC,CAAC,wBAAwB,CAAC,SAAS;QACpC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CACH,iBAAiB;QACf,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,KAAK;QACxD,CAAC,CAAC,SAAS,EACf,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAC5B,CAAC;IACF,MAAM,eAAe,GAAG,mBAAmB;QACzC,CAAC,CAAC,CAAC,aAAa,IAAI,iBAAiB,CAAC;QACtC,CAAC,CAAC,CAAC,iBAAiB,IAAI,aAAa,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,eAAe,EAAE,OAAO,IAAI,aAAa,CAAC;IAChE,MAAM,gCAAgC,GAAG,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAO,iBAAiB;gBACtB,CAAC,CAAC,EAAC,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAC;gBACxD,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC3D,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,OAAO;YACL,SAAS,EACP,CAAC,mBAAmB,IAAI,iBAAiB;gBACvC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,wBAAwB,CAAC,SAAS;YACxC,GAAG,CAAC,wBAAwB,CAAC,YAAY;gBACvC,CAAC,CAAC,EAAC,YAAY,EAAE,wBAAwB,CAAC,YAAY,EAAC;gBACvD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,uBAAuB,CAAC;QAC5C,MAAM,EAAE,gCAAgC;QACxC,aAAa;KACd,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;IAClD,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IAC1D,MAAM,yBAAyB,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;IAE/D,MAAM,yBAAyB,GAAG,yBAAyB,CACzD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,uBAAuB,GAAG,uBAAuB,CACrD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,aAAa,GACjB,OAAO,WAAW,EAAE,OAAO,KAAK,SAAS;QACvC,CAAC,CAAC,WAAW,CAAC,OAAO;QACrB,CAAC,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE;YACpD,QAAQ,EAAE,uBAAuB,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;IACT,MAAM,iBAAiB,GACrB,WAAW,EAAE,cAAc,KAAK,QAAQ;QACxC,OAAO,WAAW,EAAE,YAAY,KAAK,QAAQ;QAC3C,CAAC,CAAC,WAAW,CAAC,YAAY;QAC1B,CAAC,CAAC,CAAE,WAAW,EAAE,kBAAyC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,oBAAoB,GAAG,8BAA8B,CACzD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,cAAc,CAC5C,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,cAAc,CAC5C,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,CACxC,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,gBAAgB,CAC9C,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,gBAAgB,CAC9C,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,mBAAmB,CAAC;IACpE,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC;IAClE,6DAA6D;IAC7D,MAAM,eAAe,GACnB,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACzC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;QACvB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,gBAAgB,GACpB,eAAe;QACf,CAAC,2BAA2B,CAAC,IAAI,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,eAAe,CAC7C;QACC,CAAC,CAAC;YACE,GAAG,2BAA2B;YAC9B,EAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAC;SACjD;QACH,CAAC,CAAC,2BAA2B,CAAC;IAClC,yFAAyF;IACzF,MAAM,iBAAiB,GAAG,cAAc;QACtC,CAAC,CAAC,WAAW,EAAE,gBAAgB,KAAK,QAAQ;YAC1C,OAAO,WAAW,EAAE,cAAc,KAAK,QAAQ;YAC/C,CAAC,CAAC,WAAW,CAAC,cAAc;YAC5B,CAAC,CAAC,CAAE,WAAW,EAAE,oBAA2C,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK,QAAQ;YACnC,OAAO,WAAW,EAAE,SAAS,KAAK,QAAQ;YAC5C,CAAC,CAAC,WAAW,CAAC,SAAS;YACvB,CAAC,CAAC,CAAE,WAAW,EAAE,eAAsC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,sBAAsB,CAAC;IAC1E,MAAM,kBAAkB,GAAG,cAAc,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7E,MAAM,eAAe,GACnB,WAAW,EAAE,UAAU,KAAK,QAAQ;QACpC,OAAO,WAAW,EAAE,QAAQ,KAAK,QAAQ;QACvC,CAAC,CAAC,WAAW,CAAC,QAAQ;QACtB,CAAC,CAAC,CAAE,WAAW,EAAE,cAAqC;YACpD,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,UAAyB,EAAE,EAAE;QAC5B,IAAI,QAAQ;YAAE,OAAO;QACrB,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,cAAc,EAAE,QAAQ,CAAC,CAC3B,CAAC;IAEF,2EAA2E;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,IAAI,CAAC,WAAW,IAAI,QAAQ;YAAE,OAAO;QACjE,MAAM,SAAS,GACb,WAAW,CAAC,WAAW,KAAK,QAAQ;YACpC,WAAW,CAAC,SAAS,KAAK,SAAS;YACnC,WAAW,CAAC,eAAe,KAAK,SAAS;YACzC,WAAW,CAAC,eAAe,KAAK,SAAS;YACzC,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC;QACzC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,MAAM,GACV,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ;YACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;YACnC,WAAW,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,WAAW,CAAC,MAAM;YACpB,CAAC,CAAC,EAAE,CAAC;QACT,WAAW,CACT,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,CACjE,CAAC;IACJ,CAAC,EAAE;QACD,WAAW;QACX,gBAAgB;QAChB,WAAW;QACX,SAAS;QACT,QAAQ;QACR,uBAAuB;KACxB,CAAC,CAAC;IAEH,gFAAgF;IAChF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,gBAAgB,GACpB,iBAAiB;YACjB,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,mBAAmB;YAC/C,oBAAoB,CAAC;QACvB,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,IAAI,QAAQ;YAAE,OAAO;QAE1D,MAAM,GAAG,GACP,OAAO,WAAW,CAAC,cAAc,KAAK,QAAQ;YAC5C,CAAC,CAAC,WAAW,CAAC,cAAc;YAC5B,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,GAAG,GACP,OAAO,WAAW,CAAC,cAAc,KAAK,QAAQ;YAC5C,CAAC,CAAC,WAAW,CAAC,cAAc;YAC5B,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,GAAG;YAAE,OAAO;QAEjE,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1D,GAAG,KAAK;YACR,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;YAClC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;SACnC,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC,EAAE;QACD,WAAW;QACX,gBAAgB;QAChB,WAAW;QACX,SAAS;QACT,QAAQ;QACR,oBAAoB;QACpB,iBAAiB;KAClB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QACvC,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxD,MAAM,SAAS,GAAuB;gBACpC,GAAG,KAAK;gBACR,cAAc,EAAE,QAAQ;gBACxB,kBAAkB,EAAE,KAAK;gBACzB,kBAAkB,EAAE,KAAK;aAC1B,CAAC;YACF,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC3C,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;YACjC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxD,MAAM,SAAS,GAAuB;gBACpC,GAAG,KAAK;gBACR,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,KAAK;gBACrB,cAAc,EAAE,KAAK;aACtB,CAAC;YACF,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACvC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QACvC,WAAW,CACT,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,cAAc,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAuB;oBACpC,GAAG,KAAK;oBACR,gBAAgB,EAAE,QAAQ;oBAC1B,oBAAoB,EAAE,KAAK;oBAC3B,oBAAoB,EAAE,KAAK;iBAC5B,CAAC;gBACF,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAC7C,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;gBACnC,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,SAAS,GAAuB;gBACpC,GAAG,KAAK;gBACR,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,KAAK;gBACtB,eAAe,EAAE,KAAK;aACvB,CAAC;YACF,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACxC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,WAAW,CACT,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAChE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,iBAAiB;QACvC,CAAC,CAAC;YACE,WAAW,EAAE,iBAAiB;YAC9B,cAAc,EAAE,cAAc;YAC9B,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,GAAG;SAChB;QACH,CAAC,CAAC,uBAAuB;YACvB,CAAC,CAAC;gBACE,WAAW,EAAG,WAAW,EAAE,MAA6B,IAAI,EAAE;gBAC9D,cAAc,EAAE,eAAe;gBAC/B,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,CAAC;aACd;YACH,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,mBAAmB,IAClB,KAAK,EAAC,cAAc,EACpB,SAAS,EAAC,cAAc,EACxB,OAAO,EACL,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACzB,KAAC,2BAA2B,IAC1B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAC/C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CACZ,WAAW,CAAC,CAAC,eAAe,EAAE,EAAE,CAC9B,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CACjD,GAEH,CACH,EAEH,OAAO,EAAE,OAAO,EAChB,UAAU,EAAC,oBAAoB,GAC/B,EAED,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,sBAAsB,IACrB,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAC,iBAAiB,GAClC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,SAAS,EAAC,iEAAiE,YACrF,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAClB,gBACE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,WAAW,EAAC,WAAW,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,kQAAkQ,GAC5Q,GACI,EAER,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,kBAC7B,KAAC,iBAAiB,IAChB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,GAClB,GACI,EAEP,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,eAAK,SAAS,EAAC,qBAAqB,aACjC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAClB,MAAC,MAAM,IACL,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAEtD,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,UAAU,IAAa,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,YACzC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC,IAD1B,KAAK,CAET,CACd,CAAC,GACY,IACT,GACH,CACT,EAED,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,wBAAe,EACpD,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,EAAE,OAAO,KAAK,KAAK,EACvC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gDACV,GAAG,KAAK;gDACR,OAAO,EAAE,OAAO;6CACjB,CAAC,CACH,CACF,GAEH,IACE,EAEN,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,YACvB,MAAC,MAAM,IACL,KAAK,EACH,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ;4CACzC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;4CACvB,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,WAAW,CACT,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CACxD,aAGH,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,IAAC,WAAW,EAAC,mBAAmB,GAAG,GACjC,EAChB,KAAC,aAAa,cACX,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAChC,KAAC,UAAU,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,YAC/C,MAAM,CAAC,KAAK,IADE,MAAM,CAAC,KAAK,CAEhB,CACd,CAAC,GACY,IACT,GACH,EAEP,CAAC,aAAa,CAAC,SAAS,IAAI,yBAAyB,CAAC,IAAI,CACzD,cAAK,SAAS,EAAC,6DAA6D,YACzE,aAAa,CAAC,SAAS;wCACtB,CAAC,CAAC,8BAA8B;wCAChC,CAAC,CAAC,+BAA+B,yBAAyB,EAAE,GAC1D,CACP,EAEA,kBAAkB,IAAI,CACrB,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,YACvB,cAAK,SAAS,EAAC,2CAA2C,YACvD,cAAc,CAAC,CAAC,CAAC,CAChB,8BACE,KAAC,mBAAmB,IAClB,KAAK,EAAE,WAAY,WAAW,EAAE,YAAmC,IAAI,EAAE,IAAI,YAE7E,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;4DACJ,WAAW,EAAE,YAEA,IAAI,EAAE;yDACrB,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;4DACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;4DAC9B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gEACV,GAAG,KAAK;gEACR,YAAY,EAAE,KAAK;6DACpB,CAAC,CACH,CACF,CAAC;wDACJ,CAAC,GACD,GACkB,EACtB,MAAC,MAAM,IACL,KAAK,EAAE,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,EACnD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wDACV,GAAG,KAAK;wDACR,UAAU,EACR,yBAAyB,CAAC,KAAK,CAAC;qDACnC,CAAC,CACH,CACF,aAGH,KAAC,aAAa,IAAC,SAAS,EAAC,iCAAiC,YACxD,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,2BAA2B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC3C,KAAC,UAAU,IAAc,KAAK,EAAE,MAAM,YACpC,KAAC,sBAAsB,IACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAC,YAAY,GACjB,IAJa,MAAM,CAKV,CACd,CAAC,GACY,IACT,EACT,KAAC,uBAAuB,IACtB,YAAY,EAAE,sBAAsB,CAAC,WAAW,CAAC,EACjD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;wDACpB,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4DACV,GAAG,KAAK;4DACR,OAAO,EAAE,OAAO,GAAG,GAAG;yDACvB,CAAC,CACH,CACF,CAAC;oDACJ,CAAC,GACD,IACD,CACJ,CAAC,CAAC,CAAC,CACF,8BACG,CAAC,iBAAiB;oDACjB,WAAW;oDACX,oBAAoB,CAAC,IAAI,CACzB,KAAC,mBAAmB,IAClB,KAAK,EAAE,GACL,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YACrC,KAAK,eAAe,IAAI,YAExB,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,eAAe,CAAC,EACxB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAE5C,GACkB,CACvB,EAEA,oBAAoB,CAAC,CAAC,CAAC,CACtB,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,2BAE9B,EACP,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,EAAE,SAAS,KAAK,CAAC,EACrC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gEACV,GAAG,KAAK;gEACR,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;6DACnC,CAAC,CACH,CACF,GAEH,IACE,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,iBAAiB,CAAC,CAAC,CAAC,CACnB,KAAC,mBAAmB,IAClB,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAE,WAAW,EAAE,kBAAyC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,YAE7G,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;4DACL,IAAI,CAAC,KAAK,CACR,CAAE,WAAW,EAAE,kBAED,IAAI,GAAG,CAAC,GAAG,GAAG,CAC7B;yDACF,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;4DACxB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;4DACtC,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gEACV,GAAG,KAAK;gEACR,kBAAkB,EAAE,KAAK;6DAC1B,CAAC,CACH,CACF,CAAC;wDACJ,CAAC,GACD,GACkB,CACvB,CAAC,CAAC,CAAC,IAAI,EAEP,YAAY,IAAI,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC,CACnD,MAAC,IAAI,IAEH,YAAY,EAAC,MAAM,EACnB,SAAS,EAAC,QAAQ,aAElB,MAAC,QAAQ,IACP,SAAS,EAAE,mBAAmB,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,aAErF,KAAC,WAAW,IAAC,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,qBAE/B,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,uBAEjC,EACb,qBAAqB,CAAC,CAAC,CAAC,CACvB,KAAC,WAAW,IACV,KAAK,EAAC,WAAW,EACjB,SAAS,EAAC,SAAS,0BAGP,CACf,CAAC,CAAC,CAAC,IAAI,IACC,EACX,KAAC,WAAW,IAAC,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YACxC,KAAC,sBAAsB,IACrB,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EACrB,uBAAuB,EAEzB,QAAQ,EAAE,QAAQ,KACd,eAAe,GACnB,GACU,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,YAC1C,KAAC,sBAAsB,IACrB,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EACrB,uBAAuB,EAEzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;oEACR,IAAI,OAAO,EAAE,CAAC;wEACZ,OAAO,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;oEACnC,CAAC;oEACD,+CAA+C;oEAC/C,MAAM,IAAI,GAAuB;wEAC/B,GAAG,KAAK;wEACR,OAAO,EAAE,KAAK;qEACf,CAAC;oEACF,IACE,yBAAyB,CACvB,IAAI,EACJ,cAAc,CACf,EACD,CAAC;wEACD,OAAO,qCAAqC,CAC1C,IAAI,EACJ,cAAc,EACd,6BAA6B,CAC9B,CAAC;oEACJ,CAAC;oEACD,OAAO,IAAI,CAAC;gEACd,CAAC,CACF,CACF,EAEH,WAAW,EAAC,QAAQ,EACpB,gBAAgB,EACd,6BAA6B,EAE/B,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,cAAc,EAC7B,UAAU,EAAC,cAAc,EACzB,uBAAuB,EACrB,0BAA0B,CACxB,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,IAAI,uBAAuB,CAAC,WAAW,CAAC,GAE3C,GACU,EACb,qBAAqB,CAAC,CAAC,CAAC,CACvB,KAAC,WAAW,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,MAAM,YAC7C,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,GAClB,GACU,CACf,CAAC,CAAC,CAAC,IAAI,KA1GH,yBAAyB,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CA2GpE,CACR,CAAC,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAC1C,MAAC,IAAI,IAEH,YAAY,EAAC,MAAM,EACnB,SAAS,EAAC,QAAQ,aAElB,MAAC,QAAQ,IAAC,SAAS,EAAC,6BAA6B,aAC/C,KAAC,WAAW,IAAC,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,qBAE/B,EACd,KAAC,WAAW,IACV,KAAK,EAAC,WAAW,EACjB,SAAS,EAAC,SAAS,0BAGP,IACL,EACX,KAAC,WAAW,IAAC,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YACxC,KAAC,sBAAsB,IACrB,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EACrB,uBAAuB,EAEzB,QAAQ,EAAE,QAAQ,KACd,eAAe,GACnB,GACU,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,MAAM,YAC7C,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,GAClB,GACU,KAvCV,2BAA2B,CAwC1B,CACR,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CACjB,KAAC,sBAAsB,IACrB,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,QAAQ,EAAE,QAAQ,KACd,eAAe,GACnB,CACH,CAAC,CAAC,CAAC,IAAI,EAEP,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,CAClC,KAAC,uBAAuB,IACtB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,IAAI,EAEP,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,sBAAsB,IACrB,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,EAChD,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,GACG,GACA,CACT,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB,IAAI,CACxD,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EAAE,kBAAkB,EAAE,cAAc,EACzC,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE,CAC3B,WAAW,CACT,6BAA6B,CAC3B,SAAS,EACT,gBAAgB,EAChB,cAAc,CACf,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,IAAI,CAChD,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,EAAC,QAAQ,kBACtC,KAAC,cAAc,IACb,KAAK,EAED,WAAW,EAAE,gBAId,EAAE,eAAqC,EAE1C,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE,CAC5B,WAAW,CACT,8BAA8B,CAC5B,SAAS,EACT,gBAAgB,EAChB,eAAe,CAChB,CACF,EAEH,WAAW,EAAC,4BAA4B,EACxC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,CAClD,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,kBAC/B,KAAC,cAAc,IACb,KAAK,EAED,WAAW,EAAE,gBAId,EAAE,aAAmC,EAExC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,CAC1B,WAAW,CACT,4BAA4B,CAC1B,SAAS,EACT,gBAAgB,EAChB,aAAa,CACd,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,IAAI,CACnD,MAAC,eAAe,IAAC,OAAO,EAAE,aAAa,aACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EAED,WAAW,EAAE,gBAId,EAAE,oBAA0C,EAE/C,QAAQ,EAAE,CAAC,oBAAoB,EAAE,EAAE,CACjC,WAAW,CACT,yBAAyB,CACvB,SAAS,EACT,gBAAgB,EAChB;oDACE,oBAAoB;iDACrB,CACF,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EAED,WAAW,EAAE,gBAId,EAAE,oBAA0C,EAE/C,QAAQ,EAAE,CAAC,oBAAoB,EAAE,EAAE,CACjC,WAAW,CACT,yBAAyB,CACvB,SAAS,EACT,gBAAgB,EAChB;oDACE,oBAAoB;iDACrB,CACF,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,IACQ,CACnB,IACG,CACP,EAEA,eAAe;4BACd,CAAC,yBAAyB;4BAC1B,CAAC,mBAAmB;4BACpB,CAAC,oBAAoB,IAAI,CACvB,MAAC,eAAe,IAAC,OAAO,EAAE,aAAa,aACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,EAC1C,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE;4CAC3B,MAAM,eAAe,GACnB,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;4CACvC,WAAW,CACT,2BAA2B,CACzB,EAAC,MAAM,EAAE,SAAS,EAAC,EACnB,eAAe,EACf,eAAe,EACf,cAAc,CACE,CACnB,CAAC;wCACJ,CAAC,EACD,QAAQ,EAAE,QAAQ,GAClB,GACI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,EAAC,QAAQ,kBACtC,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,eAAe,EAC3C,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE;4CAC5B,MAAM,cAAc,GAClB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;4CACtC,WAAW,CACT,2BAA2B,CACzB,EAAC,MAAM,EAAE,SAAS,EAAC,EACnB,eAAe,EACf,eAAe,EACf,cAAc,CACE,CACnB,CAAC;wCACJ,CAAC,EACD,QAAQ,EAAE,QAAQ,GAClB,GACI,IACQ,CACnB,IACC,GACK,CACd,IACG,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n type ReactNode,\n} from 'react';\nimport {\n getTableIdentity,\n resolveTableReference,\n type DataTable,\n} from '@sqlrooms/duckdb';\nimport {\n binnedNumericSchemes,\n categoricalSchemeColors,\n categoricalSchemes,\n continuousDivergingInterpolators,\n continuousDivergingSchemes,\n continuousSequentialSchemes,\n continuousSequentialInterpolators,\n parseColorString,\n} from '@sqlrooms/color-scales';\nimport type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport {\n cn,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Slider,\n ScrollArea,\n SettingsPanelHeader,\n Switch,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from '@sqlrooms/ui';\nimport {AlertTriangleIcon} from 'lucide-react';\nimport {isDeckMapTableDatasetSource, type DeckMapConfig} from './mapConfig';\nimport {\n clearDeckMapLayerColorScale,\n createDeckMapLayerColorScale,\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS,\n DECK_MAP_DEFAULT_LAYER_COLOR,\n DECK_MAP_DEFAULT_STROKE_COLOR,\n DECK_MAP_LAYER_TYPE_OPTIONS,\n deckMapRgbaToHex,\n getDeckMapColorAccessorOptions,\n getDeckMapLayerDatasetId,\n getDeckMapLayerColorScale,\n getDeckMapLayerExtruded,\n getDeckMapLayerFlatColor,\n getDeckMapLayerRecords,\n setDeckMapLayerFlatColor,\n setDeckMapLayerGeometryColumn,\n setDeckMapLayerHexagonColumn,\n setDeckMapLayerArcColumns,\n setDeckMapLayerTimestampColumn,\n setDeckMapLayerType,\n setDeckMapLayerColumnRadius,\n updateDeckMapLayer,\n type DeckMapLayerColorAccessor,\n type DeckMapLayerRecord,\n usesGeometryColumnSetting,\n usesH3ColumnSetting,\n usesArcColumnSetting,\n usesRadiusSetting,\n usesColumnRadiusSetting,\n usesTripsSettings,\n usesExtrusionSettings,\n usesStrokeSetting,\n usesStrokeExtrusionWarning,\n getDeckMapLayerStrokeDefault,\n getDeckMapColorScaleOpacity,\n getDeckMapLayerChannelOpacityPercent,\n detachDeckMapLayerOpacity,\n replaceDeckMapLayerColorScalesWithFlat,\n replaceDeckMapLayerColorScaleWithFlat,\n} from './mapLayerConfigUtils';\nimport {\n DeckMapCodeViewerPanel,\n DeckMapCodeViewToggleButton,\n DeckMapColumnSelector as ColumnSelector,\n DeckMapColumnsProvider as ColumnsProvider,\n DeckMapSettingsField as Field,\n DeckMapTableSelector as DataTableSelector,\n filterDeckMapColumns,\n isDeckMapCategoricalColorColumn,\n} from './MapSettingsControls';\nimport {regenerateMapConfigForTable} from './mapConfigUtils';\nimport {useDeckMapDatasetSchema} from './useDeckMapDatasetSchema';\nimport {\n detectHeatmapScheme,\n heatmapSchemeToColorRange,\n} from './json/heatmapDefaults';\n\nconst EMPTY_COLUMNS: DataTable['columns'] = [];\n\nfunction getColorScaleColumnKind(\n type: ColorScaleConfig['type'],\n): 'quantitative' | 'categorical' {\n return type === 'categorical' ? 'categorical' : 'quantitative';\n}\n\n/** Color-scale type matching the field's column kind. */\nfunction resolveColorScaleTypeForField(\n columns: DataTable['columns'],\n field: string | undefined,\n preferredType: ColorScaleConfig['type'],\n): ColorScaleConfig['type'] {\n if (!field) return preferredType;\n const column = columns.find((candidate) => candidate.name === field);\n if (!column?.type) return preferredType;\n // String/boolean/binary fields only work with categorical scales.\n if (isDeckMapCategoricalColorColumn(column)) {\n return 'categorical';\n }\n return preferredType;\n}\n\n/** First selectable color-scale field for this type. */\nfunction getDefaultColorScaleField(\n columns: DataTable['columns'],\n type: ColorScaleConfig['type'],\n preferred?: string,\n): string | undefined {\n const colorable = filterDeckMapColumns(columns, 'colorable');\n if (preferred && colorable.some((column) => column.name === preferred)) {\n return preferred;\n }\n const matchingKind = filterDeckMapColumns(\n colorable,\n getColorScaleColumnKind(type),\n );\n return matchingKind[0]?.name ?? colorable[0]?.name;\n}\n\n/** Pick field first, then coerce scale type to match that field. */\nexport function resolveColorScaleFieldAndType(\n columns: DataTable['columns'],\n preferredType: ColorScaleConfig['type'],\n preferredField?: string,\n): {field: string; type: ColorScaleConfig['type']} | undefined {\n const field = getDefaultColorScaleField(\n columns,\n preferredType,\n preferredField,\n );\n if (!field) return undefined;\n return {\n field,\n type: resolveColorScaleTypeForField(columns, field, preferredType),\n };\n}\n\nexport interface DeckMapSettingsPanelProps {\n title: string;\n selectedTable?: string;\n config: DeckMapConfig;\n tables: DataTable[];\n onClose?: () => void;\n onTableChange: (table: DataTable) => void;\n onTitleChange: (title: string) => void;\n onConfigChange: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n /** Custom maps stay on the JSON editor so basic controls cannot clobber them. */\n customConfig?: boolean;\n /**\n * Document maps own their dataset in `config.datasets`. Prefer that table\n * over `selectedTable`, which is only a sidecar. Dashboards leave this false\n * so the shared dashboard selected table is shown.\n */\n preferDatasetSource?: boolean;\n}\n\nfunction getSchemeOptions(type: ColorScaleConfig['type']) {\n if (type === 'categorical') {\n return categoricalSchemes;\n }\n if (type === 'diverging') {\n return continuousDivergingSchemes;\n }\n if (type === 'sequential') {\n return continuousSequentialSchemes;\n }\n // Quantile/quantize/threshold: ColorBrewer only (Viridis → sequential).\n return binnedNumericSchemes;\n}\n\nconst SCHEME_PREVIEW_STEPS = 24;\n\n/** Sample CSS colors for scheme dropdown previews. */\nfunction getSchemePreviewColors(\n scheme: string,\n type: ColorScaleConfig['type'],\n): string[] {\n if (type === 'categorical') {\n const colors =\n categoricalSchemeColors[scheme as keyof typeof categoricalSchemeColors];\n return colors ? [...colors] : [];\n }\n\n const interpolator =\n type === 'diverging'\n ? continuousDivergingInterpolators[\n scheme as keyof typeof continuousDivergingInterpolators\n ]\n : (continuousSequentialInterpolators[\n scheme as keyof typeof continuousSequentialInterpolators\n ] ??\n continuousDivergingInterpolators[\n scheme as keyof typeof continuousDivergingInterpolators\n ]);\n\n if (!interpolator) return [];\n return Array.from({length: SCHEME_PREVIEW_STEPS}, (_, i) =>\n interpolator(i / (SCHEME_PREVIEW_STEPS - 1)),\n );\n}\n\n/** Edge-to-edge CSS gradient for a scheme (no fringe gaps). */\nfunction getSchemePreviewGradient(\n colors: string[],\n type: ColorScaleConfig['type'],\n): string | undefined {\n if (colors.length === 0) return undefined;\n if (type === 'categorical') {\n const stops = colors.flatMap((color, index) => {\n const start = (index / colors.length) * 100;\n const end = ((index + 1) / colors.length) * 100;\n return [`${color} ${start}%`, `${color} ${end}%`];\n });\n return `linear-gradient(to right, ${stops.join(', ')})`;\n }\n return `linear-gradient(to right, ${colors.join(', ')})`;\n}\n\nconst ColorSchemeOptionLabel: FC<{\n scheme: string;\n type: ColorScaleConfig['type'];\n}> = ({scheme, type}) => {\n const colors = getSchemePreviewColors(scheme, type);\n const gradient = getSchemePreviewGradient(colors, type);\n return (\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n {gradient ? (\n <span\n aria-hidden\n className=\"h-3 w-20 shrink-0 overflow-hidden rounded-sm\"\n style={{backgroundImage: gradient}}\n />\n ) : null}\n <span className=\"truncate\">{scheme}</span>\n </span>\n );\n};\n\n/** Compact color swatch; native picker is visually hidden. */\nconst ColorSwatchInput: FC<{\n value: string;\n onChange: (hex: string) => void;\n disabled?: boolean;\n 'aria-label': string;\n}> = ({value, onChange, disabled, 'aria-label': ariaLabel}) => (\n <label\n className={cn(\n 'border-input relative h-5 w-9 shrink-0 overflow-hidden rounded-[3px] border',\n 'ring-offset-background focus-within:ring-ring focus-within:ring-1 focus-within:ring-offset-1',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n )}\n style={{backgroundColor: value}}\n >\n <input\n type=\"color\"\n aria-label={ariaLabel}\n value={value}\n disabled={disabled}\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n onChange={(event) => onChange(event.target.value)}\n />\n </label>\n);\n\nfunction opacityPercentToAlpha(percent: number): number {\n return Math.round((Math.max(0, Math.min(100, percent)) / 100) * 255);\n}\n\nfunction getLayerOpacityPercent(layer: DeckMapLayerRecord | undefined): number {\n const opacity = layer?.opacity;\n if (typeof opacity === 'number' && Number.isFinite(opacity)) {\n return Math.round(Math.max(0, Math.min(1, opacity)) * 100);\n }\n return 100;\n}\n\nconst SettingsSliderField: FC<{\n label: string;\n children: ReactNode;\n}> = ({label, children}) => (\n <Field label={label}>\n <div className=\"pt-0.5\">{children}</div>\n </Field>\n);\n\nconst AppearanceOpacitySlider: FC<{\n valuePercent: number;\n onChange: (percent: number) => void;\n disabled?: boolean;\n}> = ({valuePercent, onChange, disabled}) => (\n <SettingsSliderField label={`Opacity: ${valuePercent}%`}>\n <Slider\n min={0}\n max={100}\n step={1}\n value={[valuePercent]}\n disabled={disabled}\n onValueChange={(values) => onChange(values[0] ?? valuePercent)}\n />\n </SettingsSliderField>\n);\n\ntype AppearanceColorChannelProps = {\n accessor: DeckMapLayerColorAccessor;\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n lastColorScaleFieldsRef: MutableRefObject<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >;\n readOnly?: boolean;\n /** Stroke enable switch. */\n enabled?: boolean;\n onEnabledChange?: (enabled: boolean) => void;\n enableLabel?: string;\n defaultFlatColor?: readonly [number, number, number, number];\n widthPixels?: number;\n onWidthChange?: (width: number) => void;\n widthLabel?: string;\n radiusValue?: number;\n onRadiusChange?: (radius: number) => void;\n radiusLabel?: string;\n radiusUnit?: string;\n radiusMin?: number;\n radiusMax?: number;\n radiusStep?: number;\n /** Warning that strokes are ignored while the layer is extruded. */\n extrusionDisablesStroke?: boolean;\n};\n\nconst AppearanceColorChannel: FC<AppearanceColorChannelProps> = ({\n accessor,\n layer,\n columns,\n mapConfig,\n layerIndex,\n applyConfig,\n lastColorScaleFieldsRef,\n readOnly,\n enabled,\n onEnabledChange,\n enableLabel = 'Enabled',\n defaultFlatColor = DECK_MAP_DEFAULT_LAYER_COLOR,\n widthPixels,\n onWidthChange,\n widthLabel = 'Width',\n radiusValue,\n onRadiusChange,\n radiusLabel = 'Radius',\n radiusUnit = '',\n radiusMin = 0.1,\n radiusMax = 50,\n radiusStep = 0.1,\n extrusionDisablesStroke = false,\n}) => {\n const colorScale = getDeckMapLayerColorScale(layer, accessor);\n const flatColor = getDeckMapLayerFlatColor(layer, accessor) ?? [\n ...defaultFlatColor,\n ];\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n // Don't read lastColorScaleFieldsRef during render (react-hooks/refs).\n const defaultField = getDefaultColorScaleField(columns, colorScaleType);\n const showControls = enabled !== false;\n const opacityPercent = getDeckMapLayerChannelOpacityPercent(\n layer,\n accessor,\n flatColor[3] ?? 255,\n );\n\n const updateColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const preferredField =\n patch.field ??\n colorScale?.field ??\n lastColorScaleFieldsRef.current[accessor];\n const resolved = resolveColorScaleFieldAndType(\n columns,\n patch.type ?? colorScale?.type ?? 'sequential',\n preferredField,\n );\n if (!resolved) return;\n const {field, type} = resolved;\n\n lastColorScaleFieldsRef.current[accessor] = field;\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n const existingScale = getDeckMapLayerColorScale(detached, accessor);\n const currentFlat =\n getDeckMapLayerFlatColor(detached, accessor) ?? flatColor;\n return {\n ...detached,\n [accessor]: createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n opacity: existingScale\n ? getDeckMapColorScaleOpacity(existingScale)\n : (currentFlat[3] ?? 255) / 255,\n }),\n };\n }),\n );\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n {onEnabledChange ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"flex items-center gap-1 text-xs font-medium\">\n {enableLabel}\n {extrusionDisablesStroke ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex\"\n aria-label=\"no strokes with extrusion enabled\"\n >\n <AlertTriangleIcon className=\"h-3.5 w-3.5 text-amber-500\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>\n no strokes with extrusion enabled\n </TooltipContent>\n </Tooltip>\n ) : null}\n </span>\n <Switch\n checked={enabled !== false}\n onCheckedChange={onEnabledChange}\n aria-label={enableLabel}\n />\n </div>\n ) : null}\n\n {showControls && onWidthChange && widthPixels !== undefined ? (\n <SettingsSliderField\n label={`${widthLabel}: ${Number(widthPixels.toFixed(1))}px`}\n >\n <Slider\n min={0.1}\n max={20}\n step={0.1}\n value={[widthPixels]}\n onValueChange={(values) => onWidthChange(values[0] ?? 1)}\n />\n </SettingsSliderField>\n ) : null}\n\n {showControls && onRadiusChange && radiusValue !== undefined ? (\n <SettingsSliderField\n label={`${radiusLabel}: ${\n radiusStep < 1 ? Number(radiusValue.toFixed(1)) : radiusValue\n }${radiusUnit}`}\n >\n <Slider\n min={radiusMin}\n max={radiusMax}\n step={radiusStep}\n value={[radiusValue]}\n onValueChange={(values) => onRadiusChange(values[0] ?? radiusValue)}\n />\n </SettingsSliderField>\n ) : null}\n\n {showControls ? (\n <>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n disabled={readOnly || (!colorScale && !defaultField)}\n aria-label=\"Color scale\"\n onCheckedChange={(checked) => {\n if (checked) {\n updateColorScale({});\n return;\n }\n if (colorScale?.field) {\n lastColorScaleFieldsRef.current[accessor] = colorScale.field;\n }\n applyConfig(\n clearDeckMapLayerColorScale(mapConfig, layerIndex, accessor),\n );\n }}\n />\n </div>\n\n {!colorScale ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color</span>\n <ColorSwatchInput\n aria-label=\"Color\"\n value={deckMapRgbaToHex(flatColor)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, flatColor[3] ?? 255);\n applyConfig(\n setDeckMapLayerFlatColor(\n mapConfig,\n layerIndex,\n accessor,\n next,\n ),\n );\n }}\n />\n </div>\n ) : null}\n\n {colorScale ? (\n <div className=\"flex flex-col gap-2\">\n {columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Field\" required>\n <ColumnSelector.Colorable\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n <Field label=\"Type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n updateColorScale({type: value as ColorScaleConfig['type']})\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n updateColorScale({scheme: value as ColorScaleScheme})\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type={colorScaleType}\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n ) : null}\n\n <AppearanceOpacitySlider\n valuePercent={opacityPercent}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n if (colorScale) {\n const scale =\n getDeckMapLayerColorScale(detached, accessor) ??\n colorScale;\n return {\n ...detached,\n [accessor]: {\n ...scale,\n opacity: percent / 100,\n },\n };\n }\n const current =\n getDeckMapLayerFlatColor(detached, accessor) ?? flatColor;\n return {\n ...detached,\n [accessor]: [\n current[0],\n current[1],\n current[2],\n opacityPercentToAlpha(percent),\n ],\n };\n }),\n );\n }}\n />\n </>\n ) : null}\n </div>\n );\n};\n\n/** Arc source/target colors; optional shared color scale. */\nconst AppearanceArcColorPanel: FC<{\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n lastColorScaleFieldsRef: MutableRefObject<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >;\n readOnly?: boolean;\n}> = ({\n layer,\n columns,\n mapConfig,\n layerIndex,\n applyConfig,\n lastColorScaleFieldsRef,\n readOnly,\n}) => {\n const sourceScale = getDeckMapLayerColorScale(layer, 'getSourceColor');\n const targetScale = getDeckMapLayerColorScale(layer, 'getTargetColor');\n const colorScale = sourceScale ?? targetScale;\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n // Don't read lastColorScaleFieldsRef during render (react-hooks/refs).\n const defaultField = getDefaultColorScaleField(columns, colorScaleType);\n const sourceFlat = getDeckMapLayerFlatColor(layer, 'getSourceColor') ?? [\n ...DECK_MAP_DEFAULT_LAYER_COLOR,\n ];\n const targetFlat = getDeckMapLayerFlatColor(layer, 'getTargetColor') ?? [\n ...DECK_MAP_DEFAULT_LAYER_COLOR,\n ];\n const opacityPercent = Math.round(\n (getDeckMapLayerChannelOpacityPercent(\n layer,\n 'getSourceColor',\n sourceFlat[3] ?? 255,\n ) +\n getDeckMapLayerChannelOpacityPercent(\n layer,\n 'getTargetColor',\n targetFlat[3] ?? 255,\n )) /\n 2,\n );\n\n const applySharedColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const preferredField =\n patch.field ??\n colorScale?.field ??\n lastColorScaleFieldsRef.current.getSourceColor ??\n lastColorScaleFieldsRef.current.getTargetColor;\n const resolved = resolveColorScaleFieldAndType(\n columns,\n patch.type ?? colorScale?.type ?? 'sequential',\n preferredField,\n );\n if (!resolved) return;\n const {field, type} = resolved;\n\n lastColorScaleFieldsRef.current.getSourceColor = field;\n lastColorScaleFieldsRef.current.getTargetColor = field;\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n const existing =\n getDeckMapLayerColorScale(detached, 'getSourceColor') ??\n getDeckMapLayerColorScale(detached, 'getTargetColor');\n const source =\n getDeckMapLayerFlatColor(detached, 'getSourceColor') ?? sourceFlat;\n const target =\n getDeckMapLayerFlatColor(detached, 'getTargetColor') ?? targetFlat;\n const opacity = existing\n ? getDeckMapColorScaleOpacity(existing)\n : Math.round(((source[3] ?? 255) + (target[3] ?? 255)) / 2) / 255;\n const scale = createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n opacity,\n });\n return {\n ...detached,\n getSourceColor: scale,\n getTargetColor: scale,\n };\n }),\n );\n };\n\n const setFlatColor = (\n accessor: 'getSourceColor' | 'getTargetColor',\n color: readonly [number, number, number, number],\n ) => {\n applyConfig(\n setDeckMapLayerFlatColor(mapConfig, layerIndex, accessor, color),\n );\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n disabled={readOnly || (!colorScale && !defaultField)}\n aria-label=\"Color scale\"\n onCheckedChange={(checked) => {\n if (checked) {\n applySharedColorScale({});\n return;\n }\n if (colorScale?.field) {\n lastColorScaleFieldsRef.current.getSourceColor = colorScale.field;\n lastColorScaleFieldsRef.current.getTargetColor = colorScale.field;\n }\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const replacements: Partial<\n Record<\n DeckMapLayerColorAccessor,\n readonly [number, number, number, number]\n >\n > = {};\n if (getDeckMapLayerColorScale(nextLayer, 'getSourceColor')) {\n replacements.getSourceColor = DECK_MAP_DEFAULT_LAYER_COLOR;\n }\n if (getDeckMapLayerColorScale(nextLayer, 'getTargetColor')) {\n replacements.getTargetColor = DECK_MAP_DEFAULT_LAYER_COLOR;\n }\n return replaceDeckMapLayerColorScalesWithFlat(\n nextLayer,\n replacements,\n );\n }),\n );\n }}\n />\n </div>\n\n {!colorScale ? (\n <>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Source color</span>\n <ColorSwatchInput\n aria-label=\"Source color\"\n value={deckMapRgbaToHex(sourceFlat)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, sourceFlat[3] ?? 255);\n setFlatColor('getSourceColor', next);\n }}\n />\n </div>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Target color</span>\n <ColorSwatchInput\n aria-label=\"Target color\"\n value={deckMapRgbaToHex(targetFlat)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, targetFlat[3] ?? 255);\n setFlatColor('getTargetColor', next);\n }}\n />\n </div>\n </>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Field\" required>\n <ColumnSelector.Colorable\n value={colorScale.field}\n onChange={(field) => applySharedColorScale({field})}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n <Field label=\"Type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n applySharedColorScale({\n type: value as ColorScaleConfig['type'],\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n applySharedColorScale({scheme: value as ColorScaleScheme})\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type={colorScaleType}\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n )}\n\n <AppearanceOpacitySlider\n valuePercent={opacityPercent}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n if (colorScale) {\n const scale =\n getDeckMapLayerColorScale(detached, 'getSourceColor') ??\n getDeckMapLayerColorScale(detached, 'getTargetColor') ??\n colorScale;\n const nextScale = {...scale, opacity: percent / 100};\n return {\n ...detached,\n getSourceColor: nextScale,\n getTargetColor: nextScale,\n };\n }\n const alpha = opacityPercentToAlpha(percent);\n const source =\n getDeckMapLayerFlatColor(detached, 'getSourceColor') ??\n sourceFlat;\n const target =\n getDeckMapLayerFlatColor(detached, 'getTargetColor') ??\n targetFlat;\n return {\n ...detached,\n getSourceColor: [source[0], source[1], source[2], alpha],\n getTargetColor: [target[0], target[1], target[2], alpha],\n };\n }),\n );\n }}\n />\n </div>\n );\n};\n\nconst AppearanceExtrusionPanel: FC<{\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n}> = ({layer, columns, mapConfig, layerIndex, applyConfig, readOnly}) => {\n const extruded = getDeckMapLayerExtruded(layer);\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Extruded</span>\n <Switch\n checked={extruded}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n extruded: checked,\n getElevation: checked\n ? (nextLayer.getElevation ?? 1)\n : nextLayer.getElevation,\n })),\n )\n }\n />\n </div>\n\n {extruded && columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Elevation column\">\n <ColumnSelector.Numeric\n value={(() => {\n const elev = layer?.getElevation;\n if (\n elev &&\n typeof elev === 'object' &&\n '@@function' in (elev as object)\n ) {\n return (elev as Record<string, unknown>).field as\n | string\n | undefined;\n }\n if (typeof elev === 'string' && elev.startsWith('@@=')) {\n return elev.slice(3);\n }\n return undefined;\n })()}\n onChange={(elevationColumn) =>\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n getElevation: elevationColumn\n ? {\n '@@function': 'scale',\n field: elevationColumn,\n type: 'linear',\n domain: 'auto',\n range: [0, 200],\n }\n : undefined,\n elevationScale: nextLayer.elevationScale ?? 1,\n })),\n )\n }\n placeholder=\"Select elevation column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n\n {extruded ? (\n <SettingsSliderField\n label={`Elevation scale: ${(layer?.elevationScale as number | undefined) ?? 1}x`}\n >\n <Slider\n min={0.01}\n max={1000}\n step={0.01}\n value={[(layer?.elevationScale as number | undefined) ?? 1]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n elevationScale: value,\n })),\n );\n }}\n />\n </SettingsSliderField>\n ) : null}\n </div>\n );\n};\n\nexport const DeckMapSettingsPanel: FC<DeckMapSettingsPanelProps> = ({\n title,\n selectedTable,\n config,\n tables,\n onClose,\n onTableChange,\n onTitleChange,\n onConfigChange,\n readOnly,\n customConfig = false,\n preferDatasetSource = false,\n}) => {\n const [layerIndex, setLayerIndex] = useState(0);\n const [viewMode, setViewMode] = useState<'settings' | 'code'>(\n customConfig ? 'code' : 'settings',\n );\n // Last color-scale field per accessor (restored when re-enabling a scale).\n const lastColorScaleFieldsRef = useRef<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >({});\n\n const selectedDataTable = useMemo(\n () =>\n selectedTable\n ? resolveTableReference(tables, selectedTable).table\n : undefined,\n [selectedTable, tables],\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n if (readOnly) return;\n onTableChange(table);\n },\n [onTableChange, readOnly],\n );\n\n const mapConfig = config;\n const serializedMapConfig = useMemo(\n () => JSON.stringify(config, null, 2),\n [config],\n );\n const showCode = customConfig || viewMode === 'code';\n const layers = getDeckMapLayerRecords(mapConfig);\n const activeLayerIndex = Math.min(layerIndex, Math.max(layers.length - 1, 0));\n const activeLayer = layers[activeLayerIndex];\n const activeLayerDatasetId = getDeckMapLayerDatasetId(activeLayer);\n const activeLayerDataset = activeLayerDatasetId\n ? mapConfig.datasets?.[activeLayerDatasetId]\n : undefined;\n\n // Source table (coords/transform) vs compiled output columns (bindings).\n const activeLayerDatasetSource = activeLayerDataset?.source;\n const fallbackTableName = isDeckMapTableDatasetSource(\n activeLayerDatasetSource,\n )\n ? activeLayerDatasetSource.tableName\n : undefined;\n const fallbackTable = useMemo(\n () =>\n fallbackTableName\n ? resolveTableReference(tables, fallbackTableName).table\n : undefined,\n [fallbackTableName, tables],\n );\n const sourceDataTable = preferDatasetSource\n ? (fallbackTable ?? selectedDataTable)\n : (selectedDataTable ?? fallbackTable);\n const sourceColumns = sourceDataTable?.columns ?? EMPTY_COLUMNS;\n const resolvedActiveLayerDatasetSource = useMemo(() => {\n if (!activeLayerDatasetSource) {\n return selectedDataTable\n ? {tableName: getTableIdentity(selectedDataTable.table)}\n : undefined;\n }\n if (!isDeckMapTableDatasetSource(activeLayerDatasetSource)) {\n return activeLayerDatasetSource;\n }\n\n return {\n tableName:\n !preferDatasetSource && selectedDataTable\n ? getTableIdentity(selectedDataTable.table)\n : activeLayerDatasetSource.tableName,\n ...(activeLayerDatasetSource.transformSql\n ? {transformSql: activeLayerDatasetSource.transformSql}\n : {}),\n };\n }, [activeLayerDatasetSource, preferDatasetSource, selectedDataTable]);\n const datasetSchema = useDeckMapDatasetSchema({\n source: resolvedActiveLayerDatasetSource,\n sourceColumns,\n });\n const outputColumns = datasetSchema.outputColumns;\n const dataOutputColumns = datasetSchema.dataOutputColumns;\n const datasetSchemaErrorMessage = datasetSchema.error?.message;\n\n const showGeometryColumnSetting = usesGeometryColumnSetting(\n activeLayer?.['@@type'],\n );\n const showH3ColumnSetting = usesH3ColumnSetting(activeLayer?.['@@type']);\n const showArcColumnSetting = usesArcColumnSetting(activeLayer?.['@@type']);\n const showRadiusSetting = usesRadiusSetting(activeLayer?.['@@type']);\n const showColumnRadiusSetting = usesColumnRadiusSetting(\n activeLayer?.['@@type'],\n );\n const showTripsSettings = usesTripsSettings(activeLayer?.['@@type']);\n const showExtrusionSettings = usesExtrusionSettings(activeLayer?.['@@type']);\n const showStrokeSetting = usesStrokeSetting(activeLayer?.['@@type']);\n const strokeEnabled =\n typeof activeLayer?.stroked === 'boolean'\n ? activeLayer.stroked\n : getDeckMapLayerStrokeDefault(activeLayer?.['@@type'], {\n extruded: getDeckMapLayerExtruded(activeLayer),\n });\n const strokeWidthPixels =\n activeLayer?.lineWidthUnits === 'pixels' &&\n typeof activeLayer?.getLineWidth === 'number'\n ? activeLayer.getLineWidth\n : ((activeLayer?.lineWidthMinPixels as number | undefined) ?? 1);\n const colorAccessorOptions = getDeckMapColorAccessorOptions(\n activeLayer?.['@@type'],\n );\n const hasFillColor = colorAccessorOptions.some(\n (option) => option.value === 'getFillColor',\n );\n const hasLineColor = colorAccessorOptions.some(\n (option) => option.value === 'getLineColor',\n );\n const hasPathColor = colorAccessorOptions.some(\n (option) => option.value === 'getColor',\n );\n const hasSourceColor = colorAccessorOptions.some(\n (option) => option.value === 'getSourceColor',\n );\n const hasTargetColor = colorAccessorOptions.some(\n (option) => option.value === 'getTargetColor',\n );\n const isPathLayer = activeLayer?.['@@type'] === 'GeoArrowPathLayer';\n const isGeoJsonLayer = activeLayer?.['@@type'] === 'GeoJsonLayer';\n // Keep unknown types visible if the layer already uses them.\n const activeLayerType =\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined;\n const layerTypeOptions: ReadonlyArray<{value: string; label: string}> =\n activeLayerType &&\n !DECK_MAP_LAYER_TYPE_OPTIONS.some(\n (option) => option.value === activeLayerType,\n )\n ? [\n ...DECK_MAP_LAYER_TYPE_OPTIONS,\n {value: activeLayerType, label: activeLayerType},\n ]\n : DECK_MAP_LAYER_TYPE_OPTIONS;\n // GeoJsonLayer uses pointRadius* / getPointRadius; scatterplot uses radius* / getRadius.\n const pointRadiusPixels = isGeoJsonLayer\n ? activeLayer?.pointRadiusUnits === 'pixels' &&\n typeof activeLayer?.getPointRadius === 'number'\n ? activeLayer.getPointRadius\n : ((activeLayer?.pointRadiusMinPixels as number | undefined) ?? 2)\n : activeLayer?.radiusUnits === 'pixels' &&\n typeof activeLayer?.getRadius === 'number'\n ? activeLayer.getRadius\n : ((activeLayer?.radiusMinPixels as number | undefined) ?? 2);\n const isHeatmapLayer = activeLayer?.['@@type'] === 'GeoArrowHeatmapLayer';\n const showAppearanceCard = isHeatmapLayer || colorAccessorOptions.length > 0;\n const lineWidthPixels =\n activeLayer?.widthUnits === 'pixels' &&\n typeof activeLayer?.getWidth === 'number'\n ? activeLayer.getWidth\n : ((activeLayer?.widthMinPixels as number | undefined) ??\n (showTripsSettings ? 3 : 1));\n\n const applyConfig = useCallback(\n (nextConfig: DeckMapConfig) => {\n if (readOnly) return;\n onConfigChange(nextConfig);\n },\n [onConfigChange, readOnly],\n );\n\n // Drop point/heatmap radius leftovers on Column layers (pixels vs meters).\n useEffect(() => {\n if (!showColumnRadiusSetting || !activeLayer || readOnly) return;\n const needsHeal =\n activeLayer.radiusUnits === 'pixels' ||\n activeLayer.getRadius !== undefined ||\n activeLayer.radiusMinPixels !== undefined ||\n activeLayer.radiusMaxPixels !== undefined ||\n activeLayer.radiusPixels !== undefined;\n if (!needsHeal) return;\n const radius =\n typeof activeLayer.radius === 'number' &&\n Number.isFinite(activeLayer.radius) &&\n activeLayer.radius > 0\n ? activeLayer.radius\n : 50;\n applyConfig(\n setDeckMapLayerColumnRadius(mapConfig, activeLayerIndex, radius),\n );\n }, [\n activeLayer,\n activeLayerIndex,\n applyConfig,\n mapConfig,\n readOnly,\n showColumnRadiusSetting,\n ]);\n\n // Fix path/arc/trips where widthMaxPixels < widthMinPixels (clamps the slider).\n useEffect(() => {\n const isLineWidthLayer =\n showTripsSettings ||\n activeLayer?.['@@type'] === 'GeoArrowPathLayer' ||\n showArcColumnSetting;\n if (!isLineWidthLayer || !activeLayer || readOnly) return;\n\n const min =\n typeof activeLayer.widthMinPixels === 'number'\n ? activeLayer.widthMinPixels\n : undefined;\n const max =\n typeof activeLayer.widthMaxPixels === 'number'\n ? activeLayer.widthMaxPixels\n : undefined;\n if (min === undefined || max === undefined || max >= min) return;\n\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => ({\n ...layer,\n widthMinPixels: Math.min(min, max),\n widthMaxPixels: Math.max(min, max),\n })),\n );\n }, [\n activeLayer,\n activeLayerIndex,\n applyConfig,\n mapConfig,\n readOnly,\n showArcColumnSetting,\n showTripsSettings,\n ]);\n\n const setStrokeWidth = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n lineWidthUnits: 'pixels',\n lineWidthMinPixels: value,\n lineWidthMaxPixels: value,\n };\n if (typeof layer.getLineWidth !== 'string') {\n nextLayer.getLineWidth = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setLineWidth = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n widthUnits: 'pixels',\n widthMinPixels: value,\n widthMaxPixels: value,\n };\n if (typeof layer.getWidth !== 'string') {\n nextLayer.getWidth = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setPointRadius = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n if (layer['@@type'] === 'GeoJsonLayer') {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n pointRadiusUnits: 'pixels',\n pointRadiusMinPixels: value,\n pointRadiusMaxPixels: value,\n };\n if (typeof layer.getPointRadius !== 'string') {\n nextLayer.getPointRadius = value;\n }\n return nextLayer;\n }\n\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n radiusUnits: 'pixels',\n radiusMinPixels: value,\n radiusMaxPixels: value,\n };\n if (typeof layer.getRadius !== 'string') {\n nextLayer.getRadius = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setColumnRadius = (value: number) => {\n applyConfig(\n setDeckMapLayerColumnRadius(mapConfig, activeLayerIndex, value),\n );\n };\n\n const fillRadiusProps = showRadiusSetting\n ? {\n radiusValue: pointRadiusPixels,\n onRadiusChange: setPointRadius,\n radiusLabel: 'Point radius',\n radiusUnit: 'px',\n radiusMin: 0.1,\n radiusMax: 50,\n radiusStep: 0.1,\n }\n : showColumnRadiusSetting\n ? {\n radiusValue: (activeLayer?.radius as number | undefined) ?? 50,\n onRadiusChange: setColumnRadius,\n radiusLabel: 'Column radius',\n radiusUnit: 'm',\n radiusMin: 1,\n radiusMax: 10000,\n radiusStep: 1,\n }\n : {};\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SettingsPanelHeader\n title=\"Map settings\"\n className=\"shrink-0 p-2\"\n actions={\n customConfig ? undefined : (\n <DeckMapCodeViewToggleButton\n label={showCode ? 'Show settings' : 'View code'}\n selected={showCode}\n onClick={() =>\n setViewMode((currentViewMode) =>\n currentViewMode === 'code' ? 'settings' : 'code',\n )\n }\n />\n )\n }\n onClose={onClose}\n closeLabel=\"Close map settings\"\n />\n\n {showCode ? (\n <DeckMapCodeViewerPanel\n value={serializedMapConfig}\n copyTooltipLabel=\"Copy map config\"\n />\n ) : (\n <ScrollArea className=\"min-h-0 flex-1 [&_[data-radix-scroll-area-viewport]>div]:!block\">\n <div className=\"flex flex-col gap-2 p-2 pt-0\">\n <Field label=\"Title\">\n <input\n value={title}\n onChange={(e) => onTitleChange(e.target.value)}\n placeholder=\"Map title\"\n disabled={readOnly}\n className=\"border-input placeholder:text-muted-foreground focus-visible:ring-ring h-8 w-full rounded-md border bg-transparent px-3 py-2 text-xs font-medium shadow-sm outline-hidden transition-colors focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </Field>\n\n <Field label=\"Dataset\" required>\n <DataTableSelector\n onChange={handleTableChange}\n tables={tables}\n value={sourceDataTable}\n disabled={readOnly}\n />\n </Field>\n\n {layers.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {layers.length > 1 && (\n <Field label=\"Layer\">\n <Select\n value={String(activeLayerIndex)}\n onValueChange={(value) => setLayerIndex(Number(value))}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {layers.map((layer, index) => (\n <SelectItem key={index} value={String(index)}>\n {String(layer.id ?? `Layer ${index + 1}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Visible</span>\n <Switch\n checked={activeLayer?.visible !== false}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n visible: checked,\n }),\n ),\n )\n }\n />\n </div>\n\n <Field label=\"Layer type\">\n <Select\n value={\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined\n }\n onValueChange={(value) =>\n applyConfig(\n setDeckMapLayerType(mapConfig, activeLayerIndex, value),\n )\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select layer type\" />\n </SelectTrigger>\n <SelectContent>\n {layerTypeOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n\n {(datasetSchema.isLoading || datasetSchemaErrorMessage) && (\n <div className=\"text-muted-foreground rounded-md border px-2 py-1.5 text-xs\">\n {datasetSchema.isLoading\n ? 'Inspecting dataset schema...'\n : `Dataset schema unavailable: ${datasetSchemaErrorMessage}`}\n </div>\n )}\n\n {showAppearanceCard && (\n <Field label=\"Appearance\">\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n {isHeatmapLayer ? (\n <>\n <SettingsSliderField\n label={`Radius: ${(activeLayer?.radiusPixels as number | undefined) ?? 30}px`}\n >\n <Slider\n min={1}\n max={100}\n step={1}\n value={[\n (activeLayer?.radiusPixels as\n | number\n | undefined) ?? 30,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 30;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radiusPixels: value,\n }),\n ),\n );\n }}\n />\n </SettingsSliderField>\n <Select\n value={detectHeatmapScheme(activeLayer?.colorRange)}\n onValueChange={(value) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n colorRange:\n heatmapSchemeToColorRange(value),\n }),\n ),\n )\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {continuousSequentialSchemes.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type=\"sequential\"\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <AppearanceOpacitySlider\n valuePercent={getLayerOpacityPercent(activeLayer)}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n opacity: percent / 100,\n }),\n ),\n );\n }}\n />\n </>\n ) : (\n <>\n {(showTripsSettings ||\n isPathLayer ||\n showArcColumnSetting) && (\n <SettingsSliderField\n label={`${\n showTripsSettings ? 'Trip width' : 'Line width'\n }: ${lineWidthPixels}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[lineWidthPixels]}\n onValueChange={(values) =>\n setLineWidth(values[0] ?? lineWidthPixels)\n }\n />\n </SettingsSliderField>\n )}\n\n {showArcColumnSetting ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">\n Flat lines\n </span>\n <Switch\n checked={activeLayer?.getHeight === 0}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getHeight: checked ? 0 : undefined,\n }),\n ),\n )\n }\n />\n </div>\n ) : null}\n\n {showTripsSettings ? (\n <SettingsSliderField\n label={`Trail length: ${Math.round(((activeLayer?._trailLengthFactor as number | undefined) ?? 0.4) * 100)}%`}\n >\n <Slider\n min={5}\n max={100}\n step={5}\n value={[\n Math.round(\n ((activeLayer?._trailLengthFactor as\n | number\n | undefined) ?? 0.4) * 100,\n ),\n ]}\n onValueChange={(values) => {\n const value = (values[0] ?? 40) / 100;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n _trailLengthFactor: value,\n }),\n ),\n );\n }}\n />\n </SettingsSliderField>\n ) : null}\n\n {hasFillColor && hasLineColor && showStrokeSetting ? (\n <Tabs\n key={`appearance-fill-stroke${showExtrusionSettings ? '-extrusion' : ''}`}\n defaultValue=\"fill\"\n className=\"w-full\"\n >\n <TabsList\n className={`grid h-8 w-full ${showExtrusionSettings ? 'grid-cols-3' : 'grid-cols-2'}`}\n >\n <TabsTrigger value=\"fill\" className=\"text-xs\">\n Fill\n </TabsTrigger>\n <TabsTrigger value=\"stroke\" className=\"text-xs\">\n Stroke\n </TabsTrigger>\n {showExtrusionSettings ? (\n <TabsTrigger\n value=\"extrusion\"\n className=\"text-xs\"\n >\n Extrusion\n </TabsTrigger>\n ) : null}\n </TabsList>\n <TabsContent value=\"fill\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n </TabsContent>\n <TabsContent value=\"stroke\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getLineColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n enabled={strokeEnabled}\n onEnabledChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => {\n if (checked) {\n return {...layer, stroked: true};\n }\n // Clear stroke color scale when stroke is off.\n const next: DeckMapLayerRecord = {\n ...layer,\n stroked: false,\n };\n if (\n getDeckMapLayerColorScale(\n next,\n 'getLineColor',\n )\n ) {\n return replaceDeckMapLayerColorScaleWithFlat(\n next,\n 'getLineColor',\n DECK_MAP_DEFAULT_STROKE_COLOR,\n );\n }\n return next;\n },\n ),\n )\n }\n enableLabel=\"Stroke\"\n defaultFlatColor={\n DECK_MAP_DEFAULT_STROKE_COLOR\n }\n widthPixels={strokeWidthPixels}\n onWidthChange={setStrokeWidth}\n widthLabel=\"Stroke width\"\n extrusionDisablesStroke={\n usesStrokeExtrusionWarning(\n activeLayer?.['@@type'],\n ) && getDeckMapLayerExtruded(activeLayer)\n }\n />\n </TabsContent>\n {showExtrusionSettings ? (\n <TabsContent value=\"extrusion\" className=\"mt-2\">\n <AppearanceExtrusionPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n readOnly={readOnly}\n />\n </TabsContent>\n ) : null}\n </Tabs>\n ) : hasFillColor && showExtrusionSettings ? (\n <Tabs\n key=\"appearance-fill-extrusion\"\n defaultValue=\"fill\"\n className=\"w-full\"\n >\n <TabsList className=\"grid h-8 w-full grid-cols-2\">\n <TabsTrigger value=\"fill\" className=\"text-xs\">\n Fill\n </TabsTrigger>\n <TabsTrigger\n value=\"extrusion\"\n className=\"text-xs\"\n >\n Extrusion\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"fill\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n </TabsContent>\n <TabsContent value=\"extrusion\" className=\"mt-2\">\n <AppearanceExtrusionPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n readOnly={readOnly}\n />\n </TabsContent>\n </Tabs>\n ) : hasFillColor ? (\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n ) : null}\n\n {hasSourceColor && hasTargetColor ? (\n <AppearanceArcColorPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n />\n ) : null}\n\n {hasPathColor ? (\n <AppearanceColorChannel\n accessor=\"getColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n />\n ) : null}\n </>\n )}\n </div>\n </Field>\n )}\n\n {outputColumns.length > 0 && showGeometryColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Geometry column\" required>\n <ColumnSelector\n value={activeLayerDataset?.geometryColumn}\n onChange={(geometryColumn) =>\n applyConfig(\n setDeckMapLayerGeometryColumn(\n mapConfig,\n activeLayerIndex,\n geometryColumn,\n ),\n )\n }\n placeholder=\"Select geometry column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showTripsSettings && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Timestamp column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.timestampColumn as string | undefined\n }\n onChange={(timestampColumn) =>\n applyConfig(\n setDeckMapLayerTimestampColumn(\n mapConfig,\n activeLayerIndex,\n timestampColumn,\n ),\n )\n }\n placeholder=\"Select timestamp column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showH3ColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"H3 column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.hexagonColumn as string | undefined\n }\n onChange={(hexagonColumn) =>\n applyConfig(\n setDeckMapLayerHexagonColumn(\n mapConfig,\n activeLayerIndex,\n hexagonColumn,\n ),\n )\n }\n placeholder=\"Select H3 index column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showArcColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Source geometry\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.sourceGeometryColumn as string | undefined\n }\n onChange={(sourceGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(\n mapConfig,\n activeLayerIndex,\n {\n sourceGeometryColumn,\n },\n ),\n )\n }\n placeholder=\"Select source geometry...\"\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Target geometry\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.targetGeometryColumn as string | undefined\n }\n onChange={(targetGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(\n mapConfig,\n activeLayerIndex,\n {\n targetGeometryColumn,\n },\n ),\n )\n }\n placeholder=\"Select target geometry...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n )}\n\n {sourceDataTable &&\n !showGeometryColumnSetting &&\n !showH3ColumnSetting &&\n !showArcColumnSetting && (\n <ColumnsProvider columns={sourceColumns}>\n <Field label=\"Latitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.latitudeColumn}\n onChange={(latitudeColumn) => {\n const longitudeColumn =\n mapConfig.fitToData?.longitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Longitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.longitudeColumn}\n onChange={(longitudeColumn) => {\n const latitudeColumn =\n mapConfig.fitToData?.latitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MapSettings.js","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n type ReactNode,\n} from 'react';\nimport {\n getTableIdentity,\n resolveTableReference,\n type DataTable,\n} from '@sqlrooms/duckdb';\nimport {\n binnedNumericSchemes,\n categoricalSchemeColors,\n categoricalSchemes,\n continuousDivergingInterpolators,\n continuousDivergingSchemes,\n continuousSequentialSchemes,\n continuousSequentialInterpolators,\n parseColorString,\n} from '@sqlrooms/color-scales';\nimport type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport {\n cn,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Slider,\n ScrollArea,\n SettingsPanelHeader,\n Switch,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from '@sqlrooms/ui';\nimport {AlertTriangleIcon} from 'lucide-react';\nimport {DeckMapBasemapSelect} from './DeckMapBasemapSelect';\nimport {isDeckMapTableDatasetSource, type DeckMapConfig} from './mapConfig';\nimport {\n clearDeckMapLayerColorScale,\n createDeckMapLayerColorScale,\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS,\n DECK_MAP_DEFAULT_LAYER_COLOR,\n DECK_MAP_DEFAULT_STROKE_COLOR,\n DECK_MAP_LAYER_TYPE_OPTIONS,\n deckMapRgbaToHex,\n getDeckMapColorAccessorOptions,\n getDeckMapLayerDatasetId,\n getDeckMapLayerColorScale,\n getDeckMapLayerExtruded,\n getDeckMapLayerFlatColor,\n getDeckMapLayerRecords,\n setDeckMapLayerFlatColor,\n setDeckMapLayerGeometryColumn,\n setDeckMapLayerHexagonColumn,\n setDeckMapLayerArcColumns,\n setDeckMapLayerTimestampColumn,\n setDeckMapLayerType,\n setDeckMapLayerColumnRadius,\n updateDeckMapLayer,\n type DeckMapLayerColorAccessor,\n type DeckMapLayerRecord,\n usesGeometryColumnSetting,\n usesH3ColumnSetting,\n usesArcColumnSetting,\n usesRadiusSetting,\n usesColumnRadiusSetting,\n usesTripsSettings,\n usesExtrusionSettings,\n usesStrokeSetting,\n usesStrokeExtrusionWarning,\n getDeckMapLayerStrokeDefault,\n getDeckMapColorScaleOpacity,\n getDeckMapLayerChannelOpacityPercent,\n detachDeckMapLayerOpacity,\n replaceDeckMapLayerColorScalesWithFlat,\n replaceDeckMapLayerColorScaleWithFlat,\n} from './mapLayerConfigUtils';\nimport {\n DeckMapCodeViewerPanel,\n DeckMapCodeViewToggleButton,\n DeckMapColumnSelector as ColumnSelector,\n DeckMapColumnsProvider as ColumnsProvider,\n DeckMapSettingsField as Field,\n DeckMapTableSelector as DataTableSelector,\n filterDeckMapColumns,\n isDeckMapCategoricalColorColumn,\n} from './MapSettingsControls';\nimport {regenerateMapConfigForTable} from './mapConfigUtils';\nimport {useDeckMapDatasetSchema} from './useDeckMapDatasetSchema';\nimport {\n detectHeatmapScheme,\n heatmapSchemeToColorRange,\n} from './json/heatmapDefaults';\n\nconst EMPTY_COLUMNS: DataTable['columns'] = [];\n\nfunction getColorScaleColumnKind(\n type: ColorScaleConfig['type'],\n): 'quantitative' | 'categorical' {\n return type === 'categorical' ? 'categorical' : 'quantitative';\n}\n\n/** Color-scale type matching the field's column kind. */\nfunction resolveColorScaleTypeForField(\n columns: DataTable['columns'],\n field: string | undefined,\n preferredType: ColorScaleConfig['type'],\n): ColorScaleConfig['type'] {\n if (!field) return preferredType;\n const column = columns.find((candidate) => candidate.name === field);\n if (!column?.type) return preferredType;\n // String/boolean/binary fields only work with categorical scales.\n if (isDeckMapCategoricalColorColumn(column)) {\n return 'categorical';\n }\n return preferredType;\n}\n\n/** First selectable color-scale field for this type. */\nfunction getDefaultColorScaleField(\n columns: DataTable['columns'],\n type: ColorScaleConfig['type'],\n preferred?: string,\n): string | undefined {\n const colorable = filterDeckMapColumns(columns, 'colorable');\n if (preferred && colorable.some((column) => column.name === preferred)) {\n return preferred;\n }\n const matchingKind = filterDeckMapColumns(\n colorable,\n getColorScaleColumnKind(type),\n );\n return matchingKind[0]?.name ?? colorable[0]?.name;\n}\n\n/** Pick field first, then coerce scale type to match that field. */\nexport function resolveColorScaleFieldAndType(\n columns: DataTable['columns'],\n preferredType: ColorScaleConfig['type'],\n preferredField?: string,\n): {field: string; type: ColorScaleConfig['type']} | undefined {\n const field = getDefaultColorScaleField(\n columns,\n preferredType,\n preferredField,\n );\n if (!field) return undefined;\n return {\n field,\n type: resolveColorScaleTypeForField(columns, field, preferredType),\n };\n}\n\nexport interface DeckMapSettingsPanelProps {\n title: string;\n selectedTable?: string;\n config: DeckMapConfig;\n tables: DataTable[];\n onClose?: () => void;\n onTableChange: (table: DataTable) => void;\n onTitleChange: (title: string) => void;\n onConfigChange: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n /** Custom maps stay on the JSON editor so basic controls cannot clobber them. */\n customConfig?: boolean;\n /**\n * Document maps own their dataset in `config.datasets`. Prefer that table\n * over `selectedTable`, which is only a sidecar. Dashboards leave this false\n * so the shared dashboard selected table is shown.\n */\n preferDatasetSource?: boolean;\n}\n\nfunction getSchemeOptions(type: ColorScaleConfig['type']) {\n if (type === 'categorical') {\n return categoricalSchemes;\n }\n if (type === 'diverging') {\n return continuousDivergingSchemes;\n }\n if (type === 'sequential') {\n return continuousSequentialSchemes;\n }\n // Quantile/quantize/threshold: ColorBrewer only (Viridis → sequential).\n return binnedNumericSchemes;\n}\n\nconst SCHEME_PREVIEW_STEPS = 24;\n\n/** Sample CSS colors for scheme dropdown previews. */\nfunction getSchemePreviewColors(\n scheme: string,\n type: ColorScaleConfig['type'],\n): string[] {\n if (type === 'categorical') {\n const colors =\n categoricalSchemeColors[scheme as keyof typeof categoricalSchemeColors];\n return colors ? [...colors] : [];\n }\n\n const interpolator =\n type === 'diverging'\n ? continuousDivergingInterpolators[\n scheme as keyof typeof continuousDivergingInterpolators\n ]\n : (continuousSequentialInterpolators[\n scheme as keyof typeof continuousSequentialInterpolators\n ] ??\n continuousDivergingInterpolators[\n scheme as keyof typeof continuousDivergingInterpolators\n ]);\n\n if (!interpolator) return [];\n return Array.from({length: SCHEME_PREVIEW_STEPS}, (_, i) =>\n interpolator(i / (SCHEME_PREVIEW_STEPS - 1)),\n );\n}\n\n/** Edge-to-edge CSS gradient for a scheme (no fringe gaps). */\nfunction getSchemePreviewGradient(\n colors: string[],\n type: ColorScaleConfig['type'],\n): string | undefined {\n if (colors.length === 0) return undefined;\n if (type === 'categorical') {\n const stops = colors.flatMap((color, index) => {\n const start = (index / colors.length) * 100;\n const end = ((index + 1) / colors.length) * 100;\n return [`${color} ${start}%`, `${color} ${end}%`];\n });\n return `linear-gradient(to right, ${stops.join(', ')})`;\n }\n return `linear-gradient(to right, ${colors.join(', ')})`;\n}\n\nconst ColorSchemeOptionLabel: FC<{\n scheme: string;\n type: ColorScaleConfig['type'];\n}> = ({scheme, type}) => {\n const colors = getSchemePreviewColors(scheme, type);\n const gradient = getSchemePreviewGradient(colors, type);\n return (\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n {gradient ? (\n <span\n aria-hidden\n className=\"h-3 w-20 shrink-0 overflow-hidden rounded-sm\"\n style={{backgroundImage: gradient}}\n />\n ) : null}\n <span className=\"truncate\">{scheme}</span>\n </span>\n );\n};\n\n/** Compact color swatch; native picker is visually hidden. */\nconst ColorSwatchInput: FC<{\n value: string;\n onChange: (hex: string) => void;\n disabled?: boolean;\n 'aria-label': string;\n}> = ({value, onChange, disabled, 'aria-label': ariaLabel}) => (\n <label\n className={cn(\n 'border-input relative h-5 w-9 shrink-0 overflow-hidden rounded-[3px] border',\n 'ring-offset-background focus-within:ring-ring focus-within:ring-1 focus-within:ring-offset-1',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n )}\n style={{backgroundColor: value}}\n >\n <input\n type=\"color\"\n aria-label={ariaLabel}\n value={value}\n disabled={disabled}\n className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n onChange={(event) => onChange(event.target.value)}\n />\n </label>\n);\n\nfunction opacityPercentToAlpha(percent: number): number {\n return Math.round((Math.max(0, Math.min(100, percent)) / 100) * 255);\n}\n\nfunction getLayerOpacityPercent(layer: DeckMapLayerRecord | undefined): number {\n const opacity = layer?.opacity;\n if (typeof opacity === 'number' && Number.isFinite(opacity)) {\n return Math.round(Math.max(0, Math.min(1, opacity)) * 100);\n }\n return 100;\n}\n\nconst SettingsSliderField: FC<{\n label: string;\n children: ReactNode;\n}> = ({label, children}) => (\n <Field label={label}>\n <div className=\"pt-0.5\">{children}</div>\n </Field>\n);\n\nconst AppearanceOpacitySlider: FC<{\n valuePercent: number;\n onChange: (percent: number) => void;\n disabled?: boolean;\n}> = ({valuePercent, onChange, disabled}) => (\n <SettingsSliderField label={`Opacity: ${valuePercent}%`}>\n <Slider\n min={0}\n max={100}\n step={1}\n value={[valuePercent]}\n disabled={disabled}\n onValueChange={(values) => onChange(values[0] ?? valuePercent)}\n />\n </SettingsSliderField>\n);\n\ntype AppearanceColorChannelProps = {\n accessor: DeckMapLayerColorAccessor;\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n lastColorScaleFieldsRef: MutableRefObject<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >;\n readOnly?: boolean;\n /** Stroke enable switch. */\n enabled?: boolean;\n onEnabledChange?: (enabled: boolean) => void;\n enableLabel?: string;\n defaultFlatColor?: readonly [number, number, number, number];\n widthPixels?: number;\n onWidthChange?: (width: number) => void;\n widthLabel?: string;\n radiusValue?: number;\n onRadiusChange?: (radius: number) => void;\n radiusLabel?: string;\n radiusUnit?: string;\n radiusMin?: number;\n radiusMax?: number;\n radiusStep?: number;\n /** Warning that strokes are ignored while the layer is extruded. */\n extrusionDisablesStroke?: boolean;\n};\n\nconst AppearanceColorChannel: FC<AppearanceColorChannelProps> = ({\n accessor,\n layer,\n columns,\n mapConfig,\n layerIndex,\n applyConfig,\n lastColorScaleFieldsRef,\n readOnly,\n enabled,\n onEnabledChange,\n enableLabel = 'Enabled',\n defaultFlatColor = DECK_MAP_DEFAULT_LAYER_COLOR,\n widthPixels,\n onWidthChange,\n widthLabel = 'Width',\n radiusValue,\n onRadiusChange,\n radiusLabel = 'Radius',\n radiusUnit = '',\n radiusMin = 0.1,\n radiusMax = 50,\n radiusStep = 0.1,\n extrusionDisablesStroke = false,\n}) => {\n const colorScale = getDeckMapLayerColorScale(layer, accessor);\n const flatColor = getDeckMapLayerFlatColor(layer, accessor) ?? [\n ...defaultFlatColor,\n ];\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n // Don't read lastColorScaleFieldsRef during render (react-hooks/refs).\n const defaultField = getDefaultColorScaleField(columns, colorScaleType);\n const showControls = enabled !== false;\n const opacityPercent = getDeckMapLayerChannelOpacityPercent(\n layer,\n accessor,\n flatColor[3] ?? 255,\n );\n\n const updateColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const preferredField =\n patch.field ??\n colorScale?.field ??\n lastColorScaleFieldsRef.current[accessor];\n const resolved = resolveColorScaleFieldAndType(\n columns,\n patch.type ?? colorScale?.type ?? 'sequential',\n preferredField,\n );\n if (!resolved) return;\n const {field, type} = resolved;\n\n lastColorScaleFieldsRef.current[accessor] = field;\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n const existingScale = getDeckMapLayerColorScale(detached, accessor);\n const currentFlat =\n getDeckMapLayerFlatColor(detached, accessor) ?? flatColor;\n return {\n ...detached,\n [accessor]: createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n opacity: existingScale\n ? getDeckMapColorScaleOpacity(existingScale)\n : (currentFlat[3] ?? 255) / 255,\n }),\n };\n }),\n );\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n {onEnabledChange ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"flex items-center gap-1 text-xs font-medium\">\n {enableLabel}\n {extrusionDisablesStroke ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex\"\n aria-label=\"no strokes with extrusion enabled\"\n >\n <AlertTriangleIcon className=\"h-3.5 w-3.5 text-amber-500\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>\n no strokes with extrusion enabled\n </TooltipContent>\n </Tooltip>\n ) : null}\n </span>\n <Switch\n checked={enabled !== false}\n onCheckedChange={onEnabledChange}\n aria-label={enableLabel}\n />\n </div>\n ) : null}\n\n {showControls && onWidthChange && widthPixels !== undefined ? (\n <SettingsSliderField\n label={`${widthLabel}: ${Number(widthPixels.toFixed(1))}px`}\n >\n <Slider\n min={0.1}\n max={20}\n step={0.1}\n value={[widthPixels]}\n onValueChange={(values) => onWidthChange(values[0] ?? 1)}\n />\n </SettingsSliderField>\n ) : null}\n\n {showControls && onRadiusChange && radiusValue !== undefined ? (\n <SettingsSliderField\n label={`${radiusLabel}: ${\n radiusStep < 1 ? Number(radiusValue.toFixed(1)) : radiusValue\n }${radiusUnit}`}\n >\n <Slider\n min={radiusMin}\n max={radiusMax}\n step={radiusStep}\n value={[radiusValue]}\n onValueChange={(values) => onRadiusChange(values[0] ?? radiusValue)}\n />\n </SettingsSliderField>\n ) : null}\n\n {showControls ? (\n <>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n disabled={readOnly || (!colorScale && !defaultField)}\n aria-label=\"Color scale\"\n onCheckedChange={(checked) => {\n if (checked) {\n updateColorScale({});\n return;\n }\n if (colorScale?.field) {\n lastColorScaleFieldsRef.current[accessor] = colorScale.field;\n }\n applyConfig(\n clearDeckMapLayerColorScale(mapConfig, layerIndex, accessor),\n );\n }}\n />\n </div>\n\n {!colorScale ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color</span>\n <ColorSwatchInput\n aria-label=\"Color\"\n value={deckMapRgbaToHex(flatColor)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, flatColor[3] ?? 255);\n applyConfig(\n setDeckMapLayerFlatColor(\n mapConfig,\n layerIndex,\n accessor,\n next,\n ),\n );\n }}\n />\n </div>\n ) : null}\n\n {colorScale ? (\n <div className=\"flex flex-col gap-2\">\n {columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Field\" required>\n <ColumnSelector.Colorable\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n <Field label=\"Type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n updateColorScale({type: value as ColorScaleConfig['type']})\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n updateColorScale({scheme: value as ColorScaleScheme})\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type={colorScaleType}\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n ) : null}\n\n <AppearanceOpacitySlider\n valuePercent={opacityPercent}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n if (colorScale) {\n const scale =\n getDeckMapLayerColorScale(detached, accessor) ??\n colorScale;\n return {\n ...detached,\n [accessor]: {\n ...scale,\n opacity: percent / 100,\n },\n };\n }\n const current =\n getDeckMapLayerFlatColor(detached, accessor) ?? flatColor;\n return {\n ...detached,\n [accessor]: [\n current[0],\n current[1],\n current[2],\n opacityPercentToAlpha(percent),\n ],\n };\n }),\n );\n }}\n />\n </>\n ) : null}\n </div>\n );\n};\n\n/** Arc source/target colors; optional shared color scale. */\nconst AppearanceArcColorPanel: FC<{\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n lastColorScaleFieldsRef: MutableRefObject<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >;\n readOnly?: boolean;\n}> = ({\n layer,\n columns,\n mapConfig,\n layerIndex,\n applyConfig,\n lastColorScaleFieldsRef,\n readOnly,\n}) => {\n const sourceScale = getDeckMapLayerColorScale(layer, 'getSourceColor');\n const targetScale = getDeckMapLayerColorScale(layer, 'getTargetColor');\n const colorScale = sourceScale ?? targetScale;\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n // Don't read lastColorScaleFieldsRef during render (react-hooks/refs).\n const defaultField = getDefaultColorScaleField(columns, colorScaleType);\n const sourceFlat = getDeckMapLayerFlatColor(layer, 'getSourceColor') ?? [\n ...DECK_MAP_DEFAULT_LAYER_COLOR,\n ];\n const targetFlat = getDeckMapLayerFlatColor(layer, 'getTargetColor') ?? [\n ...DECK_MAP_DEFAULT_LAYER_COLOR,\n ];\n const opacityPercent = Math.round(\n (getDeckMapLayerChannelOpacityPercent(\n layer,\n 'getSourceColor',\n sourceFlat[3] ?? 255,\n ) +\n getDeckMapLayerChannelOpacityPercent(\n layer,\n 'getTargetColor',\n targetFlat[3] ?? 255,\n )) /\n 2,\n );\n\n const applySharedColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const preferredField =\n patch.field ??\n colorScale?.field ??\n lastColorScaleFieldsRef.current.getSourceColor ??\n lastColorScaleFieldsRef.current.getTargetColor;\n const resolved = resolveColorScaleFieldAndType(\n columns,\n patch.type ?? colorScale?.type ?? 'sequential',\n preferredField,\n );\n if (!resolved) return;\n const {field, type} = resolved;\n\n lastColorScaleFieldsRef.current.getSourceColor = field;\n lastColorScaleFieldsRef.current.getTargetColor = field;\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n const existing =\n getDeckMapLayerColorScale(detached, 'getSourceColor') ??\n getDeckMapLayerColorScale(detached, 'getTargetColor');\n const source =\n getDeckMapLayerFlatColor(detached, 'getSourceColor') ?? sourceFlat;\n const target =\n getDeckMapLayerFlatColor(detached, 'getTargetColor') ?? targetFlat;\n const opacity = existing\n ? getDeckMapColorScaleOpacity(existing)\n : Math.round(((source[3] ?? 255) + (target[3] ?? 255)) / 2) / 255;\n const scale = createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n opacity,\n });\n return {\n ...detached,\n getSourceColor: scale,\n getTargetColor: scale,\n };\n }),\n );\n };\n\n const setFlatColor = (\n accessor: 'getSourceColor' | 'getTargetColor',\n color: readonly [number, number, number, number],\n ) => {\n applyConfig(\n setDeckMapLayerFlatColor(mapConfig, layerIndex, accessor, color),\n );\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n disabled={readOnly || (!colorScale && !defaultField)}\n aria-label=\"Color scale\"\n onCheckedChange={(checked) => {\n if (checked) {\n applySharedColorScale({});\n return;\n }\n if (colorScale?.field) {\n lastColorScaleFieldsRef.current.getSourceColor = colorScale.field;\n lastColorScaleFieldsRef.current.getTargetColor = colorScale.field;\n }\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const replacements: Partial<\n Record<\n DeckMapLayerColorAccessor,\n readonly [number, number, number, number]\n >\n > = {};\n if (getDeckMapLayerColorScale(nextLayer, 'getSourceColor')) {\n replacements.getSourceColor = DECK_MAP_DEFAULT_LAYER_COLOR;\n }\n if (getDeckMapLayerColorScale(nextLayer, 'getTargetColor')) {\n replacements.getTargetColor = DECK_MAP_DEFAULT_LAYER_COLOR;\n }\n return replaceDeckMapLayerColorScalesWithFlat(\n nextLayer,\n replacements,\n );\n }),\n );\n }}\n />\n </div>\n\n {!colorScale ? (\n <>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Source color</span>\n <ColorSwatchInput\n aria-label=\"Source color\"\n value={deckMapRgbaToHex(sourceFlat)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, sourceFlat[3] ?? 255);\n setFlatColor('getSourceColor', next);\n }}\n />\n </div>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Target color</span>\n <ColorSwatchInput\n aria-label=\"Target color\"\n value={deckMapRgbaToHex(targetFlat)}\n disabled={readOnly}\n onChange={(hex) => {\n const next = parseColorString(hex, targetFlat[3] ?? 255);\n setFlatColor('getTargetColor', next);\n }}\n />\n </div>\n </>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Field\" required>\n <ColumnSelector.Colorable\n value={colorScale.field}\n onChange={(field) => applySharedColorScale({field})}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n <Field label=\"Type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n applySharedColorScale({\n type: value as ColorScaleConfig['type'],\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n applySharedColorScale({scheme: value as ColorScaleScheme})\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type={colorScaleType}\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n )}\n\n <AppearanceOpacitySlider\n valuePercent={opacityPercent}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => {\n const detached = detachDeckMapLayerOpacity(nextLayer);\n if (colorScale) {\n const scale =\n getDeckMapLayerColorScale(detached, 'getSourceColor') ??\n getDeckMapLayerColorScale(detached, 'getTargetColor') ??\n colorScale;\n const nextScale = {...scale, opacity: percent / 100};\n return {\n ...detached,\n getSourceColor: nextScale,\n getTargetColor: nextScale,\n };\n }\n const alpha = opacityPercentToAlpha(percent);\n const source =\n getDeckMapLayerFlatColor(detached, 'getSourceColor') ??\n sourceFlat;\n const target =\n getDeckMapLayerFlatColor(detached, 'getTargetColor') ??\n targetFlat;\n return {\n ...detached,\n getSourceColor: [source[0], source[1], source[2], alpha],\n getTargetColor: [target[0], target[1], target[2], alpha],\n };\n }),\n );\n }}\n />\n </div>\n );\n};\n\nconst AppearanceExtrusionPanel: FC<{\n layer: DeckMapLayerRecord | undefined;\n columns: DataTable['columns'];\n mapConfig: DeckMapConfig;\n layerIndex: number;\n applyConfig: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n}> = ({layer, columns, mapConfig, layerIndex, applyConfig, readOnly}) => {\n const extruded = getDeckMapLayerExtruded(layer);\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Extruded</span>\n <Switch\n checked={extruded}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n extruded: checked,\n getElevation: checked\n ? (nextLayer.getElevation ?? 1)\n : nextLayer.getElevation,\n })),\n )\n }\n />\n </div>\n\n {extruded && columns.length > 0 ? (\n <ColumnsProvider columns={columns}>\n <Field label=\"Elevation column\">\n <ColumnSelector.Numeric\n value={(() => {\n const elev = layer?.getElevation;\n if (\n elev &&\n typeof elev === 'object' &&\n '@@function' in (elev as object)\n ) {\n return (elev as Record<string, unknown>).field as\n | string\n | undefined;\n }\n if (typeof elev === 'string' && elev.startsWith('@@=')) {\n return elev.slice(3);\n }\n return undefined;\n })()}\n onChange={(elevationColumn) =>\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n getElevation: elevationColumn\n ? {\n '@@function': 'scale',\n field: elevationColumn,\n type: 'linear',\n domain: 'auto',\n range: [0, 200],\n }\n : undefined,\n elevationScale: nextLayer.elevationScale ?? 1,\n })),\n )\n }\n placeholder=\"Select elevation column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n ) : null}\n\n {extruded ? (\n <SettingsSliderField\n label={`Elevation scale: ${(layer?.elevationScale as number | undefined) ?? 1}x`}\n >\n <Slider\n min={0.01}\n max={1000}\n step={0.01}\n value={[(layer?.elevationScale as number | undefined) ?? 1]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(mapConfig, layerIndex, (nextLayer) => ({\n ...nextLayer,\n elevationScale: value,\n })),\n );\n }}\n />\n </SettingsSliderField>\n ) : null}\n </div>\n );\n};\n\nexport const DeckMapSettingsPanel: FC<DeckMapSettingsPanelProps> = ({\n title,\n selectedTable,\n config,\n tables,\n onClose,\n onTableChange,\n onTitleChange,\n onConfigChange,\n readOnly,\n customConfig = false,\n preferDatasetSource = false,\n}) => {\n const [layerIndex, setLayerIndex] = useState(0);\n const [viewMode, setViewMode] = useState<'settings' | 'code'>(\n customConfig ? 'code' : 'settings',\n );\n // Last color-scale field per accessor (restored when re-enabling a scale).\n const lastColorScaleFieldsRef = useRef<\n Partial<Record<DeckMapLayerColorAccessor, string>>\n >({});\n\n const selectedDataTable = useMemo(\n () =>\n selectedTable\n ? resolveTableReference(tables, selectedTable).table\n : undefined,\n [selectedTable, tables],\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n if (readOnly) return;\n onTableChange(table);\n },\n [onTableChange, readOnly],\n );\n\n const mapConfig = config;\n const serializedMapConfig = useMemo(\n () => JSON.stringify(config, null, 2),\n [config],\n );\n const showCode = customConfig || viewMode === 'code';\n const layers = getDeckMapLayerRecords(mapConfig);\n const activeLayerIndex = Math.min(layerIndex, Math.max(layers.length - 1, 0));\n const activeLayer = layers[activeLayerIndex];\n const activeLayerDatasetId = getDeckMapLayerDatasetId(activeLayer);\n const activeLayerDataset = activeLayerDatasetId\n ? mapConfig.datasets?.[activeLayerDatasetId]\n : undefined;\n\n // Source table (coords/transform) vs compiled output columns (bindings).\n const activeLayerDatasetSource = activeLayerDataset?.source;\n const fallbackTableName = isDeckMapTableDatasetSource(\n activeLayerDatasetSource,\n )\n ? activeLayerDatasetSource.tableName\n : undefined;\n const fallbackTable = useMemo(\n () =>\n fallbackTableName\n ? resolveTableReference(tables, fallbackTableName).table\n : undefined,\n [fallbackTableName, tables],\n );\n const sourceDataTable = preferDatasetSource\n ? (fallbackTable ?? selectedDataTable)\n : (selectedDataTable ?? fallbackTable);\n const sourceColumns = sourceDataTable?.columns ?? EMPTY_COLUMNS;\n const resolvedActiveLayerDatasetSource = useMemo(() => {\n if (!activeLayerDatasetSource) {\n return selectedDataTable\n ? {tableName: getTableIdentity(selectedDataTable.table)}\n : undefined;\n }\n if (!isDeckMapTableDatasetSource(activeLayerDatasetSource)) {\n return activeLayerDatasetSource;\n }\n\n return {\n tableName:\n !preferDatasetSource && selectedDataTable\n ? getTableIdentity(selectedDataTable.table)\n : activeLayerDatasetSource.tableName,\n ...(activeLayerDatasetSource.transformSql\n ? {transformSql: activeLayerDatasetSource.transformSql}\n : {}),\n };\n }, [activeLayerDatasetSource, preferDatasetSource, selectedDataTable]);\n const datasetSchema = useDeckMapDatasetSchema({\n source: resolvedActiveLayerDatasetSource,\n sourceColumns,\n });\n const outputColumns = datasetSchema.outputColumns;\n const dataOutputColumns = datasetSchema.dataOutputColumns;\n const datasetSchemaErrorMessage = datasetSchema.error?.message;\n\n const showGeometryColumnSetting = usesGeometryColumnSetting(\n activeLayer?.['@@type'],\n );\n const showH3ColumnSetting = usesH3ColumnSetting(activeLayer?.['@@type']);\n const showArcColumnSetting = usesArcColumnSetting(activeLayer?.['@@type']);\n const showRadiusSetting = usesRadiusSetting(activeLayer?.['@@type']);\n const showColumnRadiusSetting = usesColumnRadiusSetting(\n activeLayer?.['@@type'],\n );\n const showTripsSettings = usesTripsSettings(activeLayer?.['@@type']);\n const showExtrusionSettings = usesExtrusionSettings(activeLayer?.['@@type']);\n const showStrokeSetting = usesStrokeSetting(activeLayer?.['@@type']);\n const strokeEnabled =\n typeof activeLayer?.stroked === 'boolean'\n ? activeLayer.stroked\n : getDeckMapLayerStrokeDefault(activeLayer?.['@@type'], {\n extruded: getDeckMapLayerExtruded(activeLayer),\n });\n const strokeWidthPixels =\n activeLayer?.lineWidthUnits === 'pixels' &&\n typeof activeLayer?.getLineWidth === 'number'\n ? activeLayer.getLineWidth\n : ((activeLayer?.lineWidthMinPixels as number | undefined) ?? 1);\n const colorAccessorOptions = getDeckMapColorAccessorOptions(\n activeLayer?.['@@type'],\n );\n const hasFillColor = colorAccessorOptions.some(\n (option) => option.value === 'getFillColor',\n );\n const hasLineColor = colorAccessorOptions.some(\n (option) => option.value === 'getLineColor',\n );\n const hasPathColor = colorAccessorOptions.some(\n (option) => option.value === 'getColor',\n );\n const hasSourceColor = colorAccessorOptions.some(\n (option) => option.value === 'getSourceColor',\n );\n const hasTargetColor = colorAccessorOptions.some(\n (option) => option.value === 'getTargetColor',\n );\n const isPathLayer = activeLayer?.['@@type'] === 'GeoArrowPathLayer';\n const isGeoJsonLayer = activeLayer?.['@@type'] === 'GeoJsonLayer';\n // Keep unknown types visible if the layer already uses them.\n const activeLayerType =\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined;\n const layerTypeOptions: ReadonlyArray<{value: string; label: string}> =\n activeLayerType &&\n !DECK_MAP_LAYER_TYPE_OPTIONS.some(\n (option) => option.value === activeLayerType,\n )\n ? [\n ...DECK_MAP_LAYER_TYPE_OPTIONS,\n {value: activeLayerType, label: activeLayerType},\n ]\n : DECK_MAP_LAYER_TYPE_OPTIONS;\n // GeoJsonLayer uses pointRadius* / getPointRadius; scatterplot uses radius* / getRadius.\n const pointRadiusPixels = isGeoJsonLayer\n ? activeLayer?.pointRadiusUnits === 'pixels' &&\n typeof activeLayer?.getPointRadius === 'number'\n ? activeLayer.getPointRadius\n : ((activeLayer?.pointRadiusMinPixels as number | undefined) ?? 2)\n : activeLayer?.radiusUnits === 'pixels' &&\n typeof activeLayer?.getRadius === 'number'\n ? activeLayer.getRadius\n : ((activeLayer?.radiusMinPixels as number | undefined) ?? 2);\n const isHeatmapLayer = activeLayer?.['@@type'] === 'GeoArrowHeatmapLayer';\n const showAppearanceCard = isHeatmapLayer || colorAccessorOptions.length > 0;\n const lineWidthPixels =\n activeLayer?.widthUnits === 'pixels' &&\n typeof activeLayer?.getWidth === 'number'\n ? activeLayer.getWidth\n : ((activeLayer?.widthMinPixels as number | undefined) ??\n (showTripsSettings ? 3 : 1));\n\n const applyConfig = useCallback(\n (nextConfig: DeckMapConfig) => {\n if (readOnly) return;\n onConfigChange(nextConfig);\n },\n [onConfigChange, readOnly],\n );\n\n // Drop point/heatmap radius leftovers on Column layers (pixels vs meters).\n useEffect(() => {\n if (!showColumnRadiusSetting || !activeLayer || readOnly) return;\n const needsHeal =\n activeLayer.radiusUnits === 'pixels' ||\n activeLayer.getRadius !== undefined ||\n activeLayer.radiusMinPixels !== undefined ||\n activeLayer.radiusMaxPixels !== undefined ||\n activeLayer.radiusPixels !== undefined;\n if (!needsHeal) return;\n const radius =\n typeof activeLayer.radius === 'number' &&\n Number.isFinite(activeLayer.radius) &&\n activeLayer.radius > 0\n ? activeLayer.radius\n : 50;\n applyConfig(\n setDeckMapLayerColumnRadius(mapConfig, activeLayerIndex, radius),\n );\n }, [\n activeLayer,\n activeLayerIndex,\n applyConfig,\n mapConfig,\n readOnly,\n showColumnRadiusSetting,\n ]);\n\n // Fix path/arc/trips where widthMaxPixels < widthMinPixels (clamps the slider).\n useEffect(() => {\n const isLineWidthLayer =\n showTripsSettings ||\n activeLayer?.['@@type'] === 'GeoArrowPathLayer' ||\n showArcColumnSetting;\n if (!isLineWidthLayer || !activeLayer || readOnly) return;\n\n const min =\n typeof activeLayer.widthMinPixels === 'number'\n ? activeLayer.widthMinPixels\n : undefined;\n const max =\n typeof activeLayer.widthMaxPixels === 'number'\n ? activeLayer.widthMaxPixels\n : undefined;\n if (min === undefined || max === undefined || max >= min) return;\n\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => ({\n ...layer,\n widthMinPixels: Math.min(min, max),\n widthMaxPixels: Math.max(min, max),\n })),\n );\n }, [\n activeLayer,\n activeLayerIndex,\n applyConfig,\n mapConfig,\n readOnly,\n showArcColumnSetting,\n showTripsSettings,\n ]);\n\n const setStrokeWidth = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n lineWidthUnits: 'pixels',\n lineWidthMinPixels: value,\n lineWidthMaxPixels: value,\n };\n if (typeof layer.getLineWidth !== 'string') {\n nextLayer.getLineWidth = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setLineWidth = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n widthUnits: 'pixels',\n widthMinPixels: value,\n widthMaxPixels: value,\n };\n if (typeof layer.getWidth !== 'string') {\n nextLayer.getWidth = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setPointRadius = (value: number) => {\n applyConfig(\n updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {\n if (layer['@@type'] === 'GeoJsonLayer') {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n pointRadiusUnits: 'pixels',\n pointRadiusMinPixels: value,\n pointRadiusMaxPixels: value,\n };\n if (typeof layer.getPointRadius !== 'string') {\n nextLayer.getPointRadius = value;\n }\n return nextLayer;\n }\n\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n radiusUnits: 'pixels',\n radiusMinPixels: value,\n radiusMaxPixels: value,\n };\n if (typeof layer.getRadius !== 'string') {\n nextLayer.getRadius = value;\n }\n return nextLayer;\n }),\n );\n };\n\n const setColumnRadius = (value: number) => {\n applyConfig(\n setDeckMapLayerColumnRadius(mapConfig, activeLayerIndex, value),\n );\n };\n\n const fillRadiusProps = showRadiusSetting\n ? {\n radiusValue: pointRadiusPixels,\n onRadiusChange: setPointRadius,\n radiusLabel: 'Point radius',\n radiusUnit: 'px',\n radiusMin: 0.1,\n radiusMax: 50,\n radiusStep: 0.1,\n }\n : showColumnRadiusSetting\n ? {\n radiusValue: (activeLayer?.radius as number | undefined) ?? 50,\n onRadiusChange: setColumnRadius,\n radiusLabel: 'Column radius',\n radiusUnit: 'm',\n radiusMin: 1,\n radiusMax: 10000,\n radiusStep: 1,\n }\n : {};\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SettingsPanelHeader\n title=\"Map settings\"\n className=\"shrink-0 p-2\"\n actions={\n customConfig ? undefined : (\n <DeckMapCodeViewToggleButton\n label={showCode ? 'Show settings' : 'View code'}\n selected={showCode}\n onClick={() =>\n setViewMode((currentViewMode) =>\n currentViewMode === 'code' ? 'settings' : 'code',\n )\n }\n />\n )\n }\n onClose={onClose}\n closeLabel=\"Close map settings\"\n />\n\n <div className=\"flex shrink-0 flex-col gap-2 px-2 pb-2\">\n <Field label=\"Title\">\n <input\n value={title}\n onChange={(e) => onTitleChange(e.target.value)}\n placeholder=\"Map title\"\n disabled={readOnly}\n className=\"border-input placeholder:text-muted-foreground focus-visible:ring-ring h-8 w-full rounded-md border bg-transparent px-3 py-2 text-xs font-medium shadow-sm outline-hidden transition-colors focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </Field>\n <DeckMapBasemapSelect\n config={config}\n onConfigChange={onConfigChange}\n readOnly={readOnly}\n />\n </div>\n {showCode ? (\n <DeckMapCodeViewerPanel\n value={serializedMapConfig}\n copyTooltipLabel=\"Copy map config\"\n />\n ) : (\n <ScrollArea className=\"min-h-0 flex-1 [&_[data-radix-scroll-area-viewport]>div]:!block\">\n <div className=\"flex flex-col gap-2 p-2 pt-0\">\n <Field label=\"Dataset\" required>\n <DataTableSelector\n onChange={handleTableChange}\n tables={tables}\n value={sourceDataTable}\n disabled={readOnly}\n />\n </Field>\n\n {layers.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {layers.length > 1 && (\n <Field label=\"Layer\">\n <Select\n value={String(activeLayerIndex)}\n onValueChange={(value) => setLayerIndex(Number(value))}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {layers.map((layer, index) => (\n <SelectItem key={index} value={String(index)}>\n {String(layer.id ?? `Layer ${index + 1}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Visible</span>\n <Switch\n checked={activeLayer?.visible !== false}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n visible: checked,\n }),\n ),\n )\n }\n />\n </div>\n\n <Field label=\"Layer type\">\n <Select\n value={\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined\n }\n onValueChange={(value) =>\n applyConfig(\n setDeckMapLayerType(mapConfig, activeLayerIndex, value),\n )\n }\n >\n <SelectTrigger className=\"w-full text-xs\">\n <SelectValue placeholder=\"Select layer type\" />\n </SelectTrigger>\n <SelectContent>\n {layerTypeOptions.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"text-xs\"\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n\n {(datasetSchema.isLoading || datasetSchemaErrorMessage) && (\n <div className=\"text-muted-foreground rounded-md border px-2 py-1.5 text-xs\">\n {datasetSchema.isLoading\n ? 'Inspecting dataset schema...'\n : `Dataset schema unavailable: ${datasetSchemaErrorMessage}`}\n </div>\n )}\n\n {showAppearanceCard && (\n <Field label=\"Appearance\">\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n {isHeatmapLayer ? (\n <>\n <SettingsSliderField\n label={`Radius: ${(activeLayer?.radiusPixels as number | undefined) ?? 30}px`}\n >\n <Slider\n min={1}\n max={100}\n step={1}\n value={[\n (activeLayer?.radiusPixels as\n | number\n | undefined) ?? 30,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 30;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radiusPixels: value,\n }),\n ),\n );\n }}\n />\n </SettingsSliderField>\n <Select\n value={detectHeatmapScheme(activeLayer?.colorRange)}\n onValueChange={(value) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n colorRange:\n heatmapSchemeToColorRange(value),\n }),\n ),\n )\n }\n >\n <SelectTrigger className=\"w-full [&>span]:line-clamp-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {continuousSequentialSchemes.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n <ColorSchemeOptionLabel\n scheme={scheme}\n type=\"sequential\"\n />\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <AppearanceOpacitySlider\n valuePercent={getLayerOpacityPercent(activeLayer)}\n disabled={readOnly}\n onChange={(percent) => {\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n opacity: percent / 100,\n }),\n ),\n );\n }}\n />\n </>\n ) : (\n <>\n {(showTripsSettings ||\n isPathLayer ||\n showArcColumnSetting) && (\n <SettingsSliderField\n label={`${\n showTripsSettings ? 'Trip width' : 'Line width'\n }: ${lineWidthPixels}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[lineWidthPixels]}\n onValueChange={(values) =>\n setLineWidth(values[0] ?? lineWidthPixels)\n }\n />\n </SettingsSliderField>\n )}\n\n {showArcColumnSetting ? (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">\n Flat lines\n </span>\n <Switch\n checked={activeLayer?.getHeight === 0}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getHeight: checked ? 0 : undefined,\n }),\n ),\n )\n }\n />\n </div>\n ) : null}\n\n {showTripsSettings ? (\n <SettingsSliderField\n label={`Trail length: ${Math.round(((activeLayer?._trailLengthFactor as number | undefined) ?? 0.4) * 100)}%`}\n >\n <Slider\n min={5}\n max={100}\n step={5}\n value={[\n Math.round(\n ((activeLayer?._trailLengthFactor as\n | number\n | undefined) ?? 0.4) * 100,\n ),\n ]}\n onValueChange={(values) => {\n const value = (values[0] ?? 40) / 100;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n _trailLengthFactor: value,\n }),\n ),\n );\n }}\n />\n </SettingsSliderField>\n ) : null}\n\n {hasFillColor && hasLineColor && showStrokeSetting ? (\n <Tabs\n key={`appearance-fill-stroke${showExtrusionSettings ? '-extrusion' : ''}`}\n defaultValue=\"fill\"\n className=\"w-full\"\n >\n <TabsList\n className={`grid h-8 w-full ${showExtrusionSettings ? 'grid-cols-3' : 'grid-cols-2'}`}\n >\n <TabsTrigger value=\"fill\" className=\"text-xs\">\n Fill\n </TabsTrigger>\n <TabsTrigger value=\"stroke\" className=\"text-xs\">\n Stroke\n </TabsTrigger>\n {showExtrusionSettings ? (\n <TabsTrigger\n value=\"extrusion\"\n className=\"text-xs\"\n >\n Extrusion\n </TabsTrigger>\n ) : null}\n </TabsList>\n <TabsContent value=\"fill\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n </TabsContent>\n <TabsContent value=\"stroke\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getLineColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n enabled={strokeEnabled}\n onEnabledChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => {\n if (checked) {\n return {...layer, stroked: true};\n }\n // Clear stroke color scale when stroke is off.\n const next: DeckMapLayerRecord = {\n ...layer,\n stroked: false,\n };\n if (\n getDeckMapLayerColorScale(\n next,\n 'getLineColor',\n )\n ) {\n return replaceDeckMapLayerColorScaleWithFlat(\n next,\n 'getLineColor',\n DECK_MAP_DEFAULT_STROKE_COLOR,\n );\n }\n return next;\n },\n ),\n )\n }\n enableLabel=\"Stroke\"\n defaultFlatColor={\n DECK_MAP_DEFAULT_STROKE_COLOR\n }\n widthPixels={strokeWidthPixels}\n onWidthChange={setStrokeWidth}\n widthLabel=\"Stroke width\"\n extrusionDisablesStroke={\n usesStrokeExtrusionWarning(\n activeLayer?.['@@type'],\n ) && getDeckMapLayerExtruded(activeLayer)\n }\n />\n </TabsContent>\n {showExtrusionSettings ? (\n <TabsContent value=\"extrusion\" className=\"mt-2\">\n <AppearanceExtrusionPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n readOnly={readOnly}\n />\n </TabsContent>\n ) : null}\n </Tabs>\n ) : hasFillColor && showExtrusionSettings ? (\n <Tabs\n key=\"appearance-fill-extrusion\"\n defaultValue=\"fill\"\n className=\"w-full\"\n >\n <TabsList className=\"grid h-8 w-full grid-cols-2\">\n <TabsTrigger value=\"fill\" className=\"text-xs\">\n Fill\n </TabsTrigger>\n <TabsTrigger\n value=\"extrusion\"\n className=\"text-xs\"\n >\n Extrusion\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"fill\" className=\"mt-2\">\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={\n lastColorScaleFieldsRef\n }\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n </TabsContent>\n <TabsContent value=\"extrusion\" className=\"mt-2\">\n <AppearanceExtrusionPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n readOnly={readOnly}\n />\n </TabsContent>\n </Tabs>\n ) : hasFillColor ? (\n <AppearanceColorChannel\n accessor=\"getFillColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n {...fillRadiusProps}\n />\n ) : null}\n\n {hasSourceColor && hasTargetColor ? (\n <AppearanceArcColorPanel\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n />\n ) : null}\n\n {hasPathColor ? (\n <AppearanceColorChannel\n accessor=\"getColor\"\n layer={activeLayer}\n columns={dataOutputColumns}\n mapConfig={mapConfig}\n layerIndex={activeLayerIndex}\n applyConfig={applyConfig}\n lastColorScaleFieldsRef={lastColorScaleFieldsRef}\n readOnly={readOnly}\n />\n ) : null}\n </>\n )}\n </div>\n </Field>\n )}\n\n {outputColumns.length > 0 && showGeometryColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Geometry column\" required>\n <ColumnSelector\n value={activeLayerDataset?.geometryColumn}\n onChange={(geometryColumn) =>\n applyConfig(\n setDeckMapLayerGeometryColumn(\n mapConfig,\n activeLayerIndex,\n geometryColumn,\n ),\n )\n }\n placeholder=\"Select geometry column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showTripsSettings && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Timestamp column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.timestampColumn as string | undefined\n }\n onChange={(timestampColumn) =>\n applyConfig(\n setDeckMapLayerTimestampColumn(\n mapConfig,\n activeLayerIndex,\n timestampColumn,\n ),\n )\n }\n placeholder=\"Select timestamp column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showH3ColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"H3 column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.hexagonColumn as string | undefined\n }\n onChange={(hexagonColumn) =>\n applyConfig(\n setDeckMapLayerHexagonColumn(\n mapConfig,\n activeLayerIndex,\n hexagonColumn,\n ),\n )\n }\n placeholder=\"Select H3 index column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showArcColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Source geometry\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.sourceGeometryColumn as string | undefined\n }\n onChange={(sourceGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(\n mapConfig,\n activeLayerIndex,\n {\n sourceGeometryColumn,\n },\n ),\n )\n }\n placeholder=\"Select source geometry...\"\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Target geometry\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.targetGeometryColumn as string | undefined\n }\n onChange={(targetGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(\n mapConfig,\n activeLayerIndex,\n {\n targetGeometryColumn,\n },\n ),\n )\n }\n placeholder=\"Select target geometry...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n )}\n\n {sourceDataTable &&\n !showGeometryColumnSetting &&\n !showH3ColumnSetting &&\n !showArcColumnSetting && (\n <ColumnsProvider columns={sourceColumns}>\n <Field label=\"Latitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.latitudeColumn}\n onChange={(latitudeColumn) => {\n const longitudeColumn =\n mapConfig.fitToData?.longitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Longitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.longitudeColumn}\n onChange={(longitudeColumn) => {\n const latitudeColumn =\n mapConfig.fitToData?.latitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|
package/dist/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,IAAI,EAAC,MAAM,IAAI,CAAC;AACnC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAIlB,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAGlC,iBAAiB,EAGjB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,eAAe,CAAC;AAIjE,OAAO,EAAC,8BAA8B,EAAE,uBAAuB,EAAC,CAAC;AAIjE,eAAO,MAAM,wBAAwB,QA+CpC,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,qCAAqC,WAEpD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,wCAAwC,GAClD,6BAA6B,GAAG;IAC9B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEJ,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAQtB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,2CAA2C,CACrD,MAAM,SAAS,yBAAyB,IACtC,+BAA+B,CAAC,MAAM,CAAC,GAAG;IAC5C,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,MAAM,SAAS,yBAAyB,EACxC,OAAO,EAAE,2CAA2C,CAAC,MAAM,CAAC,GAAG,IAAI,CAcpE;AA2CD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4D1C,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,+BAA+B,CACvC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQtC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,2BAA2B,CACnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBvC,CAAC;AAEL,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,8BAA8B,CACtC,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,IAAI,EAAC,MAAM,IAAI,CAAC;AACnC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAIlB,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAGlC,iBAAiB,EAGjB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,eAAe,CAAC;AAIjE,OAAO,EAAC,8BAA8B,EAAE,uBAAuB,EAAC,CAAC;AAIjE,eAAO,MAAM,wBAAwB,QA+CpC,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,qCAAqC,WAEpD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,wCAAwC,GAClD,6BAA6B,GAAG;IAC9B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEJ,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAQtB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,2CAA2C,CACrD,MAAM,SAAS,yBAAyB,IACtC,+BAA+B,CAAC,MAAM,CAAC,GAAG;IAC5C,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,MAAM,SAAS,yBAAyB,EACxC,OAAO,EAAE,2CAA2C,CAAC,MAAM,CAAC,GAAG,IAAI,CAcpE;AA2CD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4D1C,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,+BAA+B,CACvC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQtC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,2BAA2B,CACnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBvC,CAAC;AAEL,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,8BAA8B,CACtC,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AAcvB;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,OAAO,GAAG,QAAQ,CAAC,EACzD,OAAO,CAAC,EAAE,6BAA6B;;;;;EAOxC;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAgC9C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAI3D;AAED;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,2DAA2D;IAC3D,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,4CAA4C;IAC5C,eAAe,EAAE,iBAAiB,CAAC;IACnC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,EAAE,gCAAgC,GAAG,IAAI,CAkFzC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gCAAgC,GACvC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAItB"}
|