@jimka/typescript-ui 0.2.0 → 0.3.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.
Files changed (167) hide show
  1. package/README.md +4 -0
  2. package/THIRD-PARTY-NOTICES.md +7 -3
  3. package/dist/lib/{AbstractBooleanInput-BGesvIZy.js → AbstractBooleanInput-C3O4kv7_.js} +2 -2
  4. package/dist/lib/{AbstractBooleanInput-BGesvIZy.js.map → AbstractBooleanInput-C3O4kv7_.js.map} +1 -1
  5. package/dist/lib/{AbstractInput-BxOtFrER.js → AbstractInput-DFWniHqq.js} +2 -2
  6. package/dist/lib/{AbstractInput-BxOtFrER.js.map → AbstractInput-DFWniHqq.js.map} +1 -1
  7. package/dist/lib/AnchorConstraints-CSUcj8Wx.js +2 -0
  8. package/dist/lib/AnchorConstraints-CSUcj8Wx.js.map +1 -0
  9. package/dist/lib/{AnimatedDropdown-CZQEqQi-.js → AnimatedDropdown-e9urCXK1.js} +2 -2
  10. package/dist/lib/{AnimatedDropdown-CZQEqQi-.js.map → AnimatedDropdown-e9urCXK1.js.map} +1 -1
  11. package/dist/lib/Border-Dq6dXkmS.js +2 -0
  12. package/dist/lib/{Border-BgaZkc1R.js.map → Border-Dq6dXkmS.js.map} +1 -1
  13. package/dist/lib/{Button-U1rsP4v8.js → Button-B36rBMKC.js} +2 -2
  14. package/dist/lib/{Button-U1rsP4v8.js.map → Button-B36rBMKC.js.map} +1 -1
  15. package/dist/lib/{Card-BVwOS8AG.js → Card-P8iUH2-C.js} +2 -2
  16. package/dist/lib/{Card-BVwOS8AG.js.map → Card-P8iUH2-C.js.map} +1 -1
  17. package/dist/lib/{ComboBox-B9EDPu6T.js → ComboBox-BjAhXXkY.js} +2 -2
  18. package/dist/lib/{ComboBox-B9EDPu6T.js.map → ComboBox-BjAhXXkY.js.map} +1 -1
  19. package/dist/lib/Component-CHTzJxEf.js +2 -0
  20. package/dist/lib/Component-CHTzJxEf.js.map +1 -0
  21. package/dist/lib/Container-xUbHk6l_.js +2 -0
  22. package/dist/lib/{Container-D5H8VxJK.js.map → Container-xUbHk6l_.js.map} +1 -1
  23. package/dist/lib/DOM-BeR95tE8.js +2 -0
  24. package/dist/lib/DOM-BeR95tE8.js.map +1 -0
  25. package/dist/lib/{DragManager-CI4mZQFy.js → DragManager-T5Oljd0F.js} +2 -2
  26. package/dist/lib/{DragManager-CI4mZQFy.js.map → DragManager-T5Oljd0F.js.map} +1 -1
  27. package/dist/lib/{FieldDecorator-CJs9gwqH.js → FieldDecorator-BaTGfKiW.js} +2 -2
  28. package/dist/lib/{FieldDecorator-CJs9gwqH.js.map → FieldDecorator-BaTGfKiW.js.map} +1 -1
  29. package/dist/lib/{Fit-DjRsiwlg.js → Fit-E-EIZv1k.js} +2 -2
  30. package/dist/lib/{Fit-DjRsiwlg.js.map → Fit-E-EIZv1k.js.map} +1 -1
  31. package/dist/lib/{Glyph-KEf4nIv2.js → Glyph-CnNslL95.js} +2 -2
  32. package/dist/lib/{Glyph-KEf4nIv2.js.map → Glyph-CnNslL95.js.map} +1 -1
  33. package/dist/lib/{Grid-DdL9TVeJ.js → Grid-BXS2T8MT.js} +2 -2
  34. package/dist/lib/{Grid-DdL9TVeJ.js.map → Grid-BXS2T8MT.js.map} +1 -1
  35. package/dist/lib/{GridConstraints-DkLueyrf.js → GridConstraints-D_kbd-h2.js} +2 -2
  36. package/dist/lib/{GridConstraints-DkLueyrf.js.map → GridConstraints-D_kbd-h2.js.map} +1 -1
  37. package/dist/lib/HBox-Dm3xgsDE.js +2 -0
  38. package/dist/lib/{HBox-Ce0GTCJP.js.map → HBox-Dm3xgsDE.js.map} +1 -1
  39. package/dist/lib/{Header-BQIVpBte.js → Header-CqFc2OUx.js} +2 -2
  40. package/dist/lib/{Header-BQIVpBte.js.map → Header-CqFc2OUx.js.map} +1 -1
  41. package/dist/lib/{IconText-Bo4Qcnot.js → IconText-CTM2r0Tv.js} +2 -2
  42. package/dist/lib/{IconText-Bo4Qcnot.js.map → IconText-CTM2r0Tv.js.map} +1 -1
  43. package/dist/lib/{LayoutSerialization-BT66TY83.js → LayoutSerialization-D1OHmxSB.js} +2 -2
  44. package/dist/lib/{LayoutSerialization-BT66TY83.js.map → LayoutSerialization-D1OHmxSB.js.map} +1 -1
  45. package/dist/lib/LayoutSizes-CvMmMgHJ.js +2 -0
  46. package/dist/lib/LayoutSizes-CvMmMgHJ.js.map +1 -0
  47. package/dist/lib/List-DHeOPAK2.js +2 -0
  48. package/dist/lib/List-DHeOPAK2.js.map +1 -0
  49. package/dist/lib/MemoryStore-DT6iWWco.js +2 -0
  50. package/dist/lib/MemoryStore-DT6iWWco.js.map +1 -0
  51. package/dist/lib/{Menu-Dz4L7EKJ.js → Menu-B6ippw-p.js} +2 -2
  52. package/dist/lib/{Menu-Dz4L7EKJ.js.map → Menu-B6ippw-p.js.map} +1 -1
  53. package/dist/lib/{MenuButton-VJ5uC3c1.js → MenuButton-Bjm1OyB-.js} +2 -2
  54. package/dist/lib/{MenuButton-VJ5uC3c1.js.map → MenuButton-Bjm1OyB-.js.map} +1 -1
  55. package/dist/lib/{Panel-DzWdYwq1.js → Panel-D9lTLGqP.js} +2 -2
  56. package/dist/lib/{Panel-DzWdYwq1.js.map → Panel-D9lTLGqP.js.map} +1 -1
  57. package/dist/lib/Position-DRSlWn4Z.js +2 -0
  58. package/dist/lib/Position-DRSlWn4Z.js.map +1 -0
  59. package/dist/lib/{ProgressSpinner-zJKtGyNJ.js → ProgressSpinner-glv-29eK.js} +2 -2
  60. package/dist/lib/{ProgressSpinner-zJKtGyNJ.js.map → ProgressSpinner-glv-29eK.js.map} +1 -1
  61. package/dist/lib/{RadioButton-CYSSv4nV.js → RadioButton-R4S3c9WD.js} +2 -2
  62. package/dist/lib/{RadioButton-CYSSv4nV.js.map → RadioButton-R4S3c9WD.js.map} +1 -1
  63. package/dist/lib/{RovingTabIndex-BSZ31Vp5.js → RovingTabIndex-Dgt01LOE.js} +2 -2
  64. package/dist/lib/{RovingTabIndex-BSZ31Vp5.js.map → RovingTabIndex-Dgt01LOE.js.map} +1 -1
  65. package/dist/lib/{Scrollbar-BhtOjqkG.js → Scrollbar-CiVV3axj.js} +2 -2
  66. package/dist/lib/{Scrollbar-BhtOjqkG.js.map → Scrollbar-CiVV3axj.js.map} +1 -1
  67. package/dist/lib/{Slider-CdXm7E64.js → Slider-_JVvuQ8M.js} +2 -2
  68. package/dist/lib/{Slider-CdXm7E64.js.map → Slider-_JVvuQ8M.js.map} +1 -1
  69. package/dist/lib/{Spacer-D9NGW4QG.js → Spacer-B57i2-_G.js} +2 -2
  70. package/dist/lib/{Spacer-D9NGW4QG.js.map → Spacer-B57i2-_G.js.map} +1 -1
  71. package/dist/lib/{TabButton-CThevdY_.js → TabButton-DEypdlZf.js} +2 -2
  72. package/dist/lib/{TabButton-CThevdY_.js.map → TabButton-DEypdlZf.js.map} +1 -1
  73. package/dist/lib/Text-Bni4icFY.js +2 -0
  74. package/dist/lib/Text-Bni4icFY.js.map +1 -0
  75. package/dist/lib/{Tooltip-tkXDk5Bo.js → Tooltip-BUy6uFKN.js} +2 -2
  76. package/dist/lib/{Tooltip-tkXDk5Bo.js.map → Tooltip-BUy6uFKN.js.map} +1 -1
  77. package/dist/lib/VBox-Dr7Ge9M6.js +2 -0
  78. package/dist/lib/VBox-Dr7Ge9M6.js.map +1 -0
  79. package/dist/lib/{VirtualScroller-DwEEJE1_.js → VirtualScroller-BPy6KmSX.js} +2 -2
  80. package/dist/lib/{VirtualScroller-DwEEJE1_.js.map → VirtualScroller-BPy6KmSX.js.map} +1 -1
  81. package/dist/lib/component/button.es.js +1 -1
  82. package/dist/lib/component/chart.es.js +1 -1
  83. package/dist/lib/component/chart.es.js.map +1 -1
  84. package/dist/lib/component/container.es.js +1 -1
  85. package/dist/lib/component/diagram.es.js +1 -1
  86. package/dist/lib/component/diagram.es.js.map +1 -1
  87. package/dist/lib/component/display.es.js +1 -1
  88. package/dist/lib/component/editor.es.js +3 -3
  89. package/dist/lib/component/editor.es.js.map +1 -1
  90. package/dist/lib/component/input.es.js +1 -1
  91. package/dist/lib/component/input.es.js.map +1 -1
  92. package/dist/lib/component/list.es.js +1 -1
  93. package/dist/lib/component/menubar.es.js +1 -1
  94. package/dist/lib/component/table.es.js +2 -2
  95. package/dist/lib/component/table.es.js.map +1 -1
  96. package/dist/lib/component/tree.es.js +1 -1
  97. package/dist/lib/component/tree.es.js.map +1 -1
  98. package/dist/lib/core.es.js +1 -1
  99. package/dist/lib/core.es.js.map +1 -1
  100. package/dist/lib/data.es.js +1 -1
  101. package/dist/lib/data.es.js.map +1 -1
  102. package/dist/lib/glyphs/solid/index.es.js +1 -1
  103. package/dist/lib/layout.es.js +1 -1
  104. package/dist/lib/layout.es.js.map +1 -1
  105. package/dist/lib/overlay.es.js +1 -1
  106. package/dist/lib/overlay.es.js.map +1 -1
  107. package/dist/lib/primitive.es.js +1 -1
  108. package/dist/lib/router.es.js +1 -1
  109. package/dist/lib/router.es.js.map +1 -1
  110. package/dist/lib/{VirtualRowView-BxpHQ_u8.js → selectionsEqual-2PJrcimg.js} +2 -2
  111. package/dist/lib/{VirtualRowView-BxpHQ_u8.js.map → selectionsEqual-2PJrcimg.js.map} +1 -1
  112. package/dist/lib/types/component/diagram/DiagramEdgeLayer.d.ts +14 -1
  113. package/dist/lib/types/component/diagram/DiagramModel.d.ts +1 -0
  114. package/dist/lib/types/component/diagram/DiagramNode.d.ts +4 -0
  115. package/dist/lib/types/component/diagram/DiagramView.d.ts +76 -5
  116. package/dist/lib/types/component/diagram/ElkLayoutEngine.d.ts +14 -1
  117. package/dist/lib/types/component/diagram/index.d.ts +2 -2
  118. package/dist/lib/types/component/editor/CodeEditor.d.ts +3 -2
  119. package/dist/lib/types/component/input/Text.d.ts +3 -1
  120. package/dist/lib/types/component/shared/selectionsEqual.d.ts +1 -0
  121. package/dist/lib/types/component/table/Column.d.ts +2 -0
  122. package/dist/lib/types/component/table/ColumnConfig.d.ts +1 -0
  123. package/dist/lib/types/component/table/Header.d.ts +1 -0
  124. package/dist/lib/types/component/table/Table.d.ts +20 -0
  125. package/dist/lib/types/component/table/cell/Header.d.ts +1 -0
  126. package/dist/lib/types/component/table/index.d.ts +1 -1
  127. package/dist/lib/types/component/tree/Tree.d.ts +1 -0
  128. package/dist/lib/types/core/Aria.d.ts +0 -2
  129. package/dist/lib/types/core/Body.d.ts +1 -0
  130. package/dist/lib/types/core/ClassStyleRules.d.ts +17 -0
  131. package/dist/lib/types/core/Component.d.ts +10 -2
  132. package/dist/lib/types/core/ComponentDefaults.d.ts +1 -0
  133. package/dist/lib/types/core/DOM.d.ts +11 -2
  134. package/dist/lib/types/core/ElementAttributes.d.ts +15 -0
  135. package/dist/lib/types/core/PendingTransitions.d.ts +4 -0
  136. package/dist/lib/types/core/StyleTarget.d.ts +1 -0
  137. package/dist/lib/types/core/Util.d.ts +2 -0
  138. package/dist/lib/types/core/index.d.ts +1 -0
  139. package/dist/lib/types/layout/Border.d.ts +1 -0
  140. package/dist/lib/types/layout/Tab.d.ts +4 -1
  141. package/dist/lib/types/layout/Table.d.ts +1 -0
  142. package/dist/lib/types/overlay/AbstractWindow.d.ts +1 -0
  143. package/dist/lib/types/router/RoutePattern.d.ts +7 -0
  144. package/dist/lib/types/router/Router.d.ts +13 -2
  145. package/dist/lib/types/router/index.d.ts +1 -1
  146. package/dist/lib/validation.es.js +1 -1
  147. package/llms.txt +1 -1
  148. package/package.json +4 -8
  149. package/dist/lib/Border-BgaZkc1R.js +0 -2
  150. package/dist/lib/BoxLayout-DrKGfsup.js +0 -2
  151. package/dist/lib/BoxLayout-DrKGfsup.js.map +0 -1
  152. package/dist/lib/Component-DXf5a3g0.js +0 -2
  153. package/dist/lib/Component-DXf5a3g0.js.map +0 -1
  154. package/dist/lib/Container-D5H8VxJK.js +0 -2
  155. package/dist/lib/DOM-CGn7xyTw.js +0 -2
  156. package/dist/lib/DOM-CGn7xyTw.js.map +0 -1
  157. package/dist/lib/HBox-Ce0GTCJP.js +0 -2
  158. package/dist/lib/LayoutSizes-DU3qSq0w.js +0 -2
  159. package/dist/lib/LayoutSizes-DU3qSq0w.js.map +0 -1
  160. package/dist/lib/List-DtTVTyWW.js +0 -2
  161. package/dist/lib/List-DtTVTyWW.js.map +0 -1
  162. package/dist/lib/Position-A39T7-_1.js +0 -2
  163. package/dist/lib/Position-A39T7-_1.js.map +0 -1
  164. package/dist/lib/Text-gz6qjFfP.js +0 -2
  165. package/dist/lib/Text-gz6qjFfP.js.map +0 -1
  166. package/dist/lib/VBox-EIqw85Rh.js +0 -2
  167. package/dist/lib/VBox-EIqw85Rh.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"../DOM-CGn7xyTw.js";import{n as t,t as n}from"../Position-A39T7-_1.js";import{f as r,t as i}from"../Component-DXf5a3g0.js";import{t as a}from"../Scrollbar-BhtOjqkG.js";import{t as o}from"../Container-D5H8VxJK.js";import{t as s}from"../Fit-DjRsiwlg.js";import{t as c}from"../Text-gz6qjFfP.js";import{t as l}from"../HBox-Ce0GTCJP.js";import{c as u,h as d,m as f,o as p,s as m,u as h}from"../LayoutSizes-DU3qSq0w.js";import{n as g,r as _}from"../Border-BgaZkc1R.js";import{t as v}from"../LayoutConstraints-DkctJZXB.js";import{n as y,r as b}from"../Menu-Dz4L7EKJ.js";import{a as x,i as S,n as C,r as w,t as T}from"../GridConstraints-DkLueyrf.js";import{t as E}from"../Grid-DdL9TVeJ.js";import{t as D}from"../Spacer-D9NGW4QG.js";import{t as O}from"../VirtualScroller-DwEEJE1_.js";var k=r(class Legend extends c{static LEFT_MARGIN=10;constructor(e){super(void 0,{...e??{},tag:`legend`}),this.setPosition(n.STATIC)}applyStyle(e){return super.applyStyle(e),this.setElementCSSRule(`marginLeft`,`${Legend.LEFT_MARGIN}px`),this}}),A={tag:`fieldset`,border:`var(--ts-ui-input-border)`,borderRadius:`var(--ts-ui-border-radius, 4px)`,insets:new t(5,8,8,8),preferredSize:{width:200,height:200},minSize:{width:100,height:100}},j=class FieldSet extends i{static LEGEND_CLEARANCE_FALLBACK=16;_legend=new k;_legendClearance=null;constructor(e=``,t,n){super(t,{...A,...n??{}}),this._legend.setText(e),this._legend.setDisplayed(e!==``)}applyOptions(e){return super.applyOptions(e),e.legend!==void 0&&this.setTitle(e.legend),this}getTitle(){return this._legend.getText()}setTitle(e){return this._legend.setText(e),this._legend.setDisplayed(e!==``),this.clampLegendWidth(),this}clampLegendWidth(){if(this.getTitle()===``)return this;let e=this.getWidth();if(e<=0)return this;let t=this.getPerimeterSize(),n=t.left+t.right,r=Math.max(0,e-n);return this._legend.setMaxSize({width:r,height:Number.MAX_VALUE}),this}getMinSize(){if(this.getTitle()===``)return super.getMinSize();let e=super.getMinSize(),t=this._legend.getMinSize();if(!t)return e;let n=this.getPerimeterSize(),r=n.left+n.right,i=t.width+r;return e?{width:Math.max(e.width,i),height:e.height}:{width:i,height:0}}getPerimeterSize(){let e=super.getPerimeterSize();return e.top+=this.legendClearance(),e}legendClearance(){if(this.getTitle()===``)return 0;if(this._legendClearance!=null)return this._legendClearance;if(e.source.isModelled())return FieldSet.LEGEND_CLEARANCE_FALLBACK;let t=this._legend.getElement();if(t&&e.source.isConnected(t)){let n=e.source.getOffsetSize(t).offsetHeight;if(n>0)return this._legendClearance=n,this._legendClearance}return FieldSet.LEGEND_CLEARANCE_FALLBACK}doLayout(){return super.doLayout(),this.clampLegendWidth(),this}render(){let t=super.render();return e.sink.appendChild(t,this._legend.getElement(!0)),t}},M=r(j),N=8,LabeledGrid=class extends o{_columns;_grid;_flowCol=0;_rowCount=0;constructor(e){super(e),this._columns=e?.columns??1,this._grid=new E({baselineAlign:!0,columns:2*this._columns,spacing:e?.fieldSpacing??N,columnTracks:this.buildColumnTracks(),rows:0,rowTracks:[]}),this.setLayoutManager(this._grid),e?.rows&&this.applyRows(e.rows)}addField(e,t){return this.openRow(),this.addComponent(new c(e)),this.addComponent(t),this._flowCol+=2,this._flowCol>=2*this._columns&&(this._flowCol=0),this}addRow(e){this.finishRow();for(let t of e)this.addField(t.title,t.component);return this.finishRow(),this}addFullWidthRow(e){this.finishRow(),this.openRow();let t=new T;return t.colSpan=2*this._columns,this.addComponent(e,t),this}getColumns(){return this._columns}buildColumnTracks(){let e=[];for(let t=0;t<this._columns;t++)e.push({mode:`content`}),e.push({mode:`weight`,value:1});return e}applyRows(e){for(let t of e)Array.isArray(t)?this.addRow(t):this.addFullWidthRow(t.component)}openRow(){this._flowCol===0&&(this._rowCount++,this.growRows())}finishRow(){if(this._flowCol===0)return;let e=2*this._columns-this._flowCol;for(let t=0;t<e;t++)this.addComponent(new i);this._flowCol=0}growRows(){this._grid.setRows(this._rowCount),this._grid.setRowTracks(Array.from({length:this._rowCount},()=>({mode:`content`})))}},P=r(LabeledGrid),F={preferredSize:void 0,minSize:void 0},LabeledFieldSet=class extends j{_labeledGrid;constructor(e=``,t,n){super(e,t,{...F,...n??{}}),this._labeledGrid=new P({columns:t?.columns,fieldSpacing:t?.fieldSpacing,rows:t?.rows}),this.setLayoutManager(new s),this.addComponent(this._labeledGrid)}addField(e,t){return this._labeledGrid.addField(e,t),this}addRow(e){return this._labeledGrid.addRow(e),this}addFullWidthRow(e){return this._labeledGrid.addFullWidthRow(e),this}getColumns(){return this._labeledGrid.getColumns()}getGrid(){return this._labeledGrid}},I=r(LabeledFieldSet),L=22,R=1,z=4,B={insets:new t(0,6,0,6)},StatusBar=class extends o{_message=``;_defaultMessage=``;_messageTimer=null;_messageText;_spacer;constructor(e){super(e,B);let t=new l;t.setComponentSpacing(z),this.setLayoutManager(t),this.setBackgroundColor(`var(--ts-ui-statusbar-bg, rgb(245, 245, 245))`),this.setForegroundColor(`var(--ts-ui-statusbar-color, rgb(60, 60, 60))`),this.setBorder({borderTop:`${R}px solid var(--ts-ui-statusbar-border, rgb(220, 220, 220))`}),this.setMinSize({width:0,height:22}),this.setMaxSize({width:2**53-1,height:22}),this._messageText=new c(``),this._messageText.centerInHeight(22-R),this._spacer=D.flex(),this.addComponent(this._messageText),this.addComponent(this._spacer),this.getAria().setRole(`status`),this.getAria().setLive(`polite`),this._options.defaultMessage!==void 0&&(this._defaultMessage=this._options.defaultMessage),this._options.message===void 0?this._defaultMessage!==``&&(this._message=this._defaultMessage,this._messageText.setText(this._defaultMessage)):this.setMessage(this._options.message)}applyOptions(e){return super.applyOptions(e),e.message!==void 0&&(this._options.message=e.message),e.defaultMessage!==void 0&&(this._options.defaultMessage=e.defaultMessage),this}addLeft(e){return this.insertComponent(e,this.getComponents().indexOf(this._spacer)),this}addRight(e){return this.addComponent(e),this}removeLeft(e){return this.removeComponent(e),this}removeRight(e){return this.removeComponent(e),this}setMessage(e,t){return this._messageTimer!==null&&(clearTimeout(this._messageTimer),this._messageTimer=null),this._message=e,this._messageText.setText(e),t!==void 0&&t>0&&(this._messageTimer=setTimeout(()=>{this._messageTimer=null,this._message=this._defaultMessage,this._messageText.setText(this._defaultMessage)},t)),this}getMessage(){return this._message}clearMessage(){return this.setMessage(this._defaultMessage)}setDefaultMessage(e){return this._defaultMessage=e,this._messageTimer===null&&(this._message=e,this._messageText.setText(e)),this}getDefaultMessage(){return this._defaultMessage}destructor(){this._messageTimer!==null&&(clearTimeout(this._messageTimer),this._messageTimer=null),super.destructor()}},V=r(StatusBar),TabPanel=class extends o{constructor(e){if(super(e),this.setLayoutManager(new p(e?.tabOptions)),e?.tabs)for(let t of e.tabs)this.addTab(t.component,t.label,{closeable:t.closeable,glyph:t.glyph,lazy:t.lazy});e?.onTabClose&&this.getTab().on(`tabclose`,e.onTabClose)}addTab(e,t,n){let r=new v;return r.name=t,r.closeable=n?.closeable??!1,r.glyph=n?.glyph??null,r.lazy=n?.lazy,this.addComponent(e,r),this}addLazyTab(e,t,n){return this.addTab(e,t,n)}getTab(){return this.getLayoutManager()}},H=r(TabPanel),AccordionPanel=class extends o{constructor(e){if(super(e),this.setLayoutManager(new w),e?.singleOpen!==void 0&&this.getAccordion().setSingleOpen(e.singleOpen),e?.resizable!==void 0&&this.getAccordion().setResizable(e.resizable),e?.sections)for(let t of e.sections)this.addSection(t.component,t.label,t.initiallyOpen,t.glyph,t.tools,t.weight);e?.onSectionToggle&&this.getAccordion().on(`sectiontoggle`,e.onSectionToggle)}addSection(e,t,n,r,i,a){let o=new C(t,n,r,i);return a!==void 0&&(o.weight=a),this.addComponent(e,o),this}getAccordion(){return this.getLayoutManager()}},U=r(AccordionPanel);export{S as AccordionHeader,x as AccordionIndicator,U as AccordionPanel,_ as CollapseButton,f as Direction,M as FieldSet,I as LabeledFieldSet,P as LabeledGrid,k as Legend,b as MenuItem,y as MenuSeparator,L as STATUS_BAR_HEIGHT,u as ScrollStrip,a as Scrollbar,D as Spacer,g as SplitGutter,V as StatusBar,m as TabBar,H as TabPanel,O as VirtualScroller,d as WindowBorder,h as WindowHeader};
1
+ import{t as e}from"../DOM-BeR95tE8.js";import{n as t,t as n}from"../Position-DRSlWn4Z.js";import{m as r,t as i}from"../Component-CHTzJxEf.js";import{t as a}from"../Scrollbar-CiVV3axj.js";import{t as o}from"../Container-xUbHk6l_.js";import{t as s}from"../Fit-E-EIZv1k.js";import{t as c}from"../Text-Bni4icFY.js";import{t as l}from"../HBox-Dm3xgsDE.js";import{c as u,h as d,m as f,o as p,s as m,u as h}from"../LayoutSizes-CvMmMgHJ.js";import{n as g,r as _}from"../Border-Dq6dXkmS.js";import{t as v}from"../LayoutConstraints-DkctJZXB.js";import{n as y,r as b}from"../Menu-B6ippw-p.js";import{a as x,i as S,n as C,r as w,t as T}from"../GridConstraints-D_kbd-h2.js";import{t as E}from"../Grid-BXS2T8MT.js";import{t as D}from"../Spacer-B57i2-_G.js";import{t as O}from"../VirtualScroller-BPy6KmSX.js";var k=r(class Legend extends c{static LEFT_MARGIN=10;constructor(e){super(void 0,{...e??{},tag:`legend`}),this.setPosition(n.STATIC)}applyStyle(e){return super.applyStyle(e),this.setElementCSSRule(`marginLeft`,`${Legend.LEFT_MARGIN}px`),this}}),A={tag:`fieldset`,border:`var(--ts-ui-input-border)`,borderRadius:`var(--ts-ui-border-radius, 4px)`,insets:new t(5,8,8,8),preferredSize:{width:200,height:200},minSize:{width:100,height:100}},j=class FieldSet extends i{static LEGEND_CLEARANCE_FALLBACK=16;_legend=new k;_legendClearance=null;constructor(e=``,t,n){super(t,{...A,...n??{}}),this._legend.setText(e),this._legend.setDisplayed(e!==``)}applyOptions(e){return super.applyOptions(e),e.legend!==void 0&&this.setTitle(e.legend),this}getTitle(){return this._legend.getText()}setTitle(e){return this._legend.setText(e),this._legend.setDisplayed(e!==``),this.clampLegendWidth(),this}clampLegendWidth(){if(this.getTitle()===``)return this;let e=this.getWidth();if(e<=0)return this;let t=this.getPerimeterSize(),n=t.left+t.right,r=Math.max(0,e-n);return this._legend.setMaxSize({width:r,height:Number.MAX_VALUE}),this}getMinSize(){if(this.getTitle()===``)return super.getMinSize();let e=super.getMinSize(),t=this._legend.getMinSize();if(!t)return e;let n=this.getPerimeterSize(),r=n.left+n.right,i=t.width+r;return e?{width:Math.max(e.width,i),height:e.height}:{width:i,height:0}}getPerimeterSize(){let e=super.getPerimeterSize();return e.top+=this.legendClearance(),e}legendClearance(){if(this.getTitle()===``)return 0;if(this._legendClearance!=null)return this._legendClearance;if(e.source.isModelled())return FieldSet.LEGEND_CLEARANCE_FALLBACK;let t=this._legend.getElement();if(t&&e.source.isConnected(t)){let n=e.source.getOffsetSize(t).offsetHeight;if(n>0)return this._legendClearance=n,this._legendClearance}return FieldSet.LEGEND_CLEARANCE_FALLBACK}doLayout(){return super.doLayout(),this.clampLegendWidth(),this}render(){let t=super.render();return e.sink.appendChild(t,this._legend.getElement(!0)),t}},M=r(j),N=8,LabeledGrid=class extends o{_columns;_grid;_flowCol=0;_rowCount=0;constructor(e){super(e),this._columns=e?.columns??1,this._grid=new E({baselineAlign:!0,columns:2*this._columns,spacing:e?.fieldSpacing??N,columnTracks:this.buildColumnTracks(),rows:0,rowTracks:[]}),this.setLayoutManager(this._grid),e?.rows&&this.applyRows(e.rows)}addField(e,t){return this.openRow(),this.addComponent(new c(e)),this.addComponent(t),this._flowCol+=2,this._flowCol>=2*this._columns&&(this._flowCol=0),this}addRow(e){this.finishRow();for(let t of e)this.addField(t.title,t.component);return this.finishRow(),this}addFullWidthRow(e){this.finishRow(),this.openRow();let t=new T;return t.colSpan=2*this._columns,this.addComponent(e,t),this}getColumns(){return this._columns}buildColumnTracks(){let e=[];for(let t=0;t<this._columns;t++)e.push({mode:`content`}),e.push({mode:`weight`,value:1});return e}applyRows(e){for(let t of e)Array.isArray(t)?this.addRow(t):this.addFullWidthRow(t.component)}openRow(){this._flowCol===0&&(this._rowCount++,this.growRows())}finishRow(){if(this._flowCol===0)return;let e=2*this._columns-this._flowCol;for(let t=0;t<e;t++)this.addComponent(new i);this._flowCol=0}growRows(){this._grid.setRows(this._rowCount),this._grid.setRowTracks(Array.from({length:this._rowCount},()=>({mode:`content`})))}},P=r(LabeledGrid),F={preferredSize:void 0,minSize:void 0},LabeledFieldSet=class extends j{_labeledGrid;constructor(e=``,t,n){super(e,t,{...F,...n??{}}),this._labeledGrid=new P({columns:t?.columns,fieldSpacing:t?.fieldSpacing,rows:t?.rows}),this.setLayoutManager(new s),this.addComponent(this._labeledGrid)}addField(e,t){return this._labeledGrid.addField(e,t),this}addRow(e){return this._labeledGrid.addRow(e),this}addFullWidthRow(e){return this._labeledGrid.addFullWidthRow(e),this}getColumns(){return this._labeledGrid.getColumns()}getGrid(){return this._labeledGrid}},I=r(LabeledFieldSet),L=22,R=1,z=4,B={insets:new t(0,6,0,6)},StatusBar=class extends o{_message=``;_defaultMessage=``;_messageTimer=null;_messageText;_spacer;constructor(e){super(e,B);let t=new l;t.setComponentSpacing(z),this.setLayoutManager(t),this.setBackgroundColor(`var(--ts-ui-statusbar-bg, rgb(245, 245, 245))`),this.setForegroundColor(`var(--ts-ui-statusbar-color, rgb(60, 60, 60))`),this.setBorder({borderTop:`${R}px solid var(--ts-ui-statusbar-border, rgb(220, 220, 220))`}),this.setMinSize({width:0,height:22}),this.setMaxSize({width:2**53-1,height:22}),this._messageText=new c(``),this._messageText.centerInHeight(22-R),this._spacer=D.flex(),this.addComponent(this._messageText),this.addComponent(this._spacer),this.getAria().setRole(`status`),this.getAria().setLive(`polite`),this._options.defaultMessage!==void 0&&(this._defaultMessage=this._options.defaultMessage),this._options.message===void 0?this._defaultMessage!==``&&(this._message=this._defaultMessage,this._messageText.setText(this._defaultMessage)):this.setMessage(this._options.message)}applyOptions(e){return super.applyOptions(e),e.message!==void 0&&(this._options.message=e.message),e.defaultMessage!==void 0&&(this._options.defaultMessage=e.defaultMessage),this}addLeft(e){return this.insertComponent(e,this.getComponents().indexOf(this._spacer)),this}addRight(e){return this.addComponent(e),this}removeLeft(e){return this.removeComponent(e),this}removeRight(e){return this.removeComponent(e),this}setMessage(e,t){return this._messageTimer!==null&&(clearTimeout(this._messageTimer),this._messageTimer=null),this._message=e,this._messageText.setText(e),t!==void 0&&t>0&&(this._messageTimer=setTimeout(()=>{this._messageTimer=null,this._message=this._defaultMessage,this._messageText.setText(this._defaultMessage)},t)),this}getMessage(){return this._message}clearMessage(){return this.setMessage(this._defaultMessage)}setDefaultMessage(e){return this._defaultMessage=e,this._messageTimer===null&&(this._message=e,this._messageText.setText(e)),this}getDefaultMessage(){return this._defaultMessage}destructor(){this._messageTimer!==null&&(clearTimeout(this._messageTimer),this._messageTimer=null),super.destructor()}},V=r(StatusBar),TabPanel=class extends o{constructor(e){if(super(e),this.setLayoutManager(new p(e?.tabOptions)),e?.tabs)for(let t of e.tabs)this.addTab(t.component,t.label,{closeable:t.closeable,glyph:t.glyph,lazy:t.lazy});e?.onTabClose&&this.getTab().on(`tabclose`,e.onTabClose)}addTab(e,t,n){let r=new v;return r.name=t,r.closeable=n?.closeable??!1,r.glyph=n?.glyph??null,r.lazy=n?.lazy,this.addComponent(e,r),this}addLazyTab(e,t,n){return this.addTab(e,t,n)}getTab(){return this.getLayoutManager()}},H=r(TabPanel),AccordionPanel=class extends o{constructor(e){if(super(e),this.setLayoutManager(new w),e?.singleOpen!==void 0&&this.getAccordion().setSingleOpen(e.singleOpen),e?.resizable!==void 0&&this.getAccordion().setResizable(e.resizable),e?.sections)for(let t of e.sections)this.addSection(t.component,t.label,t.initiallyOpen,t.glyph,t.tools,t.weight);e?.onSectionToggle&&this.getAccordion().on(`sectiontoggle`,e.onSectionToggle)}addSection(e,t,n,r,i,a){let o=new C(t,n,r,i);return a!==void 0&&(o.weight=a),this.addComponent(e,o),this}getAccordion(){return this.getLayoutManager()}},U=r(AccordionPanel);export{S as AccordionHeader,x as AccordionIndicator,U as AccordionPanel,_ as CollapseButton,f as Direction,M as FieldSet,I as LabeledFieldSet,P as LabeledGrid,k as Legend,b as MenuItem,y as MenuSeparator,L as STATUS_BAR_HEIGHT,u as ScrollStrip,a as Scrollbar,D as Spacer,g as SplitGutter,V as StatusBar,m as TabBar,H as TabPanel,O as VirtualScroller,d as WindowBorder,h as WindowHeader};
2
2
  //# sourceMappingURL=container.es.js.map
@@ -1,2 +1,2 @@
1
- import{t as e}from"../DOM-CGn7xyTw.js";import{n as t}from"../Position-A39T7-_1.js";import{c as n,f as r,t as i,y as a}from"../Component-DXf5a3g0.js";import{t as o}from"../ListenerBag-WPdKuuds.js";import{t as s}from"../Container-D5H8VxJK.js";import{t as c}from"../Panel-DzWdYwq1.js";import{t as l}from"../Fit-DjRsiwlg.js";import{t as u}from"../Text-gz6qjFfP.js";import{t as d}from"../IconText-Bo4Qcnot.js";var f=120,p=40;function mergeLayoutOptions(...e){let t={};for(let n of e)n&&Object.assign(t,n);return t}var m={"elk.padding":`[top=34,left=12,bottom=12,right=12]`};function mapDiagramNode(e,t){if(e.children&&e.children.length>0)return{id:e.id,layoutOptions:mergeLayoutOptions(m,e.layoutOptions),children:e.children.map(e=>mapDiagramNode(e,t))};let n=t.get(e.id);return{id:e.id,width:e.width??n?.width??f,height:e.height??n?.height??p,layoutOptions:e.layoutOptions,ports:e.ports?.map(e=>({id:e.id,x:e.x,y:e.y,width:e.width,height:e.height,layoutOptions:e.side===void 0?void 0:{"elk.port.side":e.side}}))}}var h={"elk.hierarchyHandling":`INCLUDE_CHILDREN`};function buildElkGraph(e,t,n){let r=e.nodes.map(e=>mapDiagramNode(e,t)),i=e.edges.map(e=>({id:e.id,sources:[e.sourcePort??e.source],targets:[e.targetPort??e.target]}));return{id:`root`,layoutOptions:mergeLayoutOptions(h,n,e.layoutOptions),children:r,edges:i}}function flattenElkNode(e,t,n,r){let i=t+(e.x??0),a=n+(e.y??0);r.push({id:e.id,x:i,y:a,width:e.width??0,height:e.height??0});for(let t of e.children??[])flattenElkNode(t,i,a,r)}function collectElkEdges(e,t){for(let n of e.edges??[])t.push({edge:n,container:n.container??e.id});for(let n of e.children??[])collectElkEdges(n,t)}function offsetSections(e,t){if(t.x===0&&t.y===0)return e;let shift=e=>({x:e.x+t.x,y:e.y+t.y});return e.map(e=>({startPoint:shift(e.startPoint),endPoint:shift(e.endPoint),bendPoints:e.bendPoints?.map(shift)}))}function mapElkResult(e){let t=[];for(let n of e.children??[])flattenElkNode(n,0,0,t);let n=new Map([[e.id,{x:0,y:0}]]);for(let e of t)n.set(e.id,{x:e.x,y:e.y});let r=[];return collectElkEdges(e,r),{nodes:t,edges:r.map(({edge:e,container:t})=>({id:e.id,sections:offsetSections(e.sections??[],n.get(t)??{x:0,y:0})})),width:e.width??0,height:e.height??0}}var ElkLayoutEngine=class{_elk=null;_workerUrl;constructor(e){this._workerUrl=e}async layout(e,t,n){let r=await this.ensureElk(),i=buildElkGraph(e,t,n);return mapElkResult(await r.layout(i))}async ensureElk(){if(this._elk)return this._elk;let{default:e}=await import(`elkjs/lib/elk.bundled.js`),t=this._workerUrl?new e({workerUrl:this._workerUrl}):new e;return this._elk=t,t}},g={insets:new t(4,8,4,8)},_=`4px`,DiagramNode=class extends c{_content;get selectedStyleRule(){return this._selectedStyleRule??=this.createStyleRule(`.selected`)}constructor(e){super(e,{...g,layoutManager:new l}),this.setBackgroundColor(`var(--ts-ui-diagram-node-bg, var(--ts-ui-button-bg, rgb(245, 245, 245)))`),this.setBorder(`1px solid var(--ts-ui-border-color, rgb(180, 180, 180))`),this.setBorderRadius(_),this.setCursor(`pointer`),this.selectedStyleRule.set(`borderColor`,`var(--ts-ui-accent-color, rgb(30, 100, 200))`),this.selectedStyleRule.set(`backgroundColor`,`var(--ts-ui-diagram-node-selected-bg, var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15)))`),this.buildContent(this._options.glyph,this._options.label??``),this._options.selected!==void 0&&this.setSelected(this._options.selected)}applyOptions(e){return super.applyOptions(e),e.label!==void 0&&(this._options.label=e.label),e.glyph!==void 0&&(this._options.glyph=e.glyph),e.selected!==void 0&&(this._options.selected=e.selected),this}buildContent(e,t){this._content&&this.removeComponent(this._content),this._content=e===void 0?new u(t):new d(e,t),this._content.setPointerEvents(`none`),this.addComponent(this._content)}setLabel(e){return this._options.label=e,this._content.setText(e),this}getLabel(){return this._options.label??null}setSelected(t){this._options.selected=t;let n=this.getElement();return n&&e.sink.apply(n,{toggleClass:{selected:t}}),this}isSelected(){return this._options.selected??!1}init(t){super.init(t);let n=t||this.getElement();return n&&this.isSelected()&&e.sink.apply(n,{toggleClass:{selected:!0}}),this}},v=r(DiagramNode),y=`4px`,b=6,DiagramGroupNode=class extends c{_header;constructor(e){super(e,{layoutManager:new n}),this.setBackgroundColor(`var(--ts-ui-diagram-group-bg, rgba(120, 120, 120, 0.08))`),this.setBorder(`1px solid var(--ts-ui-diagram-group-border, var(--ts-ui-border-color, rgb(180, 180, 180)))`),this.setBorderRadius(y);let t=this._options.label??``;this._header=this._options.glyph===void 0?new u(t):new d(this._options.glyph,t),this._header.setPointerEvents(`none`),this._header.setX(b),this._header.setY(b),this.addComponent(this._header)}applyOptions(e){return super.applyOptions(e),e.label!==void 0&&(this._options.label=e.label),e.glyph!==void 0&&(this._options.glyph=e.glyph),this}setLabel(e){return this._options.label=e,this._header.setText(e),this}getLabel(){return this._options.label??null}},x=r(DiagramGroupNode),S=`http://www.w3.org/2000/svg`,C=`var(--ts-ui-diagram-edge, var(--ts-ui-border-color, rgb(120, 120, 120)))`,w=`1.5`,T=`12`,E=`var(--ts-ui-diagram-bg, var(--ts-ui-panel-bg, rgb(255, 255, 255)))`,D=`4`,O=8,k=`6 4`,A=[`one`,`zeroOrOne`,`oneOrMany`,`zeroOrMany`],j={one:{width:12,height:12,refX:12,refY:6,parts:[{tag:`path`,attrs:{d:`M 4 0 L 4 12 M 8 0 L 8 12`}}]},zeroOrOne:{width:16,height:12,refX:16,refY:6,parts:[{tag:`path`,attrs:{d:`M 12 0 L 12 12`}},{tag:`circle`,attrs:{cx:`6`,cy:`6`,r:`4`}}]},oneOrMany:{width:16,height:12,refX:16,refY:6,parts:[{tag:`path`,attrs:{d:`M 0 6 L 12 0 M 0 6 L 12 6 M 0 6 L 12 12`}},{tag:`path`,attrs:{d:`M 14 0 L 14 12`}}]},zeroOrMany:{width:18,height:12,refX:18,refY:6,parts:[{tag:`path`,attrs:{d:`M 6 6 L 18 0 M 6 6 L 18 6 M 6 6 L 18 12`}},{tag:`circle`,attrs:{cx:`3`,cy:`6`,r:`3`}}]}};function labelPoint(e){let t=e[0];return t?midpointAlong([t.startPoint,...t.bendPoints??[],t.endPoint]):{x:0,y:0}}function midpointAlong(e){let segmentLength=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),t=0;for(let n=1;n<e.length;n++)t+=segmentLength(e[n-1],e[n]);let n=t/2;for(let t=1;t<e.length;t++){let r=segmentLength(e[t-1],e[t]);if(r>=n){let i=r===0?0:n/r;return{x:e[t-1].x+(e[t].x-e[t-1].x)*i,y:e[t-1].y+(e[t].y-e[t-1].y)*i}}n-=r}return e[e.length-1]}function buildPathData(e){let t=[];for(let n of e){t.push(`M ${n.startPoint.x} ${n.startPoint.y}`);for(let e of n.bendPoints??[])t.push(`L ${e.x} ${e.y}`);t.push(`L ${n.endPoint.x} ${n.endPoint.y}`)}return t.join(` `)}var DiagramEdgeLayer=class extends i{_edges=[];_pathHandles=[];_markerId;_crowsFootMarkerIds;constructor(e){super(e),this._markerId=`${this.getId()}-arrow`,this._crowsFootMarkerIds=Object.fromEntries(A.map(e=>[e,`${this.getId()}-${e}`])),this.setPointerEvents(`none`)}markerUrl(e){if(e)return`url(#${e===`arrow`?this._markerId:this._crowsFootMarkerIds[e]})`}setEdges(e){return this._edges=e,this.rebuildPaths(),this}createRootElement(){let t=e.sink.createElementNS(S,`svg`),n=e.sink.createElementNS(S,`defs`);this.createArrowMarker(n);for(let e of A)this.createCrowsFootMarker(n,e);return e.sink.appendChild(t,n),this.trackHandle(n),t}createArrowMarker(t){let n=e.sink.createElementNS(S,`marker`);e.sink.apply(n,{setAttr:{id:this._markerId,markerWidth:String(O),markerHeight:String(O),refX:String(O),refY:String(O/2),orient:`auto-start-reverse`,markerUnits:`userSpaceOnUse`}});let r=e.sink.createElementNS(S,`path`);e.sink.apply(r,{setAttr:{d:`M 0 0 L ${O} ${O/2} L 0 ${O} z`,fill:C}}),e.sink.appendChild(n,r),e.sink.appendChild(t,n),this.trackHandle(n),this.trackHandle(r)}createCrowsFootMarker(t,n){let r=j[n],i=e.sink.createElementNS(S,`marker`);e.sink.apply(i,{setAttr:{id:this._crowsFootMarkerIds[n],markerWidth:String(r.width),markerHeight:String(r.height),refX:String(r.refX),refY:String(r.refY),orient:`auto-start-reverse`,markerUnits:`userSpaceOnUse`}}),e.sink.appendChild(t,i),this.trackHandle(i);for(let t of r.parts){let n=e.sink.createElementNS(S,t.tag);e.sink.apply(n,{setAttr:{...t.attrs,fill:`none`,stroke:C}}),e.sink.appendChild(i,n),this.trackHandle(n)}}render(){let e=super.render();return this.rebuildPaths(),e}rebuildPaths(){let t=this.getElement();if(t){for(let n of this._pathHandles)e.sink.removeChild(t,n),this.untrackHandle(n),e.sink.release(n);this._pathHandles=[];for(let n of this._edges){let r=buildPathData(n.sections);if(!r)continue;let i=e.sink.createElementNS(S,`path`),a=n.style,o=a?this.markerUrl(a.endMarker):this.markerUrl(`arrow`),s=a?this.markerUrl(a.startMarker):void 0,c={d:r,fill:`none`,stroke:a?.stroke??C,"stroke-width":w};o&&(c[`marker-end`]=o),s&&(c[`marker-start`]=s),a?.dashed&&(c[`stroke-dasharray`]=k),e.sink.apply(i,{setAttr:c}),e.sink.appendChild(t,i),this.trackHandle(i),this._pathHandles.push(i),a?.label&&this.drawLabel(t,n,a.label)}}}drawLabel(t,n,r){let i=labelPoint(n.sections),a=e.sink.createElementNS(S,`text`);e.sink.apply(a,{setAttr:{x:String(i.x),y:String(i.y),fill:C,stroke:E,"stroke-width":D,"stroke-linejoin":`round`,"paint-order":`stroke`,"font-size":T,"text-anchor":`middle`,"dominant-baseline":`central`},text:r}),e.sink.appendChild(t,a),this.trackHandle(a),this._pathHandles.push(a)}},M=r(DiagramEdgeLayer),N=1,P=.25,F=4,I=1.1,L=0,R=0,z=1,B=2,DiagramView=class extends c{_contentHost;_edgeLayer;_engine;_nodeComponents=new Map;_nodeData=new Map;_containerIds=new Set;_selection=[];_layoutGeneration=0;_graphWidth=0;_graphHeight=0;_listeners=new o;_panning=!1;_panStartX=0;_panStartY=0;_panScrollLeft=0;_panScrollTop=0;constructor(e){super(e,{zoom:N,minZoom:P,maxZoom:F}),this.setAutoScroll(`auto`),this._engine=this.createEngine(),this._contentHost=new s({layoutManager:new n,overflow:`visible`}),this._contentHost.setTransformOrigin(`0 0`),this.addComponent(this._contentHost),this._edgeLayer=new M,this._contentHost.addComponent(this._edgeLayer),this.applyListeners(e?.listeners),this._options.zoom!==void 0&&this.setZoom(this._options.zoom),this._options.data&&this.setData(this._options.data)}createEngine(){return new ElkLayoutEngine(this._options.elkWorkerUrl)}applyOptions(e){return super.applyOptions(e),e.data!==void 0&&(this._options.data=e.data),e.nodeRenderer!==void 0&&(this._options.nodeRenderer=e.nodeRenderer),e.groupRenderer!==void 0&&(this._options.groupRenderer=e.groupRenderer),e.layoutOptions!==void 0&&(this._options.layoutOptions=e.layoutOptions),e.elkWorkerUrl!==void 0&&(this._options.elkWorkerUrl=e.elkWorkerUrl),e.minZoom!==void 0&&(this._options.minZoom=e.minZoom),e.maxZoom!==void 0&&(this._options.maxZoom=e.maxZoom),e.zoom!==void 0&&(this._options.zoom=e.zoom),this}setData(e){return this._options.data=e,this.rebuildNodes(e),this.relayout(e),this}getData(){return this._options.data??null}rebuildNodes(e){for(let e of this._nodeComponents.values())this._contentHost.removeComponent(e);this._nodeComponents.clear(),this._nodeData.clear(),this._containerIds.clear(),this._selection=[],this._edgeLayer.setEdges([]);let t=this._options.nodeRenderer??(e=>new v({label:e.label,glyph:e.glyph})),n=this._options.groupRenderer??(e=>new x({label:e.label,glyph:e.glyph})),build=e=>{for(let r of e){let e=(r.children?.length??0)>0,i=e?n(r):t(r);this._nodeComponents.set(r.id,i),this._nodeData.set(r.id,r),this._contentHost.addComponent(i),e&&(this._containerIds.add(r.id),build(r.children))}};build(e.nodes)}relayout(e){let t=this.collectNodeSizes(e);this._layoutGeneration+=1;let n=this._layoutGeneration;this._engine.layout(e,t,this._options.layoutOptions).then(e=>this.applyLayout(e,n)).catch(()=>this.handleLayoutFailure(n))}collectNodeSizes(e){let t=new Map,collect=e=>{for(let n of e){let e=this._nodeComponents.get(n.id)?.getPreferredSize();t.set(n.id,{width:n.width??e?.width??0,height:n.height??e?.height??0}),n.children&&n.children.length>0&&collect(n.children)}};return collect(e.nodes),t}applyLayout(e,t){if(t===this._layoutGeneration){for(let t of e.nodes){let e=this._nodeComponents.get(t.id);e&&(e.setPreferredSize({width:t.width,height:t.height}),e.setX(t.x),e.setY(t.y))}this._graphWidth=e.width,this._graphHeight=e.height,this._edgeLayer.setX(0),this._edgeLayer.setY(0),this._edgeLayer.setPreferredSize({width:e.width,height:e.height}),this._edgeLayer.setEdges(this.joinEdgeStyles(e.edges)),this.applyContainerZIndex(),this.applyZoomToHost(),this.scheduleLayout(),this.emit(`layout`)}}applyContainerZIndex(){if(this._containerIds.size===0){this._edgeLayer.setZIndex(L);return}this._edgeLayer.setZIndex(z);for(let[e,t]of this._nodeComponents)t.setZIndex(this._containerIds.has(e)?R:B)}joinEdgeStyles(e){let t=new Map(this._options.data?.edges.map(e=>[e.id,e])??[]);return e.map(e=>({...e,style:t.get(e.id)?.style}))}handleLayoutFailure(e){if(e===this._layoutGeneration){for(let e of this._nodeComponents.values())this._contentHost.removeComponent(e);this._nodeComponents.clear(),this._nodeData.clear()}}applyZoomToHost(){let e=this.getZoom();this._contentHost.setTransform(`scale(${e})`);let t=Math.min(e,1);this._contentHost.setPreferredSize({width:this._graphWidth*t,height:this._graphHeight*t})}getZoom(){return this._options.zoom??this._defaultOptions.zoom??N}setZoom(e){return this._options.zoom=this.clampZoom(e),this.applyZoomToHost(),this}zoomToFit(){if(this._graphWidth<=0||this._graphHeight<=0)return this;let e=this.getWidth()/this._graphWidth,t=this.getHeight()/this._graphHeight;return this.setZoom(Math.min(e,t)),this}clampZoom(e){let t=this._options.minZoom??this._defaultOptions.minZoom??P,n=this._options.maxZoom??this._defaultOptions.maxZoom??F;return Math.max(t,Math.min(n,e))}getSelection(){return[...this._selection]}selectNode(e){return this.setSelection(e),this}revealNode(e){let t=this._nodeComponents.get(e);if(!t)return this;let n=this.getZoom(),r=(t.getX()+t.getWidth()/2)*n,i=(t.getY()+t.getHeight()/2)*n;return this.setScrollLeft(Math.max(0,r-this.getWidth()/2)),this.setScrollTop(Math.max(0,i-this.getHeight()/2)),this}setSelection(e){for(let e of this._nodeComponents.values())this.applySelectedVisual(e,!1);let t=e===null?void 0:this._nodeData.get(e);t?(this._selection=[t],this.applySelectedVisual(this._nodeComponents.get(e),!0)):this._selection=[]}applySelectedVisual(e,t){e.setSelected?.(t)}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}init(e){return super.init(e),a.addSubtreeListener(this,`click`,this._handleClick),a.addSubtreeListener(this,`dblclick`,this._handleDoubleClick),a.addListener(this,`wheel`,this._handleWheel),a.addListener(this,`pointerdown`,this._handlePointerDown),a.addListener(this,`pointermove`,this._handlePointerMove),a.addListener(this,`pointerup`,this._handlePointerUp),this}_handleClick(e){let t=this.nodeIdAt(e.target);t===null?this._selection.length>0&&(this.setSelection(null),this.emit(`selection`,this.getSelection())):(this.setSelection(t),this.emit(`selection`,this.getSelection()))}_handleDoubleClick(e){let t=this.nodeIdAt(e.target);if(t===null)return;let n=this._nodeData.get(t);n!==void 0&&this.emit(`activate`,n)}nodeIdAt(t){if(t===null)return null;let n=e.source.intern(t);for(let[t,r]of this._nodeComponents){let i=r.getElement();if(i&&(i===n||e.source.contains(i,n)))return t}return null}_handleWheel(t){t.preventDefault();let n=this.getZoom(),r=this.clampZoom(n*(t.deltaY<0?I:1/I));if(r===n)return;let i=e.source.getViewportRect(this),a=t.clientX-i.left,o=t.clientY-i.top,s=(a+this.getScrollLeft())/n,c=(o+this.getScrollTop())/n;this.setZoom(r),this.setScrollLeft(s*r-a),this.setScrollTop(c*r-o)}_handlePointerDown(e){e.button===0&&(this._panning=!0,this._panStartX=e.clientX,this._panStartY=e.clientY,this._panScrollLeft=this.getScrollLeft(),this._panScrollTop=this.getScrollTop())}_handlePointerMove(e){this._panning&&(this.setScrollLeft(this._panScrollLeft-(e.clientX-this._panStartX)),this.setScrollTop(this._panScrollTop-(e.clientY-this._panStartY)))}_handlePointerUp(){this._panning=!1}},V=r(DiagramView);export{M as DiagramEdgeLayer,x as DiagramGroupNode,v as DiagramNode,V as DiagramView,ElkLayoutEngine};
1
+ import{t as e}from"../DOM-BeR95tE8.js";import{n as t}from"../Position-DRSlWn4Z.js";import{m as n,t as r,u as i,x as a}from"../Component-CHTzJxEf.js";import{t as o}from"../ListenerBag-WPdKuuds.js";import{t as s}from"../Container-xUbHk6l_.js";import{t as c}from"../Glyph-CnNslL95.js";import{t as l}from"../Panel-D9lTLGqP.js";import{t as u}from"../Fit-E-EIZv1k.js";import{t as d}from"../Text-Bni4icFY.js";import{n as f}from"../VBox-Dr7Ge9M6.js";import{t as p}from"../HBox-Dm3xgsDE.js";import{t as m}from"../ProgressSpinner-glv-29eK.js";import{t as h}from"../Button-B36rBMKC.js";import{n as g,t as _}from"../AnchorConstraints-CSUcj8Wx.js";import{t as v}from"../IconText-CTM2r0Tv.js";import{expand as y}from"../glyphs/solid/expand.es.js";import{plus as b}from"../glyphs/solid/plus.es.js";import{minus as ee}from"../glyphs/solid/minus.es.js";import{crosshairs as x}from"../glyphs/solid/crosshairs.es.js";var S=120,C=40,w=`ElkLayoutEngine has been disposed`;function mergeLayoutOptions(...e){let t={};for(let n of e)n&&Object.assign(t,n);return t}var T={"elk.padding":`[top=34,left=12,bottom=12,right=12]`};function mapDiagramNode(e,t){if(e.children&&e.children.length>0)return{id:e.id,layoutOptions:mergeLayoutOptions(T,e.layoutOptions),children:e.children.map(e=>mapDiagramNode(e,t))};let n=t.get(e.id);return{id:e.id,width:e.width??n?.width??S,height:e.height??n?.height??C,layoutOptions:e.layoutOptions,ports:e.ports?.map(e=>({id:e.id,x:e.x,y:e.y,width:e.width,height:e.height,layoutOptions:e.side===void 0?void 0:{"elk.port.side":e.side}}))}}var E={"elk.hierarchyHandling":`INCLUDE_CHILDREN`};function buildElkGraph(e,t,n){let r=e.nodes.map(e=>mapDiagramNode(e,t)),i=e.edges.map(e=>({id:e.id,sources:[e.sourcePort??e.source],targets:[e.targetPort??e.target]}));return{id:`root`,layoutOptions:mergeLayoutOptions(E,n,e.layoutOptions),children:r,edges:i}}function flattenElkNode(e,t,n,r){let i=t+(e.x??0),a=n+(e.y??0);r.push({id:e.id,x:i,y:a,width:e.width??0,height:e.height??0});for(let t of e.children??[])flattenElkNode(t,i,a,r)}function collectElkEdges(e,t){for(let n of e.edges??[])t.push({edge:n,container:n.container??e.id});for(let n of e.children??[])collectElkEdges(n,t)}function offsetSections(e,t){if(t.x===0&&t.y===0)return e;let shift=e=>({x:e.x+t.x,y:e.y+t.y});return e.map(e=>({startPoint:shift(e.startPoint),endPoint:shift(e.endPoint),bendPoints:e.bendPoints?.map(shift)}))}function mapElkResult(e){let t=[];for(let n of e.children??[])flattenElkNode(n,0,0,t);let n=new Map([[e.id,{x:0,y:0}]]);for(let e of t)n.set(e.id,{x:e.x,y:e.y});let r=[];return collectElkEdges(e,r),{nodes:t,edges:r.map(({edge:e,container:t})=>({id:e.id,sections:offsetSections(e.sections??[],n.get(t)??{x:0,y:0})})),width:e.width??0,height:e.height??0}}var ElkLayoutEngine=class{_elk=null;_workerFactory;_workerUrl;_workerBacked=!1;_disposed=!1;_ownsWorker=!1;_building=null;constructor(e){this._workerFactory=e?.workerFactory,this._workerUrl=e?.workerUrl}async layout(e,t,n){if(this._disposed)throw Error(w);let r=buildElkGraph(e,t,n);try{return mapElkResult(await(await this.ensureElk()).layout(r))}catch(e){if(this._disposed||!this._workerBacked)throw e;this.terminateOwnedWorker(this._elk),this._workerBacked=!1,this._ownsWorker=!1;let t=await this.createMainThreadElk();if(this._disposed)throw Error(w);return this._elk=t,this._building=null,mapElkResult(await t.layout(r))}}dispose(){this._disposed=!0,this.terminateOwnedWorker(this._elk),this._elk=null,this._building=null}async ensureElk(){return this._elk?this._elk:(this._building??=this.createElk().then(e=>{if(this._disposed)throw this.terminateOwnedWorker(e),Error(w);return this._elk=e,e}).catch(e=>{throw this._building=null,e}),this._building)}terminateOwnedWorker(e){e&&this._ownsWorker&&e.terminateWorker()}async createElk(){let{default:e}=await import(`elkjs/lib/elk.bundled.js`);return this._workerFactory?(this._workerBacked=!0,this._ownsWorker=!0,new e({workerFactory:this._workerFactory})):this._workerUrl?(this._workerBacked=!0,new e({workerUrl:this._workerUrl})):new e}async createMainThreadElk(){let{default:e}=await import(`elkjs/lib/elk.bundled.js`);return new e}},te={insets:new t(4,8,4,8)},ne=`4px`,re=.6,DiagramNode=class extends l{_label;_content;_badge;get selectedStyleRule(){return this._selectedStyleRule??=this.createStyleRule(`.selected`)}constructor(e){super(e,{...te,layoutManager:new u}),this.setBackgroundColor(`var(--ts-ui-diagram-node-bg, var(--ts-ui-button-bg, rgb(245, 245, 245)))`),this.setBorder(`1px solid var(--ts-ui-border-color, rgb(180, 180, 180))`),this.setBorderRadius(ne),this.setCursor(`pointer`),this.selectedStyleRule.set(`borderColor`,`var(--ts-ui-accent-color, rgb(30, 100, 200))`),this.selectedStyleRule.set(`backgroundColor`,`var(--ts-ui-diagram-node-selected-bg, var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15)))`),this.buildContent(this._options.glyph,this._options.label??``,this._options.badge),this._options.selected!==void 0&&this.setSelected(this._options.selected)}applyOptions(e){return super.applyOptions(e),e.label!==void 0&&(this._options.label=e.label),e.glyph!==void 0&&(this._options.glyph=e.glyph),e.badge!==void 0&&(this._options.badge=e.badge),e.selected!==void 0&&(this._options.selected=e.selected),this}buildContent(e,t,n){this._content&&this.removeComponent(this._content),this._label=e===void 0?new d(t):new v(e,t),n===void 0?(this._badge=void 0,this._content=this._label):(this._badge=new d(n),this._badge.setOpacity(re),this._content=new r({layoutManager:new p,components:[this._label,this._badge]})),this._content.setPointerEvents(`none`),this.addComponent(this._content)}setLabel(e){return this._options.label=e,this._label.setText(e),this}getLabel(){return this._options.label??null}getBadge(){return this._options.badge??null}setSelected(t){this._options.selected=t;let n=this.getElement();return n&&e.sink.apply(n,{toggleClass:{selected:t}}),this}isSelected(){return this._options.selected??!1}init(t){super.init(t);let n=t||this.getElement();return n&&this.isSelected()&&e.sink.apply(n,{toggleClass:{selected:!0}}),this}},D=n(DiagramNode),O=`4px`,k=6,DiagramGroupNode=class extends l{_header;constructor(e){super(e,{layoutManager:new i}),this.setCursor(`pointer`),this.setBackgroundColor(`var(--ts-ui-diagram-group-bg, rgba(120, 120, 120, 0.08))`),this.setBorder(`1px solid var(--ts-ui-diagram-group-border, var(--ts-ui-border-color, rgb(180, 180, 180)))`),this.setBorderRadius(O);let t=this._options.label??``;this._header=this._options.glyph===void 0?new d(t):new v(this._options.glyph,t),this._header.setPointerEvents(`none`),this._header.setX(k),this._header.setY(k),this.addComponent(this._header)}applyOptions(e){return super.applyOptions(e),e.label!==void 0&&(this._options.label=e.label),e.glyph!==void 0&&(this._options.glyph=e.glyph),this}setLabel(e){return this._options.label=e,this._header.setText(e),this}getLabel(){return this._options.label??null}},A=n(DiagramGroupNode),j=`http://www.w3.org/2000/svg`,M=`var(--ts-ui-diagram-edge, var(--ts-ui-border-color, rgb(120, 120, 120)))`,N=`1.5`,P=`12`,F=`var(--ts-ui-diagram-bg, var(--ts-ui-panel-bg, rgb(255, 255, 255)))`,I=`4`,L=8,R=`6 4`,z=12,B=z/2,V=`0.15`,H=[`one`,`zeroOrOne`,`oneOrMany`,`zeroOrMany`],U={one:{width:12,height:12,refX:12,refY:6,parts:[{tag:`path`,attrs:{d:`M 4 0 L 4 12 M 8 0 L 8 12`}}]},zeroOrOne:{width:16,height:12,refX:16,refY:6,parts:[{tag:`path`,attrs:{d:`M 12 0 L 12 12`}},{tag:`circle`,attrs:{cx:`6`,cy:`6`,r:`4`}}]},oneOrMany:{width:16,height:12,refX:16,refY:6,parts:[{tag:`path`,attrs:{d:`M 0 6 L 12 0 M 0 6 L 12 6 M 0 6 L 12 12`}},{tag:`path`,attrs:{d:`M 14 0 L 14 12`}}]},zeroOrMany:{width:18,height:12,refX:18,refY:6,parts:[{tag:`path`,attrs:{d:`M 6 6 L 18 0 M 6 6 L 18 6 M 6 6 L 18 12`}},{tag:`circle`,attrs:{cx:`3`,cy:`6`,r:`3`}}]}},W=Math.max(L,...Object.values(U).map(e=>e.width));function labelPoint(e){let t=e[0];return t?midpointAlong([t.startPoint,...t.bendPoints??[],t.endPoint]):{x:0,y:0}}function midpointAlong(e){let segmentLength=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),t=0;for(let n=1;n<e.length;n++)t+=segmentLength(e[n-1],e[n]);let n=t/2;for(let t=1;t<e.length;t++){let r=segmentLength(e[t-1],e[t]);if(r>=n){let i=r===0?0:n/r;return{x:e[t-1].x+(e[t].x-e[t-1].x)*i,y:e[t-1].y+(e[t].y-e[t-1].y)*i}}n-=r}return e[e.length-1]}function buildPathData(e){let t=[];for(let n of e){t.push(`M ${n.startPoint.x} ${n.startPoint.y}`);for(let e of n.bendPoints??[])t.push(`L ${e.x} ${e.y}`);t.push(`L ${n.endPoint.x} ${n.endPoint.y}`)}return t.join(` `)}function distanceToSegment(e,t,n,r,i,a){let o=i-n,s=a-r,c=o*o+s*s;if(c===0)return Math.hypot(e-n,t-r);let l=Math.max(0,Math.min(1,((e-n)*o+(t-r)*s)/c));return Math.hypot(e-(n+l*o),t-(r+l*s))}function distanceToRoute(e,t,n){let r=1/0;for(let i of e){let e=[i.startPoint,...i.bendPoints??[],i.endPoint];for(let i=1;i<e.length;i++)r=Math.min(r,distanceToSegment(t,n,e[i-1].x,e[i-1].y,e[i].x,e[i].y))}return r}var DiagramEdgeLayer=class extends r{_edges=[];_drawn=[];_edgeEmphasis=new Set;_dimLayer;_normalLayer;_markerId;_crowsFootMarkerIds;constructor(e){super(e),this._markerId=`${this.getId()}-arrow`,this._crowsFootMarkerIds=Object.fromEntries(H.map(e=>[e,`${this.getId()}-${e}`])),this.setPointerEvents(`none`),this.setCursor(`inherit`)}markerUrl(e){if(e)return`url(#${e===`arrow`?this._markerId:this._crowsFootMarkerIds[e]})`}setEdges(e){return this._edges=e,this._edgeEmphasis=new Set,this.getElement()?this.rebuildPaths():this.onFirstLayout(()=>this.rebuildPaths()),this}setEdgeEmphasis(e){return this._edgeEmphasis=new Set(e??[]),this.rebuildPaths(),this}getEdgeEmphasis(){return[...this._edgeEmphasis]}edgeIdAt(t){if(t===null)return null;let n=e.source.intern(t);return this._drawn.find(e=>e.hit===n)?.id??null}edgesNear(e,t){return this._drawn.filter(n=>distanceToRoute(n.route.sections,e,t)<=B).map(e=>e.route)}groupFor(e){return this._edgeEmphasis.size===0||this._edgeEmphasis.has(e)?this._normalLayer:this._dimLayer}createRootElement(){let t=e.sink.createElementNS(j,`svg`),n=e.sink.createElementNS(j,`defs`);this.createArrowMarker(n);for(let e of H)this.createCrowsFootMarker(n,e);return e.sink.appendChild(t,n),this.trackHandle(n),this._dimLayer=this.createEdgeGroup(t,V),this._normalLayer=this.createEdgeGroup(t,null),t}createEdgeGroup(t,n){let r=e.sink.createElementNS(j,`g`);return n!==null&&e.sink.apply(r,{setAttr:{opacity:n}}),e.sink.appendChild(t,r),this.trackHandle(r),r}createArrowMarker(t){let n=e.sink.createElementNS(j,`marker`);e.sink.apply(n,{setAttr:{id:this._markerId,markerWidth:String(L),markerHeight:String(L),refX:String(L),refY:String(L/2),orient:`auto-start-reverse`,markerUnits:`userSpaceOnUse`}});let r=e.sink.createElementNS(j,`path`);e.sink.apply(r,{setAttr:{d:`M 0 0 L ${L} ${L/2} L 0 ${L} z`,fill:M}}),e.sink.appendChild(n,r),e.sink.appendChild(t,n),this.trackHandle(n),this.trackHandle(r)}createCrowsFootMarker(t,n){let r=U[n],i=e.sink.createElementNS(j,`marker`);e.sink.apply(i,{setAttr:{id:this._crowsFootMarkerIds[n],markerWidth:String(r.width),markerHeight:String(r.height),refX:String(r.refX),refY:String(r.refY),orient:`auto-start-reverse`,markerUnits:`userSpaceOnUse`}}),e.sink.appendChild(t,i),this.trackHandle(i);for(let t of r.parts){let n=e.sink.createElementNS(j,t.tag);e.sink.apply(n,{setAttr:{...t.attrs,fill:`none`,stroke:M}}),e.sink.appendChild(i,n),this.trackHandle(n)}}render(){let e=super.render();return this.rebuildPaths(),e}rebuildPaths(){if(this.getElement()){for(let e of this._drawn)this.releaseDrawnEdge(e);this._drawn=[];for(let e of this._edges){let t=buildPathData(e.sections);if(!t)continue;let n=this.groupFor(e.id),r=this.drawHitPath(n,t),i=this.drawVisiblePath(n,e,t),a=e.style,o=null;a?.label&&(o=this.drawLabel(n,e,a.label)),this._drawn.push({id:e.id,route:e,path:i,hit:r,label:o,group:n})}}}drawHitPath(t,n){let r=e.sink.createElementNS(j,`path`);return e.sink.apply(r,{setAttr:{d:n,fill:`none`,stroke:`transparent`,"stroke-width":String(z),"pointer-events":`stroke`,cursor:`inherit`}}),e.sink.appendChild(t,r),this.trackHandle(r),r}drawVisiblePath(t,n,r){let i=e.sink.createElementNS(j,`path`),a=n.style,o=a?this.markerUrl(a.endMarker):this.markerUrl(`arrow`),s=a?this.markerUrl(a.startMarker):void 0,c={d:r,fill:`none`,stroke:a?.stroke??M,"stroke-width":N};return o&&(c[`marker-end`]=o),s&&(c[`marker-start`]=s),a?.dashed&&(c[`stroke-dasharray`]=R),e.sink.apply(i,{setAttr:c}),e.sink.appendChild(t,i),this.trackHandle(i),i}releaseDrawnEdge(t){let n=[t.hit,t.path,...t.label?[t.label]:[]];for(let r of n)e.sink.removeChild(t.group,r),this.untrackHandle(r),e.sink.release(r)}drawLabel(t,n,r){let i=labelPoint(n.sections),a=e.sink.createElementNS(j,`text`);return e.sink.apply(a,{setAttr:{x:String(i.x),y:String(i.y),fill:M,stroke:F,"stroke-width":I,"stroke-linejoin":`round`,"paint-order":`stroke`,"font-size":P,"text-anchor":`middle`,"dominant-baseline":`central`},text:r}),e.sink.appendChild(t,a),this.trackHandle(a),a}},G=n(DiagramEdgeLayer);c.register(b,ee,y,x);var K=1,q=.25,J=4,Y=1.1,X=1.5,Z=4,ie=.35,ae=24,Q=12,oe=0,$=0,se=1,ce=2,DiagramView=class extends l{_contentHost;_edgeLayer;_engine;_nodeComponents=new Map;_nodeData=new Map;_containerIds=new Set;_incomingComponents=new Map;_incomingData=new Map;_incomingContainerIds=new Set;_selection=[];_nodeEmphasis=new Set;_layoutGeneration=0;_layoutSettled=null;_busySpinner=null;_graphWidth=0;_graphHeight=0;_listeners=new o;_hoveredEdgeKey=null;_panning=!1;_panStartX=0;_panStartY=0;_pressX=0;_pressY=0;_pointerMoved=!1;_panOriginX=0;_panOriginY=0;_panX=0;_panY=0;_needsInitialCentre=!0;_focusNodeId=null;_lastViewportWidth=NaN;_lastViewportHeight=NaN;_controls;_zoomInBtn;_zoomOutBtn;_fitBtn;_resetBtn;_onZoomIn=()=>this.zoomIn();_onZoomOut=()=>this.zoomOut();_onFit=()=>this.zoomToFit();_onReset=()=>this.resetView();constructor(e){super(e,{zoom:K,minZoom:q,maxZoom:J,controls:!0}),this.setLayoutManager(new g),this.setCursor(`grab`),this._engine=this.createEngine(),this._contentHost=new s({layoutManager:new i,overflow:`visible`,cursor:`inherit`}),this._contentHost.setTransformOrigin(`0 0`),this.addComponent(this._contentHost),this._edgeLayer=new G,this._contentHost.addComponent(this._edgeLayer),this.buildControls(),this.wireControlListeners();let t=new _;t.right=Q,t.bottom=Q,this.addComponent(this._controls,t),this.applyListeners(e?.listeners),this.setControlsVisible(this._options.controls??this._defaultOptions.controls??!0),this._options.zoom!==void 0&&this.setZoom(this._options.zoom),this._focusNodeId=this._options.initialFocusNode??null,this._options.data&&this.setData(this._options.data)}createEngine(){return new ElkLayoutEngine({workerFactory:this._options.elkWorkerFactory,workerUrl:this._options.elkWorkerUrl})}destructor(){this._layoutGeneration+=1,this.settleLayout(),this._busySpinner?.dispose(),this._busySpinner=null,this._engine.dispose(),super.destructor()}applyOptions(e){return super.applyOptions(e),e.data!==void 0&&(this._options.data=e.data),e.nodeRenderer!==void 0&&(this._options.nodeRenderer=e.nodeRenderer),e.groupRenderer!==void 0&&(this._options.groupRenderer=e.groupRenderer),e.layoutOptions!==void 0&&(this._options.layoutOptions=e.layoutOptions),e.elkWorkerUrl!==void 0&&(this._options.elkWorkerUrl=e.elkWorkerUrl),e.elkWorkerFactory!==void 0&&(this._options.elkWorkerFactory=e.elkWorkerFactory),e.minZoom!==void 0&&(this._options.minZoom=e.minZoom),e.maxZoom!==void 0&&(this._options.maxZoom=e.maxZoom),e.zoom!==void 0&&(this._options.zoom=e.zoom),e.controls!==void 0&&(this._options.controls=e.controls),e.initialFocusNode!==void 0&&(this._options.initialFocusNode=e.initialFocusNode),this}setData(e){return this._options.data=e,this.rebuildNodes(e),this.relayout(e),this}getData(){return this._options.data??null}rebuildNodes(e){this.discardIncomingNodes();let t=this._options.nodeRenderer??(e=>new D({label:e.label,glyph:e.glyph,badge:e.badge})),n=this._options.groupRenderer??(e=>new A({label:e.label,glyph:e.glyph})),build=e=>{for(let r of e){let e=(r.children?.length??0)>0,i=e?n(r):t(r);i.setVisible(!1),this._incomingComponents.set(r.id,i),this._incomingData.set(r.id,r),e&&(this._incomingContainerIds.add(r.id),build(r.children))}};build(e.nodes)}discardIncomingNodes(){this._incomingComponents.clear(),this._incomingData.clear(),this._incomingContainerIds.clear()}promoteIncomingNodes(){for(let e of this._nodeComponents.values())this._contentHost.removeComponent(e);this._nodeComponents=this._incomingComponents,this._nodeData=this._incomingData,this._containerIds=this._incomingContainerIds,this._incomingComponents=new Map,this._incomingData=new Map,this._incomingContainerIds=new Set,this._selection=[],this._nodeEmphasis=new Set;for(let e of this._nodeComponents.values())this._contentHost.addComponent(e),e.setVisible(!0)}relayout(e){this.armLayoutSettled(),this.syncBusyIndicator();let t=this.collectNodeSizes(e);this._layoutGeneration+=1;let n=this._layoutGeneration;this._engine.layout(e,t,this._options.layoutOptions).then(e=>this.applyLayout(e,n)).catch(()=>this.handleLayoutFailure(n))}armLayoutSettled(){if(this._layoutSettled!==null)return;let e,t=new Promise(t=>{e=t});this._layoutSettled={promise:t,resolve:e}}settleLayout(){let e=this._layoutSettled;this._layoutSettled=null,e?.resolve(),this.syncBusyIndicator()}syncBusyIndicator(){if(this._layoutSettled===null||!(this.getWidth()>0)||!(this.getHeight()>0)){this._busySpinner?.hideOverlay();return}this._busySpinner===null&&(this._busySpinner=new m(ae)),this._busySpinner.showOverlay(this),this._busySpinner.doLayout()}whenLaidOut(){return this._layoutSettled?.promise??Promise.resolve()}collectNodeSizes(e){let t=new Map,collect=e=>{for(let n of e){let e=this._incomingComponents.get(n.id)?.getPreferredSize();t.set(n.id,{width:n.width??e?.width??0,height:n.height??e?.height??0}),n.children&&n.children.length>0&&collect(n.children)}};return collect(e.nodes),t}applyLayout(e,t){if(t===this._layoutGeneration){for(let t of e.nodes){let e=this._incomingComponents.get(t.id);e&&(e.setPreferredSize({width:t.width,height:t.height}),e.setX(t.x),e.setY(t.y))}this._graphWidth=e.width,this._graphHeight=e.height,this.promoteIncomingNodes(),this._edgeLayer.setX(0),this._edgeLayer.setY(0),this._edgeLayer.setPreferredSize({width:e.width,height:e.height}),this._edgeLayer.setEdges(this.joinEdgeStyles(e.edges)),this.applyContainerZIndex(),this._contentHost.setPreferredSize({width:e.width,height:e.height}),this.applyTransformToHost(),this.tryInitialCentre(),this.scheduleLayout(),this.emit(`layout`),this.settleLayout()}}applyContainerZIndex(){if(this._containerIds.size===0){this._edgeLayer.setZIndex(oe);return}this._edgeLayer.setZIndex(se);for(let[e,t]of this._nodeComponents)t.setZIndex(this._containerIds.has(e)?$:ce)}joinEdgeStyles(e){let t=new Map(this._options.data?.edges.map(e=>[e.id,e])??[]);return e.map(e=>({...e,style:t.get(e.id)?.style}))}handleLayoutFailure(e){e===this._layoutGeneration&&(this.discardIncomingNodes(),this.settleLayout())}applyTransformToHost(){let e=this.getZoom();this._contentHost.setTransform(`translate(${this._panX}px, ${this._panY}px) scale(${e})`)}getZoom(){return this._options.zoom??this._defaultOptions.zoom??K}setZoom(e){return Number.isFinite(e)?(this._options.zoom=this.clampZoom(e),this.applyTransformToHost(),this):this}zoomToFit(){if(this._graphWidth<=0||this._graphHeight<=0)return this;let e=this.getWidth()/this._graphWidth,t=this.getHeight()/this._graphHeight;return this.setZoom(Math.min(e,t)),this.centreGraph(),this}resetView(){return this.setZoom(this._defaultOptions.zoom??K),this._needsInitialCentre=!0,this.tryInitialCentre(),this}zoomIn(){return this.zoomAboutViewportPoint(X,this.getWidth()/2,this.getHeight()/2),this}zoomOut(){return this.zoomAboutViewportPoint(1/X,this.getWidth()/2,this.getHeight()/2),this}tryInitialCentre(){if(!this._needsInitialCentre||!(this._graphWidth>0)||!(this._graphHeight>0))return;let e=this._focusNodeId!==null&&this._nodeComponents.has(this._focusNodeId)?this._focusNodeId:null;(e===null?this.centreGraph():this.centreNode(e))&&(this._needsInitialCentre=!1)}centreGraph(){let e=this.getWidth(),t=this.getHeight();if(!(e>0)||!(t>0))return!1;let n=this.getZoom();return this._panX=(e-this._graphWidth*n)/2,this._panY=(t-this._graphHeight*n)/2,this.applyTransformToHost(),!0}zoomAboutViewportPoint(e,t,n){if(!Number.isFinite(t)||!Number.isFinite(n))return;let r=this.getZoom(),i=this.clampZoom(r*e);if(i===r)return;let a=(t-this._panX)/r,o=(n-this._panY)/r;this._panX=t-a*i,this._panY=n-o*i,this.setZoom(i)}effectiveMinZoom(){let e=this._options.minZoom??this._defaultOptions.minZoom??q,t=this.getWidth(),n=this.getHeight();if(!(this._graphWidth>0)||!(this._graphHeight>0)||!(t>0)||!(n>0))return e;let r=Math.min(t/this._graphWidth,n/this._graphHeight);return Math.min(e,r)}clampZoom(e){let t=this.effectiveMinZoom(),n=this._options.maxZoom??this._defaultOptions.maxZoom??J;return Math.max(t,Math.min(n,e))}zoomFittingNode(e){let t=this.getZoom(),n=this.getWidth(),r=this.getHeight();if(!(n>0)||!(r>0)||!(e.width>0)||!(e.height>0))return this.clampZoom(t);let i=Math.min(n/e.width,r/e.height);return this.clampZoom(Math.min(t,i))}getSelection(){return[...this._selection]}selectNode(e){return this.setSelection(e),this}setEdgeEmphasis(e){return this._edgeLayer.setEdgeEmphasis(e),this}getEdgeEmphasis(){return this._edgeLayer.getEdgeEmphasis()}setNodeEmphasis(e){return this._nodeEmphasis=new Set(e??[]),this.applyNodeEmphasis(),this}getNodeEmphasis(){return[...this._nodeEmphasis]}applyNodeEmphasis(){for(let[e,t]of this._nodeComponents)this._nodeEmphasis.size===0||this._nodeEmphasis.has(e)?t.clearOpacity():t.setOpacity(ie)}revealNode(e){return this.centreNode(e),this}centreNode(e){let t=this._nodeComponents.get(e),n=t?.getPreferredSize();if(!t||!n)return!1;let r=this.zoomFittingNode(n),i=t.getX()+n.width/2,a=t.getY()+n.height/2,o=this.getWidth()/2-i*r,s=this.getHeight()/2-a*r;return!Number.isFinite(o)||!Number.isFinite(s)?!1:(this._panX=o,this._panY=s,this.setZoom(r),!0)}focusNode(e){return this._focusNodeId=e,this._needsInitialCentre=!0,this.tryInitialCentre(),this}setSelection(e){for(let e of this._nodeComponents.values())this.applySelectedVisual(e,!1);let t=e===null?void 0:this._nodeData.get(e);t?(this._selection=[t],this.applySelectedVisual(this._nodeComponents.get(e),!0)):this._selection=[]}applySelectedVisual(e,t){e.setSelected?.(t)}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}doLayout(){return super.doLayout(),this.tryInitialCentre(),this.anchorCentreAcrossResize(),this.syncBusyIndicator(),this}anchorCentreAcrossResize(){let e=this.getWidth(),t=this.getHeight();if(!(e>0)||!(t>0))return;let n=this._lastViewportWidth,r=this._lastViewportHeight;this._lastViewportWidth=e,this._lastViewportHeight=t,!(!(n>0)||!(r>0))&&(n===e&&r===t||(this._panX+=(e-n)/2,this._panY+=(t-r)/2,this.applyTransformToHost()))}init(e){return super.init(e),a.addSubtreeListener(this,`click`,this._handleClick),a.addSubtreeListener(this,`dblclick`,this._handleDoubleClick),a.addSubtreeListener(this,`contextmenu`,this._handleContextMenu),a.addSubtreeListener(this,`wheel`,this._handleWheel,{passive:!1}),a.addSubtreeListener(this,`pointerdown`,this._handlePointerDown),a.addSubtreeListener(this,`pointermove`,this._handlePointerMove),a.addSubtreeListener(this,`pointerup`,this._handlePointerUp),a.addSubtreeListener(this,`mousemove`,this._handleEdgeMouseMove),a.addSubtreeListener(this,`mouseout`,this._handleEdgeMouseOut),this}_handleClick(e){if(this._pointerMoved||this.isControlsTarget(e.target)||this._edgeLayer.edgeIdAt(e.target)!==null)return;let t=this.nodeIdAt(e.target);if(t!==null){if(t===(this._selection[0]?.id??null))return;this.setSelection(t),this.emit(`selection`,this.getSelection())}else this._selection.length>0&&(this.setSelection(null),this.emit(`selection`,this.getSelection()))}_handleDoubleClick(e){let t=this.nodeIdAt(e.target);if(t===null)return;let n=this._nodeData.get(t);n!==void 0&&this.emit(`activate`,n)}nodeIdAt(t){if(t===null)return null;let n=e.source.intern(t);for(let[t,r]of this._nodeComponents){let i=r.getElement();if(i&&(i===n||e.source.contains(i,n)))return t}return null}_handleEdgeMouseMove(t){if(this._panning)return;if(this._edgeLayer.edgeIdAt(t.target)===null){this.leaveEdges();return}let n=e.source.getViewportRect(this),r=this.getZoom(),i=(t.clientX-n.left-this._panX)/r,a=(t.clientY-n.top-this._panY)/r,o=this._edgeLayer.edgesNear(i,a);if(o.length===0){this.leaveEdges();return}let s=o.map(e=>e.id).join(` `);if(s===this._hoveredEdgeKey)return;let c=new Map(this._options.data?.edges.map(e=>[e.id,e])??[]),l=o.map(e=>c.get(e.id)).filter(e=>e!==void 0);this._hoveredEdgeKey=s,this.emit(`edgehover`,l,t)}_handleEdgeMouseOut(e){this._edgeLayer.edgeIdAt(e.target)!==null&&this.leaveEdges()}leaveEdges(){this._hoveredEdgeKey!==null&&(this._hoveredEdgeKey=null,this.emit(`edgeleave`))}_handleContextMenu(e){let t=this.nodeIdAt(e.target);if(t===null)return;let n=this._nodeData.get(t);n!==void 0&&(e.preventDefault(),this.emit(`contextmenu`,n,e))}isControlsTarget(t){if(t===null||this._controls===void 0)return!1;let n=this._controls.getElement(),r=e.source.intern(t);return n!==void 0&&(n===r||e.source.contains(n,r))}_handleWheel(t){t.preventDefault();let n=e.source.getViewportRect(this);this.zoomAboutViewportPoint(t.deltaY<0?Y:1/Y,t.clientX-n.left,t.clientY-n.top)}_handlePointerDown(e){this._pressX=e.clientX,this._pressY=e.clientY,this._pointerMoved=!1,!(e.button!==0||this.isControlsTarget(e.target)||this.nodeIdAt(e.target)!==null)&&(this._panning=!0,this._panStartX=e.clientX,this._panStartY=e.clientY,this._panOriginX=this._panX,this._panOriginY=this._panY,this.setCursor(`grabbing`))}_handlePointerMove(e){if(!this._pointerMoved&&e.buttons&1){let t=e.clientX-this._pressX,n=e.clientY-this._pressY;this._pointerMoved=t*t+n*n>=Z*Z}if(this._panning){if(!(e.buttons&1)){this._panning=!1,this.setCursor(`grab`);return}this._panX=this._panOriginX+(e.clientX-this._panStartX),this._panY=this._panOriginY+(e.clientY-this._panStartY),this.applyTransformToHost()}}_handlePointerUp(){this._panning=!1,this.setCursor(`grab`)}buildControls(){this._zoomInBtn=this.makeControlButton(`plus`,`Zoom in`),this._zoomOutBtn=this.makeControlButton(`minus`,`Zoom out`),this._fitBtn=this.makeControlButton(`expand`,`Fit to view`),this._resetBtn=this.makeControlButton(`crosshairs`,`Reset view`),this._controls=new r,this._controls.setLayoutManager(new f),this._controls.addComponent(this._zoomInBtn),this._controls.addComponent(this._zoomOutBtn),this._controls.addComponent(this._fitBtn),this._controls.addComponent(this._resetBtn)}makeControlButton(e,t){return new h({glyph:e,text:t,showText:!1})}wireControlListeners(){this._zoomInBtn.on(`action`,this._onZoomIn),this._zoomOutBtn.on(`action`,this._onZoomOut),this._fitBtn.on(`action`,this._onFit),this._resetBtn.on(`action`,this._onReset)}isControlsVisible(){return this._options.controls??this._defaultOptions.controls??!0}setControlsVisible(e){return this._options.controls=e,this._controls.setVisible(e),this}},le=n(DiagramView);export{G as DiagramEdgeLayer,A as DiagramGroupNode,D as DiagramNode,le as DiagramView,W as EDGE_MARKER_EXTENT,ElkLayoutEngine};
2
2
  //# sourceMappingURL=diagram.es.js.map