@stocksharp/trading-controls 0.1.0
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/LICENSE +30 -0
- package/NOTICE +21 -0
- package/README.md +240 -0
- package/dist/esm/active-orders-widget.js +382 -0
- package/dist/esm/active-orders-widget.js.map +1 -0
- package/dist/esm/control-types.js +23 -0
- package/dist/esm/control-types.js.map +1 -0
- package/dist/esm/dom.js +55 -0
- package/dist/esm/dom.js.map +1 -0
- package/dist/esm/formatters.js +69 -0
- package/dist/esm/formatters.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/positions-widget.js +258 -0
- package/dist/esm/positions-widget.js.map +1 -0
- package/dist/esm/trade-history-widget.js +197 -0
- package/dist/esm/trade-history-widget.js.map +1 -0
- package/dist/esm/trading-data.js +26 -0
- package/dist/esm/trading-data.js.map +1 -0
- package/dist/esm/trading-host.js +79 -0
- package/dist/esm/trading-host.js.map +1 -0
- package/dist/esm/watchlist-widget.js +481 -0
- package/dist/esm/watchlist-widget.js.map +1 -0
- package/dist/sstradingcontrols.js +1740 -0
- package/dist/sstradingcontrols.js.map +7 -0
- package/dist/types/active-orders-widget.d.ts +52 -0
- package/dist/types/active-orders-widget.d.ts.map +1 -0
- package/dist/types/control-types.d.ts +8 -0
- package/dist/types/control-types.d.ts.map +1 -0
- package/dist/types/dom.d.ts +6 -0
- package/dist/types/dom.d.ts.map +1 -0
- package/dist/types/formatters.d.ts +8 -0
- package/dist/types/formatters.d.ts.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/positions-widget.d.ts +37 -0
- package/dist/types/positions-widget.d.ts.map +1 -0
- package/dist/types/trade-history-widget.d.ts +25 -0
- package/dist/types/trade-history-widget.d.ts.map +1 -0
- package/dist/types/trading-data.d.ts +55 -0
- package/dist/types/trading-data.d.ts.map +1 -0
- package/dist/types/trading-host.d.ts +62 -0
- package/dist/types/trading-host.d.ts.map +1 -0
- package/dist/types/watchlist-widget.d.ts +60 -0
- package/dist/types/watchlist-widget.d.ts.map +1 -0
- package/package.json +129 -0
- package/src/active-orders-widget.ts +411 -0
- package/src/control-types.ts +24 -0
- package/src/dom.ts +68 -0
- package/src/formatters.ts +72 -0
- package/src/index.ts +52 -0
- package/src/positions-widget.ts +305 -0
- package/src/trade-history-widget.ts +221 -0
- package/src/trading-data.ts +121 -0
- package/src/trading-host.ts +300 -0
- package/src/watchlist-widget.ts +513 -0
- package/styles/theme.css +86 -0
- package/styles/trading-controls.css +469 -0
- package/translation-keys.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-orders-widget.js","sourceRoot":"","sources":["../../src/active-orders-widget.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,gBAAgB;AAChB,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,mDAAmD;AACnD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAc,MAAM,oCAAoC,CAAC;AAE1E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,eAAe,EAAE,CAAC;IAClB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACN,CAAC;AAcX,MAAM,OAAO,kBAAkB;IAe3B,MAAM,CAAC,MAAM,CAAC,MAAmB,EAAE,KAA8B,EAAE,IAAsB;QACrF,oEAAoE;QACpE,sEAAsE;QACtE,mCAAmC;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,sEAAsE;IACtE,oEAAoE;IACpE,EAAE;IACF,uEAAuE;IACvE,iEAAiE;IACjE,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,wDAAwD;IACxD,MAAM,CAAC,UAAU,CAAC,IAAiB;QAC/B,OAAO,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE;YAChE,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;gBACnC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACnD,cAAc,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aACjH,CAAC;YACF,WAAW,CAAC,KAAK,EAAE,iCAAiC,EAAE,EAAE,EAAE;gBACtD,WAAW,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE;oBACzC,WAAW,CAAC,OAAO,EAAE,oCAAoC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE;wBACpH,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;wBAChC,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC;qBACrD,CAAC;iBACL,CAAC;gBACF,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE;oBAC/F,cAAc,CAAC,qDAAqD,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,aAAa,EACpG,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAChD,cAAc,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,oBAAoB,EAAE,EAAE,CAAC;oBAC5F,cAAc,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,6BAA6B,EAAE,EAAE,CAAC;iBAC7G,CAAC;aACL,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAED,YAAY,MAAmB,EAAE,MAA+B,EAAE,IAAsB;QACpF,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAU,EAAE,CAAC;YAChI,IAAI,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,UAAU;gBAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,eAAe,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAChD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE;YACxB,CAAC,CAAC,IAAI,QAAQ,CAAW;gBACrB,IAAI,EAAE,IAAmB;gBACzB,IAAI,EAAE,IAAI,CAAC,EAAE;gBACb,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACxB,oFAAoF;gBACpF,kFAAkF;gBAClF,gFAAgF;gBAChF,6DAA6D;gBAC7D,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;gBACvC,+EAA+E;gBAC/E,sDAAsD;gBACtD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACzC,yEAAyE;gBACzE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;aACnD,CAAC;YACF,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,MAAkB;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,8DAA8D;IAC9D,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,uEAAuE;IACvE,oCAAoC;IACpC,UAAU,CAAC,KAAe;QACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI;YAAE,OAAO;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,GAAG,IAAI,CAAC;YACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;;YAEvD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,6BAA6B;IAC7B,WAAW,CAAC,OAAe;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,KAA8C;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,2EAA2E;QAC3E,uEAAuE;QACvE,6EAA6E;QAC7E,0CAA0C;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAO;QACjD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QACtB,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACtC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,KAAK,CAAC,GAAG,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACxE,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACnE,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YACvG,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,QAAS,EAAE,OAAO,CAAC,UAAW,EAAE,OAAO,CAAC,SAAU,CAAC,CAAC;QACjG,CAAC,CAAC;QACF,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAC5D,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,sBAAsB;IACtB,QAAQ;QACJ,qEAAqE;QACrE,mEAAmE;QACnE,kDAAkD;QAClD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,OAAO;YACH;gBACI,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;gBACnB,UAAU,EAAE,IAAI;gBAChB,oEAAoE;gBACpE,qEAAqE;gBACrE,oEAAoE;gBACpE,qEAAqE;gBACrE,sDAAsD;gBACtD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE;aAClC;YACD;gBACI,GAAG,EAAE,YAAY;gBACjB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBACpB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU;aAC7B;YACD;gBACI,GAAG,EAAE,MAAM;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;gBACrB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACpB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC;gBAC7C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAC;gBACjD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC;aACrD;YACD;gBACI,GAAG,EAAE,MAAM;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;gBACrB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACpB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,UAAW,EAAE,CAAC,CAAC,SAAU,CAAC;gBAC1E,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,UAAW,EAAE,CAAC,CAAC,SAAU,CAAC;aAClF;YACD;gBACI,GAAG,EAAE,UAAU;gBACf,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBACpB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ;gBACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC;gBAClE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC;aAC/D;YACD;gBACI,GAAG,EAAE,YAAY;gBACjB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;gBACtB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU;gBAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC;gBACpE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC;gBAC9D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;aACnD;YACD;gBACI,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;gBACrB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;gBACzB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC5D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC;gBACnE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC;gBAC7D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE;aACxC;YACD;gBACI,GAAG,EAAE,QAAQ;gBACb,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;gBACvB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;gBACtB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,MAAO,CAAC;aACzD;YACD;gBACI,GAAG,EAAE,SAAS;gBACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;gBACxB,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB;gBACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;aACvC;SACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAe;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;YAAE,OAAO,cAAc,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,QAAQ;YAAE,OAAO,gBAAgB,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,SAAS;YAAE,OAAO,iBAAiB,CAAC;QACrE,OAAO,EAAE,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,+EAA+E;IAC/E,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,CAAC,KAAe,EAAE,KAA8C;QAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAAC;QAC5F,OAAO,UAAU,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAe,EAAE,KAA8C;QACjF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,eAAe,CAAC,EAAwB,EAAE,KAAe,EAAE,KAA8C;QACrG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO;QACvD,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,0EAA0E;IAC1E,2EAA2E;IAC3E,6DAA6D;IAC7D,WAAW,CAAC,KAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,0CAA0C,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,WAAW;IACX,aAAa,CAAC,KAAe;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;eAC/C,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,QAAQ;eACrC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,SAAS,CAAC;QAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,SAAS,GAAG,4BAA4B,CAAC;QAChD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,IAAI,UAAU;gBAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC;;gBAC9C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;;AAzWM,uBAAI,GAAG,YAAY,CAAC,YAAY,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// The identifiers a host and a control agree on for each kind of control this
|
|
2
|
+
// package ships.
|
|
3
|
+
//
|
|
4
|
+
// These strings used to be spelled out independently in four places — a docking
|
|
5
|
+
// manager's panel table, its default layouts, each control's static TYPE
|
|
6
|
+
// literal and a Razor panels menu — so a typo in any one of them produced a
|
|
7
|
+
// panel that opened but never received data, with nothing to compare against.
|
|
8
|
+
//
|
|
9
|
+
// The VALUES are load-bearing and must not be edited. A host writes them into
|
|
10
|
+
// whatever it persists its layout as, so renaming one orphans every saved
|
|
11
|
+
// layout that mentions it.
|
|
12
|
+
//
|
|
13
|
+
// Only the kinds this package implements are named here. A host that has more
|
|
14
|
+
// control kinds of its own declares those itself and merges the two sets; that
|
|
15
|
+
// keeps every identifier declared exactly once, by whoever owns the control it
|
|
16
|
+
// names.
|
|
17
|
+
export const ControlTypes = {
|
|
18
|
+
Watchlist: 'watchlist',
|
|
19
|
+
ActiveOrders: 'activeOrders',
|
|
20
|
+
TradeHistory: 'tradeHistory',
|
|
21
|
+
Positions: 'positions',
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=control-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-types.js","sourceRoot":"","sources":["../../src/control-types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,2BAA2B;AAC3B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,SAAS;AACT,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;CAChB,CAAC"}
|
package/dist/esm/dom.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Element construction for controls that build their own DOM.
|
|
2
|
+
//
|
|
3
|
+
// A control that clones a <template> out of the page it happens to live on
|
|
4
|
+
// cannot render anywhere else, so the markup has to move into the control. It
|
|
5
|
+
// then has to stay readable as markup, which four lines of createElement /
|
|
6
|
+
// className / setAttribute / appendChild per element does not.
|
|
7
|
+
//
|
|
8
|
+
// Nothing here has an import, touches a global or knows what a trading control
|
|
9
|
+
// is — it is a spelling of `document.createElement`, and the shape of the call
|
|
10
|
+
// mirrors the shape of the tag it replaces:
|
|
11
|
+
//
|
|
12
|
+
// <div class="panel-header"><span>Positions</span></div>
|
|
13
|
+
// makeElement('div', 'panel-header', {}, [makeElement('span', '', {}, ['Positions'])])
|
|
14
|
+
/// One element. `className` may be empty and `attrs` may be empty — both are
|
|
15
|
+
/// then left off entirely, so the result matches markup that never carried
|
|
16
|
+
/// them. Children are appended in order; a string child becomes a text node.
|
|
17
|
+
export function makeElement(tag, className, attrs, children) {
|
|
18
|
+
const element = document.createElement(tag);
|
|
19
|
+
if (className)
|
|
20
|
+
element.className = className;
|
|
21
|
+
for (const [name, value] of Object.entries(attrs))
|
|
22
|
+
element.setAttribute(name, value);
|
|
23
|
+
for (const child of children)
|
|
24
|
+
element.appendChild(typeof child === 'string' ? document.createTextNode(child) : child);
|
|
25
|
+
return element;
|
|
26
|
+
}
|
|
27
|
+
/// A Bootstrap icon glyph — `<i class="bi bi-x"></i>`. Every icon in a control's
|
|
28
|
+
/// panel chrome is one of these, always with the `bi` base class.
|
|
29
|
+
export function makeIcon(iconClass) {
|
|
30
|
+
return makeElement('i', `bi ${iconClass}`, {}, []);
|
|
31
|
+
}
|
|
32
|
+
/// An icon button from the panel chrome: one glyph, and the same text as both
|
|
33
|
+
/// tooltip and accessible name. `className` carries the full class list
|
|
34
|
+
/// because the buttons differ by more than one modifier
|
|
35
|
+
/// (`bt-icon-btn bt-icon-cancel panel-close-btn`).
|
|
36
|
+
export function makeIconButton(className, label, iconClass, attrs) {
|
|
37
|
+
return makeElement('button', className, { title: label, 'aria-label': label, ...attrs }, [makeIcon(iconClass)]);
|
|
38
|
+
}
|
|
39
|
+
/// The panel root every control builds: `.terminal-panel` plus the control's own
|
|
40
|
+
/// modifier class, carrying the region role and its accessible name.
|
|
41
|
+
///
|
|
42
|
+
/// The structure is a contract in two directions and both are load-bearing. A
|
|
43
|
+
/// host stylesheet targets these class names, and a docking host may lift
|
|
44
|
+
/// `.panel-header`'s children into its own tab strip, which needs
|
|
45
|
+
/// `.terminal-panel` to be the root's only element child.
|
|
46
|
+
export function makePanelRoot(modifierClass, label, children) {
|
|
47
|
+
return makeElement('div', `terminal-panel ${modifierClass}`, { role: 'region', 'aria-label': label }, children);
|
|
48
|
+
}
|
|
49
|
+
/// A unique element id for one control instance. Time plus a random tail: the
|
|
50
|
+
/// time alone collides when a host restores a saved layout, which creates every
|
|
51
|
+
/// panel inside one millisecond.
|
|
52
|
+
export function makePanelId(type) {
|
|
53
|
+
return `panel-${type}-${Date.now().toString(36)}-${Math.floor(Math.random() * 1000).toString(36)}`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=dom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/dom.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,2DAA2D;AAC3D,yFAAyF;AAEzF,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACvB,GAAW,EACX,SAAiB,EACjB,KAA6B,EAC7B,QAA8B;IAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrF,KAAK,MAAM,KAAK,IAAI,QAAQ;QACxB,OAAO,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iFAAiF;AACjF,kEAAkE;AAClE,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACtC,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,wDAAwD;AACxD,mDAAmD;AACnD,MAAM,UAAU,cAAc,CAC1B,SAAiB,EACjB,KAAa,EACb,SAAiB,EACjB,KAA6B;IAE7B,OAAO,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EACnF,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;AACpD,CAAC;AAED,iFAAiF;AACjF,qEAAqE;AACrE,GAAG;AACH,8EAA8E;AAC9E,0EAA0E;AAC1E,kEAAkE;AAClE,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,aAAqB,EAAE,KAAa,EAAE,QAA8B;IAC9F,OAAO,WAAW,CAAC,KAAK,EAAE,kBAAkB,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACpH,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,iCAAiC;AACjC,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,SAAS,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/// Digits chosen from the magnitude of the price. A fixed two decimals
|
|
2
|
+
/// collapses distinct ticks of a penny instrument onto the same "0.44" —
|
|
3
|
+
/// on the Y axis, in the order book, in the price header, everywhere — while
|
|
4
|
+
/// six decimals on a $76,000 print is noise.
|
|
5
|
+
export function formatPrice(price) {
|
|
6
|
+
if (price == null || isNaN(Number(price)))
|
|
7
|
+
return '--';
|
|
8
|
+
const n = Number(price);
|
|
9
|
+
const a = Math.abs(n);
|
|
10
|
+
let prec = 2;
|
|
11
|
+
if (a < 1)
|
|
12
|
+
prec = 4;
|
|
13
|
+
if (a < 0.1)
|
|
14
|
+
prec = 5;
|
|
15
|
+
if (a < 0.001)
|
|
16
|
+
prec = 6;
|
|
17
|
+
if (a >= 1000)
|
|
18
|
+
prec = 1;
|
|
19
|
+
if (a >= 10000)
|
|
20
|
+
prec = 0;
|
|
21
|
+
return n.toFixed(prec);
|
|
22
|
+
}
|
|
23
|
+
/// Crypto quantities carry up to 8 decimals, so the cap is 8 rather than the
|
|
24
|
+
/// locale default of 3; trailing zeros are trimmed because a size of "1" reads
|
|
25
|
+
/// better than "1.00000000" in a ladder.
|
|
26
|
+
export function formatQty(qty) {
|
|
27
|
+
if (qty == null)
|
|
28
|
+
return '--';
|
|
29
|
+
const n = Number(qty);
|
|
30
|
+
if (!isFinite(n))
|
|
31
|
+
return '--';
|
|
32
|
+
return n.toLocaleString(undefined, { maximumFractionDigits: 8 });
|
|
33
|
+
}
|
|
34
|
+
/// Wall-clock time of day, 24h, seconds included — a trade blotter is read by
|
|
35
|
+
/// eye against the tape, so the format is fixed rather than locale-driven.
|
|
36
|
+
export function formatTime(dateStr) {
|
|
37
|
+
const d = new Date(dateStr);
|
|
38
|
+
return d.toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' });
|
|
39
|
+
}
|
|
40
|
+
/// A signed figure: profit carries an explicit `+` so a gain and a loss are
|
|
41
|
+
/// told apart by the number alone, without relying on the colour class.
|
|
42
|
+
export function formatPnl(pnl) {
|
|
43
|
+
if (pnl == null)
|
|
44
|
+
return '--';
|
|
45
|
+
const val = Number(pnl);
|
|
46
|
+
const sign = val >= 0 ? '+' : '';
|
|
47
|
+
return sign + val.toFixed(2);
|
|
48
|
+
}
|
|
49
|
+
/// Some venue adapters hand us a wrapped error string like
|
|
50
|
+
/// "failed to complete request (err=Forbidden): {"code":40310000,"message":"cost basis must be >= ..."}"
|
|
51
|
+
/// The raw form is stored for audit, but users should see the human-readable
|
|
52
|
+
/// message only. Pull `message` out of the embedded JSON when present;
|
|
53
|
+
/// otherwise return the reason as-is.
|
|
54
|
+
export function cleanRejectReason(reason) {
|
|
55
|
+
if (!reason)
|
|
56
|
+
return '';
|
|
57
|
+
const i = reason.indexOf('{');
|
|
58
|
+
const j = reason.lastIndexOf('}');
|
|
59
|
+
if (i >= 0 && j > i) {
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(reason.substring(i, j + 1));
|
|
62
|
+
if (parsed && typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
63
|
+
return parsed.message;
|
|
64
|
+
}
|
|
65
|
+
catch { /* fall through to raw */ }
|
|
66
|
+
}
|
|
67
|
+
return reason;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { MarketDataLevels, PRESENTATION_CLASSES, assertHost } from './trading-host.js';
|
|
2
|
+
export { ControlTypes } from './control-types.js';
|
|
3
|
+
export { cleanRejectReason, formatPnl, formatPrice, formatQty, formatTime } from './formatters.js';
|
|
4
|
+
// A host that renders its own chrome around these controls builds it with the
|
|
5
|
+
// same helpers, so the panel it wraps and the panel it wraps them in agree on
|
|
6
|
+
// class names.
|
|
7
|
+
export { makeElement, makeIcon, makeIconButton, makePanelId, makePanelRoot } from './dom.js';
|
|
8
|
+
export { ActiveOrdersWidget, OrderStates } from './active-orders-widget.js';
|
|
9
|
+
export { PositionsWidget } from './positions-widget.js';
|
|
10
|
+
export { TradeHistoryWidget } from './trade-history-widget.js';
|
|
11
|
+
export { WatchlistWidget } from './watchlist-widget.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0BvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnG,8EAA8E;AAC9E,8EAA8E;AAC9E,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
// Positions — multi-instance.
|
|
2
|
+
//
|
|
3
|
+
// Builds its own DOM (see `_buildRoot`) rather than cloning a <template> out of
|
|
4
|
+
// the page it happens to be rendered on, so it can be constructed by any host
|
|
5
|
+
// that supplies a `TradingHost`. Every instance shares the same data source
|
|
6
|
+
// (the host's refresh / a position update off the socket); the host broadcasts
|
|
7
|
+
// each update to every live instance so duplicates of the panel render in
|
|
8
|
+
// lockstep.
|
|
9
|
+
//
|
|
10
|
+
// The table is `DataGrid` from `@stocksharp/grids`: the columns below are this
|
|
11
|
+
// blotter's single declaration and the <thead> is left empty for the grid to
|
|
12
|
+
// fill. The cash balance is a pinned row — a different shape from a position,
|
|
13
|
+
// so it supplies its own cells, sits outside the sort and stays out of the
|
|
14
|
+
// exported sheet.
|
|
15
|
+
import { formatPnl, formatPrice } from './formatters.js';
|
|
16
|
+
import { makeElement, makeIconButton, makePanelId, makePanelRoot } from './dom.js';
|
|
17
|
+
import { ControlTypes } from './control-types.js';
|
|
18
|
+
import { assertHost } from './trading-host.js';
|
|
19
|
+
import { DataGrid, GridPinnedPlacements } from '@stocksharp/grids/data-grid';
|
|
20
|
+
export class PositionsWidget {
|
|
21
|
+
static create(hostEl, state, deps) {
|
|
22
|
+
// Assert before building: the markup below is localized through the
|
|
23
|
+
// host, so a missing host has to fail here rather than render a panel
|
|
24
|
+
// captioned with raw English keys.
|
|
25
|
+
const host = assertHost(deps?.host, 'PositionsWidget');
|
|
26
|
+
const root = PositionsWidget._buildRoot(host);
|
|
27
|
+
root.id = makePanelId(PositionsWidget.TYPE);
|
|
28
|
+
hostEl.appendChild(root);
|
|
29
|
+
return new PositionsWidget(root, state || {}, deps);
|
|
30
|
+
}
|
|
31
|
+
// The panel's markup. The host stylesheet reads this structure, and a
|
|
32
|
+
// docking host lifts `.panel-header`'s children into its tab strip.
|
|
33
|
+
//
|
|
34
|
+
// The rail's refresh button is the one thing that could not come across
|
|
35
|
+
// unchanged from the terminal's Razor template: it used to be an inline
|
|
36
|
+
// `onclick="terminalApp.refreshPositions()"`, which is a reference to a
|
|
37
|
+
// global this control must not have. It carries `.panel-refresh-btn` now —
|
|
38
|
+
// the name the trade-history rail already gave the identical button — and
|
|
39
|
+
// is wired to the `refreshPositions` dep.
|
|
40
|
+
static _buildRoot(host) {
|
|
41
|
+
const title = host.t('OpenPositions');
|
|
42
|
+
return makePanelRoot('positions-panel', title, [
|
|
43
|
+
makeElement('div', 'panel-header', {}, [
|
|
44
|
+
makeElement('span', '', {}, [host.t('Positions')]),
|
|
45
|
+
makeIconButton('bt-icon-btn bt-icon-cancel panel-close-btn', host.t('ClosePanel'), 'bi-x', { type: 'button' }),
|
|
46
|
+
]),
|
|
47
|
+
makeElement('div', 'panel-body panel-body-with-rail', {}, [
|
|
48
|
+
makeElement('div', 'panel-body-content', {}, [
|
|
49
|
+
makeElement('table', 'terminal-table positions-table', { role: 'table', 'aria-label': title }, [
|
|
50
|
+
makeElement('thead', '', {}, []),
|
|
51
|
+
makeElement('tbody', 'positions-body', {}, []),
|
|
52
|
+
]),
|
|
53
|
+
]),
|
|
54
|
+
makeElement('div', 'panel-rail', { role: 'toolbar', 'aria-label': host.t('PositionsActions') }, [
|
|
55
|
+
makeIconButton('bt-icon-btn panel-refresh-btn', host.t('Refresh'), 'bi-arrow-clockwise', {}),
|
|
56
|
+
makeIconButton('bt-icon-btn panel-export-btn', host.t('ExportToExcel'), 'bi-file-earmark-spreadsheet', {}),
|
|
57
|
+
]),
|
|
58
|
+
]),
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
constructor(rootEl, _state, deps) {
|
|
62
|
+
this._host = assertHost(deps?.host, 'PositionsWidget');
|
|
63
|
+
for (const name of ['closePosition', 'reversePosition', 'refreshPositions']) {
|
|
64
|
+
if (typeof deps?.[name] !== 'function')
|
|
65
|
+
throw new Error(`PositionsWidget: dep "${name}" is required`);
|
|
66
|
+
}
|
|
67
|
+
this.rootEl = rootEl;
|
|
68
|
+
this._deps = deps;
|
|
69
|
+
this.el = this.rootEl.querySelector('.positions-body');
|
|
70
|
+
this._closeBtn = this.rootEl.querySelector('.panel-close-btn');
|
|
71
|
+
this._refreshBtn = this.rootEl.querySelector('.panel-refresh-btn');
|
|
72
|
+
this._exportBtn = this.rootEl.querySelector('.panel-export-btn');
|
|
73
|
+
this._positions = [];
|
|
74
|
+
this._balance = null;
|
|
75
|
+
this._closeBtn?.addEventListener('click', (e) => {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
this._host.close();
|
|
78
|
+
});
|
|
79
|
+
this._refreshBtn?.addEventListener('click', (e) => {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
this._deps.refreshPositions();
|
|
82
|
+
});
|
|
83
|
+
this._exportBtn?.addEventListener('click', (e) => {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
this._export();
|
|
86
|
+
});
|
|
87
|
+
const head = this.rootEl.querySelector('.positions-table thead');
|
|
88
|
+
this._grid = head && this.el
|
|
89
|
+
? new DataGrid({
|
|
90
|
+
head: head,
|
|
91
|
+
body: this.el,
|
|
92
|
+
columns: this._columns(),
|
|
93
|
+
// Alphabetical by instrument at rest — a stable, predictable order (positions have no
|
|
94
|
+
// natural "newest") the user can scan by symbol.
|
|
95
|
+
defaultSort: { col: 'instrument', dir: 'asc' },
|
|
96
|
+
// Same identity applyDelta matches on: id alone isn't unique (id=0 for
|
|
97
|
+
// unsaved snapshots), and a portfolio can hold one position per instrument.
|
|
98
|
+
rowKey: (p) => PositionsWidget._key(p),
|
|
99
|
+
emptyText: this._host.t('No positions'),
|
|
100
|
+
// Re-read on every render, so the cash figures track the live balance
|
|
101
|
+
// without the widget having to repaint the position rows itself.
|
|
102
|
+
pinnedRows: () => this._pinnedRows(),
|
|
103
|
+
})
|
|
104
|
+
: null;
|
|
105
|
+
this._host.register(this);
|
|
106
|
+
// If the host already has a positions snapshot it will broadcast it on
|
|
107
|
+
// demand; new instances start empty until the first refresh tick.
|
|
108
|
+
}
|
|
109
|
+
dispose() {
|
|
110
|
+
this._host.unregister(this);
|
|
111
|
+
try {
|
|
112
|
+
this.rootEl.remove();
|
|
113
|
+
}
|
|
114
|
+
catch { /* already detached */ }
|
|
115
|
+
}
|
|
116
|
+
update(positions) {
|
|
117
|
+
this._positions = positions || [];
|
|
118
|
+
this._grid?.setRows(this._positions);
|
|
119
|
+
}
|
|
120
|
+
/// Null clears the pinned row — which is not the same as an all-zero
|
|
121
|
+
/// balance, and reads differently: no row at all versus a row of zeros.
|
|
122
|
+
updateBalance(balance) {
|
|
123
|
+
this._balance = balance;
|
|
124
|
+
this._grid?.render();
|
|
125
|
+
}
|
|
126
|
+
/// Apply a single position delta. Match by (portfolioId, instrumentId) — id
|
|
127
|
+
/// alone isn't unique (id=0 for unsaved snapshots). Quantity hitting zero
|
|
128
|
+
/// closes the row.
|
|
129
|
+
applyDelta(position) {
|
|
130
|
+
if (!position)
|
|
131
|
+
return;
|
|
132
|
+
const idx = this._positions.findIndex(p => p.portfolioId === position.portfolioId &&
|
|
133
|
+
((position.instrumentId != null && p.instrumentId === position.instrumentId) ||
|
|
134
|
+
(position.instrumentId == null && p.instrument === position.instrument)));
|
|
135
|
+
const closed = (position.quantity || 0) === 0;
|
|
136
|
+
if (idx >= 0) {
|
|
137
|
+
if (closed)
|
|
138
|
+
this._positions.splice(idx, 1);
|
|
139
|
+
else
|
|
140
|
+
this._positions[idx] = { ...this._positions[idx], ...position };
|
|
141
|
+
}
|
|
142
|
+
else if (!closed) {
|
|
143
|
+
this._positions.push(position);
|
|
144
|
+
}
|
|
145
|
+
this.update(this._positions);
|
|
146
|
+
}
|
|
147
|
+
// Export the table to .xlsx in the currently rendered (sorted) order. The
|
|
148
|
+
// balance summary is a pinned row — a different shape from a position — so
|
|
149
|
+
// the grid keeps it out of the sheet.
|
|
150
|
+
_export() {
|
|
151
|
+
this._grid?.download('positions', this._host.t('Positions'));
|
|
152
|
+
}
|
|
153
|
+
// The blotter's single column declaration: what the header says, what the
|
|
154
|
+
// grid sorts on, what the cell shows, how it is coloured, and what reaches
|
|
155
|
+
// the exported sheet. Prices are formatted on screen but exported raw, so
|
|
156
|
+
// the sheet stays numeric.
|
|
157
|
+
_columns() {
|
|
158
|
+
const label = (key) => this._host.t(key);
|
|
159
|
+
return [
|
|
160
|
+
{
|
|
161
|
+
key: 'instrument',
|
|
162
|
+
header: label('Symbol'),
|
|
163
|
+
exportable: true,
|
|
164
|
+
value: (p) => p.instrument,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: 'quantity',
|
|
168
|
+
header: label('Qty'),
|
|
169
|
+
exportable: true,
|
|
170
|
+
value: (p) => p.quantity,
|
|
171
|
+
cellClass: (p) => ((p.quantity ?? 0) > 0 ? 'side-buy' : 'side-sell'),
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
key: 'avgPrice',
|
|
175
|
+
header: label('AvgPrice'),
|
|
176
|
+
exportable: true,
|
|
177
|
+
value: (p) => p.avgPrice,
|
|
178
|
+
render: (p) => formatPrice(p.avgPrice),
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
key: 'currentPrice',
|
|
182
|
+
header: label('Current'),
|
|
183
|
+
exportable: true,
|
|
184
|
+
value: (p) => p.currentPrice,
|
|
185
|
+
render: (p) => formatPrice(p.currentPrice),
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
key: 'pnl',
|
|
189
|
+
header: label('PnL'),
|
|
190
|
+
exportable: true,
|
|
191
|
+
value: (p) => PositionsWidget._totalPnl(p),
|
|
192
|
+
render: (p) => formatPnl(PositionsWidget._totalPnl(p)),
|
|
193
|
+
cellClass: (p) => this._host.presentation.pnlClass(PositionsWidget._totalPnl(p)),
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
key: 'actions',
|
|
197
|
+
header: label('Actions'),
|
|
198
|
+
headerHidden: true,
|
|
199
|
+
exportable: false,
|
|
200
|
+
cellClass: () => 'position-actions',
|
|
201
|
+
render: (p) => this._actionButtons(p),
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
}
|
|
205
|
+
// The cash balance, pinned above the positions. It does not share the shape
|
|
206
|
+
// the position columns read, so it supplies its own cells; it is not a row
|
|
207
|
+
// of data, so it is neither sorted nor exported. Being content, it also
|
|
208
|
+
// suppresses the "no positions" row — a table showing a balance is not empty.
|
|
209
|
+
_pinnedRows() {
|
|
210
|
+
const balance = this._balance;
|
|
211
|
+
if (!balance)
|
|
212
|
+
return [];
|
|
213
|
+
const fmt = (v) => (v || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
214
|
+
return [{
|
|
215
|
+
key: 'balance',
|
|
216
|
+
className: 'balance-row',
|
|
217
|
+
place: GridPinnedPlacements.Top,
|
|
218
|
+
cells: [
|
|
219
|
+
{ content: this._host.t('USD'), className: 'balance-ccy' },
|
|
220
|
+
{ content: '$' + fmt(balance.available), className: 'balance-available' },
|
|
221
|
+
{ content: this._host.t('Locked: ${0}', fmt(balance.locked)), className: 'balance-locked' },
|
|
222
|
+
{ content: '', className: '' },
|
|
223
|
+
{ content: '$' + fmt(balance.total), className: 'balance-total' },
|
|
224
|
+
],
|
|
225
|
+
}];
|
|
226
|
+
}
|
|
227
|
+
// Realized and unrealized together — what the PnL column shows, sorts and
|
|
228
|
+
// exports, so the three cannot drift apart.
|
|
229
|
+
static _totalPnl(position) {
|
|
230
|
+
return (position.unrealizedPnl || 0) + (position.realizedPnl || 0);
|
|
231
|
+
}
|
|
232
|
+
static _key(position) {
|
|
233
|
+
return `${position.portfolioId}:${position.instrumentId ?? position.instrument}`;
|
|
234
|
+
}
|
|
235
|
+
// Close and reverse, wired to the controller through deps. Real buttons with
|
|
236
|
+
// their own listeners — the symbol used to be interpolated into an inline
|
|
237
|
+
// onclick attribute, which is why it needed quote-escaping first.
|
|
238
|
+
_actionButtons(position) {
|
|
239
|
+
const cell = document.createDocumentFragment();
|
|
240
|
+
cell.appendChild(this._actionButton('bt-icon-cancel', 'bi-x-circle', this._host.t('Close position'), this._host.t('Close position on {0}', position.instrument), () => this._deps.closePosition(position.portfolioId, position.instrumentId, position.instrument)));
|
|
241
|
+
cell.appendChild(this._actionButton('bt-icon-reverse', 'bi-arrow-left-right', this._host.t('Reverse position'), this._host.t('Reverse position on {0}', position.instrument), () => this._deps.reversePosition(position.portfolioId, position.instrumentId, position.instrument)));
|
|
242
|
+
return cell;
|
|
243
|
+
}
|
|
244
|
+
_actionButton(styleClass, iconClass, title, label, onClick) {
|
|
245
|
+
const button = document.createElement('button');
|
|
246
|
+
button.type = 'button';
|
|
247
|
+
button.className = `bt-icon-btn ${styleClass}`;
|
|
248
|
+
button.title = title;
|
|
249
|
+
button.setAttribute('aria-label', label);
|
|
250
|
+
const icon = document.createElement('i');
|
|
251
|
+
icon.className = `bi ${iconClass}`;
|
|
252
|
+
button.appendChild(icon);
|
|
253
|
+
button.addEventListener('click', onClick);
|
|
254
|
+
return button;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
PositionsWidget.TYPE = ControlTypes.Positions;
|
|
258
|
+
//# sourceMappingURL=positions-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positions-widget.js","sourceRoot":"","sources":["../../src/positions-widget.ts"],"names":[],"mappings":"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"}
|