@itwin/editor-frontend 5.0.0-dev.32 → 5.0.0-dev.34

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectGeolocation.js","sourceRoot":"","sources":["../../../src/ProjectLocation/ProjectGeolocation.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,wDAA8U;AAC9U,wDAAyF;AACzF,oDAAwE;AACxE,yEAA0E;AAC1E,0DAA2F;AAC3F,0CAAwC;AAExC,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,oBAAS,CAAC,SAAS,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,oBAAS,CAAC,SAAS,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,MAAM,eAAe;IAKnB,YAAY,aAAqB,EAAE,KAAa;QAJzC,kBAAa,GAAG,IAAI,uBAAO,EAAE,CAAC;QAC9B,aAAQ,GAAG,IAAI,uBAAO,EAAE,CAAC;QAI9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,cAAc,CAAC,GAA6B;QACjD,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,qCAAqC;QACrF,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;QAEnE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;QAC1B,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACjC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;QAC1B,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QAE7E,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QACxB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACzB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;IAEM,WAAW,CAAC,EAAY;QAC7B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,gCAAgC;QAChG,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAEM,aAAa,CAAC,OAAwB;QAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAa,2BAA4B,SAAQ,6BAAa;IAA9D;;QAOY,sBAAiB,GAAG,KAAK,CAAC;QAC1B,0BAAqB,GAAG,KAAK,CAAC;QAE9B,YAAO,GAAG,KAAK,CAAC;QAChB,WAAM,GAAG,GAAG,CAAC;IA4QzB,CAAC;IAnRQ,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAUvF,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACxM,eAAe,CAAC,GAAkB,EAAE,cAAuB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,6DAA6D;IACpJ,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACxF,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAGrE,IAAW,gBAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,+BAAc,CAAS,IAAI,gCAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3H,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAW,QAAQ,KAAa,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,IAAW,QAAQ,CAAC,KAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAG3E,IAAW,iBAAiB;QAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAc,CAAS,IAAI,gCAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9H,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,IAAW,SAAS,KAAa,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,IAAW,SAAS,CAAC,KAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAG7E,IAAW,gBAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,+BAAc,CAAS,IAAI,iCAAiB,CAAC,UAAU,EAAE,yBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9I,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAW,QAAQ,KAAa,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,IAAW,QAAQ,CAAC,KAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAG3E,IAAW,aAAa;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAS,IAAI,gCAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAW,KAAK,CAAC,KAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAE7D,2BAA2B;QACjC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClK,CAAC;IAEe,KAAK,CAAC,8BAA8B,CAAC,YAAoC;QACvF,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAEe,4BAA4B;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,KAAK,EAAc,CAAC;QAC7C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,YAAY,CAAC;IACtB,CAAC;IAES,qBAAqB;QAC7B,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACjI,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,eAAe,GAAG,8BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACtK,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAAc,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,8BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,yBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAES,2BAA2B;QACnC,yBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,OAAO;QAET,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;YACnB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAEpB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACtC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAEO,oBAAoB;QAC1B,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;IAC/C,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;YACtE,OAAO;QAET,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YAC/B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;YAC3C,OAAO;QAET,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;QAC9D,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAES,qBAAqB;QAC7B,uFAAuF;QACvF,IAAI,CAAC,QAAQ,GAAG,qBAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,qBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAEM,mBAAmB,CAAC,EAAiB;QAC1C,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,oEAAoE;QACzF,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAE3F,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7E,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACtC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;gBACxC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC;YACvD,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,0DAA0D;QAClF,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,MAAM,MAAM,GAAG,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvH,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO;QAET,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;IACjE,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,4BAAY,CAAC,EAAE,CAAC,CAAC,6BAA6B;QAEvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,iBAAiB;YACpB,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAE/B,MAAM,eAAe,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;QACrE,IAAI,CAAC,eAAe;YAClB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEjC,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,IAAI,CAAC,uDAA4B,CAAC,uBAAuB,CAAC,KAAK,CAAC;YAC9D,OAAO,KAAK,CAAC;QAEf,6GAA6G;QAC7G,IAAI,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAErI,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,WAAW,CAAC,GAAG,SAAmB;QACtD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;gBACpB,SAAS;YAEX,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3G,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7G,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC9E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,SAAS,KAAuB,OAAO,IAAI,2BAA2B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;AAtRvG,kEAuRC;AAtRwB,kCAAM,GAAG,mCAAmC,AAAtC,CAAuC;AAC7C,oCAAQ,GAAG,YAAY,AAAf,CAAgB,CAAC,4DAA4D;AAuR9G;;GAEG;AACH,MAAa,2BAA4B,SAAQ,6BAAa;IAM5C,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACxM,eAAe,CAAC,GAAkB,EAAE,cAAuB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,6DAA6D;IACpJ,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACxF,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IACe,KAAK,CAAC,SAAS;QAC7B,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IACM,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAE3D,qBAAqB;QAC7B,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,eAAe,GAAG,8BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1J,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAAc,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,8BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,yBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAES,2BAA2B;QACnC,yBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO;QAET,MAAM,KAAK,GAAG,IAAI,mCAAmB,EAAE,CAAC;QACxC,KAAK,CAAC,SAAS,CAAC,wBAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC;IAEO,gBAAgB,CAAC,EAAiB;QACxC,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO,SAAS,CAAC;QACnB,OAAO,mCAAmB,CAAC,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,wBAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,QAAS,EAAE,IAAI,CAAC,CAAC;IACrH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;IAC/C,CAAC;IAEO,iBAAiB,CAAC,EAAiB;QACzC,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO;QAET,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,IAAI,CAAC,SAAS,GAAG,qBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;;YAE1D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEtF,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO;QAET,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,MAAM;YAC/C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAC9C,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;YACxE,OAAO;QAET,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO;QAET,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC3B,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;QAC9D,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,4BAAY,CAAC,EAAE,CAAC,CAAC,6BAA6B;QAEvD,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,OAAO,4BAAY,CAAC,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;YAChD,IAAI,SAAS,KAAK,IAAI;gBACpB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;QAC9D,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,SAAS,KAAuB,OAAO,uDAA4B,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnH,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,2BAA2B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;AA3IrF,kEA4IC;AA3IwB,kCAAM,GAAG,mCAAmC,CAAC;AAC7C,oCAAQ,GAAG,cAAc,CAAC,CAAC,4DAA4D;AA4IhH;;GAEG;AACH,MAAa,0BAA2B,SAAQ,6BAAa;IAM3C,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACxM,eAAe,CAAC,GAAkB,EAAE,cAAuB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,6DAA6D;IACpJ,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACxF,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IACe,KAAK,CAAC,SAAS;QAC7B,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IACM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEe,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAE3D,qBAAqB;QAC7B,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,yBAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,eAAe,GAAG,8BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3J,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,IAAI,CAAC,8BAAc,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,8BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,yBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAES,2BAA2B;QACnC,yBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO;QAET,MAAM,KAAK,GAAG,IAAI,mCAAmB,EAAE,CAAC;QACxC,KAAK,CAAC,SAAS,CAAC,wBAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC;IAEO,oBAAoB;QAC1B,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EAAiB;QAC1C,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YACzD,OAAO;QAET,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;YAChD,OAAO;QAET,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;IACjE,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE;YACrG,OAAO;QAET,MAAM,IAAI,GAAG,uDAA4B,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,2BAAW,CAAC,eAAe,CAAC,CAAC;QAChF,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,2BAAW,CAAC,YAAY,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,sBAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE/C,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,sBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,sBAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,wBAAU,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,wBAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjH,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE3D,OAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QAChD,OAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QAEhD,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;IAC5C,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO;QAET,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC;QACzB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,0DAA0D;;YAEjF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,yBAAyB;QACxD,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,4BAAY,CAAC,EAAE,CAAC,CAAC,6BAA6B;QAEvD,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,OAAO,4BAAY,CAAC,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,SAAS,KAAuB,OAAO,uDAA4B,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnH,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;AA9IpF,gEA+IC;AA9IwB,iCAAM,GAAG,kCAAkC,CAAC;AAC5C,mCAAQ,GAAG,WAAW,CAAC,CAAC,4DAA4D","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { AccuDrawHintBuilder, AngleDescription, BeButtonEvent, CanvasDecoration, CoreTools, DecorateContext, EventHandled, GraphicType, IModelApp, LengthDescription, PrimitiveTool, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection, Viewport } from \"@itwin/core-frontend\";\nimport { Angle, Matrix3d, Point3d, Ray3d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\nimport { Cartographic, ColorDef, LinePixels } from \"@itwin/core-common\";\nimport { ProjectExtentsClipDecoration } from \"./ProjectExtentsDecoration\";\nimport { DialogItem, DialogProperty, DialogPropertySyncItem } from \"@itwin/appui-abstract\";\nimport { EditTools } from \"../EditTool\";\n\nfunction translatePrompt(key: string) {\n return EditTools.translate(`ProjectLocation:Prompts.${key}`);\n}\nfunction translateMessage(key: string) {\n return EditTools.translate(`ProjectLocation:Message.${key}`);\n}\n\n/** @internal */\nclass LabelDecoration implements CanvasDecoration {\n public worldLocation = new Point3d();\n public position = new Point3d();\n public label: string;\n\n constructor(worldLocation: XYAndZ, label: string) {\n this.worldLocation.setFrom(worldLocation);\n this.label = label;\n }\n\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\n ctx.font = \"16px san-serif\";\n const labelHeight = ctx.measureText(\"M\").width; // Close enough for border padding...\n const labelWidth = ctx.measureText(this.label).width + labelHeight;\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"white\";\n ctx.fillStyle = \"rgba(0,0,0,.4)\";\n ctx.shadowColor = \"black\";\n ctx.shadowBlur = 10;\n ctx.fillRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\n ctx.strokeRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\n\n ctx.fillStyle = \"white\";\n ctx.shadowBlur = 0;\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(this.label, 0, 0);\n }\n\n public setPosition(vp: Viewport): boolean {\n vp.worldToView(this.worldLocation, this.position);\n this.position.y -= Math.floor(vp.pixelsFromInches(0.45)) + 0.5; // Offset from world location...\n return vp.viewRect.containsPoint(this.position);\n }\n\n public addDecoration(context: DecorateContext) {\n if (this.setPosition(context.viewport))\n context.addCanvasDecoration(this);\n }\n}\n\n/** Change or update geolocation for project.\n * To show tool settings for specifying lat/long, make sure formatting and parsing data are cached before the tool starts\n * by calling QuantityFormatter.onInitialized at app startup.\n * @beta\n */\nexport class ProjectGeolocationPointTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.Point\";\n public static override iconSpec = \"icon-globe\"; // <== Tool button should use whatever icon you have here...\n\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 4; } // latitude, longitude, altitude, north direction...\n\n protected _haveToolSettings = false;\n protected _cartographicFromArgs = false;\n\n protected _accept = false;\n protected _scale = 1.0;\n protected _origin?: Point3d;\n protected _labelDeco?: LabelDecoration;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n\n public async onRestartTool() { return this.exitTool(); }\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n private _latitudeProperty: DialogProperty<number> | undefined;\n public get latitudeProperty() {\n if (!this._latitudeProperty)\n this._latitudeProperty = new DialogProperty<number>(new AngleDescription(\"latitude\", translateMessage(\"Latitude\")), 0.0);\n return this._latitudeProperty;\n }\n\n public get latitude(): number { return this.latitudeProperty.value; }\n public set latitude(value: number) { this.latitudeProperty.value = value; }\n\n private _longitudeProperty: DialogProperty<number> | undefined;\n public get longitudeProperty() {\n if (!this._longitudeProperty)\n this._longitudeProperty = new DialogProperty<number>(new AngleDescription(\"longitude\", translateMessage(\"Longitude\")), 0.0);\n return this._longitudeProperty;\n }\n\n public get longitude(): number { return this.longitudeProperty.value; }\n public set longitude(value: number) { this.longitudeProperty.value = value; }\n\n private _altitudeProperty: DialogProperty<number> | undefined;\n public get altitudeProperty() {\n if (!this._altitudeProperty)\n this._altitudeProperty = new DialogProperty<number>(new LengthDescription(\"altitude\", CoreTools.translate(\"Measure.Labels.Altitude\")), 0.0);\n return this._altitudeProperty;\n }\n\n public get altitude(): number { return this.altitudeProperty.value; }\n public set altitude(value: number) { this.altitudeProperty.value = value; }\n\n private _northProperty: DialogProperty<number> | undefined;\n public get northProperty() {\n if (!this._northProperty)\n this._northProperty = new DialogProperty<number>(new AngleDescription(\"north\", translateMessage(\"North\")), 0.0);\n return this._northProperty;\n }\n\n public get north(): number { return this.northProperty.value; }\n public set north(value: number) { this.northProperty.value = value; }\n\n private syncToolSettingsCoordinates(): void {\n this.syncToolSettingsProperties([this.latitudeProperty.syncItem, this.longitudeProperty.syncItem, this.altitudeProperty.syncItem, this.northProperty.syncItem]);\n }\n\n public override async applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean> {\n return this.changeToolSettingPropertyValue(updatedValue);\n }\n\n public override supplyToolSettingsProperties(): DialogItem[] | undefined {\n this._haveToolSettings = true;\n const toolSettings = new Array<DialogItem>();\n toolSettings.push(this.latitudeProperty.toDialogItem({ rowPriority: 1, columnIndex: 2 }));\n toolSettings.push(this.longitudeProperty.toDialogItem({ rowPriority: 2, columnIndex: 2 }));\n toolSettings.push(this.altitudeProperty.toDialogItem({ rowPriority: 3, columnIndex: 2 }));\n toolSettings.push(this.northProperty.toDialogItem({ rowPriority: 4, columnIndex: 2 }));\n return toolSettings;\n }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(undefined === this._origin ? \"ElementSet.Inputs.AcceptPoint\" : \"ElementSet.Inputs.Accept\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyKnownLocation\" : \"ConfirmCoordinates\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(undefined === this._origin);\n this.provideToolAssistance();\n }\n\n private pulseDecoration() {\n if (!this._accept)\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n this._scale += 0.1;\n if (this._scale > 1.6)\n this._scale = 1.0;\n\n deco.viewport.invalidateDecorations();\n setTimeout(() => this.pulseDecoration(), 100);\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._origin || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n deco.suspendGeolocationDecorations = true;\n deco.drawMonumentPoint(context, this._origin, this._scale);\n\n if (undefined !== this._labelDeco)\n this._labelDeco.addDecoration(context);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport || this._accept)\n return;\n\n this._origin = ev.point.clone();\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n protected acceptDefaultLocation(): void {\n // Greenwich is better default when testing control handle w/o tool settings support...\n this.latitude = Angle.createDegrees(51.4934).radians;\n this.longitude = Angle.createDegrees(0.0098).radians;\n this.altitude = 50.0;\n this.north = 0.0;\n }\n\n public acceptKnownLocation(ev: BeButtonEvent): void {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n this._accept = true; // Require explicit accept to give user a chance to change values...\n this._origin = ev.point.clone();\n this._labelDeco = new LabelDecoration(this._origin, translatePrompt(\"SpecifyCoordinates\"));\n\n if (!this._cartographicFromArgs) {\n if (this.iModel.isGeoLocated) {\n const cartographic = this.iModel.spatialToCartographicFromEcef(this._origin);\n this.latitude = cartographic.latitude;\n this.longitude = cartographic.longitude;\n this.altitude = cartographic.height;\n this.north = deco.getClockwiseAngleToNorth().radians;\n } else if (!this._haveToolSettings) {\n this.acceptDefaultLocation();\n }\n }\n\n this.syncToolSettingsCoordinates();\n this.pulseDecoration(); // Pulse to indicate that we are waiting for user input...\n this.setupAndPromptForNextAction();\n }\n\n public async acceptCoordinates(): Promise<void> {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const origin = Cartographic.fromRadians({ longitude: this.longitude, latitude: this.latitude, height: this.altitude });\n if (!deco.updateEcefLocation(origin, this._origin, Angle.createRadians(this.north)))\n return;\n\n return this.onReinitialize(); // Calls onRestartTool to exit...\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n const haveKnownLocation = this._accept;\n if (!haveKnownLocation)\n this.acceptKnownLocation(ev);\n\n const needAcceptPoint = !haveKnownLocation && this._haveToolSettings;\n if (!needAcceptPoint)\n await this.acceptCoordinates();\n\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> {\n if (!ProjectExtentsClipDecoration.allowEcefLocationChange(false))\n return false;\n\n // Setup initial values here instead of supplyToolSettingsProperties to support keyin args w/o appui-react...\n this.initializeToolSettingPropertyValues([this.latitudeProperty, this.longitudeProperty, this.altitudeProperty, this.northProperty]);\n\n return true;\n }\n\n /** The keyin takes the following arguments, all of which are optional:\n * - `latitude=number` Latitude of accept point in degrees.\n * - `longitude=number` Longitude of accept point in degrees.\n * - `altitude=number` Height above ellipsoid of accept point.\n * - `north=number` North direction in degrees of accept point.\n */\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\n for (const arg of inputArgs) {\n const parts = arg.split(\"=\");\n if (2 !== parts.length)\n continue;\n\n if (parts[0].toLowerCase().startsWith(\"la\")) {\n const latitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(latitude)) {\n this.saveToolSettingPropertyValue(this.latitudeProperty, { value: Angle.createDegrees(latitude).radians });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"lo\")) {\n const longitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(longitude)) {\n this.saveToolSettingPropertyValue(this.longitudeProperty, { value: Angle.createDegrees(longitude).radians });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"al\")) {\n const altitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(altitude)) {\n this.saveToolSettingPropertyValue(this.altitudeProperty, { value: altitude });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"no\")) {\n const north = Number.parseFloat(parts[1]);\n if (!Number.isNaN(north)) {\n this.saveToolSettingPropertyValue(this.northProperty, { value: Angle.createDegrees(north).radians });\n this._cartographicFromArgs = true;\n }\n }\n }\n\n return this.run();\n }\n\n public static async startTool(): Promise<boolean> { return new ProjectGeolocationPointTool().run(); }\n}\n\n/** Change or update geolocation direction to true north.\n * @beta\n */\nexport class ProjectGeolocationNorthTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.North\";\n public static override iconSpec = \"icon-sort-up\"; // <== Tool button should use whatever icon you have here...\n protected _origin?: Point3d;\n protected _northDir?: Ray3d;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n public async onRestartTool() { return this.exitTool(); }\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineAngle\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n\n if (undefined === this._origin)\n return;\n\n const hints = new AccuDrawHintBuilder();\n hints.setMatrix(Matrix3d.createIdentity());\n hints.setOrigin(this._origin);\n hints.setModePolar();\n hints.setOriginFixed = true;\n hints.setLockZ = true;\n hints.sendHints();\n }\n\n private getAdjustedPoint(ev: BeButtonEvent): Point3d | undefined {\n if (undefined === this._origin)\n return undefined;\n return AccuDrawHintBuilder.projectPointToPlaneInView(ev.point, this._origin, Vector3d.unitZ(), ev.viewport!, true);\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n private updateNorthVector(ev: BeButtonEvent): void {\n if (undefined === ev.viewport)\n return;\n\n if (undefined === this._northDir)\n this._northDir = Ray3d.create(ev.point, Vector3d.unitY());\n else\n this._northDir.origin.setFrom(undefined !== this._origin ? this._origin : ev.point);\n\n const dirPt = this.getAdjustedPoint(ev);\n if (undefined === dirPt)\n return;\n\n this._northDir.direction.setStartEnd(this._northDir.origin, dirPt);\n if (this._northDir.direction.magnitude() < 1.0e-6)\n this._northDir.direction.setFrom(Vector3d.unitY());\n\n this._northDir.direction.z = 0.0;\n this._northDir.direction.normalizeInPlace();\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._northDir || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n deco.suspendGeolocationDecorations = true;\n deco.drawNorthArrow(context, this._northDir);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport)\n return;\n\n this.updateNorthVector(ev);\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n if (undefined === this._origin) {\n this._origin = ev.point.clone();\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n this.updateNorthVector(ev);\n\n if (undefined !== this._northDir) {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.updateNorthDirection(this._northDir);\n }\n\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\n\n public static async startTool() { return new ProjectGeolocationNorthTool().run(); }\n}\n\n/** Move a geolocated model by specifying two points to define the offset.\n * @beta\n */\nexport class ProjectGeolocationMoveTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.Move\";\n public static override iconSpec = \"icon-move\"; // <== Tool button should use whatever icon you have here...\n protected _origin?: Point3d;\n protected _current?: Point3d;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n public async onRestartTool() {\n const tool = new ProjectGeolocationMoveTool();\n if (!await tool.run())\n return this.exitTool();\n }\n\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineOffset\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n\n if (undefined === this._origin)\n return;\n\n const hints = new AccuDrawHintBuilder();\n hints.setMatrix(Matrix3d.createIdentity());\n hints.setOrigin(this._origin);\n hints.setModePolar();\n hints.setOriginFixed = true;\n hints.sendHints();\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n private async acceptOffset(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport || undefined === this._origin)\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const origin = this.iModel.spatialToCartographicFromEcef(ev.point);\n if (!deco.updateEcefLocation(origin, this._origin))\n return;\n\n return this.onReinitialize(); // Calls onRestartTool to exit...\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._origin || undefined === this._current || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\n const colorAccHid = colorAccVis.withAlpha(100);\n\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\n\n const extents = this.iModel.projectExtents.cloneTranslated(Vector3d.createStartEnd(this._origin, this._current));\n\n builderAccVis.addRangeBox(extents);\n builderAccHid.addRangeBox(extents);\n builderAccHid.addLineString([this._origin, this._current]);\n\n context.addDecorationFromBuilder(builderAccVis);\n context.addDecorationFromBuilder(builderAccHid);\n\n deco.suspendGeolocationDecorations = true;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport)\n return;\n\n this._current = ev.point;\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === this._origin)\n await this.exitTool(); // exit to select tool if we haven't gotten first point...\n else\n await this.onReinitialize(); // Calls onRestartTool...\n return EventHandled.No;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n if (undefined === this._origin) {\n this._origin = ev.point.clone();\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n await this.acceptOffset(ev);\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\n\n public static async startTool() { return new ProjectGeolocationMoveTool().run(); }\n}\n\n"]}
1
+ {"version":3,"file":"ProjectGeolocation.js","sourceRoot":"","sources":["../../../src/ProjectLocation/ProjectGeolocation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { AccuDrawHintBuilder, AngleDescription, BeButtonEvent, CanvasDecoration, CoreTools, DecorateContext, EventHandled, GraphicType, IModelApp, LengthDescription, PrimitiveTool, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection, Viewport } from \"@itwin/core-frontend\";\nimport { Angle, Matrix3d, Point3d, Ray3d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\nimport { Cartographic, ColorDef, LinePixels } from \"@itwin/core-common\";\nimport { ProjectExtentsClipDecoration } from \"./ProjectExtentsDecoration\";\nimport { DialogItem, DialogProperty, DialogPropertySyncItem } from \"@itwin/appui-abstract\";\nimport { EditTools } from \"../EditTool\";\n\nfunction translatePrompt(key: string) {\n return EditTools.translate(`ProjectLocation:Prompts.${key}`);\n}\nfunction translateMessage(key: string) {\n return EditTools.translate(`ProjectLocation:Message.${key}`);\n}\n\n/** @internal */\nclass LabelDecoration implements CanvasDecoration {\n public worldLocation = new Point3d();\n public position = new Point3d();\n public label: string;\n\n constructor(worldLocation: XYAndZ, label: string) {\n this.worldLocation.setFrom(worldLocation);\n this.label = label;\n }\n\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\n ctx.font = \"16px san-serif\";\n const labelHeight = ctx.measureText(\"M\").width; // Close enough for border padding...\n const labelWidth = ctx.measureText(this.label).width + labelHeight;\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"white\";\n ctx.fillStyle = \"rgba(0,0,0,.4)\";\n ctx.shadowColor = \"black\";\n ctx.shadowBlur = 10;\n ctx.fillRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\n ctx.strokeRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\n\n ctx.fillStyle = \"white\";\n ctx.shadowBlur = 0;\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(this.label, 0, 0);\n }\n\n public setPosition(vp: Viewport): boolean {\n vp.worldToView(this.worldLocation, this.position);\n this.position.y -= Math.floor(vp.pixelsFromInches(0.45)) + 0.5; // Offset from world location...\n return vp.viewRect.containsPoint(this.position);\n }\n\n public addDecoration(context: DecorateContext) {\n if (this.setPosition(context.viewport))\n context.addCanvasDecoration(this);\n }\n}\n\n/** Change or update geolocation for project.\n * To show tool settings for specifying lat/long, make sure formatting and parsing data are cached before the tool starts\n * by calling QuantityFormatter.onInitialized at app startup.\n * @beta\n */\nexport class ProjectGeolocationPointTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.Point\";\n public static override iconSpec = \"icon-globe\"; // <== Tool button should use whatever icon you have here...\n\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 4; } // latitude, longitude, altitude, north direction...\n\n protected _haveToolSettings = false;\n protected _cartographicFromArgs = false;\n\n protected _accept = false;\n protected _scale = 1.0;\n protected _origin?: Point3d;\n protected _labelDeco?: LabelDecoration;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n\n public async onRestartTool() { return this.exitTool(); }\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n private _latitudeProperty: DialogProperty<number> | undefined;\n public get latitudeProperty() {\n if (!this._latitudeProperty)\n this._latitudeProperty = new DialogProperty<number>(new AngleDescription(\"latitude\", translateMessage(\"Latitude\")), 0.0);\n return this._latitudeProperty;\n }\n\n public get latitude(): number { return this.latitudeProperty.value; }\n public set latitude(value: number) { this.latitudeProperty.value = value; }\n\n private _longitudeProperty: DialogProperty<number> | undefined;\n public get longitudeProperty() {\n if (!this._longitudeProperty)\n this._longitudeProperty = new DialogProperty<number>(new AngleDescription(\"longitude\", translateMessage(\"Longitude\")), 0.0);\n return this._longitudeProperty;\n }\n\n public get longitude(): number { return this.longitudeProperty.value; }\n public set longitude(value: number) { this.longitudeProperty.value = value; }\n\n private _altitudeProperty: DialogProperty<number> | undefined;\n public get altitudeProperty() {\n if (!this._altitudeProperty)\n this._altitudeProperty = new DialogProperty<number>(new LengthDescription(\"altitude\", CoreTools.translate(\"Measure.Labels.Altitude\")), 0.0);\n return this._altitudeProperty;\n }\n\n public get altitude(): number { return this.altitudeProperty.value; }\n public set altitude(value: number) { this.altitudeProperty.value = value; }\n\n private _northProperty: DialogProperty<number> | undefined;\n public get northProperty() {\n if (!this._northProperty)\n this._northProperty = new DialogProperty<number>(new AngleDescription(\"north\", translateMessage(\"North\")), 0.0);\n return this._northProperty;\n }\n\n public get north(): number { return this.northProperty.value; }\n public set north(value: number) { this.northProperty.value = value; }\n\n private syncToolSettingsCoordinates(): void {\n this.syncToolSettingsProperties([this.latitudeProperty.syncItem, this.longitudeProperty.syncItem, this.altitudeProperty.syncItem, this.northProperty.syncItem]);\n }\n\n public override async applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean> {\n return this.changeToolSettingPropertyValue(updatedValue);\n }\n\n public override supplyToolSettingsProperties(): DialogItem[] | undefined {\n this._haveToolSettings = true;\n const toolSettings = new Array<DialogItem>();\n toolSettings.push(this.latitudeProperty.toDialogItem({ rowPriority: 1, columnIndex: 2 }));\n toolSettings.push(this.longitudeProperty.toDialogItem({ rowPriority: 2, columnIndex: 2 }));\n toolSettings.push(this.altitudeProperty.toDialogItem({ rowPriority: 3, columnIndex: 2 }));\n toolSettings.push(this.northProperty.toDialogItem({ rowPriority: 4, columnIndex: 2 }));\n return toolSettings;\n }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(undefined === this._origin ? \"ElementSet.Inputs.AcceptPoint\" : \"ElementSet.Inputs.Accept\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyKnownLocation\" : \"ConfirmCoordinates\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(undefined === this._origin);\n this.provideToolAssistance();\n }\n\n private pulseDecoration() {\n if (!this._accept)\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n this._scale += 0.1;\n if (this._scale > 1.6)\n this._scale = 1.0;\n\n deco.viewport.invalidateDecorations();\n setTimeout(() => this.pulseDecoration(), 100);\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._origin || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n deco.suspendGeolocationDecorations = true;\n deco.drawMonumentPoint(context, this._origin, this._scale);\n\n if (undefined !== this._labelDeco)\n this._labelDeco.addDecoration(context);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport || this._accept)\n return;\n\n this._origin = ev.point.clone();\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n protected acceptDefaultLocation(): void {\n // Greenwich is better default when testing control handle w/o tool settings support...\n this.latitude = Angle.createDegrees(51.4934).radians;\n this.longitude = Angle.createDegrees(0.0098).radians;\n this.altitude = 50.0;\n this.north = 0.0;\n }\n\n public acceptKnownLocation(ev: BeButtonEvent): void {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n this._accept = true; // Require explicit accept to give user a chance to change values...\n this._origin = ev.point.clone();\n this._labelDeco = new LabelDecoration(this._origin, translatePrompt(\"SpecifyCoordinates\"));\n\n if (!this._cartographicFromArgs) {\n if (this.iModel.isGeoLocated) {\n const cartographic = this.iModel.spatialToCartographicFromEcef(this._origin);\n this.latitude = cartographic.latitude;\n this.longitude = cartographic.longitude;\n this.altitude = cartographic.height;\n this.north = deco.getClockwiseAngleToNorth().radians;\n } else if (!this._haveToolSettings) {\n this.acceptDefaultLocation();\n }\n }\n\n this.syncToolSettingsCoordinates();\n this.pulseDecoration(); // Pulse to indicate that we are waiting for user input...\n this.setupAndPromptForNextAction();\n }\n\n public async acceptCoordinates(): Promise<void> {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const origin = Cartographic.fromRadians({ longitude: this.longitude, latitude: this.latitude, height: this.altitude });\n if (!deco.updateEcefLocation(origin, this._origin, Angle.createRadians(this.north)))\n return;\n\n return this.onReinitialize(); // Calls onRestartTool to exit...\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n const haveKnownLocation = this._accept;\n if (!haveKnownLocation)\n this.acceptKnownLocation(ev);\n\n const needAcceptPoint = !haveKnownLocation && this._haveToolSettings;\n if (!needAcceptPoint)\n await this.acceptCoordinates();\n\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> {\n if (!ProjectExtentsClipDecoration.allowEcefLocationChange(false))\n return false;\n\n // Setup initial values here instead of supplyToolSettingsProperties to support keyin args w/o appui-react...\n this.initializeToolSettingPropertyValues([this.latitudeProperty, this.longitudeProperty, this.altitudeProperty, this.northProperty]);\n\n return true;\n }\n\n /** The keyin takes the following arguments, all of which are optional:\n * - `latitude=number` Latitude of accept point in degrees.\n * - `longitude=number` Longitude of accept point in degrees.\n * - `altitude=number` Height above ellipsoid of accept point.\n * - `north=number` North direction in degrees of accept point.\n */\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\n for (const arg of inputArgs) {\n const parts = arg.split(\"=\");\n if (2 !== parts.length)\n continue;\n\n if (parts[0].toLowerCase().startsWith(\"la\")) {\n const latitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(latitude)) {\n this.saveToolSettingPropertyValue(this.latitudeProperty, { value: Angle.createDegrees(latitude).radians });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"lo\")) {\n const longitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(longitude)) {\n this.saveToolSettingPropertyValue(this.longitudeProperty, { value: Angle.createDegrees(longitude).radians });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"al\")) {\n const altitude = Number.parseFloat(parts[1]);\n if (!Number.isNaN(altitude)) {\n this.saveToolSettingPropertyValue(this.altitudeProperty, { value: altitude });\n this._cartographicFromArgs = true;\n }\n } else if (parts[0].toLowerCase().startsWith(\"no\")) {\n const north = Number.parseFloat(parts[1]);\n if (!Number.isNaN(north)) {\n this.saveToolSettingPropertyValue(this.northProperty, { value: Angle.createDegrees(north).radians });\n this._cartographicFromArgs = true;\n }\n }\n }\n\n return this.run();\n }\n\n public static async startTool(): Promise<boolean> { return new ProjectGeolocationPointTool().run(); }\n}\n\n/** Change or update geolocation direction to true north.\n * @beta\n */\nexport class ProjectGeolocationNorthTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.North\";\n public static override iconSpec = \"icon-sort-up\"; // <== Tool button should use whatever icon you have here...\n protected _origin?: Point3d;\n protected _northDir?: Ray3d;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n public async onRestartTool() { return this.exitTool(); }\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineAngle\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n\n if (undefined === this._origin)\n return;\n\n const hints = new AccuDrawHintBuilder();\n hints.setMatrix(Matrix3d.createIdentity());\n hints.setOrigin(this._origin);\n hints.setModePolar();\n hints.setOriginFixed = true;\n hints.setLockZ = true;\n hints.sendHints();\n }\n\n private getAdjustedPoint(ev: BeButtonEvent): Point3d | undefined {\n if (undefined === this._origin)\n return undefined;\n return AccuDrawHintBuilder.projectPointToPlaneInView(ev.point, this._origin, Vector3d.unitZ(), ev.viewport!, true);\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n private updateNorthVector(ev: BeButtonEvent): void {\n if (undefined === ev.viewport)\n return;\n\n if (undefined === this._northDir)\n this._northDir = Ray3d.create(ev.point, Vector3d.unitY());\n else\n this._northDir.origin.setFrom(undefined !== this._origin ? this._origin : ev.point);\n\n const dirPt = this.getAdjustedPoint(ev);\n if (undefined === dirPt)\n return;\n\n this._northDir.direction.setStartEnd(this._northDir.origin, dirPt);\n if (this._northDir.direction.magnitude() < 1.0e-6)\n this._northDir.direction.setFrom(Vector3d.unitY());\n\n this._northDir.direction.z = 0.0;\n this._northDir.direction.normalizeInPlace();\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._northDir || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n deco.suspendGeolocationDecorations = true;\n deco.drawNorthArrow(context, this._northDir);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport)\n return;\n\n this.updateNorthVector(ev);\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n if (undefined === this._origin) {\n this._origin = ev.point.clone();\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n this.updateNorthVector(ev);\n\n if (undefined !== this._northDir) {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.updateNorthDirection(this._northDir);\n }\n\n await this.onReinitialize(); // Calls onRestartTool to exit...\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\n\n public static async startTool() { return new ProjectGeolocationNorthTool().run(); }\n}\n\n/** Move a geolocated model by specifying two points to define the offset.\n * @beta\n */\nexport class ProjectGeolocationMoveTool extends PrimitiveTool {\n public static override toolId = \"ProjectLocation.Geolocation.Move\";\n public static override iconSpec = \"icon-move\"; // <== Tool button should use whatever icon you have here...\n protected _origin?: Point3d;\n protected _current?: Point3d;\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n public override async onCleanup() {\n await super.onCleanup();\n this.unsuspendDecorations();\n }\n public async onRestartTool() {\n const tool = new ProjectGeolocationMoveTool();\n if (!await tool.run())\n return this.exitTool();\n }\n\n public override async onUnsuspend() { this.provideToolAssistance(); }\n\n protected provideToolAssistance(): void {\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineOffset\"));\n const sections: ToolAssistanceSection[] = [];\n\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n\n const touchInstructions: ToolAssistanceInstruction[] = [];\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n\n if (undefined === this._origin)\n return;\n\n const hints = new AccuDrawHintBuilder();\n hints.setMatrix(Matrix3d.createIdentity());\n hints.setOrigin(this._origin);\n hints.setModePolar();\n hints.setOriginFixed = true;\n hints.sendHints();\n }\n\n private unsuspendDecorations() {\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined !== deco)\n deco.suspendGeolocationDecorations = false;\n }\n\n private async acceptOffset(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport || undefined === this._origin)\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const origin = this.iModel.spatialToCartographicFromEcef(ev.point);\n if (!deco.updateEcefLocation(origin, this._origin))\n return;\n\n return this.onReinitialize(); // Calls onRestartTool to exit...\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this._origin || undefined === this._current || !context.viewport.view.isSpatialView())\n return;\n\n const deco = ProjectExtentsClipDecoration.get();\n if (undefined === deco)\n return;\n\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\n const colorAccHid = colorAccVis.withAlpha(100);\n\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\n\n const extents = this.iModel.projectExtents.cloneTranslated(Vector3d.createStartEnd(this._origin, this._current));\n\n builderAccVis.addRangeBox(extents);\n builderAccHid.addRangeBox(extents);\n builderAccHid.addLineString([this._origin, this._current]);\n\n context.addDecorationFromBuilder(builderAccVis);\n context.addDecorationFromBuilder(builderAccHid);\n\n deco.suspendGeolocationDecorations = true;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport)\n return;\n\n this._current = ev.point;\n ev.viewport.invalidateDecorations();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === this._origin)\n await this.exitTool(); // exit to select tool if we haven't gotten first point...\n else\n await this.onReinitialize(); // Calls onRestartTool...\n return EventHandled.No;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No; // Shouldn't really happen...\n\n if (undefined === this._origin) {\n this._origin = ev.point.clone();\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n await this.acceptOffset(ev);\n return EventHandled.No;\n }\n\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\n\n public static async startTool() { return new ProjectGeolocationMoveTool().run(); }\n}\n\n"]}
@@ -13,6 +13,7 @@ const core_frontend_1 = require("@itwin/core-frontend");
13
13
  * @beta
14
14
  */
15
15
  class UndoAllTool extends core_frontend_1.Tool {
16
+ static { this.toolId = "UndoAll"; }
16
17
  async run() {
17
18
  const imodel = core_frontend_1.IModelApp.viewManager.selectedView?.view.iModel;
18
19
  if (undefined === imodel || imodel.isReadonly || !imodel.isBriefcaseConnection)
@@ -22,27 +23,26 @@ class UndoAllTool extends core_frontend_1.Tool {
22
23
  }
23
24
  }
24
25
  exports.UndoAllTool = UndoAllTool;
25
- UndoAllTool.toolId = "UndoAll";
26
26
  /** Undo active tool steps, or element changes
27
27
  * @beta
28
28
  */
29
29
  class UndoTool extends core_frontend_1.Tool {
30
+ static { this.toolId = "Undo"; }
30
31
  async run() {
31
32
  await core_frontend_1.IModelApp.toolAdmin.doUndoOperation();
32
33
  return true;
33
34
  }
34
35
  }
35
36
  exports.UndoTool = UndoTool;
36
- UndoTool.toolId = "Undo";
37
37
  /** Redo active tool steps, or element changes
38
38
  * @beta
39
39
  */
40
40
  class RedoTool extends core_frontend_1.Tool {
41
+ static { this.toolId = "Redo"; }
41
42
  async run() {
42
43
  await core_frontend_1.IModelApp.toolAdmin.doRedoOperation();
43
44
  return true;
44
45
  }
45
46
  }
46
47
  exports.RedoTool = RedoTool;
47
- RedoTool.toolId = "Redo";
48
48
  //# sourceMappingURL=UndoRedoTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UndoRedoTool.js","sourceRoot":"","sources":["../../src/UndoRedoTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,wDAA+D;AAE/D;;GAEG;AACH,MAAa,WAAY,SAAQ,oBAAI;IAEnB,KAAK,CAAC,GAAG;QACvB,MAAM,MAAM,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAC5E,OAAO,IAAI,CAAC;QAEd,MAAM,sBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;;AATH,kCAUC;AATwB,kBAAM,GAAG,SAAS,CAAC;AAW5C;;GAEG;AACH,MAAa,QAAS,SAAQ,oBAAI;IAEhB,KAAK,CAAC,GAAG;QACvB,MAAM,yBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;;AALH,4BAMC;AALwB,eAAM,GAAG,MAAM,CAAC;AAOzC;;GAEG;AACH,MAAa,QAAS,SAAQ,oBAAI;IAEhB,KAAK,CAAC,GAAG;QACvB,MAAM,yBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;;AALH,4BAMC;AALwB,eAAM,GAAG,MAAM,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { IModelApp, IpcApp, Tool } from \"@itwin/core-frontend\";\n\n/** Undo all element changes\n * @beta\n */\nexport class UndoAllTool extends Tool {\n public static override toolId = \"UndoAll\";\n public override async run(): Promise<boolean> {\n const imodel = IModelApp.viewManager.selectedView?.view.iModel;\n if (undefined === imodel || imodel.isReadonly || !imodel.isBriefcaseConnection)\n return true;\n\n await IpcApp.appFunctionIpc.reverseAllTxn(imodel.key);\n return true;\n }\n}\n\n/** Undo active tool steps, or element changes\n * @beta\n */\nexport class UndoTool extends Tool {\n public static override toolId = \"Undo\";\n public override async run(): Promise<boolean> {\n await IModelApp.toolAdmin.doUndoOperation();\n return true;\n }\n}\n\n/** Redo active tool steps, or element changes\n * @beta\n */\nexport class RedoTool extends Tool {\n public static override toolId = \"Redo\";\n public override async run(): Promise<boolean> {\n await IModelApp.toolAdmin.doRedoOperation();\n return true;\n }\n}\n\n"]}
1
+ {"version":3,"file":"UndoRedoTool.js","sourceRoot":"","sources":["../../src/UndoRedoTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,wDAA+D;AAE/D;;GAEG;AACH,MAAa,WAAY,SAAQ,oBAAI;aACZ,WAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,GAAG;QACvB,MAAM,MAAM,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAC5E,OAAO,IAAI,CAAC;QAEd,MAAM,sBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;;AATH,kCAUC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,oBAAI;aACT,WAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,GAAG;QACvB,MAAM,yBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;;AALH,4BAMC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,oBAAI;aACT,WAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,GAAG;QACvB,MAAM,yBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;;AALH,4BAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { IModelApp, IpcApp, Tool } from \"@itwin/core-frontend\";\n\n/** Undo all element changes\n * @beta\n */\nexport class UndoAllTool extends Tool {\n public static override toolId = \"UndoAll\";\n public override async run(): Promise<boolean> {\n const imodel = IModelApp.viewManager.selectedView?.view.iModel;\n if (undefined === imodel || imodel.isReadonly || !imodel.isBriefcaseConnection)\n return true;\n\n await IpcApp.appFunctionIpc.reverseAllTxn(imodel.key);\n return true;\n }\n}\n\n/** Undo active tool steps, or element changes\n * @beta\n */\nexport class UndoTool extends Tool {\n public static override toolId = \"Undo\";\n public override async run(): Promise<boolean> {\n await IModelApp.toolAdmin.doUndoOperation();\n return true;\n }\n}\n\n/** Redo active tool steps, or element changes\n * @beta\n */\nexport class RedoTool extends Tool {\n public static override toolId = \"Redo\";\n public override async run(): Promise<boolean> {\n await IModelApp.toolAdmin.doRedoOperation();\n return true;\n }\n}\n\n"]}
@@ -16,6 +16,9 @@ import * as ProjectGeoLocation from "./ProjectLocation/ProjectGeolocation";
16
16
  * @beta
17
17
  */
18
18
  export class EditTools {
19
+ static { this.namespace = "Editor"; }
20
+ static { this.tools = "Editor:tools."; }
21
+ static { this._initialized = false; }
19
22
  static async startCommand(startArg, ...cmdArgs) {
20
23
  let attempt = 0;
21
24
  while (true) {
@@ -74,7 +77,4 @@ export class EditTools {
74
77
  this._initialized = false;
75
78
  }
76
79
  }
77
- EditTools.namespace = "Editor";
78
- EditTools.tools = "Editor:tools.";
79
- EditTools._initialized = false;
80
80
  //# sourceMappingURL=EditTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditTool.js","sourceRoot":"","sources":["../../src/EditTool.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,eAAe,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,kBAAkB,MAAM,sCAAsC,CAAC;AAgB3E;;;GAGG;AACH,MAAM,OAAO,SAAS;IAMb,MAAM,CAAC,KAAK,CAAC,YAAY,CAAI,QAA6B,EAAE,GAAG,OAAc;QAClF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,MAAO,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,CAAgB,CAAC;YACrJ,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,WAAW;oBACzC,MAAM,CAAC,CAAC,CAAC,wBAAwB;gBACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBACnE,MAAM,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,SAAS,CAAC,MAAc;QACpC,OAAO,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU;QAC5B,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,oCAAoC;QACpC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,kFAAkF;QAClF,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,4BAA4B;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,OAAO;QACT,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,aAAa;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAS,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,MAAM,CAAC,QAAQ;QACrB,SAAS,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;;AAvEsB,mBAAS,GAAG,QAAQ,CAAC;AACrB,eAAK,GAAG,eAAe,CAAC;AAEhC,sBAAY,GAAG,KAAK,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { BeDuration } from \"@itwin/core-bentley\";\nimport { _callIpcChannel, IModelApp, IpcApp } from \"@itwin/core-frontend\";\nimport { editorIpcStrings } from \"@itwin/editor-common\";\n\nimport * as UndoRedoTools from \"./UndoRedoTool\";\nimport * as ProjectLocation from \"./ProjectLocation/ProjectExtentsDecoration\";\nimport * as ProjectGeoLocation from \"./ProjectLocation/ProjectGeolocation\";\n\n/** @beta */\nexport namespace EditTools {\n export interface StartArgs {\n commandId: string;\n iModelKey: string;\n }\n /** handler for retries when an EditTool attempts to start but a backend command is busy and can't finish its work.\n * @param attempt the number of times this handler was previously called for this EditTool\n * @param msg the message about what's happening from the currently busy EditCommand.\n * @returns the delay (in milliseconds) before attempting again. If `undefined` use default (usually 1 second)\n */\n export type BusyRetry = (attempt: number, msg: string) => Promise<number | undefined>;\n}\n\n/**\n * Supports PrimitiveTool and InputCollector sub-classes.\n * @beta\n */\nexport class EditTools {\n public static readonly namespace = \"Editor\";\n public static readonly tools = \"Editor:tools.\";\n public static busyRetry?: EditTools.BusyRetry;\n private static _initialized = false;\n\n public static async startCommand<T>(startArg: EditTools.StartArgs, ...cmdArgs: any[]): Promise<T> {\n let attempt = 0;\n while (true) {\n try {\n return await (IpcApp[_callIpcChannel](editorIpcStrings.channel, \"startCommand\", startArg.commandId, startArg.iModelKey, ...cmdArgs) as Promise<T>);\n } catch (e: any) {\n if (e.name !== editorIpcStrings.commandBusy)\n throw e; // unknown backend error\n const delay = await this.busyRetry?.(attempt++, e.message) ?? 1000;\n await BeDuration.fromMilliseconds(delay).wait();\n }\n }\n }\n\n /** @internal */\n public static translate(prompt: string) {\n return IModelApp.localization.getLocalizedString(this.tools + prompt);\n }\n\n /** Call this before using the package (e.g., before attempting to use any of its tools.)\n * To initialize when starting up your app:\n * ```ts\n * IModelApp.startup();\n * await EditorTools.initialize();\n * ```\n * @note This registers tools for element undo and redo.\n */\n public static async initialize(): Promise<void> {\n if (this._initialized)\n return;\n\n this._initialized = true;\n\n // clean up if we're being shut down\n IModelApp.onBeforeShutdown.addListener(() => this.shutdown());\n\n // Make sure current edit command finishes before starting a new primitive tool...\n IModelApp.toolAdmin.setEditCommandHandler(this);\n\n const namespacePromise = IModelApp.localization.registerNamespace(this.namespace);\n\n const tools = IModelApp.tools;\n tools.registerModule(UndoRedoTools, this.namespace);\n\n return namespacePromise;\n }\n\n /** Can be called after initialize to register tools for changing project extents and geolocation.\n * @note Requires backend to register BasicManipulationCommand with EditCommandAdmin.\n */\n public static registerProjectLocationTools(): void {\n if (!this._initialized)\n return;\n const tools = IModelApp.tools;\n tools.registerModule(ProjectLocation, this.namespace);\n tools.registerModule(ProjectGeoLocation, this.namespace);\n }\n\n /** @internal */\n public static async finishCommand(): Promise<string> {\n return this.startCommand<string>({ commandId: \"\", iModelKey: \"\" });\n }\n\n private static shutdown() {\n IModelApp.toolAdmin.setEditCommandHandler();\n this._initialized = false;\n }\n}\n"]}
1
+ {"version":3,"file":"EditTool.js","sourceRoot":"","sources":["../../src/EditTool.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,eAAe,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,kBAAkB,MAAM,sCAAsC,CAAC;AAgB3E;;;GAGG;AACH,MAAM,OAAO,SAAS;aACG,cAAS,GAAG,QAAQ,CAAC;aACrB,UAAK,GAAG,eAAe,CAAC;aAEhC,iBAAY,GAAG,KAAK,CAAC;IAE7B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAI,QAA6B,EAAE,GAAG,OAAc;QAClF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,MAAO,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,CAAgB,CAAC;YACrJ,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,WAAW;oBACzC,MAAM,CAAC,CAAC,CAAC,wBAAwB;gBACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBACnE,MAAM,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,SAAS,CAAC,MAAc;QACpC,OAAO,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU;QAC5B,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,oCAAoC;QACpC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,kFAAkF;QAClF,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,4BAA4B;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,OAAO;QACT,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,aAAa;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAS,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,MAAM,CAAC,QAAQ;QACrB,SAAS,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Editing\n */\n\nimport { BeDuration } from \"@itwin/core-bentley\";\nimport { _callIpcChannel, IModelApp, IpcApp } from \"@itwin/core-frontend\";\nimport { editorIpcStrings } from \"@itwin/editor-common\";\n\nimport * as UndoRedoTools from \"./UndoRedoTool\";\nimport * as ProjectLocation from \"./ProjectLocation/ProjectExtentsDecoration\";\nimport * as ProjectGeoLocation from \"./ProjectLocation/ProjectGeolocation\";\n\n/** @beta */\nexport namespace EditTools {\n export interface StartArgs {\n commandId: string;\n iModelKey: string;\n }\n /** handler for retries when an EditTool attempts to start but a backend command is busy and can't finish its work.\n * @param attempt the number of times this handler was previously called for this EditTool\n * @param msg the message about what's happening from the currently busy EditCommand.\n * @returns the delay (in milliseconds) before attempting again. If `undefined` use default (usually 1 second)\n */\n export type BusyRetry = (attempt: number, msg: string) => Promise<number | undefined>;\n}\n\n/**\n * Supports PrimitiveTool and InputCollector sub-classes.\n * @beta\n */\nexport class EditTools {\n public static readonly namespace = \"Editor\";\n public static readonly tools = \"Editor:tools.\";\n public static busyRetry?: EditTools.BusyRetry;\n private static _initialized = false;\n\n public static async startCommand<T>(startArg: EditTools.StartArgs, ...cmdArgs: any[]): Promise<T> {\n let attempt = 0;\n while (true) {\n try {\n return await (IpcApp[_callIpcChannel](editorIpcStrings.channel, \"startCommand\", startArg.commandId, startArg.iModelKey, ...cmdArgs) as Promise<T>);\n } catch (e: any) {\n if (e.name !== editorIpcStrings.commandBusy)\n throw e; // unknown backend error\n const delay = await this.busyRetry?.(attempt++, e.message) ?? 1000;\n await BeDuration.fromMilliseconds(delay).wait();\n }\n }\n }\n\n /** @internal */\n public static translate(prompt: string) {\n return IModelApp.localization.getLocalizedString(this.tools + prompt);\n }\n\n /** Call this before using the package (e.g., before attempting to use any of its tools.)\n * To initialize when starting up your app:\n * ```ts\n * IModelApp.startup();\n * await EditorTools.initialize();\n * ```\n * @note This registers tools for element undo and redo.\n */\n public static async initialize(): Promise<void> {\n if (this._initialized)\n return;\n\n this._initialized = true;\n\n // clean up if we're being shut down\n IModelApp.onBeforeShutdown.addListener(() => this.shutdown());\n\n // Make sure current edit command finishes before starting a new primitive tool...\n IModelApp.toolAdmin.setEditCommandHandler(this);\n\n const namespacePromise = IModelApp.localization.registerNamespace(this.namespace);\n\n const tools = IModelApp.tools;\n tools.registerModule(UndoRedoTools, this.namespace);\n\n return namespacePromise;\n }\n\n /** Can be called after initialize to register tools for changing project extents and geolocation.\n * @note Requires backend to register BasicManipulationCommand with EditCommandAdmin.\n */\n public static registerProjectLocationTools(): void {\n if (!this._initialized)\n return;\n const tools = IModelApp.tools;\n tools.registerModule(ProjectLocation, this.namespace);\n tools.registerModule(ProjectGeoLocation, this.namespace);\n }\n\n /** @internal */\n public static async finishCommand(): Promise<string> {\n return this.startCommand<string>({ commandId: \"\", iModelKey: \"\" });\n }\n\n private static shutdown() {\n IModelApp.toolAdmin.setEditCommandHandler();\n this._initialized = false;\n }\n}\n"]}
@@ -725,6 +725,7 @@ export class ProjectExtentsClipDecoration extends EditManipulator.HandleProvider
725
725
  * @beta
726
726
  */
727
727
  export class ProjectLocationShowTool extends Tool {
728
+ static { this.toolId = "ProjectLocation.Show"; }
728
729
  async run() {
729
730
  const vp = IModelApp.viewManager.selectedView;
730
731
  if (undefined === vp || !ProjectExtentsClipDecoration.show(vp))
@@ -733,35 +734,35 @@ export class ProjectLocationShowTool extends Tool {
733
734
  return true;
734
735
  }
735
736
  }
736
- ProjectLocationShowTool.toolId = "ProjectLocation.Show";
737
737
  /** Hide project location decoration. Preserves changes to project extents view clip and geolocation.
738
738
  * @beta
739
739
  */
740
740
  export class ProjectLocationHideTool extends Tool {
741
+ static { this.toolId = "ProjectLocation.Hide"; }
741
742
  async run() {
742
743
  ProjectExtentsClipDecoration.hide();
743
744
  await IModelApp.toolAdmin.startDefaultTool();
744
745
  return true;
745
746
  }
746
747
  }
747
- ProjectLocationHideTool.toolId = "ProjectLocation.Hide";
748
748
  /** Clear project location decoration. Restore modified geolocation and remove view clip.
749
749
  * @beta
750
750
  */
751
751
  export class ProjectLocationCancelTool extends Tool {
752
+ static { this.toolId = "ProjectLocation.Cancel"; }
752
753
  async run() {
753
754
  ProjectExtentsClipDecoration.clear();
754
755
  await IModelApp.toolAdmin.startDefaultTool();
755
756
  return true;
756
757
  }
757
758
  }
758
- ProjectLocationCancelTool.toolId = "ProjectLocation.Cancel";
759
759
  /** Save modified project extents and geolocation. Updates decoration to reflect saved state.
760
760
  * @note Allowing this change to be undone is both problematic and undesirable.
761
761
  * Warns the user if called with previous changes to cancel restarting the TxnManager session.
762
762
  * @beta
763
763
  */
764
764
  export class ProjectLocationSaveTool extends Tool {
765
+ static { this.toolId = "ProjectLocation.Save"; }
765
766
  async allowRestartTxnSession(iModel) {
766
767
  if (!await iModel.txns.isUndoPossible())
767
768
  return true;
@@ -811,5 +812,4 @@ export class ProjectLocationSaveTool extends Tool {
811
812
  return true;
812
813
  }
813
814
  }
814
- ProjectLocationSaveTool.toolId = "ProjectLocation.Save";
815
815
  //# sourceMappingURL=ProjectExtentsDecoration.js.map