@deephaven/dashboard-core-plugins 0.85.3-beta.3 → 0.86.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 (50) hide show
  1. package/dist/ChartPanelPlugin.d.ts.map +1 -1
  2. package/dist/ChartPanelPlugin.js +4 -4
  3. package/dist/ChartPanelPlugin.js.map +1 -1
  4. package/dist/WidgetLoaderPlugin.d.ts.map +1 -1
  5. package/dist/WidgetLoaderPlugin.js +8 -5
  6. package/dist/WidgetLoaderPlugin.js.map +1 -1
  7. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +6 -6
  8. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  9. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  10. package/dist/panels/ChartPanel.d.ts +2 -0
  11. package/dist/panels/ChartPanel.d.ts.map +1 -1
  12. package/dist/panels/ChartPanel.js +20 -13
  13. package/dist/panels/ChartPanel.js.map +1 -1
  14. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  15. package/dist/panels/ConsolePanel.js +2 -2
  16. package/dist/panels/ConsolePanel.js.map +1 -1
  17. package/dist/panels/DropdownFilterPanel.d.ts +2 -2
  18. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  19. package/dist/panels/DropdownFilterPanel.js +7 -4
  20. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  21. package/dist/panels/FileExplorerPanel.d.ts +2 -2
  22. package/dist/panels/IrisGridPanel.d.ts +2 -0
  23. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  24. package/dist/panels/IrisGridPanel.js +18 -11
  25. package/dist/panels/IrisGridPanel.js.map +1 -1
  26. package/dist/panels/IrisGridPanelTooltip.d.ts +3 -31
  27. package/dist/panels/IrisGridPanelTooltip.d.ts.map +1 -1
  28. package/dist/panels/IrisGridPanelTooltip.js +25 -33
  29. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  30. package/dist/panels/Panel.d.ts +22 -45
  31. package/dist/panels/Panel.d.ts.map +1 -1
  32. package/dist/panels/Panel.js +43 -44
  33. package/dist/panels/Panel.js.map +1 -1
  34. package/dist/panels/WidgetPanel.d.ts +27 -71
  35. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  36. package/dist/panels/WidgetPanel.js +37 -49
  37. package/dist/panels/WidgetPanel.js.map +1 -1
  38. package/dist/panels/WidgetPanelTooltip.d.ts +3 -41
  39. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  40. package/dist/panels/WidgetPanelTooltip.js +17 -29
  41. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  42. package/dist/panels/WidgetPanelTypes.d.ts +20 -0
  43. package/dist/panels/WidgetPanelTypes.d.ts.map +1 -0
  44. package/dist/panels/WidgetPanelTypes.js +2 -0
  45. package/dist/panels/WidgetPanelTypes.js.map +1 -0
  46. package/dist/panels/index.d.ts +1 -0
  47. package/dist/panels/index.d.ts.map +1 -1
  48. package/dist/panels/index.js +1 -0
  49. package/dist/panels/index.js.map +1 -1
  50. package/package.json +23 -23
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPanelPlugin.d.ts","sourceRoot":"","sources":["../src/ChartPanelPlugin.tsx"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAA4B,EAC1B,KAAK,UAAU,EAEhB,MAAM,qBAAqB,CAAC;AAsF7B,eAAO,MAAM,gBAAgB,6HAmC5B,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ChartPanelPlugin.d.ts","sourceRoot":"","sources":["../src/ChartPanelPlugin.tsx"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAA4B,EAC1B,KAAK,UAAU,EAEhB,MAAM,qBAAqB,CAAC;AAwF7B,eAAO,MAAM,gBAAgB,6HAmC5B,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
@@ -54,20 +54,20 @@ function _createChartModel() {
54
54
  if (figureName != null) {
55
55
  var _figure;
56
56
  if (metadata.type === dh.VariableType.FIGURE) {
57
- var _descriptor = {
57
+ var _descriptor = _objectSpread(_objectSpread({}, metadata), {}, {
58
58
  name: figureName,
59
59
  type: dh.VariableType.FIGURE
60
- };
60
+ });
61
61
  _figure = yield fetchObject(_descriptor);
62
62
  } else {
63
63
  _figure = yield fetchFigure();
64
64
  }
65
65
  return ChartModelFactory.makeModel(dh, settings, _figure);
66
66
  }
67
- var descriptor = {
67
+ var descriptor = _objectSpread(_objectSpread({}, metadata), {}, {
68
68
  name: tableName,
69
69
  type: dh.VariableType.TABLE
70
- };
70
+ });
71
71
  var table = yield fetchObject(descriptor);
72
72
  new IrisGridUtils(dh).applyTableSettings(table, tableSettings, getTimeZone(store.getState()));
73
73
  return ChartModelFactory.makeModelFromSettings(dh,
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useMemo","useApi","useObjectFetcher","ChartModelFactory","IrisGridUtils","getTimeZone","store","isChartPanelDehydratedProps","isChartPanelFigureMetadata","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_x5","_createChartModel","apply","arguments","_asyncToGenerator","dh","fetchObject","metadata","fetchFigure","panelState","settings","tableName","figureName","tableSettings","table","undefined","figure","name","_objectSpread","makeModel","type","VariableType","FIGURE","descriptor","TABLE","applyTableSettings","getState","makeModelFromSettings","ChartPanelPlugin","props","ref","fetch","panelFetch","localDashboardId","hydratedProps","Error","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react';\nimport {\n ObjectFetcher,\n useApi,\n useObjectFetcher,\n} from '@deephaven/jsapi-bootstrap';\nimport { ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { WidgetPanelProps } from '@deephaven/plugin';\nimport {\n ChartPanelMetadata,\n GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelFigureMetadata,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n fetchObject: ObjectFetcher,\n metadata: ChartPanelMetadata,\n fetchFigure: () => Promise<DhType.plot.Figure>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings;\n let tableName;\n let figureName;\n let tableSettings;\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n figureName = undefined;\n tableSettings = metadata.tableSettings;\n } else {\n settings = {};\n tableName = '';\n figureName = isChartPanelFigureMetadata(metadata)\n ? metadata.figure\n : metadata.name;\n tableSettings = {};\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.figure != null) {\n figureName = panelState.figure;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (figureName == null && tableName == null) {\n const figure = await fetchFigure();\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n }\n\n if (figureName != null) {\n let figure: DhType.plot.Figure;\n\n if (metadata.type === dh.VariableType.FIGURE) {\n const descriptor = {\n name: figureName,\n type: dh.VariableType.FIGURE,\n };\n figure = await fetchObject<DhType.plot.Figure>(descriptor);\n } else {\n figure = await fetchFigure();\n }\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n }\n\n const descriptor = {\n name: tableName,\n type: dh.VariableType.TABLE,\n };\n const table = await fetchObject<DhType.Table>(descriptor);\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(\n dh,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n settings as any,\n table\n );\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const dh = useApi();\n const fetchObject = useObjectFetcher();\n\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n\n const hydratedProps = useMemo(\n () => ({\n metadata: metadata as ChartPanelMetadata,\n localDashboardId,\n makeModel: () => {\n if (metadata == null) {\n throw new Error('Metadata is required for chart panel');\n }\n\n return createChartModel(\n dh,\n fetchObject,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n },\n }),\n [metadata, localDashboardId, dh, fetchObject, panelFetch, panelState]\n );\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedChartPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":";;;;;;;AAAA,SAASA,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC3C,SAEEC,MAAM,EACNC,gBAAgB,QACX,4BAA4B;AACnC,SAAqBC,iBAAiB,QAAQ,kBAAkB;AAEhE,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,WAAW,EAAEC,KAAK,QAAQ,kBAAkB;AAAC,SAKpDC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,yBAAyB;AAAA,OAEpBC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAKXC,gBAAgBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,kBAAA;EAAAA,iBAAA,GAAAG,iBAAA,CAA/B,WACEC,EAAiB,EACjBC,WAA0B,EAC1BC,QAA4B,EAC5BC,WAA8C,EAC9CC,UAA8B,EACT;IACrB,IAAIC,QAAQ;IACZ,IAAIC,SAAS;IACb,IAAIC,UAAU;IACd,IAAIC,aAAa;IAEjB,IAAItB,yBAAyB,CAACgB,QAAQ,CAAC,EAAE;MACvCG,QAAQ,GAAGH,QAAQ,CAACG,QAAQ;MAC5BC,SAAS,GAAGJ,QAAQ,CAACO,KAAK;MAC1BF,UAAU,GAAGG,SAAS;MACtBF,aAAa,GAAGN,QAAQ,CAACM,aAAa;IACxC,CAAC,MAAM;MACLH,QAAQ,GAAG,CAAC,CAAC;MACbC,SAAS,GAAG,EAAE;MACdC,UAAU,GAAGtB,0BAA0B,CAACiB,QAAQ,CAAC,GAC7CA,QAAQ,CAACS,MAAM,GACfT,QAAQ,CAACU,IAAI;MACjBJ,aAAa,GAAG,CAAC,CAAC;IACpB;IACA,IAAIJ,UAAU,IAAI,IAAI,EAAE;MACtB,IAAIA,UAAU,CAACI,aAAa,IAAI,IAAI,EAAE;QACpCA,aAAa,GAAGJ,UAAU,CAACI,aAAa;MAC1C;MACA,IAAIJ,UAAU,CAACK,KAAK,IAAI,IAAI,EAAE;QAC5BH,SAAS,GAAGF,UAAU,CAACK,KAAK;MAC9B;MACA,IAAIL,UAAU,CAACO,MAAM,IAAI,IAAI,EAAE;QAC7BJ,UAAU,GAAGH,UAAU,CAACO,MAAM;MAChC;MACA,IAAIP,UAAU,CAACC,QAAQ,IAAI,IAAI,EAAE;QAC/BA,QAAQ,GAAAQ,aAAA,CAAAA,aAAA,KACHR,QAAQ,GACRD,UAAU,CAACC,QAAQ,CACvB;MACH;IACF;IAEA,IAAIE,UAAU,IAAI,IAAI,IAAID,SAAS,IAAI,IAAI,EAAE;MAC3C,IAAMK,MAAM,SAASR,WAAW,CAAC,CAAC;MAElC,OAAOvB,iBAAiB,CAACkC,SAAS,CAACd,EAAE,EAAEK,QAAQ,EAAEM,MAAM,CAAC;IAC1D;IAEA,IAAIJ,UAAU,IAAI,IAAI,EAAE;MACtB,IAAII,OAA0B;MAE9B,IAAIT,QAAQ,CAACa,IAAI,KAAKf,EAAE,CAACgB,YAAY,CAACC,MAAM,EAAE;QAC5C,IAAMC,WAAU,GAAG;UACjBN,IAAI,EAAEL,UAAU;UAChBQ,IAAI,EAAEf,EAAE,CAACgB,YAAY,CAACC;QACxB,CAAC;QACDN,OAAM,SAASV,WAAW,CAAqBiB,WAAU,CAAC;MAC5D,CAAC,MAAM;QACLP,OAAM,SAASR,WAAW,CAAC,CAAC;MAC9B;MAEA,OAAOvB,iBAAiB,CAACkC,SAAS,CAACd,EAAE,EAAEK,QAAQ,EAAEM,OAAM,CAAC;IAC1D;IAEA,IAAMO,UAAU,GAAG;MACjBN,IAAI,EAAEN,SAAS;MACfS,IAAI,EAAEf,EAAE,CAACgB,YAAY,CAACG;IACxB,CAAC;IACD,IAAMV,KAAK,SAASR,WAAW,CAAeiB,UAAU,CAAC;IACzD,IAAIrC,aAAa,CAACmB,EAAE,CAAC,CAACoB,kBAAkB,CACtCX,KAAK,EACLD,aAAa,EACb1B,WAAW,CAACC,KAAK,CAACsC,QAAQ,CAAC,CAAC,CAC9B,CAAC;IAED,OAAOzC,iBAAiB,CAAC0C,qBAAqB,CAC5CtB,EAAE;IACF;IACAK,QAAQ,EACRI,KACF,CAAC;EACH,CAAC;EAAA,OAAAb,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,OAAO,IAAMyB,gBAAgB,gBAAG/C,UAAU,CACxC,CAACgD,KAA2C,EAAEC,GAA0B,KAAK;EAC3E,IAAMzB,EAAE,GAAGtB,MAAM,CAAC,CAAC;EACnB,IAAMuB,WAAW,GAAGtB,gBAAgB,CAAC,CAAC;EAEtC,IAAMyB,UAAU,GAAGpB,2BAA2B,CAACwC,KAAK,CAAC,GAChDA,KAAK,CAAgCpB,UAAU,GAChDM,SAAS;EAEb,IAAM;IAAEgB,KAAK,EAAEC,UAAU;IAAEzB,QAAQ;IAAE0B;EAAiB,CAAC,GAAGJ,KAAK;EAE/D,IAAMK,aAAa,GAAGpD,OAAO,CAC3B,OAAO;IACLyB,QAAQ,EAAEA,QAA8B;IACxC0B,gBAAgB;IAChBd,SAAS,EAAEA,CAAA,KAAM;MACf,IAAIZ,QAAQ,IAAI,IAAI,EAAE;QACpB,MAAM,IAAI4B,KAAK,CAAC,sCAAsC,CAAC;MACzD;MAEA,OAAOxC,gBAAgB,CACrBU,EAAE,EACFC,WAAW,EACXC,QAAQ,EACRyB,UAAU,EACVvB,UACF,CAAC;IACH;EACF,CAAC,CAAC,EACF,CAACF,QAAQ,EAAE0B,gBAAgB,EAAE5B,EAAE,EAAEC,WAAW,EAAE0B,UAAU,EAAEvB,UAAU,CACtE,CAAC;;EAED;EACA,oBAAOf,IAAA,CAACF,mBAAmB,EAAA0B,aAAA,CAAAA,aAAA;IAACY,GAAG,EAAEA;EAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG,CAAC;AACxE,CACF,CAAC;AAEDN,gBAAgB,CAACQ,WAAW,GAAG,kBAAkB;AAEjD,eAAeR,gBAAgB"}
1
+ {"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useMemo","useApi","useObjectFetcher","ChartModelFactory","IrisGridUtils","getTimeZone","store","isChartPanelDehydratedProps","isChartPanelFigureMetadata","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_x5","_createChartModel","apply","arguments","_asyncToGenerator","dh","fetchObject","metadata","fetchFigure","panelState","settings","tableName","figureName","tableSettings","table","undefined","figure","name","_objectSpread","makeModel","type","VariableType","FIGURE","descriptor","TABLE","applyTableSettings","getState","makeModelFromSettings","ChartPanelPlugin","props","ref","fetch","panelFetch","localDashboardId","hydratedProps","Error","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useMemo } from 'react';\nimport {\n ObjectFetcher,\n useApi,\n useObjectFetcher,\n} from '@deephaven/jsapi-bootstrap';\nimport { ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { WidgetPanelProps } from '@deephaven/plugin';\nimport {\n ChartPanelMetadata,\n GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelFigureMetadata,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n fetchObject: ObjectFetcher,\n metadata: ChartPanelMetadata,\n fetchFigure: () => Promise<DhType.plot.Figure>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings;\n let tableName;\n let figureName;\n let tableSettings;\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n figureName = undefined;\n tableSettings = metadata.tableSettings;\n } else {\n settings = {};\n tableName = '';\n figureName = isChartPanelFigureMetadata(metadata)\n ? metadata.figure\n : metadata.name;\n tableSettings = {};\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.figure != null) {\n figureName = panelState.figure;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (figureName == null && tableName == null) {\n const figure = await fetchFigure();\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n }\n\n if (figureName != null) {\n let figure: DhType.plot.Figure;\n\n if (metadata.type === dh.VariableType.FIGURE) {\n const descriptor = {\n ...metadata,\n name: figureName,\n type: dh.VariableType.FIGURE,\n };\n figure = await fetchObject<DhType.plot.Figure>(descriptor);\n } else {\n figure = await fetchFigure();\n }\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n }\n\n const descriptor = {\n ...metadata,\n name: tableName,\n type: dh.VariableType.TABLE,\n };\n const table = await fetchObject<DhType.Table>(descriptor);\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(\n dh,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n settings as any,\n table\n );\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const dh = useApi();\n const fetchObject = useObjectFetcher();\n\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n\n const hydratedProps = useMemo(\n () => ({\n metadata: metadata as ChartPanelMetadata,\n localDashboardId,\n makeModel: () => {\n if (metadata == null) {\n throw new Error('Metadata is required for chart panel');\n }\n\n return createChartModel(\n dh,\n fetchObject,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n },\n }),\n [metadata, localDashboardId, dh, fetchObject, panelFetch, panelState]\n );\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedChartPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetLoaderPlugin.d.ts","sourceRoot":"","sources":["../src/WidgetLoaderPlugin.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,6BAA6B,EAM7B,UAAU,EAEX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAK3B,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GACnB,KAAK,CAAC,yBAAyB,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAoC5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAC5C,GAAG,CAAC,OAAO,GAAG,IAAI,CAqFpB;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"WidgetLoaderPlugin.d.ts","sourceRoot":"","sources":["../src/WidgetLoaderPlugin.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,6BAA6B,EAI7B,UAAU,EAGX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAM3B,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GACnB,KAAK,CAAC,yBAAyB,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAyC5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAC5C,GAAG,CAAC,OAAO,GAAG,IAAI,CAqFpB;AAED,eAAe,kBAAkB,CAAC"}
@@ -5,7 +5,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
5
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
6
  import { useMemo, useCallback, useEffect, forwardRef } from 'react';
7
7
  import { nanoid } from 'nanoid';
8
- import { assertIsDashboardPluginProps, PanelEvent, LayoutUtils, useListener, canHaveRef } from '@deephaven/dashboard';
8
+ import { assertIsDashboardPluginProps, LayoutUtils, canHaveRef, usePanelOpenListener } from '@deephaven/dashboard';
9
9
  import Log from '@deephaven/log';
10
10
  import { isWidgetPlugin, usePlugins } from '@deephaven/plugin';
11
11
  import { WidgetPanel } from "./panels/index.js";
@@ -14,16 +14,19 @@ var log = Log.module('WidgetLoaderPlugin');
14
14
  export function WrapWidgetPlugin(plugin) {
15
15
  var _plugin$component$dis;
16
16
  function Wrapper(props, ref) {
17
- var _metadata$name;
17
+ var _metadata$type, _metadata$name;
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  var C = plugin.component;
20
20
  var {
21
21
  metadata
22
22
  } = props;
23
+ var panelDescriptor = _objectSpread(_objectSpread({}, metadata), {}, {
24
+ type: (_metadata$type = metadata === null || metadata === void 0 ? void 0 : metadata.type) !== null && _metadata$type !== void 0 ? _metadata$type : plugin.type,
25
+ name: (_metadata$name = metadata === null || metadata === void 0 ? void 0 : metadata.name) !== null && _metadata$name !== void 0 ? _metadata$name : 'Widget'
26
+ });
23
27
  var hasRef = canHaveRef(C);
24
28
  return /*#__PURE__*/_jsx(WidgetPanel, _objectSpread(_objectSpread({
25
- widgetName: (_metadata$name = metadata === null || metadata === void 0 ? void 0 : metadata.name) !== null && _metadata$name !== void 0 ? _metadata$name : undefined,
26
- widgetType: plugin.title
29
+ descriptor: panelDescriptor
27
30
  // eslint-disable-next-line react/jsx-props-no-spreading
28
31
  }, props), {}, {
29
32
  children: hasRef ? /*#__PURE__*/_jsx(C
@@ -130,7 +133,7 @@ export function WidgetLoaderPlugin(props) {
130
133
  /**
131
134
  * Listen for panel open events so we know when to open a panel
132
135
  */
133
- useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);
136
+ usePanelOpenListener(layout.eventHub, handlePanelOpen);
134
137
  return null;
135
138
  }
136
139
  export default WidgetLoaderPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetLoaderPlugin.js","names":["useMemo","useCallback","useEffect","forwardRef","nanoid","assertIsDashboardPluginProps","PanelEvent","LayoutUtils","useListener","canHaveRef","Log","isWidgetPlugin","usePlugins","WidgetPanel","jsx","_jsx","log","module","WrapWidgetPlugin","plugin","_plugin$component$dis","Wrapper","props","ref","_metadata$name","C","component","metadata","hasRef","_objectSpread","widgetName","name","undefined","widgetType","title","children","displayName","concat","WidgetLoaderPlugin","plugins","supportedTypes","typeMap","Map","forEach","flat","supportedType","has","_typeMap$get","warn","get","set","id","layout","registerComponent","handlePanelOpen","_ref","_widget$name","dragEvent","panelId","fetch","widget","type","panelProps","localDashboardId","config","root","openComponent","deregisterFns","Set","values","map","panelComponent","deregister","eventHub","OPEN"],"sources":["../src/WidgetLoaderPlugin.tsx"],"sourcesContent":["import { useMemo, useCallback, useEffect, forwardRef } from 'react';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n DehydratedDashboardPanelProps,\n PanelEvent,\n PanelOpenEventDetail,\n LayoutUtils,\n useListener,\n PanelProps,\n canHaveRef,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport {\n isWidgetPlugin,\n usePlugins,\n type WidgetPlugin,\n} from '@deephaven/plugin';\nimport { WidgetPanel } from './panels';\n\nconst log = Log.module('WidgetLoaderPlugin');\n\nexport function WrapWidgetPlugin(\n plugin: WidgetPlugin\n): React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<unknown>> {\n function Wrapper(props: PanelProps, ref: React.ForwardedRef<unknown>) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const C = plugin.component as any;\n const { metadata } = props;\n\n const hasRef = canHaveRef(C);\n\n return (\n <WidgetPanel\n widgetName={metadata?.name ?? undefined}\n widgetType={plugin.title}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {hasRef ? (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n ref={ref}\n />\n ) : (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n )}\n </WidgetPanel>\n );\n }\n\n Wrapper.displayName = `WidgetLoaderPlugin(${\n plugin.component.displayName ?? plugin.name\n })`;\n\n return forwardRef(Wrapper);\n}\n\n/**\n * Widget to automatically open any supported WidgetPlugin types as panels\n * if the widget is emitted from the server as the result of executed code.\n *\n * Does not open panels for widgets that are not supported by any plugins.\n * Does not open panels for widgets that are a component of a larger widget or UI element.\n *\n * @param props Dashboard plugin props\n * @returns React element\n */\nexport function WidgetLoaderPlugin(\n props: Partial<DashboardPluginComponentProps>\n): JSX.Element | null {\n const plugins = usePlugins();\n const supportedTypes = useMemo(() => {\n const typeMap = new Map<string, WidgetPlugin>();\n plugins.forEach(plugin => {\n if (!isWidgetPlugin(plugin)) {\n return;\n }\n\n [plugin.supportedTypes].flat().forEach(supportedType => {\n if (supportedType != null && supportedType !== '') {\n if (typeMap.has(supportedType)) {\n log.warn(\n `Multiple WidgetPlugins handling type ${supportedType}. Replacing ${typeMap.get(\n supportedType\n )?.name} with ${plugin.name} to handle ${supportedType}`\n );\n }\n typeMap.set(supportedType, plugin);\n }\n });\n });\n\n return typeMap;\n }, [plugins]);\n\n assertIsDashboardPluginProps(props);\n const { id, layout, registerComponent } = props;\n\n const handlePanelOpen = useCallback(\n ({\n dragEvent,\n panelId = nanoid(),\n fetch,\n widget,\n }: PanelOpenEventDetail) => {\n const { type } = widget;\n const plugin = type != null ? supportedTypes.get(type) : null;\n if (plugin == null) {\n return;\n }\n const name = widget.name ?? type;\n\n const panelProps: DehydratedDashboardPanelProps & {\n fetch?: () => Promise<unknown>;\n } = {\n localDashboardId: id,\n metadata: widget,\n fetch,\n };\n\n const config: ReactComponentConfig = {\n type: 'react-component',\n component: plugin.name,\n props: panelProps,\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout, supportedTypes]\n );\n\n useEffect(() => {\n const deregisterFns = [...new Set(supportedTypes.values())].map(plugin => {\n const { panelComponent } = plugin;\n if (panelComponent == null) {\n return registerComponent(plugin.name, WrapWidgetPlugin(plugin));\n }\n return registerComponent(plugin.name, panelComponent);\n });\n\n return () => {\n deregisterFns.forEach(deregister => deregister());\n };\n }, [registerComponent, supportedTypes]);\n\n /**\n * Listen for panel open events so we know when to open a panel\n */\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return null;\n}\n\nexport default WidgetLoaderPlugin;\n"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetLoaderPlugin.js","names":["useMemo","useCallback","useEffect","forwardRef","nanoid","assertIsDashboardPluginProps","LayoutUtils","canHaveRef","usePanelOpenListener","Log","isWidgetPlugin","usePlugins","WidgetPanel","jsx","_jsx","log","module","WrapWidgetPlugin","plugin","_plugin$component$dis","Wrapper","props","ref","_metadata$type","_metadata$name","C","component","metadata","panelDescriptor","_objectSpread","type","name","hasRef","descriptor","children","displayName","concat","WidgetLoaderPlugin","plugins","supportedTypes","typeMap","Map","forEach","flat","supportedType","has","_typeMap$get","warn","get","set","id","layout","registerComponent","handlePanelOpen","_ref","_widget$name","dragEvent","panelId","fetch","widget","panelProps","localDashboardId","config","title","root","openComponent","deregisterFns","Set","values","map","panelComponent","deregister","eventHub"],"sources":["../src/WidgetLoaderPlugin.tsx"],"sourcesContent":["import { useMemo, useCallback, useEffect, forwardRef } from 'react';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n DehydratedDashboardPanelProps,\n PanelOpenEventDetail,\n LayoutUtils,\n PanelProps,\n canHaveRef,\n usePanelOpenListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport {\n isWidgetPlugin,\n usePlugins,\n type WidgetPlugin,\n} from '@deephaven/plugin';\nimport { WidgetPanel } from './panels';\nimport { WidgetPanelDescriptor } from './panels/WidgetPanelTypes';\n\nconst log = Log.module('WidgetLoaderPlugin');\n\nexport function WrapWidgetPlugin(\n plugin: WidgetPlugin\n): React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<unknown>> {\n function Wrapper(props: PanelProps, ref: React.ForwardedRef<unknown>) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const C = plugin.component as any;\n const { metadata } = props;\n\n const panelDescriptor: WidgetPanelDescriptor = {\n ...metadata,\n type: metadata?.type ?? plugin.type,\n name: metadata?.name ?? 'Widget',\n };\n\n const hasRef = canHaveRef(C);\n\n return (\n <WidgetPanel\n descriptor={panelDescriptor}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {hasRef ? (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n ref={ref}\n />\n ) : (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n )}\n </WidgetPanel>\n );\n }\n\n Wrapper.displayName = `WidgetLoaderPlugin(${\n plugin.component.displayName ?? plugin.name\n })`;\n\n return forwardRef(Wrapper);\n}\n\n/**\n * Widget to automatically open any supported WidgetPlugin types as panels\n * if the widget is emitted from the server as the result of executed code.\n *\n * Does not open panels for widgets that are not supported by any plugins.\n * Does not open panels for widgets that are a component of a larger widget or UI element.\n *\n * @param props Dashboard plugin props\n * @returns React element\n */\nexport function WidgetLoaderPlugin(\n props: Partial<DashboardPluginComponentProps>\n): JSX.Element | null {\n const plugins = usePlugins();\n const supportedTypes = useMemo(() => {\n const typeMap = new Map<string, WidgetPlugin>();\n plugins.forEach(plugin => {\n if (!isWidgetPlugin(plugin)) {\n return;\n }\n\n [plugin.supportedTypes].flat().forEach(supportedType => {\n if (supportedType != null && supportedType !== '') {\n if (typeMap.has(supportedType)) {\n log.warn(\n `Multiple WidgetPlugins handling type ${supportedType}. Replacing ${typeMap.get(\n supportedType\n )?.name} with ${plugin.name} to handle ${supportedType}`\n );\n }\n typeMap.set(supportedType, plugin);\n }\n });\n });\n\n return typeMap;\n }, [plugins]);\n\n assertIsDashboardPluginProps(props);\n const { id, layout, registerComponent } = props;\n\n const handlePanelOpen = useCallback(\n ({\n dragEvent,\n panelId = nanoid(),\n fetch,\n widget,\n }: PanelOpenEventDetail) => {\n const { type } = widget;\n const plugin = type != null ? supportedTypes.get(type) : null;\n if (plugin == null) {\n return;\n }\n const name = widget.name ?? type;\n\n const panelProps: DehydratedDashboardPanelProps & {\n fetch?: () => Promise<unknown>;\n } = {\n localDashboardId: id,\n metadata: widget,\n fetch,\n };\n\n const config: ReactComponentConfig = {\n type: 'react-component',\n component: plugin.name,\n props: panelProps,\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout, supportedTypes]\n );\n\n useEffect(() => {\n const deregisterFns = [...new Set(supportedTypes.values())].map(plugin => {\n const { panelComponent } = plugin;\n if (panelComponent == null) {\n return registerComponent(plugin.name, WrapWidgetPlugin(plugin));\n }\n return registerComponent(plugin.name, panelComponent);\n });\n\n return () => {\n deregisterFns.forEach(deregister => deregister());\n };\n }, [registerComponent, supportedTypes]);\n\n /**\n * Listen for panel open events so we know when to open a panel\n */\n usePanelOpenListener(layout.eventHub, handlePanelOpen);\n\n return null;\n}\n\nexport default WidgetLoaderPlugin;\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ export interface DropdownFilterColumn {
10
10
  }
11
11
  export interface DropdownFilterProps {
12
12
  column: DropdownFilterColumn;
13
- columns: DropdownFilterColumn[];
13
+ columns: readonly DropdownFilterColumn[];
14
14
  onSourceMouseEnter: () => void;
15
15
  onSourceMouseLeave: () => void;
16
16
  disableLinking: boolean;
@@ -20,7 +20,7 @@ export interface DropdownFilterProps {
20
20
  settingsError: string;
21
21
  source: LinkPoint;
22
22
  value: string | null;
23
- values: (string | null)[];
23
+ values: readonly (string | null)[];
24
24
  onChange: (change: {
25
25
  column: Partial<dh.Column> | null;
26
26
  isValueShown?: boolean;
@@ -58,11 +58,11 @@ export declare class DropdownFilter extends Component<DropdownFilterProps, Dropd
58
58
  componentDidUpdate(prevProps: DropdownFilterProps, prevState: DropdownFilterState): void;
59
59
  componentWillUnmount(): void;
60
60
  dropdownRef: RefObject<HTMLSelectElement>;
61
- getCompatibleColumns: (source: LinkPoint, columns: DropdownFilterColumn[]) => DropdownFilterColumn[];
61
+ getCompatibleColumns: (source: LinkPoint, columns: readonly DropdownFilterColumn[]) => DropdownFilterColumn[];
62
62
  getColumnOptions: (columns: DropdownFilterColumn[], selectedColumn: DropdownFilterColumn | null) => [JSX.Element[], number];
63
- getSelectedOptionIndex: (values: (string | null)[], value: string | null) => number;
64
- getValueOptions: (values: (string | null)[]) => JSX.Element[];
65
- getItemLabel: ((columns: DropdownFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: DropdownFilterColumn[], index: number) => string>;
63
+ getSelectedOptionIndex: (values: readonly (string | null)[], value: string | null) => number;
64
+ getValueOptions: (values: readonly (string | null)[]) => JSX.Element[];
65
+ getItemLabel: ((columns: readonly DropdownFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: readonly DropdownFilterColumn[], index: number) => string>;
66
66
  handleColumnChange(eventTargetValue: string): void;
67
67
  handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void;
68
68
  handleValueChange(eventTargetValue: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","Select","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","nanoid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","debug2","parseInt","setState","allColumns","getCompatibleColumns","event","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","target","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","String","kind","tooltip","ref","onKeyDown","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n Component,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n CardFlip,\n Select,\n SocketedButton,\n} from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: (string | null)[];\n onChange: (change: {\n column: Partial<dh.Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: nanoid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: (string | null)[], value: string | null) => values.indexOf(value)\n );\n\n getValueOptions = memoize((values: (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns: DropdownFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(eventTargetValue: string): void {\n const value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(eventTargetValue: string): void {\n const valueIndex = eventTargetValue;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <Select\n id={filterColumnId}\n value={String(selectedIndex)}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </Select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <Select\n className=\"custom-select\"\n value={String(selectedOption)}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyDown={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </Select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","Select","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","nanoid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","debug2","parseInt","setState","allColumns","getCompatibleColumns","event","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","target","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","String","kind","tooltip","ref","onKeyDown","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n Component,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n CardFlip,\n Select,\n SocketedButton,\n} from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: readonly DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: readonly (string | null)[];\n onChange: (change: {\n column: Partial<dh.Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: nanoid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: readonly DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: readonly (string | null)[], value: string | null) =>\n values.indexOf(value)\n );\n\n getValueOptions = memoize((values: readonly (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee(\n (columns: readonly DropdownFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n }\n );\n\n handleColumnChange(eventTargetValue: string): void {\n const value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(eventTargetValue: string): void {\n const valueIndex = eventTargetValue;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <Select\n id={filterColumnId}\n value={String(selectedIndex)}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </Select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <Select\n className=\"custom-select\"\n value={String(selectedOption)}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyDown={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </Select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ import { SelectorColumn } from './ChartColumnSelectorOverlay';
11
11
  import './ChartPanel.scss';
12
12
  import { Link, LinkFilterMap } from '../linker/LinkerUtils';
13
13
  import { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';
14
+ import { WidgetPanelDescriptor } from './WidgetPanelTypes';
14
15
  export type InputFilterMap = Map<string, InputFilter>;
15
16
  export type LinkedColumnMap = Map<string, {
16
17
  name: string;
@@ -129,6 +130,7 @@ export declare class ChartPanel extends Component<ChartPanelProps, ChartPanelSta
129
130
  isValid: boolean;
130
131
  isActive: boolean;
131
132
  }[];
133
+ getWidgetPanelDescriptor: (metadata: ChartPanelProps['metadata']) => WidgetPanelDescriptor;
132
134
  startListeningToSource(table: dh.Table): void;
133
135
  stopListeningToSource(table: dh.Table): void;
134
136
  loadModelIfNecessary(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"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"}
@@ -107,6 +107,22 @@ export class ChartPanel extends Component {
107
107
  isValid: columnSelectionValidator ? columnSelectionValidator(this, column) : false,
108
108
  isActive: linkedColumnMap.has(column.name)
109
109
  }))));
110
+ _defineProperty(this, "getWidgetPanelDescriptor", memoize(metadata => {
111
+ var name = 'Chart';
112
+ if (isChartPanelTableMetadata(metadata)) {
113
+ name = metadata.table;
114
+ } else if (isChartPanelFigureMetadata(metadata)) {
115
+ var _metadata$figure;
116
+ name = (_metadata$figure = metadata.figure) !== null && _metadata$figure !== void 0 ? _metadata$figure : name;
117
+ } else {
118
+ var _metadata$name;
119
+ name = (_metadata$name = metadata.name) !== null && _metadata$name !== void 0 ? _metadata$name : name;
120
+ }
121
+ return _objectSpread(_objectSpread({}, metadata), {}, {
122
+ type: 'Chart',
123
+ name
124
+ });
125
+ }));
110
126
  this.handleColumnSelected = this.handleColumnSelected.bind(this);
111
127
  this.handleColumnMouseEnter = this.handleColumnMouseEnter.bind(this);
112
128
  this.handleColumnMouseLeave = this.handleColumnMouseLeave.bind(this);
@@ -131,7 +147,7 @@ export class ChartPanel extends Component {
131
147
  this.panelContainer = /*#__PURE__*/React.createRef();
132
148
  this.pending = new Pending();
133
149
  var {
134
- metadata,
150
+ metadata: _metadata,
135
151
  panelState
136
152
  } = props;
137
153
  var {
@@ -145,7 +161,7 @@ export class ChartPanel extends Component {
145
161
  isDisconnected: false,
146
162
  isLoading: false,
147
163
  isLoaded: false,
148
- isLinked: metadata != null && isChartPanelTableMetadata(metadata) && metadata.settings.isLinked,
164
+ isLinked: _metadata != null && isChartPanelTableMetadata(_metadata) && _metadata.settings.isLinked,
149
165
  // Map of all non-empty filters applied to the chart.
150
166
  // Initialize the filter map to the previously stored values; input filters will be applied after load.
151
167
  filterMap: new Map(filterValueMap),
@@ -829,7 +845,6 @@ export class ChartPanel extends Component {
829
845
  });
830
846
  }
831
847
  render() {
832
- var _name;
833
848
  var {
834
849
  columnSelectionValidator,
835
850
  glContainer,
@@ -852,14 +867,6 @@ export class ChartPanel extends Component {
852
867
  isLoaded,
853
868
  isLoading
854
869
  } = this.state;
855
- var name;
856
- if (isChartPanelTableMetadata(metadata)) {
857
- name = metadata.table;
858
- } else if (isChartPanelFigureMetadata(metadata)) {
859
- name = metadata.figure;
860
- } else {
861
- name = metadata.name;
862
- }
863
870
  var inputFilterMap = this.getInputFilterColumnMap(columnMap, inputFilters);
864
871
  var linkedColumnMap = this.getLinkedColumnMap(columnMap, links);
865
872
  var waitingInputMap = model != null ? this.getWaitingInputMap(model.isFilterRequired(), columnMap, filterMap) : new Map();
@@ -867,6 +874,7 @@ export class ChartPanel extends Component {
867
874
  var errorMessage = error != null ? "Unable to open chart. ".concat(error) : undefined;
868
875
  var isWaitingForFilter = waitingInputMap.size > 0;
869
876
  var isSelectingColumn = columnMap.size > 0 && isLinkerActive;
877
+ var descriptor = this.getWidgetPanelDescriptor(metadata);
870
878
  return /*#__PURE__*/_jsx(WidgetPanel, {
871
879
  className: classNames('iris-chart-panel', {
872
880
  'input-required': isWaitingForFilter
@@ -883,8 +891,7 @@ export class ChartPanel extends Component {
883
891
  isDisconnected: isDisconnected,
884
892
  isLoading: isLoading,
885
893
  isLoaded: isLoaded,
886
- widgetName: (_name = name) !== null && _name !== void 0 ? _name : undefined,
887
- widgetType: "Chart",
894
+ descriptor: descriptor,
888
895
  children: /*#__PURE__*/_jsxs("div", {
889
896
  ref: this.panelContainer,
890
897
  className: "chart-panel-container h-100 w-100",