@itwin/map-layers 3.6.0-dev.8 → 4.0.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/lib/cjs/mapLayers.js +3 -3
  3. package/lib/cjs/mapLayers.js.map +1 -1
  4. package/lib/cjs/public/locales/en/mapLayers.json +2 -0
  5. package/lib/cjs/ui/FeatureInfoUiItemsProvider.d.ts +2 -1
  6. package/lib/cjs/ui/FeatureInfoUiItemsProvider.d.ts.map +1 -1
  7. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js +8 -6
  8. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  9. package/lib/cjs/ui/Interfaces.d.ts +4 -1
  10. package/lib/cjs/ui/Interfaces.d.ts.map +1 -1
  11. package/lib/cjs/ui/Interfaces.js.map +1 -1
  12. package/lib/cjs/ui/MapFeatureInfoTool.js +2 -2
  13. package/lib/cjs/ui/MapFeatureInfoTool.js.map +1 -1
  14. package/lib/cjs/ui/MapLayersUiItemsProvider.js +1 -1
  15. package/lib/cjs/ui/MapLayersUiItemsProvider.js.map +1 -1
  16. package/lib/cjs/ui/widget/FeatureInfoWidget.js.map +1 -1
  17. package/lib/cjs/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  18. package/lib/cjs/ui/widget/MapLayerDroppable.js +3 -1
  19. package/lib/cjs/ui/widget/MapLayerDroppable.js.map +1 -1
  20. package/lib/cjs/ui/widget/MapLayerManager.d.ts.map +1 -1
  21. package/lib/cjs/ui/widget/MapLayerManager.js +31 -3
  22. package/lib/cjs/ui/widget/MapLayerManager.js.map +1 -1
  23. package/lib/cjs/ui/widget/MapLayersWidget.d.ts.map +1 -1
  24. package/lib/cjs/ui/widget/MapLayersWidget.js +6 -1
  25. package/lib/cjs/ui/widget/MapLayersWidget.js.map +1 -1
  26. package/lib/cjs/ui/widget/MapUrlDialog.d.ts.map +1 -1
  27. package/lib/cjs/ui/widget/MapUrlDialog.js +9 -4
  28. package/lib/cjs/ui/widget/MapUrlDialog.js.map +1 -1
  29. package/lib/cjs/ui/widget/SubLayersTree.d.ts.map +1 -1
  30. package/lib/cjs/ui/widget/SubLayersTree.js +9 -4
  31. package/lib/cjs/ui/widget/SubLayersTree.js.map +1 -1
  32. package/lib/esm/mapLayers.js +3 -3
  33. package/lib/esm/mapLayers.js.map +1 -1
  34. package/lib/esm/public/locales/en/mapLayers.json +2 -0
  35. package/lib/esm/ui/FeatureInfoUiItemsProvider.d.ts +2 -1
  36. package/lib/esm/ui/FeatureInfoUiItemsProvider.d.ts.map +1 -1
  37. package/lib/esm/ui/FeatureInfoUiItemsProvider.js +8 -6
  38. package/lib/esm/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  39. package/lib/esm/ui/Interfaces.d.ts +4 -1
  40. package/lib/esm/ui/Interfaces.d.ts.map +1 -1
  41. package/lib/esm/ui/Interfaces.js.map +1 -1
  42. package/lib/esm/ui/MapFeatureInfoTool.js +2 -2
  43. package/lib/esm/ui/MapFeatureInfoTool.js.map +1 -1
  44. package/lib/esm/ui/MapLayersUiItemsProvider.js +1 -1
  45. package/lib/esm/ui/MapLayersUiItemsProvider.js.map +1 -1
  46. package/lib/esm/ui/widget/FeatureInfoWidget.js.map +1 -1
  47. package/lib/esm/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  48. package/lib/esm/ui/widget/MapLayerDroppable.js +4 -2
  49. package/lib/esm/ui/widget/MapLayerDroppable.js.map +1 -1
  50. package/lib/esm/ui/widget/MapLayerManager.d.ts.map +1 -1
  51. package/lib/esm/ui/widget/MapLayerManager.js +31 -3
  52. package/lib/esm/ui/widget/MapLayerManager.js.map +1 -1
  53. package/lib/esm/ui/widget/MapLayersWidget.d.ts.map +1 -1
  54. package/lib/esm/ui/widget/MapLayersWidget.js +6 -1
  55. package/lib/esm/ui/widget/MapLayersWidget.js.map +1 -1
  56. package/lib/esm/ui/widget/MapUrlDialog.d.ts.map +1 -1
  57. package/lib/esm/ui/widget/MapUrlDialog.js +10 -5
  58. package/lib/esm/ui/widget/MapUrlDialog.js.map +1 -1
  59. package/lib/esm/ui/widget/SubLayersTree.d.ts.map +1 -1
  60. package/lib/esm/ui/widget/SubLayersTree.js +9 -4
  61. package/lib/esm/ui/widget/SubLayersTree.js.map +1 -1
  62. package/lib/public/locales/en/mapLayers.json +2 -0
  63. package/package.json +27 -27
@@ -1 +1 @@
1
- {"version":3,"file":"SubLayersTree.js","sourceRoot":"","sources":["../../../../src/ui/widget/SubLayersTree.tsx"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,0DAA4D;AAC5D,8DAMiC;AACjC,oDAAkG;AAClG,wDAAiE;AACjE,kDAAsH;AACtH,wDAAqD;AACrD,+BAA+B;AAE/B,mEAAgE;AAChE,gCAA8B;AAC9B,+CAA8C;AAE9C,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,QAAyC,EACzC,EAAE;IACF,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAkB,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,OAAiB,EAAE,EAAE;;QACpB,IAAI,CAAC,CAAA,MAAA,SAAS,EAAE,0CAAE,cAAc,CAAA,EAAE;YAChC,OAAO;SACR;QAED,MAAA,cAAc,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE;YACX,cAAc,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAChE,QAAQ,CAAC,WAAW,CAAC,CACtB,CAAC;YACF,MAAA,cAAc,CAAC,OAAO,0CAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAC1C;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAU,CAAC;AACvD,CAAC,CAAC;AAEF;;;GAGG;AACH,SAAS,iBAAiB;IACxB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAqB,EAAE,EAAE;QAC1E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC;AAOD,gEAAgE;AAChE,SAAS,OAAO,CAAC,KAAmB;IAClC,OAAO,CACL,6BAAK,SAAS,EAAC,mCAAmC;QAChD,6BAAK,SAAS,EAAC,6BAA6B,IACzC,KAAK,CAAC,QAAQ,CACX;QACL,KAAK,CAAC,WAAW,IAAI,6BAAK,SAAS,EAAC,wBAAwB,IAC1D,KAAK,CAAC,WAAW,CACd,CACF,CACP,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA6E;IAC9H,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC5H,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QACtF,OAAO,6BAAK,SAAS,EAAC,4BAA4B;YAChD,iCAAM,kBAAkB,CAAO,CAC3B,CAAC;KACR;IAED,OAAO,CACL,oBAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,GAAI,CACtC,CAAC;AACJ,CAAC;AAXD,wCAWC;AAED,SAAS,gBAAgB,CAAC,gBAAuC;IAC/D,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,wBAAwB,CAAC,QAA+B,EAAE,SAAkB;IACnF,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAChF,aAAa,EAAE,IAAI;QACnB,SAAS;QACT,QAAQ,EAAE,yBAAS,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,QAAQ,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,gEAAgE;AAChE,SAAgB,aAAa,CAAC,KAA0C;;IACtE,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAChI,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC9G,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAChH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE7E,yDAAyD;IACzD,yEAAyE;IACzE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,6CAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1F,MAAM,EACJ,WAAW,EACX,UAAU,EACV,qBAAqB,GACtB,GAAG,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAEtD,qGAAqG;IACrG,+EAA+E;IAC/E,iHAAiH;IACjH,iGAAiG;IACjG,MAAM,YAAY,GAAG,IAAA,0BAAa,EAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvI,0GAA0G;IAC1G,oCAAoC;IACpC,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;QACtC,IAAI,YAAY,IAAI,EAAE,EAAE;YACtB,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpG,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9F,IAAI,eAAe,EAAE;gBACnB,IAAI,eAAe,YAAY,mCAAqB;oBAClD,WAAW,CAAC,wBAAwB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;aAC9E;SACF;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;QACtC,IAAI,YAAY,IAAI,EAAE,EAAE;YACtB,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACrG,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9F,IAAI,eAAe,IAAI,eAAe,YAAY,mCAAqB,EAAE;gBACvE,WAAW,CAAC,wBAAwB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;aAC5E;YACD,EAAE,CAAC,oBAAoB,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAA0C,EAAE,EAAE;QAC/F,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEjE,OAAO;QACL,6BAAK,SAAS,EAAC,2BAA2B;YACxC,oBAAC,OAAO,IACN,WAAW,EACT,oBAAC,qBAAK,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,gCAAgC,EAC3D,WAAW,EAAE,gBAAgB,EAC7B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAC,OAAO,GAAG,IAGlB,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,uBAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,oBAAC,sBAAM,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAC,cAAc,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;oBAChG,oBAAC,wBAAW,IAAC,QAAQ,EAAC,iBAAiB,GAAG,CACnC;gBACT,oBAAC,sBAAM,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAC,cAAc,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO;oBACjG,oBAAC,wBAAW,IAAC,QAAQ,EAAC,wBAAwB,GAAG,CAC1C;aACV,CACO;YACV,6BAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,mCAAmC,IAClE,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,oBAAC,iCAAc,IAC7D,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,gCAAa,CAAC,IAAI,EACjC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,+BAA+B,EAC7C,qBAAqB,EAAE,qBAAqB,EAC5C,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACE,CACF,CACL,CAAC;AACN,CAAC;AAhGD,sCAgGC;AAED,4FAA4F;AAC5F,MAAM,uBAAwB,SAAQ,mCAAgB;IAGpD,YAAoB,SAAgC,EAAE,UAAgE;QACpH,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,CAAC;QADjF,cAAS,GAAT,SAAS,CAAuB;QA2CpD,yEAAyE;QACzE,0BAA0B;QAC1B,0EAA0E;QAC1E,qEAAqE;QACrE,wEAAwE;QACxE,kEAAkE;QAClE,2EAA2E;QAC3E,kEAAkE;QAClE,kEAAkE;QAClE,gCAAgC;QACzB,mBAAc,GAAG,CAAC,IAAmC,EAAE,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1B,IAAI,CAAC,IAAI;wBACP,OAAO;oBAET,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QA7DA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;IAEe,OAAO;QACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,yEAAyE;IACzE,4BAA4B;IACpB,yBAAyB,CAAC,KAAuB,EAAE,QAAiB;QAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS;YACxB,OAAO;QAET,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/D,IAAI,SAAS;gBACX,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEjD,uBAAuB;YACvB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAChD;IACH,CAAC;IAEO,yBAAyB,CAAC,KAAuB,EAAE,MAAc;QACvE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,KAAK,MAAK,0BAAa,CAAC,GAAG;YACnD,OAAO;QAET,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,EAAE,MAAK,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAA;gBAC7B,SAAS;YAEX,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,0BAAa,CAAC,EAAE;gBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,0BAAa,CAAC,GAAG,CAAC;SAC3C;IACH,CAAC;IAwBO,MAAM,CAAC,cAAc,CAAC,QAAsC;QAClE,IAAI,CAAC,QAAQ;YACX,OAAO,KAAK,CAAC;QAEf,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,oEAAoE;IAC5D,uBAAuB,CAAC,KAAuB,EAAE,WAAiC;;QACxF,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,IAAI,CAAC,UAAU;YACb,OAAO;QAET,IAAI,CAAC,WAAW,CAAC,QAAQ;YACvB,OAAO,CAAC,sFAAsF;QAEhG,MAAM,aAAa,GAAG,SAAS,MAAK,MAAA,UAAU,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7I,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QAEnG,oDAAoD;QACpD,8GAA8G;QAC9G,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,KAAK,0BAAa,CAAC,GAAG,CAAC,EAAE;YACjJ,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,0BAAa,CAAC,GAAG,CAAC;SAChD;aAAM;YACL,sDAAsD;YACtD,MAAM,UAAU,GAAG,SAAS,MAAK,MAAA,WAAW,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,WAAW,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7I,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAC/F,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YACxC,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAC,CAAC,CAAC,0BAAa,CAAC,EAAE,CAAC,CAAC,CAAC,0BAAa,CAAC,GAAG,CAAC;SAC5F;IACH,CAAC;IAED,oFAAoF;IACpE,sBAAsB,CAAC,EAAE,YAAY,EAAoC;QACvF,8BAA8B;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAEpE,mGAAmG;QACnG,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC;YAC/C,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChB,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;gBAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;gBACtC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;oBACzB,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,0BAAa,CAAC,EAAE,CAAC,CAAC;oBAE1D,MAAM,UAAU,GAAG,SAAS,MAAK,MAAA,MAAM,CAAC,QAAQ,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,QAAQ,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAE1I,yCAAyC;oBACzC,IAAI,gBAA8C,CAAC;oBACnD,IAAI,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,0CAAE,uBAAuB,EAAE;wBACpD,gBAAgB,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;qBACjH;oBAED,wHAAwH;oBACxH,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBAC/F,IAAI,aAAa;wBACf,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;oBACrC,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO;wBAC3B,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;oBAEnC,4BAA4B;oBAC5B,IAAI,CAAC,CAAC,KAAK,mBAAmB,IAAI,YAAY,EAAE;wBAC9C,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,EAAE,KAAK,SAAS;4BACvD,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAC9H,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;qBACzH;oBAED,gBAAgB;oBAChB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;;wBACrC,IAAI,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,0CAAE,uBAAuB;4BAClD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC5D,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,EAAE;oBACJ,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QACH,8DAA8D;QAC9D,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,CAC9D,oBAAC,0BAAa,IACZ,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,iBAAiB,EACzB,QAAQ,EAAC,wBAAwB,EACjC,OAAO,EAAE,KAAK,CAAC,QAAQ,EACvB,OAAO,EAAE,KAAK,CAAC,KAAK,GACpB,CACH,CAAC;AAEF,oIAAoI;AACpI,MAAM,WAAW,GAAG,IAAI,kCAAe,EAAE,CAAC;AAC1C,MAAM,2BAA2B,GAAG,CAAC,KAA4B,EAAE,EAAE,CAAC,CACpE,oBAAC,mCAAgB,OACX,KAAK,EACT,gBAAgB,EAAE,mBAAmB,EACrC,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;AAEF,mIAAmI;AACnI,MAAM,+BAA+B,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CACpE,oBAAC,+BAAY,OACP,KAAK,EACT,YAAY,EAAE,2BAA2B,GACzC,CACH,CAAC;AAEF,SAAS,gBAAgB,CACvB,YAA+B,EAC/B,MAAc;IAEd,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO;QACL,UAAU;QACV,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAA+B,EAC/B,MAAc;IAEd,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,IAAI,wBAAwB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,IAAI,iCAAc,CAAC,gBAAgB,EAAE,IAAI,kCAAe,EAAE,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAAc;IAEd,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAA0B,CAAC;IAEnG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;SACR;QACD,wBAAwB,CAAC;YACvB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,iBAAiB;IAKrB,YAAmB,YAA+B;QAH1C,eAAU,GAAG,IAAI,GAAG,EAAiD,CAAC;QAI5E,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAqB;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,qBAAqB;IAMzB,YAAmB,YAA+B,EAAE,MAAc;QAH1D,cAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;QAI3E,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,iFAAiF;IACzE,WAAW,CAAC,SAA6D,EAAE,OAAiC;QAClH,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YACX,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvC,MAAM,eAAe,GAAG,IAAI,KAAK,EAA2B,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACxD,YAAY,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,WAAW,CAAC;QACxC,IAAI,QAA6C,CAAC;QAClD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE,eAAe,CAAC,CAAC;YAEjD,gGAAgG;YAChG,IAAI,OAAO,EAAE;gBACX,QAAQ,GAAG;oBACT,GAAG,OAAO;oBACV,WAAW;oBACX,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU;iBACpD,CAAC;aACH;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,aAAa,CAAC,IAAkB;;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;YAChE,OAAO,KAAK,CAAC;QAEf,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,0CAAE,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK;YACR,OAAO,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,MAAM,wBAAwB;IAG5B,YACE,kBAAqC,EACrC,MAAc;QAEd,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAAqB;QACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,IAAI,EAAE,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAqB;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,KAAI,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport {\r\n AbstractTreeNodeLoaderWithProvider, ControlledTree, DelayLoadedTreeNodeItem, HighlightableTreeProps, ITreeDataProvider,\r\n MutableTreeModel,\r\n MutableTreeModelNode,\r\n SelectionMode, TreeCheckboxStateChangeEventArgs, TreeDataProvider, TreeEventHandler, TreeImageLoader, TreeModel, TreeModelChanges, TreeModelSource, TreeNodeItem, TreeNodeLoader,\r\n TreeNodeRenderer, TreeNodeRendererProps, TreeRenderer, TreeRendererProps, useTreeModel,\r\n} from \"@itwin/components-react\";\r\nimport { ImageMapLayerSettings, MapSubLayerProps, MapSubLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp, ScreenViewport } from \"@itwin/core-frontend\";\r\nimport { CheckBoxState, ImageCheckBox, NodeCheckboxRenderProps, useDisposable, WebFontIcon } from \"@itwin/core-react\";\r\nimport { Button, Input } from \"@itwin/itwinui-react\";\r\nimport * as React from \"react\";\r\nimport { StyleMapLayerSettings } from \"../Interfaces\";\r\nimport { SubLayersDataProvider } from \"./SubLayersDataProvider\";\r\nimport \"./SubLayersTree.scss\";\r\nimport { MapLayersUI } from \"../../mapLayers\";\r\n\r\nconst getWindow = () => {\r\n return typeof window === \"undefined\" ? undefined : window;\r\n};\r\n\r\nconst useResizeObserver = <T extends HTMLElement>(\r\n onResize: (size: DOMRectReadOnly) => void,\r\n) => {\r\n const resizeObserver = React.useRef<ResizeObserver>();\r\n\r\n const elementRef = React.useCallback(\r\n (element: T | null) => {\r\n if (!getWindow()?.ResizeObserver) {\r\n return;\r\n }\r\n\r\n resizeObserver.current?.disconnect();\r\n if (element) {\r\n resizeObserver.current = new ResizeObserver(([{ contentRect }]) =>\r\n onResize(contentRect),\r\n );\r\n resizeObserver.current?.observe(element);\r\n }\r\n },\r\n [onResize],\r\n );\r\n\r\n return [elementRef, resizeObserver.current] as const;\r\n};\r\n\r\n/**\r\n Mimic processing of `react-resize-detector` to return width and height.\r\n* @internal\r\n */\r\nfunction useResizeDetector(): { width: number | undefined, height: number | undefined, ref: React.Ref<HTMLDivElement> } {\r\n const [width, setWidth] = React.useState<number>();\r\n const [height, setHeight] = React.useState<number>();\r\n const [ref] = useResizeObserver(React.useCallback((size: DOMRectReadOnly) => {\r\n setWidth(size.width);\r\n setHeight(size.height);\r\n }, []));\r\n return { width, height, ref };\r\n}\r\n\r\ninterface ToolbarProps {\r\n searchField?: React.ReactNode;\r\n children?: React.ReactNode[];\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nfunction Toolbar(props: ToolbarProps) {\r\n return (\r\n <div className=\"map-manager-sublayer-tree-toolbar\">\r\n <div className=\"tree-toolbar-action-buttons\">\r\n {props.children}\r\n </div>\r\n {props.searchField && <div className=\"tree-toolbar-searchbox\">\r\n {props.searchField}\r\n </div>}\r\n </div>\r\n );\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SubLayersPanel({ mapLayer, viewport }: { mapLayer: StyleMapLayerSettings, viewport: ScreenViewport | undefined }) {\r\n const [noneAvailableLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.NoSubLayers\"));\r\n if (!viewport || (undefined === mapLayer.subLayers || 0 === mapLayer.subLayers.length)) {\r\n return <div className=\"map-manager-sublayer-panel\">\r\n <div>{noneAvailableLabel}</div>\r\n </div>;\r\n }\r\n\r\n return (\r\n <SubLayersTree mapLayer={mapLayer} />\r\n );\r\n}\r\n\r\nfunction getSubLayerProps(subLayerSettings: MapSubLayerSettings[]): MapSubLayerProps[] {\r\n return subLayerSettings.map((subLayer) => subLayer.toJSON());\r\n}\r\n\r\nfunction getStyleMapLayerSettings(settings: ImageMapLayerSettings, isOverlay: boolean): StyleMapLayerSettings {\r\n return {\r\n visible: settings.visible,\r\n name: settings.name,\r\n source: settings.source,\r\n transparency: settings.transparency,\r\n transparentBackground: settings.transparentBackground,\r\n subLayers: settings.subLayers ? getSubLayerProps(settings.subLayers) : undefined,\r\n showSubLayers: true,\r\n isOverlay,\r\n provider: IModelApp.mapLayerFormatRegistry.createImageryProvider(settings),\r\n };\r\n}\r\n\r\n/**\r\n * Tree Control that displays sub-layer hierarchy\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SubLayersTree(props: { mapLayer: StyleMapLayerSettings }) {\r\n const [placeholderLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.SearchPlaceholder\"));\r\n const [allOnLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.AllOn\"));\r\n const [allOffLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.AllOff\"));\r\n const [mapLayer, setMapLayer] = React.useState(props.mapLayer);\r\n const [layerFilterString, setLayerFilterString] = React.useState<string>(\"\");\r\n\r\n // create data provider to get some nodes to show in tree\r\n // `React.useMemo' is used avoid creating new object on each render cycle\r\n const dataProvider = React.useMemo(() => new SubLayersDataProvider(mapLayer), [mapLayer]);\r\n\r\n const {\r\n modelSource,\r\n nodeLoader,\r\n nodeHighlightingProps,\r\n } = useTreeFiltering(dataProvider, layerFilterString);\r\n\r\n // create custom event handler. It handles all tree event same as `TreeEventHandler` but additionally\r\n // it selects/deselects node when checkbox is checked/unchecked and vice versa.\r\n // `useDisposable` takes care of disposing old event handler when new is created in case 'nodeLoader' has changed\r\n // `React.useCallback` is used to avoid creating new callback that creates handler on each render\r\n const eventHandler = useDisposable(React.useCallback(() => new SubLayerCheckboxHandler(mapLayer, nodeLoader), [nodeLoader, mapLayer]));\r\n\r\n // Get an immutable tree model from the model source. The model is regenerated every time the model source\r\n // emits the `onModelChanged` event.\r\n const treeModel = useTreeModel(modelSource);\r\n\r\n const showAll = React.useCallback(async () => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n if (displayStyle && vp) {\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(mapLayer.name, mapLayer.source, mapLayer.isOverlay) : -1;\r\n displayStyle.changeMapSubLayerProps({ visible: true }, -1, indexInDisplayStyle, mapLayer.isOverlay);\r\n vp.invalidateRenderPlan();\r\n const updatedMapLayer = displayStyle.mapLayerAtIndex(indexInDisplayStyle, mapLayer.isOverlay);\r\n if (updatedMapLayer) {\r\n if (updatedMapLayer instanceof ImageMapLayerSettings)\r\n setMapLayer(getStyleMapLayerSettings(updatedMapLayer, mapLayer.isOverlay));\r\n }\r\n }\r\n }, [mapLayer]);\r\n\r\n const hideAll = React.useCallback(async () => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n if (displayStyle && vp) {\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(mapLayer.name, mapLayer.source, mapLayer.isOverlay) : -1;\r\n displayStyle.changeMapSubLayerProps({ visible: false }, -1, indexInDisplayStyle, mapLayer.isOverlay);\r\n const updatedMapLayer = displayStyle.mapLayerAtIndex(indexInDisplayStyle, mapLayer.isOverlay);\r\n if (updatedMapLayer && updatedMapLayer instanceof ImageMapLayerSettings) {\r\n setMapLayer(getStyleMapLayerSettings(updatedMapLayer, mapLayer.isOverlay));\r\n }\r\n vp.invalidateRenderPlan();\r\n }\r\n }, [mapLayer]);\r\n\r\n const handleFilterTextChanged = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setLayerFilterString(event.target.value);\r\n }, []);\r\n\r\n const { width, height, ref: containerRef } = useResizeDetector();\r\n\r\n return <>\r\n <div className=\"map-manager-sublayer-tree\">\r\n <Toolbar\r\n searchField={\r\n <Input type=\"text\" className=\"map-manager-source-list-filter\"\r\n placeholder={placeholderLabel}\r\n value={layerFilterString}\r\n onChange={handleFilterTextChanged}\r\n size=\"small\" />\r\n }\r\n >\r\n {mapLayer.provider?.mutualExclusiveSubLayer ? undefined : [\r\n <Button size=\"small\" styleType=\"borderless\" key=\"show-all-btn\" title={allOnLabel} onClick={showAll}>\r\n <WebFontIcon iconName=\"icon-visibility\" />\r\n </Button>,\r\n <Button size=\"small\" styleType=\"borderless\" key=\"hide-all-btn\" title={allOffLabel} onClick={hideAll}>\r\n <WebFontIcon iconName=\"icon-visibility-hide-2\" />\r\n </Button>,\r\n ]}\r\n </Toolbar>\r\n <div ref={containerRef} className=\"map-manager-sublayer-tree-content\">\r\n {width !== undefined && height !== undefined && <ControlledTree\r\n nodeLoader={nodeLoader}\r\n selectionMode={SelectionMode.None}\r\n eventsHandler={eventHandler}\r\n model={treeModel}\r\n treeRenderer={nodeWithEyeCheckboxTreeRenderer}\r\n nodeHighlightingProps={nodeHighlightingProps}\r\n width={width}\r\n height={height}\r\n />}\r\n </div>\r\n </div>\r\n </>;\r\n}\r\n\r\n/** TreeEventHandler derived class that handler processing changes to subLayer visibility */\r\nclass SubLayerCheckboxHandler extends TreeEventHandler {\r\n private _removeModelChangedListener: () => void;\r\n\r\n constructor(private _mapLayer: StyleMapLayerSettings, nodeLoader: AbstractTreeNodeLoaderWithProvider<TreeDataProvider>) {\r\n super({ modelSource: nodeLoader.modelSource, nodeLoader, collapsedChildrenDisposalEnabled: true });\r\n this._removeModelChangedListener = this.modelSource.onModelChanged.addListener(this.onModelChanged);\r\n }\r\n\r\n public override dispose() {\r\n this._removeModelChangedListener();\r\n super.dispose();\r\n }\r\n\r\n // Cascade state\r\n // Children on unnamed groups must get disabled in the tree view, because\r\n // they get rendered anyway.\r\n private cascadeStateToAllChildren(model: MutableTreeModel, parentId?: string) {\r\n const children = model.getChildren(parentId);\r\n if (children === undefined)\r\n return;\r\n\r\n for (const childID of children) {\r\n const childNode = childID ? model.getNode(childID) : undefined;\r\n\r\n if (childNode)\r\n this.syncNodeStateWithParent(model, childNode);\r\n\r\n // Drill down the tree.\r\n this.cascadeStateToAllChildren(model, childID);\r\n }\r\n }\r\n\r\n private applyMutualExclusiveState(model: MutableTreeModel, nodeId: string) {\r\n const changedNode = model.getNode(nodeId);\r\n if (changedNode?.checkbox.state === CheckBoxState.Off)\r\n return;\r\n\r\n for (const node of model.iterateTreeModelNodes()) {\r\n if (node.id === changedNode?.id)\r\n continue;\r\n\r\n if (node && node.checkbox.state === CheckBoxState.On)\r\n node.checkbox.state = CheckBoxState.Off;\r\n }\r\n }\r\n\r\n //-----------------------------------------------------------------------\r\n // Listen to model changes\r\n //------------------------------------------------------------------------\r\n // This is required because nodes are delay loaded in the model until\r\n // they are made visible (i.e. parent node is expanded). So even though\r\n // you might have created nodes in the data provided with a proper\r\n // initial state, by the time it gets loaded, their state might have became\r\n // out of date in the TreeView's active model. So whenever a node\r\n // is added, when must confirm its state matches the current model\r\n // (i.e. state of their parent.)\r\n public onModelChanged = (args: [TreeModel, TreeModelChanges]) => {\r\n this.modelSource.modifyModel((model) => {\r\n const addedNodes = args[1].addedNodeIds.map((id) => model.getNode(id));\r\n addedNodes.forEach((node) => {\r\n if (!node)\r\n return;\r\n\r\n this.syncNodeStateWithParent(model, node);\r\n });\r\n });\r\n };\r\n\r\n private static isUnnamedGroup(subLayer: MapSubLayerProps | undefined): boolean {\r\n if (!subLayer)\r\n return false;\r\n\r\n return (!subLayer.name || subLayer.name.length === 0) && (subLayer.children !== undefined && subLayer.children.length > 0);\r\n }\r\n\r\n // Ensure the state of changed node matches the state of its parent.\r\n private syncNodeStateWithParent(model: MutableTreeModel, changedNode: MutableTreeModelNode) {\r\n // Lookup node parent. If non exists, I assume thats the root node,\r\n // and it must have a proper initial state.\r\n const parentNode = changedNode.parentId ? model.getNode(changedNode.parentId) : undefined;\r\n if (!parentNode)\r\n return;\r\n\r\n if (!changedNode.checkbox)\r\n return; // don't see why this would happen, but if there is no checkbox, we cant do much here.\r\n\r\n const parentLayerId = undefined !== parentNode.item.extendedData?.subLayerId ? parentNode.item.extendedData?.subLayerId : parentNode.item.id;\r\n const parentSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === parentLayerId);\r\n\r\n // If parent is disabled, then children must be too.\r\n // Also, Non-visible unnamed group must have their children disabled (unamed groups have visibility inherence)\r\n if (parentNode.checkbox.isDisabled || (SubLayerCheckboxHandler.isUnnamedGroup(parentSubLayer) && parentNode.checkbox.state === CheckBoxState.Off)) {\r\n changedNode.checkbox.isDisabled = true;\r\n changedNode.checkbox.state = CheckBoxState.Off;\r\n } else {\r\n // Visibility state from StyleMapLayerSettings applies\r\n const subLayerId = undefined !== changedNode.item.extendedData?.subLayerId ? changedNode.item.extendedData?.subLayerId : changedNode.item.id;\r\n const foundSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === subLayerId);\r\n changedNode.checkbox.isDisabled = false;\r\n changedNode.checkbox.state = foundSubLayer?.visible ? CheckBoxState.On : CheckBoxState.Off;\r\n }\r\n }\r\n\r\n /** Changes nodes checkboxes states until event is handled or handler is disposed */\r\n public override onCheckboxStateChanged({ stateChanges }: TreeCheckboxStateChangeEventArgs) {\r\n // call base checkbox handling\r\n const baseHandling = super.onCheckboxStateChanged({ stateChanges });\r\n\r\n // subscribe to checkbox state changes to new checkbox states and do some additional work with them\r\n const selectionHandling = stateChanges.subscribe({\r\n next: (changes) => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(this._mapLayer.name, this._mapLayer.source, this._mapLayer.isOverlay) : -1;\r\n changes.forEach((change) => {\r\n const isSelected = (change.newState === CheckBoxState.On);\r\n\r\n const subLayerId = undefined !== change.nodeItem.extendedData?.subLayerId ? change.nodeItem.extendedData?.subLayerId : change.nodeItem.id;\r\n\r\n // Get the previously visible node if any\r\n let prevVisibleLayer: MapSubLayerProps | undefined;\r\n if (this._mapLayer.provider?.mutualExclusiveSubLayer) {\r\n prevVisibleLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.visible && subLayer.id !== subLayerId);\r\n }\r\n\r\n // Update sublayer object, otherwise state would get out of sync with DisplayStyle each time the TreeView is re-rendered\r\n const foundSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === subLayerId);\r\n if (foundSubLayer)\r\n foundSubLayer.visible = isSelected;\r\n if (prevVisibleLayer?.visible)\r\n prevVisibleLayer.visible = false;\r\n\r\n // Update displaystyle state\r\n if (-1 !== indexInDisplayStyle && displayStyle) {\r\n if (prevVisibleLayer && prevVisibleLayer.id !== undefined)\r\n displayStyle.changeMapSubLayerProps({ visible: false }, prevVisibleLayer.id, indexInDisplayStyle, this._mapLayer.isOverlay);\r\n displayStyle.changeMapSubLayerProps({ visible: isSelected }, subLayerId, indexInDisplayStyle, this._mapLayer.isOverlay);\r\n }\r\n\r\n // Cascade state\r\n this.modelSource.modifyModel((model) => {\r\n if (this._mapLayer.provider?.mutualExclusiveSubLayer)\r\n this.applyMutualExclusiveState(model, change.nodeItem.id);\r\n this.cascadeStateToAllChildren(model, change.nodeItem.id);\r\n });\r\n });\r\n\r\n if (vp)\r\n vp.invalidateRenderPlan();\r\n },\r\n });\r\n // stop handling selection when checkboxes handling is stopped\r\n baseHandling?.add(selectionHandling);\r\n return baseHandling;\r\n }\r\n}\r\n\r\n/** Custom checkbox renderer that renders checkbox as an eye */\r\nconst eyeCheckboxRenderer = (props: NodeCheckboxRenderProps) => (\r\n <ImageCheckBox\r\n checked={props.checked}\r\n disabled={props.disabled}\r\n imageOn=\"icon-visibility\"\r\n imageOff=\"icon-visibility-hide-2\"\r\n onClick={props.onChange}\r\n tooltip={props.title}\r\n />\r\n);\r\n\r\n/** Custom node renderer. It uses default 'TreeNodeRenderer' but overrides default checkbox renderer to render checkbox as an eye */\r\nconst imageLoader = new TreeImageLoader();\r\nconst nodeWithEyeCheckboxRenderer = (props: TreeNodeRendererProps) => (\r\n <TreeNodeRenderer\r\n {...props}\r\n checkboxRenderer={eyeCheckboxRenderer}\r\n imageLoader={imageLoader}\r\n />\r\n);\r\n\r\n/** Custom tree renderer. It uses default `TreeRenderer` but overrides default node renderer to render node with custom checkbox */\r\nconst nodeWithEyeCheckboxTreeRenderer = (props: TreeRendererProps) => (\r\n <TreeRenderer\r\n {...props}\r\n nodeRenderer={nodeWithEyeCheckboxRenderer}\r\n />\r\n);\r\n\r\nfunction useTreeFiltering(\r\n dataProvider: ITreeDataProvider,\r\n filter: string,\r\n) {\r\n const nodeLoader = useFilteredProvider(dataProvider, filter);\r\n const nodeHighlightingProps = useNodeHighlightingProps(filter);\r\n return {\r\n nodeLoader,\r\n modelSource: nodeLoader.modelSource,\r\n nodeHighlightingProps,\r\n };\r\n}\r\n\r\nfunction useFilteredProvider(\r\n dataProvider: ITreeDataProvider,\r\n filter: string,\r\n) {\r\n const filteredProvider = React.useMemo(() => {\r\n return new FilteredTreeDataProvider(dataProvider, filter);\r\n }, [dataProvider, filter]);\r\n\r\n const nodeLoader = React.useMemo(() => {\r\n return new TreeNodeLoader(filteredProvider, new TreeModelSource());\r\n }, [filteredProvider]);\r\n\r\n return nodeLoader;\r\n}\r\n\r\nfunction useNodeHighlightingProps(\r\n filter: string,\r\n) {\r\n const [nodeHighlightingProps, setNodeHighlightingProps] = React.useState<HighlightableTreeProps>();\r\n\r\n React.useEffect(() => {\r\n if (filter === \"\") {\r\n setNodeHighlightingProps(undefined);\r\n return;\r\n }\r\n setNodeHighlightingProps({\r\n searchText: filter,\r\n activeMatch: undefined,\r\n });\r\n }, [filter]);\r\n\r\n return nodeHighlightingProps;\r\n}\r\n\r\nclass FullTreeHierarchy {\r\n private _dataProvider: ITreeDataProvider;\r\n private _hierarchy = new Map<string | undefined, DelayLoadedTreeNodeItem[]>();\r\n private _init: Promise<void>;\r\n\r\n public constructor(dataProvider: ITreeDataProvider) {\r\n this._dataProvider = dataProvider;\r\n\r\n this._init = (async () => {\r\n await this.initNode();\r\n })();\r\n }\r\n\r\n private async initNode(parent?: TreeNodeItem) {\r\n const nodes = await this._dataProvider.getNodes(parent);\r\n this._hierarchy.set(parent?.id, nodes);\r\n for (const node of nodes) {\r\n await this.initNode(node);\r\n }\r\n }\r\n\r\n public async getHierarchy() {\r\n await this._init;\r\n return this._hierarchy;\r\n }\r\n}\r\n\r\nclass FilteredTreeHierarchy {\r\n private _fullHierarchy: FullTreeHierarchy;\r\n private _filter: string;\r\n private _filtered = new Map<string | undefined, DelayLoadedTreeNodeItem[]>();\r\n private _init: Promise<void>;\r\n\r\n public constructor(dataProvider: ITreeDataProvider, filter: string) {\r\n this._fullHierarchy = new FullTreeHierarchy(dataProvider);\r\n this._filter = filter;\r\n\r\n this._init = (async () => {\r\n await this.init();\r\n })();\r\n }\r\n\r\n private async init() {\r\n const hierarchy = await this._fullHierarchy.getHierarchy();\r\n if (this._filter === \"\") {\r\n this._filtered = hierarchy;\r\n return;\r\n }\r\n this.filterNodes(hierarchy);\r\n }\r\n\r\n /** Initializes `this._filtered` field. Returns a node if it matches a filter. */\r\n private filterNodes(hierarchy: Map<string | undefined, DelayLoadedTreeNodeItem[]>, current?: DelayLoadedTreeNodeItem): DelayLoadedTreeNodeItem | undefined {\r\n const matches = current ? this.matchesFilter(current) : false;\r\n const children = hierarchy.get(current?.id);\r\n if (!children)\r\n return matches ? current : undefined;\r\n\r\n const matchedChildren = new Array<DelayLoadedTreeNodeItem>();\r\n for (const child of children) {\r\n const matchedChild = this.filterNodes(hierarchy, child);\r\n matchedChild && matchedChildren.push(matchedChild);\r\n }\r\n\r\n const hasChildren = matchedChildren.length > 0;\r\n const included = matches || hasChildren;\r\n let filtered: DelayLoadedTreeNodeItem | undefined;\r\n if (included) {\r\n this._filtered.set(current?.id, matchedChildren);\r\n\r\n // Return a modified copy of current node (to persist initial hierarchy when filter is cleared).\r\n if (current) {\r\n filtered = {\r\n ...current,\r\n hasChildren,\r\n autoExpand: hasChildren ? true : current.autoExpand,\r\n };\r\n }\r\n }\r\n return filtered;\r\n }\r\n\r\n private matchesFilter(node: TreeNodeItem) {\r\n if (node.label.value.valueFormat !== PropertyValueFormat.Primitive)\r\n return false;\r\n\r\n const value = node.label.value.displayValue?.toLowerCase();\r\n if (!value)\r\n return false;\r\n return value.includes(this._filter.toLowerCase());\r\n }\r\n\r\n public async getHierarchy() {\r\n await this._init;\r\n return this._filtered;\r\n }\r\n}\r\n\r\nclass FilteredTreeDataProvider implements ITreeDataProvider {\r\n private _hierarchy: FilteredTreeHierarchy;\r\n\r\n public constructor(\r\n parentDataProvider: ITreeDataProvider,\r\n filter: string,\r\n ) {\r\n this._hierarchy = new FilteredTreeHierarchy(parentDataProvider, filter);\r\n }\r\n\r\n public async getNodes(parent?: TreeNodeItem) {\r\n const hierarchy = await this._hierarchy.getHierarchy();\r\n const nodes = hierarchy.get(parent?.id);\r\n return nodes || [];\r\n }\r\n\r\n public async getNodesCount(parent?: TreeNodeItem) {\r\n const hierarchy = await this._hierarchy.getHierarchy();\r\n const nodes = hierarchy.get(parent?.id);\r\n return nodes?.length || 0;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SubLayersTree.js","sourceRoot":"","sources":["../../../../src/ui/widget/SubLayersTree.tsx"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,0DAA4D;AAC5D,8DAMiC;AACjC,oDAAkG;AAClG,wDAAkG;AAClG,kDAAsH;AACtH,wDAAqD;AACrD,+BAA+B;AAE/B,mEAAgE;AAChE,gCAA8B;AAC9B,+CAA8C;AAE9C,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,QAAyC,EACzC,EAAE;IACF,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAkB,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,OAAiB,EAAE,EAAE;;QACpB,IAAI,CAAC,CAAA,MAAA,SAAS,EAAE,0CAAE,cAAc,CAAA,EAAE;YAChC,OAAO;SACR;QAED,MAAA,cAAc,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE;YACX,cAAc,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAChE,QAAQ,CAAC,WAAW,CAAC,CACtB,CAAC;YACF,MAAA,cAAc,CAAC,OAAO,0CAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAC1C;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAU,CAAC;AACvD,CAAC,CAAC;AAEF;;;GAGG;AACH,SAAS,iBAAiB;IACxB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAqB,EAAE,EAAE;QAC1E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC;AAOD,gEAAgE;AAChE,SAAS,OAAO,CAAC,KAAmB;IAClC,OAAO,CACL,6BAAK,SAAS,EAAC,mCAAmC;QAChD,6BAAK,SAAS,EAAC,6BAA6B,IACzC,KAAK,CAAC,QAAQ,CACX;QACL,KAAK,CAAC,WAAW,IAAI,6BAAK,SAAS,EAAC,wBAAwB,IAC1D,KAAK,CAAC,WAAW,CACd,CACF,CACP,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA6E;IAC9H,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC5H,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QACtF,OAAO,6BAAK,SAAS,EAAC,4BAA4B;YAChD,iCAAM,kBAAkB,CAAO,CAC3B,CAAC;KACR;IAED,OAAO,CACL,oBAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,GAAI,CACtC,CAAC;AACJ,CAAC;AAXD,wCAWC;AAED,SAAS,gBAAgB,CAAC,gBAAuC;IAC/D,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,wBAAwB,CAAC,QAA+B,EAAE,SAAkB,EAAE,UAAkB,EAAE,cAA+C;IACxJ,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAChF,aAAa,EAAE,IAAI;QACnB,SAAS;QACT,UAAU;QACV,QAAQ,EAAE,yBAAS,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QAC1E,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,gEAAgE;AAChE,SAAgB,aAAa,CAAC,KAA0C;;IACtE,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAChI,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC9G,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAChH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE7E,yDAAyD;IACzD,yEAAyE;IACzE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,6CAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1F,MAAM,EACJ,WAAW,EACX,UAAU,EACV,qBAAqB,GACtB,GAAG,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAEtD,qGAAqG;IACrG,+EAA+E;IAC/E,iHAAiH;IACjH,iGAAiG;IACjG,MAAM,YAAY,GAAG,IAAA,0BAAa,EAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvI,0GAA0G;IAC1G,oCAAoC;IACpC,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;QACtC,IAAI,YAAY,IAAI,EAAE,EAAE;YACtB,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpG,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9F,IAAI,eAAe,EAAE;gBACnB,IAAI,eAAe,YAAY,mCAAqB,EAAE;oBACpD,MAAM,cAAc,GAAG,EAAE,CAAC,+BAA+B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACnG,WAAW,CAAC,wBAAwB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;iBACjH;aAEF;SACF;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;QACtC,IAAI,YAAY,IAAI,EAAE,EAAE;YACtB,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACrG,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9F,IAAI,eAAe,IAAI,eAAe,YAAY,mCAAqB,EAAE;gBACvE,MAAM,cAAc,GAAG,EAAE,CAAC,+BAA+B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACnG,WAAW,CAAC,wBAAwB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;aACjH;YACD,EAAE,CAAC,oBAAoB,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAA0C,EAAE,EAAE;QAC/F,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEjE,OAAO;QACL,6BAAK,SAAS,EAAC,2BAA2B;YACxC,oBAAC,OAAO,IACN,WAAW,EACT,oBAAC,qBAAK,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,gCAAgC,EAC3D,WAAW,EAAE,gBAAgB,EAC7B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAC,OAAO,GAAG,IAGlB,CAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,uBAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,oBAAC,sBAAM,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAC,cAAc,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;oBAChG,oBAAC,wBAAW,IAAC,QAAQ,EAAC,iBAAiB,GAAG,CACnC;gBACT,oBAAC,sBAAM,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAC,cAAc,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO;oBACjG,oBAAC,wBAAW,IAAC,QAAQ,EAAC,wBAAwB,GAAG,CAC1C;aACV,CACO;YACV,6BAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,mCAAmC,IAClE,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,oBAAC,iCAAc,IAC7D,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,gCAAa,CAAC,IAAI,EACjC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,+BAA+B,EAC7C,qBAAqB,EAAE,qBAAqB,EAC5C,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACE,CACF,CACL,CAAC;AACN,CAAC;AApGD,sCAoGC;AAED,4FAA4F;AAC5F,MAAM,uBAAwB,SAAQ,mCAAgB;IAGpD,YAAoB,SAAgC,EAAE,UAAgE;QACpH,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,CAAC;QADjF,cAAS,GAAT,SAAS,CAAuB;QA2CpD,yEAAyE;QACzE,0BAA0B;QAC1B,0EAA0E;QAC1E,qEAAqE;QACrE,wEAAwE;QACxE,kEAAkE;QAClE,2EAA2E;QAC3E,kEAAkE;QAClE,kEAAkE;QAClE,gCAAgC;QACzB,mBAAc,GAAG,CAAC,IAAmC,EAAE,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1B,IAAI,CAAC,IAAI;wBACP,OAAO;oBAET,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QA7DA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;IAEe,OAAO;QACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,yEAAyE;IACzE,4BAA4B;IACpB,yBAAyB,CAAC,KAAuB,EAAE,QAAiB;QAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS;YACxB,OAAO;QAET,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/D,IAAI,SAAS;gBACX,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEjD,uBAAuB;YACvB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAChD;IACH,CAAC;IAEO,yBAAyB,CAAC,KAAuB,EAAE,MAAc;QACvE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,KAAK,MAAK,0BAAa,CAAC,GAAG;YACnD,OAAO;QAET,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,EAAE,MAAK,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAA;gBAC7B,SAAS;YAEX,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,0BAAa,CAAC,EAAE;gBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,0BAAa,CAAC,GAAG,CAAC;SAC3C;IACH,CAAC;IAwBO,MAAM,CAAC,cAAc,CAAC,QAAsC;QAClE,IAAI,CAAC,QAAQ;YACX,OAAO,KAAK,CAAC;QAEf,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,oEAAoE;IAC5D,uBAAuB,CAAC,KAAuB,EAAE,WAAiC;;QACxF,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,IAAI,CAAC,UAAU;YACb,OAAO;QAET,IAAI,CAAC,WAAW,CAAC,QAAQ;YACvB,OAAO,CAAC,sFAAsF;QAEhG,MAAM,aAAa,GAAG,SAAS,MAAK,MAAA,UAAU,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7I,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QAEnG,oDAAoD;QACpD,8GAA8G;QAC9G,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,KAAK,0BAAa,CAAC,GAAG,CAAC,EAAE;YACjJ,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,0BAAa,CAAC,GAAG,CAAC;SAChD;aAAM;YACL,sDAAsD;YACtD,MAAM,UAAU,GAAG,SAAS,MAAK,MAAA,WAAW,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,WAAW,CAAC,IAAI,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7I,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAC/F,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YACxC,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAC,CAAC,CAAC,0BAAa,CAAC,EAAE,CAAC,CAAC,CAAC,0BAAa,CAAC,GAAG,CAAC;SAC5F;IACH,CAAC;IAED,oFAAoF;IACpE,sBAAsB,CAAC,EAAE,YAAY,EAAoC;QACvF,8BAA8B;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAEpE,mGAAmG;QACnG,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC;YAC/C,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChB,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;gBAC9C,MAAM,YAAY,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC;gBACtC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;oBACzB,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,0BAAa,CAAC,EAAE,CAAC,CAAC;oBAE1D,MAAM,UAAU,GAAG,SAAS,MAAK,MAAA,MAAM,CAAC,QAAQ,CAAC,YAAY,0CAAE,UAAU,CAAA,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,QAAQ,CAAC,YAAY,0CAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAE1I,yCAAyC;oBACzC,IAAI,gBAA8C,CAAC;oBACnD,IAAI,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,0CAAE,uBAAuB,EAAE;wBACpD,gBAAgB,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;qBACjH;oBAED,wHAAwH;oBACxH,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBAC/F,IAAI,aAAa;wBACf,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;oBACrC,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO;wBAC3B,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;oBAEnC,4BAA4B;oBAC5B,IAAI,CAAC,CAAC,KAAK,mBAAmB,IAAI,YAAY,EAAE;wBAC9C,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,EAAE,KAAK,SAAS;4BACvD,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAC9H,YAAY,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;qBACzH;oBAED,gBAAgB;oBAChB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;;wBACrC,IAAI,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,0CAAE,uBAAuB;4BAClD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC5D,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,EAAE;oBACJ,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QACH,8DAA8D;QAC9D,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,CAC9D,oBAAC,0BAAa,IACZ,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,iBAAiB,EACzB,QAAQ,EAAC,wBAAwB,EACjC,OAAO,EAAE,KAAK,CAAC,QAAQ,EACvB,OAAO,EAAE,KAAK,CAAC,KAAK,GACpB,CACH,CAAC;AAEF,oIAAoI;AACpI,MAAM,WAAW,GAAG,IAAI,kCAAe,EAAE,CAAC;AAC1C,MAAM,2BAA2B,GAAG,CAAC,KAA4B,EAAE,EAAE,CAAC,CACpE,oBAAC,mCAAgB,OACX,KAAK,EACT,gBAAgB,EAAE,mBAAmB,EACrC,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;AAEF,mIAAmI;AACnI,MAAM,+BAA+B,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CACpE,oBAAC,+BAAY,OACP,KAAK,EACT,YAAY,EAAE,2BAA2B,GACzC,CACH,CAAC;AAEF,SAAS,gBAAgB,CACvB,YAA+B,EAC/B,MAAc;IAEd,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO;QACL,UAAU;QACV,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAA+B,EAC/B,MAAc;IAEd,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,IAAI,wBAAwB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,IAAI,iCAAc,CAAC,gBAAgB,EAAE,IAAI,kCAAe,EAAE,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAAc;IAEd,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAA0B,CAAC;IAEnG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;SACR;QACD,wBAAwB,CAAC;YACvB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,iBAAiB;IAKrB,YAAmB,YAA+B;QAH1C,eAAU,GAAG,IAAI,GAAG,EAAiD,CAAC;QAI5E,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAqB;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,qBAAqB;IAMzB,YAAmB,YAA+B,EAAE,MAAc;QAH1D,cAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;QAI3E,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,iFAAiF;IACzE,WAAW,CAAC,SAA6D,EAAE,OAAiC;QAClH,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YACX,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvC,MAAM,eAAe,GAAG,IAAI,KAAK,EAA2B,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACxD,YAAY,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,WAAW,CAAC;QACxC,IAAI,QAA6C,CAAC;QAClD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE,eAAe,CAAC,CAAC;YAEjD,gGAAgG;YAChG,IAAI,OAAO,EAAE;gBACX,QAAQ,GAAG;oBACT,GAAG,OAAO;oBACV,WAAW;oBACX,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU;iBACpD,CAAC;aACH;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,aAAa,CAAC,IAAkB;;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;YAChE,OAAO,KAAK,CAAC;QAEf,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,0CAAE,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK;YACR,OAAO,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,MAAM,wBAAwB;IAG5B,YACE,kBAAqC,EACrC,MAAc;QAEd,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAAqB;QACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,IAAI,EAAE,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAqB;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,KAAI,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport {\r\n AbstractTreeNodeLoaderWithProvider, ControlledTree, DelayLoadedTreeNodeItem, HighlightableTreeProps, ITreeDataProvider,\r\n MutableTreeModel,\r\n MutableTreeModelNode,\r\n SelectionMode, TreeCheckboxStateChangeEventArgs, TreeDataProvider, TreeEventHandler, TreeImageLoader, TreeModel, TreeModelChanges, TreeModelSource, TreeNodeItem, TreeNodeLoader,\r\n TreeNodeRenderer, TreeNodeRendererProps, TreeRenderer, TreeRendererProps, useTreeModel,\r\n} from \"@itwin/components-react\";\r\nimport { ImageMapLayerSettings, MapSubLayerProps, MapSubLayerSettings } from \"@itwin/core-common\";\r\nimport { IModelApp, MapTileTreeScaleRangeVisibility, ScreenViewport } from \"@itwin/core-frontend\";\r\nimport { CheckBoxState, ImageCheckBox, NodeCheckboxRenderProps, useDisposable, WebFontIcon } from \"@itwin/core-react\";\r\nimport { Button, Input } from \"@itwin/itwinui-react\";\r\nimport * as React from \"react\";\r\nimport { StyleMapLayerSettings } from \"../Interfaces\";\r\nimport { SubLayersDataProvider } from \"./SubLayersDataProvider\";\r\nimport \"./SubLayersTree.scss\";\r\nimport { MapLayersUI } from \"../../mapLayers\";\r\n\r\nconst getWindow = () => {\r\n return typeof window === \"undefined\" ? undefined : window;\r\n};\r\n\r\nconst useResizeObserver = <T extends HTMLElement>(\r\n onResize: (size: DOMRectReadOnly) => void,\r\n) => {\r\n const resizeObserver = React.useRef<ResizeObserver>();\r\n\r\n const elementRef = React.useCallback(\r\n (element: T | null) => {\r\n if (!getWindow()?.ResizeObserver) {\r\n return;\r\n }\r\n\r\n resizeObserver.current?.disconnect();\r\n if (element) {\r\n resizeObserver.current = new ResizeObserver(([{ contentRect }]) =>\r\n onResize(contentRect),\r\n );\r\n resizeObserver.current?.observe(element);\r\n }\r\n },\r\n [onResize],\r\n );\r\n\r\n return [elementRef, resizeObserver.current] as const;\r\n};\r\n\r\n/**\r\n Mimic processing of `react-resize-detector` to return width and height.\r\n* @internal\r\n */\r\nfunction useResizeDetector(): { width: number | undefined, height: number | undefined, ref: React.Ref<HTMLDivElement> } {\r\n const [width, setWidth] = React.useState<number>();\r\n const [height, setHeight] = React.useState<number>();\r\n const [ref] = useResizeObserver(React.useCallback((size: DOMRectReadOnly) => {\r\n setWidth(size.width);\r\n setHeight(size.height);\r\n }, []));\r\n return { width, height, ref };\r\n}\r\n\r\ninterface ToolbarProps {\r\n searchField?: React.ReactNode;\r\n children?: React.ReactNode[];\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nfunction Toolbar(props: ToolbarProps) {\r\n return (\r\n <div className=\"map-manager-sublayer-tree-toolbar\">\r\n <div className=\"tree-toolbar-action-buttons\">\r\n {props.children}\r\n </div>\r\n {props.searchField && <div className=\"tree-toolbar-searchbox\">\r\n {props.searchField}\r\n </div>}\r\n </div>\r\n );\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SubLayersPanel({ mapLayer, viewport }: { mapLayer: StyleMapLayerSettings, viewport: ScreenViewport | undefined }) {\r\n const [noneAvailableLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.NoSubLayers\"));\r\n if (!viewport || (undefined === mapLayer.subLayers || 0 === mapLayer.subLayers.length)) {\r\n return <div className=\"map-manager-sublayer-panel\">\r\n <div>{noneAvailableLabel}</div>\r\n </div>;\r\n }\r\n\r\n return (\r\n <SubLayersTree mapLayer={mapLayer} />\r\n );\r\n}\r\n\r\nfunction getSubLayerProps(subLayerSettings: MapSubLayerSettings[]): MapSubLayerProps[] {\r\n return subLayerSettings.map((subLayer) => subLayer.toJSON());\r\n}\r\n\r\nfunction getStyleMapLayerSettings(settings: ImageMapLayerSettings, isOverlay: boolean, layerIndex: number, treeVisibility: MapTileTreeScaleRangeVisibility): StyleMapLayerSettings {\r\n return {\r\n visible: settings.visible,\r\n name: settings.name,\r\n source: settings.source,\r\n transparency: settings.transparency,\r\n transparentBackground: settings.transparentBackground,\r\n subLayers: settings.subLayers ? getSubLayerProps(settings.subLayers) : undefined,\r\n showSubLayers: true,\r\n isOverlay,\r\n layerIndex,\r\n provider: IModelApp.mapLayerFormatRegistry.createImageryProvider(settings),\r\n treeVisibility,\r\n };\r\n}\r\n\r\n/**\r\n * Tree Control that displays sub-layer hierarchy\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SubLayersTree(props: { mapLayer: StyleMapLayerSettings }) {\r\n const [placeholderLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.SearchPlaceholder\"));\r\n const [allOnLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.AllOn\"));\r\n const [allOffLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:SubLayers.AllOff\"));\r\n const [mapLayer, setMapLayer] = React.useState(props.mapLayer);\r\n const [layerFilterString, setLayerFilterString] = React.useState<string>(\"\");\r\n\r\n // create data provider to get some nodes to show in tree\r\n // `React.useMemo' is used avoid creating new object on each render cycle\r\n const dataProvider = React.useMemo(() => new SubLayersDataProvider(mapLayer), [mapLayer]);\r\n\r\n const {\r\n modelSource,\r\n nodeLoader,\r\n nodeHighlightingProps,\r\n } = useTreeFiltering(dataProvider, layerFilterString);\r\n\r\n // create custom event handler. It handles all tree event same as `TreeEventHandler` but additionally\r\n // it selects/deselects node when checkbox is checked/unchecked and vice versa.\r\n // `useDisposable` takes care of disposing old event handler when new is created in case 'nodeLoader' has changed\r\n // `React.useCallback` is used to avoid creating new callback that creates handler on each render\r\n const eventHandler = useDisposable(React.useCallback(() => new SubLayerCheckboxHandler(mapLayer, nodeLoader), [nodeLoader, mapLayer]));\r\n\r\n // Get an immutable tree model from the model source. The model is regenerated every time the model source\r\n // emits the `onModelChanged` event.\r\n const treeModel = useTreeModel(modelSource);\r\n\r\n const showAll = React.useCallback(async () => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n if (displayStyle && vp) {\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(mapLayer.name, mapLayer.source, mapLayer.isOverlay) : -1;\r\n displayStyle.changeMapSubLayerProps({ visible: true }, -1, indexInDisplayStyle, mapLayer.isOverlay);\r\n vp.invalidateRenderPlan();\r\n const updatedMapLayer = displayStyle.mapLayerAtIndex(indexInDisplayStyle, mapLayer.isOverlay);\r\n if (updatedMapLayer) {\r\n if (updatedMapLayer instanceof ImageMapLayerSettings) {\r\n const treeVisibility = vp.getMapLayerScaleRangeVisibility(indexInDisplayStyle, mapLayer.isOverlay);\r\n setMapLayer(getStyleMapLayerSettings(updatedMapLayer, mapLayer.isOverlay, indexInDisplayStyle, treeVisibility));\r\n }\r\n\r\n }\r\n }\r\n }, [mapLayer]);\r\n\r\n const hideAll = React.useCallback(async () => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n if (displayStyle && vp) {\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(mapLayer.name, mapLayer.source, mapLayer.isOverlay) : -1;\r\n displayStyle.changeMapSubLayerProps({ visible: false }, -1, indexInDisplayStyle, mapLayer.isOverlay);\r\n const updatedMapLayer = displayStyle.mapLayerAtIndex(indexInDisplayStyle, mapLayer.isOverlay);\r\n if (updatedMapLayer && updatedMapLayer instanceof ImageMapLayerSettings) {\r\n const treeVisibility = vp.getMapLayerScaleRangeVisibility(indexInDisplayStyle, mapLayer.isOverlay);\r\n setMapLayer(getStyleMapLayerSettings(updatedMapLayer, mapLayer.isOverlay, indexInDisplayStyle, treeVisibility));\r\n }\r\n vp.invalidateRenderPlan();\r\n }\r\n }, [mapLayer]);\r\n\r\n const handleFilterTextChanged = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n setLayerFilterString(event.target.value);\r\n }, []);\r\n\r\n const { width, height, ref: containerRef } = useResizeDetector();\r\n\r\n return <>\r\n <div className=\"map-manager-sublayer-tree\">\r\n <Toolbar\r\n searchField={\r\n <Input type=\"text\" className=\"map-manager-source-list-filter\"\r\n placeholder={placeholderLabel}\r\n value={layerFilterString}\r\n onChange={handleFilterTextChanged}\r\n size=\"small\" />\r\n }\r\n >\r\n {mapLayer.provider?.mutualExclusiveSubLayer ? undefined : [\r\n <Button size=\"small\" styleType=\"borderless\" key=\"show-all-btn\" title={allOnLabel} onClick={showAll}>\r\n <WebFontIcon iconName=\"icon-visibility\" />\r\n </Button>,\r\n <Button size=\"small\" styleType=\"borderless\" key=\"hide-all-btn\" title={allOffLabel} onClick={hideAll}>\r\n <WebFontIcon iconName=\"icon-visibility-hide-2\" />\r\n </Button>,\r\n ]}\r\n </Toolbar>\r\n <div ref={containerRef} className=\"map-manager-sublayer-tree-content\">\r\n {width !== undefined && height !== undefined && <ControlledTree\r\n nodeLoader={nodeLoader}\r\n selectionMode={SelectionMode.None}\r\n eventsHandler={eventHandler}\r\n model={treeModel}\r\n treeRenderer={nodeWithEyeCheckboxTreeRenderer}\r\n nodeHighlightingProps={nodeHighlightingProps}\r\n width={width}\r\n height={height}\r\n />}\r\n </div>\r\n </div>\r\n </>;\r\n}\r\n\r\n/** TreeEventHandler derived class that handler processing changes to subLayer visibility */\r\nclass SubLayerCheckboxHandler extends TreeEventHandler {\r\n private _removeModelChangedListener: () => void;\r\n\r\n constructor(private _mapLayer: StyleMapLayerSettings, nodeLoader: AbstractTreeNodeLoaderWithProvider<TreeDataProvider>) {\r\n super({ modelSource: nodeLoader.modelSource, nodeLoader, collapsedChildrenDisposalEnabled: true });\r\n this._removeModelChangedListener = this.modelSource.onModelChanged.addListener(this.onModelChanged);\r\n }\r\n\r\n public override dispose() {\r\n this._removeModelChangedListener();\r\n super.dispose();\r\n }\r\n\r\n // Cascade state\r\n // Children on unnamed groups must get disabled in the tree view, because\r\n // they get rendered anyway.\r\n private cascadeStateToAllChildren(model: MutableTreeModel, parentId?: string) {\r\n const children = model.getChildren(parentId);\r\n if (children === undefined)\r\n return;\r\n\r\n for (const childID of children) {\r\n const childNode = childID ? model.getNode(childID) : undefined;\r\n\r\n if (childNode)\r\n this.syncNodeStateWithParent(model, childNode);\r\n\r\n // Drill down the tree.\r\n this.cascadeStateToAllChildren(model, childID);\r\n }\r\n }\r\n\r\n private applyMutualExclusiveState(model: MutableTreeModel, nodeId: string) {\r\n const changedNode = model.getNode(nodeId);\r\n if (changedNode?.checkbox.state === CheckBoxState.Off)\r\n return;\r\n\r\n for (const node of model.iterateTreeModelNodes()) {\r\n if (node.id === changedNode?.id)\r\n continue;\r\n\r\n if (node && node.checkbox.state === CheckBoxState.On)\r\n node.checkbox.state = CheckBoxState.Off;\r\n }\r\n }\r\n\r\n //-----------------------------------------------------------------------\r\n // Listen to model changes\r\n //------------------------------------------------------------------------\r\n // This is required because nodes are delay loaded in the model until\r\n // they are made visible (i.e. parent node is expanded). So even though\r\n // you might have created nodes in the data provided with a proper\r\n // initial state, by the time it gets loaded, their state might have became\r\n // out of date in the TreeView's active model. So whenever a node\r\n // is added, when must confirm its state matches the current model\r\n // (i.e. state of their parent.)\r\n public onModelChanged = (args: [TreeModel, TreeModelChanges]) => {\r\n this.modelSource.modifyModel((model) => {\r\n const addedNodes = args[1].addedNodeIds.map((id) => model.getNode(id));\r\n addedNodes.forEach((node) => {\r\n if (!node)\r\n return;\r\n\r\n this.syncNodeStateWithParent(model, node);\r\n });\r\n });\r\n };\r\n\r\n private static isUnnamedGroup(subLayer: MapSubLayerProps | undefined): boolean {\r\n if (!subLayer)\r\n return false;\r\n\r\n return (!subLayer.name || subLayer.name.length === 0) && (subLayer.children !== undefined && subLayer.children.length > 0);\r\n }\r\n\r\n // Ensure the state of changed node matches the state of its parent.\r\n private syncNodeStateWithParent(model: MutableTreeModel, changedNode: MutableTreeModelNode) {\r\n // Lookup node parent. If non exists, I assume thats the root node,\r\n // and it must have a proper initial state.\r\n const parentNode = changedNode.parentId ? model.getNode(changedNode.parentId) : undefined;\r\n if (!parentNode)\r\n return;\r\n\r\n if (!changedNode.checkbox)\r\n return; // don't see why this would happen, but if there is no checkbox, we cant do much here.\r\n\r\n const parentLayerId = undefined !== parentNode.item.extendedData?.subLayerId ? parentNode.item.extendedData?.subLayerId : parentNode.item.id;\r\n const parentSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === parentLayerId);\r\n\r\n // If parent is disabled, then children must be too.\r\n // Also, Non-visible unnamed group must have their children disabled (unamed groups have visibility inherence)\r\n if (parentNode.checkbox.isDisabled || (SubLayerCheckboxHandler.isUnnamedGroup(parentSubLayer) && parentNode.checkbox.state === CheckBoxState.Off)) {\r\n changedNode.checkbox.isDisabled = true;\r\n changedNode.checkbox.state = CheckBoxState.Off;\r\n } else {\r\n // Visibility state from StyleMapLayerSettings applies\r\n const subLayerId = undefined !== changedNode.item.extendedData?.subLayerId ? changedNode.item.extendedData?.subLayerId : changedNode.item.id;\r\n const foundSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === subLayerId);\r\n changedNode.checkbox.isDisabled = false;\r\n changedNode.checkbox.state = foundSubLayer?.visible ? CheckBoxState.On : CheckBoxState.Off;\r\n }\r\n }\r\n\r\n /** Changes nodes checkboxes states until event is handled or handler is disposed */\r\n public override onCheckboxStateChanged({ stateChanges }: TreeCheckboxStateChangeEventArgs) {\r\n // call base checkbox handling\r\n const baseHandling = super.onCheckboxStateChanged({ stateChanges });\r\n\r\n // subscribe to checkbox state changes to new checkbox states and do some additional work with them\r\n const selectionHandling = stateChanges.subscribe({\r\n next: (changes) => {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const displayStyle = vp?.displayStyle;\r\n const indexInDisplayStyle = displayStyle ? displayStyle.findMapLayerIndexByNameAndSource(this._mapLayer.name, this._mapLayer.source, this._mapLayer.isOverlay) : -1;\r\n changes.forEach((change) => {\r\n const isSelected = (change.newState === CheckBoxState.On);\r\n\r\n const subLayerId = undefined !== change.nodeItem.extendedData?.subLayerId ? change.nodeItem.extendedData?.subLayerId : change.nodeItem.id;\r\n\r\n // Get the previously visible node if any\r\n let prevVisibleLayer: MapSubLayerProps | undefined;\r\n if (this._mapLayer.provider?.mutualExclusiveSubLayer) {\r\n prevVisibleLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.visible && subLayer.id !== subLayerId);\r\n }\r\n\r\n // Update sublayer object, otherwise state would get out of sync with DisplayStyle each time the TreeView is re-rendered\r\n const foundSubLayer = this._mapLayer.subLayers?.find((subLayer) => subLayer.id === subLayerId);\r\n if (foundSubLayer)\r\n foundSubLayer.visible = isSelected;\r\n if (prevVisibleLayer?.visible)\r\n prevVisibleLayer.visible = false;\r\n\r\n // Update displaystyle state\r\n if (-1 !== indexInDisplayStyle && displayStyle) {\r\n if (prevVisibleLayer && prevVisibleLayer.id !== undefined)\r\n displayStyle.changeMapSubLayerProps({ visible: false }, prevVisibleLayer.id, indexInDisplayStyle, this._mapLayer.isOverlay);\r\n displayStyle.changeMapSubLayerProps({ visible: isSelected }, subLayerId, indexInDisplayStyle, this._mapLayer.isOverlay);\r\n }\r\n\r\n // Cascade state\r\n this.modelSource.modifyModel((model) => {\r\n if (this._mapLayer.provider?.mutualExclusiveSubLayer)\r\n this.applyMutualExclusiveState(model, change.nodeItem.id);\r\n this.cascadeStateToAllChildren(model, change.nodeItem.id);\r\n });\r\n });\r\n\r\n if (vp)\r\n vp.invalidateRenderPlan();\r\n },\r\n });\r\n // stop handling selection when checkboxes handling is stopped\r\n baseHandling?.add(selectionHandling);\r\n return baseHandling;\r\n }\r\n}\r\n\r\n/** Custom checkbox renderer that renders checkbox as an eye */\r\nconst eyeCheckboxRenderer = (props: NodeCheckboxRenderProps) => (\r\n <ImageCheckBox\r\n checked={props.checked}\r\n disabled={props.disabled}\r\n imageOn=\"icon-visibility\"\r\n imageOff=\"icon-visibility-hide-2\"\r\n onClick={props.onChange}\r\n tooltip={props.title}\r\n />\r\n);\r\n\r\n/** Custom node renderer. It uses default 'TreeNodeRenderer' but overrides default checkbox renderer to render checkbox as an eye */\r\nconst imageLoader = new TreeImageLoader();\r\nconst nodeWithEyeCheckboxRenderer = (props: TreeNodeRendererProps) => (\r\n <TreeNodeRenderer\r\n {...props}\r\n checkboxRenderer={eyeCheckboxRenderer}\r\n imageLoader={imageLoader}\r\n />\r\n);\r\n\r\n/** Custom tree renderer. It uses default `TreeRenderer` but overrides default node renderer to render node with custom checkbox */\r\nconst nodeWithEyeCheckboxTreeRenderer = (props: TreeRendererProps) => (\r\n <TreeRenderer\r\n {...props}\r\n nodeRenderer={nodeWithEyeCheckboxRenderer}\r\n />\r\n);\r\n\r\nfunction useTreeFiltering(\r\n dataProvider: ITreeDataProvider,\r\n filter: string,\r\n) {\r\n const nodeLoader = useFilteredProvider(dataProvider, filter);\r\n const nodeHighlightingProps = useNodeHighlightingProps(filter);\r\n return {\r\n nodeLoader,\r\n modelSource: nodeLoader.modelSource,\r\n nodeHighlightingProps,\r\n };\r\n}\r\n\r\nfunction useFilteredProvider(\r\n dataProvider: ITreeDataProvider,\r\n filter: string,\r\n) {\r\n const filteredProvider = React.useMemo(() => {\r\n return new FilteredTreeDataProvider(dataProvider, filter);\r\n }, [dataProvider, filter]);\r\n\r\n const nodeLoader = React.useMemo(() => {\r\n return new TreeNodeLoader(filteredProvider, new TreeModelSource());\r\n }, [filteredProvider]);\r\n\r\n return nodeLoader;\r\n}\r\n\r\nfunction useNodeHighlightingProps(\r\n filter: string,\r\n) {\r\n const [nodeHighlightingProps, setNodeHighlightingProps] = React.useState<HighlightableTreeProps>();\r\n\r\n React.useEffect(() => {\r\n if (filter === \"\") {\r\n setNodeHighlightingProps(undefined);\r\n return;\r\n }\r\n setNodeHighlightingProps({\r\n searchText: filter,\r\n activeMatch: undefined,\r\n });\r\n }, [filter]);\r\n\r\n return nodeHighlightingProps;\r\n}\r\n\r\nclass FullTreeHierarchy {\r\n private _dataProvider: ITreeDataProvider;\r\n private _hierarchy = new Map<string | undefined, DelayLoadedTreeNodeItem[]>();\r\n private _init: Promise<void>;\r\n\r\n public constructor(dataProvider: ITreeDataProvider) {\r\n this._dataProvider = dataProvider;\r\n\r\n this._init = (async () => {\r\n await this.initNode();\r\n })();\r\n }\r\n\r\n private async initNode(parent?: TreeNodeItem) {\r\n const nodes = await this._dataProvider.getNodes(parent);\r\n this._hierarchy.set(parent?.id, nodes);\r\n for (const node of nodes) {\r\n await this.initNode(node);\r\n }\r\n }\r\n\r\n public async getHierarchy() {\r\n await this._init;\r\n return this._hierarchy;\r\n }\r\n}\r\n\r\nclass FilteredTreeHierarchy {\r\n private _fullHierarchy: FullTreeHierarchy;\r\n private _filter: string;\r\n private _filtered = new Map<string | undefined, DelayLoadedTreeNodeItem[]>();\r\n private _init: Promise<void>;\r\n\r\n public constructor(dataProvider: ITreeDataProvider, filter: string) {\r\n this._fullHierarchy = new FullTreeHierarchy(dataProvider);\r\n this._filter = filter;\r\n\r\n this._init = (async () => {\r\n await this.init();\r\n })();\r\n }\r\n\r\n private async init() {\r\n const hierarchy = await this._fullHierarchy.getHierarchy();\r\n if (this._filter === \"\") {\r\n this._filtered = hierarchy;\r\n return;\r\n }\r\n this.filterNodes(hierarchy);\r\n }\r\n\r\n /** Initializes `this._filtered` field. Returns a node if it matches a filter. */\r\n private filterNodes(hierarchy: Map<string | undefined, DelayLoadedTreeNodeItem[]>, current?: DelayLoadedTreeNodeItem): DelayLoadedTreeNodeItem | undefined {\r\n const matches = current ? this.matchesFilter(current) : false;\r\n const children = hierarchy.get(current?.id);\r\n if (!children)\r\n return matches ? current : undefined;\r\n\r\n const matchedChildren = new Array<DelayLoadedTreeNodeItem>();\r\n for (const child of children) {\r\n const matchedChild = this.filterNodes(hierarchy, child);\r\n matchedChild && matchedChildren.push(matchedChild);\r\n }\r\n\r\n const hasChildren = matchedChildren.length > 0;\r\n const included = matches || hasChildren;\r\n let filtered: DelayLoadedTreeNodeItem | undefined;\r\n if (included) {\r\n this._filtered.set(current?.id, matchedChildren);\r\n\r\n // Return a modified copy of current node (to persist initial hierarchy when filter is cleared).\r\n if (current) {\r\n filtered = {\r\n ...current,\r\n hasChildren,\r\n autoExpand: hasChildren ? true : current.autoExpand,\r\n };\r\n }\r\n }\r\n return filtered;\r\n }\r\n\r\n private matchesFilter(node: TreeNodeItem) {\r\n if (node.label.value.valueFormat !== PropertyValueFormat.Primitive)\r\n return false;\r\n\r\n const value = node.label.value.displayValue?.toLowerCase();\r\n if (!value)\r\n return false;\r\n return value.includes(this._filter.toLowerCase());\r\n }\r\n\r\n public async getHierarchy() {\r\n await this._init;\r\n return this._filtered;\r\n }\r\n}\r\n\r\nclass FilteredTreeDataProvider implements ITreeDataProvider {\r\n private _hierarchy: FilteredTreeHierarchy;\r\n\r\n public constructor(\r\n parentDataProvider: ITreeDataProvider,\r\n filter: string,\r\n ) {\r\n this._hierarchy = new FilteredTreeHierarchy(parentDataProvider, filter);\r\n }\r\n\r\n public async getNodes(parent?: TreeNodeItem) {\r\n const hierarchy = await this._hierarchy.getHierarchy();\r\n const nodes = hierarchy.get(parent?.id);\r\n return nodes || [];\r\n }\r\n\r\n public async getNodesCount(parent?: TreeNodeItem) {\r\n const hierarchy = await this._hierarchy.getHierarchy();\r\n const nodes = hierarchy.get(parent?.id);\r\n return nodes?.length || 0;\r\n }\r\n}\r\n"]}
@@ -34,20 +34,20 @@ export class MapLayersUI {
34
34
  const mlProvider = new MapLayersUiItemsProvider({ ...MapLayersUI._mapLayerOptions });
35
35
  const mlProviderId = (_b = (_a = config === null || config === void 0 ? void 0 : config.mapLayerProviderOverrides) === null || _a === void 0 ? void 0 : _a.providerId) !== null && _b !== void 0 ? _b : mlProvider.id;
36
36
  MapLayersUI._uiItemsProvidersId.push(mlProviderId);
37
- UiItemsManager.register(mlProvider, config === null || config === void 0 ? void 0 : config.mapLayerProviderOverrides);
37
+ UiItemsManager.register(mlProvider, config === null || config === void 0 ? void 0 : config.mapLayerProviderOverrides); // eslint-disable-line deprecation/deprecation
38
38
  // Register the FeatureInfo widget only if MapHit was provided.
39
39
  if ((_c = MapLayersUI._featureInfoOpts) === null || _c === void 0 ? void 0 : _c.onMapHit) {
40
40
  const fiProvider = new FeatureInfoUiItemsProvider({ ...MapLayersUI._featureInfoOpts });
41
41
  const fiProviderId = (_e = (_d = config === null || config === void 0 ? void 0 : config.featureInfoProviderOverrides) === null || _d === void 0 ? void 0 : _d.providerId) !== null && _e !== void 0 ? _e : fiProvider.id;
42
42
  MapLayersUI._uiItemsProvidersId.push(fiProviderId);
43
- UiItemsManager.register(fiProvider, config === null || config === void 0 ? void 0 : config.featureInfoProviderOverrides);
43
+ UiItemsManager.register(fiProvider, config === null || config === void 0 ? void 0 : config.featureInfoProviderOverrides); // eslint-disable-line deprecation/deprecation
44
44
  }
45
45
  }
46
46
  /** Unregisters internationalization service namespace and UiItemManager */
47
47
  static terminate() {
48
48
  IModelApp.localization.unregisterNamespace(MapLayersUI.localizationNamespace);
49
49
  MapLayersUI._uiItemsProvidersId.forEach((uiProviderId) => {
50
- UiItemsManager.unregister(uiProviderId);
50
+ UiItemsManager.unregister(uiProviderId); // eslint-disable-line deprecation/deprecation
51
51
  });
52
52
  }
53
53
  /** The internationalization service namespace. */
@@ -1 +1 @@
1
- {"version":3,"file":"mapLayers.js","sourceRoot":"","sources":["../../src/mapLayers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAA2B,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAiB7E;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAQf,MAAM,KAAK,WAAW;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,wCAAwC;IACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAwB;;QACrD,mEAAmE;QACnE,WAAW,CAAC,YAAY,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,SAAS,CAAC,YAAY,CAAC;QAC1E,MAAM,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAC9C,WAAW,CAAC,qBAAqB,CAClC,CAAC;QAEF,WAAW,CAAC,YAAY,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC;QAC/C,WAAW,CAAC,gBAAgB,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;QACvD,WAAW,CAAC,gBAAgB,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;QAEvD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,0BAA0B,CAAA;YACrC,WAAW,CAAC,wBAAwB,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,wBAAwB,CAAC,MAAkC;;QACvE,MAAM,UAAU,GAAG,IAAI,wBAAwB,CAAC,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,yBAAyB,0CAAE,UAAU,mCAAI,UAAU,CAAC,EAAE,CAAC;QACpF,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,yBAAyB,CAAC,CAAC;QAEvE,+DAA+D;QAC/D,IAAI,MAAA,WAAW,CAAC,gBAAgB,0CAAE,QAAQ,EAAE;YAC1C,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,4BAA4B,0CAAE,UAAU,mCAAI,UAAU,CAAC,EAAE,CAAC;YACvF,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,4BAA4B,CAAC,CAAC;SAC5E;IACH,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,SAAS;QACrB,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAE9E,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACvD,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,WAAW,CAAC,UAAU,CAAC;IAChC,CAAC;;AA3Dc,sBAAU,GAAG,WAAW,CAAC;AAEzB,+BAAmB,GAAa,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Localization } from \"@itwin/core-common\";\r\nimport { IModelApp, UserPreferencesAccess } from \"@itwin/core-frontend\";\r\nimport { MapLayersUiItemsProvider } from \"./ui/MapLayersUiItemsProvider\";\r\nimport { UiItemProviderOverrides, UiItemsManager } from \"@itwin/appui-abstract\";\r\nimport { FeatureInfoUiItemsProvider } from \"./ui/FeatureInfoUiItemsProvider\";\r\nimport { MapFeatureInfoOptions, MapLayerOptions } from \"./ui/Interfaces\";\r\n\r\nexport interface MapLayersConfig {\r\n localization?: Localization;\r\n /** If an iTwinConfig is provided, it will be used to load the MapLayerSources that are stored. */\r\n iTwinConfig?: UserPreferencesAccess;\r\n mapLayerOptions?: MapLayerOptions;\r\n featureInfoOpts?: MapFeatureInfoOptions;\r\n delayItemsProviderRegister?: boolean;\r\n}\r\n/** Configuration for registering UiItemsProviders for the MapLayers package */\r\nexport interface MapLayersUiProviderConfig {\r\n mapLayerProviderOverrides?: UiItemProviderOverrides;\r\n featureInfoProviderOverrides?: UiItemProviderOverrides;\r\n}\r\n\r\n/** MapLayersUI is use when the package is used as a dependency to another app.\r\n * '''ts\r\n * await MapLayersUI.initialize({...MapLayersInitProps});\r\n * '''\r\n * @beta\r\n */\r\nexport class MapLayersUI {\r\n private static _defaultNs = \"mapLayers\";\r\n public static localization: Localization;\r\n private static _uiItemsProvidersId: string[] = [];\r\n private static _iTwinConfig?: UserPreferencesAccess;\r\n private static _featureInfoOpts?: MapFeatureInfoOptions;\r\n private static _mapLayerOptions?: MapLayerOptions;\r\n\r\n public static get iTwinConfig(): UserPreferencesAccess | undefined {\r\n return this._iTwinConfig;\r\n }\r\n\r\n /** Used to initialize the Map Layers */\r\n public static async initialize(config?: MapLayersConfig): Promise<void> {\r\n // register namespace containing localized strings for this package\r\n MapLayersUI.localization = config?.localization ?? IModelApp.localization;\r\n await MapLayersUI.localization.registerNamespace(\r\n MapLayersUI.localizationNamespace\r\n );\r\n\r\n MapLayersUI._iTwinConfig = config?.iTwinConfig;\r\n MapLayersUI._featureInfoOpts = config?.featureInfoOpts;\r\n MapLayersUI._mapLayerOptions = config?.mapLayerOptions;\r\n\r\n if (!config?.delayItemsProviderRegister)\r\n MapLayersUI.registerUiItemsProviders();\r\n }\r\n\r\n /** Registers the UiItemsProviders for MapLayers with optional overrides\r\n * This is useful for an app that wants to defer UiItemsProvider registration so that it\r\n * may limit the MapLayers widgets to a specific workflow\r\n * @beta\r\n */\r\n public static registerUiItemsProviders(config?: MapLayersUiProviderConfig) {\r\n const mlProvider = new MapLayersUiItemsProvider({ ...MapLayersUI._mapLayerOptions });\r\n const mlProviderId = config?.mapLayerProviderOverrides?.providerId ?? mlProvider.id;\r\n MapLayersUI._uiItemsProvidersId.push(mlProviderId);\r\n UiItemsManager.register(mlProvider, config?.mapLayerProviderOverrides);\r\n\r\n // Register the FeatureInfo widget only if MapHit was provided.\r\n if (MapLayersUI._featureInfoOpts?.onMapHit) {\r\n const fiProvider = new FeatureInfoUiItemsProvider({ ...MapLayersUI._featureInfoOpts });\r\n const fiProviderId = config?.featureInfoProviderOverrides?.providerId ?? fiProvider.id;\r\n MapLayersUI._uiItemsProvidersId.push(fiProviderId);\r\n UiItemsManager.register(fiProvider, config?.featureInfoProviderOverrides);\r\n }\r\n }\r\n\r\n /** Unregisters internationalization service namespace and UiItemManager */\r\n public static terminate() {\r\n IModelApp.localization.unregisterNamespace(MapLayersUI.localizationNamespace);\r\n\r\n MapLayersUI._uiItemsProvidersId.forEach((uiProviderId) => {\r\n UiItemsManager.unregister(uiProviderId);\r\n });\r\n }\r\n\r\n /** The internationalization service namespace. */\r\n public static get localizationNamespace(): string {\r\n return MapLayersUI._defaultNs;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mapLayers.js","sourceRoot":"","sources":["../../src/mapLayers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAA2B,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAiB7E;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAQf,MAAM,KAAK,WAAW;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,wCAAwC;IACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAwB;;QACrD,mEAAmE;QACnE,WAAW,CAAC,YAAY,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,SAAS,CAAC,YAAY,CAAC;QAC1E,MAAM,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAC9C,WAAW,CAAC,qBAAqB,CAClC,CAAC;QAEF,WAAW,CAAC,YAAY,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC;QAC/C,WAAW,CAAC,gBAAgB,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;QACvD,WAAW,CAAC,gBAAgB,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;QAEvD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,0BAA0B,CAAA;YACrC,WAAW,CAAC,wBAAwB,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,wBAAwB,CAAC,MAAkC;;QACvE,MAAM,UAAU,GAAG,IAAI,wBAAwB,CAAC,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,yBAAyB,0CAAE,UAAU,mCAAI,UAAU,CAAC,EAAE,CAAC;QACpF,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,yBAAyB,CAAC,CAAC,CAAC,8CAA8C;QAEtH,+DAA+D;QAC/D,IAAI,MAAA,WAAW,CAAC,gBAAgB,0CAAE,QAAQ,EAAE;YAC1C,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,EAAE,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,4BAA4B,0CAAE,UAAU,mCAAI,UAAU,CAAC,EAAE,CAAC;YACvF,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,4BAA4B,CAAC,CAAC,CAAC,8CAA8C;SAC3H;IACH,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,SAAS;QACrB,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAE9E,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACvD,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,8CAA8C;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,qBAAqB;QACrC,OAAO,WAAW,CAAC,UAAU,CAAC;IAChC,CAAC;;AA3Dc,sBAAU,GAAG,WAAW,CAAC;AAEzB,+BAAmB,GAAa,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Localization } from \"@itwin/core-common\";\r\nimport { IModelApp, UserPreferencesAccess } from \"@itwin/core-frontend\";\r\nimport { MapLayersUiItemsProvider } from \"./ui/MapLayersUiItemsProvider\";\r\nimport { UiItemProviderOverrides, UiItemsManager } from \"@itwin/appui-abstract\";\r\nimport { FeatureInfoUiItemsProvider } from \"./ui/FeatureInfoUiItemsProvider\";\r\nimport { MapFeatureInfoOptions, MapLayerOptions } from \"./ui/Interfaces\";\r\n\r\nexport interface MapLayersConfig {\r\n localization?: Localization;\r\n /** If an iTwinConfig is provided, it will be used to load the MapLayerSources that are stored. */\r\n iTwinConfig?: UserPreferencesAccess;\r\n mapLayerOptions?: MapLayerOptions;\r\n featureInfoOpts?: MapFeatureInfoOptions;\r\n delayItemsProviderRegister?: boolean;\r\n}\r\n/** Configuration for registering UiItemsProviders for the MapLayers package */\r\nexport interface MapLayersUiProviderConfig {\r\n mapLayerProviderOverrides?: UiItemProviderOverrides; // eslint-disable-line deprecation/deprecation\r\n featureInfoProviderOverrides?: UiItemProviderOverrides; // eslint-disable-line deprecation/deprecation\r\n}\r\n\r\n/** MapLayersUI is use when the package is used as a dependency to another app.\r\n * '''ts\r\n * await MapLayersUI.initialize({...MapLayersInitProps});\r\n * '''\r\n * @beta\r\n */\r\nexport class MapLayersUI {\r\n private static _defaultNs = \"mapLayers\";\r\n public static localization: Localization;\r\n private static _uiItemsProvidersId: string[] = [];\r\n private static _iTwinConfig?: UserPreferencesAccess;\r\n private static _featureInfoOpts?: MapFeatureInfoOptions;\r\n private static _mapLayerOptions?: MapLayerOptions;\r\n\r\n public static get iTwinConfig(): UserPreferencesAccess | undefined {\r\n return this._iTwinConfig;\r\n }\r\n\r\n /** Used to initialize the Map Layers */\r\n public static async initialize(config?: MapLayersConfig): Promise<void> {\r\n // register namespace containing localized strings for this package\r\n MapLayersUI.localization = config?.localization ?? IModelApp.localization;\r\n await MapLayersUI.localization.registerNamespace(\r\n MapLayersUI.localizationNamespace\r\n );\r\n\r\n MapLayersUI._iTwinConfig = config?.iTwinConfig;\r\n MapLayersUI._featureInfoOpts = config?.featureInfoOpts;\r\n MapLayersUI._mapLayerOptions = config?.mapLayerOptions;\r\n\r\n if (!config?.delayItemsProviderRegister)\r\n MapLayersUI.registerUiItemsProviders();\r\n }\r\n\r\n /** Registers the UiItemsProviders for MapLayers with optional overrides\r\n * This is useful for an app that wants to defer UiItemsProvider registration so that it\r\n * may limit the MapLayers widgets to a specific workflow\r\n * @beta\r\n */\r\n public static registerUiItemsProviders(config?: MapLayersUiProviderConfig) {\r\n const mlProvider = new MapLayersUiItemsProvider({ ...MapLayersUI._mapLayerOptions });\r\n const mlProviderId = config?.mapLayerProviderOverrides?.providerId ?? mlProvider.id;\r\n MapLayersUI._uiItemsProvidersId.push(mlProviderId);\r\n UiItemsManager.register(mlProvider, config?.mapLayerProviderOverrides); // eslint-disable-line deprecation/deprecation\r\n\r\n // Register the FeatureInfo widget only if MapHit was provided.\r\n if (MapLayersUI._featureInfoOpts?.onMapHit) {\r\n const fiProvider = new FeatureInfoUiItemsProvider({ ...MapLayersUI._featureInfoOpts });\r\n const fiProviderId = config?.featureInfoProviderOverrides?.providerId ?? fiProvider.id;\r\n MapLayersUI._uiItemsProvidersId.push(fiProviderId);\r\n UiItemsManager.register(fiProvider, config?.featureInfoProviderOverrides); // eslint-disable-line deprecation/deprecation\r\n }\r\n }\r\n\r\n /** Unregisters internationalization service namespace and UiItemManager */\r\n public static terminate() {\r\n IModelApp.localization.unregisterNamespace(MapLayersUI.localizationNamespace);\r\n\r\n MapLayersUI._uiItemsProvidersId.forEach((uiProviderId) => {\r\n UiItemsManager.unregister(uiProviderId); // eslint-disable-line deprecation/deprecation\r\n });\r\n }\r\n\r\n /** The internationalization service namespace. */\r\n public static get localizationNamespace(): string {\r\n return MapLayersUI._defaultNs;\r\n }\r\n}\r\n"]}
@@ -35,6 +35,7 @@
35
35
  "ExternalLoginTryAgain": "Try Again",
36
36
  "ExternalLoginWaiting": "Waiting for external login process to complete...",
37
37
  "InvalidCredentials": "Invalid credentials provided",
38
+ "InvalidCoordinateSystem": "Map layer geographic coordinate system is not supported",
38
39
  "MissingCredentials": "This layer requires credentials to be provided",
39
40
  "Name": "Name",
40
41
  "NameInputPlaceHolder": "Enter Map Name",
@@ -77,6 +78,7 @@
77
78
  "BackgroundLayers": "Background",
78
79
  "DropLayerLabel": "Drop layer here",
79
80
  "Label": "Map Layers",
81
+ "layerOutOfRange": "Invisible at current scale",
80
82
  "NoOverlayLayers": "No Overlay layers specified",
81
83
  "NoBackgroundLayers": "No Background layers specified",
82
84
  "OverlayLayers": "Overlay",
@@ -5,7 +5,8 @@ export declare class FeatureInfoUiItemsProvider implements UiItemsProvider {
5
5
  readonly id = "FeatureInfoUiItemsProvider";
6
6
  static readonly widgetId = "map-layers:mapFeatureInfoWidget";
7
7
  constructor(_featureInfoOpts: MapFeatureInfoOptions);
8
- provideToolbarButtonItems(_stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation): CommonToolbarItem[];
8
+ provideToolbarButtonItems(_stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, // eslint-disable-line deprecation/deprecation
9
+ toolbarOrientation: ToolbarOrientation): CommonToolbarItem[];
9
10
  provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps>;
10
11
  }
11
12
  //# sourceMappingURL=FeatureInfoUiItemsProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInfoUiItemsProvider.d.ts","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAc,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAC;AAGxN,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAIrD,qBAAa,0BAA2B,YAAW,eAAe;IAI7C,OAAO,CAAC,gBAAgB;IAH3C,SAAgB,EAAE,gCAAgC;IAClD,gBAAuB,QAAQ,qCAAqC;gBAEzC,gBAAgB,EAAE,qBAAqB;IAE3D,yBAAyB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,GACrC,iBAAiB,EAAE;IAiBf,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,mBAAmB,CAAC;CAiBhM"}
1
+ {"version":3,"file":"FeatureInfoUiItemsProvider.d.ts","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAc,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAC;AAGxN,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAIrD,qBAAa,0BAA2B,YAAW,eAAe;IAI7C,OAAO,CAAC,gBAAgB;IAH3C,SAAgB,EAAE,gCAAgC;IAClD,gBAAuB,QAAQ,qCAAqC;gBAEzC,gBAAgB,EAAE,qBAAqB;IAE3D,yBAAyB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAAE,8CAA8C;IAC1E,kBAAkB,EAAE,kBAAkB,GACrC,iBAAiB,EAAE;IAiBf,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC,mBAAmB,CAAC;CAiBhM"}
@@ -13,12 +13,14 @@ export class FeatureInfoUiItemsProvider {
13
13
  this._featureInfoOpts = _featureInfoOpts;
14
14
  this.id = "FeatureInfoUiItemsProvider";
15
15
  }
16
- provideToolbarButtonItems(_stageId, stageUsage, toolbarUsage, toolbarOrientation) {
16
+ provideToolbarButtonItems(_stageId, stageUsage, toolbarUsage, // eslint-disable-line deprecation/deprecation
17
+ toolbarOrientation) {
17
18
  var _a;
18
19
  if (!((_a = this._featureInfoOpts) === null || _a === void 0 ? void 0 : _a.disableDefaultFeatureInfoTool) &&
19
- stageUsage === StageUsage.General &&
20
- toolbarUsage === ToolbarUsage.ContentManipulation &&
21
- toolbarOrientation === ToolbarOrientation.Vertical) {
20
+ stageUsage === StageUsage.General && // eslint-disable-line deprecation/deprecation
21
+ toolbarUsage === ToolbarUsage.ContentManipulation && // eslint-disable-line deprecation/deprecation
22
+ toolbarOrientation === ToolbarOrientation.Vertical // eslint-disable-line deprecation/deprecation
23
+ ) {
22
24
  DefaultMapFeatureInfoTool.register(MapLayersUI.localizationNamespace);
23
25
  return [
24
26
  ToolbarHelper.createToolbarItemFromItemDef(60, getDefaultMapFeatureInfoToolItemDef()),
@@ -28,7 +30,7 @@ export class FeatureInfoUiItemsProvider {
28
30
  }
29
31
  // eslint-disable-next-line deprecation/deprecation
30
32
  provideWidgets(_stageId, stageUsage, location, section, zoneLocation) {
31
- const widgets = [];
33
+ const widgets = []; // eslint-disable-line deprecation/deprecation
32
34
  // eslint-disable-next-line deprecation/deprecation
33
35
  if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.BottomRight) ||
34
36
  (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.End && "1" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation
@@ -37,7 +39,7 @@ export class FeatureInfoUiItemsProvider {
37
39
  label: MapLayersUI.localization.getLocalizedString("mapLayers:FeatureInfoWidget.Label"),
38
40
  icon: "icon-map",
39
41
  getWidgetContent: () => React.createElement(MapFeatureInfoWidget, { featureInfoOpts: this._featureInfoOpts }),
40
- defaultState: WidgetState.Closed,
42
+ defaultState: WidgetState.Closed, // eslint-disable-line deprecation/deprecation
41
43
  });
42
44
  }
43
45
  return widgets;
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAuB,oBAAoB,EAAqB,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAmB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxN,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAEtG,MAAM,OAAO,0BAA0B;IAIrC,YAA2B,gBAAuC;QAAvC,qBAAgB,GAAhB,gBAAgB,CAAuB;QAHlD,OAAE,GAAG,4BAA4B,CAAC;IAGoB,CAAC;IAEhE,yBAAyB,CAC9B,QAAgB,EAChB,UAAkB,EAClB,YAA0B,EAC1B,kBAAsC;;QAEtC,IACE,CAAC,CAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,6BAA6B,CAAA;YACrD,UAAU,KAAK,UAAU,CAAC,OAAO;YACjC,YAAY,KAAK,YAAY,CAAC,mBAAmB;YACjD,kBAAkB,KAAK,kBAAkB,CAAC,QAAQ,EAClD;YACA,yBAAyB,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACtE,OAAO;gBACL,aAAa,CAAC,4BAA4B,CAAC,EAAE,EAAE,mCAAmC,EAAE,CAAC;aACtF,CAAC;SACH;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mDAAmD;IAC5C,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B,EAAE,YAAmC;QACxJ,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,mDAAmD;QACnD,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,YAAY,KAAK,oBAAoB,CAAC,WAAW,CAAC;YACnH,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC,GAAG,IAAI,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,8CAA8C;YACpM,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,0BAA0B,CAAC,QAAQ;gBACvC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,mCAAmC,CAAC;gBACvF,IAAI,EAAE,UAAU;gBAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,oBAAoB,IAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,GAAI;gBACxF,YAAY,EAAE,WAAW,CAAC,MAAM;aACjC,CAAC,CAAC;SACJ;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;;AA1CsB,mCAAQ,GAAG,iCAAiC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from \"react\";\r\nimport { AbstractWidgetProps, AbstractZoneLocation, CommonToolbarItem, StagePanelLocation, StagePanelSection, StageUsage, ToolbarOrientation, ToolbarUsage, UiItemsProvider, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { ToolbarHelper, UiFramework } from \"@itwin/appui-react\";\r\nimport { MapFeatureInfoWidget } from \"./widget/FeatureInfoWidget\";\r\nimport { MapFeatureInfoOptions } from \"./Interfaces\";\r\nimport { MapLayersUI } from \"../mapLayers\";\r\nimport { DefaultMapFeatureInfoTool, getDefaultMapFeatureInfoToolItemDef } from \"./MapFeatureInfoTool\";\r\n\r\nexport class FeatureInfoUiItemsProvider implements UiItemsProvider {\r\n public readonly id = \"FeatureInfoUiItemsProvider\";\r\n public static readonly widgetId = \"map-layers:mapFeatureInfoWidget\";\r\n\r\n public constructor(private _featureInfoOpts: MapFeatureInfoOptions) { }\r\n\r\n public provideToolbarButtonItems(\r\n _stageId: string,\r\n stageUsage: string,\r\n toolbarUsage: ToolbarUsage,\r\n toolbarOrientation: ToolbarOrientation,\r\n ): CommonToolbarItem[] {\r\n if (\r\n !this._featureInfoOpts?.disableDefaultFeatureInfoTool &&\r\n stageUsage === StageUsage.General &&\r\n toolbarUsage === ToolbarUsage.ContentManipulation &&\r\n toolbarOrientation === ToolbarOrientation.Vertical\r\n ) {\r\n DefaultMapFeatureInfoTool.register(MapLayersUI.localizationNamespace);\r\n return [\r\n ToolbarHelper.createToolbarItemFromItemDef(60, getDefaultMapFeatureInfoToolItemDef()),\r\n ];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = [];\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.BottomRight) ||\r\n (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.End && \"1\" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation\r\n widgets.push({\r\n id: FeatureInfoUiItemsProvider.widgetId,\r\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\r\n icon: \"icon-map\",\r\n getWidgetContent: () => <MapFeatureInfoWidget featureInfoOpts={this._featureInfoOpts} />, // eslint-disable-line react/display-name\r\n defaultState: WidgetState.Closed,\r\n });\r\n }\r\n\r\n return widgets;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAuB,oBAAoB,EAAqB,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAmB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxN,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAEtG,MAAM,OAAO,0BAA0B;IAIrC,YAA2B,gBAAuC;QAAvC,qBAAgB,GAAhB,gBAAgB,CAAuB;QAHlD,OAAE,GAAG,4BAA4B,CAAC;IAGoB,CAAC;IAEhE,yBAAyB,CAC9B,QAAgB,EAChB,UAAkB,EAClB,YAA0B,EAAE,8CAA8C;IAC1E,kBAAsC;;QAEtC,IACE,CAAC,CAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,6BAA6B,CAAA;YACrD,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,8CAA8C;YACnF,YAAY,KAAK,YAAY,CAAC,mBAAmB,IAAI,8CAA8C;YACnG,kBAAkB,KAAK,kBAAkB,CAAC,QAAQ,CAAC,8CAA8C;UACjG;YACA,yBAAyB,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACtE,OAAO;gBACL,aAAa,CAAC,4BAA4B,CAAC,EAAE,EAAE,mCAAmC,EAAE,CAAC;aACtF,CAAC;SACH;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mDAAmD;IAC5C,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B,EAAE,YAAmC;QACxJ,MAAM,OAAO,GAA0B,EAAE,CAAC,CAAC,8CAA8C;QAEzF,mDAAmD;QACnD,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,YAAY,KAAK,oBAAoB,CAAC,WAAW,CAAC;YACnH,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC,GAAG,IAAI,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,8CAA8C;YACpM,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,0BAA0B,CAAC,QAAQ;gBACvC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,mCAAmC,CAAC;gBACvF,IAAI,EAAE,UAAU;gBAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,oBAAoB,IAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,GAAI;gBACxF,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,8CAA8C;aACjF,CAAC,CAAC;SACJ;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;;AA1CsB,mCAAQ,GAAG,iCAAiC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from \"react\";\r\nimport { AbstractWidgetProps, AbstractZoneLocation, CommonToolbarItem, StagePanelLocation, StagePanelSection, StageUsage, ToolbarOrientation, ToolbarUsage, UiItemsProvider, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { ToolbarHelper, UiFramework } from \"@itwin/appui-react\";\r\nimport { MapFeatureInfoWidget } from \"./widget/FeatureInfoWidget\";\r\nimport { MapFeatureInfoOptions } from \"./Interfaces\";\r\nimport { MapLayersUI } from \"../mapLayers\";\r\nimport { DefaultMapFeatureInfoTool, getDefaultMapFeatureInfoToolItemDef } from \"./MapFeatureInfoTool\";\r\n\r\nexport class FeatureInfoUiItemsProvider implements UiItemsProvider { // eslint-disable-line deprecation/deprecation\r\n public readonly id = \"FeatureInfoUiItemsProvider\";\r\n public static readonly widgetId = \"map-layers:mapFeatureInfoWidget\";\r\n\r\n public constructor(private _featureInfoOpts: MapFeatureInfoOptions) { }\r\n\r\n public provideToolbarButtonItems(\r\n _stageId: string,\r\n stageUsage: string,\r\n toolbarUsage: ToolbarUsage, // eslint-disable-line deprecation/deprecation\r\n toolbarOrientation: ToolbarOrientation, // eslint-disable-line deprecation/deprecation\r\n ): CommonToolbarItem[] {\r\n if (\r\n !this._featureInfoOpts?.disableDefaultFeatureInfoTool &&\r\n stageUsage === StageUsage.General && // eslint-disable-line deprecation/deprecation\r\n toolbarUsage === ToolbarUsage.ContentManipulation && // eslint-disable-line deprecation/deprecation\r\n toolbarOrientation === ToolbarOrientation.Vertical // eslint-disable-line deprecation/deprecation\r\n ) {\r\n DefaultMapFeatureInfoTool.register(MapLayersUI.localizationNamespace);\r\n return [\r\n ToolbarHelper.createToolbarItemFromItemDef(60, getDefaultMapFeatureInfoToolItemDef()),\r\n ];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = []; // eslint-disable-line deprecation/deprecation\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.BottomRight) ||\r\n (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.End && \"1\" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation\r\n widgets.push({\r\n id: FeatureInfoUiItemsProvider.widgetId,\r\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\r\n icon: \"icon-map\",\r\n getWidgetContent: () => <MapFeatureInfoWidget featureInfoOpts={this._featureInfoOpts} />, // eslint-disable-line react/display-name\r\n defaultState: WidgetState.Closed, // eslint-disable-line deprecation/deprecation\r\n });\r\n }\r\n\r\n return widgets;\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { BeEvent } from "@itwin/core-bentley";
2
2
  import { MapSubLayerProps } from "@itwin/core-common";
3
- import { HitDetail, MapLayerImageryProvider } from "@itwin/core-frontend";
3
+ import { HitDetail, MapLayerImageryProvider, MapTileTreeScaleRangeVisibility } from "@itwin/core-frontend";
4
4
  export interface StyleMapLayerSettings {
5
5
  /** Name */
6
6
  name: string;
@@ -8,12 +8,15 @@ export interface StyleMapLayerSettings {
8
8
  source: string;
9
9
  /** Controls visibility of layer */
10
10
  visible: boolean;
11
+ treeVisibility: MapTileTreeScaleRangeVisibility;
11
12
  /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing, or false to indicate the transparency should not be overridden. Default value: false. */
12
13
  transparency: number;
13
14
  /** Transparent background */
14
15
  transparentBackground: boolean;
15
16
  /** set map as underlay or overlay */
16
17
  isOverlay: boolean;
18
+ /** layer index in the viewport */
19
+ layerIndex: number;
17
20
  /** Available map sub-layer */
18
21
  subLayers?: MapSubLayerProps[];
19
22
  /** sub-layer panel displayed. */
@@ -1 +1 @@
1
- {"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../../src/ui/Interfaces.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,2MAA2M;IAC3M,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,iCAAiC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,oBAAY,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,EAAE,WAAW,CAAC;IACtB,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,mBAAmB,CAAC,EAAE,iCAAiC,CAAC;CACzD"}
1
+ {"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../../src/ui/Interfaces.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAG,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAG,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE5G,MAAM,WAAW,qBAAqB;IACpC,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,+BAA+B,CAAC;IAChD,2MAA2M;IAC3M,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,iCAAiC;IAChD,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,oBAAY,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,EAAE,WAAW,CAAC;IACtB,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,mBAAmB,CAAC,EAAE,iCAAiC,CAAC;CACzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../../../src/ui/Interfaces.ts"],"names":[],"mappings":"","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { HitDetail, MapLayerImageryProvider } from \"@itwin/core-frontend\";\r\n\r\nexport interface StyleMapLayerSettings {\r\n /** Name */\r\n name: string;\r\n /** source (i.URL for ImageMapLayerSettings or modelId for ModelMapLayerSettings) */\r\n source: string;\r\n /** Controls visibility of layer */\r\n visible: boolean;\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing, or false to indicate the transparency should not be overridden. Default value: false. */\r\n transparency: number;\r\n /** Transparent background */\r\n transparentBackground: boolean;\r\n /** set map as underlay or overlay */\r\n isOverlay: boolean;\r\n /** Available map sub-layer */\r\n subLayers?: MapSubLayerProps[];\r\n /** sub-layer panel displayed. */\r\n showSubLayers: boolean;\r\n /** Some format can publish only a single layer at a time (i.e WMTS) */\r\n provider?: MapLayerImageryProvider;\r\n}\r\n\r\nexport interface MapTypesOptions {\r\n readonly supportTileUrl: boolean;\r\n readonly supportWmsAuthentication: boolean;\r\n}\r\n\r\nexport interface MapLayerOptions {\r\n hideExternalMapLayers?: boolean;\r\n fetchPublicMapLayerSources?: boolean;\r\n mapTypeOptions?: MapTypesOptions;\r\n}\r\n\r\nexport interface MapFeatureInfoPropertyGridOptions {\r\n isPropertySelectionEnabled?: boolean;\r\n}\r\n\r\nexport type MapHitEvent = BeEvent<(hit: HitDetail) => void>;\r\n\r\nexport interface MapFeatureInfoOptions {\r\n /**\r\n * HitDetail Event whenever the map is clicked.\r\n * Typically the HitDetail object is provided by ElementLocateManager.doLocate.\r\n * Every time this event is raised, FeatureInfoWidget will attempt to retrieve data from MapLayerImageryProviders.\r\n */\r\n onMapHit: MapHitEvent;\r\n disableDefaultFeatureInfoTool?: boolean;\r\n showLoadProgressAnimation?: boolean;\r\n propertyGridOptions?: MapFeatureInfoPropertyGridOptions;\r\n}\r\n"]}
1
+ {"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../../../src/ui/Interfaces.ts"],"names":[],"mappings":"","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { HitDetail, MapLayerImageryProvider, MapTileTreeScaleRangeVisibility } from \"@itwin/core-frontend\";\r\n\r\nexport interface StyleMapLayerSettings {\r\n /** Name */\r\n name: string;\r\n /** source (i.URL for ImageMapLayerSettings or modelId for ModelMapLayerSettings) */\r\n source: string;\r\n /** Controls visibility of layer */\r\n visible: boolean;\r\n treeVisibility: MapTileTreeScaleRangeVisibility;\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing, or false to indicate the transparency should not be overridden. Default value: false. */\r\n transparency: number;\r\n /** Transparent background */\r\n transparentBackground: boolean;\r\n /** set map as underlay or overlay */\r\n isOverlay: boolean;\r\n /** layer index in the viewport */\r\n layerIndex: number;\r\n /** Available map sub-layer */\r\n subLayers?: MapSubLayerProps[];\r\n /** sub-layer panel displayed. */\r\n showSubLayers: boolean;\r\n /** Some format can publish only a single layer at a time (i.e WMTS) */\r\n provider?: MapLayerImageryProvider;\r\n}\r\n\r\nexport interface MapTypesOptions {\r\n readonly supportTileUrl: boolean;\r\n readonly supportWmsAuthentication: boolean;\r\n}\r\n\r\nexport interface MapLayerOptions {\r\n hideExternalMapLayers?: boolean;\r\n fetchPublicMapLayerSources?: boolean;\r\n mapTypeOptions?: MapTypesOptions;\r\n}\r\n\r\nexport interface MapFeatureInfoPropertyGridOptions {\r\n isPropertySelectionEnabled?: boolean;\r\n}\r\n\r\nexport type MapHitEvent = BeEvent<(hit: HitDetail) => void>;\r\n\r\nexport interface MapFeatureInfoOptions {\r\n /**\r\n * HitDetail Event whenever the map is clicked.\r\n * Typically the HitDetail object is provided by ElementLocateManager.doLocate.\r\n * Every time this event is raised, FeatureInfoWidget will attempt to retrieve data from MapLayerImageryProviders.\r\n */\r\n onMapHit: MapHitEvent;\r\n disableDefaultFeatureInfoTool?: boolean;\r\n showLoadProgressAnimation?: boolean;\r\n propertyGridOptions?: MapFeatureInfoPropertyGridOptions;\r\n}\r\n"]}
@@ -22,8 +22,8 @@ export class DefaultMapFeatureInfoTool extends PrimitiveTool {
22
22
  const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
23
23
  if (hit !== undefined) {
24
24
  const widgetDef = FrontstageManager.findWidget(FeatureInfoUiItemsProvider.widgetId);
25
- if (widgetDef && widgetDef.state !== WidgetState.Open)
26
- widgetDef.setWidgetState(WidgetState.Open);
25
+ if (widgetDef && widgetDef.state !== WidgetState.Open) // eslint-disable-line deprecation/deprecation
26
+ widgetDef.setWidgetState(WidgetState.Open); // eslint-disable-line deprecation/deprecation
27
27
  DefaultMapFeatureInfoTool.onMapHit.raiseEvent(hit);
28
28
  return EventHandled.Yes;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapFeatureInfoTool.js","sourceRoot":"","sources":["../../../src/ui/MapFeatureInfoTool.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAEL,YAAY,EAEZ,SAAS,EACT,cAAc,EACd,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAgB,EAAE,CACnE,IAAI,WAAW,CAAC;IACd,MAAM,EAAE,yBAAyB,CAAC,MAAM;IACxC,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;IAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO;IAC9C,WAAW,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW;IACxD,OAAO,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtF,CAAC,CAAC;AAEL,MAAM,OAAO,yBAA0B,SAAQ,aAAa;IAK1C,sBAAsB;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,KAAK,CAAC,gBAAgB,CACpC,EAAiB;QAEjB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAChD,IAAI,cAAc,EAAE,EACpB,IAAI,EACJ,EAAE,CAAC,KAAK,EACR,EAAE,CAAC,QAAQ,EACX,EAAE,CAAC,WAAW,CACf,CAAC;QACF,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAC5C,0BAA0B,CAAC,QAAQ,CACpC,CAAC;YACF,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI;gBACnD,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE7C,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,YAAY,CAAC,GAAG,CAAC;SACzB;QAED,OAAO,YAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,GAAkB;QAElB,8GAA8G;QAC9G,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA5CsB,kCAAQ,GAAG,IAAI,OAAO,EAA4B,CAAC;AACnD,gCAAM,GAAG,oBAAoB,CAAC;AAC9B,kCAAQ,GAAG,UAAU,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n BeButtonEvent,\r\n EventHandled,\r\n HitDetail,\r\n IModelApp,\r\n LocateResponse,\r\n PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { WidgetState } from \"@itwin/appui-abstract\";\r\nimport { FrontstageManager, ToolItemDef } from \"@itwin/appui-react\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { FeatureInfoUiItemsProvider } from \"./FeatureInfoUiItemsProvider\";\r\n\r\nexport const getDefaultMapFeatureInfoToolItemDef = (): ToolItemDef =>\r\n new ToolItemDef({\r\n toolId: DefaultMapFeatureInfoTool.toolId,\r\n iconSpec: DefaultMapFeatureInfoTool.iconSpec,\r\n label: () => DefaultMapFeatureInfoTool.flyover,\r\n description: () => DefaultMapFeatureInfoTool.description,\r\n execute: async () => { await IModelApp.tools.run(DefaultMapFeatureInfoTool.toolId); },\r\n });\r\n\r\nexport class DefaultMapFeatureInfoTool extends PrimitiveTool {\r\n public static readonly onMapHit = new BeEvent<(hit: HitDetail) => void>();\r\n public static override toolId = \"MapFeatureInfoTool\";\r\n public static override iconSpec = \"icon-map\";\r\n\r\n public override requireWriteableTarget(): boolean {\r\n return false;\r\n }\r\n\r\n public override async onDataButtonDown(\r\n ev: BeButtonEvent\r\n ): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(\r\n new LocateResponse(),\r\n true,\r\n ev.point,\r\n ev.viewport,\r\n ev.inputSource\r\n );\r\n if (hit !== undefined) {\r\n const widgetDef = FrontstageManager.findWidget(\r\n FeatureInfoUiItemsProvider.widgetId\r\n );\r\n if (widgetDef && widgetDef.state !== WidgetState.Open)\r\n widgetDef.setWidgetState(WidgetState.Open);\r\n\r\n DefaultMapFeatureInfoTool.onMapHit.raiseEvent(hit);\r\n return EventHandled.Yes;\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(\r\n _ev: BeButtonEvent\r\n ): Promise<EventHandled> {\r\n /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new DefaultMapFeatureInfoTool();\r\n if (!(await tool.run()))\r\n return this.exitTool();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapFeatureInfoTool.js","sourceRoot":"","sources":["../../../src/ui/MapFeatureInfoTool.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAEL,YAAY,EAEZ,SAAS,EACT,cAAc,EACd,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAgB,EAAE,CACnE,IAAI,WAAW,CAAC;IACd,MAAM,EAAE,yBAAyB,CAAC,MAAM;IACxC,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;IAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO;IAC9C,WAAW,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW;IACxD,OAAO,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtF,CAAC,CAAC;AAEL,MAAM,OAAO,yBAA0B,SAAQ,aAAa;IAK1C,sBAAsB;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,KAAK,CAAC,gBAAgB,CACpC,EAAiB;QAEjB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAChD,IAAI,cAAc,EAAE,EACpB,IAAI,EACJ,EAAE,CAAC,KAAK,EACR,EAAE,CAAC,QAAQ,EACX,EAAE,CAAC,WAAW,CACf,CAAC;QACF,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAC5C,0BAA0B,CAAC,QAAQ,CACpC,CAAC;YACF,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,8CAA8C;gBACnG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,8CAA8C;YAE5F,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,YAAY,CAAC,GAAG,CAAC;SACzB;QAED,OAAO,YAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,GAAkB;QAElB,8GAA8G;QAC9G,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA5CsB,kCAAQ,GAAG,IAAI,OAAO,EAA4B,CAAC;AACnD,gCAAM,GAAG,oBAAoB,CAAC;AAC9B,kCAAQ,GAAG,UAAU,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n BeButtonEvent,\r\n EventHandled,\r\n HitDetail,\r\n IModelApp,\r\n LocateResponse,\r\n PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { WidgetState } from \"@itwin/appui-abstract\";\r\nimport { FrontstageManager, ToolItemDef } from \"@itwin/appui-react\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { FeatureInfoUiItemsProvider } from \"./FeatureInfoUiItemsProvider\";\r\n\r\nexport const getDefaultMapFeatureInfoToolItemDef = (): ToolItemDef =>\r\n new ToolItemDef({\r\n toolId: DefaultMapFeatureInfoTool.toolId,\r\n iconSpec: DefaultMapFeatureInfoTool.iconSpec,\r\n label: () => DefaultMapFeatureInfoTool.flyover,\r\n description: () => DefaultMapFeatureInfoTool.description,\r\n execute: async () => { await IModelApp.tools.run(DefaultMapFeatureInfoTool.toolId); },\r\n });\r\n\r\nexport class DefaultMapFeatureInfoTool extends PrimitiveTool {\r\n public static readonly onMapHit = new BeEvent<(hit: HitDetail) => void>();\r\n public static override toolId = \"MapFeatureInfoTool\";\r\n public static override iconSpec = \"icon-map\";\r\n\r\n public override requireWriteableTarget(): boolean {\r\n return false;\r\n }\r\n\r\n public override async onDataButtonDown(\r\n ev: BeButtonEvent\r\n ): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(\r\n new LocateResponse(),\r\n true,\r\n ev.point,\r\n ev.viewport,\r\n ev.inputSource\r\n );\r\n if (hit !== undefined) {\r\n const widgetDef = FrontstageManager.findWidget(\r\n FeatureInfoUiItemsProvider.widgetId\r\n );\r\n if (widgetDef && widgetDef.state !== WidgetState.Open) // eslint-disable-line deprecation/deprecation\r\n widgetDef.setWidgetState(WidgetState.Open); // eslint-disable-line deprecation/deprecation\r\n\r\n DefaultMapFeatureInfoTool.onMapHit.raiseEvent(hit);\r\n return EventHandled.Yes;\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(\r\n _ev: BeButtonEvent\r\n ): Promise<EventHandled> {\r\n /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new DefaultMapFeatureInfoTool();\r\n if (!(await tool.run()))\r\n return this.exitTool();\r\n }\r\n}\r\n"]}
@@ -18,7 +18,7 @@ export class MapLayersUiItemsProvider {
18
18
  }
19
19
  // eslint-disable-next-line deprecation/deprecation
20
20
  provideWidgets(_stageId, stageUsage, location, section, zoneLocation) {
21
- const widgets = [];
21
+ const widgets = []; // eslint-disable-line deprecation/deprecation
22
22
  // eslint-disable-next-line deprecation/deprecation
23
23
  if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.CenterRight) ||
24
24
  (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.Start && "1" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayersUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/MapLayersUiItemsProvider.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAuB,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AACtJ,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,wBAAwB;IAInC,YAAmB,eAAiC;QAHpC,OAAE,GAAG,0BAA0B,CAAC;QAI9C,IAAI,CAAC,gBAAgB,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI;YACzC,qBAAqB,EAAE,KAAK;YAC5B,cAAc,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE;YACzE,0BAA0B,EAAE,KAAK;SAClC,CAAC;IACJ,CAAC;IAED,mDAAmD;IAC5C,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAAsC,EAAE,YAAmC;QACnK,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,mDAAmD;QACnD,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,YAAY,KAAK,oBAAoB,CAAC,WAAW,CAAC;YACnH,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,8CAA8C;YACtM,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,4BAA4B;gBAChC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,wBAAwB,CAAC;gBAC5E,IAAI,EAAE,UAAU;gBAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,eAAe,IAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,GAAI,EAAE,yCAAyC;aAC/H,CAAC,CAAC;SACJ;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from \"react\";\r\nimport { AbstractWidgetProps, AbstractZoneLocation, StagePanelLocation, StagePanelSection, StageUsage, UiItemsProvider } from \"@itwin/appui-abstract\";\r\nimport { MapLayersWidget } from \"./widget/MapLayersWidget\";\r\nimport { UiFramework } from \"@itwin/appui-react\";\r\nimport { MapLayerOptions } from \"./Interfaces\";\r\nimport { MapLayersUI } from \"../mapLayers\";\r\n\r\nexport class MapLayersUiItemsProvider implements UiItemsProvider {\r\n public readonly id = \"MapLayersUiItemsProvider\";\r\n private _mapLayerOptions?: MapLayerOptions;\r\n\r\n public constructor(mapLayerOptions?: MapLayerOptions) {\r\n this._mapLayerOptions = mapLayerOptions ?? {\r\n hideExternalMapLayers: false,\r\n mapTypeOptions: { supportTileUrl: false, supportWmsAuthentication: true },\r\n fetchPublicMapLayerSources: false,\r\n };\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section: StagePanelSection | undefined, zoneLocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = [];\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.CenterRight) ||\r\n (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.Start && \"1\" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation\r\n widgets.push({\r\n id: \"map-layers:mapLayersWidget\",\r\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.Label\"),\r\n icon: \"icon-map\",\r\n getWidgetContent: () => <MapLayersWidget mapLayerOptions={this._mapLayerOptions} />, // eslint-disable-line react/display-name\r\n });\r\n }\r\n\r\n return widgets;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayersUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/MapLayersUiItemsProvider.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAuB,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AACtJ,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,wBAAwB;IAInC,YAAmB,eAAiC;QAHpC,OAAE,GAAG,0BAA0B,CAAC;QAI9C,IAAI,CAAC,gBAAgB,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI;YACzC,qBAAqB,EAAE,KAAK;YAC5B,cAAc,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE;YACzE,0BAA0B,EAAE,KAAK;SAClC,CAAC;IACJ,CAAC;IAED,mDAAmD;IAC5C,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAAsC,EAAE,YAAmC;QACnK,MAAM,OAAO,GAA0B,EAAE,CAAC,CAAC,8CAA8C;QAEzF,mDAAmD;QACnD,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,YAAY,KAAK,oBAAoB,CAAC,WAAW,CAAC;YACnH,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,8CAA8C;YACtM,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,4BAA4B;gBAChC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,wBAAwB,CAAC;gBAC5E,IAAI,EAAE,UAAU;gBAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,eAAe,IAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,GAAI,EAAE,yCAAyC;aAC/H,CAAC,CAAC;SACJ;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from \"react\";\r\nimport { AbstractWidgetProps, AbstractZoneLocation, StagePanelLocation, StagePanelSection, StageUsage, UiItemsProvider } from \"@itwin/appui-abstract\";\r\nimport { MapLayersWidget } from \"./widget/MapLayersWidget\";\r\nimport { UiFramework } from \"@itwin/appui-react\";\r\nimport { MapLayerOptions } from \"./Interfaces\";\r\nimport { MapLayersUI } from \"../mapLayers\";\r\n\r\nexport class MapLayersUiItemsProvider implements UiItemsProvider { // eslint-disable-line deprecation/deprecation\r\n public readonly id = \"MapLayersUiItemsProvider\";\r\n private _mapLayerOptions?: MapLayerOptions;\r\n\r\n public constructor(mapLayerOptions?: MapLayerOptions) {\r\n this._mapLayerOptions = mapLayerOptions ?? {\r\n hideExternalMapLayers: false,\r\n mapTypeOptions: { supportTileUrl: false, supportWmsAuthentication: true },\r\n fetchPublicMapLayerSources: false,\r\n };\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section: StagePanelSection | undefined, zoneLocation?: AbstractZoneLocation): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = []; // eslint-disable-line deprecation/deprecation\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n if ((undefined === section && stageUsage === StageUsage.General && zoneLocation === AbstractZoneLocation.CenterRight) ||\r\n (stageUsage === StageUsage.General && location === StagePanelLocation.Right && section === StagePanelSection.Start && \"1\" !== UiFramework.uiVersion)) { // eslint-disable-line deprecation/deprecation\r\n widgets.push({\r\n id: \"map-layers:mapLayersWidget\",\r\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.Label\"),\r\n icon: \"icon-map\",\r\n getWidgetContent: () => <MapLayersWidget mapLayerOptions={this._mapLayerOptions} />, // eslint-disable-line react/display-name\r\n });\r\n }\r\n\r\n return widgets;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInfoWidget.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\n\r\nimport { PropertyGrid} from \"@itwin/components-react\";\r\nimport { FillCentered, Orientation } from \"@itwin/core-react\";\r\n\r\nimport { FeatureInfoDataProvider, MapFeatureInfoDataUpdate, MapFeatureInfoLoadState } from \"./FeatureInfoDataProvider\";\r\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\r\nimport { MapFeatureInfoOptions } from \"../Interfaces\";\r\nimport { MapLayersUI } from \"../../mapLayers\";\r\n\r\ninterface MapFeatureInfoWidgetProps {\r\n featureInfoOpts: MapFeatureInfoOptions;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps) {\r\n\r\n const dataProvider = React.useRef<FeatureInfoDataProvider>();\r\n const [loadingData, setLoadingData] = React.useState<boolean>(false);\r\n const [hasData, setHasData] = React.useState<boolean>(false);\r\n const [noRecordsMessage] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.NoRecords\"));\r\n\r\n const handleLoadStateChange = (state: MapFeatureInfoLoadState) => {\r\n setLoadingData(state === MapFeatureInfoLoadState.DataLoadStart);\r\n };\r\n const handleDataUpdated = (state: MapFeatureInfoDataUpdate) => {\r\n setHasData(state.recordCount !== 0);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.onMapHit) {\r\n dataProvider.current = new FeatureInfoDataProvider(featureInfoOpts.onMapHit);\r\n }\r\n return () => {\r\n dataProvider?.current?.onUnload();\r\n };\r\n }, [featureInfoOpts?.onMapHit]);\r\n\r\n React.useEffect(() => {\r\n\r\n dataProvider.current?.onDataUpdated.addListener(handleDataUpdated);\r\n return () => {\r\n dataProvider.current?.onDataUpdated.removeListener(handleDataUpdated);\r\n };\r\n\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.showLoadProgressAnimation) {\r\n dataProvider.current?.onDataLoadStateChanged.addListener(handleLoadStateChange);\r\n return () => {\r\n dataProvider.current?.onDataLoadStateChanged.removeListener(handleLoadStateChange);\r\n };\r\n }\r\n return;\r\n\r\n }, [featureInfoOpts?.showLoadProgressAnimation]);\r\n\r\n if (loadingData) {\r\n return (<FillCentered><ProgressRadial indeterminate={true}></ProgressRadial></FillCentered>);\r\n } else if (!hasData) {\r\n return (<FillCentered><span><i>{noRecordsMessage}</i></span></FillCentered>);\r\n } else{\r\n if (dataProvider.current)\r\n return (<PropertyGrid dataProvider={dataProvider.current} orientation={Orientation.Vertical}\r\n isPropertySelectionEnabled={featureInfoOpts?.propertyGridOptions?.isPropertySelectionEnabled} />);\r\n else\r\n return (<></>);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureInfoWidget.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\n\r\nimport { PropertyGrid } from \"@itwin/components-react\";\r\nimport { FillCentered, Orientation } from \"@itwin/core-react\";\r\n\r\nimport { FeatureInfoDataProvider, MapFeatureInfoDataUpdate, MapFeatureInfoLoadState } from \"./FeatureInfoDataProvider\";\r\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\r\nimport { MapFeatureInfoOptions } from \"../Interfaces\";\r\nimport { MapLayersUI } from \"../../mapLayers\";\r\n\r\ninterface MapFeatureInfoWidgetProps {\r\n featureInfoOpts: MapFeatureInfoOptions;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps) {\r\n\r\n const dataProvider = React.useRef<FeatureInfoDataProvider>();\r\n const [loadingData, setLoadingData] = React.useState<boolean>(false);\r\n const [hasData, setHasData] = React.useState<boolean>(false);\r\n const [noRecordsMessage] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.NoRecords\"));\r\n\r\n const handleLoadStateChange = (state: MapFeatureInfoLoadState) => {\r\n setLoadingData(state === MapFeatureInfoLoadState.DataLoadStart);\r\n };\r\n const handleDataUpdated = (state: MapFeatureInfoDataUpdate) => {\r\n setHasData(state.recordCount !== 0);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.onMapHit) {\r\n dataProvider.current = new FeatureInfoDataProvider(featureInfoOpts.onMapHit);\r\n }\r\n return () => {\r\n dataProvider?.current?.onUnload();\r\n };\r\n }, [featureInfoOpts?.onMapHit]);\r\n\r\n React.useEffect(() => {\r\n\r\n dataProvider.current?.onDataUpdated.addListener(handleDataUpdated);\r\n return () => {\r\n dataProvider.current?.onDataUpdated.removeListener(handleDataUpdated);\r\n };\r\n\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.showLoadProgressAnimation) {\r\n dataProvider.current?.onDataLoadStateChanged.addListener(handleLoadStateChange);\r\n return () => {\r\n dataProvider.current?.onDataLoadStateChanged.removeListener(handleLoadStateChange);\r\n };\r\n }\r\n return;\r\n\r\n }, [featureInfoOpts?.showLoadProgressAnimation]);\r\n\r\n if (loadingData) {\r\n return (<FillCentered><ProgressRadial indeterminate={true}></ProgressRadial></FillCentered>);\r\n } else if (!hasData) {\r\n return (<FillCentered><span><i>{noRecordsMessage}</i></span></FillCentered>);\r\n } else {\r\n if (dataProvider.current)\r\n return (<PropertyGrid dataProvider={dataProvider.current} orientation={Orientation.Vertical} // eslint-disable-line deprecation/deprecation\r\n isPropertySelectionEnabled={featureInfoOpts?.propertyGridOptions?.isPropertySelectionEnabled} />);\r\n else\r\n return (<></>);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerDroppable.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/MapLayerDroppable.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAiC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOrF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,wBAAwB,CAAC;AAIhC,gBAAgB;AAChB,UAAU,sBAAsB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,EAAE,MAAM,WAAW,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtF,6BAA6B,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAEhB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAyG9D"}
1
+ {"version":3,"file":"MapLayerDroppable.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/MapLayerDroppable.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAkE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOtH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,wBAAwB,CAAC;AAIhC,gBAAgB;AAChB,UAAU,sBAAsB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,EAAE,MAAM,WAAW,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtF,6BAA6B,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAEhB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAmH9D"}
@@ -7,7 +7,7 @@
7
7
  /* eslint-disable @typescript-eslint/unbound-method */
8
8
  import * as React from "react";
9
9
  import { Draggable, Droppable } from "react-beautiful-dnd";
10
- import { MapLayerImageryProviderStatus } from "@itwin/core-frontend";
10
+ import { MapLayerImageryProviderStatus, MapTileTreeScaleRangeVisibility } from "@itwin/core-frontend";
11
11
  import { Icon } from "@itwin/core-react";
12
12
  import { assert } from "@itwin/core-bentley";
13
13
  import { ModalDialogManager } from "@itwin/appui-react";
@@ -29,14 +29,16 @@ export function MapLayerDroppable(props) {
29
29
  const [noBackgroundMapsSpecifiedLabel] = React.useState(MapLayersUI.localization.getLocalizedString("mapLayers:Widget.NoBackgroundLayers"));
30
30
  const [noUnderlaysSpecifiedLabel] = React.useState(MapLayersUI.localization.getLocalizedString("mapLayers:Widget.NoOverlayLayers"));
31
31
  const [dropLayerLabel] = React.useState(MapLayersUI.localization.getLocalizedString("mapLayers:Widget.DropLayerLabel"));
32
+ const [outOfRangeTitle] = React.useState(MapLayersUI.localization.getLocalizedString("mapLayers:Widget.layerOutOfRange"));
32
33
  const renderItem = (dragProvided, _, rubric) => {
33
34
  var _a;
34
35
  assert(props.layersList !== undefined);
35
36
  const activeLayer = props.layersList[rubric.source.index];
37
+ const outOfRange = activeLayer.treeVisibility === MapTileTreeScaleRangeVisibility.Hidden;
36
38
  return (React.createElement("div", { className: "map-manager-source-item", "data-id": rubric.source.index, key: activeLayer.name, ...dragProvided.draggableProps, ref: dragProvided.innerRef },
37
39
  React.createElement(Button, { disabled: props.disabled, size: "small", styleType: "borderless", className: "map-manager-item-visibility", title: toggleVisibility, onClick: () => { props.onItemVisibilityToggleClicked(activeLayer); } },
38
40
  React.createElement(Icon, { iconSpec: activeLayer.visible ? "icon-visibility" : "icon-visibility-hide-2" })),
39
- React.createElement("span", { className: props.disabled ? "map-manager-item-label-disabled" : "map-manager-item-label", ...dragProvided.dragHandleProps }, activeLayer.name),
41
+ React.createElement("span", { className: props.disabled || outOfRange ? "map-manager-item-label-disabled" : "map-manager-item-label", title: outOfRange ? outOfRangeTitle : undefined, ...dragProvided.dragHandleProps }, activeLayer.name),
40
42
  React.createElement("div", { className: "map-manager-item-sub-layer-container" }, activeLayer.subLayers && activeLayer.subLayers.length > 1 &&
41
43
  React.createElement(SubLayersPopupButton, { mapLayerSettings: activeLayer, activeViewport: props.activeViewport })),
42
44
  ((_a = activeLayer.provider) === null || _a === void 0 ? void 0 : _a.status) === MapLayerImageryProviderStatus.RequireAuth &&