@vuu-ui/vuu-filters 0.6.13-debug → 0.6.14-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -141,26 +141,16 @@ module.exports = __toCommonJS(src_exports);
141
141
  var import_core = require("@salt-ds/core");
142
142
 
143
143
  // src/filter-input/useCodeMirrorEditor.ts
144
- var import_vuu_codemirror7 = require("@vuu-ui/vuu-codemirror");
144
+ var import_vuu_codemirror6 = require("@vuu-ui/vuu-codemirror");
145
145
  var import_classnames = __toESM(require_classnames(), 1);
146
146
  var import_react2 = require("react");
147
147
 
148
- // src/filter-input/codemirror-basic-setup.ts
149
- var import_vuu_codemirror = require("@vuu-ui/vuu-codemirror");
150
- var minimalSetup = (() => [
151
- (0, import_vuu_codemirror.highlightSpecialChars)(),
152
- (0, import_vuu_codemirror.history)(),
153
- (0, import_vuu_codemirror.drawSelection)(),
154
- (0, import_vuu_codemirror.syntaxHighlighting)(import_vuu_codemirror.defaultHighlightStyle, { fallback: true }),
155
- import_vuu_codemirror.keymap.of([...import_vuu_codemirror.defaultKeymap, ...import_vuu_codemirror.historyKeymap])
156
- ])();
157
-
158
148
  // src/filter-input/filter-language-parser/FilterLanguage.ts
159
- var import_vuu_codemirror3 = require("@vuu-ui/vuu-codemirror");
149
+ var import_vuu_codemirror2 = require("@vuu-ui/vuu-codemirror");
160
150
 
161
151
  // src/filter-input/filter-language-parser/generated/filter-parser.js
162
- var import_vuu_codemirror2 = require("@vuu-ui/vuu-codemirror");
163
- var parser = import_vuu_codemirror2.LRParser.deserialize({
152
+ var import_vuu_codemirror = require("@vuu-ui/vuu-codemirror");
153
+ var parser = import_vuu_codemirror.LRParser.deserialize({
164
154
  version: 14,
165
155
  states: "%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v",
166
156
  stateData: "#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O",
@@ -176,21 +166,21 @@ var parser = import_vuu_codemirror2.LRParser.deserialize({
176
166
  });
177
167
 
178
168
  // src/filter-input/filter-language-parser/FilterLanguage.ts
179
- var filterLanguage = import_vuu_codemirror3.LRLanguage.define({
169
+ var filterLanguage = import_vuu_codemirror2.LRLanguage.define({
180
170
  name: "VuuFilterQuery",
181
171
  parser: parser.configure({
182
172
  props: [
183
- (0, import_vuu_codemirror3.styleTags)({
184
- Identifier: import_vuu_codemirror3.tags.variableName,
185
- String: import_vuu_codemirror3.tags.string,
186
- Or: import_vuu_codemirror3.tags.emphasis,
187
- Operator: import_vuu_codemirror3.tags.operator
173
+ (0, import_vuu_codemirror2.styleTags)({
174
+ Identifier: import_vuu_codemirror2.tags.variableName,
175
+ String: import_vuu_codemirror2.tags.string,
176
+ Or: import_vuu_codemirror2.tags.emphasis,
177
+ Operator: import_vuu_codemirror2.tags.operator
188
178
  })
189
179
  ]
190
180
  })
191
181
  });
192
182
  var filterLanguageSupport = () => {
193
- return new import_vuu_codemirror3.LanguageSupport(filterLanguage);
183
+ return new import_vuu_codemirror2.LanguageSupport(filterLanguage);
194
184
  };
195
185
 
196
186
  // src/filter-input/filter-language-parser/FilterTreeWalker.ts
@@ -309,16 +299,16 @@ var walkTree = (tree, source) => {
309
299
  };
310
300
 
311
301
  // src/filter-input/highlighting.ts
312
- var import_vuu_codemirror4 = require("@vuu-ui/vuu-codemirror");
313
- var myHighlightStyle = import_vuu_codemirror4.HighlightStyle.define([
314
- { tag: import_vuu_codemirror4.tags.variableName, color: "var(--vuuFilterEditor-variableColor)" },
315
- { tag: import_vuu_codemirror4.tags.comment, color: "green", fontStyle: "italic" }
302
+ var import_vuu_codemirror3 = require("@vuu-ui/vuu-codemirror");
303
+ var myHighlightStyle = import_vuu_codemirror3.HighlightStyle.define([
304
+ { tag: import_vuu_codemirror3.tags.variableName, color: "var(--vuuFilterEditor-variableColor)" },
305
+ { tag: import_vuu_codemirror3.tags.comment, color: "green", fontStyle: "italic" }
316
306
  ]);
317
- var vuuHighlighting = (0, import_vuu_codemirror4.syntaxHighlighting)(myHighlightStyle);
307
+ var vuuHighlighting = (0, import_vuu_codemirror3.syntaxHighlighting)(myHighlightStyle);
318
308
 
319
309
  // src/filter-input/theme.ts
320
- var import_vuu_codemirror5 = require("@vuu-ui/vuu-codemirror");
321
- var vuuTheme = import_vuu_codemirror5.EditorView.theme(
310
+ var import_vuu_codemirror4 = require("@vuu-ui/vuu-codemirror");
311
+ var vuuTheme = import_vuu_codemirror4.EditorView.theme(
322
312
  {
323
313
  "&": {
324
314
  color: "var(--vuuFilterEditor-color)",
@@ -391,36 +381,21 @@ var vuuTheme = import_vuu_codemirror5.EditorView.theme(
391
381
  );
392
382
 
393
383
  // src/filter-input/useFilterAutoComplete.ts
394
- var import_vuu_codemirror6 = require("@vuu-ui/vuu-codemirror");
384
+ var import_vuu_codemirror5 = require("@vuu-ui/vuu-codemirror");
395
385
  var import_react = require("react");
396
- var getValue = (node, state) => state.doc.sliceString(node.from, node.to);
397
- var getColumnName = (node, state) => {
398
- var _a;
399
- if (((_a = node.firstChild) == null ? void 0 : _a.name) === "Column") {
400
- return getValue(node.firstChild, state);
401
- } else {
402
- let maybeColumnNode = node.prevSibling || node.parent;
403
- while (maybeColumnNode && maybeColumnNode.name !== "Column") {
404
- maybeColumnNode = maybeColumnNode.prevSibling || maybeColumnNode.parent;
405
- }
406
- if (maybeColumnNode) {
407
- return getValue(maybeColumnNode, state);
408
- }
409
- }
410
- };
411
386
  var getOperator = (node, state) => {
412
387
  let maybeColumnNode = node.prevSibling || node.parent;
413
388
  while (maybeColumnNode && !["Column", "Operator", "In"].includes(maybeColumnNode.name)) {
414
389
  maybeColumnNode = maybeColumnNode.prevSibling || maybeColumnNode.parent;
415
390
  }
416
391
  if ((maybeColumnNode == null ? void 0 : maybeColumnNode.name) === "In" || (maybeColumnNode == null ? void 0 : maybeColumnNode.name) === "Operator") {
417
- return getValue(maybeColumnNode, state);
392
+ return (0, import_vuu_codemirror5.getValue)(maybeColumnNode, state);
418
393
  } else {
419
394
  return void 0;
420
395
  }
421
396
  };
422
397
  var getPartialOperator = (maybeOperatorNode, state, columnName) => {
423
- const value = getValue(maybeOperatorNode, state);
398
+ const value = (0, import_vuu_codemirror5.getValue)(maybeOperatorNode, state);
424
399
  if (columnName === void 0 || value === columnName) {
425
400
  return;
426
401
  }
@@ -437,7 +412,7 @@ var getClauseOperator = (node, state) => {
437
412
  while (maybeTargetNode && maybeTargetNode.name === "\u26A0")
438
413
  maybeTargetNode = maybeTargetNode.prevSibling;
439
414
  if (maybeTargetNode && ["As", "Or", "And"].includes(maybeTargetNode.name)) {
440
- return getValue(maybeTargetNode, state);
415
+ return (0, import_vuu_codemirror5.getValue)(maybeTargetNode, state);
441
416
  } else {
442
417
  return void 0;
443
418
  }
@@ -446,7 +421,7 @@ var getSetValues = (node, state) => {
446
421
  let maybeTargetNode = node.lastChild;
447
422
  const values = [];
448
423
  while (maybeTargetNode && maybeTargetNode.name !== "In") {
449
- const value = getValue(maybeTargetNode, state);
424
+ const value = (0, import_vuu_codemirror5.getValue)(maybeTargetNode, state);
450
425
  if (value) {
451
426
  values.push(value);
452
427
  } else {
@@ -465,11 +440,6 @@ var promptForFilterName = (context) => ({
465
440
  }
466
441
  ]
467
442
  });
468
- var joinSuggestions = [
469
- { label: "and", apply: "and ", boost: 5 },
470
- { label: "or", apply: "or ", boost: 3 },
471
- { label: "as", apply: "as ", boost: 1 }
472
- ];
473
443
  var makeSaveOrExtendSuggestions = (onSubmit, existingFilter, withJoinSuggestions = true) => {
474
444
  const result = existingFilter ? [
475
445
  {
@@ -494,7 +464,7 @@ var makeSaveOrExtendSuggestions = (onSubmit, existingFilter, withJoinSuggestions
494
464
  boost: 6
495
465
  }
496
466
  ];
497
- return withJoinSuggestions ? result.concat(joinSuggestions) : result;
467
+ return withJoinSuggestions ? result.concat(import_vuu_codemirror5.booleanJoinSuggestions).concat(import_vuu_codemirror5.asNameSuggestion) : result;
498
468
  };
499
469
  var promptToSaveOrExtend = (context, onSubmit, existingFilter) => ({
500
470
  from: context.pos,
@@ -525,7 +495,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
525
495
  to: 0,
526
496
  text: void 0
527
497
  };
528
- const tree = (0, import_vuu_codemirror6.syntaxTree)(state);
498
+ const tree = (0, import_vuu_codemirror5.syntaxTree)(state);
529
499
  const nodeBefore = tree.resolveInner(pos, -1);
530
500
  console.log({ nodeBeforeName: nodeBefore.name });
531
501
  switch (nodeBefore.name) {
@@ -549,7 +519,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
549
519
  case "FilterName":
550
520
  return promptToSave(context, onSubmit.current, existingFilter);
551
521
  case "Column": {
552
- const columnName = getValue(nodeBefore, state);
522
+ const columnName = (0, import_vuu_codemirror5.getValue)(nodeBefore, state);
553
523
  const isPartialMatch = await suggestionProvider.isPartialMatch(
554
524
  "column",
555
525
  void 0,
@@ -564,7 +534,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
564
534
  }
565
535
  }
566
536
  case "\u26A0": {
567
- const columnName = getColumnName(nodeBefore, state);
537
+ const columnName = (0, import_vuu_codemirror5.getNodeByName)(nodeBefore, state);
568
538
  const operator = getOperator(nodeBefore, state);
569
539
  const partialOperator = operator ? void 0 : getPartialOperator(nodeBefore, state, columnName);
570
540
  if (partialOperator) {
@@ -599,7 +569,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
599
569
  break;
600
570
  case "ColumnSetExpression":
601
571
  case "Values": {
602
- const columnName = getColumnName(nodeBefore, state);
572
+ const columnName = (0, import_vuu_codemirror5.getNodeByName)(nodeBefore, state);
603
573
  const selection = getSetValues(nodeBefore, state);
604
574
  return makeSuggestions(context, "columnValue", {
605
575
  columnName,
@@ -608,7 +578,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
608
578
  }
609
579
  case "Comma":
610
580
  case "LBrack": {
611
- const columnName = getColumnName(nodeBefore, state);
581
+ const columnName = (0, import_vuu_codemirror5.getNodeByName)(nodeBefore, state);
612
582
  return makeSuggestions(context, "columnValue", { columnName });
613
583
  }
614
584
  case "ColumnValueExpression":
@@ -616,12 +586,12 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
616
586
  const lastToken = (_b = nodeBefore.lastChild) == null ? void 0 : _b.prevSibling;
617
587
  if ((lastToken == null ? void 0 : lastToken.name) === "Column") {
618
588
  return makeSuggestions(context, "operator", {
619
- columnName: getColumnName(nodeBefore, state)
589
+ columnName: (0, import_vuu_codemirror5.getNodeByName)(nodeBefore, state)
620
590
  });
621
591
  } else if ((lastToken == null ? void 0 : lastToken.name) === "Operator") {
622
592
  return makeSuggestions(context, "columnValue", {
623
- columnName: getColumnName(lastToken, state),
624
- operator: getValue(lastToken, state)
593
+ columnName: (0, import_vuu_codemirror5.getNodeByName)(lastToken, state),
594
+ operator: (0, import_vuu_codemirror5.getValue)(lastToken, state)
625
595
  });
626
596
  }
627
597
  }
@@ -634,7 +604,7 @@ var useAutoComplete = (suggestionProvider, onSubmit, existingFilter) => {
634
604
  }
635
605
  case "Eq": {
636
606
  return makeSuggestions(context, "columnValue", {
637
- columnName: getColumnName(nodeBefore, state)
607
+ columnName: (0, import_vuu_codemirror5.getNodeByName)(nodeBefore, state)
638
608
  });
639
609
  }
640
610
  case "AndExpression":
@@ -686,7 +656,7 @@ var useCodeMirrorEditor = ({
686
656
  const parseFilter2 = () => {
687
657
  const view = getView(viewRef);
688
658
  const source = view.state.doc.toString();
689
- const tree = (0, import_vuu_codemirror7.ensureSyntaxTree)(view.state, view.state.doc.length, 5e3);
659
+ const tree = (0, import_vuu_codemirror6.ensureSyntaxTree)(view.state, view.state.doc.length, 5e3);
690
660
  if (tree) {
691
661
  const filter = walkTree(tree, source);
692
662
  return [filter, stripName(source), filter.name];
@@ -703,7 +673,7 @@ var useCodeMirrorEditor = ({
703
673
  clearInput2();
704
674
  };
705
675
  const submitFilter = (key) => {
706
- return import_vuu_codemirror7.keymap.of([
676
+ return import_vuu_codemirror6.keymap.of([
707
677
  {
708
678
  key,
709
679
  run() {
@@ -714,35 +684,35 @@ var useCodeMirrorEditor = ({
714
684
  ]);
715
685
  };
716
686
  const showSuggestions = (key) => {
717
- return import_vuu_codemirror7.keymap.of([
687
+ return import_vuu_codemirror6.keymap.of([
718
688
  {
719
689
  key,
720
690
  run() {
721
- (0, import_vuu_codemirror7.startCompletion)(getView(viewRef));
691
+ (0, import_vuu_codemirror6.startCompletion)(getView(viewRef));
722
692
  return true;
723
693
  }
724
694
  }
725
695
  ]);
726
696
  };
727
- const createState2 = () => import_vuu_codemirror7.EditorState.create({
697
+ const createState2 = () => import_vuu_codemirror6.EditorState.create({
728
698
  doc: "",
729
699
  extensions: [
730
- minimalSetup,
731
- (0, import_vuu_codemirror7.autocompletion)({
700
+ import_vuu_codemirror6.minimalSetup,
701
+ (0, import_vuu_codemirror6.autocompletion)({
732
702
  override: [completionFn],
733
703
  optionClass: getOptionClass
734
704
  }),
735
705
  filterLanguageSupport(),
736
- import_vuu_codemirror7.keymap.of(import_vuu_codemirror7.defaultKeymap),
706
+ import_vuu_codemirror6.keymap.of(import_vuu_codemirror6.defaultKeymap),
737
707
  submitFilter("Ctrl-Enter"),
738
708
  showSuggestions("ArrowDown"),
739
- import_vuu_codemirror7.EditorView.updateListener.of((v) => {
709
+ import_vuu_codemirror6.EditorView.updateListener.of((v) => {
740
710
  const view = getView(viewRef);
741
711
  if (v.docChanged) {
742
- (0, import_vuu_codemirror7.startCompletion)(view);
712
+ (0, import_vuu_codemirror6.startCompletion)(view);
743
713
  }
744
714
  }),
745
- import_vuu_codemirror7.EditorState.transactionFilter.of(
715
+ import_vuu_codemirror6.EditorState.transactionFilter.of(
746
716
  (tr) => tr.newDoc.lines > 1 ? [] : tr
747
717
  ),
748
718
  vuuTheme,
@@ -761,7 +731,7 @@ var useCodeMirrorEditor = ({
761
731
  if (!editorRef.current) {
762
732
  throw Error("editor not in dom");
763
733
  }
764
- viewRef.current = new import_vuu_codemirror7.EditorView({
734
+ viewRef.current = new import_vuu_codemirror6.EditorView({
765
735
  state: createState(),
766
736
  parent: editorRef.current
767
737
  });
@@ -803,6 +773,7 @@ var FilterInput = ({
803
773
  };
804
774
 
805
775
  // src/filter-input/useFilterSuggestionProvider.ts
776
+ var import_vuu_codemirror7 = require("@vuu-ui/vuu-codemirror");
806
777
  var import_vuu_data = require("@vuu-ui/vuu-data");
807
778
  var import_react3 = require("react");
808
779
 
@@ -821,7 +792,7 @@ var filterInfo = (filterName, filterQuery) => {
821
792
 
822
793
  // src/filter-input/useFilterSuggestionProvider.ts
823
794
  var NO_NAMED_FILTERS = [];
824
- var NO_OPTIONS = {};
795
+ var NONE = {};
825
796
  var suggestColumns = (columns) => columns.map((column) => ({
826
797
  boost: 5,
827
798
  label: column.name
@@ -837,39 +808,10 @@ var doneCommand = {
837
808
  type: "keyword",
838
809
  boost: 10
839
810
  };
840
- var equalityOperators = [
841
- { label: "=", boost: 10 },
842
- { label: "!=", boost: 9 }
843
- ];
844
- var stringOperators = [
845
- ...equalityOperators,
846
- { label: "in", boost: 6 },
847
- { label: "starts", boost: 5 },
848
- { label: "ends", boost: 4 }
849
- ];
850
- var numericOperators = [
851
- ...equalityOperators,
852
- { label: ">", boost: 8 },
853
- { label: "<", boost: 7 }
854
- ];
855
- var toSuggestions = (values, quoted = false, prefix = "", isIllustration = false) => {
856
- const quote = quoted ? '"' : "";
857
- return values.map((value) => ({
858
- isIllustration,
859
- label: value,
860
- apply: isIllustration ? `${quote}${prefix}${quote}` : `${prefix}${quote}${value}${quote} `
861
- }));
862
- };
863
811
  var withApplySpace = (suggestions, startsWith = "") => suggestions.filter((sugg) => startsWith === "" || sugg.label.startsWith(startsWith)).map((suggestion) => ({
864
812
  ...suggestion,
865
813
  apply: suggestion.label + " "
866
814
  }));
867
- var getTypeaheadParams = (table, column, text = "", selectedValues = []) => {
868
- if (text !== "" && !selectedValues.includes(text.toLowerCase())) {
869
- return [table, column, text];
870
- }
871
- return [table, column];
872
- };
873
815
  var useFilterSuggestionProvider = ({
874
816
  columns,
875
817
  namedFilters,
@@ -878,23 +820,24 @@ var useFilterSuggestionProvider = ({
878
820
  const latestSuggestionsRef = (0, import_react3.useRef)();
879
821
  const getTypeaheadSuggestions = (0, import_vuu_data.useTypeaheadSuggestions)();
880
822
  const getSuggestions = (0, import_react3.useCallback)(
881
- async (valueType, { columnName, operator, startsWith, selection } = NO_OPTIONS) => {
882
- if (valueType === "operator") {
823
+ async (suggestionType, options = NONE) => {
824
+ const { columnName, operator, startsWith, selection } = options;
825
+ if (suggestionType === "operator") {
883
826
  const column = columns.find((col) => col.name === columnName);
884
827
  if (column) {
885
828
  switch (column.serverDataType) {
886
829
  case "string":
887
830
  case "char":
888
- return withApplySpace(stringOperators, startsWith);
831
+ return withApplySpace(import_vuu_codemirror7.stringOperators, startsWith);
889
832
  case "int":
890
833
  case "long":
891
834
  case "double":
892
- return withApplySpace(numericOperators);
835
+ return withApplySpace(import_vuu_codemirror7.numericOperators);
893
836
  }
894
837
  } else {
895
838
  console.warn(`'${columnName}' does not match any column name`);
896
839
  }
897
- } else if (valueType === "column") {
840
+ } else if (suggestionType === "column") {
898
841
  const columnSuggestions = await suggestColumns(columns);
899
842
  const filterSuggestions = await suggestNamedFilters(namedFilters);
900
843
  return (latestSuggestionsRef.current = withApplySpace(columnSuggestions)).concat(
@@ -904,15 +847,14 @@ var useFilterSuggestionProvider = ({
904
847
  if (columnName) {
905
848
  const column = columns.find((col) => col.name === columnName);
906
849
  const prefix = Array.isArray(selection) ? selection.length === 0 ? "[" : "," : "";
907
- const params = getTypeaheadParams(table, columnName, startsWith);
850
+ const params = (0, import_vuu_data.getTypeaheadParams)(table, columnName, startsWith);
908
851
  const suggestions = await getTypeaheadSuggestions(params);
909
852
  const isIllustration = operator === "starts";
910
- latestSuggestionsRef.current = toSuggestions(
911
- suggestions,
912
- (column == null ? void 0 : column.serverDataType) === "string",
913
- isIllustration ? startsWith : prefix,
853
+ latestSuggestionsRef.current = (0, import_vuu_codemirror7.toSuggestions)(suggestions, {
854
+ quoted: (column == null ? void 0 : column.serverDataType) === "string",
855
+ prefix: isIllustration ? startsWith : prefix,
914
856
  isIllustration
915
- );
857
+ });
916
858
  if (Array.isArray(selection) && (selection == null ? void 0 : selection.length) > 1) {
917
859
  return [doneCommand, ...latestSuggestionsRef.current];
918
860
  }
@@ -1332,7 +1274,7 @@ var includesNoValues = (filter) => {
1332
1274
  return isAndFilter(filter) && filter.filters.some((f) => includesNoValues(f));
1333
1275
  };
1334
1276
  var filterValue = (value) => typeof value === "string" ? `"${value}"` : value;
1335
- var filterAsQuery = (f, namedFilters = {}) => {
1277
+ var filterAsQuery = (f) => {
1336
1278
  if (isMultiClauseFilter2(f)) {
1337
1279
  return f.filters.map((filter) => filterAsQuery(filter)).join(` ${f.op} `);
1338
1280
  } else if (isMultiValueFilter2(f)) {