@deephaven/iris-grid 0.59.0 → 0.59.1-beta.12

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 (74) hide show
  1. package/dist/EmptyIrisGridModel.d.ts +62 -0
  2. package/dist/EmptyIrisGridModel.d.ts.map +1 -0
  3. package/dist/EmptyIrisGridModel.js +168 -0
  4. package/dist/EmptyIrisGridModel.js.map +1 -0
  5. package/dist/GotoRow.d.ts.map +1 -1
  6. package/dist/GotoRow.js +1 -0
  7. package/dist/GotoRow.js.map +1 -1
  8. package/dist/IrisGrid.d.ts +18 -14
  9. package/dist/IrisGrid.d.ts.map +1 -1
  10. package/dist/IrisGrid.js +185 -157
  11. package/dist/IrisGrid.js.map +1 -1
  12. package/dist/IrisGridModel.d.ts +5 -4
  13. package/dist/IrisGridModel.d.ts.map +1 -1
  14. package/dist/IrisGridModel.js +2 -1
  15. package/dist/IrisGridModel.js.map +1 -1
  16. package/dist/IrisGridModelFactory.d.ts +2 -2
  17. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  18. package/dist/IrisGridModelFactory.js +1 -1
  19. package/dist/IrisGridModelFactory.js.map +1 -1
  20. package/dist/IrisGridModelUpdater.d.ts +3 -1
  21. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  22. package/dist/IrisGridModelUpdater.js +8 -1
  23. package/dist/IrisGridModelUpdater.js.map +1 -1
  24. package/dist/IrisGridPartitionSelector.css +14 -36
  25. package/dist/IrisGridPartitionSelector.css.map +1 -1
  26. package/dist/IrisGridPartitionSelector.d.ts +39 -38
  27. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  28. package/dist/IrisGridPartitionSelector.js +253 -227
  29. package/dist/IrisGridPartitionSelector.js.map +1 -1
  30. package/dist/IrisGridPartitionedTableModel.d.ts +25 -0
  31. package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -0
  32. package/dist/IrisGridPartitionedTableModel.js +74 -0
  33. package/dist/IrisGridPartitionedTableModel.js.map +1 -0
  34. package/dist/IrisGridProxyModel.d.ts +18 -4
  35. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  36. package/dist/IrisGridProxyModel.js +84 -5
  37. package/dist/IrisGridProxyModel.js.map +1 -1
  38. package/dist/IrisGridTableModel.d.ts +14 -4
  39. package/dist/IrisGridTableModel.d.ts.map +1 -1
  40. package/dist/IrisGridTableModel.js +96 -21
  41. package/dist/IrisGridTableModel.js.map +1 -1
  42. package/dist/IrisGridTableModelTemplate.d.ts +7 -7
  43. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  44. package/dist/IrisGridTableModelTemplate.js +1 -1
  45. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  46. package/dist/IrisGridTreeTableModel.js +2 -4
  47. package/dist/IrisGridTreeTableModel.js.map +1 -1
  48. package/dist/IrisGridUtils.d.ts +7 -7
  49. package/dist/IrisGridUtils.d.ts.map +1 -1
  50. package/dist/IrisGridUtils.js +33 -34
  51. package/dist/IrisGridUtils.js.map +1 -1
  52. package/dist/MissingPartitionError.d.ts +6 -0
  53. package/dist/MissingPartitionError.d.ts.map +1 -0
  54. package/dist/MissingPartitionError.js +14 -0
  55. package/dist/MissingPartitionError.js.map +1 -0
  56. package/dist/PartitionedGridModel.d.ts +38 -0
  57. package/dist/PartitionedGridModel.d.ts.map +1 -0
  58. package/dist/PartitionedGridModel.js +15 -0
  59. package/dist/PartitionedGridModel.js.map +1 -0
  60. package/dist/index.d.ts +3 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +3 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts +2 -2
  65. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts.map +1 -1
  66. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -1
  67. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  68. package/package.json +16 -15
  69. package/dist/PartitionSelectorSearch.css +0 -23
  70. package/dist/PartitionSelectorSearch.css.map +0 -1
  71. package/dist/PartitionSelectorSearch.d.ts +0 -78
  72. package/dist/PartitionSelectorSearch.d.ts.map +0 -1
  73. package/dist/PartitionSelectorSearch.js +0 -343
  74. package/dist/PartitionSelectorSearch.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PartitionSelectorSearch.js","names":["React","Component","PropTypes","debounce","TableUtils","ItemList","LoadingSpinner","Log","CanceledPromiseError","jsx","_jsx","jsxs","_jsxs","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","_defineProperty","updateFilter","handleFilterChange","bind","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","dh","tableUtils","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","column","data","detail","rows","getFormattedString","r","row","get","displayValue","type","name","push","target","isIntegerType","parseInt","toString","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","makeQuickFilterFromComponent","isStringType","concat","Error","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","inputType","isNumberType","className","children","ref","placeholder","onChange","onKeyDown","role","style","height","onViewportChange","undefined","func","isRequired","shape","columns","arrayOf","string","number"],"sources":["../src/PartitionSelectorSearch.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { Column, dh as DhType, Table } from '@deephaven/jsapi-types';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n column: Column;\n dh: DhType;\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n const { dh } = props;\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n tableUtils: TableUtils;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const { column } = this.props;\n const data = event.detail;\n const { offset, rows } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { column } = this.props;\n const { value: text } = event.target;\n\n if (text !== '' && TableUtils.isIntegerType(column.type)) {\n this.setState({ text: parseInt(text, 10).toString() });\n } else {\n this.setState({ text });\n }\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { dh, initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { dh, table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { column, initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const filter = this.tableUtils.makeQuickFilterFromComponent(\n column,\n TableUtils.isStringType(column.type) ? `~${filterText}` : filterText\n );\n if (!filter) {\n throw new Error(\n 'Unable to create column filter for partition selector'\n );\n }\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { column } = this.props;\n const { isLoading, itemCount, items, offset, text } = this.state;\n\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n const inputType = TableUtils.isNumberType(column.type) ? 'number' : 'text';\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type={inputType}\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n &nbsp;Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAASC,UAAU,QAAQ,wBAAwB;AAEnD,SAASC,QAAQ,EAAEC,cAAc,QAAQ,uBAAuB;AAChE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,oBAAoB,QAAQ,kBAAkB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIxD,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAM,CAAC,yBAAyB,CAAC;AACjD,IAAMC,sBAAsB,GAAG,GAAG;AAuBlC,MAAMC,uBAAuB,SAAYf,SAAS,CAGhD;EA8BA,OAAOgB,WAAWA,CAACC,KAAc,EAAQ;IACvC,IAAI,EAAEA,KAAK,YAAYV,oBAAoB,CAAC,EAAE;MAC5CK,GAAG,CAACK,KAAK,CAACA,KAAK,CAAC;IAClB;EACF;EAEAC,WAAWA,CAACC,KAAsC,EAAE;IAClD,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,+BAiLQlB,QAAQ,CAAC,MAAY;MAC1C,IAAI,CAACmB,YAAY,CAAC,CAAC;IACrB,CAAC,EAAEP,sBAAsB,CAAC;IAjLxB,IAAI,CAACQ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACG,YAAY,GAAG,IAAI,CAACA,YAAY,CAACH,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACI,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACM,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACN,IAAI,CAAC,IAAI,CAAC;IAEhE,IAAI,CAACO,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAM;MAAEC;IAAG,CAAC,GAAGd,KAAK;IACpB,IAAI,CAACe,UAAU,GAAG,IAAI/B,UAAU,CAAC8B,EAAE,CAAC;IAEpC,IAAI,CAACE,KAAK,GAAG;MACXC,MAAM,EAAE,CAAC;MACTC,SAAS,EAAE,CAAC;MACZC,KAAK,EAAE,EAAE;MACTC,IAAI,EAAE,EAAE;MACRC,SAAS,EAAE;IACb,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,cAAc,CAAC,CAAC;EACvB;EAEAC,kBAAkBA,CAChBC,SAA0C,EAC1CC,SAAuC,EACjC;IACN,IAAM;MAAEL,SAAS;MAAEH;IAAU,CAAC,GAAG,IAAI,CAACF,KAAK;IAC3C,IAAM;MAAEW;IAAc,CAAC,GAAG,IAAI,CAAC3B,KAAK;IACpC,IACEkB,SAAS,KAAKQ,SAAS,CAACR,SAAS,IACjCG,SAAS,KAAKK,SAAS,CAACL,SAAS,EACjC;MACAM,aAAa,CAAC,CAAC;IACjB;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACC,oBAAoB,CAACC,MAAM,CAAC,CAAC;IAElC,IAAI,CAACC,aAAa,CAAC,CAAC;EACtB;EAUA1B,aAAaA,CAAC2B,KAA4C,EAAW;IACnE,IAAI,IAAI,CAACrB,QAAQ,IAAI,IAAI,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,IAAM;MAAEQ,KAAK;MAAED;IAAU,CAAC,GAAG,IAAI,CAACF,KAAK;IACvC,QAAQgB,KAAK,CAACC,GAAG;MACf,KAAK,OAAO;QAAE;UACZ,IAAIC,aAAa,GAAG,IAAI;UACxB,IAAIf,KAAK,CAACgB,MAAM,GAAG,CAAC,EAAE;YACpBD,aAAa,GAAGf,KAAK,CAAC,CAAC,CAAC,CAACiB,KAAK;UAChC,CAAC,MAAM;YACL,IAAM;cAAEhB;YAAK,CAAC,GAAG,IAAI,CAACJ,KAAK;YAC3BkB,aAAa,GAAGd,IAAI,CAACiB,IAAI,CAAC,CAAC;UAC7B;UAEA,IAAIH,aAAa,CAACC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAM;cAAEG;YAAS,CAAC,GAAG,IAAI,CAACtC,KAAK;YAC/BsC,QAAQ,CAACJ,aAAa,CAAC;UACzB;UAEAF,KAAK,CAACO,eAAe,CAAC,CAAC;UACvBP,KAAK,CAACQ,cAAc,CAAC,CAAC;UACtB,OAAO,IAAI;QACb;MACA,KAAK,WAAW;QACd,IAAItB,SAAS,GAAG,CAAC,EAAE;UACjB,IAAI,CAACP,QAAQ,CAAC8B,SAAS,CAAC,CAAC,CAAC;QAC5B;QACAT,KAAK,CAACO,eAAe,CAAC,CAAC;QACvBP,KAAK,CAACQ,cAAc,CAAC,CAAC;QACtB,OAAO,IAAI;MACb;QACE,OAAO,KAAK;IAChB;EACF;EAEAlC,iBAAiBA,CAAC0B,KAA0C,EAAQ;IAClE,QAAQA,KAAK,CAACC,GAAG;MACf,KAAK,QAAQ;QACX;QACA;MACF;QACE,IAAI,CAACS,KAAK,CAAC,CAAC;QACZ;IACJ;EACF;EAEAvC,kBAAkBA,CAAA,EAAS;IACzBV,GAAG,CAACkD,MAAM,CAAC,oBAAoB,CAAC;IAEhC,IAAM;MAAEC;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAC5B,IAAMkB,SAAS,GAAG0B,KAAK,CAACC,IAAI;IAC5B,IAAI,CAACC,QAAQ,CAAC;MAAE5B,SAAS;MAAEG,SAAS,EAAE;IAAK,CAAC,CAAC;EAC/C;EAEAd,YAAYA,CAACwC,SAAqB,EAAQ;IACxCtD,GAAG,CAACkD,MAAM,CAAC,cAAc,EAAEI,SAAS,CAAC;IAErC,IAAM;MAAET;IAAS,CAAC,GAAG,IAAI,CAACtC,KAAK;IAC/B,IAAM;MAAEiB,MAAM;MAAEE;IAAM,CAAC,GAAG,IAAI,CAACH,KAAK;IACpC,IAAMgC,WAAW,GAAGD,SAAS,GAAG9B,MAAM;IACtC,IAAI+B,WAAW,GAAG,CAAC,IAAI7B,KAAK,CAACgB,MAAM,IAAIa,WAAW,EAAE;MAClDvD,GAAG,CAACK,KAAK,CAAC,kBAAkB,EAAEiD,SAAS,CAAC;MACxC;IACF;IAEA,IAAM;MAAEX;IAAM,CAAC,GAAGjB,KAAK,CAAC6B,WAAW,CAAC;IACpCV,QAAQ,CAACF,KAAK,CAAC;EACjB;EAEA5B,iBAAiBA,CAACwB,KAAkB,EAAQ;IAC1C,IAAM;MAAEiB;IAAO,CAAC,GAAG,IAAI,CAACjD,KAAK;IAC7B,IAAMkD,IAAI,GAAGlB,KAAK,CAACmB,MAAM;IACzB,IAAM;MAAElC,MAAM;MAAEmC;IAAK,CAAC,GAAGF,IAAI;IAE7B,IAAM/B,KAAK,GAAG,EAAY;IAC1B,IAAM;MAAEkC,kBAAkB;MAAET;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAChD,KAAK,IAAIsD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACjB,MAAM,EAAEmB,CAAC,IAAI,CAAC,EAAE;MACvC,IAAMC,GAAG,GAAGH,IAAI,CAACE,CAAC,CAAC;MACnB,IAAMlB,MAAK,GAAGmB,GAAG,CAACC,GAAG,CAACP,MAAM,CAAC;MAC7B,IAAMQ,YAAY,GAAGJ,kBAAkB,CAACjB,MAAK,EAAEa,MAAM,CAACS,IAAI,EAAET,MAAM,CAACU,IAAI,CAAC;MACxExC,KAAK,CAACyC,IAAI,CAAC;QACTH,YAAY;QACZrB,KAAK,EAALA;MACF,CAAC,CAAC;IACJ;IAEA,IAAMlB,SAAS,GAAG0B,KAAK,CAACC,IAAI;IAC5BpD,GAAG,CAACkD,MAAM,CAAC,mBAAmB,EAAEzB,SAAS,EAAED,MAAM,EAAEE,KAAK,CAACgB,MAAM,CAAC;IAChE,IAAI,CAACW,QAAQ,CAAC;MAAE5B,SAAS;MAAEC,KAAK;MAAEF,MAAM;MAAEI,SAAS,EAAE;IAAM,CAAC,CAAC;EAC/D;EAEAZ,gBAAgBA,CAACuB,KAA0C,EAAQ;IACjEvC,GAAG,CAACkD,MAAM,CAAC,kBAAkB,CAAC;IAE9B,IAAM;MAAEM;IAAO,CAAC,GAAG,IAAI,CAACjD,KAAK;IAC7B,IAAM;MAAEoC,KAAK,EAAEhB;IAAK,CAAC,GAAGY,KAAK,CAAC6B,MAAM;IAEpC,IAAIzC,IAAI,KAAK,EAAE,IAAIpC,UAAU,CAAC8E,aAAa,CAACb,MAAM,CAACS,IAAI,CAAC,EAAE;MACxD,IAAI,CAACZ,QAAQ,CAAC;QAAE1B,IAAI,EAAE2C,QAAQ,CAAC3C,IAAI,EAAE,EAAE,CAAC,CAAC4C,QAAQ,CAAC;MAAE,CAAC,CAAC;IACxD,CAAC,MAAM;MACL,IAAI,CAAClB,QAAQ,CAAC;QAAE1B;MAAK,CAAC,CAAC;IACzB;IAEA,IAAI,CAACS,oBAAoB,CAAC,CAAC;EAC7B;EAEAnB,oBAAoBA,CAACuD,MAAc,EAAEC,SAAiB,EAAQ;IAC5DzE,GAAG,CAACkD,MAAM,CAAC,sBAAsB,EAAEsB,MAAM,EAAEC,SAAS,CAAC;IAErD,IAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,GAAGD,MAAM,CAAC;IAC7C,IAAMK,GAAG,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,MAAM,GAAGE,KAAK,CAAC;IACvC,IAAMI,MAAM,GAAGL,SAAS,GAAGC,KAAK;IAEhC,IAAM;MAAEvB;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAC5B4C,KAAK,CAAC4B,WAAW,CAACF,GAAG,EAAEC,MAAM,CAAC;EAChC;EAMA7B,KAAKA,CAAA,EAAS;IACZ,IAAI,IAAI,CAAC9B,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAAC8B,KAAK,CAAC,CAAC;IAC1B;EACF;EAEAnB,cAAcA,CAAA,EAAS;IACrB,IAAM;MAAET,EAAE;MAAE2D,eAAe;MAAE7B;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACjD4C,KAAK,CAAC8B,gBAAgB,CAAC5D,EAAE,CAAC6D,KAAK,CAACC,aAAa,EAAE,IAAI,CAACpE,iBAAiB,CAAC;IACtEoC,KAAK,CAAC8B,gBAAgB,CACpB5D,EAAE,CAAC6D,KAAK,CAACE,mBAAmB,EAC5B,IAAI,CAAC1E,kBACP,CAAC;IACDyC,KAAK,CAAC4B,WAAW,CAAC,CAAC,EAAEC,eAAe,CAAC;EACvC;EAEA1C,aAAaA,CAAA,EAAS;IACpB,IAAM;MAAEjB,EAAE;MAAE8B;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAChC4C,KAAK,CAACkC,mBAAmB,CAAChE,EAAE,CAAC6D,KAAK,CAACC,aAAa,EAAE,IAAI,CAACpE,iBAAiB,CAAC;IACzEoC,KAAK,CAACkC,mBAAmB,CACvBhE,EAAE,CAAC6D,KAAK,CAACE,mBAAmB,EAC5B,IAAI,CAAC1E,kBACP,CAAC;EACH;EAEAD,YAAYA,CAAA,EAAS;IACnB,IAAM;MAAE+C,MAAM;MAAEwB,eAAe;MAAE7B;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACrD,IAAM;MAAEoB;IAAK,CAAC,GAAG,IAAI,CAACJ,KAAK;IAC3B,IAAM+D,UAAU,GAAG3D,IAAI,CAACiB,IAAI,CAAC,CAAC;IAC9B,IAAM2C,OAAO,GAAG,EAAE;IAClB,IAAID,UAAU,CAAC5C,MAAM,GAAG,CAAC,EAAE;MACzB,IAAM8C,MAAM,GAAG,IAAI,CAAClE,UAAU,CAACmE,4BAA4B,CACzDjC,MAAM,EACNjE,UAAU,CAACmG,YAAY,CAAClC,MAAM,CAACS,IAAI,CAAC,OAAA0B,MAAA,CAAOL,UAAU,IAAKA,UAC5D,CAAC;MACD,IAAI,CAACE,MAAM,EAAE;QACX,MAAM,IAAII,KAAK,CACb,uDACF,CAAC;MACH;MACAL,OAAO,CAACpB,IAAI,CAACqB,MAAM,CAAC;IACtB;IAEAxF,GAAG,CAACkD,MAAM,CAAC,cAAc,EAAEqC,OAAO,CAAC;IAEnCpC,KAAK,CAAC0C,WAAW,CAACN,OAAO,CAAC;IAC1BpC,KAAK,CAAC4B,WAAW,CAAC,CAAC,EAAEC,eAAe,CAAC;EACvC;EAEAc,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAEtC;IAAO,CAAC,GAAG,IAAI,CAACjD,KAAK;IAC7B,IAAM;MAAEqB,SAAS;MAAEH,SAAS;MAAEC,KAAK;MAAEF,MAAM;MAAEG;IAAK,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEhE,IAAMwE,UAAU,GACdpB,IAAI,CAACqB,GAAG,CAACvE,SAAS,EAAEtB,uBAAuB,CAAC8F,iBAAiB,CAAC,GAC5DzG,QAAQ,CAAC0G,kBAAkB;IAC7B;IACA,EAAE;IACJ,IAAMC,SAAS,GAAG5G,UAAU,CAAC6G,YAAY,CAAC5C,MAAM,CAACS,IAAI,CAAC,GAAG,QAAQ,GAAG,MAAM;IAC1E,oBACElE,KAAA;MAAKsG,SAAS,EAAC,qCAAqC;MAAAC,QAAA,gBAClDzG,IAAA;QAAKwG,SAAS,EAAC,kBAAkB;QAAAC,QAAA,eAC/BzG,IAAA;UACEoE,IAAI,EAAEkC,SAAU;UAChBI,GAAG,EAAEpF,WAAW,IAAI;YAClB,IAAI,CAACA,WAAW,GAAGA,WAAW;UAChC,CAAE;UACFwB,KAAK,EAAEhB,IAAK;UACZ6E,WAAW,EAAC,sBAAsB;UAClCC,QAAQ,EAAE,IAAI,CAACzF,gBAAiB;UAChC0F,SAAS,EAAE,IAAI,CAAC9F,aAAc;UAC9ByF,SAAS,EAAC;QAA8B,CACzC;MAAC,CACC,CAAC,EACL,CAACzE,SAAS,IAAIH,SAAS,GAAG,CAAC,iBAC1B5B,IAAA;QACEwG,SAAS,EAAC,0CAA0C;QACpDK,SAAS,EAAE,IAAI,CAAC7F,iBAAkB;QAClC8F,IAAI,EAAC,cAAc;QACnBC,KAAK,EAAE;UAAEC,MAAM,EAAEd;QAAW,CAAE;QAAAO,QAAA,eAE9BzG,IAAA,CAACL,QAAQ;UACP+G,GAAG,EAAErF,QAAQ,IAAI;YACf,IAAI,CAACA,QAAQ,GAAGA,QAAQ;UAC1B,CAAE;UACFO,SAAS,EAAEA,SAAU;UACrBC,KAAK,EAAEA,KAAM;UACbF,MAAM,EAAEA,MAAO;UACfqB,QAAQ,EAAE,IAAI,CAAC/B,YAAa;UAC5BgG,gBAAgB,EAAE,IAAI,CAAC7F;QAAqB,CAC7C;MAAC,CACC,CACN,EACA,CAACW,SAAS,IAAIH,SAAS,KAAK,CAAC,iBAC5B5B,IAAA;QAAKwG,SAAS,EAAC,2CAA2C;QAAAC,QAAA,EAAC;MAE3D,CAAK,CACN,EACA1E,SAAS,iBACR7B,KAAA;QAAKsG,SAAS,EAAC,sCAAsC;QAAAC,QAAA,gBACnDzG,IAAA,CAACJ,cAAc;UAAC4G,SAAS,EAAC;QAAgC,CAAE,CAAC,kBAE/D;MAAA,CAAK,CACN;IAAA,CACE,CAAC;EAEV;AACF;AAAC7F,eAAA,CAxUKL,uBAAuB,uBAIA,EAAE;AAAAK,eAAA,CAJzBL,uBAAuB,kBAML;EACpB6E,eAAe,EAAE,GAAG;EACpBnC,QAAQ,EAAEA,CAAA,KAAYkE,SAAS;EAC/B7E,aAAa,EAAEA,CAAA,KAAY6E;AAC7B,CAAC;AAAAvG,eAAA,CAVGL,uBAAuB,eAYR;EACjByD,kBAAkB,EAAEvE,SAAS,CAAC2H,IAAI,CAACC,UAAU;EAC7C9D,KAAK,EAAE9D,SAAS,CAAC6H,KAAK,CAAC;IACrBjC,gBAAgB,EAAE5F,SAAS,CAAC2H,IAAI,CAACC,UAAU;IAC3C5B,mBAAmB,EAAEhG,SAAS,CAAC2H,IAAI,CAACC,UAAU;IAC9CE,OAAO,EAAE9H,SAAS,CAAC+H,OAAO,CACxB/H,SAAS,CAAC6H,KAAK,CAAC;MACdhD,IAAI,EAAE7E,SAAS,CAACgI,MAAM,CAACJ,UAAU;MACjChD,IAAI,EAAE5E,SAAS,CAACgI,MAAM,CAACJ,UAAU;MACjCzB,MAAM,EAAEnG,SAAS,CAAC2H,IAAI,CAACC;IACzB,CAAC,CACH,CAAC;IACD7D,IAAI,EAAE/D,SAAS,CAACiI,MAAM,CAACL,UAAU;IACjCpB,WAAW,EAAExG,SAAS,CAAC2H,IAAI,CAACC,UAAU;IACtClC,WAAW,EAAE1F,SAAS,CAAC2H,IAAI,CAACC;EAC9B,CAAC,CAAC,CAACA,UAAU;EACbjC,eAAe,EAAE3F,SAAS,CAACiI,MAAM;EACjCzE,QAAQ,EAAExD,SAAS,CAAC2H,IAAI;EACxB9E,aAAa,EAAE7C,SAAS,CAAC2H;AAC3B,CAAC;AA2SH,eAAe7G,uBAAuB"}