@tcn/ui-table 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +1 -1
  2. package/dist/cell.css +1 -0
  3. package/dist/cell.module-WpHnQBVu.js +5 -0
  4. package/dist/cell.module-WpHnQBVu.js.map +1 -0
  5. package/dist/components/cells/data_cell.d.ts +3 -2
  6. package/dist/components/cells/data_cell.d.ts.map +1 -0
  7. package/dist/components/cells/data_cell.js +18 -10
  8. package/dist/components/cells/data_cell.js.map +1 -1
  9. package/dist/components/cells/footer_cell.d.ts +3 -2
  10. package/dist/components/cells/footer_cell.d.ts.map +1 -0
  11. package/dist/components/cells/footer_cell.js +18 -10
  12. package/dist/components/cells/footer_cell.js.map +1 -1
  13. package/dist/components/cells/header_cell.d.ts +3 -2
  14. package/dist/components/cells/header_cell.d.ts.map +1 -0
  15. package/dist/components/cells/header_cell.js +52 -18
  16. package/dist/components/cells/header_cell.js.map +1 -1
  17. package/dist/components/cells/sticky_row_data_cell.d.ts +3 -2
  18. package/dist/components/cells/sticky_row_data_cell.d.ts.map +1 -0
  19. package/dist/components/cells/sticky_row_data_cell.js +26 -11
  20. package/dist/components/cells/sticky_row_data_cell.js.map +1 -1
  21. package/dist/components/cells/sticky_row_fill_cell.d.ts +2 -2
  22. package/dist/components/cells/sticky_row_fill_cell.d.ts.map +1 -0
  23. package/dist/components/cells/sticky_row_fill_cell.js +15 -5
  24. package/dist/components/cells/sticky_row_fill_cell.js.map +1 -1
  25. package/dist/components/global_search.d.ts +2 -2
  26. package/dist/components/global_search.d.ts.map +1 -0
  27. package/dist/components/global_search.js +26 -9
  28. package/dist/components/global_search.js.map +1 -1
  29. package/dist/components/global_search_presenter.d.ts +2 -1
  30. package/dist/components/global_search_presenter.d.ts.map +1 -0
  31. package/dist/components/global_search_presenter.js +20 -18
  32. package/dist/components/global_search_presenter.js.map +1 -1
  33. package/dist/components/table/table.d.ts +3 -2
  34. package/dist/components/table/table.d.ts.map +1 -0
  35. package/dist/components/table/table.js +140 -77
  36. package/dist/components/table/table.js.map +1 -1
  37. package/dist/components/table/table_column.d.ts +1 -1
  38. package/dist/components/table/table_column.d.ts.map +1 -0
  39. package/dist/components/table/table_column.js +6 -5
  40. package/dist/components/table/table_column.js.map +1 -1
  41. package/dist/components/table/table_presenter.d.ts +3 -2
  42. package/dist/components/table/table_presenter.d.ts.map +1 -0
  43. package/dist/components/table/table_presenter.js +45 -62
  44. package/dist/components/table/table_presenter.js.map +1 -1
  45. package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts +2 -2
  46. package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts.map +1 -0
  47. package/dist/components/table_filter_panel/field_filters/date_field_filter.js +59 -33
  48. package/dist/components/table_filter_panel/field_filters/date_field_filter.js.map +1 -1
  49. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts +4 -3
  50. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts.map +1 -0
  51. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js +57 -91
  52. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js.map +1 -1
  53. package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts +1 -0
  54. package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts.map +1 -0
  55. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts +1 -0
  56. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts.map +1 -0
  57. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts +3 -3
  58. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts.map +1 -0
  59. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js +52 -29
  60. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js.map +1 -1
  61. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts +3 -2
  62. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts.map +1 -0
  63. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js +53 -70
  64. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js.map +1 -1
  65. package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts +3 -3
  66. package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts.map +1 -0
  67. package/dist/components/table_filter_panel/field_filters/number_field_filter.js +47 -23
  68. package/dist/components/table_filter_panel/field_filters/number_field_filter.js.map +1 -1
  69. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts +5 -4
  70. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts.map +1 -0
  71. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js +53 -58
  72. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js.map +1 -1
  73. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts +2 -2
  74. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts.map +1 -0
  75. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js +61 -31
  76. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js.map +1 -1
  77. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts +4 -3
  78. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts.map +1 -0
  79. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js +57 -91
  80. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js.map +1 -1
  81. package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts +3 -3
  82. package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts.map +1 -0
  83. package/dist/components/table_filter_panel/field_filters/select_field_filter.js +49 -24
  84. package/dist/components/table_filter_panel/field_filters/select_field_filter.js.map +1 -1
  85. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts +3 -2
  86. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts.map +1 -0
  87. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js +49 -53
  88. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js.map +1 -1
  89. package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts +3 -3
  90. package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts.map +1 -0
  91. package/dist/components/table_filter_panel/field_filters/string_field_filter.js +62 -33
  92. package/dist/components/table_filter_panel/field_filters/string_field_filter.js.map +1 -1
  93. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts +5 -4
  94. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts.map +1 -0
  95. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js +54 -59
  96. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js.map +1 -1
  97. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts +2 -1
  98. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts.map +1 -0
  99. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js +13 -19
  100. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js.map +1 -1
  101. package/dist/components/table_filter_panel/table_filter_panel.d.ts +5 -4
  102. package/dist/components/table_filter_panel/table_filter_panel.d.ts.map +1 -0
  103. package/dist/components/table_filter_panel/table_filter_panel.js +15 -11
  104. package/dist/components/table_filter_panel/table_filter_panel.js.map +1 -1
  105. package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts +2 -2
  106. package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts.map +1 -0
  107. package/dist/components/table_filter_panel/table_filter_panel_presenter.js +45 -62
  108. package/dist/components/table_filter_panel/table_filter_panel_presenter.js.map +1 -1
  109. package/dist/components/table_filter_panel/types.d.ts +1 -0
  110. package/dist/components/table_filter_panel/types.d.ts.map +1 -0
  111. package/dist/components/table_filter_panel/types.js +5 -2
  112. package/dist/components/table_filter_panel/types.js.map +1 -1
  113. package/dist/components/table_pager.d.ts +2 -2
  114. package/dist/components/table_pager.d.ts.map +1 -0
  115. package/dist/components/table_pager.js +22 -20
  116. package/dist/components/table_pager.js.map +1 -1
  117. package/dist/index.d.ts +1 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +27 -13
  120. package/dist/index.js.map +1 -1
  121. package/dist/table.css +1 -0
  122. package/dist/table_pager.css +1 -0
  123. package/package.json +61 -61
  124. package/src/__stories__/aip_table.stories.tsx +190 -0
  125. package/src/__stories__/auth_provider.tsx +14 -0
  126. package/src/__stories__/demo.stories.tsx +137 -0
  127. package/src/__stories__/sample_data.ts +1398 -0
  128. package/src/__stories__/table.stories.tsx +423 -0
  129. package/src/__tests__/sanity.test.ts +7 -0
  130. package/src/components/cells/data_cell.tsx +25 -0
  131. package/src/components/cells/footer_cell.tsx +25 -0
  132. package/src/components/cells/header_cell.tsx +77 -0
  133. package/src/components/cells/sticky_row_data_cell.tsx +31 -0
  134. package/src/components/cells/sticky_row_fill_cell.tsx +16 -0
  135. package/src/components/global_search.tsx +33 -0
  136. package/src/components/global_search_presenter.ts +24 -0
  137. package/{dist → src}/components/table/table.module.css +3 -2
  138. package/src/components/table/table.tsx +183 -0
  139. package/src/components/table/table_column.tsx +27 -0
  140. package/src/components/table/table_presenter.test.ts +161 -0
  141. package/src/components/table/table_presenter.ts +103 -0
  142. package/src/components/table_filter_panel/field_filters/date_field_filter.tsx +70 -0
  143. package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.test.ts +583 -0
  144. package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts +110 -0
  145. package/src/components/table_filter_panel/field_filters/field_filter_props.ts +5 -0
  146. package/src/components/table_filter_panel/field_filters/field_filter_strategy.ts +14 -0
  147. package/src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx +68 -0
  148. package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.ts +444 -0
  149. package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts +90 -0
  150. package/src/components/table_filter_panel/field_filters/number_field_filter.tsx +53 -0
  151. package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.test.ts +431 -0
  152. package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.ts +80 -0
  153. package/src/components/table_filter_panel/field_filters/number_range_field_filter.tsx +68 -0
  154. package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.ts +582 -0
  155. package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts +110 -0
  156. package/src/components/table_filter_panel/field_filters/select_field_filter.tsx +57 -0
  157. package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.test.ts +365 -0
  158. package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts +74 -0
  159. package/src/components/table_filter_panel/field_filters/string_field_filter.tsx +70 -0
  160. package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.test.ts +296 -0
  161. package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts +81 -0
  162. package/src/components/table_filter_panel/field_filters/use_field_filter_strategy.tsx +30 -0
  163. package/src/components/table_filter_panel/table_filter_panel.stories.tsx +46 -0
  164. package/src/components/table_filter_panel/table_filter_panel.tsx +26 -0
  165. package/src/components/table_filter_panel/table_filter_panel_presenter.ts +77 -0
  166. package/src/components/table_filter_panel/types.ts +3 -0
  167. package/src/components/table_pager.tsx +39 -0
  168. package/src/index.ts +16 -0
  169. package/tsconfig.json +36 -0
  170. package/types/file_types.d.ts +54 -0
  171. package/types/react_color.d.ts +61 -0
  172. package/dist/__stories__/aip_table.stories.d.ts +0 -5
  173. package/dist/__stories__/aip_table.stories.js +0 -96
  174. package/dist/__stories__/aip_table.stories.js.map +0 -1
  175. package/dist/__stories__/auth_provider.d.ts +0 -4
  176. package/dist/__stories__/auth_provider.js +0 -10
  177. package/dist/__stories__/auth_provider.js.map +0 -1
  178. package/dist/__stories__/demo.stories.d.ts +0 -6
  179. package/dist/__stories__/demo.stories.js +0 -94
  180. package/dist/__stories__/demo.stories.js.map +0 -1
  181. package/dist/__stories__/sample_data.d.ts +0 -36
  182. package/dist/__stories__/sample_data.js +0 -1385
  183. package/dist/__stories__/sample_data.js.map +0 -1
  184. package/dist/__stories__/table.stories.d.ts +0 -12
  185. package/dist/__stories__/table.stories.js +0 -272
  186. package/dist/__stories__/table.stories.js.map +0 -1
  187. package/dist/components/table/table_presenter.test.d.ts +0 -1
  188. package/dist/components/table/table_presenter.test.js +0 -125
  189. package/dist/components/table/table_presenter.test.js.map +0 -1
  190. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.d.ts +0 -1
  191. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js +0 -434
  192. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js.map +0 -1
  193. package/dist/components/table_filter_panel/field_filters/field_filter_props.js +0 -2
  194. package/dist/components/table_filter_panel/field_filters/field_filter_props.js.map +0 -1
  195. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js +0 -2
  196. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js.map +0 -1
  197. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.d.ts +0 -1
  198. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js +0 -332
  199. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js.map +0 -1
  200. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.d.ts +0 -1
  201. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js +0 -347
  202. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js.map +0 -1
  203. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.d.ts +0 -1
  204. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js +0 -452
  205. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js.map +0 -1
  206. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.d.ts +0 -1
  207. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js +0 -285
  208. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js.map +0 -1
  209. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.d.ts +0 -1
  210. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js +0 -232
  211. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js.map +0 -1
  212. package/dist/components/table_filter_panel/table_filter_panel.stories.d.ts +0 -6
  213. package/dist/components/table_filter_panel/table_filter_panel.stories.js +0 -25
  214. package/dist/components/table_filter_panel/table_filter_panel.stories.js.map +0 -1
  215. /package/{dist → src}/__stories__/table.module.css +0 -0
  216. /package/{dist → src}/components/cells/cell.module.css +0 -0
  217. /package/{dist → src}/components/table_pager.module.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"number_range_field_filter_presenter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number_range_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class NumberRangeFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _minValue = new Signal<number | null>(null);\n private _maxValue = new Signal<number | null>(null);\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n minValue: this._minValue.broadcast,\n maxValue: this._maxValue.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n getFilterString() {\n const minValue = this._minValue.get();\n const maxValue = this._maxValue.get();\n if (minValue !== null && maxValue !== null) {\n return `(${this._fieldName} >= ${minValue} AND ${this._fieldName} <= ${maxValue})`;\n } else if (minValue !== null) {\n return `${this._fieldName} >= ${minValue}`;\n } else if (maxValue !== null) {\n return `${this._fieldName} <= ${maxValue}`;\n }\n return '';\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setMinValue(minValue: number | null) {\n this._minValue.set(minValue);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setMaxValue(maxValue: number | null) {\n this._maxValue.set(maxValue);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setFieldRegistry(fieldRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldRegistry;\n fieldRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst.findAll(\n (n: Node) => n.name === 'plain-field' && n.value === this._fieldName\n );\n\n if (fieldNodes.length === 0) {\n return;\n }\n\n if (fieldNodes.length === 1) {\n const operatorNode = fieldNodes[0].parent?.children[1];\n const valueNode = fieldNodes[0].parent?.children[2];\n if (operatorNode?.value === '>=' && valueNode != null) {\n this.setMinValue(Number(valueNode?.value));\n } else if (operatorNode?.value === '<=' && valueNode != null) {\n this.setMaxValue(Number(valueNode?.value));\n }\n return;\n }\n\n if (fieldNodes.length === 2) {\n const operatorOneNode = fieldNodes[0].parent?.children[1];\n const operatorTwoNode = fieldNodes[1].parent?.children[1];\n const valueOneNode = fieldNodes[0].parent?.children[2];\n const valueTwoNode = fieldNodes[1].parent?.children[2];\n if (\n operatorOneNode?.value === '>=' &&\n operatorTwoNode?.value === '<=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setMinValue(Number(valueOneNode?.value));\n this.setMaxValue(Number(valueTwoNode?.value));\n } else if (\n operatorOneNode?.value === '<=' &&\n operatorTwoNode?.value === '>=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setMaxValue(Number(valueOneNode?.value));\n this.setMinValue(Number(valueTwoNode?.value));\n }\n }\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._fieldFilterRegistry = null;\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["NumberRangeFieldFilterPresenter","Signal","fieldName","minValue","maxValue","handler","fieldRegistry","filterAst","fieldNodes","n","operatorNode","valueNode","operatorOneNode","operatorTwoNode","valueOneNode","valueTwoNode"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import React from 'react';
2
- import { FieldFilterProps } from "./field_filter_props.js";
1
+ import { FieldFilterProps } from './field_filter_props.js';
3
2
  export type SelectFieldFilterProps = FieldFilterProps & {
4
3
  options: {
5
4
  label: string;
6
5
  value: string | boolean | number;
7
6
  }[];
8
7
  };
9
- export declare function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps): React.JSX.Element;
8
+ export declare function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=select_field_filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IACtD,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,sBAAsB,2CAwCtF"}
@@ -1,25 +1,50 @@
1
- import React from 'react';
2
- import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon';
3
- import { useSignalValue } from '@tcn/state';
4
- import { Button } from '@tcn/ui/actions';
5
- import { Option, Select } from '@tcn/ui/inputs';
6
- import { Box, HStack, VStack } from '@tcn/ui/stacks';
7
- import { Title } from '@tcn/ui/typography';
8
- import { SelectFieldFilterPresenter } from "./select_field_filter_presenter.js";
9
- import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
10
- export function SelectFieldFilter({ fieldName, label, options }) {
11
- const presenter = useFieldFilterStrategy(SelectFieldFilterPresenter, fieldName);
12
- const value = useSignalValue(presenter.broadcasts.value);
13
- const valueLabel = options.find(option => option.value === value)?.label ?? '';
14
- return (React.createElement(VStack, { gap: "4px" },
15
- React.createElement(Box, { width: "flex" },
16
- React.createElement(Title, { size: "md" }, label)),
17
- React.createElement(HStack, null,
18
- React.createElement(Select, { value: valueLabel, onChange: value => {
19
- const realValue = options.find(option => option.label === value)?.value;
20
- presenter.setValue(realValue ?? null);
21
- }, width: "flex" }, options.map(option => (React.createElement(Option, { key: option.value.toString(), value: option.label, label: option.label }, option.label)))),
22
- React.createElement(Button, { onClick: () => presenter.setValue(null), hierarchy: "tertiary", disabled: value == null },
23
- React.createElement(CrossCircleIcon, null)))));
1
+ import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
+ import { CrossCircleIcon as d } from "@tcn/icons/cross_circle_icon.js";
3
+ import { useSignalValue as s } from "@tcn/state";
4
+ import { Button as f } from "@tcn/ui/actions";
5
+ import { Select as h, Option as p } from "@tcn/ui/inputs";
6
+ import { VStack as b, Box as v, HStack as S } from "@tcn/ui/stacks";
7
+ import { Title as x } from "@tcn/ui/typography";
8
+ import { SelectFieldFilterPresenter as F } from "./select_field_filter_presenter.js";
9
+ import { useFieldFilterStrategy as g } from "./use_field_filter_strategy.js";
10
+ function I({ fieldName: n, label: o, options: r }) {
11
+ const t = g(F, n), a = s(t.broadcasts.value), c = r.find((e) => e.value === a)?.label ?? "";
12
+ return /* @__PURE__ */ i(b, { gap: "4px", children: [
13
+ /* @__PURE__ */ l(v, { width: "flex", children: /* @__PURE__ */ l(x, { size: "md", children: o }) }),
14
+ /* @__PURE__ */ i(S, { children: [
15
+ /* @__PURE__ */ l(
16
+ h,
17
+ {
18
+ value: c,
19
+ onChange: (e) => {
20
+ const m = r.find((u) => u.label === e)?.value;
21
+ t.setValue(m ?? null);
22
+ },
23
+ width: "flex",
24
+ children: r.map((e) => /* @__PURE__ */ l(
25
+ p,
26
+ {
27
+ value: e.label,
28
+ label: e.label,
29
+ children: e.label
30
+ },
31
+ e.value.toString()
32
+ ))
33
+ }
34
+ ),
35
+ /* @__PURE__ */ l(
36
+ f,
37
+ {
38
+ onClick: () => t.setValue(null),
39
+ hierarchy: "tertiary",
40
+ disabled: a == null,
41
+ children: /* @__PURE__ */ l(d, {})
42
+ }
43
+ )
44
+ ] })
45
+ ] });
24
46
  }
25
- //# sourceMappingURL=select_field_filter.js.map
47
+ export {
48
+ I as SelectFieldFilter
49
+ };
50
+ //# sourceMappingURL=select_field_filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select_field_filter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,2CAAyF;AAC9H,OAAO,EAAE,sBAAsB,EAAE,uCAAqF;AAMtH,MAAM,UAAU,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAA0B;IACrF,MAAM,SAAS,GAAG,sBAAsB,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAE/E,OAAO,CACL,oBAAC,MAAM,IAAC,GAAG,EAAC,KAAK;QACf,oBAAC,GAAG,IAAC,KAAK,EAAC,MAAM;YACf,oBAAC,KAAK,IAAC,IAAI,EAAC,IAAI,IAAE,KAAK,CAAS,CAC5B;QACN,oBAAC,MAAM;YACL,oBAAC,MAAM,IACL,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAChB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC;oBACxE,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;gBACxC,CAAC,EACD,KAAK,EAAC,MAAM,IAEX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACrB,oBAAC,MAAM,IACL,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAC5B,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAElB,MAAM,CAAC,KAAK,CACN,CACV,CAAC,CACK;YACT,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvC,SAAS,EAAC,UAAU,EACpB,QAAQ,EAAE,KAAK,IAAI,IAAI;gBAEvB,oBAAC,eAAe,OAAG,CACZ,CACF,CACF,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"select_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter.tsx"],"sourcesContent":["import React from 'react';\n\nimport { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { Option, Select } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { Title } from '@tcn/ui/typography';\nimport { FieldFilterProps } from './field_filter_props.js';\nimport { SelectFieldFilterPresenter } from './select_field_filter_presenter.js';\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\n\nexport type SelectFieldFilterProps = FieldFilterProps & {\n options: { label: string; value: string | boolean | number }[];\n};\n\nexport function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps) {\n const presenter = useFieldFilterStrategy(SelectFieldFilterPresenter, fieldName);\n\n const value = useSignalValue(presenter.broadcasts.value);\n const valueLabel = options.find(option => option.value === value)?.label ?? '';\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack>\n <Select\n value={valueLabel}\n onChange={value => {\n const realValue = options.find(option => option.label === value)?.value;\n presenter.setValue(realValue ?? null);\n }}\n width=\"flex\"\n >\n {options.map(option => (\n <Option\n key={option.value.toString()}\n value={option.label}\n label={option.label}\n >\n {option.label}\n </Option>\n ))}\n </Select>\n <Button\n onClick={() => presenter.setValue(null)}\n hierarchy=\"tertiary\"\n disabled={value == null}\n >\n <CrossCircleIcon />\n </Button>\n </HStack>\n </VStack>\n );\n}\n"],"names":["SelectFieldFilter","fieldName","label","options","presenter","useFieldFilterStrategy","SelectFieldFilterPresenter","value","useSignalValue","valueLabel","option","jsxs","VStack","jsx","Box","Title","HStack","Select","realValue","Option","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAgBO,SAASA,EAAkB,EAAE,WAAAC,GAAW,OAAAC,GAAO,SAAAC,KAAmC;AACvF,QAAMC,IAAYC,EAAuBC,GAA4BL,CAAS,GAExEM,IAAQC,EAAeJ,EAAU,WAAW,KAAK,GACjDK,IAAaN,EAAQ,KAAK,CAAAO,MAAUA,EAAO,UAAUH,CAAK,GAAG,SAAS;AAE5E,SACE,gBAAAI,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,sBACCC,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOR;AAAA,UACP,UAAU,CAAAF,MAAS;AACjB,kBAAMW,IAAYf,EAAQ,KAAK,OAAUO,EAAO,UAAUH,CAAK,GAAG;AAClE,YAAAH,EAAU,SAASc,KAAa,IAAI;AAAA,UACtC;AAAA,UACA,OAAM;AAAA,UAEL,UAAAf,EAAQ,IAAI,CAAAO,MACX,gBAAAG;AAAA,YAACM;AAAA,YAAA;AAAA,cAEC,OAAOT,EAAO;AAAA,cACd,OAAOA,EAAO;AAAA,cAEb,UAAAA,EAAO;AAAA,YAAA;AAAA,YAJHA,EAAO,MAAM,SAAA;AAAA,UAAS,CAM9B;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAG;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMhB,EAAU,SAAS,IAAI;AAAA,UACtC,WAAU;AAAA,UACV,UAAUG,KAAS;AAAA,UAEnB,4BAACc,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { Node } from 'clarity-pattern-parser';
2
- import { FieldFilterRegistry, FieldFilterStrategy } from "./field_filter_strategy.js";
2
+ import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
3
3
  export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
4
4
  private _fieldName;
5
5
  private _value;
@@ -8,7 +8,7 @@ export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
8
8
  private _broadcasts;
9
9
  constructor(fieldName: string);
10
10
  get broadcasts(): {
11
- value: import("@tcn/state").IBroadcast<string | number | boolean | null>;
11
+ value: import('@tcn/state').IBroadcast<string | number | boolean | null>;
12
12
  };
13
13
  setValue(value: string | boolean | number | null): void;
14
14
  onChange(handler: () => void): () => void;
@@ -17,3 +17,4 @@ export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
17
17
  setFilterState(filterAst: Node): void;
18
18
  dispose(): void;
19
19
  }
20
+ //# sourceMappingURL=select_field_filter_presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAEjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,IAAI,UAAU;;MAEb;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IAKhD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB;IAKnD,eAAe;IAWf,cAAc,CAAC,SAAS,EAAE,IAAI;IAmB9B,OAAO;CAIR"}
@@ -1,55 +1,51 @@
1
- import { Signal } from '@tcn/state';
2
- export class SelectFieldFilterPresenter {
3
- _fieldName;
4
- _value = new Signal(null);
5
- _fieldFilterRegistry = null;
6
- _onChangeHandlers = new Set();
7
- _broadcasts = {
8
- value: this._value.broadcast,
1
+ import { Signal as a } from "@tcn/state";
2
+ class u {
3
+ _fieldName;
4
+ _value = new a(null);
5
+ _fieldFilterRegistry = null;
6
+ _onChangeHandlers = /* @__PURE__ */ new Set();
7
+ _broadcasts = {
8
+ value: this._value.broadcast
9
+ };
10
+ constructor(e) {
11
+ this._fieldName = e;
12
+ }
13
+ get broadcasts() {
14
+ return this._broadcasts;
15
+ }
16
+ setValue(e) {
17
+ this._value.set(e), this._onChangeHandlers.forEach((l) => l());
18
+ }
19
+ onChange(e) {
20
+ return this._onChangeHandlers.add(e), () => {
21
+ this._onChangeHandlers.delete(e);
9
22
  };
10
- constructor(fieldName) {
11
- this._fieldName = fieldName;
12
- }
13
- get broadcasts() {
14
- return this._broadcasts;
15
- }
16
- setValue(value) {
17
- this._value.set(value);
18
- this._onChangeHandlers.forEach(handler => handler());
19
- }
20
- onChange(handler) {
21
- this._onChangeHandlers.add(handler);
22
- return () => {
23
- this._onChangeHandlers.delete(handler);
24
- };
25
- }
26
- setFieldRegistry(fieldRegistry) {
27
- this._fieldFilterRegistry = fieldRegistry;
28
- fieldRegistry.registerFieldFilter(this._fieldName, this);
29
- }
30
- getFilterString() {
31
- if (this._value.get() === null) {
32
- return '';
33
- }
34
- const wrappedValue = typeof this._value.get() === 'string'
35
- ? `"${this._value.get()}"`
36
- : this._value.get();
37
- return `${this._fieldName} = ${wrappedValue}`;
38
- }
39
- setFilterState(filterAst) {
40
- const fieldNodes = filterAst.findAll(n => n.name === 'plain-field' && n.value === this._fieldName);
41
- const fieldNode = fieldNodes.filter(n => n.parent !== null && n.parent.name === 'infix-expression')[0];
42
- if (fieldNode == null) {
43
- return;
44
- }
45
- const parent = fieldNode.parent;
46
- const valueNode = parent.children[2];
47
- const value = valueNode.value;
48
- this._value.set(value.slice(1, -1));
49
- }
50
- dispose() {
51
- this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
52
- this._onChangeHandlers.clear();
53
- }
23
+ }
24
+ setFieldRegistry(e) {
25
+ this._fieldFilterRegistry = e, e.registerFieldFilter(this._fieldName, this);
26
+ }
27
+ getFilterString() {
28
+ if (this._value.get() === null)
29
+ return "";
30
+ const e = typeof this._value.get() == "string" ? `"${this._value.get()}"` : this._value.get();
31
+ return `${this._fieldName} = ${e}`;
32
+ }
33
+ setFilterState(e) {
34
+ const i = e.findAll(
35
+ (t) => t.name === "plain-field" && t.value === this._fieldName
36
+ ).filter(
37
+ (t) => t.parent !== null && t.parent.name === "infix-expression"
38
+ )[0];
39
+ if (i == null)
40
+ return;
41
+ const s = i.parent.children[2].value;
42
+ this._value.set(s.slice(1, -1));
43
+ }
44
+ dispose() {
45
+ this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._onChangeHandlers.clear();
46
+ }
54
47
  }
55
- //# sourceMappingURL=select_field_filter_presenter.js.map
48
+ export {
49
+ u as SelectFieldFilterPresenter
50
+ };
51
+ //# sourceMappingURL=select_field_filter_presenter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select_field_filter_presenter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,0BAA0B;IAC7B,UAAU,CAAS;IACnB,MAAM,GAAG,IAAI,MAAM,CAAmC,IAAI,CAAC,CAAC;IAC5D,oBAAoB,GAA+B,IAAI,CAAC;IACxD,iBAAiB,GAAG,IAAI,GAAG,EAAc,CAAC;IAE1C,WAAW,GAAG;QACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;KAC7B,CAAC;IAEF,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,KAAuC;QAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,QAAQ,CAAC,OAAmB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,aAAkC;QACjD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC1C,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;YAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,GAAG,IAAI,CAAC,UAAU,MAAM,YAAY,EAAE,CAAC;IAChD,CAAC;IAED,cAAc,CAAC,SAAe;QAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAC7D,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAC/D,CAAC,CAAC,CAAC,CAAC;QAEL,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAc,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAS,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAe,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"select_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class SelectFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _value = new Signal<string | boolean | number | null>(null);\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n value: this._value.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n setValue(value: string | boolean | number | null) {\n this._value.set(value);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setFieldRegistry(fieldRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldRegistry;\n fieldRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n getFilterString() {\n if (this._value.get() === null) {\n return '';\n }\n const wrappedValue =\n typeof this._value.get() === 'string'\n ? `\"${this._value.get()}\"`\n : this._value.get();\n return `${this._fieldName} = ${wrappedValue}`;\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst.findAll(\n (n: Node) => n.name === 'plain-field' && n.value === this._fieldName\n );\n\n const fieldNode = fieldNodes.filter(\n (n: Node) => n.parent !== null && n.parent.name === 'infix-expression'\n )[0];\n\n if (fieldNode == null) {\n return;\n }\n\n const parent = fieldNode.parent as Node;\n const valueNode = parent.children[2] as Node;\n const value = valueNode.value as string;\n this._value.set(value.slice(1, -1));\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["SelectFieldFilterPresenter","Signal","fieldName","value","handler","fieldRegistry","wrappedValue","filterAst","fieldNode","n"],"mappings":";AAIO,MAAMA,EAA0D;AAAA,EAC7D;AAAA,EACA,SAAS,IAAIC,EAAyC,IAAI;AAAA,EAC1D,uBAAmD;AAAA,EACnD,wCAAwB,IAAA;AAAA,EAExB,cAAc;AAAA,IACpB,OAAO,KAAK,OAAO;AAAA,EAAA;AAAA,EAGrB,YAAYC,GAAmB;AAC7B,SAAK,aAAaA;AAAA,EACpB;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAASC,GAAyC;AAChD,SAAK,OAAO,IAAIA,CAAK,GACrB,KAAK,kBAAkB,QAAQ,CAAAC,MAAWA,EAAA,CAAS;AAAA,EACrD;AAAA,EAEA,SAASA,GAAqB;AAC5B,gBAAK,kBAAkB,IAAIA,CAAO,GAC3B,MAAM;AACX,WAAK,kBAAkB,OAAOA,CAAO;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,iBAAiBC,GAAoC;AACnD,SAAK,uBAAuBA,GAC5BA,EAAc,oBAAoB,KAAK,YAAY,IAAI;AAAA,EACzD;AAAA,EAEA,kBAAkB;AAChB,QAAI,KAAK,OAAO,IAAA,MAAU;AACxB,aAAO;AAET,UAAMC,IACJ,OAAO,KAAK,OAAO,SAAU,WACzB,IAAI,KAAK,OAAO,KAAK,MACrB,KAAK,OAAO,IAAA;AAClB,WAAO,GAAG,KAAK,UAAU,MAAMA,CAAY;AAAA,EAC7C;AAAA,EAEA,eAAeC,GAAiB;AAK9B,UAAMC,IAJaD,EAAU;AAAA,MAC3B,CAACE,MAAYA,EAAE,SAAS,iBAAiBA,EAAE,UAAU,KAAK;AAAA,IAAA,EAG/B;AAAA,MAC3B,CAACA,MAAYA,EAAE,WAAW,QAAQA,EAAE,OAAO,SAAS;AAAA,IAAA,EACpD,CAAC;AAEH,QAAID,KAAa;AACf;AAKF,UAAML,IAFSK,EAAU,OACA,SAAS,CAAC,EACX;AACxB,SAAK,OAAO,IAAIL,EAAM,MAAM,GAAG,EAAE,CAAC;AAAA,EACpC;AAAA,EAEA,UAAU;AACR,SAAK,sBAAsB,sBAAsB,KAAK,UAAU,GAChE,KAAK,kBAAkB,MAAA;AAAA,EACzB;AACF;"}
@@ -1,3 +1,3 @@
1
- import React from 'react';
2
- import { FieldFilterProps } from "./field_filter_props.js";
3
- export declare function StringFieldFilter({ fieldName, label, operators }: FieldFilterProps): React.JSX.Element;
1
+ import { FieldFilterProps } from './field_filter_props.js';
2
+ export declare function StringFieldFilter({ fieldName, label, operators }: FieldFilterProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=string_field_filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkB3D,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CA4ClF"}
@@ -1,35 +1,64 @@
1
- import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon';
2
- import { useSignalValue } from '@tcn/state';
3
- import { Button } from '@tcn/ui/actions';
4
- import { Input, Option, Select } from '@tcn/ui/inputs';
5
- import { Box, HStack, VStack } from '@tcn/ui/stacks';
6
- import { Title } from '@tcn/ui/typography';
7
- import React from 'react';
8
- import { StringFieldFilterPresenter } from "./string_field_filter_presenter.js";
9
- import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
10
- const allOperators = ['is', 'isNot', 'has'];
11
- const operatorSymbols = {
12
- is: '=',
13
- isNot: '!=',
14
- has: ':',
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { CrossCircleIcon as m } from "@tcn/icons/cross_circle_icon.js";
3
+ import { useSignalValue as l } from "@tcn/state";
4
+ import { Button as d } from "@tcn/ui/actions";
5
+ import { Select as h, Option as u, Input as f } from "@tcn/ui/inputs";
6
+ import { VStack as x, Box as b, HStack as S } from "@tcn/ui/stacks";
7
+ import { Title as g } from "@tcn/ui/typography";
8
+ import { StringFieldFilterPresenter as v } from "./string_field_filter_presenter.js";
9
+ import { useFieldFilterStrategy as F } from "./use_field_filter_strategy.js";
10
+ const y = ["is", "isNot", "has"], C = {
11
+ is: "=",
12
+ isNot: "!=",
13
+ has: ":"
14
+ }, s = {
15
+ is: "is",
16
+ isNot: "is not",
17
+ has: "has"
15
18
  };
16
- const operatorLabels = {
17
- is: 'is',
18
- isNot: 'is not',
19
- has: 'has',
20
- };
21
- export function StringFieldFilter({ fieldName, label, operators }) {
22
- const presenter = useFieldFilterStrategy(StringFieldFilterPresenter, fieldName);
23
- const value = useSignalValue(presenter.broadcasts.value);
24
- const operator = useSignalValue(presenter.broadcasts.operator);
25
- const availableOperators = operators || allOperators;
26
- return (React.createElement(VStack, { gap: "4px" },
27
- React.createElement(Box, { width: "flex" },
28
- React.createElement(Title, { size: "md" }, label)),
29
- React.createElement(HStack, { width: "flex" },
30
- React.createElement(Select, { value: operator, onChange: value => presenter.setOperator(value), width: "65px" }, availableOperators.map(operator => (React.createElement(Option, { key: operator, value: operatorSymbols[operator], label: operatorLabels[operator] }, operatorLabels[operator])))),
31
- React.createElement(Input, { type: "text", value: value ?? '', onChange: value => presenter.setValue(value) }),
32
- React.createElement(Button, { onClick: () => presenter.setValue(null), hierarchy: "tertiary", disabled: value == null },
33
- React.createElement(CrossCircleIcon, null)))));
19
+ function L({ fieldName: a, label: n, operators: c }) {
20
+ const r = F(v, a), o = l(r.broadcasts.value), p = l(r.broadcasts.operator);
21
+ return /* @__PURE__ */ i(x, { gap: "4px", children: [
22
+ /* @__PURE__ */ t(b, { width: "flex", children: /* @__PURE__ */ t(g, { size: "md", children: n }) }),
23
+ /* @__PURE__ */ i(S, { width: "flex", children: [
24
+ /* @__PURE__ */ t(
25
+ h,
26
+ {
27
+ value: p,
28
+ onChange: (e) => r.setOperator(e),
29
+ width: "65px",
30
+ children: (c || y).map((e) => /* @__PURE__ */ t(
31
+ u,
32
+ {
33
+ value: C[e],
34
+ label: s[e],
35
+ children: s[e]
36
+ },
37
+ e
38
+ ))
39
+ }
40
+ ),
41
+ /* @__PURE__ */ t(
42
+ f,
43
+ {
44
+ type: "text",
45
+ value: o ?? "",
46
+ onChange: (e) => r.setValue(e)
47
+ }
48
+ ),
49
+ /* @__PURE__ */ t(
50
+ d,
51
+ {
52
+ onClick: () => r.setValue(null),
53
+ hierarchy: "tertiary",
54
+ disabled: o == null,
55
+ children: /* @__PURE__ */ t(m, {})
56
+ }
57
+ )
58
+ ] })
59
+ ] });
34
60
  }
35
- //# sourceMappingURL=string_field_filter.js.map
61
+ export {
62
+ L as StringFieldFilter
63
+ };
64
+ //# sourceMappingURL=string_field_filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string_field_filter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,0BAA0B,EAAE,2CAAyF;AAG9H,OAAO,EAAE,sBAAsB,EAAE,uCAAqF;AAEtH,MAAM,YAAY,GAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxE,MAAM,eAAe,GAA2C;IAC9D,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,GAAG;CACT,CAAC;AACF,MAAM,cAAc,GAA2C;IAC7D,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAoB;IACjF,MAAM,SAAS,GAAG,sBAAsB,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GAAG,SAAS,IAAI,YAAY,CAAC;IAErD,OAAO,CACL,oBAAC,MAAM,IAAC,GAAG,EAAC,KAAK;QACf,oBAAC,GAAG,IAAC,KAAK,EAAC,MAAM;YACf,oBAAC,KAAK,IAAC,IAAI,EAAC,IAAI,IAAE,KAAK,CAAS,CAC5B;QACN,oBAAC,MAAM,IAAC,KAAK,EAAC,MAAM;YAClB,oBAAC,MAAM,IACL,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAA2B,CAAC,EACrE,KAAK,EAAC,MAAM,IAEX,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClC,oBAAC,MAAM,IACL,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,EAChC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,IAE9B,cAAc,CAAC,QAAQ,CAAC,CAClB,CACV,CAAC,CACK;YACT,oBAAC,KAAK,IACJ,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAC5C;YACF,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvC,SAAS,EAAC,UAAU,EACpB,QAAQ,EAAE,KAAK,IAAI,IAAI;gBAEvB,oBAAC,eAAe,OAAG,CACZ,CACF,CACF,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"string_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter.tsx"],"sourcesContent":["import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { Input, Option, Select } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { Title } from '@tcn/ui/typography';\nimport React from 'react';\nimport { FieldFilterProps } from './field_filter_props.js';\nimport { StringFieldFilterPresenter } from './string_field_filter_presenter.js';\nimport { ComparisonOperator } from '../types.js';\n\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\n\nconst allOperators: ('is' | 'isNot' | 'has')[] = ['is', 'isNot', 'has'];\nconst operatorSymbols: Record<'is' | 'isNot' | 'has', string> = {\n is: '=',\n isNot: '!=',\n has: ':',\n};\nconst operatorLabels: Record<'is' | 'isNot' | 'has', string> = {\n is: 'is',\n isNot: 'is not',\n has: 'has',\n};\n\nexport function StringFieldFilter({ fieldName, label, operators }: FieldFilterProps) {\n const presenter = useFieldFilterStrategy(StringFieldFilterPresenter, fieldName);\n\n const value = useSignalValue(presenter.broadcasts.value);\n const operator = useSignalValue(presenter.broadcasts.operator);\n\n const availableOperators = operators || allOperators;\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack width=\"flex\">\n <Select\n value={operator}\n onChange={value => presenter.setOperator(value as ComparisonOperator)}\n width=\"65px\"\n >\n {availableOperators.map(operator => (\n <Option\n key={operator}\n value={operatorSymbols[operator]}\n label={operatorLabels[operator]}\n >\n {operatorLabels[operator]}\n </Option>\n ))}\n </Select>\n <Input\n type=\"text\"\n value={value ?? ''}\n onChange={value => presenter.setValue(value)}\n />\n <Button\n onClick={() => presenter.setValue(null)}\n hierarchy=\"tertiary\"\n disabled={value == null}\n >\n <CrossCircleIcon />\n </Button>\n </HStack>\n </VStack>\n );\n}\n"],"names":["allOperators","operatorSymbols","operatorLabels","StringFieldFilter","fieldName","label","operators","presenter","useFieldFilterStrategy","StringFieldFilterPresenter","value","useSignalValue","operator","jsxs","VStack","jsx","Box","Title","HStack","Select","Option","Input","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAaA,MAAMA,IAA2C,CAAC,MAAM,SAAS,KAAK,GAChEC,IAA0D;AAAA,EAC9D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AACP,GACMC,IAAyD;AAAA,EAC7D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AACP;AAEO,SAASC,EAAkB,EAAE,WAAAC,GAAW,OAAAC,GAAO,WAAAC,KAA+B;AACnF,QAAMC,IAAYC,EAAuBC,GAA4BL,CAAS,GAExEM,IAAQC,EAAeJ,EAAU,WAAW,KAAK,GACjDK,IAAWD,EAAeJ,EAAU,WAAW,QAAQ;AAI7D,SACE,gBAAAM,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,IACA,gBAAAJ,EAACK,GAAA,EAAO,OAAM,QACZ,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOP;AAAA,UACP,UAAU,CAAAF,MAASH,EAAU,YAAYG,CAA2B;AAAA,UACpE,OAAM;AAAA,UAEL,WAbkBJ,KAAaN,GAaZ,IAAI,CAAAY,MACtB,gBAAAG;AAAA,YAACK;AAAA,YAAA;AAAA,cAEC,OAAOnB,EAAgBW,CAAQ;AAAA,cAC/B,OAAOV,EAAeU,CAAQ;AAAA,cAE7B,YAAeA,CAAQ;AAAA,YAAA;AAAA,YAJnBA;AAAAA,UAAA,CAMR;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAG;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAOX,KAAS;AAAA,UAChB,UAAU,CAAAA,MAASH,EAAU,SAASG,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAE7C,gBAAAK;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMf,EAAU,SAAS,IAAI;AAAA,UACtC,WAAU;AAAA,UACV,UAAUG,KAAS;AAAA,UAEnB,4BAACa,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,6 +1,6 @@
1
1
  import { Node } from 'clarity-pattern-parser';
2
- import { FieldFilterRegistry, FieldFilterStrategy } from "./field_filter_strategy.js";
3
- import { ComparisonOperator } from "../types.js";
2
+ import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
3
+ import { ComparisonOperator } from '../types.js';
4
4
  export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
5
5
  private _fieldName;
6
6
  private _value;
@@ -10,8 +10,8 @@ export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
10
10
  private _broadcasts;
11
11
  constructor(fieldName: string);
12
12
  get broadcasts(): {
13
- value: import("@tcn/state").IBroadcast<string | null>;
14
- operator: import("@tcn/state").IBroadcast<ComparisonOperator>;
13
+ value: import('@tcn/state').IBroadcast<string | null>;
14
+ operator: import('@tcn/state').IBroadcast<ComparisonOperator>;
15
15
  };
16
16
  onChange(handler: () => void): () => void;
17
17
  setFieldRegistry(fieldRegistry: FieldFilterRegistry): void;
@@ -21,3 +21,4 @@ export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
21
21
  setFilterState(filterAst: Node): void;
22
22
  dispose(): void;
23
23
  }
24
+ //# sourceMappingURL=string_field_filter_presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAGjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,IAAI,UAAU;;;MAEb;IAED,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB;IAKnD,eAAe;IAOf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,WAAW,CAAC,QAAQ,EAAE,kBAAkB;IAKxC,cAAc,CAAC,SAAS,EAAE,IAAI;IAqB9B,OAAO;CAIR"}
@@ -1,61 +1,56 @@
1
- import { Signal } from '@tcn/state';
2
- export class StringFieldFilterPresenter {
3
- _fieldName;
4
- _value = new Signal(null);
5
- _operator = new Signal(':');
6
- _fieldFilterRegistry = null;
7
- _onChangeHandlers = new Set();
8
- _broadcasts = {
9
- value: this._value.broadcast,
10
- operator: this._operator.broadcast,
1
+ import { Signal as i } from "@tcn/state";
2
+ class u {
3
+ _fieldName;
4
+ _value = new i(null);
5
+ _operator = new i(":");
6
+ _fieldFilterRegistry = null;
7
+ _onChangeHandlers = /* @__PURE__ */ new Set();
8
+ _broadcasts = {
9
+ value: this._value.broadcast,
10
+ operator: this._operator.broadcast
11
+ };
12
+ constructor(e) {
13
+ this._fieldName = e;
14
+ }
15
+ get broadcasts() {
16
+ return this._broadcasts;
17
+ }
18
+ onChange(e) {
19
+ return this._onChangeHandlers.add(e), () => {
20
+ this._onChangeHandlers.delete(e);
11
21
  };
12
- constructor(fieldName) {
13
- this._fieldName = fieldName;
14
- }
15
- get broadcasts() {
16
- return this._broadcasts;
17
- }
18
- onChange(handler) {
19
- this._onChangeHandlers.add(handler);
20
- return () => {
21
- this._onChangeHandlers.delete(handler);
22
- };
23
- }
24
- setFieldRegistry(fieldRegistry) {
25
- this._fieldFilterRegistry = fieldRegistry;
26
- fieldRegistry.registerFieldFilter(this._fieldName, this);
27
- }
28
- getFilterString() {
29
- if (this._value.get() === null) {
30
- return '';
31
- }
32
- return `${this._fieldName} ${this._operator.get()} "${this._value.get()}"`;
33
- }
34
- setValue(value) {
35
- const escapedValue = value?.replace(/"/g, '\\"') ?? null;
36
- this._value.set(escapedValue === '' ? null : escapedValue);
37
- this._onChangeHandlers.forEach(handler => handler());
38
- }
39
- setOperator(operator) {
40
- this._operator.set(operator);
41
- this._onChangeHandlers.forEach(handler => handler());
42
- }
43
- setFilterState(filterAst) {
44
- const fieldNodes = filterAst.findAll(n => n.name === 'plain-field' && n.value === this._fieldName);
45
- const fieldNode = fieldNodes.filter(n => n.parent !== null && n.parent.name === 'infix-expression')[0];
46
- if (fieldNode == null) {
47
- return;
48
- }
49
- const parent = fieldNode.parent;
50
- const operatorNode = parent.children[1];
51
- const valueNode = parent.children[2];
52
- this._operator.set(operatorNode.value);
53
- const value = valueNode.value;
54
- this._value.set(value.slice(1, -1));
55
- }
56
- dispose() {
57
- this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
58
- this._onChangeHandlers.clear();
59
- }
22
+ }
23
+ setFieldRegistry(e) {
24
+ this._fieldFilterRegistry = e, e.registerFieldFilter(this._fieldName, this);
25
+ }
26
+ getFilterString() {
27
+ return this._value.get() === null ? "" : `${this._fieldName} ${this._operator.get()} "${this._value.get()}"`;
28
+ }
29
+ setValue(e) {
30
+ const t = e?.replace(/"/g, '\\"') ?? null;
31
+ this._value.set(t === "" ? null : t), this._onChangeHandlers.forEach((l) => l());
32
+ }
33
+ setOperator(e) {
34
+ this._operator.set(e), this._onChangeHandlers.forEach((t) => t());
35
+ }
36
+ setFilterState(e) {
37
+ const l = e.findAll(
38
+ (r) => r.name === "plain-field" && r.value === this._fieldName
39
+ ).filter(
40
+ (r) => r.parent !== null && r.parent.name === "infix-expression"
41
+ )[0];
42
+ if (l == null)
43
+ return;
44
+ const s = l.parent, a = s.children[1], n = s.children[2];
45
+ this._operator.set(a.value);
46
+ const o = n.value;
47
+ this._value.set(o.slice(1, -1));
48
+ }
49
+ dispose() {
50
+ this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._onChangeHandlers.clear();
51
+ }
60
52
  }
61
- //# sourceMappingURL=string_field_filter_presenter.js.map
53
+ export {
54
+ u as StringFieldFilterPresenter
55
+ };
56
+ //# sourceMappingURL=string_field_filter_presenter.js.map