@wcardinal/wcardinal-ui 0.458.0-beta.0 → 0.458.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/wcardinal/ui/shape/variant/build-polygon.d.ts +3 -4
- package/dist/types/wcardinal/ui/shape/variant/create-polygon.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/e-shape-polygon-triangulated-impl.d.ts +6 -5
- package/dist/types/wcardinal/ui/shape/variant/e-shape-polygon-triangulated.d.ts +2 -1
- package/dist/types/wcardinal/ui/shape/variant/e-shape-polygon.d.ts +7 -31
- package/dist/types/wcardinal/ui/shape/variant/hit-test-polygon.d.ts +1 -1
- package/dist/types/wcardinal/ui/util/util-polygon.d.ts +1 -3
- package/dist/types/wcardinal/ui/util/util-straight-skeleton.d.ts +1 -1
- package/dist/wcardinal/ui/shape/variant/build-polygon.js +12 -14
- package/dist/wcardinal/ui/shape/variant/build-polygon.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-polygon.js +8 -15
- package/dist/wcardinal/ui/shape/variant/builder-polygon.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/create-polygon.js +32 -42
- package/dist/wcardinal/ui/shape/variant/create-polygon.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-line-points.js +2 -6
- package/dist/wcardinal/ui/shape/variant/e-shape-line-points.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-polygon-triangulated-impl.js +66 -59
- package/dist/wcardinal/ui/shape/variant/e-shape-polygon-triangulated-impl.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-polygon-triangulated.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/e-shape-polygon.js +22 -127
- package/dist/wcardinal/ui/shape/variant/e-shape-polygon.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/hit-test-polygon.js +21 -27
- package/dist/wcardinal/ui/shape/variant/hit-test-polygon.js.map +1 -1
- package/dist/wcardinal/ui/util/util-polygon.js +5 -9
- package/dist/wcardinal/ui/util/util-polygon.js.map +1 -1
- package/dist/wcardinal/ui/util/util-straight-skeleton-buffer.js +5 -7
- package/dist/wcardinal/ui/util/util-straight-skeleton-buffer.js.map +1 -1
- package/dist/wcardinal/ui/util/util-straight-skeleton.js +2 -4
- package/dist/wcardinal/ui/util/util-straight-skeleton.js.map +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark.js +1 -1
- package/dist/wcardinal-ui-theme-dark.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-white.js +1 -1
- package/dist/wcardinal-ui-theme-white.min.js +1 -1
- package/dist/wcardinal-ui.cjs.js +174 -311
- package/dist/wcardinal-ui.js +174 -311
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-straight-skeleton.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-straight-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;IAYC,uCAAY,MAA4C,EAAE,QAAgB,EAAE,OAAe;QAC1F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAES,+CAAO,GAAjB;QACC,6BAA6B;QAC7B,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,EAAE;QACF,wBAAwB;QACxB,iDAAiD;QACjD,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,CAAC,GAAa,EAAE,CAAC;QACvB,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpB,IAAM,EAAE,GAAG,EAAE,CAAC;YACd,IAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACf,IAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YAChC,IAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YAChC,wDAAwD;YACxD,IAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,IAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,IAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACf,GAAG,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,EAAE,CAAC;QACV,CAAC;QAED,uBAAuB;QACvB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,2DAA2D;YAC3D,+DAA+D;YAC/D,+DAA+D;YAC/D,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAM,GAAG,GAAG,GAAG,CAAC;YAChB,IAAM,GAAG,GAAG,CAAC,GAAG,CAAC;YACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACxB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACxB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACxB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACxB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YACrC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;gBACrC,IAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;oBACvC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;oBACrC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;oBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;wBAC1C,GAAG,GAAG,EAAE,CAAC;wBACT,IAAI,GAAG,CAAC,CAAC;oBACV,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;gBACrC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;gBACrC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,IAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;wBACvC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;wBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;4BAC1C,GAAG,GAAG,EAAE,CAAC;4BACT,IAAI,GAAG,CAAC,CAAC;wBACV,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;wBAC9B,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;wBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;4BAC9B,IAAM,EAAE,GAAG,CAAC,CAAC;4BACb,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gCACvC,GAAG,GAAG,EAAE,CAAC;gCACT,IAAI,GAAG,CAAC,CAAC;4BACV,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,eAAe;wBAChB,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,eAAe;oBAChB,CAAC;gBACF,CAAC;YACF,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;gBAClC,2DAA2D;gBAC3D,uDAAuD;gBACvD,uDAAuD;gBACvD,iHAAiH;gBACjH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;wBACxC,SAAS;oBACV,CAAC;oBACD,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrB,IAAM,GAAG,GAAG,GAAG,CAAC;oBAChB,IAAM,GAAG,GAAG,CAAC,GAAG,CAAC;oBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBAClC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC7B,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBAClC,IAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;wBACrB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;4BACvC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;4BAClC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;4BAClC,IAAM,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;4BACzB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gCAClB,IAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gCACxB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gCACnB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gCACvB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gCACnB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gCACvB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;gCACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;gCACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;gCACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;gCACxB,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;gCACrC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;gCACrC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;oCACtC,GAAG,GAAG,EAAE,CAAC;oCACT,IAAI,GAAG,CAAC,CAAC;gCACV,CAAC;4BACF,CAAC;wBACF,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,IAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBACxB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBACnB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACvB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBACnB,IAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACvB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;wBACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;wBACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;wBACxB,IAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;wBACxB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBAClC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;wBACrC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBAClC,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;wBAErC,QAAQ;wBACR,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC7B,IAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;4BACrB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gCACvC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gCAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oCACxC,GAAG,GAAG,EAAE,CAAC;oCACT,IAAI,GAAG,CAAC,CAAC;gCACV,CAAC;4BACF,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;gCAC7B,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gCAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oCAC7B,IAAM,EAAE,GAAG,CAAC,CAAC;oCACb,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;wCACvC,GAAG,GAAG,EAAE,CAAC;wCACT,IAAI,GAAG,CAAC,CAAC;oCACV,CAAC;gCACF,CAAC;qCAAM,CAAC;oCACP,cAAc;gCACf,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,cAAc;4BACf,CAAC;wBACF,CAAC;wBAED,QAAQ;wBACR,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;wBACxB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,IAAM,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;4BAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gCACvC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gCAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oCACxC,GAAG,GAAG,EAAE,CAAC;oCACT,IAAI,GAAG,CAAC,CAAC;gCACV,CAAC;4BACF,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;gCACpC,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gCAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oCAC7B,IAAM,EAAE,GAAG,CAAC,CAAC;oCACb,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;wCACvC,GAAG,GAAG,EAAE,CAAC;wCACT,IAAI,GAAG,CAAC,CAAC;oCACV,CAAC;gCACF,CAAC;qCAAM,CAAC;oCACP,cAAc;gCACf,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,cAAc;4BACf,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,GAAG,GAAG,CAAC;YACX,IAAI,GAAG,GAAG,CAAC;YACX,IAAI,GAAG,GAAG,CAAC;YACX,IAAI,GAAG,GAAG,CAAC;YACX,IAAI,GAAG,GAAG,CAAC;YACX,IAAI,GAAG,GAAG,CAAC;QACZ,CAAC;QAED,EAAE;QACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,4CAAI,GAAJ;QACC,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5B,mCAAmC;gBACnC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,6CAAK,GAAL;QACC,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACb,mBAAmB;YACnB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,KAAK,GAAG,6BAA6B,CAAC,WAAW,CAAC;QACxD,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpB,IAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YACpB,IAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YACpB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxD,yCAAyC;gBACzC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACxB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtB,EAAE,IAAI,CAAC,CAAC;gBACR,SAAS;YACV,CAAC;YACD,GAAG,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,CAAC,CAAC;QACT,CAAC;QAED,qDAAqD;QACrD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACf,IAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;gBACtD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC5B,EAAE,IAAI,CAAC,CAAC;YACT,CAAC;QACF,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,CAAC,IAAI,CAAC,CAAC;gBACR,CAAC;qBAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,CAAC;YACF,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACZ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACb,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACb,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACb,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,8CAAM,GAAN,UAAO,KAAa,EAAE,CAAS,EAAE,KAA2C;QAC3E,oBAAoB;QACpB,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,IAAM,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,IAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACpB,IAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxB,IAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACtB,IAAM,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QAEjE,kBAAkB;QAClB,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACpB,IAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/B,4BAA4B;QAC5B,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACf,CAAC;QACF,CAAC;QACD,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/B,iDAAiD;QACjD,IAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,IAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACpB,IAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;QACtB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACvB,4BAA4B;YAC5B,IAAM,MAAM,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,mBAAmB;YACnB,IAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEjC,qCAAqC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,IAAM,KAAK,GAAG,6BAA6B,CAAC,WAAW,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,6BAA6B;QAC7B,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,IAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBACjB,IAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;gBACtB,IAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAES,wDAAgB,GAA1B,UAA2B,KAAa,EAAE,CAAW;QACpD,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC7B,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,MAAM,CAAC;YACf,CAAC;QACF,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAED,2CAAG,GAAH,UAAI,MAAuC;QAC1C,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAClB,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;oBACxC,SAAS;gBACV,CAAC;gBACD,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;gBAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;oBAC7B,IAAM,GAAG,GAAG,GAAG,CAAC;oBAChB,IAAM,GAAG,GAAG,CAAC,GAAG,CAAC;oBACjB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;oBAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;wBAC7B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACT,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACT,MAAM;oBACP,CAAC;yBAAM,CAAC;wBACP,IAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBACvB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBACrB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBACtB,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;wBAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;4BACnC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACT,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACV,CAAC;6BAAM,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;4BACnC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;gCAC7B,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;oCACtB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oCACT,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gCACV,CAAC;qCAAM,CAAC;oCACP,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oCACT,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gCACV,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,kBAAkB;gCAClB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;gCAEhC,kBAAkB;gCAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oCAChB,CAAC,IAAI,CAAC,CAAC;gCACR,CAAC;gCACD,EAAE,IAAI,CAAC,CAAC;gCAER,kBAAkB;gCAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gCACb,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;4BACd,CAAC;4BACD,MAAM;wBACP,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBAC7B,IAAM,OAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC9E,IAAM,IAAE,GAAG,OAAK,CAAC,MAAM,CAAC;gBACxB,IAAM,IAAE,GAAG,OAAK,CAAC,OAAO,CAAC;gBACzB,IAAM,IAAE,GAAG,OAAK,CAAC,QAAQ,CAAC;gBAC1B,IAAM,IAAE,GAAG,OAAK,CAAC,OAAO,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChB,IAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAClB,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAChB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACf,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACZ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gCACX,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCACxB,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCACxB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gCAChB,IAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gCAClB,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gCAChB,CAAC,GAAG,CAAC,CAAC;4BACP,CAAC;iCAAM,CAAC;gCACP,MAAM;4BACP,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,OAAK,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;QACD,IAAM,KAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9E,IAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,IAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,IAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,IAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAClB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAChB,CAAC,GAAG,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACP,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAEa,kCAAI,GAAlB,UAAmB,OAAoB,EAAE,OAAe;QACvD,IAAM,MAAM,GAAG,IAAI,6BAA6B,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,IAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1B,IAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,IAAM,KAAK,GAAG,6BAA6B,CAAC,WAAW,CAAC;QACxD,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,IAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IA3lBgB,yCAAW,GAAU,EAAE,CAAC;IA4lB1C,oCAAC;CAAA,AA7lBD,IA6lBC;SA7lBY,6BAA6B;AA+lB1C;IAAA;IA6DA,CAAC;IA5Dc,yBAAI,GAAlB,UACC,MAAgB,EAChB,EAAc,EACd,EAAc,EACd,KAAkB,EAClB,OAAsB;QAHtB,mBAAA,EAAA,MAAc;QACd,mBAAA,EAAA,MAAc;QACd,sBAAA,EAAA,SAAiB,CAAC;QAClB,wBAAA,EAAA,cAAsB;QAEtB,IAAM,MAAM,GAAoC,EAAE,CAAC;QACnD,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACvD,IAAM,SAAS,GAAG,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3E,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEgB,yBAAI,GAArB,UAAsB,SAAwC,EAAE,KAAa;QAC5E,IAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YAC5B,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC/B,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAEgB,wBAAG,GAApB,UAAqB,SAAwC;QAC5D,IAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,IAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,IAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;YACzB,IAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC9B,IAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACd,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACF,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IACF,2BAAC;AAAD,CAAC,AA7DD,IA6DC","sourcesContent":["import { UtilPolygon } from \"./util-polygon\";\n\nexport class UtilStraightSkeletonWavefront {\n\tprotected static EMPTY_ARRAY: any[] = [];\n\treadonly parent: UtilStraightSkeletonWavefront | null;\n\tdistance: number;\n\treadonly points: number[];\n\treadonly normals: number[];\n\treadonly mappings: number[][];\n\treadonly rmappings: number[][];\n\treadonly bridges: number[];\n\treadonly children: UtilStraightSkeletonWavefront[];\n\tprotected readonly epsilon: number;\n\n\tconstructor(parent: UtilStraightSkeletonWavefront | null, distance: number, epsilon: number) {\n\t\tthis.parent = parent;\n\t\tthis.distance = distance;\n\t\tthis.points = [];\n\t\tthis.normals = [];\n\t\tthis.mappings = [];\n\t\tthis.rmappings = [];\n\t\tthis.bridges = [];\n\t\tthis.children = [];\n\t\tthis.epsilon = epsilon;\n\t}\n\n\tprotected advance(): boolean {\n\t\t// Calculate p[i], n[i], m[i]\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tif (pl <= 4) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Calculate s[i], t[i]\n\t\t//\n\t\t// t[i]=n[i] + s[i] m[i]\n\t\t// s[i]=(1 - dot(n[i],n[i-1])) / dot(m[i],n[i-1])\n\t\tconst epsilon = this.epsilon;\n\t\tconst t: number[] = [];\n\t\tconst n = this.normals;\n\t\tlet pnx = n[pl - 2];\n\t\tlet pny = n[pl - 1];\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst nx = n[i];\n\t\t\tconst ny = n[i + 1];\n\t\t\tconst mx = ny;\n\t\t\tconst my = -nx;\n\t\t\tconst dnm = mx * pnx + my * pny;\n\t\t\tconst dnn = nx * pnx + ny * pny;\n\t\t\t// TODO: ADD HANDLING FOR THE CASE DNM === 0 && DNN < 0\n\t\t\tconst s = 0 < Math.abs(dnm) ? (1 - dnn) / dnm : 0 <= dnn ? -0.5 * dnm : 0;\n\t\t\tconst tx = nx + s * mx;\n\t\t\tconst ty = ny + s * my;\n\t\t\tt.push(tx, ty);\n\t\t\tpnx = nx;\n\t\t\tpny = ny;\n\t\t}\n\n\t\t// Find the smallest dr\n\t\tlet mdr = 0;\n\t\tlet mdri = -1;\n\t\tlet ppix = p[pl - 2];\n\t\tlet ppiy = p[pl - 1];\n\t\tlet ptix = t[pl - 2];\n\t\tlet ptiy = t[pl - 1];\n\t\tlet pnix = n[pl - 2];\n\t\tlet pniy = n[pl - 1];\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t// Calculate dr where the i-th and (i-1)-th points collide.\n\t\t\t// dr = dot(n[i], p[i] - p[i - 1]) / dot(n[i], t[i] - t[i - 1])\n\t\t\t// dr = dot(m[i], p[i] - p[i - 1]) / dot(m[i], t[i] - t[i - 1])\n\t\t\tconst nix = n[i];\n\t\t\tconst niy = n[i + 1];\n\t\t\tconst mix = niy;\n\t\t\tconst miy = -nix;\n\t\t\tconst tix = t[i];\n\t\t\tconst tiy = t[i + 1];\n\t\t\tconst pix = p[i];\n\t\t\tconst piy = p[i + 1];\n\t\t\tconst dpix = pix - ppix;\n\t\t\tconst dpiy = piy - ppiy;\n\t\t\tconst dtix = tix - ptix;\n\t\t\tconst dtiy = tiy - ptiy;\n\t\t\tconst dtin = nix * dtix + niy * dtiy;\n\t\t\tif (epsilon < Math.abs(dtin)) {\n\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\tconst dr = dpin / dtin;\n\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\tconst dpim = mix * dpix + miy * dpiy;\n\t\t\t\t\tconst dtim = mix * dtix + miy * dtiy;\n\t\t\t\t\tif (Math.abs(dpim - dr * dtim) < epsilon) {\n\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst dpim = mix * dpix + miy * dpiy;\n\t\t\t\tconst dtim = mix * dtix + miy * dtiy;\n\t\t\t\tif (epsilon < Math.abs(dtim)) {\n\t\t\t\t\tconst dr = dpim / dtim;\n\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\t\t\tif (Math.abs(dpin - dr * dtin) < epsilon) {\n\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (Math.abs(dpim) < epsilon) {\n\t\t\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\t\t\tif (Math.abs(dpin) < epsilon) {\n\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// NO SOLUTIONS\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// NO SOLUTIONS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if this i-th point is a flex point.\n\t\t\tif (0 <= mix * pnix + pniy * miy) {\n\t\t\t\t// Calculate dr where the i-th point and k-th edge collide.\n\t\t\t\t// dr = dot(n[k], p[i] - p[k]) / dot(n[k], t[i] - t[k])\n\t\t\t\t// dr = dot(m[k], p[i] - p[k]) / dot(m[k], t[i] - t[k])\n\t\t\t\t// dr = (dot(m[k], p[i] - p[k]) - dot(m[k], p[k+1] - p[k])) / (dot(m[k], t[i] - t[k]) - dot(m[k], t[k+1] - t[k]))\n\t\t\t\tfor (let k = 0; k < pl; k += 2) {\n\t\t\t\t\tif (k === i || k === (pl + i - 2) % pl) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst pkx = p[k];\n\t\t\t\t\tconst pky = p[k + 1];\n\t\t\t\t\tconst nkx = n[k];\n\t\t\t\t\tconst nky = n[k + 1];\n\t\t\t\t\tconst mkx = nky;\n\t\t\t\t\tconst mky = -nkx;\n\t\t\t\t\tconst tkx = t[k];\n\t\t\t\t\tconst tky = t[k + 1];\n\t\t\t\t\tconst dpx = pix - pkx;\n\t\t\t\t\tconst dpy = piy - pky;\n\t\t\t\t\tconst dtx = tix - tkx;\n\t\t\t\t\tconst dty = tiy - tky;\n\t\t\t\t\tconst dtn = nkx * dtx + nky * dty;\n\t\t\t\t\tif (epsilon < Math.abs(dtn)) {\n\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\tconst dr = dpn / dtn;\n\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\tconst dpm = mkx * dpx + mky * dpy;\n\t\t\t\t\t\t\tconst dtm = mkx * dtx + mky * dty;\n\t\t\t\t\t\t\tconst a = dpm - dr * dtm;\n\t\t\t\t\t\t\tif (epsilon <= a) {\n\t\t\t\t\t\t\t\tconst nk = (k + 2) % pl;\n\t\t\t\t\t\t\t\tconst npkx = p[nk];\n\t\t\t\t\t\t\t\tconst npky = p[nk + 1];\n\t\t\t\t\t\t\t\tconst ntkx = t[nk];\n\t\t\t\t\t\t\t\tconst ntky = t[nk + 1];\n\t\t\t\t\t\t\t\tconst dpkx = npkx - pkx;\n\t\t\t\t\t\t\t\tconst dpky = npky - pky;\n\t\t\t\t\t\t\t\tconst dtkx = ntkx - tkx;\n\t\t\t\t\t\t\t\tconst dtky = ntky - tky;\n\t\t\t\t\t\t\t\tconst dpkm = mkx * dpkx + mky * dpky;\n\t\t\t\t\t\t\t\tconst dtkm = mkx * dtkx + mky * dtky;\n\t\t\t\t\t\t\t\tif (a - (dpkm - dr * dtkm) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst nk = (k + 2) % pl;\n\t\t\t\t\t\tconst npkx = p[nk];\n\t\t\t\t\t\tconst npky = p[nk + 1];\n\t\t\t\t\t\tconst ntkx = t[nk];\n\t\t\t\t\t\tconst ntky = t[nk + 1];\n\t\t\t\t\t\tconst dpkx = npkx - pkx;\n\t\t\t\t\t\tconst dpky = npky - pky;\n\t\t\t\t\t\tconst dtkx = ntkx - tkx;\n\t\t\t\t\t\tconst dtky = ntky - tky;\n\t\t\t\t\t\tconst dpm = mkx * dpx + mky * dpy;\n\t\t\t\t\t\tconst dpkm = mkx * dpkx + mky * dpky;\n\t\t\t\t\t\tconst dtm = mkx * dtx + mky * dty;\n\t\t\t\t\t\tconst dtkm = mkx * dtkx + mky * dtky;\n\n\t\t\t\t\t\t// b = 0\n\t\t\t\t\t\tif (epsilon < Math.abs(dtm)) {\n\t\t\t\t\t\t\tconst dr = dpm / dtm;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn - dr * dtn) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (Math.abs(dpm) < epsilon) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn) < epsilon) {\n\t\t\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// b = 1\n\t\t\t\t\t\tconst dtma = dtm - dtkm;\n\t\t\t\t\t\tif (epsilon < Math.abs(dtma)) {\n\t\t\t\t\t\t\tconst dr = (dpm - dpkm) / dtma;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn - dr * dtn) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (Math.abs(dpm - dpkm) < epsilon) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn) < epsilon) {\n\t\t\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tptix = tix;\n\t\t\tptiy = tiy;\n\t\t\tppix = pix;\n\t\t\tppiy = piy;\n\t\t\tpnix = nix;\n\t\t\tpniy = niy;\n\t\t}\n\n\t\t//\n\t\tif (0 <= mdri && 0 < mdr) {\n\t\t\tthis.distance += mdr;\n\t\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t\tp[i] -= mdr * t[i];\n\t\t\t\tp[i + 1] -= mdr * t[i + 1];\n\t\t\t}\n\t\t\tthis.merge();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Calculate the next wavefront and update `this.children`.\n\t * Please do not call this method more than one time.\n\t *\n\t * @returns next wavefronts\n\t */\n\tnext(): UtilStraightSkeletonWavefront[] {\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tconst children = this.children;\n\t\tif (pl <= 4) {\n\t\t\treturn children;\n\t\t}\n\t\tchildren.length = 0;\n\t\tthis.cut(children);\n\t\tfor (let i = children.length - 1; 0 <= i; --i) {\n\t\t\tif (!children[i].advance()) {\n\t\t\t\t// Failed to advance this wavefront\n\t\t\t\tchildren.splice(i, 1);\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\tmerge(): boolean {\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tif (pl <= 2) {\n\t\t\t// No need to merge\n\t\t\treturn false;\n\t\t}\n\n\t\tconst epsilon = this.epsilon;\n\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\tconst n = this.normals;\n\t\tconst m = this.mappings;\n\t\tconst b = this.bridges;\n\t\tlet nr = 0;\n\t\tlet ppx = p[0];\n\t\tlet ppy = p[1];\n\t\tlet ppi = 0;\n\t\tfor (let i = 2; i < pl; i += 2) {\n\t\t\tconst px = p[i];\n\t\t\tconst py = p[i + 1];\n\t\t\tconst dx = px - ppx;\n\t\t\tconst dy = py - ppy;\n\t\t\tif (Math.abs(dx) <= epsilon && Math.abs(dy) <= epsilon) {\n\t\t\t\t// Merge this point to the previous point\n\t\t\t\tm[ppi] = m[ppi + 1] = m[ppi].concat(m[i]);\n\t\t\t\tm[i] = m[i + 1] = empty;\n\t\t\t\tn[ppi] = n[i];\n\t\t\t\tn[ppi + 1] = n[i + 1];\n\t\t\t\tnr += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tppx = px;\n\t\t\tppy = py;\n\t\t\tppi = i;\n\t\t}\n\n\t\t// Merge the last one into the first one if necessary\n\t\tif (ppi !== 0) {\n\t\t\tconst dx = p[ppi] - p[0];\n\t\t\tconst dy = p[ppi + 1] - p[1];\n\t\t\tif (Math.abs(dx) < epsilon && Math.abs(dy) < epsilon) {\n\t\t\t\tm[0] = m[1] = m[ppi].concat(m[0]);\n\t\t\t\tm[ppi] = m[ppi + 1] = empty;\n\t\t\t\tnr += 1;\n\t\t\t}\n\t\t}\n\n\t\t// Remove merged points\n\t\tif (0 < nr) {\n\t\t\tlet k = 0;\n\t\t\tfor (let i = 0; i < pl; i += 2, k += 2) {\n\t\t\t\tif (m[i].length <= 0) {\n\t\t\t\t\tk -= 2;\n\t\t\t\t} else if (i !== k) {\n\t\t\t\t\tp[k] = p[i];\n\t\t\t\t\tp[k + 1] = p[i + 1];\n\t\t\t\t\tn[k] = n[i];\n\t\t\t\t\tn[k + 1] = n[i + 1];\n\t\t\t\t\tm[k] = m[i];\n\t\t\t\t\tm[k + 1] = m[i + 1];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (k < pl) {\n\t\t\t\tp.length = k;\n\t\t\t\tn.length = k;\n\t\t\t\tm.length = k;\n\t\t\t\tb.length = k;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tinsert(index: number, r: number, child: UtilStraightSkeletonWavefront | null): void {\n\t\t// Insert a position\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tconst nindex = (index + 2) % pl;\n\t\tconst px = p[index];\n\t\tconst py = p[index + 1];\n\t\tconst npx = p[nindex];\n\t\tconst npy = p[nindex + 1];\n\t\tp.splice(index + 2, 0, px + r * (npx - px), py + r * (npy - py));\n\n\t\t// Insert a normal\n\t\tconst n = this.normals;\n\t\tconst nx = n[index];\n\t\tconst ny = n[index + 1];\n\t\tn.splice(index + 2, 0, nx, ny);\n\n\t\t// Shift indices in bridges.\n\t\tconst b = this.bridges;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst bx = b[i];\n\t\t\tif (index < bx) {\n\t\t\t\tb[i] = bx + 2;\n\t\t\t}\n\t\t}\n\t\tb.splice(index + 2, 0, -1, -1);\n\n\t\t// Insert a mapping and shift indices in mappings\n\t\tconst m = this.mappings;\n\t\tconst mx = m[index];\n\t\tconst mxl = mx.length;\n\t\tconst parent = this.parent;\n\t\tif (parent && 0 < mxl) {\n\t\t\t// Shift indices in mappings\n\t\t\tconst pindex = mx[mxl - 1];\n\t\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t\tm[i] = m[i + 1] = this.toMappingShifted(pindex, m[i]);\n\t\t\t}\n\n\t\t\t// Insert a mapping\n\t\t\tconst nmx = [pindex + 2];\n\t\t\tm.splice(index + 2, 0, nmx, nmx);\n\n\t\t\t// Insert a vertex to parent vertices\n\t\t\tparent.insert(pindex, r, this);\n\t\t} else {\n\t\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\t\tm.splice(index + 2, 0, empty, empty);\n\t\t}\n\n\t\t// Shift mappings of children\n\t\tconst children = this.children;\n\t\tconst childrenLength = children.length;\n\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\tconst c = children[i];\n\t\t\tif (c !== child) {\n\t\t\t\tconst cm = c.mappings;\n\t\t\t\tconst cml = cm.length;\n\t\t\t\tfor (let k = 0; k < cml; k += 2) {\n\t\t\t\t\tcm[k] = cm[k + 1] = this.toMappingShifted(index, cm[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toMappingShifted(index: number, m: number[]): number[] {\n\t\tconst ml = m.length;\n\t\tfor (let i = 0; i < ml; ++i) {\n\t\t\tif (index < m[i]) {\n\t\t\t\tconst result: number[] = [];\n\t\t\t\tfor (let k = 0; k < ml; ++k) {\n\t\t\t\t\tconst mv = m[k];\n\t\t\t\t\tresult.push(index < mv ? mv + 2 : mv);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn m;\n\t}\n\n\tcut(result: UtilStraightSkeletonWavefront[]): boolean {\n\t\tconst p = this.points;\n\t\tlet pl = p.length;\n\t\tconst n = this.normals;\n\t\tconst b = this.bridges;\n\t\tconst epsilon = this.epsilon;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst pix = p[i];\n\t\t\tconst piy = p[i + 1];\n\t\t\tfor (let k = 0; k < pl; k += 2) {\n\t\t\t\tif (k === i || k === (pl + i - 2) % pl) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst pkx = p[k];\n\t\t\t\tconst pky = p[k + 1];\n\t\t\t\tconst nkx = n[k];\n\t\t\t\tconst nky = n[k + 1];\n\t\t\t\tconst dix = pix - pkx;\n\t\t\t\tconst diy = piy - pky;\n\t\t\t\tconst din = nkx * dix + nky * diy;\n\t\t\t\tif (Math.abs(din) < epsilon) {\n\t\t\t\t\tconst mkx = nky;\n\t\t\t\t\tconst mky = -nkx;\n\t\t\t\t\tconst dim = mkx * dix + mky * diy;\n\t\t\t\t\tif (Math.abs(dim) < epsilon) {\n\t\t\t\t\t\tb[i] = k;\n\t\t\t\t\t\tb[k] = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst l = (k + 2) % pl;\n\t\t\t\t\t\tconst plx = p[l];\n\t\t\t\t\t\tconst ply = p[l + 1];\n\t\t\t\t\t\tconst dlx = plx - pkx;\n\t\t\t\t\t\tconst dly = ply - pky;\n\t\t\t\t\t\tconst dlm = mkx * dlx + mky * dly;\n\t\t\t\t\t\tif (Math.abs(dim - dlm) < epsilon) {\n\t\t\t\t\t\t\tb[i] = l;\n\t\t\t\t\t\t\tb[l] = i;\n\t\t\t\t\t\t} else if (0 <= dim && dim <= dlm) {\n\t\t\t\t\t\t\tif (Math.abs(dlm) < epsilon) {\n\t\t\t\t\t\t\t\tif (dim <= 0.5 * dlm) {\n\t\t\t\t\t\t\t\t\tb[i] = k;\n\t\t\t\t\t\t\t\t\tb[k] = i;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tb[i] = l;\n\t\t\t\t\t\t\t\t\tb[l] = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Insert a vertex\n\t\t\t\t\t\t\t\tthis.insert(k, dim / dlm, null);\n\n\t\t\t\t\t\t\t\t// Adjust i and pl\n\t\t\t\t\t\t\t\tif (k + 2 <= i) {\n\t\t\t\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpl += 2;\n\n\t\t\t\t\t\t\t\t// Add this bridge\n\t\t\t\t\t\t\t\tb[i] = k + 2;\n\t\t\t\t\t\t\t\tb[k + 2] = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let ifrom = 0; ifrom < pl; ifrom += 2) {\n\t\t\tconst ito = b[ifrom];\n\t\t\tif (0 <= ito && ifrom < ito) {\n\t\t\t\tconst child = new UtilStraightSkeletonWavefront(this, this.distance, epsilon);\n\t\t\t\tconst cp = child.points;\n\t\t\t\tconst cn = child.normals;\n\t\t\t\tconst cm = child.mappings;\n\t\t\t\tconst cb = child.bridges;\n\t\t\t\tfor (let i = ifrom; i < pl; i += 2) {\n\t\t\t\t\tcp.push(p[i], p[i + 1]);\n\t\t\t\t\tcn.push(n[i], n[i + 1]);\n\t\t\t\t\tconst mix = [i];\n\t\t\t\t\tcm.push(mix, mix);\n\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\tif (ifrom < i) {\n\t\t\t\t\t\tconst k = b[i];\n\t\t\t\t\t\tif (0 <= k) {\n\t\t\t\t\t\t\tif (i < k) {\n\t\t\t\t\t\t\t\tcp.push(p[k], p[k + 1]);\n\t\t\t\t\t\t\t\tcn.push(n[k], n[k + 1]);\n\t\t\t\t\t\t\t\tconst mkx = [k];\n\t\t\t\t\t\t\t\tcm.push(mkx, mkx);\n\t\t\t\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\t\t\t\ti = k;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchild.merge();\n\t\t\t\tresult.push(child);\n\t\t\t}\n\t\t}\n\t\tconst child = new UtilStraightSkeletonWavefront(this, this.distance, epsilon);\n\t\tconst cp = child.points;\n\t\tconst cn = child.normals;\n\t\tconst cm = child.mappings;\n\t\tconst cb = child.bridges;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tcp.push(p[i], p[i + 1]);\n\t\t\tcn.push(n[i], n[i + 1]);\n\t\t\tconst mix = [i];\n\t\t\tcm.push(mix, mix);\n\t\t\tcb.push(-1, -1);\n\t\t\tconst k = b[i];\n\t\t\tif (0 <= k) {\n\t\t\t\tif (i < k) {\n\t\t\t\t\tcp.push(p[k], p[k + 1]);\n\t\t\t\t\tcn.push(n[k], n[k + 1]);\n\t\t\t\t\tconst mkx = [k];\n\t\t\t\t\tcm.push(mkx, mkx);\n\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\ti = k;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tchild.merge();\n\t\tresult.push(child);\n\t\treturn true;\n\t}\n\n\tpublic static from(polygon: UtilPolygon, epsilon: number): UtilStraightSkeletonWavefront {\n\t\tconst result = new UtilStraightSkeletonWavefront(null, 0, epsilon);\n\t\tconst points = polygon.points;\n\t\tconst pointsLength = points.length;\n\t\tif (pointsLength <= 0) {\n\t\t\treturn result;\n\t\t}\n\t\tconst normals = polygon.normals;\n\t\tconst p = result.points;\n\t\tconst n = result.normals;\n\t\tconst m = result.mappings;\n\t\tconst b = result.bridges;\n\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\tif (polygon.isCw()) {\n\t\t\tfor (let i = pointsLength - 2; 0 <= i; i -= 2) {\n\t\t\t\tconst k = (pointsLength + i - 2) % pointsLength;\n\t\t\t\tn.push(-normals[k], -normals[k + 1]);\n\t\t\t\tp.push(points[i], points[i + 1]);\n\t\t\t\tm.push(empty, empty);\n\t\t\t\tb.push(-1, -1);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < pointsLength; i += 2) {\n\t\t\t\tn.push(normals[i], normals[i + 1]);\n\t\t\t\tp.push(points[i], points[i + 1]);\n\t\t\t\tm.push(empty, empty);\n\t\t\t\tb.push(-1, -1);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport class UtilStraightSkeleton {\n\tpublic static from(\n\t\tpoints: number[],\n\t\tsx: number = 1,\n\t\tsy: number = 1,\n\t\tlevel: number = -1,\n\t\tepsilon: number = 1e-5\n\t): UtilStraightSkeletonWavefront[] {\n\t\tconst result: UtilStraightSkeletonWavefront[] = [];\n\t\tconst polygons = UtilPolygon.from(points, sx, sy, epsilon);\n\t\tfor (let i = 0, imax = polygons.length; i < imax; ++i) {\n\t\t\tconst wavefront = UtilStraightSkeletonWavefront.from(polygons[i], epsilon);\n\t\t\tif (level < 0 || 0 < level) {\n\t\t\t\tthis.next(wavefront, level);\n\t\t\t}\n\t\t\tthis.map(wavefront);\n\t\t\tresult.push(wavefront);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected static next(wavefront: UtilStraightSkeletonWavefront, level: number): void {\n\t\tconst children = wavefront.next();\n\t\tlevel -= 1;\n\t\tif (level < 0 || 0 < level) {\n\t\t\tconst childrenLength = children.length;\n\t\t\tif (0 < childrenLength) {\n\t\t\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\t\t\tthis.next(children[i], level);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected static map(wavefront: UtilStraightSkeletonWavefront): void {\n\t\tconst p = wavefront.points;\n\t\tconst pl = p.length;\n\t\tconst r = wavefront.rmappings;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tr.push([], []);\n\t\t}\n\n\t\tconst children = wavefront.children;\n\t\tconst childrenLength = children.length;\n\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tconst m = child.mappings;\n\t\t\tconst ml = m.length;\n\t\t\tfor (let k = 0; k < ml; k += 2) {\n\t\t\t\tconst mx = m[k];\n\t\t\t\tconst mxl = mx.length;\n\t\t\t\tfor (let l = 0; l < mxl; ++l) {\n\t\t\t\t\tconst mv = mx[l];\n\t\t\t\t\tr[mv].push(i);\n\t\t\t\t\tr[mv + 1].push(k);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.map(child);\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"util-straight-skeleton.js","sourceRoot":"","sources":["../../../../src/main/typescript/wcardinal/ui/util/util-straight-skeleton.ts"],"names":[],"mappings":"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","sourcesContent":["import { UtilPolygon } from \"./util-polygon\";\n\nexport class UtilStraightSkeletonWavefront {\n\tprotected static EMPTY_ARRAY: any[] = [];\n\treadonly parent: UtilStraightSkeletonWavefront | null;\n\tdistance: number;\n\treadonly points: number[];\n\treadonly normals: number[];\n\treadonly mappings: number[][];\n\treadonly rmappings: number[][];\n\treadonly bridges: number[];\n\treadonly children: UtilStraightSkeletonWavefront[];\n\tprotected readonly epsilon: number;\n\n\tconstructor(parent: UtilStraightSkeletonWavefront | null, distance: number, epsilon: number) {\n\t\tthis.parent = parent;\n\t\tthis.distance = distance;\n\t\tthis.points = [];\n\t\tthis.normals = [];\n\t\tthis.mappings = [];\n\t\tthis.rmappings = [];\n\t\tthis.bridges = [];\n\t\tthis.children = [];\n\t\tthis.epsilon = epsilon;\n\t}\n\n\tprotected advance(): boolean {\n\t\t// Calculate p[i], n[i], m[i]\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tif (pl <= 4) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Calculate s[i], t[i]\n\t\t//\n\t\t// t[i]=n[i] + s[i] m[i]\n\t\t// s[i]=(1 - dot(n[i],n[i-1])) / dot(m[i],n[i-1])\n\t\tconst epsilon = this.epsilon;\n\t\tconst t: number[] = [];\n\t\tconst n = this.normals;\n\t\tlet pnx = n[pl - 2];\n\t\tlet pny = n[pl - 1];\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst nx = n[i];\n\t\t\tconst ny = n[i + 1];\n\t\t\tconst mx = ny;\n\t\t\tconst my = -nx;\n\t\t\tconst dnm = mx * pnx + my * pny;\n\t\t\tconst dnn = nx * pnx + ny * pny;\n\t\t\t// TODO: ADD HANDLING FOR THE CASE DNM === 0 && DNN < 0\n\t\t\tconst s = 0 < Math.abs(dnm) ? (1 - dnn) / dnm : 0 <= dnn ? -0.5 * dnm : 0;\n\t\t\tconst tx = nx + s * mx;\n\t\t\tconst ty = ny + s * my;\n\t\t\tt.push(tx, ty);\n\t\t\tpnx = nx;\n\t\t\tpny = ny;\n\t\t}\n\n\t\t// Find the smallest dr\n\t\tlet mdr = 0;\n\t\tlet mdri = -1;\n\t\tlet ppix = p[pl - 2];\n\t\tlet ppiy = p[pl - 1];\n\t\tlet ptix = t[pl - 2];\n\t\tlet ptiy = t[pl - 1];\n\t\tlet pnix = n[pl - 2];\n\t\tlet pniy = n[pl - 1];\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t// Calculate dr where the i-th and (i-1)-th points collide.\n\t\t\t// dr = dot(n[i], p[i] - p[i - 1]) / dot(n[i], t[i] - t[i - 1])\n\t\t\t// dr = dot(m[i], p[i] - p[i - 1]) / dot(m[i], t[i] - t[i - 1])\n\t\t\tconst nix = n[i];\n\t\t\tconst niy = n[i + 1];\n\t\t\tconst mix = niy;\n\t\t\tconst miy = -nix;\n\t\t\tconst tix = t[i];\n\t\t\tconst tiy = t[i + 1];\n\t\t\tconst pix = p[i];\n\t\t\tconst piy = p[i + 1];\n\t\t\tconst dpix = pix - ppix;\n\t\t\tconst dpiy = piy - ppiy;\n\t\t\tconst dtix = tix - ptix;\n\t\t\tconst dtiy = tiy - ptiy;\n\t\t\tconst dtin = nix * dtix + niy * dtiy;\n\t\t\tif (epsilon < Math.abs(dtin)) {\n\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\tconst dr = dpin / dtin;\n\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\tconst dpim = mix * dpix + miy * dpiy;\n\t\t\t\t\tconst dtim = mix * dtix + miy * dtiy;\n\t\t\t\t\tif (Math.abs(dpim - dr * dtim) < epsilon) {\n\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst dpim = mix * dpix + miy * dpiy;\n\t\t\t\tconst dtim = mix * dtix + miy * dtiy;\n\t\t\t\tif (epsilon < Math.abs(dtim)) {\n\t\t\t\t\tconst dr = dpim / dtim;\n\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\t\t\tif (Math.abs(dpin - dr * dtin) < epsilon) {\n\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (Math.abs(dpim) < epsilon) {\n\t\t\t\t\t\tconst dpin = nix * dpix + niy * dpiy;\n\t\t\t\t\t\tif (Math.abs(dpin) < epsilon) {\n\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// NO SOLUTIONS\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// NO SOLUTIONS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if this i-th point is a flex point.\n\t\t\tif (0 <= mix * pnix + pniy * miy) {\n\t\t\t\t// Calculate dr where the i-th point and k-th edge collide.\n\t\t\t\t// dr = dot(n[k], p[i] - p[k]) / dot(n[k], t[i] - t[k])\n\t\t\t\t// dr = dot(m[k], p[i] - p[k]) / dot(m[k], t[i] - t[k])\n\t\t\t\t// dr = (dot(m[k], p[i] - p[k]) - dot(m[k], p[k+1] - p[k])) / (dot(m[k], t[i] - t[k]) - dot(m[k], t[k+1] - t[k]))\n\t\t\t\tfor (let k = 0; k < pl; k += 2) {\n\t\t\t\t\tif (k === i || k === (pl + i - 2) % pl) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst pkx = p[k];\n\t\t\t\t\tconst pky = p[k + 1];\n\t\t\t\t\tconst nkx = n[k];\n\t\t\t\t\tconst nky = n[k + 1];\n\t\t\t\t\tconst mkx = nky;\n\t\t\t\t\tconst mky = -nkx;\n\t\t\t\t\tconst tkx = t[k];\n\t\t\t\t\tconst tky = t[k + 1];\n\t\t\t\t\tconst dpx = pix - pkx;\n\t\t\t\t\tconst dpy = piy - pky;\n\t\t\t\t\tconst dtx = tix - tkx;\n\t\t\t\t\tconst dty = tiy - tky;\n\t\t\t\t\tconst dtn = nkx * dtx + nky * dty;\n\t\t\t\t\tif (epsilon < Math.abs(dtn)) {\n\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\tconst dr = dpn / dtn;\n\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\tconst dpm = mkx * dpx + mky * dpy;\n\t\t\t\t\t\t\tconst dtm = mkx * dtx + mky * dty;\n\t\t\t\t\t\t\tconst a = dpm - dr * dtm;\n\t\t\t\t\t\t\tif (epsilon <= a) {\n\t\t\t\t\t\t\t\tconst nk = (k + 2) % pl;\n\t\t\t\t\t\t\t\tconst npkx = p[nk];\n\t\t\t\t\t\t\t\tconst npky = p[nk + 1];\n\t\t\t\t\t\t\t\tconst ntkx = t[nk];\n\t\t\t\t\t\t\t\tconst ntky = t[nk + 1];\n\t\t\t\t\t\t\t\tconst dpkx = npkx - pkx;\n\t\t\t\t\t\t\t\tconst dpky = npky - pky;\n\t\t\t\t\t\t\t\tconst dtkx = ntkx - tkx;\n\t\t\t\t\t\t\t\tconst dtky = ntky - tky;\n\t\t\t\t\t\t\t\tconst dpkm = mkx * dpkx + mky * dpky;\n\t\t\t\t\t\t\t\tconst dtkm = mkx * dtkx + mky * dtky;\n\t\t\t\t\t\t\t\tif (a - (dpkm - dr * dtkm) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst nk = (k + 2) % pl;\n\t\t\t\t\t\tconst npkx = p[nk];\n\t\t\t\t\t\tconst npky = p[nk + 1];\n\t\t\t\t\t\tconst ntkx = t[nk];\n\t\t\t\t\t\tconst ntky = t[nk + 1];\n\t\t\t\t\t\tconst dpkx = npkx - pkx;\n\t\t\t\t\t\tconst dpky = npky - pky;\n\t\t\t\t\t\tconst dtkx = ntkx - tkx;\n\t\t\t\t\t\tconst dtky = ntky - tky;\n\t\t\t\t\t\tconst dpm = mkx * dpx + mky * dpy;\n\t\t\t\t\t\tconst dpkm = mkx * dpkx + mky * dpky;\n\t\t\t\t\t\tconst dtm = mkx * dtx + mky * dty;\n\t\t\t\t\t\tconst dtkm = mkx * dtkx + mky * dtky;\n\n\t\t\t\t\t\t// b = 0\n\t\t\t\t\t\tif (epsilon < Math.abs(dtm)) {\n\t\t\t\t\t\t\tconst dr = dpm / dtm;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn - dr * dtn) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (Math.abs(dpm) < epsilon) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn) < epsilon) {\n\t\t\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// b = 1\n\t\t\t\t\t\tconst dtma = dtm - dtkm;\n\t\t\t\t\t\tif (epsilon < Math.abs(dtma)) {\n\t\t\t\t\t\t\tconst dr = (dpm - dpkm) / dtma;\n\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn - dr * dtn) < epsilon) {\n\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (Math.abs(dpm - dpkm) < epsilon) {\n\t\t\t\t\t\t\t\tconst dpn = nkx * dpx + nky * dpy;\n\t\t\t\t\t\t\t\tif (Math.abs(dpn) < epsilon) {\n\t\t\t\t\t\t\t\t\tconst dr = 0;\n\t\t\t\t\t\t\t\t\tif (0 <= dr && (mdri < 0 || dr < mdr)) {\n\t\t\t\t\t\t\t\t\t\tmdr = dr;\n\t\t\t\t\t\t\t\t\t\tmdri = i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// NO SOLUTION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tptix = tix;\n\t\t\tptiy = tiy;\n\t\t\tppix = pix;\n\t\t\tppiy = piy;\n\t\t\tpnix = nix;\n\t\t\tpniy = niy;\n\t\t}\n\n\t\t//\n\t\tif (0 <= mdri && 0 < mdr) {\n\t\t\tthis.distance += mdr;\n\t\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t\tp[i] -= mdr * t[i];\n\t\t\t\tp[i + 1] -= mdr * t[i + 1];\n\t\t\t}\n\t\t\tthis.merge();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Calculate the next wavefront and update `this.children`.\n\t * Please do not call this method more than one time.\n\t *\n\t * @returns next wavefronts\n\t */\n\tnext(): UtilStraightSkeletonWavefront[] {\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tconst children = this.children;\n\t\tif (pl <= 4) {\n\t\t\treturn children;\n\t\t}\n\t\tchildren.length = 0;\n\t\tthis.cut(children);\n\t\tfor (let i = children.length - 1; 0 <= i; --i) {\n\t\t\tif (!children[i].advance()) {\n\t\t\t\t// Failed to advance this wavefront\n\t\t\t\tchildren.splice(i, 1);\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\tmerge(): boolean {\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tif (pl <= 2) {\n\t\t\t// No need to merge\n\t\t\treturn false;\n\t\t}\n\n\t\tconst epsilon = this.epsilon;\n\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\tconst n = this.normals;\n\t\tconst m = this.mappings;\n\t\tconst b = this.bridges;\n\t\tlet nr = 0;\n\t\tlet ppx = p[0];\n\t\tlet ppy = p[1];\n\t\tlet ppi = 0;\n\t\tfor (let i = 2; i < pl; i += 2) {\n\t\t\tconst px = p[i];\n\t\t\tconst py = p[i + 1];\n\t\t\tconst dx = px - ppx;\n\t\t\tconst dy = py - ppy;\n\t\t\tif (Math.abs(dx) <= epsilon && Math.abs(dy) <= epsilon) {\n\t\t\t\t// Merge this point to the previous point\n\t\t\t\tm[ppi] = m[ppi + 1] = m[ppi].concat(m[i]);\n\t\t\t\tm[i] = m[i + 1] = empty;\n\t\t\t\tn[ppi] = n[i];\n\t\t\t\tn[ppi + 1] = n[i + 1];\n\t\t\t\tnr += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tppx = px;\n\t\t\tppy = py;\n\t\t\tppi = i;\n\t\t}\n\n\t\t// Merge the last one into the first one if necessary\n\t\tif (ppi !== 0) {\n\t\t\tconst dx = p[ppi] - p[0];\n\t\t\tconst dy = p[ppi + 1] - p[1];\n\t\t\tif (Math.abs(dx) < epsilon && Math.abs(dy) < epsilon) {\n\t\t\t\tm[0] = m[1] = m[ppi].concat(m[0]);\n\t\t\t\tm[ppi] = m[ppi + 1] = empty;\n\t\t\t\tnr += 1;\n\t\t\t}\n\t\t}\n\n\t\t// Remove merged points\n\t\tif (0 < nr) {\n\t\t\tlet k = 0;\n\t\t\tfor (let i = 0; i < pl; i += 2, k += 2) {\n\t\t\t\tif (m[i].length <= 0) {\n\t\t\t\t\tk -= 2;\n\t\t\t\t} else if (i !== k) {\n\t\t\t\t\tp[k] = p[i];\n\t\t\t\t\tp[k + 1] = p[i + 1];\n\t\t\t\t\tn[k] = n[i];\n\t\t\t\t\tn[k + 1] = n[i + 1];\n\t\t\t\t\tm[k] = m[i];\n\t\t\t\t\tm[k + 1] = m[i + 1];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (k < pl) {\n\t\t\t\tp.length = k;\n\t\t\t\tn.length = k;\n\t\t\t\tm.length = k;\n\t\t\t\tb.length = k;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tinsert(index: number, r: number, child: UtilStraightSkeletonWavefront | null): void {\n\t\t// Insert a position\n\t\tconst p = this.points;\n\t\tconst pl = p.length;\n\t\tconst nindex = (index + 2) % pl;\n\t\tconst px = p[index];\n\t\tconst py = p[index + 1];\n\t\tconst npx = p[nindex];\n\t\tconst npy = p[nindex + 1];\n\t\tp.splice(index + 2, 0, px + r * (npx - px), py + r * (npy - py));\n\n\t\t// Insert a normal\n\t\tconst n = this.normals;\n\t\tconst nx = n[index];\n\t\tconst ny = n[index + 1];\n\t\tn.splice(index + 2, 0, nx, ny);\n\n\t\t// Shift indices in bridges.\n\t\tconst b = this.bridges;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst bx = b[i];\n\t\t\tif (index < bx) {\n\t\t\t\tb[i] = bx + 2;\n\t\t\t}\n\t\t}\n\t\tb.splice(index + 2, 0, -1, -1);\n\n\t\t// Insert a mapping and shift indices in mappings\n\t\tconst m = this.mappings;\n\t\tconst mx = m[index];\n\t\tconst mxl = mx.length;\n\t\tconst parent = this.parent;\n\t\tif (parent && 0 < mxl) {\n\t\t\t// Shift indices in mappings\n\t\t\tconst pindex = mx[mxl - 1];\n\t\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\t\tm[i] = m[i + 1] = this.toMappingShifted(pindex, m[i]);\n\t\t\t}\n\n\t\t\t// Insert a mapping\n\t\t\tconst nmx = [pindex + 2];\n\t\t\tm.splice(index + 2, 0, nmx, nmx);\n\n\t\t\t// Insert a vertex to parent vertices\n\t\t\tparent.insert(pindex, r, this);\n\t\t} else {\n\t\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\t\tm.splice(index + 2, 0, empty, empty);\n\t\t}\n\n\t\t// Shift mappings of children\n\t\tconst children = this.children;\n\t\tconst childrenLength = children.length;\n\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\tconst c = children[i];\n\t\t\tif (c !== child) {\n\t\t\t\tconst cm = c.mappings;\n\t\t\t\tconst cml = cm.length;\n\t\t\t\tfor (let k = 0; k < cml; k += 2) {\n\t\t\t\t\tcm[k] = cm[k + 1] = this.toMappingShifted(index, cm[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toMappingShifted(index: number, m: number[]): number[] {\n\t\tconst ml = m.length;\n\t\tfor (let i = 0; i < ml; ++i) {\n\t\t\tif (index < m[i]) {\n\t\t\t\tconst result: number[] = [];\n\t\t\t\tfor (let k = 0; k < ml; ++k) {\n\t\t\t\t\tconst mv = m[k];\n\t\t\t\t\tresult.push(index < mv ? mv + 2 : mv);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn m;\n\t}\n\n\tcut(result: UtilStraightSkeletonWavefront[]): boolean {\n\t\tconst p = this.points;\n\t\tlet pl = p.length;\n\t\tconst n = this.normals;\n\t\tconst b = this.bridges;\n\t\tconst epsilon = this.epsilon;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tconst pix = p[i];\n\t\t\tconst piy = p[i + 1];\n\t\t\tfor (let k = 0; k < pl; k += 2) {\n\t\t\t\tif (k === i || k === (pl + i - 2) % pl) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst pkx = p[k];\n\t\t\t\tconst pky = p[k + 1];\n\t\t\t\tconst nkx = n[k];\n\t\t\t\tconst nky = n[k + 1];\n\t\t\t\tconst dix = pix - pkx;\n\t\t\t\tconst diy = piy - pky;\n\t\t\t\tconst din = nkx * dix + nky * diy;\n\t\t\t\tif (Math.abs(din) < epsilon) {\n\t\t\t\t\tconst mkx = nky;\n\t\t\t\t\tconst mky = -nkx;\n\t\t\t\t\tconst dim = mkx * dix + mky * diy;\n\t\t\t\t\tif (Math.abs(dim) < epsilon) {\n\t\t\t\t\t\tb[i] = k;\n\t\t\t\t\t\tb[k] = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst l = (k + 2) % pl;\n\t\t\t\t\t\tconst plx = p[l];\n\t\t\t\t\t\tconst ply = p[l + 1];\n\t\t\t\t\t\tconst dlx = plx - pkx;\n\t\t\t\t\t\tconst dly = ply - pky;\n\t\t\t\t\t\tconst dlm = mkx * dlx + mky * dly;\n\t\t\t\t\t\tif (Math.abs(dim - dlm) < epsilon) {\n\t\t\t\t\t\t\tb[i] = l;\n\t\t\t\t\t\t\tb[l] = i;\n\t\t\t\t\t\t} else if (0 <= dim && dim <= dlm) {\n\t\t\t\t\t\t\tif (Math.abs(dlm) < epsilon) {\n\t\t\t\t\t\t\t\tif (dim <= 0.5 * dlm) {\n\t\t\t\t\t\t\t\t\tb[i] = k;\n\t\t\t\t\t\t\t\t\tb[k] = i;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tb[i] = l;\n\t\t\t\t\t\t\t\t\tb[l] = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Insert a vertex\n\t\t\t\t\t\t\t\tthis.insert(k, dim / dlm, null);\n\n\t\t\t\t\t\t\t\t// Adjust i and pl\n\t\t\t\t\t\t\t\tif (k + 2 <= i) {\n\t\t\t\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpl += 2;\n\n\t\t\t\t\t\t\t\t// Add this bridge\n\t\t\t\t\t\t\t\tb[i] = k + 2;\n\t\t\t\t\t\t\t\tb[k + 2] = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let ifrom = 0; ifrom < pl; ifrom += 2) {\n\t\t\tconst ito = b[ifrom];\n\t\t\tif (0 <= ito && ifrom < ito) {\n\t\t\t\tconst child = new UtilStraightSkeletonWavefront(this, this.distance, epsilon);\n\t\t\t\tconst cp = child.points;\n\t\t\t\tconst cn = child.normals;\n\t\t\t\tconst cm = child.mappings;\n\t\t\t\tconst cb = child.bridges;\n\t\t\t\tfor (let i = ifrom; i < pl; i += 2) {\n\t\t\t\t\tcp.push(p[i], p[i + 1]);\n\t\t\t\t\tcn.push(n[i], n[i + 1]);\n\t\t\t\t\tconst mix = [i];\n\t\t\t\t\tcm.push(mix, mix);\n\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\tif (ifrom < i) {\n\t\t\t\t\t\tconst k = b[i];\n\t\t\t\t\t\tif (0 <= k) {\n\t\t\t\t\t\t\tif (i < k) {\n\t\t\t\t\t\t\t\tcp.push(p[k], p[k + 1]);\n\t\t\t\t\t\t\t\tcn.push(n[k], n[k + 1]);\n\t\t\t\t\t\t\t\tconst mkx = [k];\n\t\t\t\t\t\t\t\tcm.push(mkx, mkx);\n\t\t\t\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\t\t\t\ti = k;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchild.merge();\n\t\t\t\tresult.push(child);\n\t\t\t}\n\t\t}\n\t\tconst child = new UtilStraightSkeletonWavefront(this, this.distance, epsilon);\n\t\tconst cp = child.points;\n\t\tconst cn = child.normals;\n\t\tconst cm = child.mappings;\n\t\tconst cb = child.bridges;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tcp.push(p[i], p[i + 1]);\n\t\t\tcn.push(n[i], n[i + 1]);\n\t\t\tconst mix = [i];\n\t\t\tcm.push(mix, mix);\n\t\t\tcb.push(-1, -1);\n\t\t\tconst k = b[i];\n\t\t\tif (0 <= k) {\n\t\t\t\tif (i < k) {\n\t\t\t\t\tcp.push(p[k], p[k + 1]);\n\t\t\t\t\tcn.push(n[k], n[k + 1]);\n\t\t\t\t\tconst mkx = [k];\n\t\t\t\t\tcm.push(mkx, mkx);\n\t\t\t\t\tcb.push(-1, -1);\n\t\t\t\t\ti = k;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tchild.merge();\n\t\tresult.push(child);\n\t\treturn true;\n\t}\n\n\tpublic static from(polygon: UtilPolygon, epsilon: number): UtilStraightSkeletonWavefront {\n\t\tconst result = new UtilStraightSkeletonWavefront(null, 0, epsilon);\n\t\tconst points = polygon.points;\n\t\tconst pointsLength = points.length;\n\t\tif (pointsLength <= 0) {\n\t\t\treturn result;\n\t\t}\n\t\tconst normals = polygon.normals;\n\t\tconst p = result.points;\n\t\tconst n = result.normals;\n\t\tconst m = result.mappings;\n\t\tconst b = result.bridges;\n\t\tconst empty = UtilStraightSkeletonWavefront.EMPTY_ARRAY;\n\t\tif (polygon.isCw()) {\n\t\t\tfor (let i = pointsLength - 2; 0 <= i; i -= 2) {\n\t\t\t\tconst k = (pointsLength + i - 2) % pointsLength;\n\t\t\t\tn.push(-normals[k], -normals[k + 1]);\n\t\t\t\tp.push(points[i], points[i + 1]);\n\t\t\t\tm.push(empty, empty);\n\t\t\t\tb.push(-1, -1);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < pointsLength; i += 2) {\n\t\t\t\tn.push(normals[i], normals[i + 1]);\n\t\t\t\tp.push(points[i], points[i + 1]);\n\t\t\t\tm.push(empty, empty);\n\t\t\t\tb.push(-1, -1);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport class UtilStraightSkeleton {\n\tpublic static from(\n\t\tpoints: number[],\n\t\tlevel: number = -1,\n\t\tepsilon: number = 1e-5\n\t): UtilStraightSkeletonWavefront[] {\n\t\tconst result: UtilStraightSkeletonWavefront[] = [];\n\t\tconst polygons = UtilPolygon.from(points, epsilon);\n\t\tfor (let i = 0, imax = polygons.length; i < imax; ++i) {\n\t\t\tconst wavefront = UtilStraightSkeletonWavefront.from(polygons[i], epsilon);\n\t\t\tif (level < 0 || 0 < level) {\n\t\t\t\tthis.next(wavefront, level);\n\t\t\t}\n\t\t\tthis.map(wavefront);\n\t\t\tresult.push(wavefront);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected static next(wavefront: UtilStraightSkeletonWavefront, level: number): void {\n\t\tconst children = wavefront.next();\n\t\tlevel -= 1;\n\t\tif (level < 0 || 0 < level) {\n\t\t\tconst childrenLength = children.length;\n\t\t\tif (0 < childrenLength) {\n\t\t\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\t\t\tthis.next(children[i], level);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected static map(wavefront: UtilStraightSkeletonWavefront): void {\n\t\tconst p = wavefront.points;\n\t\tconst pl = p.length;\n\t\tconst r = wavefront.rmappings;\n\t\tfor (let i = 0; i < pl; i += 2) {\n\t\t\tr.push([], []);\n\t\t}\n\n\t\tconst children = wavefront.children;\n\t\tconst childrenLength = children.length;\n\t\tfor (let i = 0; i < childrenLength; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tconst m = child.mappings;\n\t\t\tconst ml = m.length;\n\t\t\tfor (let k = 0; k < ml; k += 2) {\n\t\t\t\tconst mx = m[k];\n\t\t\t\tconst mxl = mx.length;\n\t\t\t\tfor (let l = 0; l < mxl; ++l) {\n\t\t\t\t\tconst mv = mx[l];\n\t\t\t\t\tr[mv].push(i);\n\t\t\t\t\tr[mv + 1].push(k);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.map(child);\n\t\t}\n\t}\n}\n"]}
|